From 47de69a821c6e089b01187e93f4f916aceeeea85 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Thu, 22 Sep 2022 11:59:53 +0200 Subject: Add initial Mapping-IO export support --- .../main/java/cuchaz/enigma/gui/GuiController.java | 45 ++++++++++++++++++++++ .../java/cuchaz/enigma/gui/elements/MenuBar.java | 23 +++++++++++ 2 files changed, 68 insertions(+) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 91037b00..e7e75669 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -29,6 +29,8 @@ import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import com.google.common.collect.Lists; +import net.fabricmc.mappingio.MappingWriter; +import net.fabricmc.mappingio.tree.MemoryMappingTree; import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProfile; @@ -77,6 +79,7 @@ import cuchaz.enigma.translation.mapping.EntryUtil; import cuchaz.enigma.translation.mapping.MappingDelta; import cuchaz.enigma.translation.mapping.ResolutionStrategy; import cuchaz.enigma.translation.mapping.serde.MappingFormat; +import cuchaz.enigma.translation.mapping.serde.MappingIoConverter; import cuchaz.enigma.translation.mapping.serde.MappingParseException; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; import cuchaz.enigma.translation.mapping.tree.EntryTree; @@ -213,6 +216,48 @@ public class GuiController implements ClientPacketHandler { }); } + public CompletableFuture saveMappings(Path path, net.fabricmc.mappingio.format.MappingFormat format) { + if (project == null) { + return CompletableFuture.completedFuture(null); + } + + return ProgressDialog.runOffThread(this.gui.getFrame(), progress -> { + EntryRemapper mapper = project.getMapper(); + MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); + + MappingDelta delta = mapper.takeMappingDelta(); + boolean saveAll = !path.equals(loadedMappingPath); + + switch (format) { + case ENIGMA: + loadedMappingFormat = MappingFormat.ENIGMA_DIRECTORY; + loadedMappingPath = path; + break; + case PROGUARD: + loadedMappingFormat = MappingFormat.PROGUARD; + loadedMappingPath = path; + break; + case SRG: + loadedMappingFormat = MappingFormat.SRG_FILE; + loadedMappingPath = path; + break; + case TINY: + loadedMappingFormat = MappingFormat.TINY_FILE; + loadedMappingPath = path; + break; + case TINY_2: + loadedMappingFormat = MappingFormat.TINY_V2; + loadedMappingPath = path; + break; + } + + MemoryMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf()); + MappingWriter writer = MappingWriter.create(path, format); + mappingTree.accept(writer); + writer.close(); + }); + } + public void closeMappings() { if (project == null) { return; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index 1cfad504..1d4c1ca1 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -7,6 +7,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.stream.Collectors; @@ -439,6 +440,28 @@ public class MenuBar { saveMappingsAsMenu.add(item); } } + + saveMappingsAsMenu.addSeparator(); + + List writableMappingIoFormats = Arrays.asList( + net.fabricmc.mappingio.format.MappingFormat.ENIGMA, + net.fabricmc.mappingio.format.MappingFormat.TINY_2); + for (net.fabricmc.mappingio.format.MappingFormat format : writableMappingIoFormats) { + JMenuItem item = new JMenuItem(format.name + " (via mapping-io, experimental)"); + item.addActionListener(event -> { + // TODO: Use a specific file chooser for it + if (gui.enigmaMappingsFileChooser.getCurrentDirectory() == null) { + gui.enigmaMappingsFileChooser.setCurrentDirectory(new File(UiConfig.getLastSelectedDir())); + } + + if (gui.enigmaMappingsFileChooser.showSaveDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + gui.getController().saveMappings(gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), format); + saveMappingsItem.setEnabled(true); + UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); + } + }); + saveMappingsAsMenu.add(item); + } } private static void prepareDecompilerMenu(JMenu decompilerMenu, Gui gui) { -- cgit v1.2.3 From 6c7738ca744e55e8e2ea03518a5b93000fe9a864 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Thu, 6 Oct 2022 20:03:14 +0200 Subject: Add Mapping-IO import support; small cleanup --- .../main/java/cuchaz/enigma/gui/GuiController.java | 61 +++-------- .../java/cuchaz/enigma/gui/elements/MenuBar.java | 119 ++++++++++++--------- 2 files changed, 87 insertions(+), 93 deletions(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index e7e75669..73472ca9 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -29,6 +29,7 @@ import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import com.google.common.collect.Lists; +import net.fabricmc.mappingio.MappingReader; import net.fabricmc.mappingio.MappingWriter; import net.fabricmc.mappingio.tree.MemoryMappingTree; @@ -102,6 +103,7 @@ public class GuiController implements ClientPacketHandler { private Path loadedMappingPath; private MappingFormat loadedMappingFormat; + public boolean useMappingIo; private ClassHandleProvider chp; @@ -152,8 +154,16 @@ public class GuiController implements ClientPacketHandler { return ProgressDialog.runOffThread(gui.getFrame(), progress -> { try { MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); + EntryTree mappings; + + if (useMappingIo) { + MemoryMappingTree mappingTree = new MemoryMappingTree(); + MappingReader.read(path, format.getMappingIoCounterpart(), mappingTree); + mappings = MappingIoConverter.fromMappingIo(mappingTree); + } else { + mappings = format.read(path, progress, saveParameters); + } - EntryTree mappings = format.read(path, progress, saveParameters); project.setMappings(mappings); loadedMappingFormat = format; @@ -208,7 +218,12 @@ public class GuiController implements ClientPacketHandler { loadedMappingFormat = format; loadedMappingPath = path; - if (saveAll) { + if (useMappingIo) { + MemoryMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf()); + MappingWriter writer = MappingWriter.create(path, format.getMappingIoCounterpart()); + mappingTree.accept(writer); + writer.close(); + } else if (saveAll) { format.write(mapper.getObfToDeobf(), path, progress, saveParameters); } else { format.write(mapper.getObfToDeobf(), delta, path, progress, saveParameters); @@ -216,48 +231,6 @@ public class GuiController implements ClientPacketHandler { }); } - public CompletableFuture saveMappings(Path path, net.fabricmc.mappingio.format.MappingFormat format) { - if (project == null) { - return CompletableFuture.completedFuture(null); - } - - return ProgressDialog.runOffThread(this.gui.getFrame(), progress -> { - EntryRemapper mapper = project.getMapper(); - MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); - - MappingDelta delta = mapper.takeMappingDelta(); - boolean saveAll = !path.equals(loadedMappingPath); - - switch (format) { - case ENIGMA: - loadedMappingFormat = MappingFormat.ENIGMA_DIRECTORY; - loadedMappingPath = path; - break; - case PROGUARD: - loadedMappingFormat = MappingFormat.PROGUARD; - loadedMappingPath = path; - break; - case SRG: - loadedMappingFormat = MappingFormat.SRG_FILE; - loadedMappingPath = path; - break; - case TINY: - loadedMappingFormat = MappingFormat.TINY_FILE; - loadedMappingPath = path; - break; - case TINY_2: - loadedMappingFormat = MappingFormat.TINY_V2; - loadedMappingPath = path; - break; - } - - MemoryMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf()); - MappingWriter writer = MappingWriter.create(path, format); - mappingTree.accept(writer); - writer.close(); - }); - } - public void closeMappings() { if (project == null) { return; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index 1d4c1ca1..3692eb3b 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -46,7 +46,7 @@ public class MenuBar { private final JMenu fileMenu = new JMenu(); private final JMenuItem jarOpenItem = new JMenuItem(); private final JMenuItem jarCloseItem = new JMenuItem(); - private final JMenu openMenu = new JMenu(); + private final JMenu openMappingsMenu = new JMenu(); private final JMenuItem saveMappingsItem = new JMenuItem(); private final JMenu saveMappingsAsMenu = new JMenu(); private final JMenuItem closeMappingsItem = new JMenuItem(); @@ -89,7 +89,7 @@ public class MenuBar { this.retranslateUi(); - prepareOpenMenu(this.openMenu, gui); + prepareOpenMappingsMenu(this.openMappingsMenu, gui); prepareSaveMappingsAsMenu(this.saveMappingsAsMenu, this.saveMappingsItem, gui); prepareDecompilerMenu(this.decompilerMenu, gui); prepareThemesMenu(this.themesMenu, gui); @@ -99,7 +99,7 @@ public class MenuBar { this.fileMenu.add(this.jarOpenItem); this.fileMenu.add(this.jarCloseItem); this.fileMenu.addSeparator(); - this.fileMenu.add(this.openMenu); + this.fileMenu.add(this.openMappingsMenu); this.fileMenu.add(this.saveMappingsItem); this.fileMenu.add(this.saveMappingsAsMenu); this.fileMenu.add(this.closeMappingsItem); @@ -175,7 +175,7 @@ public class MenuBar { this.startServerItem.setText(I18n.translate(connectionState != ConnectionState.HOSTING ? "menu.collab.server.start" : "menu.collab.server.stop")); this.jarCloseItem.setEnabled(jarOpen); - this.openMenu.setEnabled(jarOpen); + this.openMappingsMenu.setEnabled(jarOpen); this.saveMappingsItem.setEnabled(jarOpen && this.gui.enigmaMappingsFileChooser.getSelectedFile() != null && connectionState != ConnectionState.CONNECTED); this.saveMappingsAsMenu.setEnabled(jarOpen); this.closeMappingsItem.setEnabled(jarOpen); @@ -190,7 +190,7 @@ public class MenuBar { this.fileMenu.setText(I18n.translate("menu.file")); this.jarOpenItem.setText(I18n.translate("menu.file.jar.open")); this.jarCloseItem.setText(I18n.translate("menu.file.jar.close")); - this.openMenu.setText(I18n.translate("menu.file.mappings.open")); + this.openMappingsMenu.setText(I18n.translate("menu.file.mappings.open")); this.saveMappingsItem.setText(I18n.translate("menu.file.mappings.save")); this.saveMappingsAsMenu.setText(I18n.translate("menu.file.mappings.save_as")); this.closeMappingsItem.setText(I18n.translate("menu.file.mappings.close")); @@ -403,67 +403,88 @@ public class MenuBar { GuiUtil.openUrl("https://github.com/FabricMC/Enigma"); } - private static void prepareOpenMenu(JMenu openMenu, Gui gui) { + private static void prepareOpenMappingsMenu(JMenu openMappingsMenu, Gui gui) { + List readableMappingIoFormats = Arrays.asList( + MappingFormat.ENIGMA_DIRECTORY, + MappingFormat.TINY_FILE, + MappingFormat.TINY_V2, + MappingFormat.SRG_FILE, + MappingFormat.TSRG_FILE, + MappingFormat.TSRG_2_FILE, + MappingFormat.PROGUARD); + + // Enigma's own readers for (MappingFormat format : MappingFormat.values()) { if (format.getReader() != null) { - JMenuItem item = new JMenuItem(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT))); - item.addActionListener(event -> { - gui.enigmaMappingsFileChooser.setCurrentDirectory(new File(UiConfig.getLastSelectedDir())); - - if (gui.enigmaMappingsFileChooser.showOpenDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - File selectedFile = gui.enigmaMappingsFileChooser.getSelectedFile(); - gui.getController().openMappings(format, selectedFile.toPath()); - UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); - } - }); - openMenu.add(item); + addOpenMappingsMenuEntry(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT)), + format, false, openMappingsMenu, gui); } } + + openMappingsMenu.addSeparator(); + + // Mapping-IO readers + for (MappingFormat format : readableMappingIoFormats) { + addOpenMappingsMenuEntry(I18n.translate(format.getMappingIoCounterpart().name + " (via Mapping-IO, experimental)"), + format, true, openMappingsMenu, gui); + } + } + + private static void addOpenMappingsMenuEntry(String text, MappingFormat format, boolean mappingIo, JMenu openMappingsMenu, Gui gui) { + JMenuItem item = new JMenuItem(text); + item.addActionListener(event -> { + gui.enigmaMappingsFileChooser.setCurrentDirectory(new File(UiConfig.getLastSelectedDir())); + + if (gui.enigmaMappingsFileChooser.showOpenDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + File selectedFile = gui.enigmaMappingsFileChooser.getSelectedFile(); + gui.getController().useMappingIo = mappingIo; + gui.getController().openMappings(format, selectedFile.toPath()); + UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); + } + }); + openMappingsMenu.add(item); } private static void prepareSaveMappingsAsMenu(JMenu saveMappingsAsMenu, JMenuItem saveMappingsItem, Gui gui) { + List writableMappingIoFormats = Arrays.asList( + MappingFormat.ENIGMA_DIRECTORY, + MappingFormat.TINY_V2); + + // Enigma's own writers for (MappingFormat format : MappingFormat.values()) { if (format.getWriter() != null) { - JMenuItem item = new JMenuItem(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT))); - item.addActionListener(event -> { - // TODO: Use a specific file chooser for it - if (gui.enigmaMappingsFileChooser.getCurrentDirectory() == null) { - gui.enigmaMappingsFileChooser.setCurrentDirectory(new File(UiConfig.getLastSelectedDir())); - } - - if (gui.enigmaMappingsFileChooser.showSaveDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - gui.getController().saveMappings(gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), format); - saveMappingsItem.setEnabled(true); - UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); - } - }); - saveMappingsAsMenu.add(item); + addSaveMappingsAsMenuEntry(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT)), + format, false, saveMappingsAsMenu, saveMappingsItem, gui); } } saveMappingsAsMenu.addSeparator(); - List writableMappingIoFormats = Arrays.asList( - net.fabricmc.mappingio.format.MappingFormat.ENIGMA, - net.fabricmc.mappingio.format.MappingFormat.TINY_2); - for (net.fabricmc.mappingio.format.MappingFormat format : writableMappingIoFormats) { - JMenuItem item = new JMenuItem(format.name + " (via mapping-io, experimental)"); - item.addActionListener(event -> { - // TODO: Use a specific file chooser for it - if (gui.enigmaMappingsFileChooser.getCurrentDirectory() == null) { - gui.enigmaMappingsFileChooser.setCurrentDirectory(new File(UiConfig.getLastSelectedDir())); - } - - if (gui.enigmaMappingsFileChooser.showSaveDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - gui.getController().saveMappings(gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), format); - saveMappingsItem.setEnabled(true); - UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); - } - }); - saveMappingsAsMenu.add(item); + // Mapping-IO writers + for (MappingFormat format : writableMappingIoFormats) { + addSaveMappingsAsMenuEntry(format.getMappingIoCounterpart().name + " (via Mapping-IO, experimental)", + format, true, saveMappingsAsMenu, saveMappingsItem, gui); } } + private static void addSaveMappingsAsMenuEntry(String text, MappingFormat format, boolean mappingIo, JMenu saveMappingsAsMenu, JMenuItem saveMappingsItem, Gui gui) { + JMenuItem item = new JMenuItem(text); + item.addActionListener(event -> { + // TODO: Use a specific file chooser for it + if (gui.enigmaMappingsFileChooser.getCurrentDirectory() == null) { + gui.enigmaMappingsFileChooser.setCurrentDirectory(new File(UiConfig.getLastSelectedDir())); + } + + if (gui.enigmaMappingsFileChooser.showSaveDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + gui.getController().useMappingIo = mappingIo; + gui.getController().saveMappings(gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), format); + saveMappingsItem.setEnabled(true); + UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); + } + }); + saveMappingsAsMenu.add(item); + } + private static void prepareDecompilerMenu(JMenu decompilerMenu, Gui gui) { ButtonGroup decompilerGroup = new ButtonGroup(); -- cgit v1.2.3 From cc4154d610adf7aee7816279171a50fe074aa675 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Mon, 10 Oct 2022 13:25:02 +0200 Subject: Add progress listener to Mapping-IO conversion; deduplicate lang files --- .../src/main/java/cuchaz/enigma/gui/GuiController.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 73472ca9..5b04f3cf 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -157,9 +157,18 @@ public class GuiController implements ClientPacketHandler { EntryTree mappings; if (useMappingIo) { + String loadingMessage; + + if (format.getMappingIoCounterpart().hasSingleFile()) { + loadingMessage = I18n.translate("progress.mappings.loading_file"); + } else { + loadingMessage = I18n.translate("progress.mappings.loading_directory"); + } + + progress.init(1, loadingMessage); MemoryMappingTree mappingTree = new MemoryMappingTree(); MappingReader.read(path, format.getMappingIoCounterpart(), mappingTree); - mappings = MappingIoConverter.fromMappingIo(mappingTree); + mappings = MappingIoConverter.fromMappingIo(mappingTree, progress); } else { mappings = format.read(path, progress, saveParameters); } @@ -219,10 +228,13 @@ public class GuiController implements ClientPacketHandler { loadedMappingPath = path; if (useMappingIo) { - MemoryMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf()); + MemoryMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf(), progress); + + progress.init(1, I18n.translate("progress.mappings.writing")); MappingWriter writer = MappingWriter.create(path, format.getMappingIoCounterpart()); mappingTree.accept(writer); writer.close(); + progress.step(1, I18n.translate("progress.done")); } else if (saveAll) { format.write(mapper.getObfToDeobf(), path, progress, saveParameters); } else { -- cgit v1.2.3 From 59aadb3c543da883acc1d29c7180cf889f03ba24 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Sat, 17 Jun 2023 11:50:56 +0200 Subject: Update to latest Mapping IO commit --- enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java | 3 ++- enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 5b04f3cf..e6d4096c 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -32,6 +32,7 @@ import com.google.common.collect.Lists; import net.fabricmc.mappingio.MappingReader; import net.fabricmc.mappingio.MappingWriter; import net.fabricmc.mappingio.tree.MemoryMappingTree; +import net.fabricmc.mappingio.tree.VisitOrder; import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProfile; @@ -232,7 +233,7 @@ public class GuiController implements ClientPacketHandler { progress.init(1, I18n.translate("progress.mappings.writing")); MappingWriter writer = MappingWriter.create(path, format.getMappingIoCounterpart()); - mappingTree.accept(writer); + mappingTree.accept(writer, VisitOrder.createByName()); writer.close(); progress.step(1, I18n.translate("progress.done")); } else if (saveAll) { diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index 3692eb3b..ca3067c8 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -406,6 +406,7 @@ public class MenuBar { private static void prepareOpenMappingsMenu(JMenu openMappingsMenu, Gui gui) { List readableMappingIoFormats = Arrays.asList( MappingFormat.ENIGMA_DIRECTORY, + MappingFormat.ENIGMA_FILE, MappingFormat.TINY_FILE, MappingFormat.TINY_V2, MappingFormat.SRG_FILE, @@ -448,7 +449,10 @@ public class MenuBar { private static void prepareSaveMappingsAsMenu(JMenu saveMappingsAsMenu, JMenuItem saveMappingsItem, Gui gui) { List writableMappingIoFormats = Arrays.asList( MappingFormat.ENIGMA_DIRECTORY, - MappingFormat.TINY_V2); + MappingFormat.ENIGMA_FILE, + MappingFormat.TINY_FILE, + MappingFormat.TINY_V2, + MappingFormat.PROGUARD); // Enigma's own writers for (MappingFormat format : MappingFormat.values()) { -- cgit v1.2.3 From e32dfa11e892e12577a9fef50675d52e16c6d73d Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Sun, 18 Jun 2023 19:54:02 +0200 Subject: Make Mapping-IO the default --- .../main/java/cuchaz/enigma/gui/GuiController.java | 2 +- .../java/cuchaz/enigma/gui/elements/MenuBar.java | 36 +++++++++++----------- 2 files changed, 19 insertions(+), 19 deletions(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index e6d4096c..0eecc7ba 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -104,7 +104,7 @@ public class GuiController implements ClientPacketHandler { private Path loadedMappingPath; private MappingFormat loadedMappingFormat; - public boolean useMappingIo; + public boolean useMappingIo = true; private ClassHandleProvider chp; diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index ca3067c8..59362e52 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -414,21 +414,21 @@ public class MenuBar { MappingFormat.TSRG_2_FILE, MappingFormat.PROGUARD); + // Mapping-IO readers + for (MappingFormat format : readableMappingIoFormats) { + addOpenMappingsMenuEntry(I18n.translate(format.getMappingIoCounterpart().name), + format, true, openMappingsMenu, gui); + } + + openMappingsMenu.addSeparator(); + // Enigma's own readers for (MappingFormat format : MappingFormat.values()) { if (format.getReader() != null) { - addOpenMappingsMenuEntry(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT)), + addOpenMappingsMenuEntry(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT)) + " (legacy)", format, false, openMappingsMenu, gui); } } - - openMappingsMenu.addSeparator(); - - // Mapping-IO readers - for (MappingFormat format : readableMappingIoFormats) { - addOpenMappingsMenuEntry(I18n.translate(format.getMappingIoCounterpart().name + " (via Mapping-IO, experimental)"), - format, true, openMappingsMenu, gui); - } } private static void addOpenMappingsMenuEntry(String text, MappingFormat format, boolean mappingIo, JMenu openMappingsMenu, Gui gui) { @@ -454,21 +454,21 @@ public class MenuBar { MappingFormat.TINY_V2, MappingFormat.PROGUARD); + // Mapping-IO writers + for (MappingFormat format : writableMappingIoFormats) { + addSaveMappingsAsMenuEntry(format.getMappingIoCounterpart().name, + format, true, saveMappingsAsMenu, saveMappingsItem, gui); + } + + saveMappingsAsMenu.addSeparator(); + // Enigma's own writers for (MappingFormat format : MappingFormat.values()) { if (format.getWriter() != null) { - addSaveMappingsAsMenuEntry(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT)), + addSaveMappingsAsMenuEntry(I18n.translate("mapping_format." + format.name().toLowerCase(Locale.ROOT)) + " (legacy)", format, false, saveMappingsAsMenu, saveMappingsItem, gui); } } - - saveMappingsAsMenu.addSeparator(); - - // Mapping-IO writers - for (MappingFormat format : writableMappingIoFormats) { - addSaveMappingsAsMenuEntry(format.getMappingIoCounterpart().name + " (via Mapping-IO, experimental)", - format, true, saveMappingsAsMenu, saveMappingsItem, gui); - } } private static void addSaveMappingsAsMenuEntry(String text, MappingFormat format, boolean mappingIo, JMenu saveMappingsAsMenu, JMenuItem saveMappingsItem, Gui gui) { -- cgit v1.2.3 From 4681411ca1f9fcbe5eba5c4009175033e76c865c Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Mon, 9 Oct 2023 12:29:35 +0200 Subject: Use `VisitableMappingTree` where possible --- enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 0eecc7ba..2c153050 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -33,6 +33,7 @@ import net.fabricmc.mappingio.MappingReader; import net.fabricmc.mappingio.MappingWriter; import net.fabricmc.mappingio.tree.MemoryMappingTree; import net.fabricmc.mappingio.tree.VisitOrder; +import net.fabricmc.mappingio.tree.VisitableMappingTree; import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProfile; @@ -167,7 +168,7 @@ public class GuiController implements ClientPacketHandler { } progress.init(1, loadingMessage); - MemoryMappingTree mappingTree = new MemoryMappingTree(); + VisitableMappingTree mappingTree = new MemoryMappingTree(); MappingReader.read(path, format.getMappingIoCounterpart(), mappingTree); mappings = MappingIoConverter.fromMappingIo(mappingTree, progress); } else { @@ -229,7 +230,7 @@ public class GuiController implements ClientPacketHandler { loadedMappingPath = path; if (useMappingIo) { - MemoryMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf(), progress); + VisitableMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf(), progress); progress.init(1, I18n.translate("progress.mappings.writing")); MappingWriter writer = MappingWriter.create(path, format.getMappingIoCounterpart()); -- cgit v1.2.3 From 75c6da42ca360084b57f7a384cd4a7bf93bdea0a Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Mon, 9 Oct 2023 14:22:40 +0200 Subject: Use System Property for Mapping-IO --- .../main/java/cuchaz/enigma/gui/GuiController.java | 48 ++++++---------------- .../java/cuchaz/enigma/gui/elements/MenuBar.java | 42 +++++-------------- 2 files changed, 22 insertions(+), 68 deletions(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 2c153050..88dc070d 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -29,11 +29,6 @@ import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import com.google.common.collect.Lists; -import net.fabricmc.mappingio.MappingReader; -import net.fabricmc.mappingio.MappingWriter; -import net.fabricmc.mappingio.tree.MemoryMappingTree; -import net.fabricmc.mappingio.tree.VisitOrder; -import net.fabricmc.mappingio.tree.VisitableMappingTree; import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProfile; @@ -82,7 +77,6 @@ import cuchaz.enigma.translation.mapping.EntryUtil; import cuchaz.enigma.translation.mapping.MappingDelta; import cuchaz.enigma.translation.mapping.ResolutionStrategy; import cuchaz.enigma.translation.mapping.serde.MappingFormat; -import cuchaz.enigma.translation.mapping.serde.MappingIoConverter; import cuchaz.enigma.translation.mapping.serde.MappingParseException; import cuchaz.enigma.translation.mapping.serde.MappingSaveParameters; import cuchaz.enigma.translation.mapping.tree.EntryTree; @@ -105,7 +99,6 @@ public class GuiController implements ClientPacketHandler { private Path loadedMappingPath; private MappingFormat loadedMappingFormat; - public boolean useMappingIo = true; private ClassHandleProvider chp; @@ -146,6 +139,11 @@ public class GuiController implements ClientPacketHandler { this.gui.onCloseJar(); } + public CompletableFuture openMappings(MappingFormat format, Path path, boolean useMappingIo) { + System.getProperties().setProperty("enigma.use_mappingio", useMappingIo ? "true" : "false"); + return openMappings(format, path); + } + public CompletableFuture openMappings(MappingFormat format, Path path) { if (project == null) { return CompletableFuture.completedFuture(null); @@ -156,26 +154,7 @@ public class GuiController implements ClientPacketHandler { return ProgressDialog.runOffThread(gui.getFrame(), progress -> { try { MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); - EntryTree mappings; - - if (useMappingIo) { - String loadingMessage; - - if (format.getMappingIoCounterpart().hasSingleFile()) { - loadingMessage = I18n.translate("progress.mappings.loading_file"); - } else { - loadingMessage = I18n.translate("progress.mappings.loading_directory"); - } - - progress.init(1, loadingMessage); - VisitableMappingTree mappingTree = new MemoryMappingTree(); - MappingReader.read(path, format.getMappingIoCounterpart(), mappingTree); - mappings = MappingIoConverter.fromMappingIo(mappingTree, progress); - } else { - mappings = format.read(path, progress, saveParameters); - } - - project.setMappings(mappings); + project.setMappings(format.read(path, progress, saveParameters)); loadedMappingFormat = format; loadedMappingPath = path; @@ -203,6 +182,11 @@ public class GuiController implements ClientPacketHandler { return saveMappings(path, loadedMappingFormat); } + public CompletableFuture saveMappings(Path path, MappingFormat format, boolean useMappingIo) { + System.getProperties().setProperty("enigma.use_mappingio", useMappingIo ? "true" : "false"); + return saveMappings(path, format); + } + /** * Saves the mappings, with a dialog popping up, showing the progress. * @@ -229,15 +213,7 @@ public class GuiController implements ClientPacketHandler { loadedMappingFormat = format; loadedMappingPath = path; - if (useMappingIo) { - VisitableMappingTree mappingTree = MappingIoConverter.toMappingIo(mapper.getObfToDeobf(), progress); - - progress.init(1, I18n.translate("progress.mappings.writing")); - MappingWriter writer = MappingWriter.create(path, format.getMappingIoCounterpart()); - mappingTree.accept(writer, VisitOrder.createByName()); - writer.close(); - progress.step(1, I18n.translate("progress.done")); - } else if (saveAll) { + if (saveAll) { format.write(mapper.getObfToDeobf(), path, progress, saveParameters); } else { format.write(mapper.getObfToDeobf(), delta, path, progress, saveParameters); diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index 59362e52..30e35861 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -7,7 +7,6 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; -import java.util.List; import java.util.Locale; import java.util.Map; import java.util.stream.Collectors; @@ -404,22 +403,11 @@ public class MenuBar { } private static void prepareOpenMappingsMenu(JMenu openMappingsMenu, Gui gui) { - List readableMappingIoFormats = Arrays.asList( - MappingFormat.ENIGMA_DIRECTORY, - MappingFormat.ENIGMA_FILE, - MappingFormat.TINY_FILE, - MappingFormat.TINY_V2, - MappingFormat.SRG_FILE, - MappingFormat.TSRG_FILE, - MappingFormat.TSRG_2_FILE, - MappingFormat.PROGUARD); - // Mapping-IO readers - for (MappingFormat format : readableMappingIoFormats) { - addOpenMappingsMenuEntry(I18n.translate(format.getMappingIoCounterpart().name), - format, true, openMappingsMenu, gui); - } - + MappingFormat.getReadableFormats().stream() + .filter(format -> format.getMappingIoCounterpart() != null) + .forEach(format -> addOpenMappingsMenuEntry(I18n.translate(format.getMappingIoCounterpart().name), + format, true, openMappingsMenu, gui)); openMappingsMenu.addSeparator(); // Enigma's own readers @@ -438,8 +426,7 @@ public class MenuBar { if (gui.enigmaMappingsFileChooser.showOpenDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { File selectedFile = gui.enigmaMappingsFileChooser.getSelectedFile(); - gui.getController().useMappingIo = mappingIo; - gui.getController().openMappings(format, selectedFile.toPath()); + gui.getController().openMappings(format, selectedFile.toPath(), mappingIo); UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); } }); @@ -447,19 +434,11 @@ public class MenuBar { } private static void prepareSaveMappingsAsMenu(JMenu saveMappingsAsMenu, JMenuItem saveMappingsItem, Gui gui) { - List writableMappingIoFormats = Arrays.asList( - MappingFormat.ENIGMA_DIRECTORY, - MappingFormat.ENIGMA_FILE, - MappingFormat.TINY_FILE, - MappingFormat.TINY_V2, - MappingFormat.PROGUARD); - // Mapping-IO writers - for (MappingFormat format : writableMappingIoFormats) { - addSaveMappingsAsMenuEntry(format.getMappingIoCounterpart().name, - format, true, saveMappingsAsMenu, saveMappingsItem, gui); - } - + MappingFormat.getWritableFormats().stream() + .filter(format -> format.hasMappingIoWriter()) + .forEach(format -> addSaveMappingsAsMenuEntry(format.getMappingIoCounterpart().name, + format, true, saveMappingsAsMenu, saveMappingsItem, gui)); saveMappingsAsMenu.addSeparator(); // Enigma's own writers @@ -480,8 +459,7 @@ public class MenuBar { } if (gui.enigmaMappingsFileChooser.showSaveDialog(gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - gui.getController().useMappingIo = mappingIo; - gui.getController().saveMappings(gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), format); + gui.getController().saveMappings(gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), format, mappingIo); saveMappingsItem.setEnabled(true); UiConfig.setLastSelectedDir(gui.enigmaMappingsFileChooser.getCurrentDirectory().toString()); } -- cgit v1.2.3 From 423f5cf98c6d419942301cca0c7c8169db8d4b30 Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Thu, 16 Nov 2023 13:51:03 +0100 Subject: Fix importing mappings without field source descriptors --- enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 88dc070d..6eab0f86 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -154,7 +154,7 @@ public class GuiController implements ClientPacketHandler { return ProgressDialog.runOffThread(gui.getFrame(), progress -> { try { MappingSaveParameters saveParameters = enigma.getProfile().getMappingSaveParameters(); - project.setMappings(format.read(path, progress, saveParameters)); + project.setMappings(format.read(path, progress, saveParameters, project.getJarIndex())); loadedMappingFormat = format; loadedMappingPath = path; -- cgit v1.2.3 From edeeb253c9143b3cf53311e1c156fb9f1b2fe4db Mon Sep 17 00:00:00 2001 From: NebelNidas Date: Thu, 16 Nov 2023 14:40:57 +0100 Subject: Don't only write diffs when MIO writer was last used --- enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'enigma-swing/src/main/java/cuchaz') diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java index 6eab0f86..c5799019 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/GuiController.java @@ -29,6 +29,7 @@ import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import com.google.common.collect.Lists; +import org.jetbrains.annotations.ApiStatus; import cuchaz.enigma.Enigma; import cuchaz.enigma.EnigmaProfile; @@ -139,6 +140,7 @@ public class GuiController implements ClientPacketHandler { this.gui.onCloseJar(); } + @ApiStatus.Internal public CompletableFuture openMappings(MappingFormat format, Path path, boolean useMappingIo) { System.getProperties().setProperty("enigma.use_mappingio", useMappingIo ? "true" : "false"); return openMappings(format, path); @@ -182,6 +184,7 @@ public class GuiController implements ClientPacketHandler { return saveMappings(path, loadedMappingFormat); } + @ApiStatus.Internal public CompletableFuture saveMappings(Path path, MappingFormat format, boolean useMappingIo) { System.getProperties().setProperty("enigma.use_mappingio", useMappingIo ? "true" : "false"); return saveMappings(path, format); -- cgit v1.2.3