From ee12f0bd184f04ab04c09fea7ac31580cd50b897 Mon Sep 17 00:00:00 2001 From: Yaroslav <43380144+MrIkso@users.noreply.github.com> Date: Wed, 4 Aug 2021 20:40:49 +0300 Subject: [PATCH] feat(gui): use SVG icons, xml resources impovements (PR #1221) * fix(xml): add more file based resources type to skip * fix(res): fix #1060, styles might contain dots in name * fix(res): use lowercase name on deobfuscated\renamed resources names and id in hex format * feat(gui): update gui under FlatLaf * fix(gui): use FlatSVGIcon to fix icons brightness difference * fix(gui): use source lines only decompiled java code Co-authored-by: MrIkso --- .../utils/android/AndroidResourcesUtils.java | 2 +- .../java/jadx/core/xmlgen/ResTableParser.java | 17 +++--- .../main/java/jadx/core/xmlgen/ResXmlGen.java | 15 ++++- .../java/jadx/core/xmlgen/XmlGenUtils.java | 2 +- .../jadx/core/xmlgen/entry/ResourceEntry.java | 2 +- jadx-gui/build.gradle | 2 + .../gui/device/debugger/DebugController.java | 6 +- .../jadx/gui/jobs/BackgroundExecutor.java | 2 +- .../gui/plugins/quark/QuarkReportNode.java | 6 +- .../gui/plugins/quark/QuarkReportPanel.java | 2 +- .../java/jadx/gui/treemodel/ApkSignature.java | 6 +- .../main/java/jadx/gui/treemodel/JClass.java | 24 ++++---- .../main/java/jadx/gui/treemodel/JField.java | 18 ++---- .../main/java/jadx/gui/treemodel/JMethod.java | 46 ++++++++++++---- .../main/java/jadx/gui/treemodel/JNode.java | 2 +- .../java/jadx/gui/treemodel/JPackage.java | 2 +- .../java/jadx/gui/treemodel/JResource.java | 45 +++++++++------ .../main/java/jadx/gui/treemodel/JRoot.java | 2 +- .../java/jadx/gui/treemodel/JSources.java | 2 +- .../src/main/java/jadx/gui/ui/MainWindow.java | 47 +++++++++------- .../main/java/jadx/gui/ui/TabComponent.java | 5 +- .../src/main/java/jadx/gui/ui/TabbedPane.java | 11 ++-- .../gui/ui/codearea/AbstractCodeArea.java | 5 +- .../ui/codearea/AbstractCodeContentPanel.java | 2 +- .../java/jadx/gui/ui/codearea/CodeArea.java | 9 ++- .../java/jadx/gui/ui/codearea/CodePanel.java | 40 +++++++------- .../jadx/gui/ui/codearea/CommentAction.java | 2 +- .../gui/ui/codearea/CommentSearchAction.java | 2 +- .../jadx/gui/ui/codearea/FindUsageAction.java | 2 +- .../jadx/gui/ui/codearea/LineNumbers.java | 19 +++++-- .../jadx/gui/ui/codearea/RenameAction.java | 2 +- .../java/jadx/gui/ui/codearea/SearchBar.java | 18 +++--- .../java/jadx/gui/ui/codearea/SmaliArea.java | 10 ++-- .../jadx/gui/ui/{ => dialog}/ADBDialog.java | 8 ++- .../jadx/gui/ui/{ => dialog}/AboutDialog.java | 4 +- .../gui/ui/{ => dialog}/CommentDialog.java | 2 +- .../ui/{ => dialog}/CommonSearchDialog.java | 5 +- .../gui/ui/{ => dialog}/ExcludePkgDialog.java | 9 +-- .../LogViewerDialog.java} | 7 ++- .../gui/ui/{ => dialog}/RenameDialog.java | 5 +- .../gui/ui/{ => dialog}/SearchDialog.java | 3 +- .../gui/ui/{ => dialog}/SetValueDialog.java | 5 +- .../jadx/gui/ui/{ => dialog}/UsageDialog.java | 3 +- .../jadx/gui/ui/{ => panel}/ContentPanel.java | 3 +- .../jadx/gui/ui/{ => panel}/HtmlPanel.java | 3 +- .../gui/ui/{ => panel}/IDebugController.java | 5 +- .../jadx/gui/ui/{ => panel}/ImagePanel.java | 3 +- .../gui/ui/{ => panel}/JDebuggerPanel.java | 29 +++++----- .../gui/ui/{ => panel}/ProgressPanel.java | 5 +- .../ui/{ => popupmenu}/JPackagePopupMenu.java | 7 ++- .../ui/{ => popupmenu}/VarTreePopupMenu.java | 6 +- .../main/java/jadx/gui/utils/CacheObject.java | 2 +- .../main/java/jadx/gui/utils/LafManager.java | 26 ++++----- .../src/main/java/jadx/gui/utils/UiUtils.java | 52 ++++++------------ .../gui/utils/search/TextSearchIndex.java | 20 +++---- .../main/resources/icons-16/abstract_co.png | Bin 187 -> 0 bytes .../resources/icons-16/annotation_obj.png | Bin 481 -> 0 bytes .../main/resources/icons-16/arrow_down.png | Bin 379 -> 0 bytes .../src/main/resources/icons-16/arrow_up.png | Bin 372 -> 0 bytes .../main/resources/icons-16/breakpoint.png | Bin 700 -> 0 bytes .../icons-16/breakpoint_disabled.png | Bin 504 -> 0 bytes .../resources/icons-16/certificate_obj.png | Bin 569 -> 0 bytes .../src/main/resources/icons-16/cf_obj.png | Bin 308 -> 0 bytes .../resources/icons-16/class_default_obj.png | Bin 812 -> 0 bytes .../src/main/resources/icons-16/class_obj.png | Bin 774 -> 0 bytes .../main/resources/icons-16/constr_ovr.png | Bin 180 -> 0 bytes .../src/main/resources/icons-16/cross.png | Bin 655 -> 0 bytes .../main/resources/icons-16/cross_grayed.png | Bin 731 -> 0 bytes .../main/resources/icons-16/database_save.png | Bin 755 -> 0 bytes .../src/main/resources/icons-16/debugger.png | Bin 774 -> 0 bytes .../src/main/resources/icons-16/device.png | Bin 813 -> 0 bytes .../main/resources/icons-16/disk_multiple.png | Bin 691 -> 0 bytes .../icons-16/empty_logical_package_obj.png | Bin 352 -> 0 bytes .../resources/icons-16/empty_pack_obj.png | Bin 325 -> 0 bytes .../src/main/resources/icons-16/enum_obj.png | Bin 513 -> 0 bytes .../src/main/resources/icons-16/error_co.png | Bin 161 -> 0 bytes .../resources/icons-16/field_default_obj.png | Bin 218 -> 0 bytes .../resources/icons-16/field_private_obj.png | Bin 177 -> 0 bytes .../icons-16/field_protected_obj.png | Bin 222 -> 0 bytes .../resources/icons-16/field_public_obj.png | Bin 221 -> 0 bytes .../src/main/resources/icons-16/file_obj.png | Bin 713 -> 0 bytes .../src/main/resources/icons-16/final_co.png | Bin 159 -> 0 bytes .../src/main/resources/icons-16/folder.png | Bin 537 -> 0 bytes .../main/resources/icons-16/folder_add.png | Bin 668 -> 0 bytes .../src/main/resources/icons-16/icon_back.png | Bin 422 -> 0 bytes .../main/resources/icons-16/icon_forward.png | Bin 403 -> 0 bytes .../main/resources/icons-16/icon_quark.png | Bin 1086 -> 0 bytes .../icons-16/innerclass_private_obj.png | Bin 797 -> 0 bytes .../icons-16/innerclass_protected_obj.png | Bin 804 -> 0 bytes .../src/main/resources/icons-16/int_obj.png | Bin 745 -> 0 bytes .../src/main/resources/icons-16/jadx-logo.png | Bin 814 -> 0 bytes .../resources/icons-16/java_model_obj.png | Bin 319 -> 0 bytes .../src/main/resources/icons-16/java_ovr.png | Bin 176 -> 0 bytes .../src/main/resources/icons-16/jcu_obj.png | Bin 738 -> 0 bytes .../main/resources/icons-16/library_obj.png | Bin 461 -> 0 bytes .../src/main/resources/icons-16/lock_edit.png | Bin 861 -> 0 bytes .../src/main/resources/icons-16/magnifier.png | Bin 615 -> 0 bytes .../main/resources/icons-16/methdef_obj.png | Bin 290 -> 0 bytes .../main/resources/icons-16/methpri_obj.png | Bin 292 -> 0 bytes .../main/resources/icons-16/methpro_obj.png | Bin 299 -> 0 bytes .../main/resources/icons-16/methpub_obj.png | Bin 325 -> 0 bytes .../src/main/resources/icons-16/native_co.png | Bin 177 -> 0 bytes .../main/resources/icons-16/package_obj.png | Bin 345 -> 0 bytes .../resources/icons-16/packagefolder_obj.png | Bin 421 -> 0 bytes .../src/main/resources/icons-16/pause.png | Bin 582 -> 0 bytes .../src/main/resources/icons-16/process.png | Bin 653 -> 0 bytes .../src/main/resources/icons-16/report.png | Bin 649 -> 0 bytes .../src/main/resources/icons-16/rerun.png | Bin 685 -> 0 bytes jadx-gui/src/main/resources/icons-16/run.png | Bin 395 -> 0 bytes .../src/main/resources/icons-16/static_co.png | Bin 174 -> 0 bytes .../src/main/resources/icons-16/step_into.png | Bin 349 -> 0 bytes .../src/main/resources/icons-16/step_out.png | Bin 516 -> 0 bytes .../src/main/resources/icons-16/step_over.png | Bin 379 -> 0 bytes jadx-gui/src/main/resources/icons-16/stop.png | Bin 700 -> 0 bytes .../src/main/resources/icons-16/stop_gray.png | Bin 504 -> 0 bytes jadx-gui/src/main/resources/icons-16/sync.png | Bin 282 -> 0 bytes .../src/main/resources/icons-16/synch_co.png | Bin 254 -> 0 bytes .../main/resources/icons-16/table_edit.png | Bin 744 -> 0 bytes .../main/resources/icons-16/template_obj.png | Bin 493 -> 0 bytes .../main/resources/icons-16/transient_co.png | Bin 178 -> 0 bytes .../main/resources/icons-16/volatile_co.png | Bin 178 -> 0 bytes jadx-gui/src/main/resources/icons-16/wand.png | Bin 570 -> 0 bytes .../src/main/resources/icons-16/wrench.png | Bin 610 -> 0 bytes .../main/resources/icons/adb/addToWatch.svg | 12 ++++ .../resources/icons/adb/androidDevice.svg | 4 ++ .../icons/debugger/db_disabled_breakpoint.svg | 9 +++ .../icons/debugger/db_set_breakpoint.svg | 9 +++ .../main/resources/icons/debugger/execute.svg | 4 ++ .../main/resources/icons/debugger/rerun.svg | 7 +++ .../main/resources/icons/debugger/stepOut.svg | 7 +++ .../main/resources/icons/debugger/suspend.svg | 4 ++ .../resources/icons/debugger/suspendGray.svg | 4 ++ .../resources/icons/debugger/threadFrozen.svg | 7 +++ .../resources/icons/debugger/traceInto.svg | 7 +++ .../resources/icons/debugger/traceOver.svg | 7 +++ .../resources/icons/nodes/ImagesFileType.svg | 10 ++++ .../resources/icons/nodes/abstractClass.svg | 20 +++++++ .../resources/icons/nodes/abstractMethod.svg | 20 +++++++ .../resources/icons/nodes/annotationtype.svg | 7 +++ .../main/resources/icons/nodes/binaryFile.svg | 10 ++++ .../src/main/resources/icons/nodes/class.svg | 7 +++ .../icons/nodes/constructorMethod.svg | 7 +++ .../src/main/resources/icons/nodes/enum.svg | 7 +++ .../src/main/resources/icons/nodes/field.svg | 7 +++ .../resources/icons/nodes/file_any_type.svg | 7 +++ .../main/resources/icons/nodes/finalMark.svg | 4 ++ .../src/main/resources/icons/nodes/folder.svg | 4 ++ .../main/resources/icons/nodes/interface.svg | 7 +++ .../src/main/resources/icons/nodes/java.svg | 9 +++ .../main/resources/icons/nodes/manifest.svg | 10 ++++ .../src/main/resources/icons/nodes/method.svg | 7 +++ .../resources/icons/nodes/methodReference.svg | 8 +++ .../main/resources/icons/nodes/package.svg | 4 ++ .../resources/icons/nodes/packageClasses.svg | 7 +++ .../resources/icons/nodes/privateClass.svg | 7 +++ .../resources/icons/nodes/privateField.svg | 8 +++ .../resources/icons/nodes/privateMethod.svg | 7 +++ .../resources/icons/nodes/protectedClass.svg | 7 +++ .../resources/icons/nodes/protectedField.svg | 8 +++ .../resources/icons/nodes/protectedMethod.svg | 7 +++ .../resources/icons/nodes/publicClass.svg | 7 +++ .../resources/icons/nodes/publicField.svg | 8 +++ .../resources/icons/nodes/publicMethod.svg | 7 +++ .../resources/icons/nodes/resourceBundle.svg | 9 +++ .../resources/icons/nodes/resourcesRoot.svg | 10 ++++ .../icons/nodes/rootPackageFolder.svg | 8 +++ .../main/resources/icons/nodes/staticMark.svg | 4 ++ .../resources/icons/nodes/styleKeyPack.svg | 9 +++ .../main/resources/icons/nodes/unknown.svg | 8 +++ .../src/main/resources/icons/nodes/xml.svg | 10 ++++ .../src/main/resources/icons/ui/Module.svg | 7 +++ .../src/main/resources/icons/ui/addFile.svg | 6 ++ .../src/main/resources/icons/ui/analyze.svg | 11 ++++ .../src/main/resources/icons/ui/bottom.svg | 4 ++ .../src/main/resources/icons/ui/close.svg | 4 ++ .../main/resources/icons/ui/closeHovered.svg | 4 ++ .../resources/icons/ui/ejbFinderMethod.svg | 9 +++ jadx-gui/src/main/resources/icons/ui/exit.svg | 7 +++ .../src/main/resources/icons/ui/export.svg | 11 ++++ jadx-gui/src/main/resources/icons/ui/find.svg | 7 +++ .../main/resources/icons/ui/helmChartLock.svg | 5 ++ jadx-gui/src/main/resources/icons/ui/left.svg | 4 ++ .../main/resources/icons/ui/logVerbose.svg | 3 + .../main/resources/icons/ui/menu-saveall.svg | 4 ++ .../main/resources/icons/ui/moduleGroup.svg | 10 ++++ .../src/main/resources/icons/ui/openDisk.svg | 4 ++ .../main/resources/icons/ui/pagination.svg | 3 + .../src/main/resources/icons/ui/right.svg | 4 ++ .../src/main/resources/icons/ui/settings.svg | 4 ++ .../src/main/resources/icons/ui/showInfos.svg | 4 ++ .../main/resources/icons/ui/startDebugger.svg | 4 ++ jadx-gui/src/main/resources/icons/ui/top.svg | 4 ++ .../main/resources/icons/ui/usagesFinder.svg | 7 +++ 193 files changed, 825 insertions(+), 261 deletions(-) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/ADBDialog.java (98%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/AboutDialog.java (97%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/CommentDialog.java (99%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/CommonSearchDialog.java (99%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/ExcludePkgDialog.java (96%) rename jadx-gui/src/main/java/jadx/gui/ui/{LogViewer.java => dialog/LogViewerDialog.java} (94%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/RenameDialog.java (98%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/SearchDialog.java (99%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/SetValueDialog.java (97%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => dialog}/UsageDialog.java (97%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => panel}/ContentPanel.java (94%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => panel}/HtmlPanel.java (95%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => panel}/IDebugController.java (82%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => panel}/ImagePanel.java (97%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => panel}/JDebuggerPanel.java (94%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => panel}/ProgressPanel.java (96%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => popupmenu}/JPackagePopupMenu.java (95%) rename jadx-gui/src/main/java/jadx/gui/ui/{ => popupmenu}/VarTreePopupMenu.java (94%) delete mode 100644 jadx-gui/src/main/resources/icons-16/abstract_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/annotation_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/arrow_down.png delete mode 100644 jadx-gui/src/main/resources/icons-16/arrow_up.png delete mode 100644 jadx-gui/src/main/resources/icons-16/breakpoint.png delete mode 100644 jadx-gui/src/main/resources/icons-16/breakpoint_disabled.png delete mode 100644 jadx-gui/src/main/resources/icons-16/certificate_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/cf_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/class_default_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/class_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/constr_ovr.png delete mode 100644 jadx-gui/src/main/resources/icons-16/cross.png delete mode 100644 jadx-gui/src/main/resources/icons-16/cross_grayed.png delete mode 100644 jadx-gui/src/main/resources/icons-16/database_save.png delete mode 100644 jadx-gui/src/main/resources/icons-16/debugger.png delete mode 100644 jadx-gui/src/main/resources/icons-16/device.png delete mode 100644 jadx-gui/src/main/resources/icons-16/disk_multiple.png delete mode 100644 jadx-gui/src/main/resources/icons-16/empty_logical_package_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/empty_pack_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/enum_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/error_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/field_default_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/field_private_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/field_protected_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/field_public_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/file_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/final_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/folder.png delete mode 100644 jadx-gui/src/main/resources/icons-16/folder_add.png delete mode 100644 jadx-gui/src/main/resources/icons-16/icon_back.png delete mode 100644 jadx-gui/src/main/resources/icons-16/icon_forward.png delete mode 100644 jadx-gui/src/main/resources/icons-16/icon_quark.png delete mode 100644 jadx-gui/src/main/resources/icons-16/innerclass_private_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/innerclass_protected_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/int_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/jadx-logo.png delete mode 100644 jadx-gui/src/main/resources/icons-16/java_model_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/java_ovr.png delete mode 100644 jadx-gui/src/main/resources/icons-16/jcu_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/library_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/lock_edit.png delete mode 100644 jadx-gui/src/main/resources/icons-16/magnifier.png delete mode 100644 jadx-gui/src/main/resources/icons-16/methdef_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/methpri_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/methpro_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/methpub_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/native_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/package_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/packagefolder_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/pause.png delete mode 100644 jadx-gui/src/main/resources/icons-16/process.png delete mode 100644 jadx-gui/src/main/resources/icons-16/report.png delete mode 100644 jadx-gui/src/main/resources/icons-16/rerun.png delete mode 100644 jadx-gui/src/main/resources/icons-16/run.png delete mode 100644 jadx-gui/src/main/resources/icons-16/static_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/step_into.png delete mode 100644 jadx-gui/src/main/resources/icons-16/step_out.png delete mode 100644 jadx-gui/src/main/resources/icons-16/step_over.png delete mode 100644 jadx-gui/src/main/resources/icons-16/stop.png delete mode 100644 jadx-gui/src/main/resources/icons-16/stop_gray.png delete mode 100644 jadx-gui/src/main/resources/icons-16/sync.png delete mode 100644 jadx-gui/src/main/resources/icons-16/synch_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/table_edit.png delete mode 100644 jadx-gui/src/main/resources/icons-16/template_obj.png delete mode 100644 jadx-gui/src/main/resources/icons-16/transient_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/volatile_co.png delete mode 100644 jadx-gui/src/main/resources/icons-16/wand.png delete mode 100644 jadx-gui/src/main/resources/icons-16/wrench.png create mode 100644 jadx-gui/src/main/resources/icons/adb/addToWatch.svg create mode 100644 jadx-gui/src/main/resources/icons/adb/androidDevice.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/db_disabled_breakpoint.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/db_set_breakpoint.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/execute.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/rerun.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/stepOut.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/suspend.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/suspendGray.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/threadFrozen.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/traceInto.svg create mode 100644 jadx-gui/src/main/resources/icons/debugger/traceOver.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/ImagesFileType.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/abstractClass.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/abstractMethod.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/annotationtype.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/binaryFile.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/class.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/constructorMethod.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/enum.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/field.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/file_any_type.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/finalMark.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/folder.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/interface.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/java.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/manifest.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/method.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/methodReference.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/package.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/packageClasses.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/privateClass.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/privateField.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/privateMethod.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/protectedClass.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/protectedField.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/protectedMethod.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/publicClass.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/publicField.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/publicMethod.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/resourceBundle.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/resourcesRoot.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/rootPackageFolder.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/staticMark.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/styleKeyPack.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/unknown.svg create mode 100644 jadx-gui/src/main/resources/icons/nodes/xml.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/Module.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/addFile.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/analyze.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/bottom.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/close.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/closeHovered.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/ejbFinderMethod.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/exit.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/export.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/find.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/helmChartLock.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/left.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/logVerbose.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/menu-saveall.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/moduleGroup.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/openDisk.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/pagination.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/right.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/settings.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/showInfos.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/startDebugger.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/top.svg create mode 100644 jadx-gui/src/main/resources/icons/ui/usagesFinder.svg diff --git a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java index cd9447fcc..ea0395b12 100644 --- a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java @@ -80,7 +80,7 @@ public class AndroidResourcesUtils { @SuppressWarnings("RedundantCast") public static boolean handleResourceFieldValue(ClassNode cls, ICodeWriter code, EncodedValue encodedValue) { if (encodedValue.getType() == EncodedType.ENCODED_INT && isResourceClass(cls)) { - code.add(String.format("0x%X", ((Integer) encodedValue.getValue()))); + code.add(String.format("0x%08x", ((Integer) encodedValue.getValue()))); return true; } return false; diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java index 8b8c797ad..087e72232 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java @@ -191,7 +191,7 @@ public class ResTableParser extends CommonBinaryParser { } private String makeNewKeyName(int idx) { - return "JADX_DEOBF_" + idx; + return String.format("jadx_deobf_0x%08x", idx); } @SuppressWarnings("unused") @@ -251,7 +251,7 @@ public class ResTableParser extends CommonBinaryParser { int resRef = pkg.getId() << 24 | typeId << 16 | entryId; String typeName = pkg.getTypeStrings()[typeId - 1]; String origKeyName = pkg.getKeyStrings()[key]; - ResourceEntry newResEntry = new ResourceEntry(resRef, pkg.getName(), typeName, getResName(resRef, origKeyName), config); + ResourceEntry newResEntry = new ResourceEntry(resRef, pkg.getName(), typeName, getResName(typeName, resRef, origKeyName), config); ResourceEntry prevResEntry = resStorage.searchEntryWithSameName(newResEntry); if (prevResEntry != null) { newResEntry = newResEntry.copyWithId(); @@ -280,7 +280,7 @@ public class ResTableParser extends CommonBinaryParser { resStorage.add(newResEntry); } - private String getResName(int resRef, String origKeyName) { + private String getResName(String typeName, int resRef, String origKeyName) { if (this.useRawResName) { return origKeyName; } @@ -288,14 +288,17 @@ public class ResTableParser extends CommonBinaryParser { if (renamedKey != null) { return renamedKey; } - if (VALID_RES_KEY_PATTERN.matcher(origKeyName).matches()) { - return origKeyName; - } FieldNode constField = root.getConstValues().getGlobalConstFields().get(resRef); if (constField != null) { constField.add(AFlag.DONT_RENAME); return constField.getName(); } + // styles might contain dots in name, use VALID_RES_KEY_PATTERN only for resource file name + if (typeName.equals("style")) { + return origKeyName; + } else if (VALID_RES_KEY_PATTERN.matcher(origKeyName).matches()) { + return origKeyName; + } // Making sure origKeyName compliant with resource file name rules Matcher m = VALID_RES_KEY_PATTERN.matcher(origKeyName); StringBuilder sb = new StringBuilder(); @@ -308,7 +311,7 @@ public class ResTableParser extends CommonBinaryParser { first = false; } // autogenerate key name, appended with cleaned origKeyName to be human-friendly - String newResName = "res_" + resRef; + String newResName = String.format("res_0x%08x",resRef); String cleanedResName = sb.toString(); if (!cleanedResName.isEmpty()) { newResName += "_" + cleanedResName.toLowerCase(); diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java index dc6b512c5..1d1eedf6d 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java @@ -23,10 +23,23 @@ import static jadx.core.xmlgen.ParserConstants.TYPE_REFERENCE; public class ResXmlGen { + /** + * Skip only file based resource type + */ private static final Set SKIP_RES_TYPES = new HashSet<>(Arrays.asList( + "anim", + "animator", + "font", + "id", // skip id type, it is usually auto generated when used this syntax "@+id/my_id" + "interpolator", "layout", + "menu", "mipmap", - "id")); + "navigation", + "raw", + "transition", + "xml" + )); private final ResourceStorage resStorage; private final ValuesParser vp; diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/XmlGenUtils.java b/jadx-core/src/main/java/jadx/core/xmlgen/XmlGenUtils.java index 5656e29c5..a046246a3 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/XmlGenUtils.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/XmlGenUtils.java @@ -35,7 +35,7 @@ public class XmlGenUtils { Set addedValues = new HashSet<>(); for (ResourceEntry ri : resStorage.getResources()) { if (addedValues.add(ri.getTypeName() + '.' + ri.getKeyName())) { - String format = String.format("", + String format = String.format("", ri.getTypeName(), ri.getKeyName(), ri.getId()); writer.startLine(format); } diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java b/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java index 8deb7d83c..aafd56110 100644 --- a/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java +++ b/jadx-core/src/main/java/jadx/core/xmlgen/entry/ResourceEntry.java @@ -33,7 +33,7 @@ public final class ResourceEntry { } public ResourceEntry copyWithId() { - return copy(keyName + "_RES_" + id); + return copy(String.format("%s_res_0x%08x",keyName,id)); } public int getId() { diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index 305e590b4..083790179 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -17,6 +17,8 @@ dependencies { implementation 'com.formdev:flatlaf:1.4' implementation 'com.formdev:flatlaf-intellij-themes:1.4' + implementation 'com.formdev:flatlaf-extras:1.4' + implementation 'com.formdev:svgSalamander:1.1.2.4' implementation 'org.reflections:reflections:0.9.12' implementation 'com.google.code.gson:gson:2.8.6' diff --git a/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java b/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java index 8d187cd04..e6c0d3538 100644 --- a/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java +++ b/jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java @@ -22,9 +22,9 @@ import jadx.gui.device.debugger.SmaliDebugger.*; import jadx.gui.device.debugger.smali.Smali; import jadx.gui.device.debugger.smali.SmaliRegister; import jadx.gui.treemodel.JClass; -import jadx.gui.ui.IDebugController; -import jadx.gui.ui.JDebuggerPanel; -import jadx.gui.ui.JDebuggerPanel.*; +import jadx.gui.ui.panel.IDebugController; +import jadx.gui.ui.panel.JDebuggerPanel; +import jadx.gui.ui.panel.JDebuggerPanel.*; import static jadx.gui.device.debugger.SmaliDebugger.RuntimeType; diff --git a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundExecutor.java b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundExecutor.java index 826c341b4..c6d1090b8 100644 --- a/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundExecutor.java +++ b/jadx-gui/src/main/java/jadx/gui/jobs/BackgroundExecutor.java @@ -16,7 +16,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jadx.gui.ui.MainWindow; -import jadx.gui.ui.ProgressPanel; +import jadx.gui.ui.panel.ProgressPanel; import jadx.gui.utils.UiUtils; /** diff --git a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java index 10e4a4d70..bad6fc6e0 100644 --- a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java +++ b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportNode.java @@ -16,8 +16,8 @@ import com.google.gson.GsonBuilder; import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JNode; -import jadx.gui.ui.ContentPanel; -import jadx.gui.ui.HtmlPanel; +import jadx.gui.ui.panel.ContentPanel; +import jadx.gui.ui.panel.HtmlPanel; import jadx.gui.ui.TabbedPane; import jadx.gui.utils.UiUtils; @@ -29,7 +29,7 @@ public class QuarkReportNode extends JNode { private static final Gson GSON = new GsonBuilder().create(); - private static final ImageIcon ICON = UiUtils.openIcon("icon_quark"); + private static final ImageIcon ICON = UiUtils.openSvgIcon("ui/analyze"); private final Path apkFile; private String errorContent; diff --git a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java index bde656f15..ab63e71bc 100644 --- a/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/plugins/quark/QuarkReportPanel.java @@ -38,7 +38,7 @@ import jadx.core.utils.Utils; import jadx.gui.JadxWrapper; import jadx.gui.jobs.BackgroundExecutor; import jadx.gui.treemodel.JMethod; -import jadx.gui.ui.ContentPanel; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.ui.MainWindow; import jadx.gui.ui.TabbedPane; import jadx.gui.utils.JNodeCache; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java b/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java index d36c6fcd6..7c522a46d 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/ApkSignature.java @@ -19,8 +19,8 @@ import com.android.apksig.ApkVerifier; import jadx.api.ResourceFile; import jadx.api.ResourceType; import jadx.gui.JadxWrapper; -import jadx.gui.ui.ContentPanel; -import jadx.gui.ui.HtmlPanel; +import jadx.gui.ui.panel.ContentPanel; +import jadx.gui.ui.panel.HtmlPanel; import jadx.gui.ui.TabbedPane; import jadx.gui.utils.CertificateManager; import jadx.gui.utils.NLS; @@ -31,7 +31,7 @@ public class ApkSignature extends JNode { private static final Logger LOG = LoggerFactory.getLogger(ApkSignature.class); - private static final ImageIcon CERTIFICATE_ICON = UiUtils.openIcon("certificate_obj"); + private static final ImageIcon CERTIFICATE_ICON = UiUtils.openSvgIcon("nodes/styleKeyPack"); private final transient File openFile; private String content; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java index e1a5043f2..ee9f43d68 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JClass.java @@ -2,6 +2,7 @@ package jadx.gui.treemodel; import javax.swing.*; +import jadx.gui.ui.panel.ContentPanel; import org.fife.ui.rsyntaxtextarea.SyntaxConstants; import org.jetbrains.annotations.Nullable; @@ -12,7 +13,6 @@ import jadx.api.JavaMethod; import jadx.api.JavaNode; import jadx.core.dex.attributes.AFlag; import jadx.core.dex.info.AccessInfo; -import jadx.gui.ui.ContentPanel; import jadx.gui.ui.TabbedPane; import jadx.gui.ui.codearea.ClassCodeContentPanel; import jadx.gui.utils.NLS; @@ -21,13 +21,14 @@ import jadx.gui.utils.UiUtils; public class JClass extends JLoadableNode { private static final long serialVersionUID = -1239986875244097177L; - private static final ImageIcon ICON_CLASS = UiUtils.openIcon("class_obj"); - private static final ImageIcon ICON_CLASS_DEFAULT = UiUtils.openIcon("class_default_obj"); - private static final ImageIcon ICON_CLASS_PRIVATE = UiUtils.openIcon("innerclass_private_obj"); - private static final ImageIcon ICON_CLASS_PROTECTED = UiUtils.openIcon("innerclass_protected_obj"); - private static final ImageIcon ICON_INTERFACE = UiUtils.openIcon("int_obj"); - private static final ImageIcon ICON_ENUM = UiUtils.openIcon("enum_obj"); - private static final ImageIcon ICON_ANNOTATION = UiUtils.openIcon("annotation_obj"); + private static final ImageIcon ICON_CLASS = UiUtils.openSvgIcon("nodes/class"); + private static final ImageIcon ICON_CLASS_ABSTRACT = UiUtils.openSvgIcon("nodes/abstractClass"); + private static final ImageIcon ICON_CLASS_PUBLIC = UiUtils.openSvgIcon("nodes/publicClass"); + private static final ImageIcon ICON_CLASS_PRIVATE = UiUtils.openSvgIcon("nodes/privateClass"); + private static final ImageIcon ICON_CLASS_PROTECTED = UiUtils.openSvgIcon("nodes/protectedClass"); + private static final ImageIcon ICON_INTERFACE = UiUtils.openSvgIcon("nodes/interface"); + private static final ImageIcon ICON_ENUM = UiUtils.openSvgIcon("nodes/enum"); + private static final ImageIcon ICON_ANNOTATION = UiUtils.openSvgIcon("nodes/annotationtype"); private final transient JavaClass cls; private final transient JClass jParent; @@ -130,6 +131,9 @@ public class JClass extends JLoadableNode { if (accessInfo.isInterface()) { return ICON_INTERFACE; } + if (accessInfo.isAbstract()) { + return ICON_CLASS_ABSTRACT; + } if (accessInfo.isProtected()) { return ICON_CLASS_PROTECTED; } @@ -137,9 +141,9 @@ public class JClass extends JLoadableNode { return ICON_CLASS_PRIVATE; } if (accessInfo.isPublic()) { - return ICON_CLASS; + return ICON_CLASS_PUBLIC; } - return ICON_CLASS_DEFAULT; + return ICON_CLASS; } @Override diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java index c84fdf43f..cbfc84993 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JField.java @@ -15,14 +15,10 @@ import jadx.gui.utils.UiUtils; public class JField extends JNode { private static final long serialVersionUID = 1712572192106793359L; - private static final ImageIcon ICON_FLD_DEF = UiUtils.openIcon("field_default_obj"); - private static final ImageIcon ICON_FLD_PRI = UiUtils.openIcon("field_private_obj"); - private static final ImageIcon ICON_FLD_PRO = UiUtils.openIcon("field_protected_obj"); - private static final ImageIcon ICON_FLD_PUB = UiUtils.openIcon("field_public_obj"); - - private static final ImageIcon ICON_TRANSIENT = UiUtils.openIcon("transient_co"); - private static final ImageIcon ICON_VOLATILE = UiUtils.openIcon("volatile_co"); - + private static final ImageIcon ICON_FLD_DEF = UiUtils.openSvgIcon("nodes/field"); + private static final ImageIcon ICON_FLD_PRI = UiUtils.openSvgIcon("nodes/privateField"); + private static final ImageIcon ICON_FLD_PRO = UiUtils.openSvgIcon("nodes/protectedField"); + private static final ImageIcon ICON_FLD_PUB = UiUtils.openSvgIcon("nodes/publicField"); private final transient JavaField field; private final transient JClass jParent; @@ -64,12 +60,6 @@ public class JField extends JNode { public Icon getIcon() { AccessInfo af = field.getAccessFlags(); OverlayIcon icon = UiUtils.makeIcon(af, ICON_FLD_PUB, ICON_FLD_PRI, ICON_FLD_PRO, ICON_FLD_DEF); - if (af.isTransient()) { - icon.add(ICON_TRANSIENT); - } - if (af.isVolatile()) { - icon.add(ICON_VOLATILE); - } return icon; } diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java index 8c58e81e7..c86598005 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JMethod.java @@ -12,22 +12,23 @@ import jadx.api.JavaNode; import jadx.core.dex.attributes.AFlag; import jadx.core.dex.info.AccessInfo; import jadx.core.dex.instructions.args.ArgType; -import jadx.gui.ui.ContentPanel; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.ui.TabbedPane; import jadx.gui.ui.codearea.ClassCodeContentPanel; import jadx.gui.utils.OverlayIcon; import jadx.gui.utils.UiUtils; +import sun.security.mscapi.PRNG; public class JMethod extends JNode { private static final long serialVersionUID = 3834526867464663751L; - private static final ImageIcon ICON_MTH_DEF = UiUtils.openIcon("methdef_obj"); - private static final ImageIcon ICON_MTH_PRI = UiUtils.openIcon("methpri_obj"); - private static final ImageIcon ICON_MTH_PRO = UiUtils.openIcon("methpro_obj"); - private static final ImageIcon ICON_MTH_PUB = UiUtils.openIcon("methpub_obj"); - - private static final ImageIcon ICON_CONSTRUCTOR = UiUtils.openIcon("constr_ovr"); - private static final ImageIcon ICON_SYNC = UiUtils.openIcon("synch_co"); + private static final ImageIcon ICON_METHOD = UiUtils.openSvgIcon("nodes/method"); + private static final ImageIcon ICON_METHOD_ABSTRACT = UiUtils.openSvgIcon("nodes/abstractMethod"); + private static final ImageIcon ICON_METHOD_PRIVATE = UiUtils.openSvgIcon("nodes/privateMethod"); + private static final ImageIcon ICON_METHOD_PROTECTED = UiUtils.openSvgIcon("nodes/protectedMethod"); + private static final ImageIcon ICON_METHOD_PUBLIC = UiUtils.openSvgIcon("nodes/publicMethod"); + private static final ImageIcon ICON_METHOD_CONSTRUCTOR = UiUtils.openSvgIcon("nodes/constructorMethod"); + private static final ImageIcon ICON_METHOD_SYNC = UiUtils.openSvgIcon("nodes/methodReference"); private final transient JavaMethod mth; private final transient JClass jParent; @@ -73,14 +74,35 @@ public class JMethod extends JNode { @Override public Icon getIcon() { AccessInfo accessFlags = mth.getAccessFlags(); - OverlayIcon icon = UiUtils.makeIcon(accessFlags, ICON_MTH_PUB, ICON_MTH_PRI, ICON_MTH_PRO, ICON_MTH_DEF); + Icon icon = ICON_METHOD; + if(accessFlags.isAbstract()){ + icon = ICON_METHOD_ABSTRACT; + } if (accessFlags.isConstructor()) { - icon.add(ICON_CONSTRUCTOR); + icon = ICON_METHOD_CONSTRUCTOR; + } + if(accessFlags.isPublic()){ + icon= ICON_METHOD_PUBLIC; + } + if(accessFlags.isPrivate()){ + icon = ICON_METHOD_PRIVATE; + } + if(accessFlags.isProtected()){ + icon = ICON_METHOD_PROTECTED; } if (accessFlags.isSynchronized()) { - icon.add(ICON_SYNC); + icon= ICON_METHOD_SYNC; } - return icon; + + OverlayIcon overIcon = new OverlayIcon(icon); + if (accessFlags.isFinal()) { + overIcon.add(UiUtils.ICON_FINAL); + } + if (accessFlags.isStatic()) { + overIcon.add(UiUtils.ICON_STATIC); + } + + return overIcon; } @Override diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java index 4d60a9f47..e6671d286 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JNode.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.Nullable; import jadx.api.ICodeInfo; import jadx.api.JadxDecompiler; import jadx.api.JavaNode; -import jadx.gui.ui.ContentPanel; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.ui.TabbedPane; public abstract class JNode extends DefaultMutableTreeNode { diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java index e8e6d4c1a..2bae9c167 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JPackage.java @@ -16,7 +16,7 @@ import jadx.gui.utils.UiUtils; public class JPackage extends JNode implements Comparable { private static final long serialVersionUID = -4120718634156839804L; - private static final ImageIcon PACKAGE_ICON = UiUtils.openIcon("package_obj"); + private static final ImageIcon PACKAGE_ICON = UiUtils.openSvgIcon("nodes/package"); private String fullName; private String name; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java index 0f7699733..70c103e78 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JResource.java @@ -21,8 +21,8 @@ import jadx.api.ResourcesLoader; import jadx.api.impl.SimpleCodeInfo; import jadx.core.utils.Utils; import jadx.core.xmlgen.ResContainer; -import jadx.gui.ui.ContentPanel; -import jadx.gui.ui.ImagePanel; +import jadx.gui.ui.panel.ContentPanel; +import jadx.gui.ui.panel.ImagePanel; import jadx.gui.ui.TabbedPane; import jadx.gui.ui.codearea.CodeContentPanel; import jadx.gui.utils.NLS; @@ -32,12 +32,16 @@ import jadx.gui.utils.UiUtils; public class JResource extends JLoadableNode implements Comparable { private static final long serialVersionUID = -201018424302612434L; - private static final ImageIcon ROOT_ICON = UiUtils.openIcon("cf_obj"); - private static final ImageIcon FOLDER_ICON = UiUtils.openIcon("folder"); - private static final ImageIcon FILE_ICON = UiUtils.openIcon("file_obj"); - private static final ImageIcon MANIFEST_ICON = UiUtils.openIcon("template_obj"); - private static final ImageIcon JAVA_ICON = UiUtils.openIcon("java_ovr"); - private static final ImageIcon ERROR_ICON = UiUtils.openIcon("error_co"); + private static final ImageIcon ROOT_ICON = UiUtils.openSvgIcon("nodes/resourcesRoot"); + private static final ImageIcon FOLDER_ICON = UiUtils.openSvgIcon("nodes/folder"); + private static final ImageIcon FILE_ICON = UiUtils.openSvgIcon("nodes/file_any_type"); + private static final ImageIcon ARSC_ICON = UiUtils.openSvgIcon("nodes/resourceBundle"); + private static final ImageIcon XML_ICON = UiUtils.openSvgIcon("nodes/xml"); + private static final ImageIcon IMAGE_ICON = UiUtils.openSvgIcon("nodes/ImagesFileType"); + private static final ImageIcon SO_ICON = UiUtils.openSvgIcon("nodes/binaryFile"); + private static final ImageIcon MANIFEST_ICON = UiUtils.openSvgIcon("nodes/manifest"); + private static final ImageIcon JAVA_ICON = UiUtils.openSvgIcon("nodes/java"); + private static final ImageIcon UNKNOWN_ICON = UiUtils.openSvgIcon("nodes/unknown"); public enum JResType { ROOT, @@ -274,16 +278,23 @@ public class JResource extends JLoadableNode implements Comparable { case FILE: ResourceType resType = resFile.getType(); - if (resType == ResourceType.MANIFEST) { - return MANIFEST_ICON; + switch (resType){ + case MANIFEST: + return MANIFEST_ICON; + case ARSC: + return ARSC_ICON; + case XML: + return XML_ICON; + case IMG: + return IMAGE_ICON; + case LIB: + return SO_ICON; + case CODE: + return JAVA_ICON; + case UNKNOWN: + return UNKNOWN_ICON; } - if (resType == ResourceType.CODE) { - return new OverlayIcon(FILE_ICON, ERROR_ICON, JAVA_ICON); - } - if (!isSupportedForView(resType)) { - return new OverlayIcon(FILE_ICON, ERROR_ICON); - } - return FILE_ICON; + return UNKNOWN_ICON; } return FILE_ICON; } diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java index eb4683633..3227fe776 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JRoot.java @@ -22,7 +22,7 @@ import jadx.gui.utils.UiUtils; public class JRoot extends JNode { private static final long serialVersionUID = 8888495789773527342L; - private static final ImageIcon ROOT_ICON = UiUtils.openIcon("java_model_obj"); + private static final ImageIcon ROOT_ICON = UiUtils.openSvgIcon("nodes/rootPackageFolder"); private final transient JadxWrapper wrapper; diff --git a/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java b/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java index bd50db22a..8a1eaecbb 100644 --- a/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java +++ b/jadx-gui/src/main/java/jadx/gui/treemodel/JSources.java @@ -18,7 +18,7 @@ import jadx.gui.utils.UiUtils; public class JSources extends JNode { private static final long serialVersionUID = 8962924556824862801L; - private static final ImageIcon ROOT_ICON = UiUtils.openIcon("packagefolder_obj"); + private static final ImageIcon ROOT_ICON = UiUtils.openSvgIcon("nodes/packageClasses"); private final transient JadxWrapper wrapper; private final transient boolean flatPackages; 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 942fcd607..b4ecc22ab 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -74,6 +74,11 @@ import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; +import jadx.gui.ui.dialog.*; +import jadx.gui.ui.panel.ContentPanel; +import jadx.gui.ui.panel.JDebuggerPanel; +import jadx.gui.ui.panel.ProgressPanel; +import jadx.gui.ui.popupmenu.JPackagePopupMenu; import org.fife.ui.rsyntaxtextarea.Theme; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -137,24 +142,24 @@ public class MainWindow extends JFrame { private static final double WINDOW_RATIO = 1 - BORDER_RATIO * 2; public static final double SPLIT_PANE_RESIZE_WEIGHT = 0.15; - private static final ImageIcon ICON_OPEN = UiUtils.openIcon("folder"); - private static final ImageIcon ICON_ADD_FILES = UiUtils.openIcon("folder_add"); - private static final ImageIcon ICON_SAVE_ALL = UiUtils.openIcon("disk_multiple"); - private static final ImageIcon ICON_EXPORT = UiUtils.openIcon("database_save"); - private static final ImageIcon ICON_CLOSE = UiUtils.openIcon("cross"); - private static final ImageIcon ICON_SYNC = UiUtils.openIcon("sync"); - private static final ImageIcon ICON_FLAT_PKG = UiUtils.openIcon("empty_logical_package_obj"); - private static final ImageIcon ICON_SEARCH = UiUtils.openIcon("wand"); - private static final ImageIcon ICON_FIND = UiUtils.openIcon("magnifier"); - private static final ImageIcon ICON_COMMENT_SEARCH = UiUtils.openIcon("table_edit"); - private static final ImageIcon ICON_BACK = UiUtils.openIcon("icon_back"); - private static final ImageIcon ICON_FORWARD = UiUtils.openIcon("icon_forward"); - private static final ImageIcon ICON_QUARK = UiUtils.openIcon("icon_quark"); - private static final ImageIcon ICON_PREF = UiUtils.openIcon("wrench"); - private static final ImageIcon ICON_DEOBF = UiUtils.openIcon("lock_edit"); - private static final ImageIcon ICON_LOG = UiUtils.openIcon("report"); - private static final ImageIcon ICON_JADX = UiUtils.openIcon("jadx-logo"); - private static final ImageIcon ICON_DEBUGGER = UiUtils.openIcon("debugger"); + private static final ImageIcon ICON_OPEN = UiUtils.openSvgIcon("ui/openDisk"); + private static final ImageIcon ICON_ADD_FILES = UiUtils.openSvgIcon("ui/addFile"); + private static final ImageIcon ICON_SAVE_ALL = UiUtils.openSvgIcon("ui/menu-saveall"); + private static final ImageIcon ICON_EXPORT = UiUtils.openSvgIcon("ui/export"); + private static final ImageIcon ICON_EXIT = UiUtils.openSvgIcon("ui/exit"); + private static final ImageIcon ICON_SYNC = UiUtils.openSvgIcon("ui/pagination"); + private static final ImageIcon ICON_FLAT_PKG = UiUtils.openSvgIcon("ui/moduleGroup"); + private static final ImageIcon ICON_SEARCH = UiUtils.openSvgIcon("ui/find"); + private static final ImageIcon ICON_FIND = UiUtils.openSvgIcon("ui/ejbFinderMethod"); + private static final ImageIcon ICON_COMMENT_SEARCH = UiUtils.openSvgIcon("ui/usagesFinder"); + private static final ImageIcon ICON_BACK = UiUtils.openSvgIcon("ui/left"); + private static final ImageIcon ICON_FORWARD = UiUtils.openSvgIcon("ui/right"); + private static final ImageIcon ICON_QUARK = UiUtils.openSvgIcon("ui/analyze"); + private static final ImageIcon ICON_PREF = UiUtils.openSvgIcon("ui/settings"); + private static final ImageIcon ICON_DEOBF = UiUtils.openSvgIcon("ui/helmChartLock"); + private static final ImageIcon ICON_LOG = UiUtils.openSvgIcon("ui/logVerbose"); + private static final ImageIcon ICON_INFO = UiUtils.openSvgIcon("ui/showInfos"); + private static final ImageIcon ICON_DEBUGGER = UiUtils.openSvgIcon("ui/startDebugger"); private final transient JadxWrapper wrapper; private final transient JadxSettings settings; @@ -833,7 +838,7 @@ public class MainWindow extends JFrame { prefsAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_P, UiUtils.ctrlButton() | KeyEvent.SHIFT_DOWN_MASK)); - Action exitAction = new AbstractAction(NLS.str("file.exit"), ICON_CLOSE) { + Action exitAction = new AbstractAction(NLS.str("file.exit"), ICON_EXIT) { @Override public void actionPerformed(ActionEvent e) { closeWindow(); @@ -917,14 +922,14 @@ public class MainWindow extends JFrame { Action logAction = new AbstractAction(NLS.str("menu.log"), ICON_LOG) { @Override public void actionPerformed(ActionEvent e) { - new LogViewer(MainWindow.this).setVisible(true); + new LogViewerDialog(MainWindow.this).setVisible(true); } }; logAction.putValue(Action.SHORT_DESCRIPTION, NLS.str("menu.log")); logAction.putValue(Action.ACCELERATOR_KEY, getKeyStroke(KeyEvent.VK_L, UiUtils.ctrlButton() | KeyEvent.SHIFT_DOWN_MASK)); - Action aboutAction = new AbstractAction(NLS.str("menu.about"), ICON_JADX) { + Action aboutAction = new AbstractAction(NLS.str("menu.about"), ICON_INFO) { @Override public void actionPerformed(ActionEvent e) { new AboutDialog().setVisible(true); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java b/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java index 198696afd..51368e910 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/TabComponent.java @@ -12,14 +12,15 @@ import javax.swing.plaf.basic.BasicButtonUI; import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JNode; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; public class TabComponent extends JPanel { private static final long serialVersionUID = -8147035487543610321L; - private static final ImageIcon ICON_CLOSE = UiUtils.openIcon("cross"); - private static final ImageIcon ICON_CLOSE_INACTIVE = UiUtils.openIcon("cross_grayed"); + private static final ImageIcon ICON_CLOSE = UiUtils.openSvgIcon("ui/closeHovered"); + private static final ImageIcon ICON_CLOSE_INACTIVE = UiUtils.openSvgIcon("ui/close"); private final TabbedPane tabbedPane; private final ContentPanel contentPanel; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java index 201406d2b..d0c8d0705 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/TabbedPane.java @@ -16,6 +16,9 @@ import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import javax.swing.text.BadLocationException; +import jadx.gui.ui.panel.ContentPanel; +import jadx.gui.ui.panel.HtmlPanel; +import jadx.gui.ui.panel.ImagePanel; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -119,7 +122,7 @@ public class TabbedPane extends JTabbedPane { lastTab = null; return; } - FocusManager.focusOnCodePanel(tab); + // FocusManager.focusOnCodePanel(tab); if (tab == curTab) { // a tab was closed by not the current one. if (lastTab != null && indexOfComponent(lastTab) == -1) { // lastTab was closed setLastTabAdjacentToCurTab(); @@ -194,7 +197,7 @@ public class TabbedPane extends JTabbedPane { codeArea.scrollToLine(line); } } - codeArea.requestFocus(); + //codeArea.requestFocus(); }); } @@ -237,7 +240,7 @@ public class TabbedPane extends JTabbedPane { smaliArea.scrollToDebugPos(pos); } smaliArea.scrollToPos(pos); - smaliArea.requestFocus(); + //smaliArea.requestFocus(); } @Nullable @@ -303,7 +306,7 @@ public class TabbedPane extends JTabbedPane { } @Nullable - ContentPanel getSelectedCodePanel() { + public ContentPanel getSelectedCodePanel() { return (ContentPanel) getSelectedComponent(); } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java index 72a81fda6..3bd380fca 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeArea.java @@ -32,7 +32,7 @@ import jadx.core.utils.StringUtils; import jadx.gui.settings.JadxSettings; import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JNode; -import jadx.gui.ui.ContentPanel; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.ui.MainWindow; import jadx.gui.utils.DefaultPopupMenuListener; import jadx.gui.utils.JumpPosition; @@ -53,6 +53,9 @@ public abstract class AbstractCodeArea extends RSyntaxTextArea { setMarkOccurrences(false); setEditable(false); setCodeFoldingEnabled(false); + setFadeCurrentLineHighlight(true); + setCloseCurlyBraces(true); + setAntiAliasingEnabled(true); loadSettings(); JadxSettings settings = contentPanel.getTabbedPane().getMainWindow().getSettings(); setLineWrap(settings.isCodeAreaLineWrap()); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java index b343ba5db..d0b0ba090 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/AbstractCodeContentPanel.java @@ -1,7 +1,7 @@ package jadx.gui.ui.codearea; import jadx.gui.treemodel.JNode; -import jadx.gui.ui.ContentPanel; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.ui.TabbedPane; /** diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java index 19b98c651..c11c0326b 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodeArea.java @@ -21,7 +21,7 @@ import jadx.api.JavaNode; import jadx.gui.settings.JadxProject; import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JNode; -import jadx.gui.ui.ContentPanel; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.ui.MainWindow; import jadx.gui.utils.CaretPositionFix; import jadx.gui.utils.DefaultPopupMenuListener; @@ -37,12 +37,13 @@ public final class CodeArea extends AbstractCodeArea { private static final Logger LOG = LoggerFactory.getLogger(CodeArea.class); private static final long serialVersionUID = 6312736869579635796L; + private final boolean isJavaCode; CodeArea(ContentPanel contentPanel) { super(contentPanel); setSyntaxEditingStyle(node.getSyntaxName()); - boolean isJavaCode = node instanceof JClass; + isJavaCode = node instanceof JClass; if (isJavaCode) { ((RSyntaxDocument) getDocument()).setSyntaxStyle(new JadxTokenMaker(this)); addMenuItems(); @@ -243,4 +244,8 @@ public final class CodeArea extends AbstractCodeArea { public JadxProject getProject() { return getMainWindow().getProject(); } + + public boolean isJavaCode() { + return isJavaCode; + } } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java index bb8a78ac4..32d22d019 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CodePanel.java @@ -1,23 +1,14 @@ package jadx.gui.ui.codearea; -import java.awt.BorderLayout; -import java.awt.Point; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JMenuItem; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; +import javax.swing.*; import javax.swing.JPopupMenu.Separator; -import javax.swing.JScrollPane; -import javax.swing.JViewport; -import javax.swing.KeyStroke; -import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; import javax.swing.event.PopupMenuEvent; @@ -28,7 +19,7 @@ import org.slf4j.LoggerFactory; import jadx.api.ICodeInfo; import jadx.core.utils.StringUtils; import jadx.gui.ui.MainWindow; -import jadx.gui.ui.SearchDialog; +import jadx.gui.ui.dialog.SearchDialog; import jadx.gui.utils.CaretPositionFix; import jadx.gui.utils.DefaultPopupMenuListener; import jadx.gui.utils.NLS; @@ -133,16 +124,23 @@ public class CodePanel extends JPanel { if (codeArea instanceof SmaliArea) { return false; } - ICodeInfo codeInfo = codeArea.getNode().getCodeInfo(); - if (codeInfo == null) { - return false; + if (codeArea instanceof CodeArea) { + CodeArea code = (CodeArea) codeArea; + if (!code.isJavaCode()) { + return false; + } + ICodeInfo codeInfo = code.getNode().getCodeInfo(); + if (codeInfo == null) { + return false; + } + Map lineMapping = codeInfo.getLineMapping(); + if (lineMapping.isEmpty()) { + return false; + } + Set uniqueSourceLines = new HashSet<>(lineMapping.values()); + return uniqueSourceLines.size() > 3; } - Map lineMapping = codeInfo.getLineMapping(); - if (lineMapping.isEmpty()) { - return false; - } - Set uniqueSourceLines = new HashSet<>(lineMapping.values()); - return uniqueSourceLines.size() > 3; + return false; } public SearchBar getSearchBar() { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentAction.java index 4ea45b7b6..3e93eb42b 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentAction.java @@ -22,7 +22,7 @@ import jadx.api.data.impl.JadxCodeComment; import jadx.api.data.impl.JadxNodeRef; import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JNode; -import jadx.gui.ui.CommentDialog; +import jadx.gui.ui.dialog.CommentDialog; import jadx.gui.utils.CodeLinesInfo; import jadx.gui.utils.DefaultPopupMenuListener; import jadx.gui.utils.NLS; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentSearchAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentSearchAction.java index d205df866..d78e1f46f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentSearchAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/CommentSearchAction.java @@ -7,7 +7,7 @@ import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.KeyStroke; -import jadx.gui.ui.SearchDialog; +import jadx.gui.ui.dialog.SearchDialog; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java index ed7575b6c..9fc20fde8 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/FindUsageAction.java @@ -8,7 +8,7 @@ import javax.swing.*; import org.jetbrains.annotations.Nullable; import jadx.gui.treemodel.JNode; -import jadx.gui.ui.UsageDialog; +import jadx.gui.ui.dialog.UsageDialog; import jadx.gui.utils.NLS; import static javax.swing.KeyStroke.getKeyStroke; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java index 4fcaa7b53..9675505bb 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/LineNumbers.java @@ -74,13 +74,20 @@ public class LineNumbers extends JPanel implements CaretListener { setPreferredWidth(); codeArea.addCaretListener(this); - addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - useSourceLines = !useSourceLines; - repaint(); + + // use source lines only decompiled java code + if (codeArea instanceof CodeArea) { + CodeArea code = (CodeArea) codeArea; + if (code.isJavaCode()) { + addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + useSourceLines = !useSourceLines; + repaint(); + } + }); } - }); + } } public void setBorderGap(int borderGap) { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java index 98d6cb801..8bd37b915 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/RenameAction.java @@ -10,7 +10,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jadx.gui.treemodel.JNode; -import jadx.gui.ui.RenameDialog; +import jadx.gui.ui.dialog.RenameDialog; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java index 9cd66af06..30e6f52a0 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SearchBar.java @@ -27,11 +27,11 @@ class SearchBar extends JToolBar { private static final Color COLOR_BG_ERROR = new Color(0xFFDFDE); private static final Color COLOR_BG_WARN = new Color(0xFFFDD9); - private static final Color COLOR_BG_NORMAL = new Color(0xFFFFFF); + //private static final Color COLOR_BG_NORMAL = new Color(0xFFFFFF); - private static final Icon ICON_UP = UiUtils.openIcon("arrow_up"); - private static final Icon ICON_DOWN = UiUtils.openIcon("arrow_down"); - private static final Icon ICON_CLOSE = UiUtils.openIcon("cross"); + private static final Icon ICON_UP = UiUtils.openSvgIcon("ui/top"); + private static final Icon ICON_DOWN = UiUtils.openSvgIcon("ui/bottom"); + private static final Icon ICON_CLOSE = UiUtils.openSvgIcon("ui/close"); private RSyntaxTextArea rTextArea; @@ -148,7 +148,7 @@ class SearchBar extends JToolBar { context.setMarkAll(markAllCB.isSelected()); // TODO hack: move cursor before previous search for not jump to next occurrence - if (direction == 0 && !COLOR_BG_ERROR.equals(searchField.getBackground())) { + /*if (direction == 0) { try { int caretPos = rTextArea.getCaretPosition(); int lineNum = rTextArea.getLineOfOffset(caretPos) - 1; @@ -158,7 +158,7 @@ class SearchBar extends JToolBar { } catch (BadLocationException e) { LOG.error("Caret move error", e); } - } + }*/ SearchResult result = SearchEngine.find(rTextArea, context); if (!result.wasFound()) { @@ -166,12 +166,12 @@ class SearchBar extends JToolBar { if (pos != -1) { rTextArea.setCaretPosition(forward ? 0 : rTextArea.getDocument().getLength() - 1); search(direction); - searchField.setBackground(COLOR_BG_WARN); + //searchField.setBackground(COLOR_BG_WARN); return; } - searchField.setBackground(COLOR_BG_ERROR); + //searchField.setBackground(COLOR_BG_ERROR); } else { - searchField.setBackground(COLOR_BG_NORMAL); + //searchField.setBackground(COLOR_BG_NORMAL); } } diff --git a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java index 85d451336..b0b519bb8 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/codearea/SmaliArea.java @@ -23,17 +23,17 @@ import jadx.gui.settings.JadxSettings; import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JNode; import jadx.gui.treemodel.TextNode; -import jadx.gui.ui.ContentPanel; +import jadx.gui.ui.panel.ContentPanel; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; public final class SmaliArea extends AbstractCodeArea { private static final long serialVersionUID = 1334485631870306494L; - private static final Icon ICON_BREAKPOINT = UiUtils.openIcon("breakpoint"); - private static final Icon ICON_BREAKPOINT_DISABLED = UiUtils.openIcon("breakpoint_disabled"); - private static final Color BREAKPOINT_LINE_COLOR = Color.decode("#FF986E"); - private static final Color DEBUG_LINE_COLOR = Color.decode("#80B4FF"); + private static final Icon ICON_BREAKPOINT = UiUtils.openSvgIcon("debugger/db_set_breakpoint"); + private static final Icon ICON_BREAKPOINT_DISABLED = UiUtils.openSvgIcon("debugger/db_disabled_breakpoint"); + private static final Color BREAKPOINT_LINE_COLOR = Color.decode("#ad103c"); + private static final Color DEBUG_LINE_COLOR = Color.decode("#9c1138"); private final JNode textNode; private final JCheckBoxMenuItem cbUseSmaliV2; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ADBDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ADBDialog.java similarity index 98% rename from jadx-gui/src/main/java/jadx/gui/ui/ADBDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/ADBDialog.java index 3d409206a..3b094b901 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ADBDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ADBDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.*; import java.awt.event.MouseAdapter; @@ -17,6 +17,8 @@ import jadx.core.utils.exceptions.JadxRuntimeException; import jadx.gui.device.debugger.DbgUtils; import jadx.gui.device.protocol.ADB; import jadx.gui.treemodel.JClass; +import jadx.gui.ui.panel.IDebugController; +import jadx.gui.ui.MainWindow; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; @@ -24,8 +26,8 @@ import static jadx.gui.device.protocol.ADB.Device.*; public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.JDWPProcessListener { private static final long serialVersionUID = -1111111202102181630L; - private static final ImageIcon ICON_DEVICE = UiUtils.openIcon("device"); - private static final ImageIcon ICON_PROCESS = UiUtils.openIcon("process"); + private static final ImageIcon ICON_DEVICE = UiUtils.openSvgIcon("adb/androidDevice"); + private static final ImageIcon ICON_PROCESS = UiUtils.openSvgIcon("adb/addToWatch"); private static DebugSetting debugSetter = null; private final transient MainWindow mainWindow; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/AboutDialog.java similarity index 97% rename from jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/AboutDialog.java index c4ca9ac17..e4f91ee94 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/AboutDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/AboutDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.*; import java.net.URL; @@ -9,7 +9,7 @@ import jadx.api.JadxDecompiler; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; -class AboutDialog extends JDialog { +public class AboutDialog extends JDialog { private static final long serialVersionUID = 5763493590584039096L; public AboutDialog() { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/CommentDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommentDialog.java similarity index 99% rename from jadx-gui/src/main/java/jadx/gui/ui/CommentDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/CommentDialog.java index 7f357bd2e..55a74dc5f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CommentDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommentDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.BorderLayout; import java.awt.Component; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommonSearchDialog.java similarity index 99% rename from jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/CommonSearchDialog.java index a4b189d46..398d217ac 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/CommonSearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/CommonSearchDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.Color; import java.awt.Component; @@ -38,6 +38,9 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; +import jadx.gui.ui.MainWindow; +import jadx.gui.ui.panel.ProgressPanel; +import jadx.gui.ui.TabbedPane; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import org.fife.ui.rtextarea.SearchContext; import org.fife.ui.rtextarea.SearchEngine; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ExcludePkgDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ExcludePkgDialog.java similarity index 96% rename from jadx-gui/src/main/java/jadx/gui/ui/ExcludePkgDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/ExcludePkgDialog.java index 7f04b759f..46772c3e3 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ExcludePkgDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/ExcludePkgDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.*; import java.awt.event.MouseAdapter; @@ -12,12 +12,13 @@ import javax.swing.*; import javax.swing.tree.*; import jadx.api.JavaPackage; +import jadx.gui.ui.MainWindow; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; public class ExcludePkgDialog extends JDialog { private static final long serialVersionUID = -1111111202104151030L; - private static final ImageIcon PACKAGE_ICON = UiUtils.openIcon("package_obj"); + private static final ImageIcon PACKAGE_ICON = UiUtils.openSvgIcon("nodes/package"); private final transient MainWindow mainWindow; private transient JTree tree; @@ -285,8 +286,8 @@ public class ExcludePkgDialog extends JDialog { boolean hasFocus) { if (value instanceof PkgNode) { PkgNode node = (PkgNode) value; - node.checkbox.setBackground(Color.white); - node.checkbox.setForeground(Color.black); + node.checkbox.setBackground(tree.getBackground()); + node.checkbox.setForeground(tree.getForeground()); return node.checkbox; } Component c = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/LogViewer.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/LogViewerDialog.java similarity index 94% rename from jadx-gui/src/main/java/jadx/gui/ui/LogViewer.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/LogViewerDialog.java index 27413bf52..3897d0108 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/LogViewer.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/LogViewerDialog.java @@ -1,9 +1,10 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.*; import javax.swing.*; +import jadx.gui.ui.MainWindow; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import ch.qos.logback.classic.Level; @@ -14,7 +15,7 @@ import jadx.gui.utils.NLS; import jadx.gui.utils.logs.ILogListener; import jadx.gui.utils.logs.LogCollector; -class LogViewer extends JDialog { +public class LogViewerDialog extends JDialog { private static final long serialVersionUID = -2188700277429054641L; private static final Level[] LEVEL_ITEMS = { Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR }; @@ -23,7 +24,7 @@ class LogViewer extends JDialog { private final transient JadxSettings settings; private transient RSyntaxTextArea textPane; - public LogViewer(MainWindow mainWindow) { + public LogViewerDialog(MainWindow mainWindow) { this.settings = mainWindow.getSettings(); initUI(mainWindow); registerLogListener(); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java similarity index 98% rename from jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java index bd640a287..f59c31f31 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/RenameDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/RenameDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.BorderLayout; import java.awt.Container; @@ -23,6 +23,9 @@ import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.WindowConstants; +import jadx.gui.ui.panel.ContentPanel; +import jadx.gui.ui.MainWindow; +import jadx.gui.ui.TabbedPane; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java similarity index 99% rename from jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java index 07466c299..757060e51 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/SearchDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SearchDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.*; import java.awt.event.KeyAdapter; @@ -21,6 +21,7 @@ import javax.swing.event.ChangeListener; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; +import jadx.gui.ui.MainWindow; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/SetValueDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SetValueDialog.java similarity index 97% rename from jadx-gui/src/main/java/jadx/gui/ui/SetValueDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/SetValueDialog.java index 12047b5ce..72d81db36 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/SetValueDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/SetValueDialog.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.*; import java.awt.event.ActionEvent; @@ -11,7 +11,8 @@ import javax.swing.*; import jadx.core.dex.instructions.args.ArgType; import jadx.core.utils.exceptions.JadxRuntimeException; -import jadx.gui.ui.JDebuggerPanel.ValueTreeNode; +import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode; +import jadx.gui.ui.MainWindow; import jadx.gui.utils.NLS; import jadx.gui.utils.TextStandardActions; import jadx.gui.utils.UiUtils; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java b/jadx-gui/src/main/java/jadx/gui/ui/dialog/UsageDialog.java similarity index 97% rename from jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java rename to jadx-gui/src/main/java/jadx/gui/ui/dialog/UsageDialog.java index e2e8cd9ad..6fe703179 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/UsageDialog.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/dialog/UsageDialog.java @@ -1,10 +1,11 @@ -package jadx.gui.ui; +package jadx.gui.ui.dialog; import java.awt.*; import javax.swing.*; import jadx.gui.treemodel.JNode; +import jadx.gui.ui.MainWindow; import jadx.gui.utils.CodeUsageInfo; import jadx.gui.utils.NLS; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ContentPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/ContentPanel.java similarity index 94% rename from jadx-gui/src/main/java/jadx/gui/ui/ContentPanel.java rename to jadx-gui/src/main/java/jadx/gui/ui/panel/ContentPanel.java index d012e1bcb..287f6348f 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ContentPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/ContentPanel.java @@ -1,7 +1,8 @@ -package jadx.gui.ui; +package jadx.gui.ui.panel; import javax.swing.*; +import jadx.gui.ui.TabbedPane; import org.jetbrains.annotations.Nullable; import jadx.gui.treemodel.JClass; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/HtmlPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/HtmlPanel.java similarity index 95% rename from jadx-gui/src/main/java/jadx/gui/ui/HtmlPanel.java rename to jadx-gui/src/main/java/jadx/gui/ui/panel/HtmlPanel.java index 3eb159b4d..832d9a808 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/HtmlPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/HtmlPanel.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.panel; import java.awt.*; @@ -6,6 +6,7 @@ import javax.swing.*; import jadx.gui.settings.JadxSettings; import jadx.gui.treemodel.JNode; +import jadx.gui.ui.TabbedPane; public final class HtmlPanel extends ContentPanel { private static final long serialVersionUID = -6251262855835426245L; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/IDebugController.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/IDebugController.java similarity index 82% rename from jadx-gui/src/main/java/jadx/gui/ui/IDebugController.java rename to jadx-gui/src/main/java/jadx/gui/ui/panel/IDebugController.java index 9166e873e..c7b7d9eaf 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/IDebugController.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/IDebugController.java @@ -1,7 +1,8 @@ -package jadx.gui.ui; +package jadx.gui.ui.panel; import jadx.core.dex.instructions.args.ArgType; -import jadx.gui.ui.JDebuggerPanel.ValueTreeNode; +import jadx.gui.ui.panel.JDebuggerPanel; +import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode; public interface IDebugController { boolean startDebugger(JDebuggerPanel panel, String[] args); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ImagePanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/ImagePanel.java similarity index 97% rename from jadx-gui/src/main/java/jadx/gui/ui/ImagePanel.java rename to jadx-gui/src/main/java/jadx/gui/ui/panel/ImagePanel.java index 61177134c..ead008db1 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ImagePanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/ImagePanel.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.panel; import java.awt.*; import java.awt.image.BufferedImage; @@ -6,6 +6,7 @@ import java.io.ByteArrayInputStream; import javax.imageio.ImageIO; +import jadx.gui.ui.TabbedPane; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; import hu.kazocsaba.imageviewer.ImageViewer; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/JDebuggerPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java similarity index 94% rename from jadx-gui/src/main/java/jadx/gui/ui/JDebuggerPanel.java rename to jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java index 48400daaa..80cc912c1 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/JDebuggerPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/JDebuggerPanel.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.panel; import java.awt.*; import java.awt.event.*; @@ -12,21 +12,24 @@ import io.reactivex.annotations.Nullable; import jadx.core.utils.StringUtils; import jadx.gui.device.debugger.DebugController; import jadx.gui.treemodel.JClass; +import jadx.gui.ui.MainWindow; +import jadx.gui.ui.popupmenu.VarTreePopupMenu; import jadx.gui.ui.codearea.SmaliArea; +import jadx.gui.ui.dialog.ADBDialog; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; public class JDebuggerPanel extends JPanel { private static final long serialVersionUID = -1111111202102181631L; - private static final ImageIcon ICON_RUN = UiUtils.openIcon("run"); - private static final ImageIcon ICON_RERUN = UiUtils.openIcon("rerun"); - private static final ImageIcon ICON_PAUSE = UiUtils.openIcon("pause"); - private static final ImageIcon ICON_STOP = UiUtils.openIcon("stop"); - private static final ImageIcon ICON_STOP_GRAY = UiUtils.openIcon("stop_gray"); - private static final ImageIcon ICON_STEP_INTO = UiUtils.openIcon("step_into"); - private static final ImageIcon ICON_STEP_OVER = UiUtils.openIcon("step_over"); - private static final ImageIcon ICON_STEP_OUT = UiUtils.openIcon("step_out"); + private static final ImageIcon ICON_RUN = UiUtils.openSvgIcon("debugger/execute"); + private static final ImageIcon ICON_RERUN = UiUtils.openSvgIcon("debugger/rerun"); + private static final ImageIcon ICON_PAUSE = UiUtils.openSvgIcon("debugger/threadFrozen"); + private static final ImageIcon ICON_STOP = UiUtils.openSvgIcon("debugger/suspend"); + private static final ImageIcon ICON_STOP_GRAY = UiUtils.openSvgIcon("debugger/suspendGray"); + private static final ImageIcon ICON_STEP_INTO = UiUtils.openSvgIcon("debugger/traceInto"); + private static final ImageIcon ICON_STEP_OVER = UiUtils.openSvgIcon("debugger/traceOver"); + private static final ImageIcon ICON_STEP_OUT = UiUtils.openSvgIcon("debugger/stepOut"); private final transient MainWindow mainWindow; private final transient JList stackFrameList; @@ -86,12 +89,8 @@ public class JDebuggerPanel extends JPanel { boolean hasFocus) { Component c = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); if (value instanceof ValueTreeNode) { - if (sel) { - setForeground(Color.WHITE); - } else if (((ValueTreeNode) value).isUpdated()) { + if (((ValueTreeNode) value).isUpdated()) { setForeground(Color.RED); - } else { - setForeground(Color.BLACK); } } return c; @@ -117,7 +116,7 @@ public class JDebuggerPanel extends JPanel { JPanel headerPanel = new JPanel(new BorderLayout()); headerPanel.add(new Label(), BorderLayout.WEST); headerPanel.add(initToolBar(), BorderLayout.CENTER); - JButton closeBtn = new JButton(UiUtils.openIcon("cross")); + JButton closeBtn = new JButton(UiUtils.openSvgIcon("ui/close")); closeBtn.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { diff --git a/jadx-gui/src/main/java/jadx/gui/ui/ProgressPanel.java b/jadx-gui/src/main/java/jadx/gui/ui/panel/ProgressPanel.java similarity index 96% rename from jadx-gui/src/main/java/jadx/gui/ui/ProgressPanel.java rename to jadx-gui/src/main/java/jadx/gui/ui/panel/ProgressPanel.java index 632063320..f0b469e3d 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/ProgressPanel.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/panel/ProgressPanel.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.panel; import java.awt.Dimension; import java.beans.PropertyChangeEvent; @@ -13,13 +13,14 @@ import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.SwingWorker; +import jadx.gui.ui.MainWindow; import jadx.gui.utils.UiUtils; public class ProgressPanel extends JPanel implements PropertyChangeListener { private static final long serialVersionUID = -3238438119672015733L; - private static final Icon ICON_CANCEL = UiUtils.openIcon("cross"); + private static final Icon ICON_CANCEL = UiUtils.openSvgIcon("ui/close"); private final JProgressBar progressBar; private final JLabel progressLabel; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/JPackagePopupMenu.java b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JPackagePopupMenu.java similarity index 95% rename from jadx-gui/src/main/java/jadx/gui/ui/JPackagePopupMenu.java rename to jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JPackagePopupMenu.java index e9ec4a9c6..8a525cb42 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/JPackagePopupMenu.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JPackagePopupMenu.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.popupmenu; import java.awt.event.ActionEvent; import java.util.Arrays; @@ -6,6 +6,9 @@ import java.util.List; import javax.swing.*; +import jadx.gui.ui.MainWindow; +import jadx.gui.ui.dialog.ExcludePkgDialog; +import jadx.gui.ui.dialog.RenameDialog; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -15,7 +18,7 @@ import jadx.gui.treemodel.JClass; import jadx.gui.treemodel.JPackage; import jadx.gui.utils.NLS; -class JPackagePopupMenu extends JPopupMenu { +public class JPackagePopupMenu extends JPopupMenu { private static final long serialVersionUID = -7781009781149224131L; private static final Logger LOG = LoggerFactory.getLogger(JPackagePopupMenu.class); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/VarTreePopupMenu.java b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/VarTreePopupMenu.java similarity index 94% rename from jadx-gui/src/main/java/jadx/gui/ui/VarTreePopupMenu.java rename to jadx-gui/src/main/java/jadx/gui/ui/popupmenu/VarTreePopupMenu.java index 43ad266b7..4621d7648 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/VarTreePopupMenu.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/VarTreePopupMenu.java @@ -1,4 +1,4 @@ -package jadx.gui.ui; +package jadx.gui.ui.popupmenu; import java.awt.*; import java.awt.datatransfer.Clipboard; @@ -8,7 +8,9 @@ import java.awt.event.ActionEvent; import javax.swing.*; import jadx.core.dex.instructions.args.ArgType; -import jadx.gui.ui.JDebuggerPanel.ValueTreeNode; +import jadx.gui.ui.MainWindow; +import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode; +import jadx.gui.ui.dialog.SetValueDialog; import jadx.gui.utils.NLS; import jadx.gui.utils.UiUtils; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java b/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java index 9e7b80f79..5af32ff9c 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/CacheObject.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.Nullable; import jadx.gui.jobs.IndexService; import jadx.gui.settings.JadxSettings; import jadx.gui.treemodel.JRoot; -import jadx.gui.ui.SearchDialog; +import jadx.gui.ui.dialog.SearchDialog; import jadx.gui.utils.search.CommentsIndex; import jadx.gui.utils.search.TextSearchIndex; diff --git a/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java b/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java index 03a9ac792..caee78528 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/LafManager.java @@ -1,25 +1,16 @@ package jadx.gui.utils; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.swing.LookAndFeel; -import javax.swing.UIManager; - +import ch.qos.logback.classic.Level; +import com.formdev.flatlaf.FlatLaf; +import com.formdev.flatlaf.extras.FlatAnimatedLafChange; +import jadx.cli.LogHelper; +import jadx.gui.settings.JadxSettings; import org.reflections.Reflections; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.formdev.flatlaf.FlatLaf; - -import ch.qos.logback.classic.Level; - -import jadx.cli.LogHelper; -import jadx.gui.settings.JadxSettings; +import javax.swing.*; +import java.util.*; public class LafManager { private static final Logger LOG = LoggerFactory.getLogger(LafManager.class); @@ -38,7 +29,9 @@ public class LafManager { public static void updateLaf(JadxSettings settings) { if (setupLaf(getThemeClass(settings))) { + // update all components FlatLaf.updateUI(); + FlatAnimatedLafChange.hideSnapshotWithAnimation(); } } @@ -89,6 +82,7 @@ public class LafManager { private static boolean applyLaf(String theme) { try { + FlatAnimatedLafChange.showSnapshot(); UIManager.setLookAndFeel(theme); return true; } catch (Exception e) { diff --git a/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java b/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java index 21c84b9db..899361a6d 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/UiUtils.java @@ -1,11 +1,16 @@ package jadx.gui.utils; -import java.awt.Component; -import java.awt.Image; -import java.awt.MouseInfo; -import java.awt.Point; -import java.awt.Toolkit; -import java.awt.Window; +import com.formdev.flatlaf.extras.FlatSVGIcon; +import jadx.core.dex.info.AccessInfo; +import jadx.core.dex.instructions.args.ArgType; +import jadx.core.utils.exceptions.JadxRuntimeException; +import jadx.gui.ui.codearea.AbstractCodeArea; +import org.intellij.lang.annotations.MagicConstant; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.swing.*; +import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; @@ -15,31 +20,11 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; -import javax.swing.Action; -import javax.swing.Icon; -import javax.swing.ImageIcon; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JOptionPane; -import javax.swing.KeyStroke; -import javax.swing.SwingUtilities; - -import org.intellij.lang.annotations.MagicConstant; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import jadx.core.dex.info.AccessInfo; -import jadx.core.dex.instructions.args.ArgType; -import jadx.core.utils.exceptions.JadxRuntimeException; -import jadx.gui.ui.codearea.AbstractCodeArea; - public class UiUtils { private static final Logger LOG = LoggerFactory.getLogger(UiUtils.class); - private static final ImageIcon ICON_STATIC = openIcon("static_co"); - private static final ImageIcon ICON_FINAL = openIcon("final_co"); - private static final ImageIcon ICON_ABSTRACT = openIcon("abstract_co"); - private static final ImageIcon ICON_NATIVE = openIcon("native_co"); + public static final ImageIcon ICON_STATIC = openSvgIcon("nodes/staticMark"); + public static final ImageIcon ICON_FINAL = openSvgIcon("nodes/finalMark"); /** * The minimum about of memory in bytes we are trying to keep free, otherwise the application may @@ -56,6 +41,11 @@ public class UiUtils { private UiUtils() { } + public static FlatSVGIcon openSvgIcon(String name) { + String iconPath = "icons/" + name + ".svg"; + return new FlatSVGIcon(iconPath); + } + public static ImageIcon openIcon(String name) { String iconPath = "/icons-16/" + name + ".png"; URL resource = UiUtils.class.getResource(iconPath); @@ -134,12 +124,6 @@ public class UiUtils { if (af.isStatic()) { overIcon.add(ICON_STATIC); } - if (af.isAbstract()) { - overIcon.add(ICON_ABSTRACT); - } - if (af.isNative()) { - overIcon.add(ICON_NATIVE); - } return overIcon; } diff --git a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java index f5d240fcc..3ae0d9ee2 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/search/TextSearchIndex.java @@ -19,22 +19,22 @@ import jadx.api.JavaNode; import jadx.gui.treemodel.CodeNode; import jadx.gui.treemodel.JNode; import jadx.gui.ui.MainWindow; -import jadx.gui.ui.SearchDialog; +import jadx.gui.ui.dialog.SearchDialog; import jadx.gui.utils.CacheObject; import jadx.gui.utils.CodeLinesInfo; import jadx.gui.utils.JNodeCache; import jadx.gui.utils.JumpPosition; import jadx.gui.utils.UiUtils; -import static jadx.gui.ui.SearchDialog.SearchOptions.ACTIVE_TAB; -import static jadx.gui.ui.SearchDialog.SearchOptions.CLASS; -import static jadx.gui.ui.SearchDialog.SearchOptions.CODE; -import static jadx.gui.ui.SearchDialog.SearchOptions.COMMENT; -import static jadx.gui.ui.SearchDialog.SearchOptions.FIELD; -import static jadx.gui.ui.SearchDialog.SearchOptions.IGNORE_CASE; -import static jadx.gui.ui.SearchDialog.SearchOptions.METHOD; -import static jadx.gui.ui.SearchDialog.SearchOptions.RESOURCE; -import static jadx.gui.ui.SearchDialog.SearchOptions.USE_REGEX; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.ACTIVE_TAB; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.CLASS; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.CODE; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.COMMENT; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.FIELD; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.IGNORE_CASE; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.METHOD; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.RESOURCE; +import static jadx.gui.ui.dialog.SearchDialog.SearchOptions.USE_REGEX; public class TextSearchIndex { diff --git a/jadx-gui/src/main/resources/icons-16/abstract_co.png b/jadx-gui/src/main/resources/icons-16/abstract_co.png deleted file mode 100644 index 658b8fde5f54835615deda6e1c66dc50c1e5142d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!VDyjYyB_%0HK04TZfHCsE7VlN5u3x*0xc{95Kg&32(-Cfwl5<6Z4Ih+L^k;OpT1B~5HX4?T7 znw~C>Asp9}J-9i%6Ffo#ScTTC2~g^2)ND{xFi~hwG%zt}P&6?yVPIH(lw(Tn@pw6) OCI(MeKbLh*2~7Zr<2UdC diff --git a/jadx-gui/src/main/resources/icons-16/annotation_obj.png b/jadx-gui/src/main/resources/icons-16/annotation_obj.png deleted file mode 100644 index e1b272b2ee1a8574c247ea19b64bec0d78d7ba9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 481 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMffdHQn*U0JxF4ZZOgG7% zWtKbJJa@KB`9jxsv9YaPo@2Rl8RoID6#M?Nit9 z=TBZyKYvsI<`c7bpPRYu`1aG+-+leL_u}nOKYoAx_2=`?-`AeMyz%1I({Eos|Niy= z|9_yh)CJWC9_zT|{U040URYf$yT~eL1RJAnnmRZY+=ib(~v8yWEK6w|%*Zn+M|AQ&-i8Mn_3hOzb PqZmA0{an^LB{Ts5i!;Tr diff --git a/jadx-gui/src/main/resources/icons-16/arrow_down.png b/jadx-gui/src/main/resources/icons-16/arrow_down.png deleted file mode 100644 index 2c4e279377bf348f9cf53894e76bb673ccf067bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 379 zcmV->0fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIF6w#wHUuW*nL5>vZR zlg{G&%mT~|kL3ei%GW0*UOHUMs5XI$4uxe-L?I@SAefq*207}Iqtjm#e5*fP53AiC z)C|RQfwzxx<#_WfANRGZx{+tFDl8~Q?;~Ve=lM^*8UTTnVL?HTDz8uta0D@d28E9S z_)i8aLz^UE6PPKymi;2GJ`34{eIia-CtfAt0H61rk0 SPTNud0000_YP)*?Fk0YVb%?UEFajs1S?+YtYiPrjx0+ z+4YbyJXwz!SX#yqTlhtNQ%Ku9=RNm$j)&+(}lZ!UGGp|@|O z09YA#-dR#rIaGe;MBLe!ht*}!c?U}6YT!dfHDO%~>xtx&Klk-^WB==sC_vP4ddg4L z#GN10u$+QGf$!(i3&8VpF6O6+ef~&gQ#>AVqCJH_utvKMAuOeG%3%mn<<%9)yb~#4 zHc70e5sYyQ03$?zFUko7D1Bg1=6jXvg#bUm1b(pVKuC*}koEKGdj<=zdM#RWsl+kfRf;OU^G_BQh+Fc$z&F_AHuQYu(b)aq=H_Fx idDl8IBmWBc*Z2i=4uSP&;Q8VJ0000p(d#PxV(4ao^#JV?>+&chcHA(W9zrcuzIeZN_*SKBfUBi{Yn_Ku88)CIy(5o z14=m5T;5${pO7EA36uz_sNoww%td4ohv#73M1nBfuf4Ii#Zb`Xkx?c^#Wj|EB;1+9 zTAO`3)Mn^#lUbsMOIsNead(bTs~hdEii`#-c%_#Z93Byp8u;Rfb|2RBC;KZL62xLk z1l1Nr<$n(?o+_Scw@RxHl?15^Rr)FwKC;G~!x?W|M;u9M&TQbFkgoE9M-rMS(BuHC5=G`P)yJgg+c5gkSGyE3!>=MC67V4TE{LC1QiHL zgtP=*wN7@(3Imsxw#>*_Ndj^IzL}=C^$za75AQL|!1we04UAAq@t?V5Bb#UgZUG4( z4EzG7fl(j_5Wt^4A%Y+6o=Zbr1JA>~*FV!W_#&+LBY)3<6E%YPXuTrONvWZF=dMA!CpH1A6i=S1hD)jNZLIk;l_qHRMws%i&<6{(!86z&+_Xeq2LUy z@gWPiSx*oG`Xc-GAPbA2l>Q{EpT5$4d5YD{5>7tDj%WxVVNgp6u!Dg-QaY{x6p_7c zyuEjh=KZ@+P6gql0W5?1%bkOHk@$74dHeGWGRm< z7qqC1l)8CsgXQ_mx{~TFko5#JFufiqs%hzzqhJ?6U*?I$``5Ft4PT`Li_7EQ)#1tNWBm46Q)NSZOm`V-Q00000NkvXX Hu0mjfRObLc diff --git a/jadx-gui/src/main/resources/icons-16/cf_obj.png b/jadx-gui/src/main/resources/icons-16/cf_obj.png deleted file mode 100644 index 1a02ea3eb3570ab8d8aa6ff01164b1f2a0339153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJdx@v7EBg&L7CtS5!tL#|fkK=G z9+AZi4BSE>%y{W;-5;P}V1Q4E>;M1%=OoJa`ird2RsC_HVotR9j|&Zp(`A3$=vbYr z^y9{a9}i}1s?_-LV8JdR`C`M03Xfg&8b3aq`1A86P_KYN)VcHb4%Tb`crjyjy6o|8 zbEny|_ke~omIV0)GdMiEkp|>sdb&7={w>g%t4{F;L+_p#G zd(-Cdg@w86TGn0KZQSJR)*lx&yP#}cN8RQLjaw(3cyQtDqbt{6-c>2H)2neaZuGWn z3y7Upn7pWb*_lnZUftKNanY-F)vt9kr~}G+dQVF5nh;mMuDxbcPt(>3dv6`R@$#-w zgS%Oamvy_peP>YL-dVGcEwk(Jx9bS7YY%Yi3lEx>l)b#Ff8VUbcTYZg|1@k?O4!Vl zJvR=8OizrPlXdIW-De+PeEIn`Xjpf zzPLW`*up!n?xruw%3W4azOJHSb3^sUs>*fc?K@fu#A zkI!0geD>}e+YjB@f9&4j4Hs7b2LoW(k_skXk!A<#$u9}=3x*g%FOuP3SlLye)r?8r z?k@En`wO1}Ih+L^k;OpT1B~5HX4?T7r#xL8LnJOIpI~NUHLVS0Hf0qs?q}?H8seOk zl;ouHbOBRQTBl{?%}B|OUPTFvtXF?*i4pMVogBiz>CwLI`Li^&(4xhQnwB~+P1@zR^W3eds9ROf%(N0j#oBi2O)D#NJ0^9_NP)35+JApcx%=uE zdBMcW2@NYJxi1jEAe0}bmZrGDI%VqHzsyZchazv>WKqDIXD z)w=4}x*5~~Wj(zoC3sDUD__@s<-II^rKMk6e5H>3%Y-URAoUGO7H}AP|C}etK_{@}unJIB|vTnV) z`|RV3plNX*zkfyDnDJ(E9t{}?$lF=I)7;)3*qd1>>GExhyUZu+9E z++_vj>na*HH&kz|s$5szzN58qbM3?T4<_#G*?eiko|`-O-P%3>_^buTXYanT{m`BL z$L<~8aAEa-FaU-RJ%L}GaRbo4=#n76V2A@~K{CwwwPO#^8pb4Vcb9sP{e@3~9L@rd z$YLPv0mg18v+aP49iA?ZArhC9JD8aA96jqa9rFZ?yBIrm{*bk`v5}G7xqvBV(>}q( zhlz^wY+@1^^XlF&@DSkmlJta)bAvUjyIb2Yc9&m2EjSxlB6MSvV&~4Cd-v`gnFvRw zo=3ALMlDiOS|n8DRg)n4>C(hoTv}R(*qE{sM4e78n>Mjcs%zr6UsgN{jFNK7(#8u^ zpOvZEBt$Q=s0>}ZCU@=Ho|zU4^`43ZU%z@eRQz#^rES;j-kGg4nIDRaI7Bco1nzOr U(O$8_ALs`LPgg&ebxsLQ0HbVFVE_OC diff --git a/jadx-gui/src/main/resources/icons-16/constr_ovr.png b/jadx-gui/src/main/resources/icons-16/constr_ovr.png deleted file mode 100644 index 65964a92e80022db7a4b51b90f2209825a651123..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!VDyjYyB_zLiQ$MF*A~uJMrEL422WQ% Jmvv4FO#truIXVCU diff --git a/jadx-gui/src/main/resources/icons-16/cross.png b/jadx-gui/src/main/resources/icons-16/cross.png deleted file mode 100644 index 1514d51a3cf1b67e1c5b9ada36f1fd474e2d214a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)uEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#pc9z|8oUvpGGR zIewQohMmQwb32PmK2E{cnFqd3lIt6}{G}sK9v4H(?<_>HH8+34WOI7fhm?Wkx(lS# z)aRSG&jWy9=9XBdQeb8zwHm0=80^pI)&XGi{){gS8Cb51R7VHmFhpG5yG5$GB$ydL z79Kmy9LrQn8g2$j6hl?3phja*Cj>|lSgs2@n?+P8pjIjqQIZ~7exd|30|2(><{c&- zNyj!!&xNW+XjCd-mB92|*jW#8SVXi}CMM+#EiczwEga$7!$%GgMW*8zc4sG;2+SJL zjJR0(BUTM>Xl12-B18b_zn8D;B=PEphgv5J&D{{q-4M_kQK_hPv)(2?VE_O+Nd|-v z5}Lu3011JKASEOzJ@EJYHiIvB?)m@%({aE=uzGu8_Vt2^;B<7sG)3@!Vxn!ttqeAD zd0!YtV5QTrT^CWQgm}M9q?B+wdt~Q}4z7Qg?Y#X+l zMpP&wE*FUud90LMDHiBpdmCO)7u@b{Se6m2jg9#LU;+Rs)n`~103a%q5$zR8C+uB# z{c+4%jkRXTT9+ei8z{05DdlTAh1)Kvfg N002ovPDHLkV1nATH#7hM diff --git a/jadx-gui/src/main/resources/icons-16/database_save.png b/jadx-gui/src/main/resources/icons-16/database_save.png deleted file mode 100644 index 44c06dddf19fbda14efe428b9b1793c13f46b2cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 755 zcmV3^_07cLZBR}_>&jXObH zw2it@svr%qE?kJ(Xuudu+DSW|WWK!jNvbU^UO02#+Tt zYOko4%Vx8c4Gh!M(=Qem7g;XcE?n0Qi^XD?&*vX7@xPFCIh;%;@xMr?(;$(vo9j9i z6;riZMJyIWG#Z6r7^-I5HtO{{DwPWQ`}>&y+Y;!yjz*&a$8prX=XtO!3$0d5J>%Mz z1f8>Jnx-7^X2#7Yb#zC2VYfZ>c17@L{s)8{OuWBa3WHFfVXfhLv2t?V0V~q5R2D*D z&315l_#iF}b>Zoo?-;+7*`WOJWsMw(x3WXv`@U*s@Y-&edFEYpz0skP)dFfu zZ4wIp&Vbb!+|0+3Qa}p<*AH-eY>3q8s6?RA)zqP8W39IT5HLFG9m1F);gE|P`L7@@ zctjKsn1rA6!ZZR%R^(SjU!r=2o$yGp<$KViK~{B;AIcgvN+J+&Nvur+W(Sw&=H?z} zGMRW^U!Nl3AvWzQ3~C%Z*G*(?qLfNCq;tpg2yRW4@yl9;p3CK)O-@c8Sy))OUMiKc zQp#QYFZe-*@LZDInR^#F=Bm=!vA2i6tkEJ#i0aggzp2D%3!>h~r~3uLt(-IMoyFA zlgUq0Q544c8(ae&UR$8ps&snq6^bPY3v3xAmMW74Di$h~GCH6E3TaYs2#6A<7K*gC z777H71_Wa;(dfp+g-drPCSWu)#PInZi72LJ;o?i~$-U=y&UbQ89Dul3%3P+Axkzc* zbH-y;QF=hR{qLItf%ci2_&e5wNo0gnVatG?ul6Zw=o$I9Ljfn*ic3`U?>IfEim3g{ zujU&$-hy6wn;w(xme|zJm;lWJxtTFfM)q0`kX!Vu0+d${$}LCddK1<^htTe-fUYL3 zB`SdNsZD>RgvLj1<^@h6_+cDRK2Brcr2~>%$*5S)hyV33PV^teac3%|4lz@8p4?)5 z?t5o^?q+%^%)Yygo~I^U4VR!bTnWuE35hcWrfCDR3q+sxJ79e7Fg`&)RCqLA^2^y^ z0laVfadW90_Fz8Brm|r47sB^u1VgI>kanj)Z4`zMSfHlm8>CwXa$JVM`$2RrmZB-3 zN10m-!;BvH*Br3V8t`DH7m`jf#2upVDXl{5ff18_pzCPK1Zu$$CKKvd8FGeFf)+K<|x33pc7P&S#3GZT4mEw;nr(Ze*F z3&*?-4U-lm*#tber5 z%S_ceqB`b3ko6r~BbvDwdohTvP(3a(pq{x#T$yQsu#OKwEe}KuH^Mh@nxg_(Nw136 zq#a^3xNBke)In+!?qk3%4wB69{pF`Tzg`07*qoM6N<$ Eg55P&8UO$Q diff --git a/jadx-gui/src/main/resources/icons-16/device.png b/jadx-gui/src/main/resources/icons-16/device.png deleted file mode 100644 index dd0168ea92e50f4c56768a8a4307774445448f4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813 zcmV+|1JeA7P)s+KnkY`Eo6h&V=bWA+7NR@wyLq4U|DET3pYsaU)z#lsRm~+9=1NbpotRP@QR?BSgMY-(!CUtKd&Fi%mGr^Lm|%1SMffWkU;#IdzCBL&UGNwUk% z3w3;hXa?gNmU=Q(-80<)DkYZ9q5-ko%lN?eIUdbj+ zNQ|)`L?h9?t^*3D5`Kc)lD^?%tP?)NJ&4LSybYf~_iP~;JICqkrwCgjflLIcSm-hX zC7Z06WmSkScoB}2V{qQ7?_VYKcURCGd(G=TlEDO~ z(CBCi0p}ZRwi-}gR@J|x$~&{u^2NTfu7%?dax5>aMwTT;I$0A5atT96>=BBk3YfJF zh@+)=F+%g#I1b!O-j!j`Lw@>R%*SKs{{1;xde?4ixgL({f}|CJkYXH0d-x8DlCQz4 zG8`#53q@0*s0vhQ7>|siFmpemY*G9g`VjHn7VY{LBE)mzioa$e3H2M{(9cMCAqXOR#lX@1Tgnr->YYTBeqS6v!3>T6kRG3WqCo3x$(B3 zLi6Ce2?`$`uhseluh-j80yoh!G&JN(G)7612HZE7ww8Df;r(Fq7~K;+Jh1#9Xj;Mx rxbAV+2r)%9SQb^qJz1*-|E>Q8ss6iyye%@B00000NkvXXu0mjfIy`F+ diff --git a/jadx-gui/src/main/resources/icons-16/disk_multiple.png b/jadx-gui/src/main/resources/icons-16/disk_multiple.png deleted file mode 100644 index fc5a52f5e4a7e8eb54bcd59728e88a2db5f046ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)h|XiB@gI zjUjC!t---iaHXP+)r{6Ojx+c3eOp)#T8qGEea`PZ=iwYN#&8(f07GMovvqMO`yt0_ zV{GIqh=SUrg*L*EVuk5U_QA?{|KdLZm9oqA&I{b?sAXd2Gmr0G+E?`AZ62*91#}$* zh%tuyPiAI&x-YV_mTQj!pIA(Bw8r7bRXMZUbwz}06c5|lmvZ$Nsq_x5imrlk>1*KX6(-bq8O z2^19ECQj9aBx7KUR8RS!t_)7SYimBz-4JgeVb>Gt0MQyT5n9SDtu2!)2FyRdD{|O( Z{ssThAulbFM%4fS002ovPDHLkV1fh$IWzzO diff --git a/jadx-gui/src/main/resources/icons-16/empty_logical_package_obj.png b/jadx-gui/src/main/resources/icons-16/empty_logical_package_obj.png deleted file mode 100644 index acfb2238a7a230d59e94955bb4d6d38af8fdc5b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*YgA;Ezkfh{d_r7Y{P&-K zAHV+LAK;&nk)EEO77`pB9v1fh|Nl#uE}cGo`sB%zEiEm@#l@MKnQ?J(VPRo`fq|Z$ zoC5%bl?k@7IyaIcH9L@rd$YLPv0mg18 zv+aP4GEW!B5Q)pN=NtK&6?j}P`u&nwJi8(K?|=W;)g4FFRGzfV4!D))d_C0t#Mc=$ zPOKZ|3*Qr{blTCp=|p?$V(0hM1=N-`aXjWz%P diff --git a/jadx-gui/src/main/resources/icons-16/empty_pack_obj.png b/jadx-gui/src/main/resources/icons-16/empty_pack_obj.png deleted file mode 100644 index a2d43103f01ab349950bada7aaedd538796ae06c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*YfN-ZTwMI)*FS=SgZ%^i zGcwZC(o!QMBmV#Y-_p`jTwI))nVFuRo|2N1l#~<}78V*B8WFEhn05pRjxO!px zE}$Zjk|4iepcZt%;P3xj5Gc=>ZI?0ovtT%mve!(Tld0vUj{8HBiW$p{h zJr|ALumV0h_>LZJ=tyk|4ie zpk9&ygZwN%MWANJByV>Yd%I+VQXq%3z$3C4NPB>>+sSM@AY-nli(`ny<<|b!d`$*C zZtPkHAIvVik_bNNd-U|K@AXzMn+*SbQt_QN*)0C_pN7@fZ>}o4Qe`&ftO>)5BYlVb z&htANOShc9CDy5~(s#s9v-QWT-;0BIJC{xn`lz%tC&5!`rb}Ri<_E)H!VDyjYyB_c#S%MS138=p9+AaB+5?Q;PG;Ky8A_fmjv*Y^lM@&i xmmN@GW4ksbgpJM3++Bn5nGq{nv#0?BgMSnAkE+McAAzbFJYD@<);T3K0RR(~FuVW& diff --git a/jadx-gui/src/main/resources/icons-16/field_default_obj.png b/jadx-gui/src/main/resources/icons-16/field_default_obj.png deleted file mode 100644 index becfe6b118bd7f5ec63412bee50aa6ff2ef72b31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDUbu3>W+_p;~W{za?0=4Yr zIt42{nm2DadH+8c09By_8JTXN5LZc%Uob=skYw0&M&~?GlrhQM-GyIb7sE{;hqJ&V zvKUBvfU(=jY&#%B*VDx@gyVYh3{F;_BStn0doq&(+%mIOTM{oOa;Ew4XK=6^t7&R# ePE0W3U|^_^_sE}m|GykiBZH@_pUXO@geCxhNkORq diff --git a/jadx-gui/src/main/resources/icons-16/field_private_obj.png b/jadx-gui/src/main/resources/icons-16/field_private_obj.png deleted file mode 100644 index d3fa87ddd889b2ba20378660b660e65ee4f8e090..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa2=EDUz2W5lxV+(c$Atf202GFR zTyu-9Ko)CBkY6xJhT-=%zF?pLW0JSK3%gii$7>*mv%n*=7)X17vD?XPJ0L^R)5S4_ z<9c#IBNJPYBoB{{0NY~4DF<_SgbkA%gPpgWWY~OCZp*aa`;>u-89ZJ6T-G@yGywop C!88^C diff --git a/jadx-gui/src/main/resources/icons-16/field_protected_obj.png b/jadx-gui/src/main/resources/icons-16/field_protected_obj.png deleted file mode 100644 index dc80489bc455b63fa58d6373c3a5f37a72cf49a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU-8V;L_YC#jGu79%%Wv*g z+SIGGyiR6SqwK0CxpnOd|L#rucRuGo7yxwu!MB5XSwM=fB*-rqA`T@PTo2qi0hD1( z@^*LOm)ON{6UgB#@Q5r1(jH*!b~4)z$k6q4aSY+Op1gybmFI|2#ljwL?gcz6gLfqy uyK0-h&A}yY{INU#c=6t=KI8l*FFO^GI+ZBxvX^Js diff --git a/jadx-gui/src/main/resources/icons-16/field_public_obj.png b/jadx-gui/src/main/resources/icons-16/field_public_obj.png deleted file mode 100644 index 40a5ef1c8e99b56f5a241662542972610ea853ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU6=?G{nUUeLu%veH{D~*l z$#n)5ZY=HG(fA(>fU3}dSbDQ9P>8D}$S)Y821qh&I-_$QD9V`R?e4-av5Vm*ki%Kv z5m^kRJ;2!QWVRiUVc_ZF7{YNqc?KsdkBiZq5QQGiN3HV`jveVS^E60ya$8{r%(TpX93L?>_zd z^!4}8Uw?l5{2f=eIIV6)R@0i?mbHZ)8;d(P)lAw^H+fgjg2Nxa{BE4Sr)Adu&UptX zEbZ z?0U1=_2$!REFPTb-_&KWuETIuoAH%R8CN!C-r8GpbyMd5|NnuW8ls>%TT&h9bf=Oa zzhIz8C<6>GVxU-NU`+CMcd7T-U-%Tr;VkfoEC$jZVC;4>+YZQ>;_2cTB5^tP)N8Ru z2a&dilFvUEE;$_F(8dNPA5^uUWz_P;us~L~-N>)*ml<=PT)&ElN+c2D*>I M)78&qol`;+0Bn;cG5`Po diff --git a/jadx-gui/src/main/resources/icons-16/final_co.png b/jadx-gui/src/main/resources/icons-16/final_co.png deleted file mode 100644 index ec1b0346d51181324a9efaa0f41c65552cbbd76d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j<3?z5j>~{cCJOMr-t{O?xg6o(32ZKqS9Mgc} zEG0pH!9W292d$M~fPBUzZ+91FK^~t^Kn`btM`SUO_5fqIli7AahK#3+V+hCfx(K@^6+>g^d@v4;gkbWsEoXE%32*i1tcpTNXd5CcIl)ECgqz|2rE6EW}s7R?kl za1q`0GCkMruC6-2LANtwVlsgzsp4?{@7$`KBv!G66>Vie3h?3OmEEkjwdLG0PgLVi z`!N((f$A@n17Ldj#`};0I3@iHJ5M{#IZz|UIYRm4(!uV7eYIYIwQf&}_2J~}>pQ^n z6o8--^T(=hkBNQ_k{-_GWE;FMW7!p}f{NG3nHZ{D5<3d8&tLh%a4AqqnjMkr3m&fkMdECD3N5}Unig5wy40;>lo4j~k+e}v)` zR6)J8Mk*u=SpB`p6o)7j?S0T@9?bz#m@l>gc*zk__|*!FMcHwP!gwLJvS~9c0px8E zWg@#5J*h%>dq^uaFBvVQ$3&c*y#>&P@VnG_z zkezqQ&je1b~~$O}L9 zo^;|X_f#3CS5n-cFHBf|3c+u^PpWoka6G0Rsr|AOXUJ zbHD{5nUGu>5YB96PUmjGgM{$-j5TbT8bBGbz2R zHjvpHkWu0*cCs9&;{|Ugi`d3|T+)Vj%kXX`qqQ>4W)|B!_mMlW`2x#YyU0W#8Pyvn z-<;pE4zUG8k-yYxmFW4%eIAbtF|hR_$8YW;YMMc&ZY1$9z5S(QZA)e!-q6)Y`+^>Z zzdYprlOaC7jZYg%{Ey!L(s5u9Pz1(+vk%UU4EzNDb1nO~@as(g0000-FBWz;w|MKf^gQ{O8O+b3|2{1~W{FUj-UvM;m2FClYu(b98C9 ziP{M|cqlFEa=Hn?IR3<HO`5-tENcd}*r5{^Y!z+AtJuvM+JW_p7a0I=c z7n-Jun?#$Zdn^pr#EGs_BIEd})a~UCYnu`gX>*0l2E?My4f$r;4(g zi>qlB)NK{Cnv3i3{xC=W!RFDM)GEiQ*TvdD{(}Hp*>}0j&W<%@^6%651uT%eG_Gjs Q(*OVf07*qoM6N<$f*T&PEC2ui diff --git a/jadx-gui/src/main/resources/icons-16/icon_forward.png b/jadx-gui/src/main/resources/icons-16/icon_forward.png deleted file mode 100644 index 97aaa4192402264896e0d2ac8a2851bd7e3ab504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403 zcmV;E0c`$>P)TKq5>DLLL#VT=Aupe2qIF*2dF?yS8habQ3MH6F6|W} z#EEup+9i|C{aehP8D^4h=)waB{(H|o-#z@?D%`;83e22cU(`vW}P z%!Zf&+M|tw0Um4VUyy_^dexNC&CTL7des!Ohc6Pjp?hsnxgY<|?v+K7An8q@z6m;G zk0<~r0O)CW5&%T6vxR#+Tw2T>y-ETA9LEJGcF^zl#QG!pYvP6;&?We3ho|%aO6vfm zsdvo^^2Z|q0P$V!T&zV+WC+^YD+b%Qtva?(?5K%Fm5zDc|;rq9$mTO|POp1;eix-9)S{s4>5$fR%6$DRNH002ovPDHLkV1j_Lr?db7 diff --git a/jadx-gui/src/main/resources/icons-16/icon_quark.png b/jadx-gui/src/main/resources/icons-16/icon_quark.png deleted file mode 100644 index 1524100e29c56643a8e0ddf833dde727c9c35742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1086 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|T2doC(|mmy zw18|523AHP24;{FAY@>aVqgWc85q16rQz%#Mh&PMCI*J~Oa>OHnkXO*0v4nJa0`PlBg3pY5xV%QuQiw3qZOUY$~jP%-qzHM1_jnoV;SI3R@+x3M(KRB&@Hb09I0xZL1XF8=&Bv zUzDm~s%N5Spk&9TprBw=l#*r@P?Wt5Z@Sn2DRmzV368|&p4rRy77T3YHG z80i}s=>k>g7FXt#Bv$C=6)QswftllyTAW;zSx}OhpQivaH!&%{w8U0P31kr*K-^i9 znTD__uNdkrpa=CqGWv#k2KsQbfm&@qqE`MznW;dVLFU^T+JIG}h(YbK(Fa+Mo$B-hQW zGpE-EPJVT;@#Ob=XMXQ9H_l%iW5Uz5=z-lbq4)`Fy;x`Zh^>2lPwSb5p3+2vM;{9_ zR&gz2>U-QFwQbwwJ*wX;PrUwL{q1$*1B39Xso~kCQFh0!lrVj*iZw{>n`r&zcg+pY zrGdif(l?hiEXx%6*=~M${fD9~p>4U&icJQqLYGbozqfu;gWk1XmJ1>i8vD-iwKyq0 zG*UD4`55+j-43qc_@u)pnA4sg++-=&)%*Rjn!^0afxA>bJc(ZGyWlHB_=C@Bg+V%9 zTkd>b=G(xTbN#gaDM=->-(_tZ#Q&W2$QBOxTQ~8ua1nQp+r=ZVpQ;?D@o8%9glV)qy zMBHD%%+Bl}Hq<|E0t7xN9K|7zOj9_!I_Y=!T4uLGM_=>InVw(YcwUZpt; zXRb=A?E7cp4AY+_&%OU+y~dYg;&)D;kKt?k$lmDSz%xPA;@n!pW5!s(W9{o1VllsV}*IdZNREYoJWz>FVdQ&MBb@0P9P9KL7v# diff --git a/jadx-gui/src/main/resources/icons-16/innerclass_private_obj.png b/jadx-gui/src/main/resources/icons-16/innerclass_private_obj.png deleted file mode 100644 index 3fbcbe916d880d6aeaacaea8d8d34f155f70fa3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47#jk7LR_CGB%aVTIALINLeubs ztj;Ijn2)|OU&|U!NNUYEyxh3S*P%1Qtv@bgMpo49g1XHU8n;fGeQf2~M^{wJ?DT5f zj2pcz+X7Yh3hdUG;0-4C;Wgp5BuZye7nzuWP^Y@~%;XyIG5u zb-TZPXVC0p%j`P*?K%SN+5_DB!h@zIWiPMl-#2T?>9vRNo_zHFY1pik)#o?wxp63D zdScw1tXr?{22G3m`2ADDg3OvtEtTsUm!DY^IWsY1Nq*vj^n`h7^NuaN^XhK;qO9Cy z1?B518a6jnZ>*|ZSKhv(wQ+Op!}kv+?(5lnX~UkIJNMn%J^%Qu1;=OazOnt#o&Cq| z9o}$Z_4CQyC!K9hy4#(!v-&ov?|DMP*P5EQ&CUP802pXA0Jvw=n@l?3?(L+qj< z$siCmX%)~m#w2fdmwJ!=g-?MT&H|6fVj%4S#%?FG?SPCEo-U3d5|@)bSeO(GSq)ta z6$OkZGIp>Yk-2mCuIvt$1x!p@b`KXOE<7lAh$(?l(Qy3%76FbAPlT8_KUlJuL?oVugj`r|@o zWJS#`sM|cDaqFbn$5w8+vj6O(D=KAndNppwjoy}R0sd1{W9JnnFDloqanY-F)vt9k zsB`n4l;AZXE_ix+?uxqdb?rA^-Zg4)w{G{h?+lu-e~w*8fL(ilTVHt4w506iRsH*B zO*^!3$?3I+@1A`0{%P2(lsz{Ng-lP3o0E0x)!m?JaUZ{b3Yi|4upqN$Q%mK##^q<$ zM9xgiSdyQ(AU$DT+Pq^6@4UL3yR4vmT}8v@hU$$~mFvpeceFNcu6_9a!Nh$%n=ftH zb93juTf65UpS9rl?ACq& zO(_ZT3x?Q2Q<6cgC)XBeA7hfYyGy;t{=%m~4rhT!WHFHT0Ash4*>*t2Sx*{ydYLn|oIB#zLkyMt=M5+1;C0cIQn3qn;i6cNKwx&FK%A zI5$L9sHj%%+@WS^9mUbaGUMyoNo#aVEC`;iAyNpU&{RwRK{ru^uDGp#yb|O*2|rZlt6%K6&vXC4|v{fx+aJ UTeE#!0?3yPp00i_>zopr08tcrvH$=8 diff --git a/jadx-gui/src/main/resources/icons-16/int_obj.png b/jadx-gui/src/main/resources/icons-16/int_obj.png deleted file mode 100644 index 31caf5a7114c386e9c1a9c6af2ac0fd2ee9203bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47#jk7LR^pTd2n>^z3UfW7Q}7H zk6l-ku(2?HLviB9(v*!AXJ9es9 zm+a}R+TT{OySsLOSIxe@hJy>Io>{l_(#{RH&K!FZ=eIC3a?QG>SN?+m&}%~uczu4P z4|KFkNswPK#1|Bi4275ag@EQUCV9KN)O+kNd%QQTfirty7dy(08#15mYBv-${ws8Gnp?@W)zh5fO5RPm y?6*#T>e&g;e_ohkzg#@?e)*q+->1v}>o(tLXQX;oeWeu8^$eb_elF{r5}E)GekA(< diff --git a/jadx-gui/src/main/resources/icons-16/jadx-logo.png b/jadx-gui/src/main/resources/icons-16/jadx-logo.png deleted file mode 100644 index a9a2d08566be02ca93b41eb6d9a24255ed28e18e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 814 zcmV+}1JV46P)LQ+-I&K^T6VTj^}m+0vGdtvStENM&WgqEbS%tYKd2tslqx!1{ zj^Dj^@AKSy_j}#|LI@@!PrGgJdX1*c;c!F=g+jLD^Z6i^O5e4ZOeZcjT&|g%?-w|j zTbi;|lWMZLor1H5T1J`-Dwda@4~b;vhpLLo#c%93JKLrL6$QH%58GXY!XPUkdf7&D z_eu+kmn}&qF*3P-tWD1#-Cf<|F*3QFaye8)ox1Y2^WJm+dD74bq-_RbULoS`e-+eIrPpR*I?L3_mE#8u_T>+$ISgm&@4dgcr;1^lELSNfCL6I zk%58tV#?*v2Wv81^^+&KpP<^R#)R7eZvTA*$HrlP@>lf6d+~f*2CR8muxT~WJI%<< z&f3GJudUs=1GDDEwp1y>6$k)<08=vyndmJAAE)^dzYdwg!}}>b*u5SJcX@0y z=BiZSMMmRu<1z43a`4Ue5@Y*vSaNq#5zH}ah`jxHyQ>myRtu^hw&QVODLP;GA>eKE zB_cK+#oy36B!Q~Zhy}~Tv8e7Ok|a?$w`K#ZUJuK@{h$M!R=XEB+~5A7cYF!Qh2C-; zD*5qu(xQ~8ebR}Z0Vfoqa1`Hc!tmHAIMiXsTtUByv<>sI!q5&5g8ggLoiiW`3Wh>7 zoyBUY91&vi2#4B}I!tHzf*RX6dWH!ciRTa^;Ih(pSF0Go+DvdhZ3COrN^~n$<4)Hj z6LaFV#>PSFFr`dMQl<5z?y!Zqkiy*SBZrEgk%~=ESX|V4oy@O2PVAl!6O_w(K`Eat zZ!{V$XZBmU&KEyQ{1^DEo??4;?D*c@WpT70{LK_6Pf#4u*Ypg!JYfy>CXDz-f71{M sr$JkwfjBbMTUAxM@MkmqUpoW%4nfsj#JY?JumAu607*qoM6N<$f=D)juK)l5 diff --git a/jadx-gui/src/main/resources/icons-16/java_model_obj.png b/jadx-gui/src/main/resources/icons-16/java_model_obj.png deleted file mode 100644 index 3918c215fb5624cc9cc71d2d176f2675c3232a56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*YfROurCTo?Jo{kdf$P4- zODr{yZRerOkN$t!uxpyyzBwA3dX@e^?ECkyZ+V@}nijc#=X3u5{|_{S zAlUw_)f%Wsq$J2M7^npuF!=jF7X->PCV9KN$g}ba>;-Z-3p^r=fwTu0yPeFo12Q5! zT^vIsF87{y6gwcm;~Ln);dSxv`>m54`z5~iKI*gkEHm@1pG1ArLlKMTA{7iDUVFBv z2&~zf=;-3bbmFCK1)uN^3s%eL{5vk)iv6~<^ju`Q#NO`<|10hNyO=+^MPB;@&<+Mq LS3j3^P6_E)H!VDyjYyB_$5{{8vu@3$X+efa$A z>-XP3fBm`t;>W|6KOVpS`Q-JF=WlPK>KYaQ1{pX)=KYl-W_2coIA8$VWdjIA3+fP5UC+vCl?#IgyKRY{#TTGTTn=EKDo!?|SryhvRrq!4~IMKhU%V2$n z;hJ`%m955CHf3DdlzD4!&DBkr|Ns97`g(AJ`=R@G0bS->666;QbSKpS!{sc&2B5)= zN#5=*^&a~Rp8`3Y1s;*bK-vS0-A-oP0U3)tT^vIsF2|mDDb^Su(fUw$;zyO`0n500 zPfV$trupuF)tsl@TPwcbs+arnhx;OXV7!I;y}Ql)F${;?1rB;mOFbUq|L`r>hQ!F$ zriBvO4YG>5Ts+R(7^+3i2d-Ffj4>gqf2(H7?4!yDd<06ksv_qz>zEwhNE!D zdoO2X&04>djX~LOQ?BQ#qNR2RSe_ROCF^u0Gwgr8%hu}rXU4iJ#>e$Q_lbZ diff --git a/jadx-gui/src/main/resources/icons-16/library_obj.png b/jadx-gui/src/main/resources/icons-16/library_obj.png deleted file mode 100644 index ed1a4d626613c6fd540703d781cbd71be0cf4019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 461 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMffdHQnS8?|mhSVKqHS6>nHfuER zl;}Px(0__`>Sfjj551`g6+3D^oY44iK;gv>g%1ZbUTlzfut4C!41pUH1TJ(4+~^Rv z&>(Q4Lg2%V9TzGDu5@`{?()91uyAjN$-yG~Z4oLPJw-Nnh-~l_`Tzev&_Y^(MQW0F zfaWTf1o;I6Z6N>{(lnc=0hKc*dAqyV+a(*60y&%o9+AaB+5?Q;PG;Ky8RecXjv*44 zThE^sYBJz)xcGp(MnTXwNl@|Z|9X|&jgKENy-z7si)4AD9>M4s$uzH!v!#%A&5fM$ z-_DUOlV9sH)o^J~H=8R{+_KhXggTe~DWM4f#Mh>; diff --git a/jadx-gui/src/main/resources/icons-16/lock_edit.png b/jadx-gui/src/main/resources/icons-16/lock_edit.png deleted file mode 100644 index 116aa5b7f16df8dc578559b18318e012055898fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmV-j1ETziP)aB_TViqb@}g8~$BiXmB+@3yzMZ{VN7WC4D^zmAgoT`rf$ZnuMFS=o7-ne@ z=zLdKSKvPYCEIB8v)Ajb5=9ZwXcRop>!*X`I5?e7XDfBVd{17oh+bK*PKiy_4nC-jk;Xt zueW*fk~5~DKa!!CX?1tRMiZ} zo>R!oKY_5qVCh>5Qd(R|3mZo{kck&B90vmyjLAatX+UMjooz_PhLK4G;PAF0J@*J~ zzKlFu1yQha_(W5=5ir=J99ke8o=Gnas2Yy`-|!W=1KRFoY&N68Pt=E)G(Jy;nW zMVep2;f_h8ovdCaRJsd_h{VJw62TEHL?*Es&!DWP72-lKO!*oz>lKI%e1h}jHK57nhq2wufGe;=lf)bV^ltWZi);*ZOL}(uO9zQ_izDih2&1l;1BOiW3;*%(J zQ~4yykev(AC75^LfTh9&e~Z~@A=yq~k|qjJgd{1gNuvOO$0ks zMIj=HnnBRUR?tKXG11rxCU4&7dG4NbuvR2_mEvc)n?Cow;~Wve|KR^>9@p5l)|QB+ z$jmun3q#x>;ss-PW_mnr2MHVzLAl1RW&0?VkixF*4t!St0YVb2wnKdU(kmOHiL;aW zK8Xte%(k>MVGG$E4no6dcNnb>BhVHHGD&1pv4YZ68kE2V03t5#PCEFm7=ad$6)+3B zTCmn*?A?=u(o~ET7~-7g0)ZB=6|lumi4}B}MLgy~Ysy6)Q5%Al7|05&1z3Jpu>cF8 z3?VXs*3<}%h3`5Wld)N2zJnk%Agw<~3k)sPTLFd=F5;d8-bj-09SkQuynfflNcZLN z!^_37fdZvzrq=9~mp*($%mcDRKC&qvaaZuX+C=AT6O*~tHl>0mcP<_q>-z%$xO(@! zYluq5a8VQI$S@4?r*v;gPo!QQ%pX3A#>xx4t=w-L6COWx?aj&`f+!YePsFtj=hOQR zP3=E2j@9L7s8;T^&s?u(Hdpu?CubjMrGn{t_37>9$|AD)QE08weJlKn8|OyjL~7oP zC8mPT`jzuH*Dh^I0048RGafUIT)4H~*m8m>egI0iH=(LB%b@@O002ovPDHLkV1lw0 B3a>O#5H#Y!1V)v}kX=PdvK z|3AKg)5dlFr(S+0_F(<)<#B^a7u?G*I3qN@3DD)tSg(+^)f6PgAm3`|aF8lI5V z`Q#h((KqI6S;GlQt>=@wPdeM2bhkTcXZ3AT-}8iouQfGqo16dt{}0qnBxqc5wh^dQ zs3gcQ7^o2yFg)77UkE76nB?v5BG1YzuouYTEbxdd2GSm2>~=ES4#=?gba4!kxV-h8 zB^QGN59`Gp$8_D^*GCF=^G|CE-j|gTchP=@y2Hd+Mw7tMOor2jF54K)tu7ic%rBRl d;Mc#LyWk0b^C1bIr$D0^JYD@<);T3K0RXKNUHSk3 diff --git a/jadx-gui/src/main/resources/icons-16/methpro_obj.png b/jadx-gui/src/main/resources/icons-16/methpro_obj.png deleted file mode 100644 index 3e4c0d7853c1b6980cde9e8f8a46770b3192959e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*>;F$1{=b~~|JB6plU4W4 z(bzphefLcD|IcQuYnR{LtF)7B|(0{K=l}aLHlOyE1&|#ByV>Yc~)M5y+96Ufk$L9koEv$x0Bg+ zK!&rYi(`ny<+P^f#mw3`gjI0jEwKbLh*2~7awsAp~f diff --git a/jadx-gui/src/main/resources/icons-16/methpub_obj.png b/jadx-gui/src/main/resources/icons-16/methpub_obj.png deleted file mode 100644 index 30041952863fbb9fbbe0e9cc3e9e1c3dfd9b7aad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*D|3SfYon)ZPnh1+1m`(9 zzKe@f*0mOH>&@TTRl0qG{qzL;8S!4TQ^S@Q#IGtzT2)ZEv8-@oY0LhWroBxq`&yc| z)_3e|?AX!RxubE$u?f@ncC0=>bM^TdTQ1H0|NlSGlKe^g{{boak|4iepa>qoa8|Mm z+hKJO$xC^VF0*z>$j-3?$8JydD54i2$Dv*ViAuY9vj|pSE-Uu8W5+ zKl~2{KuL2+_02$vy(Gvl7%C{`&FlsgVodUOcVQPx?0602a29w(76WMyFm^kcZ3kq? zd%8G=a9mIJ5as1b@DODaZ0d1vauM+8&}!;%;9z8^oXqxp`G(o9K&1?xu6{1-oD!M< Du!uF( diff --git a/jadx-gui/src/main/resources/icons-16/package_obj.png b/jadx-gui/src/main/resources/icons-16/package_obj.png deleted file mode 100644 index 0afea5b86397301830f4ae696415e68e01d1dd42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}LV!<*>(7t7-(Fny^yI?*O@>FC zjc)Iscd$zL`py~qOSKM`YhT|neS5CP?n13|tGibwC{GTRUze=9G)8Gbq~fATrQ-{l z3T?#a6+~3}JN*CuA7~^d;J!5P7En~OB*-rqs0J%wU^L;{4phXLjQE%inZ4pgiy(*AH`!qOa-N`HrW@v>`kRQiJ?_tYD`zkh5`tI^?BGoYPR z2fwa!#Q_avED7=pW^j0RBMrn!@^*Kzw@WrC1#&nGJR*yMvPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0ozGLK~y+TO;Sy3 z6hRbx{V_W;i4cU95CS3WIX68jf;az zs<-1N1;b3gdR_CXx}EeG9~{3?k>@@HDXOx&d+*)e_fOBrT_284)%zEMdd3s$dimh$ z>kc-nx7~oM*0E_Mmm=bvsFS9ru$Gw?Y|hy@?_BeWRbVUNy%$Z%3Jy(ON`nm}LQS@Z zs_GY*wa4uQrDWEf^Wrcj8b>_^6bbkN>tQf}*4FtQ0g-RPJBcyc1R=()g_26kH}i3r zz=dda;%){Z#0nW;5C|}^|A4(?dSJK-Jm~3bjz!Kofat?x{y8Cs3SM(czk7-bPj7vj z_|JZ^5x5>69U%Ra0s&57$mN``5Av|Wo_&fJj*qufxv(C<1WFZ7GzOQoNCkhiP`B+{ za-;i`9R%xF_;wY%gNxPR3pv6B(mJ(~N0gB^Ql|f=Za!KEK;hU=K&&+H+Xr9*YfVcW zqokZHgWPp8pHGM6u9`)MfQubnR=Y1HWO3(`_cf+b25@DJ#zdQm}8GzWtq2-QnZ8W6mB^kfeK5f%S{ zUW%tGMCwrwic~ZrQcG=4f?5bkV+3dRk8hw6bk~y$KX#b!y*J4EJ~>;dRASqrSu;ZpM>?P}K~6AT zWv6Dmq?v&9LdXC(m%WCO6ma_di$R(v$@ad_>@R41N3N5lSJq9@6CGhX84-$%Xrd_6 z;){?{E|Ytt5$S-&Au>t4wDlIxdkfe-a22LMj``McG};r8@{GsRPm*+8fFey6C)@ifDBXVyTw(N@Xd41b45OFg6x_QA zpwLiigyy~cVoPxW^r~C7ZQpr%>1$*HKmv~AY-qJw4;gUecS--wnqslISSS=^KA&Ic n@BK|Onfz#3R%n{$a)0j^sqv5F(1NTL00000NkvXXu0mjf3S}fX diff --git a/jadx-gui/src/main/resources/icons-16/report.png b/jadx-gui/src/main/resources/icons-16/report.png deleted file mode 100644 index 779ad58efc5776825ef81064a042eceba274a928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 649 zcmV;40(Sk0P)sm$HQ(N)Ek< zrc#vXMLdW}TWpphCZsGREkUZr{Mg;M&b;luZ0IGA9rnH1`DVU1->eh_0hG(-dw<@) z-1S-xc+D!@wd^?Z=a`M%%phe@J_EnT0QpH7V3 jcG~XA#&PRl)Zh6(yXt(^KFGF}00000NkvXXu0mjfDwr>g diff --git a/jadx-gui/src/main/resources/icons-16/rerun.png b/jadx-gui/src/main/resources/icons-16/rerun.png deleted file mode 100644 index 0de26566d4102eec080253c2d08985ec58b14838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 685 zcmV;e0#f~nP)`!iy8(2_#ButL^3%VaH2WCpD^U)OZxp@C)2#hU)y+@T%ZNzJigNk%37 zz-WYJwT%teVfiEI+B*@v4ey@58(ld4VY_&5-ox`e@AKg+0U-I`y79bmuw_~y6+4rZ zBG5EdFDS+@M0OSE`>d7SUDOzKZ&h*4eB1iX7tOd9RiYtW2mQ--bUahxr1`i{RG@dM zL#}_X=DDO1{;UI$pFu=dLYT_=5d8WC-sLfjr7UO-HKMAwa=!>)kEhvuwre zuW3yF@ZxFCkI*+ad|5kOX%5zu8IQjhan)UqgSrFGA_0nQFn@Z08DSEUToCSz4Z1ls z&fDbq$T&7|6iq$_uDI$@q1_kQ@dfqk*0>{SDL6V)94@)ete)j++*>bIc9sj}Y;R1o z#OpH+Yt-^4wfv{nern^iVag8IO8de(|Ml<%@O-40!dwX61{2C5s-llVw2V@@N0oo_PPieZ!0Y2~+R( zk!(QTf=B;X9DnzJ@u9c>OP4(U@7{849!UlyO@H`*;lVfmCvAW6f9CF&{}ZR*{jXDW zb_vl21ozzrYJBy-Vb$aRjjJF3@7nm}zjw#A|58cE9uZ}LbIY~=6ShA8U$XeY|MDdd zfQCH!?_7WRzhvaG%|sbsT7Kz&`}!yUix%Do#>T_{_Ei`DO9UTSBkH=Hg(w4*^UnUS zTk-IJ<+2C=ZObqG7Z2FGlB7VCN;>(!bn*TFHYMl(i+Sx`L~=ArL>~EXU3lidsO!!J pWF;gqzXSh89JkLNxXeT<1_12n>%V}Y6R`jQ002ovPDHLkV1iLCz99er diff --git a/jadx-gui/src/main/resources/icons-16/static_co.png b/jadx-gui/src/main/resources/icons-16/static_co.png deleted file mode 100644 index 655c9c069114cf3a2b2815a3456d9f0f4ed34b71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j-3?$8JydD54i2$Dv*W*mO&w3Yp*mL|p7yyMK zpdh68G?2ww666;Ql41D0jV~A|z?kIi?!qpX*zp?3;VkfoEC$jZVC;4>+YZQ(^K@|x z;kce$5SCz+P>^QEAb8Ay>5QpaLno(!6a$050ZWzU+dqqeDj7Uo{an^LB{Ts5V~jDq diff --git a/jadx-gui/src/main/resources/icons-16/step_into.png b/jadx-gui/src/main/resources/icons-16/step_into.png deleted file mode 100644 index b1a1819238c6de8f9e50988f4151261fa6ba64ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmV-j0iyniP)o>#A+qW*AYQLZl(!&BX$x7Ik;qO170ssEM z@$bKXf%rGW?|(r27bf-TSv zD}TdX0CM*JhkLO)8|Y^+n~Q^sK~hqR;q|N647YFGy>NTZJsWr!5CaSfwJm@a><8NX v2&h?|8-a>7*bay4g1#tO$)YSGB-# z09u8rA}2Xye`S%*{zU3D^_fPdmiyPg-%=noKoSatC_xfp1wO}z@<18F!7w5ZBTtQy zk>Q?#Vu_u^$z|>m7x@d+R@cH9d2;6$#K=oAGXHn~_+m9`^0Ksl zybr&x6m>QAki2vjRQTUKo@})pZ5^O0;;V6NP3$@V;4k*yCND4)s8xvJbzU?;j6jsI zmJlOe00i|<1M%2^mY^!=O@UVms-Tw!6e7N`0#c#W>-;y{_WlDAEgOIU00000fhdEP)RB*?~^j!LKVQ>(O&A{Xr%)RXLn#U zs4LtZ6rCMFY5|B2$)yG$6aaIF_YP)*?Fk0YVb%?UEFajs1S?+YtYiPrjx0+ z+4YbyJXwz!SX#yqTlhtNQ%Ku9=RNm$j)&+(}lZ!UGGp|@|O z09YA#-dR#rIaGe;MBLe!ht*}!c?U}6YT!dfHDO%~>xtx&Klk-^WB==sC_vP4ddg4L z#GN10u$+QGf$!(i3&8VpF6O6+ef~&gQ#>AVqCJH_utvKMAuOeG%3%mn<<%9)yb~#4 zHc70e5sYyQ03$?zFUko7D1Bg1=6jXvg#bUm1b(pVKuC*}koEKGdj<=zdM#RWsl+kfRf;OU^G_BQh+Fc$z&F_AHuQYu(b)aq=H_Fx idDl8IBmWBc*Z2i=4uSP&;Q8VJ0000p(d#PxV(4ao^#JV?>+&chcHA(W9zrcuzIeZN_*SKBfUBi{Yn_Ku88)CIy(5o z14=m5T;5${pO7EA36uz_sNoww%td4ohv#73M1nBfuf4Ii#Zb`Xkx?c^#Wj|EB;1+9 zTAO`3)Mn^#lUbsMOIsNead(bTs~hdEii`#-c%_#Z93Byp8u;Rfb|2RBC;KZL62xLk z1l1Nr<$n(?o+_Scw@RxHl?15^Rr)FwKC;G~!x?W|M;u9M&TQbFkgoE9M-rMS(BuHC5E^26Ka0Dqo;t2gCc;W$*G?P#~ zziIDW#v=@`p3OPQZ*udT1P4!pl9!j4mfkM`Q!T%MqguZL+AjV7&oJeEs9Jxj1JF7K N22WQ%mvv4FO#l^`eHH)! diff --git a/jadx-gui/src/main/resources/icons-16/synch_co.png b/jadx-gui/src/main/resources/icons-16/synch_co.png deleted file mode 100644 index 2e950e988a99e79a68eeef865a35c3cc7c341361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3-psZi$)zse}NZ5ZAx|{xgJ5Gbvwv`tB=} z{QghB|KIrX|L)iSPk;P>^XvcHU;n@S`Tzaz|KI=qfBN$u0)SeH2W}sK-v+8?O!9Vj zk!R%<*bC%v7I;J!18EO1b~~AE2V|Igx;Tb#TsJ-C$#=kkgW2)+1fIx-|NqM-Ec&ul zDtFPE#2yYQk&`V4N-OrZoO}Jv{c))2zyE)?GHNz3_U3->_XQfk;OXk;vd$@?2>{Lz BT;2cx diff --git a/jadx-gui/src/main/resources/icons-16/table_edit.png b/jadx-gui/src/main/resources/icons-16/table_edit.png deleted file mode 100644 index bfcb0249afde587618c63a1eaf776e7af2179f9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 744 zcmVP)5jnv(m~oD{XNgT3)4vA_BpPAR^yYtKhdYt0F% zRhCi;sX!=&lnSXdLaG^CB85gO^}75>ZomdmT9+LPq@?{z=d(9HZcH$cN~HnRbYDRz zfsg`M30&z;S1A&AC%2X3x-w}7K-`DJ>yH0b_ir(QE9A5XQYrwdgM)v3=y!r-_us;n{0~Bx1NSxhn7-09ZmqgoMF?+)iQgb#j`e`+7534TN z0IpOht+6e*T|bCrncQg@#4y1G{LUj{Bc1qjw-f1V#cMdE%w2?U!P3-(1P$1h!NI^n zYF>po5J(3gHuQ{%fmY__6fxCz9dEM1=f*ao6DG#gP`>$-fmUFfQ2Qo~WyR~0Pz{s) z_nEh153w(m7@iS4z7&$=Fjpf*6qeoThyw_P)*6om`?f4(mTj;#xt=vi^`x%cPptPc zrpLvJW-}CQ#wj?(S8o;&mxxet6D`xAu4xF>S4X5LM0(y{oc<~-uVyN`jDhEG>CCGD z|Ek2~;!_YJ?tux5$LkQf1)(zOYq`k$bT6^U5=P&&kzGi+A}aH!shy18Z~8o~aj;gW+TQDw?~0 am(K6d-%A+Xv@1gZ00003cip9_(Fsq;1N&j;U*UrmyOldvM~?Y|F3@j|N7_u8S@u?{Qdvs&;M_K{r~X$|Cc}iU;X<3`q%%@ zfBt{}`~TbD|G)nI|M~C#yhZaCEuFn$#q_nSr~La^_2+rnj|*8RW;p!+{~zc&B0+?u zd@N9@QAvHGdz2&er^I%ebkwO~8%1bP0 Hl+XkKX!QDw diff --git a/jadx-gui/src/main/resources/icons-16/transient_co.png b/jadx-gui/src/main/resources/icons-16/transient_co.png deleted file mode 100644 index 4f54e545ee9b33bbcd50fc67df0f49910cf10653..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j-3?$8JydHo!C7!;n?6=sMcukDMq*fLHg*Xd5 zB8wRqxP?HN@zUM8KR`i=0G|-o|Ns9d_%F_kSXrFBzAkTDXT_e0O^2p;9J8Dks|HlV zSQ6wH%;50sMjDW#;OXKRQgJIeL0>;TH6bCHL1>La6RV3sGl!bM!4n6#7?edB^?v#> RcLCKhc)I$ztaD0e0syzyGK2sC diff --git a/jadx-gui/src/main/resources/icons-16/volatile_co.png b/jadx-gui/src/main/resources/icons-16/volatile_co.png deleted file mode 100644 index cd99249f52221f0a6672e1372873a1a54c83eacb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^>>$j-3?$8JydD54i2$Dv*I$Rv9cR+L=9>B+41mHA z@WXC@1(3yB666;Ql41D0jV~A|z?kIi?!qpX*zp?3;VkfoEC$jZVC;4>+YZQ3@^o%A_P)hUn2-Navsqo?5A8 zh}}V^=%7@_%C;=H{tGpIj5CMu*>5J=i;m^t2QTySd)}9aAppozC}++wDz`eOViU-dbRRoz=JsVlZk>N%^azhi%=xTCt9`LQjtqNFW~e|R=r9= z`@I3J^#z@aD5yBuq2DLQO#|4uFW6R5kzPZ+h&6Af&5}POarL&lA~3t5R1i7uh*ffDw@qEs=HBW ze?CI~MkvG6H-MF7r{Yv4kw_q&PNP^XqFgTHXlH@RpLO}3aV{T{Ez=8lo;PHV$Ads1 zfOtF(s5%5V>3qE|&{lueV1Y1j%GF zXt&#NI-LlGLPN>_18TJzN~Mxf*f6pY5Dteo^|P&3>(H{!KTr&_wGRQWb^rhX07*qo IM6N<$g7V1&P5=M^ diff --git a/jadx-gui/src/main/resources/icons-16/wrench.png b/jadx-gui/src/main/resources/icons-16/wrench.png deleted file mode 100644 index 5c8213fef5ab969f03189d4367e32e597e38bd7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 610 zcmV-o0-gPdP)^jb z4`0v}DG1te)wmeb(>p90leRz?_mO+^JKy=v&2<29Od6?F%9%(c8los#f*@G`-%W&* z$)uBj2i@u-@SgX}gtyWPe6d*|w6h%R? zScK2#Yn%$sum0cy>90DmY*i{1XqpClEtktsRTZ)lCUe z<FogV^*tm>8*AlX za4oiR!&85LrobG57qUHUX#{>Vz(RHpB5|@>9O6N$jqB8>%($0wxE5R3)b>Y~xtCo$ zCgEk&A?_#IxHdN)9tqre^o{ho4{?hmPuf@^@I3-wncaRd%|~O3xbrKY=&TiwPYkJroM{;WUQTuMY8vp + + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/adb/androidDevice.svg b/jadx-gui/src/main/resources/icons/adb/androidDevice.svg new file mode 100644 index 000000000..76f8f50cd --- /dev/null +++ b/jadx-gui/src/main/resources/icons/adb/androidDevice.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/db_disabled_breakpoint.svg b/jadx-gui/src/main/resources/icons/debugger/db_disabled_breakpoint.svg new file mode 100644 index 000000000..931866f06 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/db_disabled_breakpoint.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/db_set_breakpoint.svg b/jadx-gui/src/main/resources/icons/debugger/db_set_breakpoint.svg new file mode 100644 index 000000000..ae82e6429 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/db_set_breakpoint.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/execute.svg b/jadx-gui/src/main/resources/icons/debugger/execute.svg new file mode 100644 index 000000000..e6f910728 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/execute.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/rerun.svg b/jadx-gui/src/main/resources/icons/debugger/rerun.svg new file mode 100644 index 000000000..167be36bf --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/rerun.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/stepOut.svg b/jadx-gui/src/main/resources/icons/debugger/stepOut.svg new file mode 100644 index 000000000..98d724098 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/stepOut.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/suspend.svg b/jadx-gui/src/main/resources/icons/debugger/suspend.svg new file mode 100644 index 000000000..06de4b815 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/suspend.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/suspendGray.svg b/jadx-gui/src/main/resources/icons/debugger/suspendGray.svg new file mode 100644 index 000000000..cc62e8036 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/suspendGray.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/threadFrozen.svg b/jadx-gui/src/main/resources/icons/debugger/threadFrozen.svg new file mode 100644 index 000000000..46d578ee9 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/threadFrozen.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/traceInto.svg b/jadx-gui/src/main/resources/icons/debugger/traceInto.svg new file mode 100644 index 000000000..4cfc37901 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/traceInto.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/debugger/traceOver.svg b/jadx-gui/src/main/resources/icons/debugger/traceOver.svg new file mode 100644 index 000000000..ad1c88d73 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/debugger/traceOver.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/ImagesFileType.svg b/jadx-gui/src/main/resources/icons/nodes/ImagesFileType.svg new file mode 100644 index 000000000..3ca29504c --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/ImagesFileType.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/abstractClass.svg b/jadx-gui/src/main/resources/icons/nodes/abstractClass.svg new file mode 100644 index 000000000..601820302 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/abstractClass.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/abstractMethod.svg b/jadx-gui/src/main/resources/icons/nodes/abstractMethod.svg new file mode 100644 index 000000000..7768df1af --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/abstractMethod.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/annotationtype.svg b/jadx-gui/src/main/resources/icons/nodes/annotationtype.svg new file mode 100644 index 000000000..b80c54b4b --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/annotationtype.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/binaryFile.svg b/jadx-gui/src/main/resources/icons/nodes/binaryFile.svg new file mode 100644 index 000000000..5719f872e --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/binaryFile.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/class.svg b/jadx-gui/src/main/resources/icons/nodes/class.svg new file mode 100644 index 000000000..3f1ad167e --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/class.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/constructorMethod.svg b/jadx-gui/src/main/resources/icons/nodes/constructorMethod.svg new file mode 100644 index 000000000..acb5b4c59 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/constructorMethod.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/enum.svg b/jadx-gui/src/main/resources/icons/nodes/enum.svg new file mode 100644 index 000000000..fa7f24766 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/enum.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/field.svg b/jadx-gui/src/main/resources/icons/nodes/field.svg new file mode 100644 index 000000000..6d54bc0d1 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/field.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/file_any_type.svg b/jadx-gui/src/main/resources/icons/nodes/file_any_type.svg new file mode 100644 index 000000000..dac188da3 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/file_any_type.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/finalMark.svg b/jadx-gui/src/main/resources/icons/nodes/finalMark.svg new file mode 100644 index 000000000..14cbf71f0 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/finalMark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/folder.svg b/jadx-gui/src/main/resources/icons/nodes/folder.svg new file mode 100644 index 000000000..31a34869b --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/folder.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/interface.svg b/jadx-gui/src/main/resources/icons/nodes/interface.svg new file mode 100644 index 000000000..32063ba26 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/interface.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/java.svg b/jadx-gui/src/main/resources/icons/nodes/java.svg new file mode 100644 index 000000000..18d86c41e --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/java.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/manifest.svg b/jadx-gui/src/main/resources/icons/nodes/manifest.svg new file mode 100644 index 000000000..57a3d71c0 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/manifest.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/method.svg b/jadx-gui/src/main/resources/icons/nodes/method.svg new file mode 100644 index 000000000..a7f67c156 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/method.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/methodReference.svg b/jadx-gui/src/main/resources/icons/nodes/methodReference.svg new file mode 100644 index 000000000..e374ec65f --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/methodReference.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/package.svg b/jadx-gui/src/main/resources/icons/nodes/package.svg new file mode 100644 index 000000000..2e5356915 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/package.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/packageClasses.svg b/jadx-gui/src/main/resources/icons/nodes/packageClasses.svg new file mode 100644 index 000000000..596bfa51c --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/packageClasses.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/privateClass.svg b/jadx-gui/src/main/resources/icons/nodes/privateClass.svg new file mode 100644 index 000000000..aabfc950e --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/privateClass.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/privateField.svg b/jadx-gui/src/main/resources/icons/nodes/privateField.svg new file mode 100644 index 000000000..fbb08b0d7 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/privateField.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/privateMethod.svg b/jadx-gui/src/main/resources/icons/nodes/privateMethod.svg new file mode 100644 index 000000000..acfdd519c --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/privateMethod.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/protectedClass.svg b/jadx-gui/src/main/resources/icons/nodes/protectedClass.svg new file mode 100644 index 000000000..61fe011a8 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/protectedClass.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/protectedField.svg b/jadx-gui/src/main/resources/icons/nodes/protectedField.svg new file mode 100644 index 000000000..03732183b --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/protectedField.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/protectedMethod.svg b/jadx-gui/src/main/resources/icons/nodes/protectedMethod.svg new file mode 100644 index 000000000..c896ef4af --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/protectedMethod.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/publicClass.svg b/jadx-gui/src/main/resources/icons/nodes/publicClass.svg new file mode 100644 index 000000000..939d9d87e --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/publicClass.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/publicField.svg b/jadx-gui/src/main/resources/icons/nodes/publicField.svg new file mode 100644 index 000000000..f5d157e42 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/publicField.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/publicMethod.svg b/jadx-gui/src/main/resources/icons/nodes/publicMethod.svg new file mode 100644 index 000000000..e31d41e39 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/publicMethod.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/resourceBundle.svg b/jadx-gui/src/main/resources/icons/nodes/resourceBundle.svg new file mode 100644 index 000000000..0bcd8c327 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/resourceBundle.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/resourcesRoot.svg b/jadx-gui/src/main/resources/icons/nodes/resourcesRoot.svg new file mode 100644 index 000000000..286b62472 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/resourcesRoot.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/rootPackageFolder.svg b/jadx-gui/src/main/resources/icons/nodes/rootPackageFolder.svg new file mode 100644 index 000000000..584380fda --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/rootPackageFolder.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/staticMark.svg b/jadx-gui/src/main/resources/icons/nodes/staticMark.svg new file mode 100644 index 000000000..2a443d696 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/staticMark.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/styleKeyPack.svg b/jadx-gui/src/main/resources/icons/nodes/styleKeyPack.svg new file mode 100644 index 000000000..a2f202036 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/styleKeyPack.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/unknown.svg b/jadx-gui/src/main/resources/icons/nodes/unknown.svg new file mode 100644 index 000000000..6acb9d53c --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/unknown.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/nodes/xml.svg b/jadx-gui/src/main/resources/icons/nodes/xml.svg new file mode 100644 index 000000000..ec68fb1be --- /dev/null +++ b/jadx-gui/src/main/resources/icons/nodes/xml.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/Module.svg b/jadx-gui/src/main/resources/icons/ui/Module.svg new file mode 100644 index 000000000..99fe9c842 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/Module.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/addFile.svg b/jadx-gui/src/main/resources/icons/ui/addFile.svg new file mode 100644 index 000000000..56c62ddc8 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/addFile.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/analyze.svg b/jadx-gui/src/main/resources/icons/ui/analyze.svg new file mode 100644 index 000000000..9afc8685a --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/analyze.svg @@ -0,0 +1,11 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/bottom.svg b/jadx-gui/src/main/resources/icons/ui/bottom.svg new file mode 100644 index 000000000..b87306b7f --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/bottom.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/close.svg b/jadx-gui/src/main/resources/icons/ui/close.svg new file mode 100644 index 000000000..a75557996 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/closeHovered.svg b/jadx-gui/src/main/resources/icons/ui/closeHovered.svg new file mode 100644 index 000000000..db016621f --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/closeHovered.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/ejbFinderMethod.svg b/jadx-gui/src/main/resources/icons/ui/ejbFinderMethod.svg new file mode 100644 index 000000000..72d7c693c --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/ejbFinderMethod.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/exit.svg b/jadx-gui/src/main/resources/icons/ui/exit.svg new file mode 100644 index 000000000..1f7a4a8fd --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/exit.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/export.svg b/jadx-gui/src/main/resources/icons/ui/export.svg new file mode 100644 index 000000000..66fd13818 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/export.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/find.svg b/jadx-gui/src/main/resources/icons/ui/find.svg new file mode 100644 index 000000000..34366ea6c --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/find.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/helmChartLock.svg b/jadx-gui/src/main/resources/icons/ui/helmChartLock.svg new file mode 100644 index 000000000..766b40d89 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/helmChartLock.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/left.svg b/jadx-gui/src/main/resources/icons/ui/left.svg new file mode 100644 index 000000000..e69aff592 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/left.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/logVerbose.svg b/jadx-gui/src/main/resources/icons/ui/logVerbose.svg new file mode 100644 index 000000000..5fd1c36a0 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/logVerbose.svg @@ -0,0 +1,3 @@ + + + diff --git a/jadx-gui/src/main/resources/icons/ui/menu-saveall.svg b/jadx-gui/src/main/resources/icons/ui/menu-saveall.svg new file mode 100644 index 000000000..23905d0b1 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/menu-saveall.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/moduleGroup.svg b/jadx-gui/src/main/resources/icons/ui/moduleGroup.svg new file mode 100644 index 000000000..3703e3fc8 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/moduleGroup.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/openDisk.svg b/jadx-gui/src/main/resources/icons/ui/openDisk.svg new file mode 100644 index 000000000..d70ccb0a8 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/openDisk.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/pagination.svg b/jadx-gui/src/main/resources/icons/ui/pagination.svg new file mode 100644 index 000000000..652910011 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/pagination.svg @@ -0,0 +1,3 @@ + + + diff --git a/jadx-gui/src/main/resources/icons/ui/right.svg b/jadx-gui/src/main/resources/icons/ui/right.svg new file mode 100644 index 000000000..f2099cb8d --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/right.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/settings.svg b/jadx-gui/src/main/resources/icons/ui/settings.svg new file mode 100644 index 000000000..bd9cb8919 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/settings.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/showInfos.svg b/jadx-gui/src/main/resources/icons/ui/showInfos.svg new file mode 100644 index 000000000..45653b4e1 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/showInfos.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/startDebugger.svg b/jadx-gui/src/main/resources/icons/ui/startDebugger.svg new file mode 100644 index 000000000..d0eaf08c1 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/startDebugger.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/top.svg b/jadx-gui/src/main/resources/icons/ui/top.svg new file mode 100644 index 000000000..98af582a6 --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/top.svg @@ -0,0 +1,4 @@ + + + + diff --git a/jadx-gui/src/main/resources/icons/ui/usagesFinder.svg b/jadx-gui/src/main/resources/icons/ui/usagesFinder.svg new file mode 100644 index 000000000..9f323544b --- /dev/null +++ b/jadx-gui/src/main/resources/icons/ui/usagesFinder.svg @@ -0,0 +1,7 @@ + + + + + + +