diff --git a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java index 2de3849bf..f9d6a5ecd 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java @@ -71,6 +71,7 @@ public class JadxSettings extends JadxCLIArgs { private boolean checkForUpdates = true; private boolean disableTooltipOnHover = false; private List recentProjects = new ArrayList<>(); + private float uiZoom = 1.0f; private String fontStr = ""; private String smaliFontStr = ""; private String editorTheme = ""; @@ -539,6 +540,14 @@ public class JadxSettings extends JadxCLIArgs { partialSync(settings -> settings.treeWidth = JadxSettings.this.treeWidth); } + public float getUiZoom() { + return uiZoom; + } + + public void setUiZoom(float uiZoom) { + this.uiZoom = uiZoom; + } + @JadxSettingsAdapter.GsonExclude private Font cachedFont = null; diff --git a/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java b/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java index 4e454c493..db811f313 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/ui/JadxSettingsWindow.java @@ -420,8 +420,16 @@ public class JadxSettingsWindow extends JDialog { mainWindow.loadSettings(); }); + JSpinner uiZoomSpinner = new JSpinner(new SpinnerNumberModel(settings.getUiZoom(), 0.1, 10.0, 0.25)); + uiZoomSpinner.addChangeListener(e -> { + float zoomValue = ((Double) uiZoomSpinner.getValue()).floatValue(); + settings.setUiZoom(zoomValue); + mainWindow.loadSettings(); + }); + SettingsGroup group = new SettingsGroup(NLS.str("preferences.appearance")); group.addRow(NLS.str("preferences.language"), languageCbx); + group.addRow(NLS.str("preferences.ui_zoom"), uiZoomSpinner); group.addRow(NLS.str("preferences.laf_theme"), lafCbx); group.addRow(NLS.str("preferences.theme"), themesCbx); JLabel fontLabel = group.addRow(getFontLabelStr(), fontBtn); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java index e32f0f379..c3459152c 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -70,8 +70,10 @@ import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.extras.FlatInspector; import com.formdev.flatlaf.extras.FlatUIDefaultsInspector; +import com.formdev.flatlaf.util.UIScale; import ch.qos.logback.classic.Level; @@ -263,7 +265,6 @@ public class MainWindow extends JFrame { JadxEventQueue.register(); resetCache(); FontUtils.registerBundledFonts(); - editorThemeManager.setTheme(settings.getEditorTheme()); initUI(); this.editorSyncManager = new EditorSyncManager(this, tabbedPane); this.backgroundExecutor = new BackgroundExecutor(settings, progressPane); @@ -1564,6 +1565,9 @@ public class MainWindow extends JFrame { private void updateUiSettings() { LafManager.updateLaf(settings); editorThemeManager.setTheme(settings.getEditorTheme()); + if (UIScale.setZoomFactor(settings.getUiZoom())) { + FlatLaf.updateUI(); + } Font font = settings.getFont(); Font largerFont = font.deriveFont(font.getSize() + 2.f); @@ -1579,7 +1583,6 @@ public class MainWindow extends JFrame { if (quickTabsTree != null) { quickTabsTree.loadSettings(); } - shortcutsController.loadSettings(); } diff --git a/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties b/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties index 7c0bd681e..e344b4f37 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties @@ -270,6 +270,7 @@ preferences.update_channel=Jadx-Updatekanal #preferences.disable_tooltip_on_hover=Disable tooltip on hover preferences.integerFormat=Ganzzahlformat #preferences.typeUpdatesCountLimit=Update type limit count +#preferences.ui_zoom=UI Zoom factor preferences.font=Schriftart ändern preferences.smali_font=Monospaced-Schriftart (Smali/Hex) preferences.laf_theme=Thema diff --git a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties index 6ddf0fe1e..5766087de 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties @@ -270,6 +270,7 @@ preferences.update_channel=Jadx update channel preferences.disable_tooltip_on_hover=Disable tooltip on hover preferences.integerFormat=Integer format preferences.typeUpdatesCountLimit=Update type limit count +preferences.ui_zoom=UI Zoom factor preferences.font=Editor font preferences.smali_font=Monospaced font (Smali/Hex) preferences.laf_theme=Theme diff --git a/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties b/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties index 70bddf708..ea584eeb0 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties @@ -270,6 +270,7 @@ preferences.raw_cfg=Generate RAW CFG graphs #preferences.disable_tooltip_on_hover=Disable tooltip on hover #preferences.integerFormat=Integer format #preferences.typeUpdatesCountLimit=Update type limit count +#preferences.ui_zoom=UI Zoom factor preferences.font=Fuente del editor #preferences.smali_font=Monospaced font (Smali/Hex) #preferences.laf_theme=Theme diff --git a/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties b/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties index a0b834ca9..371e1368c 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties @@ -270,6 +270,7 @@ preferences.raw_cfg=Hasilkan grafik CFG mentah #preferences.disable_tooltip_on_hover=Disable tooltip on hover preferences.integerFormat=Format bilangan bulat #preferences.typeUpdatesCountLimit=Update type limit count +#preferences.ui_zoom=UI Zoom factor preferences.font=Font editor preferences.smali_font=Font monospasi (Smali/Hex) preferences.laf_theme=Tema diff --git a/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties b/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties index 12491c03d..405235841 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties @@ -270,6 +270,7 @@ preferences.raw_cfg=RAW CFG 그래프 생성 #preferences.disable_tooltip_on_hover=Disable tooltip on hover #preferences.integerFormat=Integer format #preferences.typeUpdatesCountLimit=Update type limit count +#preferences.ui_zoom=UI Zoom factor preferences.font=에디터 글씨체 #preferences.smali_font=Monospaced font (Smali/Hex) preferences.laf_theme=테마 diff --git a/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties b/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties index 9ae539929..13b8ec700 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties @@ -270,6 +270,7 @@ preferences.raw_cfg=Gera gráficos CFG no formato RAW #preferences.disable_tooltip_on_hover=Disable tooltip on hover #preferences.integerFormat=Integer format #preferences.typeUpdatesCountLimit=Update type limit count +#preferences.ui_zoom=UI Zoom factor preferences.font=Fonte do editor #preferences.smali_font=Monospaced font (Smali/Hex) preferences.laf_theme=Tema diff --git a/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties b/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties index aaca46a64..83fbf5776 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties @@ -270,6 +270,7 @@ preferences.update_channel=Канал обновления Jadx #preferences.disable_tooltip_on_hover=Disable tooltip on hover preferences.integerFormat=Формат чисел #preferences.typeUpdatesCountLimit=Update type limit count +#preferences.ui_zoom=UI Zoom factor preferences.font=Шрифт редактора Java preferences.smali_font=Шрифт smali/HEX редактора preferences.laf_theme=Тема приложения diff --git a/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties b/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties index 8e6886707..418403524 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties @@ -270,6 +270,7 @@ preferences.update_channel=Jadx 更新通道 preferences.disable_tooltip_on_hover=禁用悬停提示 preferences.integerFormat=数值格式化 preferences.typeUpdatesCountLimit=更新类型限制数量 +#preferences.ui_zoom=UI Zoom factor preferences.font=编辑器字体 preferences.smali_font=等宽字体(Smali/Hex) preferences.laf_theme=主题 diff --git a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties index 927d4c2b4..b670987be 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties @@ -270,6 +270,7 @@ preferences.update_channel=Jadx 更新頻道 #preferences.disable_tooltip_on_hover=Disable tooltip on hover preferences.integerFormat=整數模式 #preferences.typeUpdatesCountLimit=Update type limit count +#preferences.ui_zoom=UI Zoom factor preferences.font=編輯器字型 preferences.smali_font=等寬字型 (Smali/Hex) preferences.laf_theme=主題