diff --git a/src/main/java/sh/ball/gui/controller/GeneralController.java b/src/main/java/sh/ball/gui/controller/GeneralController.java index 06c5902..201b11c 100644 --- a/src/main/java/sh/ball/gui/controller/GeneralController.java +++ b/src/main/java/sh/ball/gui/controller/GeneralController.java @@ -84,7 +84,7 @@ public class GeneralController implements Initializable, SubController { new Thread(() -> { try { - mainController.updateFiles(files, names); + mainController.updateFiles(files, names, 0); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/main/java/sh/ball/gui/controller/MainController.java b/src/main/java/sh/ball/gui/controller/MainController.java index 8991670..3c26a33 100644 --- a/src/main/java/sh/ball/gui/controller/MainController.java +++ b/src/main/java/sh/ball/gui/controller/MainController.java @@ -647,7 +647,7 @@ public class MainController implements Initializable, FrequencyListener, MidiLis objTitledPane.setDisable(!ObjParser.isObjFile(frameSourcePaths.get(index))); } - void updateFiles(List files, List names) throws Exception { + void updateFiles(List files, List names, int startingFrameSource) throws Exception { List> newSampleSources = new ArrayList<>(); List>> newFrameSources = new ArrayList<>(); List newFrameSourcePaths = new ArrayList<>(); @@ -661,11 +661,11 @@ public class MainController implements Initializable, FrequencyListener, MidiLis for (int i = 0; i < files.size(); i++) { try { if (LuaParser.isLuaFile(names.get(i))) { - newFrameSources.add(null); newSampleSources.add(new LuaParser(new ByteArrayInputStream(files.get(i))).parse()); + newFrameSources.add(null); } else { - newSampleSources.add(null); newFrameSources.add(ParserFactory.getParser(names.get(i), files.get(i)).parse()); + newSampleSources.add(null); } newFrameSourcePaths.add(names.get(i)); newOpenFiles.add(files.get(i)); @@ -689,7 +689,7 @@ public class MainController implements Initializable, FrequencyListener, MidiLis frameSources = newFrameSources; frameSourcePaths = newFrameSourcePaths; openFiles = newOpenFiles; - changeFrameSource(0); + changeFrameSource(startingFrameSource); } }); } @@ -1014,6 +1014,10 @@ public class MainController implements Initializable, FrequencyListener, MidiLis } root.appendChild(filesElement); + Element frameSource = document.createElement("frameSource"); + frameSource.appendChild(document.createTextNode(String.valueOf(currentFrameSource))); + root.appendChild(frameSource); + TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource domSource = new DOMSource(document); @@ -1129,7 +1133,14 @@ public class MainController implements Initializable, FrequencyListener, MidiLis String fileName = fileElement.getElementsByTagName("name").item(0).getTextContent(); fileNames.add(fileName); } - updateFiles(files, fileNames); + + Element frameSource = (Element) root.getElementsByTagName("frameSource").item(0); + if (frameSource != null) { + updateFiles(files, fileNames, Integer.parseInt(frameSource.getTextContent())); + } else { + updateFiles(files, fileNames, 0); + } + openProjectPath = projectFileName; } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/sh/ball/parser/ParserFactory.java b/src/main/java/sh/ball/parser/ParserFactory.java index 3cf6644..e787b44 100644 --- a/src/main/java/sh/ball/parser/ParserFactory.java +++ b/src/main/java/sh/ball/parser/ParserFactory.java @@ -22,6 +22,8 @@ public class ParserFactory { return new SvgParser(bais); } else if (TextParser.isTxtFile(filePath)) { return new TextParser(bais); + } else if (filePath.matches(".*\\.osci")) { + throw new IOException(".osci project files should be opened using File > Open Project"); } throw new IOException("Can't parse " + new File(filePath).getName()); } diff --git a/src/main/resources/fxml/general.fxml b/src/main/resources/fxml/general.fxml index 285c5df..8ffe9cc 100644 --- a/src/main/resources/fxml/general.fxml +++ b/src/main/resources/fxml/general.fxml @@ -9,7 +9,7 @@