From af989e0ff69ba2e155eea327a8b7857c2f86487d Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Mon, 6 Feb 2023 09:48:54 -0500 Subject: [PATCH] GP-3034 GZF/GDT Import/Export improvements --- .../plugin/core/exporter/ExporterDialog.java | 218 +++++++++++------- .../plugin/core/exporter/ExporterPlugin.java | 18 +- .../app/services/FileImporterService.java | 2 + .../ghidra/app/util/DomainObjectService.java | 5 + ...hidraFileOpenDataFlavorHandlerService.java | 6 +- .../java/ghidra/app/util/OptionsDialog.java | 2 +- .../ghidra/app/util/OptionsEditorPanel.java | 26 ++- .../ghidra/app/util/exporter/Exporter.java | 81 ++++++- ...tArchiveExporter.java => GdtExporter.java} | 61 ++++- .../ghidra/app/util/exporter/GzfExporter.java | 33 ++- .../util/exporter/OriginalFileExporter.java | 2 +- .../AbstractFileListFlavorHandler.java | 75 ++++++ .../GhidraDataFlavorHandlerService.java | 5 +- .../main/datatree/JavaFileListHandler.java | 59 +---- .../main/datatree/LinuxFileUrlHandler.java | 78 ++----- .../plugin/importer/ImporterPlugin.java | 143 +++++++++++- .../main/java/docking/tool/ToolConstants.java | 5 + .../main/java/skeleton/SkeletonExporter.java | 8 + 18 files changed, 588 insertions(+), 239 deletions(-) rename Ghidra/Features/Base/src/main/java/ghidra/app/util/exporter/{ProjectArchiveExporter.java => GdtExporter.java} (54%) create mode 100644 Ghidra/Features/Base/src/main/java/ghidra/framework/main/datatree/AbstractFileListFlavorHandler.java diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/exporter/ExporterDialog.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/exporter/ExporterDialog.java index 5bfb13dfbb..9c437dfa20 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/exporter/ExporterDialog.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/exporter/ExporterDialog.java @@ -36,7 +36,9 @@ import docking.widgets.label.GLabel; import ghidra.app.plugin.core.help.AboutDomainObjectUtils; import ghidra.app.util.*; import ghidra.app.util.exporter.Exporter; +import ghidra.app.util.exporter.GzfExporter; import ghidra.app.util.importer.MessageLog; +import ghidra.framework.main.FrontEndService; import ghidra.framework.model.DomainFile; import ghidra.framework.model.DomainObject; import ghidra.framework.plugintool.PluginTool; @@ -62,17 +64,19 @@ import ghidra.util.task.*; public class ExporterDialog extends DialogComponentProvider implements AddressFactoryService { private static final String XML_WARNING = - " Warning: XML is lossy and intended only for transfering data to external tools. GZF is the recommended format for saving and sharing program data."; + " Warning: XML is lossy and intended only for transfering data to external tools. " + + "GZF is the recommended format for saving and sharing program data."; - private static String lastUsedExporterName = "Ghidra Zip File"; // default to GZF first time + private static String lastUsedExporterName = GzfExporter.NAME; // default to GZF first time private JButton optionsButton; private ProgramSelection currentSelection; - private JCheckBox selectionCheckBox; + private JCheckBox selectionCheckBox; // null for FrontEnd Tool use private JTextField filePathTextField; private JButton fileChooserButton; private GhidraComboBox comboBox; private final DomainFile domainFile; + private boolean domainObjectWasSupplied; private DomainObject domainObject; private List