From 19ed8c2768722da43fed28b23342fe7d48092897 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sat, 12 Jan 2019 18:51:25 +0300 Subject: [PATCH] feat(gui): add icons to jadx-gui (#420) --- jadx-gui/build.gradle | 2 +- .../src/main/java/jadx/gui/ui/MainWindow.java | 14 +++++++++++++- .../src/main/java/jadx/gui/utils/Utils.java | 8 ++++++++ .../src/main/resources/logos/jadx-logo-16px.png | Bin 0 -> 814 bytes .../src/main/resources/logos/jadx-logo-32px.png | Bin 0 -> 4575 bytes .../src/main/resources/logos/jadx-logo-48px.png | Bin 0 -> 6975 bytes jadx-gui/src/main/resources/logos/jadx-logo.ico | Bin 0 -> 9662 bytes jadx-gui/src/main/resources/logos/jadx-logo.png | Bin 0 -> 15610 bytes 8 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 jadx-gui/src/main/resources/logos/jadx-logo-16px.png create mode 100644 jadx-gui/src/main/resources/logos/jadx-logo-32px.png create mode 100644 jadx-gui/src/main/resources/logos/jadx-logo-48px.png create mode 100644 jadx-gui/src/main/resources/logos/jadx-logo.ico create mode 100644 jadx-gui/src/main/resources/logos/jadx-logo.png diff --git a/jadx-gui/build.gradle b/jadx-gui/build.gradle index 65b3dd06569..3382e4703c0 100644 --- a/jadx-gui/build.gradle +++ b/jadx-gui/build.gradle @@ -54,7 +54,7 @@ launch4j { mainClassName = 'jadx.gui.JadxGUI' copyConfigurable = project.tasks.shadowJar.outputs.files jar = "lib/${project.tasks.shadowJar.archiveName}" -// icon = "${projectDir}/icons/myApp.ico" + icon = "${projectDir}/src/main/resources/logos/jadx-logo.ico" outfile = "jadx-gui-${version}.exe" copyright = 'Skylot' windowTitle = 'jadx' 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 7315cc82849..dca6b0189c9 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/MainWindow.java @@ -24,7 +24,9 @@ import java.awt.event.MouseEvent; import java.io.File; import java.io.FileInputStream; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.Timer; import java.util.TimerTask; @@ -49,9 +51,9 @@ import jadx.gui.update.JadxUpdate.IUpdateCallback; import jadx.gui.update.data.Release; import jadx.gui.utils.CacheObject; +import jadx.gui.utils.JumpPosition; import jadx.gui.utils.Link; import jadx.gui.utils.NLS; -import jadx.gui.utils.JumpPosition; import jadx.gui.utils.Utils; import static javax.swing.KeyStroke.getKeyStroke; @@ -113,10 +115,20 @@ public MainWindow(JadxSettings settings) { resetCache(); initUI(); initMenuAndToolbar(); + setWindowIcons(); applySettings(); checkForUpdate(); } + private void setWindowIcons() { + List icons = new ArrayList<>(); + icons.add(Utils.openImage("/logos/jadx-logo-16px.png")); + icons.add(Utils.openImage("/logos/jadx-logo-32px.png")); + icons.add(Utils.openImage("/logos/jadx-logo-48px.png")); + icons.add(Utils.openImage("/logos/jadx-logo.png")); + setIconImages(icons); + } + private void applySettings() { setFont(settings.getFont()); setEditorTheme(settings.getEditorThemePath()); diff --git a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java index 1a90f899937..6d4f18f53b6 100644 --- a/jadx-gui/src/main/java/jadx/gui/utils/Utils.java +++ b/jadx-gui/src/main/java/jadx/gui/utils/Utils.java @@ -38,6 +38,14 @@ public static ImageIcon openIcon(String name) { return new ImageIcon(resource); } + public static Image openImage(String path) { + URL resource = Utils.class.getResource(path); + if (resource == null) { + throw new JadxRuntimeException("Image not found: " + path); + } + return Toolkit.getDefaultToolkit().createImage(resource); + } + @Nullable public static Font openFontTTF(String name) { String fontPath = "/fonts/" + name + ".ttf"; diff --git a/jadx-gui/src/main/resources/logos/jadx-logo-16px.png b/jadx-gui/src/main/resources/logos/jadx-logo-16px.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a2d08566be02ca93b41eb6d9a24255ed28e18e GIT binary patch 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 literal 0 HcmV?d00001 diff --git a/jadx-gui/src/main/resources/logos/jadx-logo-32px.png b/jadx-gui/src/main/resources/logos/jadx-logo-32px.png new file mode 100644 index 0000000000000000000000000000000000000000..48c5305b00da9ee238cb17a6582e7252d38677f8 GIT binary patch literal 4575 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 literal 0 HcmV?d00001 diff --git a/jadx-gui/src/main/resources/logos/jadx-logo.ico b/jadx-gui/src/main/resources/logos/jadx-logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..1f02bd689dfd128eea9db30c8a7103fd5a77153b GIT binary patch literal 9662 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 literal 0 HcmV?d00001 diff --git a/jadx-gui/src/main/resources/logos/jadx-logo.png b/jadx-gui/src/main/resources/logos/jadx-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7010d2b3ab7ceed38132ac25c48dbf83f1f108f2 GIT binary patch literal 15610 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