Do not show graphics editor options from snap
Gracefully handle the graphics editor options when running from within a snap. When running in snap confinement, the graphics editor option in the preferences panel is removed and edits to an existing decal will use xdg-open, allowing the user to select the appropriate application for editing using the system options. Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
This commit is contained in:
parent
3b16a68fb3
commit
9666c4137b
@ -8,12 +8,9 @@ import java.awt.Desktop;
|
|||||||
import java.awt.Window;
|
import java.awt.Window;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.BufferedInputStream;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@ import javax.swing.event.DocumentEvent;
|
|||||||
import javax.swing.event.DocumentListener;
|
import javax.swing.event.DocumentListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
import net.sf.openrocket.arch.SystemInfo;
|
||||||
|
import net.sf.openrocket.arch.SystemInfo.Platform;
|
||||||
import net.sf.openrocket.gui.adaptors.BooleanModel;
|
import net.sf.openrocket.gui.adaptors.BooleanModel;
|
||||||
import net.sf.openrocket.gui.components.StyledLabel;
|
import net.sf.openrocket.gui.components.StyledLabel;
|
||||||
import net.sf.openrocket.gui.components.StyledLabel.Style;
|
import net.sf.openrocket.gui.components.StyledLabel.Style;
|
||||||
@ -37,7 +39,7 @@ public class GraphicsPreferencesPanel extends PreferencesPanel {
|
|||||||
public GraphicsPreferencesPanel(JDialog parent) {
|
public GraphicsPreferencesPanel(JDialog parent) {
|
||||||
super(parent, new MigLayout("fillx"));
|
super(parent, new MigLayout("fillx"));
|
||||||
|
|
||||||
this.add(new JPanel(new MigLayout("fill, ins n n n")) {
|
JPanel editorPrefPanel = new JPanel(new MigLayout("fill, ins n n n")) {
|
||||||
{ //Editor Options
|
{ //Editor Options
|
||||||
TitledBorder border = BorderFactory.createTitledBorder(trans.get("pref.dlg.lbl.DecalEditor"));
|
TitledBorder border = BorderFactory.createTitledBorder(trans.get("pref.dlg.lbl.DecalEditor"));
|
||||||
GUIUtil.changeFontStyle(border, Font.BOLD);
|
GUIUtil.changeFontStyle(border, Font.BOLD);
|
||||||
@ -135,7 +137,16 @@ public class GraphicsPreferencesPanel extends PreferencesPanel {
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, "growx, span");
|
};
|
||||||
|
|
||||||
|
/* Don't show the editor preferences panel when confined in a snap on Linux.
|
||||||
|
* The snap confinement doesn't allow to run any edit commands, and instead
|
||||||
|
* we will rely on using the xdg-open command which allows the user to pick
|
||||||
|
* their preferred application.
|
||||||
|
*/
|
||||||
|
if (SystemInfo.getPlatform() != Platform.UNIX && !SystemInfo.isConfined()) {
|
||||||
|
this.add(editorPrefPanel, "growx, span");
|
||||||
|
}
|
||||||
|
|
||||||
this.add(new JPanel(new MigLayout("fill, ins n n n")) {
|
this.add(new JPanel(new MigLayout("fill, ins n n n")) {
|
||||||
{/////GL Options
|
{/////GL Options
|
||||||
|
@ -74,15 +74,17 @@ public class EditDecalHelper {
|
|||||||
|
|
||||||
boolean sysPrefSet = prefs.isDecalEditorPreferenceSet();
|
boolean sysPrefSet = prefs.isDecalEditorPreferenceSet();
|
||||||
int usageCount = doc.countDecalUsage(decal);
|
int usageCount = doc.countDecalUsage(decal);
|
||||||
|
boolean isSnapConfined = (SystemInfo.getPlatform() == Platform.UNIX && SystemInfo.isConfined());
|
||||||
|
|
||||||
//First Check preferences
|
//First Check preferences
|
||||||
if (sysPrefSet && usageCount == 1) {
|
if (usageCount == 1 && (sysPrefSet || isSnapConfined)) {
|
||||||
|
String commandLine = isSnapConfined ? "xdg-open %%" : prefs.getDecalEditorCommandLine();
|
||||||
launchEditor(prefs.isDecalEditorPreferenceSystem(), prefs.getDecalEditorCommandLine(), decal);
|
launchEditor(prefs.isDecalEditorPreferenceSystem(), commandLine, decal);
|
||||||
return decal;
|
return decal;
|
||||||
}
|
}
|
||||||
|
|
||||||
EditDecalDialog dialog = new EditDecalDialog(parent, !sysPrefSet, usageCount);
|
boolean promptForEditor = (!sysPrefSet && !isSnapConfined);
|
||||||
|
EditDecalDialog dialog = new EditDecalDialog(parent, promptForEditor, usageCount);
|
||||||
dialog.setVisible(true);
|
dialog.setVisible(true);
|
||||||
|
|
||||||
if (dialog.isCancel()) {
|
if (dialog.isCancel()) {
|
||||||
@ -93,7 +95,10 @@ public class EditDecalHelper {
|
|||||||
boolean useSystemEditor = false;
|
boolean useSystemEditor = false;
|
||||||
String commandLine = "";
|
String commandLine = "";
|
||||||
|
|
||||||
if (sysPrefSet) {
|
if (isSnapConfined) {
|
||||||
|
useSystemEditor = false;
|
||||||
|
commandLine = "xdg-open %%";
|
||||||
|
} else if (sysPrefSet) {
|
||||||
useSystemEditor = prefs.isDecalEditorPreferenceSystem();
|
useSystemEditor = prefs.isDecalEditorPreferenceSystem();
|
||||||
commandLine = prefs.getDecalEditorCommandLine();
|
commandLine = prefs.getDecalEditorCommandLine();
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user