mirror of
https://github.com/bancika/diy-layout-creator
synced 2026-11-10 09:12:09 +10:00
Fixed the issue with opening DIY files on Mac OS - updated the logic to use java.desktop
This commit is contained in:
@@ -143,14 +143,10 @@ public class Presenter implements IPlugInPort, IConfigListener {
|
|||||||
List<Version> allVersions = (List<Version>) xStream.fromXML(in);
|
List<Version> allVersions = (List<Version>) xStream.fromXML(in);
|
||||||
CURRENT_VERSION = allVersions.get(allVersions.size() - 1).getVersionNumber();
|
CURRENT_VERSION = allVersions.get(allVersions.size() - 1).getVersionNumber();
|
||||||
LOG.info("Current DIYLC version: " + CURRENT_VERSION);
|
LOG.info("Current DIYLC version: " + CURRENT_VERSION);
|
||||||
RECENT_VERSIONS = allVersions.subList(allVersions.size() - 10, allVersions.size());
|
RECENT_VERSIONS = allVersions.stream()
|
||||||
Collections.sort(RECENT_VERSIONS, new Comparator<Version>() {
|
.sorted(Comparator.comparing(x -> ((Version)x).getVersionNumber()).reversed())
|
||||||
|
.limit(10)
|
||||||
@Override
|
.collect(Collectors.toList());
|
||||||
public int compare(Version o1, Version o2) {
|
|
||||||
return -o1.getVersionNumber().compareTo(o2.getVersionNumber());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
in.close();
|
in.close();
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -1,5 +1,33 @@
|
|||||||
<java.util.Arrays_-ArrayList>
|
<java.util.Arrays_-ArrayList>
|
||||||
<a class="org.diylc.appframework.update.Version-array">
|
<a class="org.diylc.appframework.update.Version-array">
|
||||||
|
<org.diylc.appframework.update.Version>
|
||||||
|
<versionNumber>
|
||||||
|
<major>5</major>
|
||||||
|
<minor>0</minor>
|
||||||
|
<build>0</build>
|
||||||
|
</versionNumber>
|
||||||
|
<releaseDate>2025-03-08 00:00:00.000 CET</releaseDate>
|
||||||
|
<name></name>
|
||||||
|
<changes>
|
||||||
|
<org.diylc.appframework.update.Change>
|
||||||
|
<changeType>NEW_FEATURE</changeType>
|
||||||
|
<description>Switched to AppImage distribution for Linux system, abandoning Flatpak as a means of distribution. DIYLC AppImage will be available alongside with other executables on the official DIYLC GitHub page.</description>
|
||||||
|
</org.diylc.appframework.update.Change>
|
||||||
|
<org.diylc.appframework.update.Change>
|
||||||
|
<changeType>IMPROVEMENT</changeType>
|
||||||
|
<description>Upgraded Windows installer version and Windows EXE launcher version</description>
|
||||||
|
</org.diylc.appframework.update.Change>
|
||||||
|
<org.diylc.appframework.update.Change>
|
||||||
|
<changeType>BUG_FIX</changeType>
|
||||||
|
<description>Fixed alignment issues of round elements (e.g. solder pads and holes) in exported Gerber files</description>
|
||||||
|
</org.diylc.appframework.update.Change>
|
||||||
|
<org.diylc.appframework.update.Change>
|
||||||
|
<changeType>BUG_FIX</changeType>
|
||||||
|
<description>Fixed the issue with opening DIY files on Mac OS</description>
|
||||||
|
</org.diylc.appframework.update.Change>
|
||||||
|
</changes>
|
||||||
|
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
||||||
|
</org.diylc.appframework.update.Version>
|
||||||
<org.diylc.appframework.update.Version>
|
<org.diylc.appframework.update.Version>
|
||||||
<versionNumber>
|
<versionNumber>
|
||||||
<major>4</major>
|
<major>4</major>
|
||||||
@@ -212,29 +240,5 @@
|
|||||||
</changes>
|
</changes>
|
||||||
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
||||||
</org.diylc.appframework.update.Version>>
|
</org.diylc.appframework.update.Version>>
|
||||||
<org.diylc.appframework.update.Version>
|
|
||||||
<versionNumber>
|
|
||||||
<major>5</major>
|
|
||||||
<minor>0</minor>
|
|
||||||
<build>0</build>
|
|
||||||
</versionNumber>
|
|
||||||
<releaseDate>2025-03-08 00:00:00.000 CET</releaseDate>
|
|
||||||
<name></name>
|
|
||||||
<changes>
|
|
||||||
<org.diylc.appframework.update.Change>
|
|
||||||
<changeType>NEW_FEATURE</changeType>
|
|
||||||
<description>Switched to AppImage distribution for Linux system, abandoning Flatpak as a means of distribution. DIYLC AppImage will be available alongside with other executables on the official DIYLC GitHub page.</description>
|
|
||||||
</org.diylc.appframework.update.Change>
|
|
||||||
<org.diylc.appframework.update.Change>
|
|
||||||
<changeType>IMPROVEMENT</changeType>
|
|
||||||
<description>Upgraded Windows installer version and Windows EXE launcher version</description>
|
|
||||||
</org.diylc.appframework.update.Change>
|
|
||||||
<org.diylc.appframework.update.Change>
|
|
||||||
<changeType>BUG_FIX</changeType>
|
|
||||||
<description>Fixed alignment issues of round elements (e.g. solder pads and holes) in exported Gerber files</description>
|
|
||||||
</org.diylc.appframework.update.Change>
|
|
||||||
</changes>
|
|
||||||
<url>https://github.com/bancika/diy-layout-creator/releases</url>
|
|
||||||
</org.diylc.appframework.update.Version>
|
|
||||||
</a>
|
</a>
|
||||||
</java.util.Arrays_-ArrayList>
|
</java.util.Arrays_-ArrayList>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -17,11 +17,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.diylc;
|
package org.diylc;
|
||||||
|
|
||||||
|
import java.awt.Desktop;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
@@ -41,8 +41,6 @@ import org.diylc.swing.gui.TemplateDialog;
|
|||||||
import org.diylc.swing.plugins.file.ProjectDrawingProvider;
|
import org.diylc.swing.plugins.file.ProjectDrawingProvider;
|
||||||
import org.diylc.swingframework.export.DrawingExporter;
|
import org.diylc.swingframework.export.DrawingExporter;
|
||||||
import org.diylc.swingframework.fonts.FontOptimizer;
|
import org.diylc.swingframework.fonts.FontOptimizer;
|
||||||
import com.apple.eawt.AppEvent;
|
|
||||||
import com.apple.eawt.Application;
|
|
||||||
import com.thoughtworks.xstream.XStream;
|
import com.thoughtworks.xstream.XStream;
|
||||||
import ca.cgjennings.jvm.JarLoader;
|
import ca.cgjennings.jvm.JarLoader;
|
||||||
|
|
||||||
@@ -204,16 +202,8 @@ public class DIYLCStarter {
|
|||||||
if (Utils.isMac()) {
|
if (Utils.isMac()) {
|
||||||
LOG.info("Setting up open file handler for Mac...");
|
LOG.info("Setting up open file handler for Mac...");
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
Application.getApplication().setOpenFileHandler((AppEvent.OpenFilesEvent ofe) -> {
|
// On macOS this function is called when a new file is opened.
|
||||||
List<File> files = ofe.getFiles();
|
Desktop.getDesktop().setOpenFileHandler(new OpenDIYFilesHandler(presenter));
|
||||||
if (files != null && files.size() > 0) {
|
|
||||||
String filePath = files.get(0).getAbsolutePath();
|
|
||||||
if (presenter.allowFileAction()) {
|
|
||||||
presenter.loadProjectFromFile(filePath);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
LOG.info("Finished setting up open file handler for Mac.");
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package org.diylc;
|
||||||
|
|
||||||
|
import java.awt.desktop.OpenFilesEvent;
|
||||||
|
import java.awt.desktop.OpenFilesHandler;
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.diylc.common.IPlugInPort;
|
||||||
|
|
||||||
|
public class OpenDIYFilesHandler implements OpenFilesHandler {
|
||||||
|
|
||||||
|
private static final Logger LOG = Logger.getLogger(DIYLCStarter.class);
|
||||||
|
|
||||||
|
private final IPlugInPort presenter;
|
||||||
|
|
||||||
|
public OpenDIYFilesHandler(IPlugInPort presenter) {
|
||||||
|
super();
|
||||||
|
this.presenter = presenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openFiles(OpenFilesEvent e) {
|
||||||
|
|
||||||
|
List<File> files = e.getFiles();
|
||||||
|
if (files != null && files.size() > 0) {
|
||||||
|
String filePath = files.get(0).getAbsolutePath();
|
||||||
|
if (presenter.allowFileAction()) {
|
||||||
|
presenter.loadProjectFromFile(filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LOG.info("Finished setting up open file handler for Mac.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user