feat(gui): add option for UI zoom factor (#2720)

This commit is contained in:
Skylot
2025-12-10 18:43:54 +00:00
parent 9fba709687
commit 1aa16c4664
12 changed files with 31 additions and 2 deletions
@@ -71,6 +71,7 @@ public class JadxSettings extends JadxCLIArgs {
private boolean checkForUpdates = true;
private boolean disableTooltipOnHover = false;
private List<Path> 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;
@@ -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);
@@ -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();
}
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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=테마
@@ -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
@@ -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=Тема приложения
@@ -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=主题
@@ -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=主題