Added Replace button under shape and DefineSound display (previously, only context menu allowed that)

This commit is contained in:
Jindra Petřík
2022-11-01 22:52:41 +01:00
parent 0896f45615
commit 9fa6632967
14 changed files with 51 additions and 18 deletions
@@ -3860,7 +3860,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);
previewPanel.setImageReplaceButtonVisible(!((Tag) imageTag).isReadOnly() && imageTag.importSupported(), imageTag instanceof DefineBitsJPEG3Tag || imageTag instanceof DefineBitsJPEG4Tag, false, false);
SWF imageSWF = makeTimelinedImage(imageTag);
previewPanel.showImagePanel(imageSWF, imageSWF, 0, false);
@@ -3875,6 +3875,9 @@ 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.showImagePanel(timelined, tag.getSwf(), -1, true);
} else if (treeItem instanceof Frame && internalViewer) {
Frame fn = (Frame) treeItem;
@@ -3890,7 +3893,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
previewPanel.showImagePanel(timelinedContainer, swf, frame, true);
} else if ((treeItem instanceof SoundTag)) { //&& isInternalFlashViewerSelected() && (Arrays.asList("mp3", "wav").contains(((SoundTag) tagObj).getExportFormat())))) {
previewPanel.showImagePanel(new SerializableImage(View.loadImage("sound32")));
previewPanel.setImageReplaceButtonVisible(((Tag) treeItem).isReadOnly() && (treeItem instanceof DefineSoundTag), false);
previewPanel.setImageReplaceButtonVisible(false, false, false, !((Tag) treeItem).isReadOnly() && (treeItem instanceof DefineSoundTag));
try {
SoundTagPlayer soundThread = new SoundTagPlayer(null, (SoundTag) treeItem, Configuration.loopMedia.get() ? Integer.MAX_VALUE : 1, true);
previewPanel.setMedia(soundThread);
@@ -3980,8 +3983,8 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se
previewPanel.clear();
stopFlashPlayer();
previewPanel.setImageReplaceButtonVisible(false, false);
previewPanel.setImageReplaceButtonVisible(false, false, false, false);
boolean internalViewer = !isAdobeFlashPlayerEnabled();
if (treeItem instanceof ScriptPack) {
@@ -130,6 +130,12 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
private JPanel displayWithPreview;
// Image tag buttons
private JButton replaceShapeButton;
private JButton replaceShapeUpdateBoundsButton;
private JButton replaceSoundButton;
private JButton replaceImageButton;
private JButton replaceImageAlphaButton;
@@ -252,8 +258,23 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
parametersPanel.add(displayWithPreview, BorderLayout.CENTER);
setRightComponent(parametersPanel);
}
private JPanel createImageButtonsPanel() {
replaceShapeButton = new JButton(mainPanel.translate("button.replace"), View.getIcon("replaceshape16"));
replaceShapeButton.setMargin(new Insets(3, 3, 3, 10));
replaceShapeButton.addActionListener(mainPanel::replaceButtonActionPerformed);
replaceShapeButton.setVisible(false);
replaceShapeUpdateBoundsButton = new JButton(mainPanel.translate("button.replaceNoFill"), View.getIcon("replaceshape16"));
replaceShapeUpdateBoundsButton.setMargin(new Insets(3, 3, 3, 10));
replaceShapeUpdateBoundsButton.addActionListener(mainPanel::replaceNoFillButtonActionPerformed);
replaceShapeUpdateBoundsButton.setVisible(false);
replaceSoundButton = new JButton(mainPanel.translate("button.replace"), View.getIcon("replacesound16"));
replaceSoundButton.setMargin(new Insets(3, 3, 3, 10));
replaceSoundButton.addActionListener(mainPanel::replaceButtonActionPerformed);
replaceSoundButton.setVisible(false);
replaceImageButton = new JButton(mainPanel.translate("button.replace"), View.getIcon("replaceimage16"));
replaceImageButton.setMargin(new Insets(3, 3, 3, 10));
replaceImageButton.addActionListener(mainPanel::replaceButtonActionPerformed);
@@ -275,6 +296,9 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
nextFontsButton.setVisible(false);
ButtonsPanel imageButtonsPanel = new ButtonsPanel();
imageButtonsPanel.add(replaceSoundButton);
imageButtonsPanel.add(replaceShapeButton);
imageButtonsPanel.add(replaceShapeUpdateBoundsButton);
imageButtonsPanel.add(replaceImageButton);
imageButtonsPanel.add(replaceImageAlphaButton);
imageButtonsPanel.add(prevFontsButton);
@@ -726,17 +750,22 @@ public class PreviewPanel extends JPersistentSplitPane implements TagEditorPanel
placeFreeTransformButton.setVisible(!readOnly);
}
public void setImageReplaceButtonVisible(boolean show, boolean showAlpha) {
public void setImageReplaceButtonVisible(boolean showImage, boolean showAlpha, boolean showShape, boolean showSound) {
if (readOnly) {
show = false;
showImage = false;
showAlpha = false;
showShape = false;
showSound = false;
}
replaceImageButton.setVisible(show);
replaceImageButton.setVisible(showImage);
replaceImageAlphaButton.setVisible(showAlpha);
replaceShapeButton.setVisible(showShape);
replaceShapeUpdateBoundsButton.setVisible(showShape);
replaceSoundButton.setVisible(showSound);
prevFontsButton.setVisible(false);
nextFontsButton.setVisible(false);
}
private void createAndRunTempSwf(TreeItem treeItem) {
try {
File extTempFile = File.createTempFile("ffdec_viewext_", ".swf");
Binary file not shown.

After

Width:  |  Height:  |  Size: 660 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

@@ -697,7 +697,7 @@ debug.break.reason.scriptLoaded = (Script loaded)
menu.file.start.debugpcode = Debug P-code
#after 7.1.2
button.replaceNoFill = Replace - Update bounds...
button.replaceNoFill = Replace - update bounds...
message.warning.svgImportExperimental = Not all SVG features are supported. Please check the log after import.
message.imported.swf = The SWF file uses assets from an imported SWF file:\n%url%\nDo you want the assets to be loaded from that URL?
@@ -697,7 +697,7 @@ debug.break.reason.scriptLoaded = (Script carregat)
menu.file.start.debugpcode = Depura el codi-P
#after 7.1.2
button.replaceNoFill = Substitueix - Actualitza els l\u00edmits...
button.replaceNoFill = Substitueix - actualitza els l\u00edmits...
message.warning.svgImportExperimental = No totes les caracter\u00edstiques SVG estan suportades. Comprova el registre despr\u00e9s d'importar, si et plau.
message.imported.swf = El fitxer SWF utilitza valors d'un fitxer SWF importat:\n%url%\nVols que els valors es carreguin des d'aquest URL?
@@ -695,7 +695,7 @@ debug.break.reason.scriptLoaded = (Script cargado)
menu.file.start.debugpcode = Depurar P-code
#after 7.1.2
button.replaceNoFill = Replace - L\u00edmites de actualizaci\u00f3n...
button.replaceNoFill = Replace - l\u00edmites de actualizaci\u00f3n...
message.warning.svgImportExperimental = No todas las catacter\u00edsticas de SVG est\u00e1n soportadas. Solo el modo de llenado de color s\u00f3lido es soportado. Por favor, compruebe la anotaciones despu\u00e9s de importar.
message.imported.swf = El archivo utiliza recursos de un archivo SWF importado: %url% Quiere que los recursos sean cargados desde dicha URL?
@@ -695,7 +695,7 @@ debug.break.reason.scriptLoaded = (Script charg\u00e9)
menu.file.start.debugpcode = D\u00e9boguage assembleur
#after 7.1.2
button.replaceNoFill = Remplacer - Mettre \u00e0 jour les limites...
button.replaceNoFill = Remplacer - mettre \u00e0 jour les limites...
message.warning.svgImportExperimental = Toutes les fonctionnalit\u00e9s SVG ne sont pas forc\u00e9ment support\u00e9es. V\u00e9rifiez le journal apr\u00e8s l'import.
message.imported.swf = Le fichier SWF utilise des propri\u00e9t\u00e9s du fichier import\u00e9 :\n%url%\nSouhaitez-vous charger les propri\u00e9t\u00e9s \u00e0 partir de cette URL ?
@@ -694,7 +694,7 @@ debug.break.reason.scriptLoaded = (Szkript bet\u00f6ltve)
menu.file.start.debugpcode = P-k\u00f3d hibakeres\u00e9s
#after 7.1.2
button.replaceNoFill = Csere - Hat\u00e1rok friss\u00edt\u00e9se...
button.replaceNoFill = Csere - hat\u00e1rok friss\u00edt\u00e9se...
message.warning.svgImportExperimental = Nem minden SVG funkci\u00f3 t\u00e1mogatott. Ellen\u0151rizze a hibanapl\u00f3t import\u00e1l\u00e1s ut\u00e1n.
message.imported.swf = Az SWF f\u00e1jl haszn\u00e1l dolgokat az import\u00e1lt SWF f\u00e1jlb\u00f3l:\n%url%\nSzeretn\u00e9 bet\u00f6lteni a megadott URL-r\u0151l?
@@ -696,7 +696,7 @@ debug.break.reason.scriptLoaded = (Script caricato)
menu.file.start.debugpcode = Debug P-code
# after 7.1.2
button.replaceNoFill = Sostituisci - Aggiorna limiti...
button.replaceNoFill = Sostituisci - aggiorna limiti...
message.warning.svgImportExperimental = Non tutte le funzioni SVG sono supportate. Controllare il registro dopo l'importazione.
message.imported.swf = Il file SWF utilizza asset da un file SWF importato:\n%url%\nCaricare gli asset da quell'indirizzo?
message.imported.swf.manually = Impossibile caricare SWF importato\n%url%\nFile o URL non esistente.\nSelezionare un file locale?
@@ -697,7 +697,7 @@ debug.break.reason.scriptLoaded = (Script loaded)
menu.file.start.debugpcode = Depurar P-code
#after 7.1.2
button.replaceNoFill = Substituir - Atualizar limites...
button.replaceNoFill = Substituir - atualizar limites...
message.warning.svgImportExperimental = Nem todos os recursos SVG s\u00e3o suportados. Por favor, verifique o log ap\u00f3s a importa\u00e7\u00e3o.
message.imported.swf = O arquivo SWF usa ativos de um arquivo SWF importado:\n%url%\nDeseja que os ativos sejam carregados dessa URL?
@@ -696,7 +696,7 @@ debug.break.reason.scriptLoaded = (Skript laddat)
menu.file.start.debugpcode = Debugga P-kod
#after 7.1.2
button.replaceNoFill = Ers\u00e4tt - Uppdaterings gr\u00e4nser...
button.replaceNoFill = Ers\u00e4tt - uppdaterings gr\u00e4nser...
message.warning.svgImportExperimental = Inte alla SVG funktioner st\u00f6ds. Sn\u00e4lla kontrollera loggen efter importering.
message.imported.swf = SWF-filen anv\u00e4nder assets fr\u00e5n en imported SWF-fil:\n%url%\nVill du att assets kommer att bli laddad fr\u00e5n den l\u00e4nken?
@@ -1123,7 +1123,7 @@ menu.file.start.debugpcode = Hata ay\u0131klama P kodu
button.replaceNoFill = De\u011fi\u015ftir - S\u0131n\u0131rlar\u0131 g\u00fcncelle ...
button.replaceNoFill = De\u011fi\u015ftir - s\u0131n\u0131rlar\u0131 g\u00fcncelle ...
message.warning.svgImportExperimental = T\u00fcm SVG \u00f6zellikleri desteklenmiyor. L\u00fctfen i\u00e7e aktarma yapt\u0131ktan sonra g\u00fcnl\u00fc\u011f\u00fc kontrol edin.