From 4d886bc688090abdfe269cf3c69caba4bffea35b Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Fri, 12 Feb 2016 09:03:48 +0100 Subject: [PATCH] function to remove all characters except the seleced ones (for creating small swfs to reproduce a bug).. added to debug menu category --- .../decompiler/flash/gui/MainFrameMenu.java | 5 ++++ .../jpexs/decompiler/flash/gui/MainPanel.java | 29 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java index e2dbbeb80..105e18910 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java @@ -414,6 +414,10 @@ public abstract class MainFrameMenu implements MenuBuilder { mainFrame.getPanel().removeNonScripts(swf); } + protected void removeExceptSelected() { + mainFrame.getPanel().removeExceptSelected(swf); + } + protected void refreshDecompiled() { mainFrame.getPanel().refreshDecompiled(); } @@ -981,6 +985,7 @@ public abstract class MainFrameMenu implements MenuBuilder { addMenuItem("/debug", "Debug", null, null, 0, null, false, null, false); addMenuItem("/debug/removeNonScripts", "Remove non scripts", "update16", e -> removeNonScripts(), PRIORITY_MEDIUM, null, true, null, false); + addMenuItem("/debug/removeExceptSelected", "Remove except selected", "update16", e -> removeExceptSelected(), PRIORITY_MEDIUM, null, true, null, false); addMenuItem("/debug/refreshDecompiled", "Refresh decompiled script", "update16", e -> refreshDecompiled(), PRIORITY_MEDIUM, null, true, null, false); addMenuItem("/debug/checkResources", "Check resources", "update16", e -> checkResources(), PRIORITY_MEDIUM, null, true, null, false); addMenuItem("/debug/callGc", "Call System.gc()", "update16", e -> System.gc(), PRIORITY_MEDIUM, null, true, null, false); diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index dfaee53a5..9affdc614 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -2414,6 +2414,35 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se refreshTree(swf); } + public void removeExceptSelected(SWF swf) { + if (swf == null) { + return; + } + + List sel = tagTree.getAllSelected(); + Set needed = new HashSet<>(); + for (TreeItem item : sel) { + if (item instanceof CharacterTag) { + CharacterTag characterTag = (CharacterTag) item; + characterTag.getNeededCharactersDeep(needed); + needed.add(characterTag.getCharacterId()); + } + } + + List tagsToRemove = new ArrayList<>(); + for (Tag tag : swf.getTags()) { + if (tag instanceof CharacterTag) { + CharacterTag characterTag = (CharacterTag) tag; + if (!needed.contains(characterTag.getCharacterId())) { + tagsToRemove.add(tag); + } + } + } + + swf.removeTags(tagsToRemove, true); + refreshTree(swf); + } + private void clear() { dumpViewPanel.clear(); previewPanel.clear();