mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-06-02 05:44:51 +00:00
allow removing frames
This commit is contained in:
@@ -1049,7 +1049,7 @@ public final class SWF implements TreeItem, Timelined {
|
||||
TreeNode addNode = null;
|
||||
if (t instanceof ShowFrameTag) {
|
||||
// do not add PlaceObjects (+etc) to script nodes
|
||||
FrameNode tti = new FrameNode(new FrameNodeItem(t.getSwf(), frame, parent, false), null, true);
|
||||
FrameNode tti = new FrameNode(new FrameNodeItem(t.getSwf(), frame, parent, (ShowFrameTag) t, false), null, true);
|
||||
|
||||
for (int r = ret.size() - 1; r >= 0; r--) {
|
||||
if (!(ret.get(r).getItem() instanceof DefineSpriteTag)) {
|
||||
@@ -2722,14 +2722,14 @@ public final class SWF implements TreeItem, Timelined {
|
||||
}
|
||||
|
||||
public void removeTag(Tag t) {
|
||||
if (ShowFrameTag.isNestedTagType(t.getId())) {
|
||||
List<Tag> tags;
|
||||
Timelined timelined = t.getTimelined();
|
||||
if (timelined instanceof DefineSpriteTag) {
|
||||
tags = ((DefineSpriteTag) timelined).getSubTags();
|
||||
} else {
|
||||
tags = this.tags;
|
||||
}
|
||||
List<Tag> tags;
|
||||
Timelined timelined = t.getTimelined();
|
||||
if (timelined instanceof DefineSpriteTag) {
|
||||
tags = ((DefineSpriteTag) timelined).getSubTags();
|
||||
} else {
|
||||
tags = this.tags;
|
||||
}
|
||||
if (t instanceof ShowFrameTag || ShowFrameTag.isNestedTagType(t.getId())) {
|
||||
tags.remove(t);
|
||||
timelined.resetTimeline();
|
||||
} else {
|
||||
|
||||
@@ -409,18 +409,14 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec
|
||||
if (paths == null || paths.length == 0) {
|
||||
return;
|
||||
}
|
||||
boolean allSelectedIsTag = true;
|
||||
boolean allSelectedIsTagOrFrame = true;
|
||||
for (TreePath treePath : paths) {
|
||||
TreeNode treeNode = (TreeNode) treePath.getLastPathComponent();
|
||||
|
||||
if (treeNode instanceof TreeNode) {
|
||||
TreeItem tag = treeNode.getItem();
|
||||
if (!(tag instanceof Tag)) {
|
||||
allSelectedIsTag = false;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
allSelectedIsTag = false;
|
||||
TreeItem tag = treeNode.getItem();
|
||||
if (!(tag instanceof Tag) && !(tag instanceof FrameNodeItem)) {
|
||||
allSelectedIsTagOrFrame = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -479,7 +475,7 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec
|
||||
expandRecursiveMenuItem.setVisible(model.getChildCount(treeNode) > 0);
|
||||
}
|
||||
|
||||
removeMenuItem.setVisible(allSelectedIsTag);
|
||||
removeMenuItem.setVisible(allSelectedIsTagOrFrame);
|
||||
exportSelectionMenuItem.setEnabled(hasExportableNodes());
|
||||
contextPopupMenu.show(e.getComponent(), e.getX(), e.getY());
|
||||
}
|
||||
@@ -2421,6 +2417,9 @@ public final class MainPanel extends JPanel implements ActionListener, TreeSelec
|
||||
TreeItem tag = o.getItem();
|
||||
if (tag instanceof Tag) {
|
||||
tagsToRemove.add((Tag) tag);
|
||||
} else if (tag instanceof FrameNodeItem) {
|
||||
FrameNodeItem frame = (FrameNodeItem) tag;
|
||||
tagsToRemove.add(frame.getShowFrameTag());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ public class TagTreeModel implements TreeModel {
|
||||
switch (ttype) {
|
||||
case SHOW_FRAME:
|
||||
ShowFrameTag showFrameTag = (ShowFrameTag) t;
|
||||
frames.add(new FrameNode(new FrameNodeItem(t.getSwf(), ++frameCnt, parent, true), showFrameTag.innerTags, false));
|
||||
frames.add(new FrameNode(new FrameNodeItem(t.getSwf(), ++frameCnt, parent, showFrameTag, true), showFrameTag.innerTags, false));
|
||||
break;
|
||||
case SHAPE:
|
||||
shapes.add(new TagNode(t));
|
||||
@@ -277,7 +277,7 @@ public class TagTreeModel implements TreeModel {
|
||||
switch (ttype) {
|
||||
case SHOW_FRAME:
|
||||
ShowFrameTag showFrameTag = (ShowFrameTag) t;
|
||||
frames.add(new FrameNode(new FrameNodeItem(t.getSwf(), ++frameCnt, parent, true), showFrameTag.innerTags, false));
|
||||
frames.add(new FrameNode(new FrameNodeItem(t.getSwf(), ++frameCnt, parent, showFrameTag, true), showFrameTag.innerTags, false));
|
||||
break;
|
||||
default:
|
||||
if (!actionScriptTags.contains(t) && !ShowFrameTag.isNestedTagType(t.getId())) {
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.jpexs.decompiler.flash.treeitems;
|
||||
|
||||
import com.jpexs.decompiler.flash.SWF;
|
||||
import com.jpexs.decompiler.flash.tags.ShowFrameTag;
|
||||
import com.jpexs.decompiler.flash.tags.Tag;
|
||||
|
||||
/**
|
||||
@@ -28,12 +29,15 @@ public class FrameNodeItem implements TreeItem {
|
||||
private final SWF swf;
|
||||
private final int frame;
|
||||
private final Tag parent;
|
||||
private final ShowFrameTag showFrameTag;
|
||||
private final boolean display;
|
||||
|
||||
public FrameNodeItem(SWF swf, int frame, Tag parent, boolean display) {
|
||||
public FrameNodeItem(SWF swf, int frame, Tag parent, ShowFrameTag showFrameTag, boolean display) {
|
||||
|
||||
this.swf = swf;
|
||||
this.frame = frame;
|
||||
this.parent = parent;
|
||||
this.showFrameTag = showFrameTag;
|
||||
this.display = display;
|
||||
}
|
||||
|
||||
@@ -58,4 +62,8 @@ public class FrameNodeItem implements TreeItem {
|
||||
public Tag getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
public ShowFrameTag getShowFrameTag() {
|
||||
return showFrameTag;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user