From d5d730b0839aab2c7c54856ce4ba980cfba8de66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Mon, 19 Dec 2022 23:35:53 +0100 Subject: [PATCH] Added Deobfuscation and its options as icons on script panel toolbar --- CHANGELOG.md | 2 + .../flash/configuration/Configuration.java | 4 ++ .../decompiler/flash/gui/MainFrameMenu.java | 2 +- .../jpexs/decompiler/flash/gui/MainPanel.java | 6 ++ .../decompiler/flash/gui/abc/ABCPanel.java | 63 +++++++++++++++- .../flash/gui/action/ActionPanel.java | 68 +++++++++++++++++- .../gui/graphics/deobfuscateoptions16.png | Bin 0 -> 6693 bytes .../locales/AdvancedSettingsDialog.properties | 5 +- .../AdvancedSettingsDialog_cs.properties | 5 +- .../flash/gui/locales/MainFrame.properties | 7 ++ 10 files changed, 157 insertions(+), 5 deletions(-) create mode 100644 src/com/jpexs/decompiler/flash/gui/graphics/deobfuscateoptions16.png diff --git a/CHANGELOG.md b/CHANGELOG.md index f6be1efee..709c81a4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added +- Deobfuscation and its options as icons on script panel toolbar ## [18.0.0] - 2022-12-18 ### Added diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index 042353d2f..d88428054 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -863,6 +863,10 @@ public final class Configuration { @ConfigurationCategory("ui") public static ConfigurationItem doubleClickNodeToEdit = null; + @ConfigurationDefaultBoolean(true) + @ConfigurationCategory("script") + public static ConfigurationItem warningDeobfuscation = null; + private enum OSId { WINDOWS, OSX, UNIX } diff --git a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java index 45409f6bf..ab425ea1f 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java +++ b/src/com/jpexs/decompiler/flash/gui/MainFrameMenu.java @@ -881,7 +881,7 @@ public abstract class MainFrameMenu implements MenuBuilder { AbstractButton button = (AbstractButton) evt.getSource(); boolean selected = button.isSelected(); - if (ViewMessages.showConfirmDialog(Main.getDefaultMessagesComponent(), translate("message.confirm.autodeobfuscate") + "\r\n" + (selected ? translate("message.confirm.on") : translate("message.confirm.off")), translate("message.confirm"), JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) { + if (ViewMessages.showConfirmDialog(Main.getDefaultMessagesComponent(), translate("message.confirm.autodeobfuscate") + "\r\n" + (selected ? translate("message.confirm.on") : translate("message.confirm.off")), translate("message.confirm"), JOptionPane.OK_CANCEL_OPTION, Configuration.warningDeobfuscation, JOptionPane.OK_OPTION) == JOptionPane.OK_OPTION) { Configuration.autoDeobfuscate.set(selected); mainFrame.getPanel().autoDeobfuscateChanged(); } else { diff --git a/src/com/jpexs/decompiler/flash/gui/MainPanel.java b/src/com/jpexs/decompiler/flash/gui/MainPanel.java index 8eee2c4c7..ec4acc9bc 100644 --- a/src/com/jpexs/decompiler/flash/gui/MainPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/MainPanel.java @@ -1587,6 +1587,7 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se } public void updateClassesList() { + String selectionPath = getCurrentTree().getSelectionPathString(); List nodes = getASTreeNodes(tagTree); boolean updateNeeded = false; for (TreeItem n : nodes) { @@ -1601,6 +1602,11 @@ public final class MainPanel extends JPanel implements TreeSelectionListener, Se if (updateNeeded) { tagTree.updateUI(); } + TreePath tp = getCurrentTree().getTreePathFromString(selectionPath); + if (tp != null) + { + getCurrentTree().setSelectionPath(tp); + } } private boolean isFilterEmpty(String filter) { diff --git a/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java b/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java index ffdaac248..122079de6 100644 --- a/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/abc/ABCPanel.java @@ -96,6 +96,7 @@ import de.hameister.treetable.MyTreeTableModel; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; +import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Insets; import java.awt.event.ActionEvent; @@ -121,10 +122,13 @@ import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; import javax.swing.JComboBox; import javax.swing.JLabel; +import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTabbedPane; @@ -957,7 +961,23 @@ public class ABCPanel extends JPanel implements ItemListener, SearchListener|DUoip;SsPbH~1nnPD(9A^X}OWC`h*Im2LPm>FY9wn~c-A$vrUtt8Qv zs4OX2iqc|9XpyA|UEzDEdvCpd-+%7w_51$U%$zglJkR^{{(L^~=kq-0IVbFF%r^*1 z3c_Hp4VD%r_RzoB>cP(oon>ZL02qv~I?U09Z4U&)1DFg7)gOejLjyoK7(%7MU?I;h zIPbZtrYyJ=yrqhJi=%tOd9zuOurI9Ln8CUrMsQQsrIRICqIfhHAA4r1A#G7q9}~*S zJ~@(E)p|_zX&+iFQh(x$Xzsblx{txr;6S}7qKMy_P?Jns$`M_TE9^pBH3)2~=35#+ zd|$y+pSzirU*0V(D(*-WYo39pM{(Le-LU%7e?-4C$lZG6>&s=*my)@f#r0G1M-C~q zSVrqEpV+e|XwQq$~rj)+wPU&|K z`&hrd+xDe?88>D0XNbX+{>S+oSO3io9cMY`JHCicO%3idenQeL^T~eo-rvl_A$Q}G zApgpmt$e*#Q48|Nl{#yNRge3cDhXe{^|~}amcQ0%2yG;!+Ww}*FdxzS&g(YZEPi&k zV5&>OqZS6K6=*g}nLA0I_hC5f7ZUR=h2ZP z@|I}`#NK`JsRo&s#`cx;>~p)DyCHeU0Ntf)Ut$hnek5%2g7xKk&3?D#LiB5q3e4CvQSiCjbEXYf_rb1f?a2cEt?GQ{;FBBN#RPL z#>p5J2XzvXb8!9U3jOKr%a5y1`CJygGp;}0ZSI{fcI+S>@ig2&iC;Hia>Kors*t8+ zBb0fEiCue{T@yEG>-sWK&<>}+-E!}XP@ZeCIf+UOWv3ip&AiEN@bF02Ouy|YQR6=G zQ2Oq4=(Fqg!=?5nj)kuyQY7_?qI^>mckbwnm1JVY^DW^uZ$yaE>UW77DcZT#d??Az zobkJ7L^6?mkGZFJ<`eYiKTVtru<%wU59vj#=HlL$ifLtB-zj+3V%IVyfO&|h)Vf2- z!}lO>?AY%zk2Os7B7CA}T(jl)HD+A%R0@}jDp|Rd-l^wxGQE)xxAlj|Mr9v<*q?#l z{K7ot9L_*WVCJaX{f z*=dV+Xs?9EOp&bqMEh&=R+`V9$ARNf5f6J@^IjgEPSm+-TYJ}vK`v6FKMB*@6xEgXXr!dROxHhz_4Xtii zQL*o}z`d5Y^}AQP`uD^Rw~6bj3jq4c4vKmB1N(wua|S= ziowe35VAMepL?w8U{Ohd)aV|#)^AN+oqOF96!!bS+%tOLknG=rdA3E5{CVs8Ju>%| zj}iI`IwDV`btPnkvWC^3UU{d}c_Vo|qYFME=rwyhzB$Y1-=k}b+6D&U>Zl$lzpC_gfHhJXz@IrdR19<@3dE*-0X8!m?c7|;i zx63ByOxM_KMJ^uZ*4_Y#l5<554V?UT$%*Y16{5S4E0LZ`dzH)_QI$lwu<6JAzO;lB zJ@p%(n^e)|qVhM1kjzDJv6iQTs85&O%*2)NJzh^fVHQw}=U+#ZPWKFrxhg(&i(jPs zBH37ZbT7}q&gJty(!Tk0Hxb1`G}2daUx9{OxT?tcC*>u*ee_@paumiW%Qx)zlLljw zFFYv*poZC`$g#7P?J;nn!j}VYj~RCN5$>B@&}LZx1O1?g$8=2HQQ_lJ5xSV zx}NSVr0}R<+1*UqF7Z=AtY6)dQ72iRG+C8`-!j5CS=y3%oFOY`7a3-}u{U`>tOjXx zgIo}tJup!F=(i_ZcmGy?{G(9Ckk12KtkKD_of6(TR>kQ2SrBa@Dx|oOq^_3bxHU7H zmH4OghLt~T7iZZ1r&`j~DsLPiw0+vMLK_2!~u!Yk3PVH zZWnv$tk1WwAjwHhzIqJuzUHoRVK_40KYt`G^CjH#+2p4p&rY6XHyOr*CxM%B!4{UA z3wtA#r#3H;XZZiz%U&>l#``JViIXyl%MNtG8!F%~SygIFd`QaPlT?N%eo-Uq`N_dy znc+NdT(w{AnO#HNY(az|v8>x`+&J%&y8?YA9b4~87`x2NDBtOhb8(#a%y;Ydoj4fuwzCf<=~>)0kZSgHFio;L#t{p=*F|s@+pMH8<}GK;jlEU4jAvpY-0|E5^OcKq@DDvqxdmiu}>77-^~b*ZuXa{W}eO zoHBgpPH~k`w!brRZy$ATzU9mDoeo+URGov4vo+^KIAv>f!PiWIFrU&OsJgW_e_KuDB56i{vR!jTCWzx$@ z+i_TV`1pC>6x4{j6OIw+R2uZ;mSQB3msd`%wPA4!sQrFovkCNUiBVB&^69m}Bo!^y z9*gYzc=4Y6nbP%U2|PV{M$E56k<)c|92G&&7Fx%SSVUwRRr23F*R3-e-GxM78Jl}D z(E5(+^o5EvM$}>B1J_KRjZ05WPEAe>YECRiz@`|?XJH>=vCvLy8x`77xe#{~NDP`f zKxTM>>LIiMXvYPE>Fx>%07!ly8}0>qQ|Wq$sk#OPoJ!V1IBOBn!~kQ^hiVbV1RcU` z97$n*Bs>|hOJ7hoga8rHKsEpmq50EUgb+Q%8ZQC5UTsDp;A;@JpB}=6Xa_fDFhMw0 z9jlH;nubt08VG$sxGs}SA=sOkeW!r#^bkI5b^rl|3Jwld57ty?FuhS2JRXliYoIhV zkPrgN3Z=7w5G0)?yGrqm!vtiJnA89^l|hHEaspnAAhsR?0rkWGijNjRB>qiLXMI-z z(gPI&1fVeLXcUcx`q6^LHswGh-vj!u7A!|-V~Vl|S&Sei2{h$^bhhk|6lBuh_5ndm z|Fv|;Boycm(jX`c@{0M%rMV^1?r)1#3B0MafHf;f?4OWqD&-%seu{0iXDyu{1A)x{ z=KTr%SMF|fH#N=pnI=%tO`yrw6oMhXsDzAX|eMM*c8YBngdiinGwwT zr^}H_10C4Fs-75a9Sl|*`f8!k(3Q?VASaN?f@*P<6@ymS{KmXGFa#(aNLpaEQXzsh z3n&|cF%tyX45lN4;jf2S4GO+$xmMtC-EYHUL1jUR(AAp%UiA)O;J3SPlfa+4)&+;J z6)piFeRIMBI3Rh=5oGtRi{t~)y+LS(e=n)O+Nu9#xNulaKvM(MKx%=SUPvfeG}4O< zLMJSssg2dq0==}bKeMwK6m~Gc1P#5ROrdO`5?ad!uJm0@<)87vKH#cSXsC=Z&=2p3 z(I#NA1hf_c^*veC>YV;7TV2%u(L;9)@WUbi*?nt+78hu(LjAp1eb;MM!vEpt`#Ag$ zJwVjIoct?&f64Vru79P#zXJcNu3vKfD+T@)_*ZrPzsV)|&+86Ihju{0(96vH=S)rL zMTpnS+S~-Tvii-dzjy{}5eTqwWx-%V;;Y9xSZ4M%sF9CtNi^jf6BZX$<7rDi=KzCo z=~|i?I^rG#*?a7E@ZJ{DVH;W8e4XzKJN}7CEGJ7g?rlmt+?S(uwRn3QB}PEU=w^0Z zx^ta-+UaJs1b$6YmQbx^mH&sBJ}S30cgfb%!pVF5t!@1xMV1QmX0vAw)nyzR3RfT0 z-8Hp10!|BBM7oF6C8z5!Z>FWZc6c=TKox8(r@g_v;JZCJ8s>2LBden^ynW)pQRJojtz$1?<6*Z+Gnkr!vuwb zWj^!JuQk;94VIrdC?X(gtNrR(HG_~?*p16;G62FTlTdP=g4vv13y>*SLXj67lc2QS&$xQqDwhR49 zjmK>TVqj6t2k5)g@F}KJs6RvTngE~qO=)G5BVotZc zyHYQcHF}g;S!>GRG{sSsOiq-KG);D$kstJLnCeZuwx#~o<>!8-WjUKu