From 57fae4dae67465a83db70495963a85985dff10bd Mon Sep 17 00:00:00 2001 From: Iscle Date: Fri, 21 Feb 2025 04:18:00 +0100 Subject: [PATCH] feat(gui): open the summary tab automatically when the project is opened --- .../main/java/jadx/gui/settings/JadxSettings.java | 15 ++++++++++++++- .../jadx/gui/settings/ui/JadxSettingsWindow.java | 5 +++++ .../src/main/java/jadx/gui/ui/MainWindow.java | 12 ++++++++++++ .../main/resources/i18n/Messages_de_DE.properties | 1 + .../main/resources/i18n/Messages_en_US.properties | 1 + .../main/resources/i18n/Messages_es_ES.properties | 1 + .../main/resources/i18n/Messages_id_ID.properties | 1 + .../main/resources/i18n/Messages_ko_KR.properties | 1 + .../main/resources/i18n/Messages_pt_BR.properties | 1 + .../main/resources/i18n/Messages_ru_RU.properties | 1 + .../main/resources/i18n/Messages_zh_CN.properties | 1 + .../main/resources/i18n/Messages_zh_TW.properties | 1 + 12 files changed, 40 insertions(+), 1 deletion(-) 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 414bd0d4dfc..c114ae1d5d3 100644 --- a/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java +++ b/jadx-gui/src/main/java/jadx/gui/settings/JadxSettings.java @@ -54,7 +54,7 @@ public class JadxSettings extends JadxCLIArgs { private static final Path USER_HOME = Paths.get(System.getProperty("user.home")); private static final int RECENT_PROJECTS_COUNT = 30; - private static final int CURRENT_SETTINGS_VERSION = 22; + private static final int CURRENT_SETTINGS_VERSION = 23; private static final Font DEFAULT_FONT = new RSyntaxTextArea().getFont(); @@ -127,6 +127,7 @@ public void setSaveOption(SAVEOPTION saveOption) { private @Nullable String cacheDir = null; // null - default (system), "." - at project dir, other - custom private boolean jumpOnDoubleClick = true; + private boolean showSummaryOnOpen = true; private XposedCodegenLanguage xposedCodegenLanguage = XposedCodegenLanguage.JAVA; private JadxUpdateChannel jadxUpdateChannel = JadxUpdateChannel.STABLE; @@ -759,6 +760,14 @@ public void setJumpOnDoubleClick(boolean jumpOnDoubleClick) { this.jumpOnDoubleClick = jumpOnDoubleClick; } + public boolean isShowSummaryOnOpen() { + return showSummaryOnOpen; + } + + public void setShowSummaryOnOpen(boolean showSummaryOnOpen) { + this.showSummaryOnOpen = showSummaryOnOpen; + } + public boolean isDockLogViewer() { return dockLogViewer; } @@ -854,6 +863,10 @@ private void upgradeSettings(int fromVersion) { migrateUseSourceNameAsClassNameAlias(); fromVersion++; } + if (fromVersion == 22) { + showSummaryOnOpen = true; + fromVersion++; + } if (fromVersion != CURRENT_SETTINGS_VERSION) { LOG.warn("Incorrect settings upgrade. Expected version: {}, got: {}", CURRENT_SETTINGS_VERSION, fromVersion); } 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 0e7bbcfc2c0..c2903dd6cd3 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 @@ -629,6 +629,10 @@ private SettingsGroup makeOtherGroup() { jumpOnDoubleClick.setSelected(settings.isJumpOnDoubleClick()); jumpOnDoubleClick.addItemListener(e -> settings.setJumpOnDoubleClick(e.getStateChange() == ItemEvent.SELECTED)); + JCheckBox showSummaryOnOpen = new JCheckBox(); + showSummaryOnOpen.setSelected(settings.isShowSummaryOnOpen()); + showSummaryOnOpen.addItemListener(e -> settings.setShowSummaryOnOpen(e.getStateChange() == ItemEvent.SELECTED)); + JCheckBox useAltFileDialog = new JCheckBox(); useAltFileDialog.setSelected(settings.isUseAlternativeFileDialog()); useAltFileDialog.addItemListener(e -> settings.setUseAlternativeFileDialog(e.getStateChange() == ItemEvent.SELECTED)); @@ -670,6 +674,7 @@ private SettingsGroup makeOtherGroup() { SettingsGroup group = new SettingsGroup(NLS.str("preferences.other")); group.addRow(NLS.str("preferences.lineNumbersMode"), lineNumbersMode); group.addRow(NLS.str("preferences.jumpOnDoubleClick"), jumpOnDoubleClick); + group.addRow(NLS.str("preferences.showSummaryOnOpen"), showSummaryOnOpen); group.addRow(NLS.str("preferences.useAlternativeFileDialog"), useAltFileDialog); group.addRow(NLS.str("preferences.cfg"), cfg); group.addRow(NLS.str("preferences.raw_cfg"), rawCfg); 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 058448130f9..e2dcdcd8447 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -656,6 +656,9 @@ private void onOpen() { BreakpointManager.init(project.getFilePaths().get(0).toAbsolutePath().getParent()); treeExpansionService.load(project.getTreeExpansions()); List openTabs = project.getOpenTabs(this); + if (openTabs.isEmpty() && settings.isShowSummaryOnOpen()) { + openSummaryTab(); + } backgroundExecutor.execute(NLS.str("progress.load"), () -> preLoadOpenTabs(openTabs), status -> { @@ -1552,6 +1555,15 @@ private void closeWindow() { System.exit(0); } + private void openSummaryTab() { + for (JNode node : treeRoot.getCustomNodes()) { + if (node.getClass() == SummaryNode.class) { + tabsController.codeJump(node); + break; + } + } + } + private void saveOpenTabs() { project.saveOpenTabs(tabsController.getEditorViewStates()); } 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 69cf2093e65..045362b40c0 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_de_DE.properties @@ -204,6 +204,7 @@ preferences.other=Andere preferences.language=Sprache preferences.lineNumbersMode=Editor Zeilennummern-Modus preferences.jumpOnDoubleClick=Sprung bei Doppelklick aktivieren +#preferences.showSummaryOnOpen=Show summary on open #preferences.useAlternativeFileDialog=Use alternative file dialog preferences.check_for_updates=Nach Updates beim Start suchen preferences.useDx=dx/d8 zur Konvertierung von Java Bytecode verwenden 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 58fbee61ef7..95480168bc6 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_en_US.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_en_US.properties @@ -204,6 +204,7 @@ preferences.other=Other preferences.language=Language preferences.lineNumbersMode=Editor line numbers mode preferences.jumpOnDoubleClick=Enable jump on double click +preferences.showSummaryOnOpen=Show summary on open preferences.useAlternativeFileDialog=Use alternative file dialog preferences.check_for_updates=Check for updates on startup preferences.useDx=Use dx/d8 to convert java bytecode 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 338ec6c661c..a1b4eeaefba 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_es_ES.properties @@ -204,6 +204,7 @@ preferences.other=Otros preferences.language=Idioma #preferences.lineNumbersMode=Editor line numbers mode #preferences.jumpOnDoubleClick=Enable jump on double click +#preferences.showSummaryOnOpen=Show summary on open #preferences.useAlternativeFileDialog=Use alternative file dialog preferences.check_for_updates=Buscar actualizaciones al iniciar #preferences.useDx=Use dx/d8 to convert java bytecode 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 352b917d883..0759d6573eb 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_id_ID.properties @@ -204,6 +204,7 @@ preferences.other=Lainnya preferences.language=Bahasa preferences.lineNumbersMode=Mode nomor baris editor preferences.jumpOnDoubleClick=Aktifkan lompat saat dua kali klik +#preferences.showSummaryOnOpen=Show summary on open preferences.useAlternativeFileDialog=Gunakan dialog berkas alternatif preferences.check_for_updates=Periksa pembaruan saat memulai preferences.useDx=Gunakan dx/d8 untuk mengonversi bytecode Java 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 f3be41889a1..df5b3176332 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_ko_KR.properties @@ -204,6 +204,7 @@ preferences.other=기타 preferences.language=언어 preferences.lineNumbersMode=편집기 줄 번호 모드 preferences.jumpOnDoubleClick=더블 클릭 시 점프 활성화 +#preferences.showSummaryOnOpen=Show summary on open #preferences.useAlternativeFileDialog=Use alternative file dialog preferences.check_for_updates=시작시 업데이트 확인 preferences.useDx=dx/d8을 사용하여 Java 바이트 코드 변환 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 673e63e3042..4cde2ddfde3 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_pt_BR.properties @@ -204,6 +204,7 @@ preferences.other=Outro preferences.language=Idioma preferences.lineNumbersMode=Modo do contador de linhas do editor preferences.jumpOnDoubleClick=Ativar salto no duplo clique +#preferences.showSummaryOnOpen=Show summary on open #preferences.useAlternativeFileDialog=Use alternative file dialog preferences.check_for_updates=Verificar por atualizações ao inicializar preferences.useDx=Usar dx/d8 para converter bytecode Java 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 220a6b00ae7..b245daa2f0c 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_ru_RU.properties @@ -204,6 +204,7 @@ preferences.other=Прочее preferences.language=Язык preferences.lineNumbersMode=Тип переноса строк preferences.jumpOnDoubleClick=Переход по двойному клику +#preferences.showSummaryOnOpen=Show summary on open preferences.useAlternativeFileDialog=Использовать альтернативный файлпикер preferences.check_for_updates=Проверять наличие новых версий preferences.useDx=DX/D8 для конвертации java байткода 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 1ce6591a7f8..3101fde0487 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_CN.properties @@ -204,6 +204,7 @@ preferences.other=其他 preferences.language=语言 preferences.lineNumbersMode=编辑器行号模式 preferences.jumpOnDoubleClick=启用双击跳转 +#preferences.showSummaryOnOpen=Show summary on open preferences.useAlternativeFileDialog=使用选择文件对话框 preferences.check_for_updates=启动时检查更新 preferences.useDx=使用 dx/d8 来转换java字节码 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 106d14c71cb..b22861f0343 100644 --- a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties +++ b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties @@ -204,6 +204,7 @@ preferences.other=其他 preferences.language=語言 preferences.lineNumbersMode=編輯器行號模式 preferences.jumpOnDoubleClick=啟用點擊兩下時跳躍 +#preferences.showSummaryOnOpen=Show summary on open preferences.useAlternativeFileDialog=使用替代檔案對話框 preferences.check_for_updates=啟動時檢查更新 preferences.useDx=使用 dx/d8 來轉換 Java 位元組碼