mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-25 12:21:04 +00:00
Added #2079 Replace DefineSprite with GIF
This commit is contained in:
@@ -131,6 +131,7 @@ import com.jpexs.decompiler.flash.importers.MovieImporter;
|
||||
import com.jpexs.decompiler.flash.importers.ScriptImporterProgressListener;
|
||||
import com.jpexs.decompiler.flash.importers.ShapeImporter;
|
||||
import com.jpexs.decompiler.flash.importers.SoundImporter;
|
||||
import com.jpexs.decompiler.flash.importers.SpriteImporter;
|
||||
import com.jpexs.decompiler.flash.importers.SwfXmlImporter;
|
||||
import com.jpexs.decompiler.flash.importers.SymbolClassImporter;
|
||||
import com.jpexs.decompiler.flash.importers.TextImporter;
|
||||
@@ -4438,6 +4439,33 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
}
|
||||
}
|
||||
|
||||
public void replaceWithGifButtonActionPerformed(TreeItem item) {
|
||||
if (item == null) {
|
||||
return;
|
||||
}
|
||||
if (item instanceof DefineSpriteTag) {
|
||||
String filter = "filter.images|*.gif";
|
||||
File selectedFile = showImportFileChooser(filter, false);
|
||||
if (selectedFile != null) {
|
||||
File selfile = Helper.fixDialogFile(selectedFile);
|
||||
DefineSpriteTag sprite = (DefineSpriteTag)item;
|
||||
SWF swf = sprite.getSwf();
|
||||
try(FileInputStream fis = new FileInputStream(selfile)){
|
||||
SpriteImporter spriteImporter = new SpriteImporter();
|
||||
spriteImporter.importSprite((DefineSpriteTag)item, fis);
|
||||
|
||||
swf.clearImageCache();
|
||||
swf.clearShapeCache();
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.SEVERE, "Invalid image", ex);
|
||||
ViewMessages.showMessageDialog(this, translate("error.image.invalid"), translate("error"), JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
reload(true);
|
||||
refreshTree(swf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void replaceNoFillButtonActionPerformed(TreeItem item) {
|
||||
if (item == null) {
|
||||
return;
|
||||
@@ -5058,10 +5086,10 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
previewPanel.showDisplayEditTagPanel((PlaceObjectTypeTag) treeItem, frame);
|
||||
} else if (treeItem instanceof ShapeTag) {
|
||||
previewPanel.showDisplayEditTagPanel((ShapeTag) treeItem, 0);
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, !((Tag) treeItem).isReadOnly(), false, false, false);
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, !((Tag) treeItem).isReadOnly(), false, false, false, false);
|
||||
} else if (treeItem instanceof MorphShapeTag) {
|
||||
previewPanel.showDisplayEditTagPanel((MorphShapeTag) treeItem, 0);
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, false, !((Tag) treeItem).isReadOnly());
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, false, !((Tag) treeItem).isReadOnly(), false);
|
||||
} else if (treeItem instanceof MetadataTag) {
|
||||
MetadataTag metadataTag = (MetadataTag) treeItem;
|
||||
previewPanel.showMetaDataPanel(metadataTag);
|
||||
@@ -5076,7 +5104,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
previewPanel.showUnknownPanel(unknownTag);
|
||||
} else if (treeItem instanceof ImageTag) {
|
||||
ImageTag imageTag = (ImageTag) treeItem;
|
||||
previewPanel.setImageReplaceButtonVisible(!((Tag) imageTag).isReadOnly() && imageTag.importSupported(), imageTag instanceof DefineBitsJPEG3Tag || imageTag instanceof DefineBitsJPEG4Tag, false, false, false, false);
|
||||
previewPanel.setImageReplaceButtonVisible(!((Tag) imageTag).isReadOnly() && imageTag.importSupported(), imageTag instanceof DefineBitsJPEG3Tag || imageTag instanceof DefineBitsJPEG4Tag, false, false, false, false, false);
|
||||
SWF imageSWF = makeTimelinedImage(imageTag);
|
||||
previewPanel.showImagePanel(imageSWF, imageSWF, 0, false, true, true, true, true, false, false);
|
||||
|
||||
@@ -5092,10 +5120,13 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
|
||||
previewPanel.setParametersPanelVisible(false);
|
||||
if (treeItem instanceof ShapeTag) {
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, !((Tag) treeItem).isReadOnly(), false, false, false);
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, !((Tag) treeItem).isReadOnly(), false, false, false, false);
|
||||
}
|
||||
if (treeItem instanceof DefineVideoStreamTag) {
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, !((Tag) treeItem).isReadOnly(), false);
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, !((Tag) treeItem).isReadOnly(), false, false);
|
||||
}
|
||||
if (treeItem instanceof DefineSpriteTag) {
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, false, false, !((Tag) treeItem).isReadOnly());
|
||||
}
|
||||
previewPanel.showImagePanel(timelined, tag.getSwf(), -1, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), treeItem instanceof ShapeTag, !Configuration.playFrameSounds.get(), (treeItem instanceof DefineSpriteTag) || (treeItem instanceof ButtonTag), (treeItem instanceof DefineSpriteTag) || (treeItem instanceof ButtonTag) || (treeItem instanceof ShapeTag));
|
||||
} else if (treeItem instanceof Frame && internalViewer) {
|
||||
@@ -5112,7 +5143,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
previewPanel.showImagePanel(timelinedContainer, swf, frame, true, Configuration.autoPlayPreviews.get(), !Configuration.animateSubsprites.get(), false, !Configuration.playFrameSounds.get(), true, false);
|
||||
} else if ((treeItem instanceof SoundTag)) { //&& isInternalFlashViewerSelected() && (Arrays.asList("mp3", "wav").contains(((SoundTag) tagObj).getExportFormat())))) {
|
||||
previewPanel.showImagePanel(new SerializableImage(View.loadImage("sound32")));
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, !((Tag) treeItem).isReadOnly() && ((SoundTag) treeItem).importSupported(), false, false);
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, !((Tag) treeItem).isReadOnly() && ((SoundTag) treeItem).importSupported(), false, false, false);
|
||||
try {
|
||||
SoundTagPlayer soundThread = new SoundTagPlayer(null, (SoundTag) treeItem, Configuration.loopMedia.get() ? Integer.MAX_VALUE : 1, true);
|
||||
if (!Configuration.autoPlaySounds.get()) {
|
||||
@@ -5258,7 +5289,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
|
||||
previewPanel.clear();
|
||||
stopFlashPlayer();
|
||||
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, false, false);
|
||||
previewPanel.setImageReplaceButtonVisible(false, false, false, false, false, false, false);
|
||||
|
||||
boolean internalViewer = !isAdobeFlashPlayerEnabled();
|
||||
|
||||
|
||||
@@ -199,6 +199,8 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
|
||||
private JButton replaceImageButton;
|
||||
|
||||
private JButton replaceImageAlphaButton;
|
||||
|
||||
private JButton replaceSpriteButton;
|
||||
|
||||
private JButton replaceMovieButton;
|
||||
|
||||
@@ -395,6 +397,17 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
|
||||
replaceImageAlphaButton.addActionListener(mainPanel::replaceAlphaButtonActionPerformed);
|
||||
replaceImageAlphaButton.setVisible(false);
|
||||
|
||||
|
||||
replaceSpriteButton = new JButton(mainPanel.translate("button.replaceWithGif"), View.getIcon("replacesprite16"));
|
||||
replaceSpriteButton.setMargin(new Insets(3, 3, 3, 10));
|
||||
replaceSpriteButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
mainPanel.replaceWithGifButtonActionPerformed(mainPanel.getCurrentTree().getCurrentTreeItem());
|
||||
}
|
||||
});
|
||||
replaceSpriteButton.setVisible(false);
|
||||
|
||||
replaceMovieButton = new JButton(mainPanel.translate("button.replace"), View.getIcon("importmovie16"));
|
||||
replaceMovieButton.setMargin(new Insets(3, 3, 3, 10));
|
||||
replaceMovieButton.addActionListener(new ActionListener() {
|
||||
@@ -421,6 +434,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
|
||||
//imageButtonsPanel.add(replaceShapeUpdateBoundsButton);
|
||||
imageButtonsPanel.add(replaceImageButton);
|
||||
imageButtonsPanel.add(replaceImageAlphaButton);
|
||||
imageButtonsPanel.add(replaceSpriteButton);
|
||||
imageButtonsPanel.add(replaceMovieButton);
|
||||
imageButtonsPanel.add(prevFontsButton);
|
||||
imageButtonsPanel.add(nextFontsButton);
|
||||
@@ -1692,16 +1706,18 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
|
||||
displayEditTransformButton.setVisible(!tag.isReadOnly() && !readOnly);
|
||||
}
|
||||
|
||||
public void setImageReplaceButtonVisible(boolean showImage, boolean showAlpha, boolean showShape, boolean showSound, boolean showMovie, boolean showMorphShape) {
|
||||
public void setImageReplaceButtonVisible(boolean showImage, boolean showAlpha, boolean showShape, boolean showSound, boolean showMovie, boolean showMorphShape, boolean showSprite) {
|
||||
if (readOnly) {
|
||||
showImage = false;
|
||||
showAlpha = false;
|
||||
showShape = false;
|
||||
showSound = false;
|
||||
showMovie = false;
|
||||
showSprite = false;
|
||||
}
|
||||
replaceImageButton.setVisible(showImage);
|
||||
replaceImageAlphaButton.setVisible(showAlpha);
|
||||
replaceSpriteButton.setVisible(showSprite);
|
||||
replaceShapeButton.setVisible(showShape);
|
||||
morphShowPanel.setVisible(showMorphShape);
|
||||
displayEditEditPointsButton.setVisible(showShape || showMorphShape);
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 6.0 KiB |
@@ -1161,3 +1161,5 @@ button.abcexploretrait = Show trait in ABC Explorer
|
||||
|
||||
#after 19.0.0
|
||||
binarydata.swfInside.packer = It looks like there is SWF inside this binary data tag packed with %packer%. Click here to unpack the SWF and load it as subtree.
|
||||
|
||||
button.replaceWithGif = Replace with GIF...
|
||||
@@ -1146,3 +1146,5 @@ button.abcexploretrait = Zobrazit vlastnost v pr\u016fzkumn\u00edku ABC
|
||||
|
||||
#after 19.0.0
|
||||
binarydata.swfInside.packer = Vypad\u00e1 to, \u017ee uvnit\u0159 v tomto BinaryData tagu se nach\u00e1z\u00ed SWF soubor zabalen\u00fd pomoc\u00ed %packer%. Klikn\u011bte zde pro jeho rozbalen\u00ed a na\u010dten\u00ed jako podstrom.
|
||||
|
||||
button.replaceWithGif = Nahradit GIFem...
|
||||
|
||||
@@ -254,6 +254,8 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
private JMenuItem unpinOthersMenuItem;
|
||||
|
||||
private JMenuItem abcExplorerMenuItem;
|
||||
|
||||
private JMenuItem replaceWithGifMenuItem;
|
||||
|
||||
private List<TreeItem> items = new ArrayList<>();
|
||||
|
||||
@@ -356,6 +358,16 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
replaceWithTagMenuItem.addActionListener(this::replaceWithTagActionPerformed);
|
||||
replaceWithTagMenuItem.setIcon(View.getIcon("replacewithtag16"));
|
||||
add(replaceWithTagMenuItem);
|
||||
|
||||
replaceWithGifMenuItem = new JMenuItem(mainPanel.translate("button.replaceWithGif"));
|
||||
replaceWithGifMenuItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
mainPanel.replaceWithGifButtonActionPerformed(getCurrentItem());
|
||||
}
|
||||
});
|
||||
replaceWithGifMenuItem.setIcon(View.getIcon("replacesprite16"));
|
||||
add(replaceWithGifMenuItem);
|
||||
|
||||
replaceRefsWithTagMenuItem = new JMenuItem(mainPanel.translate("button.replaceRefs"));
|
||||
replaceRefsWithTagMenuItem.addActionListener(this::replaceRefsWithTagActionPerformed);
|
||||
@@ -938,6 +950,7 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
exportABCMenuItem.setVisible(false);
|
||||
replaceMenuItem.setVisible(false);
|
||||
replaceNoFillMenuItem.setVisible(false);
|
||||
replaceWithGifMenuItem.setVisible(false);
|
||||
replaceWithTagMenuItem.setVisible(false);
|
||||
replaceRefsWithTagMenuItem.setVisible(false);
|
||||
abcExplorerMenuItem.setVisible(false);
|
||||
@@ -1024,7 +1037,7 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
replaceMenuItem.setVisible(true);
|
||||
replaceNoFillMenuItem.setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
if (canReplace.test(it -> it instanceof DefineBinaryDataTag)) {
|
||||
replaceMenuItem.setVisible(true);
|
||||
}
|
||||
@@ -1097,6 +1110,10 @@ public class TagTreeContextMenu extends JPopupMenu {
|
||||
replaceRefsWithTagMenuItem.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (firstItem instanceof DefineSpriteTag) {
|
||||
replaceWithGifMenuItem.setVisible(true);
|
||||
}
|
||||
|
||||
TreePath thisPath = tree.getFullModel().getTreePath(firstItem);
|
||||
TreeItem parent = thisPath == null ? null : (TreeItem) thisPath.getParentPath().getLastPathComponent();
|
||||
|
||||
Reference in New Issue
Block a user