diff --git a/CHANGELOG.md b/CHANGELOG.md index c407c60d9..1d7843cfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. - [#2370] Setting for color and snap accuracy for guides, grid - [#2370] Dialogs for editing grid, guides and snapping - [#2453] SVG export/import - use image-rendering attribute for image smoothing +- Option to enter custom zoom level by clicking on zoom percentage label ### Fixed - [#2424] DefineEditText handling of letterSpacing, font size on incorrect values diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/zoom16.png b/src/com/jpexs/decompiler/flash/gui/graphics/zoom16.png new file mode 100644 index 000000000..3280a45d2 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/zoom16.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/zoom32.png b/src/com/jpexs/decompiler/flash/gui/graphics/zoom32.png new file mode 100644 index 000000000..47d2c7e4e Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/zoom32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/zoomfit32.png b/src/com/jpexs/decompiler/flash/gui/graphics/zoomfit32.png new file mode 100644 index 000000000..3edef938a Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/zoomfit32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/zoomin32.png b/src/com/jpexs/decompiler/flash/gui/graphics/zoomin32.png new file mode 100644 index 000000000..922c8ef9c Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/zoomin32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/zoomnone32.png b/src/com/jpexs/decompiler/flash/gui/graphics/zoomnone32.png new file mode 100644 index 000000000..bf2817347 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/zoomnone32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/graphics/zoomout32.png b/src/com/jpexs/decompiler/flash/gui/graphics/zoomout32.png new file mode 100644 index 000000000..afca30296 Binary files /dev/null and b/src/com/jpexs/decompiler/flash/gui/graphics/zoomout32.png differ diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties index 1683c6606..67ed31280 100644 --- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties +++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame.properties @@ -1044,4 +1044,8 @@ grid_options.show_grid = Show grid grid_options.edit = Edit grid... move_guide = Move guide -move_guide.position = Position: \ No newline at end of file +move_guide.position = Position: + +zoom = Zoom +zoom.hint = Zoom level. Click to change. +zoom.enter = Enter zoom percentage value: diff --git a/src/com/jpexs/decompiler/flash/gui/player/ZoomPanel.java b/src/com/jpexs/decompiler/flash/gui/player/ZoomPanel.java index 7a5f890db..ac4cf932b 100644 --- a/src/com/jpexs/decompiler/flash/gui/player/ZoomPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/player/ZoomPanel.java @@ -18,14 +18,18 @@ package com.jpexs.decompiler.flash.gui.player; import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.configuration.ConfigurationItemChangeListener; +import com.jpexs.decompiler.flash.ecma.EcmaNumberToString; import com.jpexs.decompiler.flash.gui.AppStrings; import com.jpexs.decompiler.flash.gui.GridDialog; import com.jpexs.decompiler.flash.gui.GuidesDialog; import com.jpexs.decompiler.flash.gui.Main; import com.jpexs.decompiler.flash.gui.PopupButton; import com.jpexs.decompiler.flash.gui.View; +import com.jpexs.decompiler.flash.gui.ViewMessages; import java.awt.FlowLayout; import java.awt.event.ActionEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Objects; @@ -129,6 +133,30 @@ public class ZoomPanel extends JPanel implements MediaDisplayListener { }; gridButton.setToolTipText(AppStrings.translate("button.grid_options")); + + percentLabel.setToolTipText(AppStrings.translate("zoom.hint")); + percentLabel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + double currentZoom = roundZoom(getRealZoom() * 100, 3); + String newZoomStr = ViewMessages.showInputDialog(ZoomPanel.this, AppStrings.translate("zoom.enter"), AppStrings.translate("zoom"), View.getIcon("zoom32"), EcmaNumberToString.stringFor(currentZoom)); + if (newZoomStr != null) { + try { + double newZoom = Double.parseDouble(newZoomStr) / 100; + if (newZoom <= 0) { + return; + } + realZoom = newZoom; + zoomToFit = false; + updateZoom(); + } catch (NumberFormatException nfe) { + //ignore + } + + } + } + }); + setLayout(new FlowLayout()); add(percentLabel); add(zoomInButton);