Added #2005 Export files to directories by bundle names on multiple bundle (zips, etc.) selection

This commit is contained in:
Jindra Petřík
2023-10-18 20:09:01 +02:00
parent b559352215
commit 13cfed7be8
3 changed files with 22 additions and 6 deletions

View File

@@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
opening dialogs on same screen as the main window,
do not restore window size to larger value that actual screen size
- [#1717] AS1/2/3 Option to hide P-code panel
- [#2005] Export files to directories by bundle names on multiple bundle (zips, etc.) selection
### Fixed
- [#1306], [#1768] Maximizing window on other than main monitor
@@ -3195,6 +3196,7 @@ Major version of SWF to XML export changed to 2.
[#1130]: https://www.free-decompiler.com/flash/issues/1130
[#1220]: https://www.free-decompiler.com/flash/issues/1220
[#1717]: https://www.free-decompiler.com/flash/issues/1717
[#2005]: https://www.free-decompiler.com/flash/issues/2005
[#1306]: https://www.free-decompiler.com/flash/issues/1306
[#1768]: https://www.free-decompiler.com/flash/issues/1768
[#2013]: https://www.free-decompiler.com/flash/issues/2013

View File

@@ -45,7 +45,7 @@ public class OpenableList implements List<Openable>, SWFContainerItem {
@Override
public Openable getOpenable() {
throw new UnsupportedOperationException("Not supported.");
return null;
}
@Override

View File

@@ -1899,11 +1899,18 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
List<TreeItem> sel = getSelection(null, selection);
Set<Openable> usedOpenables = new HashSet<>();
Set<OpenableList> usedOpenableLists = new HashSet<>();
Map<OpenableList, Map<String, Integer>> usedSwfIdsInBundles = new HashMap<>();
for (TreeItem d : sel) {
Openable selectedNodeOpenable = d.getOpenable();
if (!usedOpenables.contains(selectedNodeOpenable)) {
usedOpenables.add(selectedNodeOpenable);
}
usedOpenables.add(selectedNodeOpenable);
OpenableList list = selectedNodeOpenable.getOpenableList();
if (list != null) {
usedOpenableLists.add(list);
}
}
Map<String, Integer> usedSwfsIds = new HashMap<>();
@@ -2026,8 +2033,15 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
}
String selFile2;
if (usedOpenables.size() > 1) {
selFile2 = selFile + File.separator + Helper.getNextId(openable.getTitleOrShortFileName(), usedSwfsIds);
if (usedOpenables.size() > 1) {
if (usedOpenableLists.size() > 1 && openable.getOpenableList() != null && openable.getOpenableList().isBundle()) {
if (!usedSwfIdsInBundles.containsKey(openable.getOpenableList())) {
usedSwfIdsInBundles.put(openable.getOpenableList(), new HashMap<>());
}
selFile2 = selFile + File.separator + openable.getOpenableList().name + File.separator + Helper.getNextId(openable.getTitleOrShortFileName(), usedSwfIdsInBundles.get(openable.getOpenableList()));
} else {
selFile2 = selFile + File.separator + Helper.getNextId(openable.getTitleOrShortFileName(), usedSwfsIds);
}
} else {
selFile2 = selFile;
}