From 8a0cabe4a5b808bb5f04f503f2c76afa0fa92711 Mon Sep 17 00:00:00 2001 From: hneemann Date: Wed, 21 Dec 2016 08:44:45 +0100 Subject: [PATCH] better handling of CUPL filenames --- .../gui/components/table/TableDialog.java | 27 ++++++++++++++----- src/main/resources/lang/lang_de.xml | 2 +- src/main/resources/lang/lang_en.xml | 2 +- 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java index d5b6b12d4..d3d841bc6 100644 --- a/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java +++ b/src/main/java/de/neemann/digital/gui/components/table/TableDialog.java @@ -448,12 +448,27 @@ public class TableDialog extends JDialog { private void createCUPL(Gal16v8CuplExporter cupl) { try { - if (filename == null) - throw new IOException(Lang.get("err_noFileNameAvailable")); - - String name = filename.getName(); - if (name.endsWith(".dig")) name = name.substring(0, name.length() - 4); - File cuplPath = new File(filename.getParentFile(), "CUPL_" + name); + File cuplPath; + if (filename == null) { + JFileChooser fc = new JFileChooser(); + fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + fc.setDialogTitle(Lang.get("msg_selectAnEmptyFolder")); + if (fc.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { + cuplPath = fc.getSelectedFile(); + filename = cuplPath; + } else { + return; + } + } else { + if (filename.isDirectory()) { + cuplPath = filename; + } else { + String name = filename.getName(); + if (name.length() > 3 && name.charAt(name.length() - 4) == '.') + name = name.substring(0, name.length() - 4); + cuplPath = new File(filename.getParentFile(), "CUPL_" + name); + } + } if (!cuplPath.mkdirs()) if (!cuplPath.exists()) diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index 7e56e6cb8..4d979b858 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -258,7 +258,6 @@ Zur Analyse können Sie die Schaltung im Gatterschrittmodus ausführen. Browser konnte nicht geöffnet werden. Der Splitter unterstützt keine HighZ Eingänge! Verwenden Sie einen PullUp- oder PullDown-Widerstand Ein Splitter der hochohmige Eingänge erlaubt, kann nur einen Eingang haben! - Die Datei wurde noch nicht gespeichert! Konnte den Order '{0}' nicht erzeugen! Adress-Bits @@ -499,6 +498,7 @@ Die Icons stammen aus dem Tango Desktop Project. Speichern der Daten fehlgeschlagen! Fehler bei der Erzeugung der Hilfe! In der Zwischenablage befinden sich keine importierbaren Daten! + Wählen Sie einen leeren Ordner aus! Ok 180° diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 2e64695a8..d9e279319 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -251,7 +251,6 @@ To analyse you can run the circuit in single gate step mode. Could not open the browser. The splitter does not support high z inputs! Use a pull up or pull down resisitor. A splitter which allows high z inputs can only have one input! - File not saved already! There is no filename avaiable! Could not create folder '{0}'! Address Bits @@ -492,6 +491,7 @@ The icons are taken from the Tango Desktop Project. Error writing the data! Error creating the help! The clipboard contains no importable data! + Select an empty folder! Ok 180°