From 2e998cfcb413c55a2cc5f451ba28831fb300a395 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 25 Dec 2022 15:50:28 +0100 Subject: [PATCH] Replace movie GUI stub --- .../jpexs/decompiler/flash/gui/MainPanel.java | 18 ++++++++++++++---- .../decompiler/flash/gui/PreviewPanel.java | 17 ++++++++++++++++- .../flash/gui/graphics/replacemovie16.png | Bin 0 -> 6797 bytes .../flash/gui/locales/MainFrame.properties | 4 +++- .../flash/gui/tagtree/TagTreeContextMenu.java | 5 +++++ 5 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 src/com/jpexs/decompiler/flash/gui/graphics/replacemovie16.png diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 10e3ac1df..42f7f6ba5 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -3974,6 +3974,9 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (ti0 instanceof ShapeTag) { file = showImportFileChooser("filter.images|*.jpg;*.jpeg;*.gif;*.png;*.bmp;*.svg", true); } + if (ti0 instanceof DefineVideoStreamTag) { + file = showImportFileChooser("filter.movies|*.flv", false); + } if (ti0 instanceof DefineBinaryDataTag) { file = showImportFileChooser("", false); } @@ -4086,6 +4089,10 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se refreshTree(ut.getSwf()); reload(true); } + + if (item instanceof DefineVideoStreamTag) { + + } } public void replaceNoFillButtonActionPerformed(TreeItem item) { @@ -4705,7 +4712,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); + previewPanel.setImageReplaceButtonVisible(!((Tag) imageTag).isReadOnly() && imageTag.importSupported(), imageTag instanceof DefineBitsJPEG3Tag || imageTag instanceof DefineBitsJPEG4Tag, false, false, false); SWF imageSWF = makeTimelinedImage(imageTag); previewPanel.showImagePanel(imageSWF, imageSWF, 0, false, true, true, true, true, false, false); @@ -4721,7 +4728,10 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se previewPanel.setParametersPanelVisible(false); if (treeItem instanceof ShapeTag) { - previewPanel.setImageReplaceButtonVisible(false, false, !((Tag) treeItem).isReadOnly(), false); + previewPanel.setImageReplaceButtonVisible(false, false, !((Tag) treeItem).isReadOnly(), false, false); + } + if (treeItem instanceof DefineVideoStreamTag) { + previewPanel.setImageReplaceButtonVisible(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)); } else if (treeItem instanceof Frame && internalViewer) { @@ -4738,7 +4748,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() && (treeItem instanceof DefineSoundTag)); + previewPanel.setImageReplaceButtonVisible(false, false, false, !((Tag) treeItem).isReadOnly() && (treeItem instanceof DefineSoundTag), false); try { SoundTagPlayer soundThread = new SoundTagPlayer(null, (SoundTag) treeItem, Configuration.loopMedia.get() ? Integer.MAX_VALUE : 1, true); if (!Configuration.autoPlaySounds.get()) { @@ -4869,7 +4879,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se previewPanel.clear(); stopFlashPlayer(); - previewPanel.setImageReplaceButtonVisible(false, false, false, false); + previewPanel.setImageReplaceButtonVisible(false, false, false, false, false); boolean internalViewer = !isAdobeFlashPlayerEnabled(); diff --git a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java index 73fea642b..ca50b16a3 100644 --- a/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/PreviewPanel.java @@ -167,6 +167,8 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel private JButton replaceImageButton; private JButton replaceImageAlphaButton; + + private JButton replaceMovieButton; private JButton prevFontsButton; @@ -356,6 +358,16 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel replaceImageAlphaButton.setMargin(new Insets(3, 3, 3, 10)); replaceImageAlphaButton.addActionListener(mainPanel::replaceAlphaButtonActionPerformed); replaceImageAlphaButton.setVisible(false); + + replaceMovieButton = new JButton(mainPanel.translate("button.replace"), View.getIcon("replacemovie16")); + replaceMovieButton.setMargin(new Insets(3, 3, 3, 10)); + replaceMovieButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + mainPanel.replaceButtonActionPerformed(mainPanel.getCurrentTree().getSelected()); + } + }); + replaceMovieButton.setVisible(false); prevFontsButton = new JButton(mainPanel.translate("button.prev"), View.getIcon("prev16")); prevFontsButton.setMargin(new Insets(3, 3, 3, 10)); @@ -373,6 +385,7 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel imageButtonsPanel.add(replaceShapeUpdateBoundsButton); imageButtonsPanel.add(replaceImageButton); imageButtonsPanel.add(replaceImageAlphaButton); + imageButtonsPanel.add(replaceMovieButton); imageButtonsPanel.add(prevFontsButton); imageButtonsPanel.add(nextFontsButton); return imageButtonsPanel; @@ -1112,18 +1125,20 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel placeTransformButton.setVisible(!tag.isReadOnly() && !readOnly); } - public void setImageReplaceButtonVisible(boolean showImage, boolean showAlpha, boolean showShape, boolean showSound) { + public void setImageReplaceButtonVisible(boolean showImage, boolean showAlpha, boolean showShape, boolean showSound, boolean showMovie) { if (readOnly) { showImage = false; showAlpha = false; showShape = false; showSound = false; + showMovie = false; } replaceImageButton.setVisible(showImage); replaceImageAlphaButton.setVisible(showAlpha); replaceShapeButton.setVisible(showShape); replaceShapeUpdateBoundsButton.setVisible(showShape); replaceSoundButton.setVisible(showSound); + replaceMovieButton.setVisible(showMovie); prevFontsButton.setVisible(false); nextFontsButton.setVisible(false); } diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/replacemovie16.png b/src/com/jpexs/decompiler/flash/gui/graphics/replacemovie16.png new file mode 100644 index 0000000000000000000000000000000000000000..10ba2c6b4f97e976b0b0c80a3c95c4e489b7d7e2 GIT binary patch literal 6797 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 it instanceof UnknownTag)) { replaceMenuItem.setVisible(true); } + + if (canReplace.test(it -> it instanceof DefineVideoStreamTag)) { + replaceMenuItem.setVisible(true); + } if (singleSelect) { final TreeItem firstItem = items.get(0);