From ef274dc48272045c860a745463652cce616c0175 Mon Sep 17 00:00:00 2001 From: yck1509 Date: Fri, 6 Jun 2014 15:26:29 +0800 Subject: [PATCH 01/17] Add basic layout of GUI --- Confuser2.sln | 6 + ConfuserEx/App.xaml | 17 + ConfuserEx/App.xaml.cs | 6 + ConfuserEx/ConfuserEx.csproj | 107 ++++++ ConfuserEx/ConfuserEx.ico | Bin 0 -> 37790 bytes ConfuserEx/MainWindow.xaml | 55 +++ ConfuserEx/MainWindow.xaml.cs | 20 + ConfuserEx/Properties/AssemblyInfo.cs | 4 + ConfuserEx/Resources/CREDITS | 1 + ConfuserEx/Resources/Decode.png | Bin 0 -> 1108 bytes ConfuserEx/Resources/New.png | Bin 0 -> 1108 bytes ConfuserEx/Resources/Open.png | Bin 0 -> 1108 bytes ConfuserEx/Resources/Save.png | Bin 0 -> 1108 bytes ConfuserEx/Resources/Tools.png | Bin 0 -> 1108 bytes ConfuserEx/Skin.xaml | 531 ++++++++++++++++++++++++++ additional/Icon.pdn | Bin 0 -> 22903 bytes additional/Icon16.pdn | Bin 0 -> 5714 bytes additional/Icon256.pdn | Bin 0 -> 16979 bytes additional/Icon32.pdn | Bin 0 -> 6186 bytes additional/Icon48.pdn | Bin 0 -> 6689 bytes additional/Icon64.pdn | Bin 0 -> 7226 bytes 21 files changed, 747 insertions(+) create mode 100644 ConfuserEx/App.xaml create mode 100644 ConfuserEx/App.xaml.cs create mode 100644 ConfuserEx/ConfuserEx.csproj create mode 100644 ConfuserEx/ConfuserEx.ico create mode 100644 ConfuserEx/MainWindow.xaml create mode 100644 ConfuserEx/MainWindow.xaml.cs create mode 100644 ConfuserEx/Properties/AssemblyInfo.cs create mode 100644 ConfuserEx/Resources/CREDITS create mode 100644 ConfuserEx/Resources/Decode.png create mode 100644 ConfuserEx/Resources/New.png create mode 100644 ConfuserEx/Resources/Open.png create mode 100644 ConfuserEx/Resources/Save.png create mode 100644 ConfuserEx/Resources/Tools.png create mode 100644 ConfuserEx/Skin.xaml create mode 100644 additional/Icon.pdn create mode 100644 additional/Icon16.pdn create mode 100644 additional/Icon256.pdn create mode 100644 additional/Icon32.pdn create mode 100644 additional/Icon48.pdn create mode 100644 additional/Icon64.pdn diff --git a/Confuser2.sln b/Confuser2.sln index 4e449d087..c9d645fc5 100644 --- a/Confuser2.sln +++ b/Confuser2.sln @@ -24,6 +24,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Confuser.Runtime", "Confuse {BEB67A6E-4C54-4DE5-8C6B-2C12F44A7B92} = {BEB67A6E-4C54-4DE5-8C6B-2C12F44A7B92} EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfuserEx", "ConfuserEx\ConfuserEx.csproj", "{B5205EBA-EC32-4C53-86A0-FAEEE7393EC0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -58,6 +60,10 @@ Global {A45C184F-F98F-4258-A928-BFF437034791}.Debug|Any CPU.Build.0 = Release|Any CPU {A45C184F-F98F-4258-A928-BFF437034791}.Release|Any CPU.ActiveCfg = Release|Any CPU {A45C184F-F98F-4258-A928-BFF437034791}.Release|Any CPU.Build.0 = Release|Any CPU + {B5205EBA-EC32-4C53-86A0-FAEEE7393EC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5205EBA-EC32-4C53-86A0-FAEEE7393EC0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5205EBA-EC32-4C53-86A0-FAEEE7393EC0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5205EBA-EC32-4C53-86A0-FAEEE7393EC0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/ConfuserEx/App.xaml b/ConfuserEx/App.xaml new file mode 100644 index 000000000..c398c5598 --- /dev/null +++ b/ConfuserEx/App.xaml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ConfuserEx/App.xaml.cs b/ConfuserEx/App.xaml.cs new file mode 100644 index 000000000..df9c8accd --- /dev/null +++ b/ConfuserEx/App.xaml.cs @@ -0,0 +1,6 @@ +using System; +using System.Windows; + +namespace ConfuserEx { + public partial class App : Application { } +} \ No newline at end of file diff --git a/ConfuserEx/ConfuserEx.csproj b/ConfuserEx/ConfuserEx.csproj new file mode 100644 index 000000000..c1e50ef4a --- /dev/null +++ b/ConfuserEx/ConfuserEx.csproj @@ -0,0 +1,107 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {B5205EBA-EC32-4C53-86A0-FAEEE7393EC0} + WinExe + Properties + ConfuserEx + ConfuserEx + v4.0 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + true + + + true + ..\Debug\bin\ + DEBUG;TRACE + full + AnyCPU + prompt + + + ..\Release\bin\ + TRACE + true + pdbonly + AnyCPU + prompt + + + ConfuserEx.ico + + + true + + + ..\ConfuserEx.snk + + + + + + + + + + + + + + MSBuild:Compile + Designer + + + Properties\GlobalAssemblyInfo.cs + + + + MSBuild:Compile + Designer + + + App.xaml + Code + + + MainWindow.xaml + Code + + + MSBuild:Compile + Designer + + + + + + + + + + + Properties\ConfuserEx.snk + + + + + + + + + + + + + \ No newline at end of file diff --git a/ConfuserEx/ConfuserEx.ico b/ConfuserEx/ConfuserEx.ico new file mode 100644 index 0000000000000000000000000000000000000000..7bcfaf714eb039d7ce2a12330e0310fe5a0e2216 GIT binary patch literal 37790 zcmeHQ30PCd_Mfo2BWkfC0?&QHrL~F+5N!3~@|3o=ZdAb5XZ4|?RYXCPSlfpc1+}fV zVx>=8v9%bhRRn}Y5fBkjsm29JkSd}AiHZcdi5l^xi>Rs&hMNv z=bSs4AVLCUj>ta&azqPl5SoG8?(Wt1{oh0=5kDI?tor^yAB1ktLdena>3v6p!bAvl z#I=6B8A2n&5&GioX&&v{*tWr>+E1D|{$27ZDXlDU^}#0x7LdCY?|Qt64rSUE;TyA$ z$4woF(68Zbxp{;g$B!nyI~Adzz6eP^L+A;9B)Nl70OsSaFG6F!L8$Ap-Er@@AoR-Z zN#n=8x7xcnHzU;UvTdp+M>gLg=bNcHCt80x?!xCiTj@-D-gz_UPR~KPo7!6E#4hVI zWN-fyZx7w*xbXEayY?IY?ZxwdB<~d7%BdXHrRdRnWh*k*c*oxh{LjYQE0begt17Pi zH2J$-{9=Fqoh!5sd4iLs57%1uM_1MMs^P=3vgD)J78F)&NiFZ8EEj*wYaLY^Bw6yc zLeo}g+WKW}MipcslVJt^ZeiR**9TV0U^66;xARSj6qxy@DA%4x!%Tfm)mcLRt9g}` zrLxfZmG`8wP4g=sW(h;*2W!>ywk@`@cj>>qSXWg!;YeJnqHK6CjbwQn#A>TXn-un`??V+-HqC-a=1vMSfsg zq&5|*3zJImWR@aT))z__J(nD0;sHOcC6Wl$ky)e39rz&b)2pX@N86hB#tYtIMUiCpUJh%9e zc7#dCFN7{=_2#a7^83xsj?90}`_gnY3H>WmGc#dqv5?D260Q4h-xpoJf&%z0BopWs`^q3O`l$M0>QCiSUH|xa$IS ziqy6mzoMPHndlf9Z5W)DgPYU#;!_(eu?fk-L)M(Hm}eiFRdBE3<2mU==XP*vjRZRu z$M`FE2(7*kv~YZCD{^rRl5s@|?+CWaqt>++&q5OZhuym$`KP9)PB=0NThsOd!s3Yh zNp7wl+^?3a|8C~qRy+|&WDaf<-ZF`NY_8Mob2Im?u=dUqTsTuobR|l=7-@g{THK`d zhbncUr(WG(6)M{#9^zg+f_&)D*?Jb|euXyY2kJHDq4GfIWa25qK3Dc3*6@zjT5_b5 zYz>h{FO6T$fuki+=wO&`Ke31KlyGF0K|UIehnbjQDMgwKO;mP7ME}rQqf{cFkCVdD zC}PRNULrI3-w4&&nqDZ)RMID5)@4PIKY#O{-;77mmCAxCGTr;-g8RkAX_1x}#+u?O zVp77p$se_os6z+^rK!+ln7u?mAUkLi)V}UK9e_8RaJjLz~dKw=fiP%== zfkx%zXa{n)1!q51-aQ~I8je&xTa;sv-O{DIll*NZ|IkJTmy9kOz(4p!GWODf9+A87 zDhgM=PCA^lkj+L%RIDJb=!r#TM zEG!4#({@BE|5T|ScHRb`!B{-mQ{56g9^_RWF)2(uG_`W}y6C|2i}(5n|1-0|jWCcG z>eGjGyU1^G&T~h{W3K(Ur;DXsMP(TG)*CRNgq)gG`Q$%_mbS58+HVo9D(F~EAe>rh9=%p zZYwl*54tgQu26etU--FlrPycMG<&hCQ1hDo?Z35lPbuS~3%T@r<*uHB-!$nc&y*;Xa@qDn& zzQR>1n3W&cTGCIn1^HgL;zF0J?63WET^nEGc=NQ!OeKr3Yu_d~oPsT&6^B(WQWdJb zyiL_|e;Y}EZVq`MJ%yD#6uaY%XQb9-na$yB1nM(Vd&xp>rNHw^4BC!z5`tqUjw}&; zm$UlbRM&KA>SbN3|AR%X1qnO6P9$v!E|}Tg-GbYucQK=Laz?4sXOtcL&`0DN645!5x zUA-mWjxJ0Xn|6F{c32=;n~H9Hv{%g4f8Jl9pC(luOyZ6>R}*3`ZzG#Yx;T?%?4-fr z8GkTcO|&5k(0|Zc=7(I=UiuN)>UiRg-`9U&Et`T|G+xysG!d5a?y^<-54z!y)l=

lpsH` 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 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ConfuserEx/MainWindow.xaml.cs b/ConfuserEx/MainWindow.xaml.cs new file mode 100644 index 000000000..8e25839eb --- /dev/null +++ b/ConfuserEx/MainWindow.xaml.cs @@ -0,0 +1,20 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; + +namespace ConfuserEx { + public partial class MainWindow : Window { + public MainWindow() { + InitializeComponent(); + } + + private void OpenMenu(object sender, RoutedEventArgs e) { + var btn = (Button)sender; + ContextMenu menu = btn.ContextMenu; + menu.PlacementTarget = btn; + menu.Placement = PlacementMode.Bottom; + menu.IsOpen = true; + } + } +} \ No newline at end of file diff --git a/ConfuserEx/Properties/AssemblyInfo.cs b/ConfuserEx/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..9c6382d3d --- /dev/null +++ b/ConfuserEx/Properties/AssemblyInfo.cs @@ -0,0 +1,4 @@ +using System.Reflection; + +[assembly: AssemblyTitle("ConfuserEx")] +[assembly: AssemblyDescription("ConfuserEx GUI")] \ No newline at end of file diff --git a/ConfuserEx/Resources/CREDITS b/ConfuserEx/Resources/CREDITS new file mode 100644 index 000000000..ca84f085e --- /dev/null +++ b/ConfuserEx/Resources/CREDITS @@ -0,0 +1 @@ +Icons adapted from http://flaticons.net \ No newline at end of file diff --git a/ConfuserEx/Resources/Decode.png b/ConfuserEx/Resources/Decode.png new file mode 100644 index 0000000000000000000000000000000000000000..4d020f6ff803548da0cd0b3a696f210a0c81aa5c GIT binary patch literal 1108 zcmb7^yGjE=6oyxcB8!38Nd#kIeJ|9KVbsWb}{K^zF$8lsByBQ)))3+%slM>f;t4Wf)l9>Vk zBMigKf3!DoViW|yCJdvoRov1>e*rB3#Lk}z)b=<4P4I9RScn*f#?YWhsO{tcl)zQ? zVK4}SV~z@oL`l!{)?w~JLsski{+4aq%WN*}Ez6SWG^`M?XQ&VO2FuOV<619tExI1S zyM<ZJg#HFg}h;#4R8hAZ-pZBf$IpM&BS1>(EV+0RLd;!gvVt wHn+QIf)8v!0GKs=GpnNd+&TanbZeR>{VQs3CuWYGW`A!DqmuM~_&5uKNl$0pgP1 zKY#uN1ug>MGXSIt7$zk^SNsII1d6`{4Y7lpK*#`)!Uqo?aJ+o^lIzKnCu~4N9{>6C z2N5&G7y!2o$N>6e)PO-51}VU}{SA!H5Fid9fP;W)KLQh189ZvgefuT?Os>~q$(0Zd gRD1vX_wRBb1GHzZ`X?Xqn+3%7boFyt=akR{0P1SG)Bpeg literal 0 HcmV?d00001 diff --git a/ConfuserEx/Resources/Open.png b/ConfuserEx/Resources/Open.png new file mode 100644 index 0000000000000000000000000000000000000000..506d4b6da9906bcdee20a44b673eeecce6bc6268 GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKV3GE8aSX8#WE5a|{~IVu1@Qm> z|0E!ukBtBQ`&UJ@(NK**3I!ae$N-=VK&Ji0h5!8dgRtQ5-@kK#m?ZG)*Dr(tmo8mm z0%8_Y@WqQ4S-@U=`}VEMyLa!%#tcArKSv2V5;(wc`VKN+Hwk)Blmhi$WB`U{FN!D$ z9H8Fi48MQ>P9Q-Kic+8fH4Hy~{4hZgC4mF9Jb>ZFix*tL!1zsqKCn_yLi_gZn;JMO zfq`+8R0Du|zTdfX2a*XDcZfsAne8c?F-sm;Wy^i*fZ|0jcqH^>bP0l+XkK DsjuNW literal 0 HcmV?d00001 diff --git a/ConfuserEx/Resources/Save.png b/ConfuserEx/Resources/Save.png new file mode 100644 index 0000000000000000000000000000000000000000..66a9cf95f9221b470d00f1d147520191cfedfdc3 GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKV3GE8aSX8#WE5a||C{0O-@otw z0|Age2voxG`}gnT|Ni~^52W2dd~5)y_9Rr#f2;<8B>(*RGXxDd`ThHMsn4H3n*p)i z*RNkyKzwW%7zXDt!T=;dDgYXU2t-mfgVc{2KT` y#S124FfgBBW+qS$1jQ>c7^D`%1z-^p36N!WDQPPiKF&P?%J!bFelF{r5}E*|MRueB literal 0 HcmV?d00001 diff --git a/ConfuserEx/Resources/Tools.png b/ConfuserEx/Resources/Tools.png new file mode 100644 index 0000000000000000000000000000000000000000..98453257550d5095f445a46c8b4c6d079efea6aa GIT binary patch literal 1108 zcmZvbKWI}?6vnS51SvK|#|Y}s!9jF!a1ilN#0I2<;#8zmDB_?Z4vr2wiF9ysEJYj@ zijznYkq*H@Iyg8a2E>qHAPFzY%gf6jf8V3``U3C5edpYBzVAEdo%`O4;_{7!`P{rQ zW}&c@U%_Uz52tya^rm-=NgXfbuiUzD^iVd{3W@$-olYk`8jaqJ$K!qM>o5#gJ4)cYPZ`dA?x+}9Oswp(qJ$s&ai#o&r$Weq|gZGfE_Im5a3ejy8Yl9W9yj2iiV`Egy)qz@D8E>2|wW0DlCCFNAjVX$!0Z zh&GhR{$}VWoCxo_&VEkYy25(^{tAeH+ktRs|2#QQIST&ZLpv7bQNKwg_j8c^A`pUi z;{x)DEg=$p58(FrPaMx-X?(BlHr{z+` literal 0 HcmV?d00001 diff --git a/ConfuserEx/Skin.xaml b/ConfuserEx/Skin.xaml new file mode 100644 index 000000000..78f195b97 --- /dev/null +++ b/ConfuserEx/Skin.xaml @@ -0,0 +1,531 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/additional/Icon.pdn b/additional/Icon.pdn new file mode 100644 index 0000000000000000000000000000000000000000..3b51762bff4c39b8d9d1be3b7fd88b367a22e388 GIT binary patch literal 22903 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 Zx*z&444e;`TKD#`n^OM*AX+f*{{or?MZf?6 literal 0 HcmV?d00001 diff --git a/additional/Icon16.pdn b/additional/Icon16.pdn new file mode 100644 index 0000000000000000000000000000000000000000..65b31e0a56e92c851aad6830ef0fd17f35ed971c GIT binary patch literal 5714 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 vGat_$S@^xRKjS2R#Ie23E~|9x8ILEKhdmEF zF`~Ojs8ZiQ_yZ~+flw<}Xp2B9q7>9sg@CrJ7DQ2@sw!wpL4~e_5U3lZaL$aq@kS}z zR`9D_YtFsrKF+!K+;h(ToQq|=uMAkG8;q0^X^wTac}APgHs|FUaCoe4)-4R%@ zzS?eumKTfI$t}C;O9dEbd03x{#wjWmFb1+9e74vIzKN2v4d5e8TUu!3bH;?kTt1#C z9*Nfyf=A490<~D5^HkVKhtJf!62&e@gY}l4-0+u|OR3g;DdS&lSJ+jmEhh5m!uWhM z7zmczZr1GyxdN5h^}1YK_eRTsaCu5XYf^1qRXYtvQT=5)TyBI~f=^l; zm;CN*!=EdJ%5_(^-p&?Ut*}=Vy`GMsX<^OlIueQ%s_~%LyOy12+AdeTAkbWdqZe{V z>k+q1$pMec7mF4avoth*(aZiw;O99J$ko9RqC>xs3OVy$qwDXa%Gx<_1#R*E&j zHQNlwR&_2PaLunaGZlZJUJtG=an($k>U0Ee+dY-dGFd&sMU$nbR`O5@CM_yl#-%5# z3sYKsPEG3Bge*rTUsYL4X9F>%wCIg1nQA~-%;-rymZoW{F`k@XkH&P4E2U!$lg+ZV zT5zhcJ{NE0e6qAa!M>|mSl3P_xmd~{jIRc2olrVUXJf_1j8JQ?hCAgZ)9{DdrAl4l zI10xn7^c)Nx?)mHXeFpzIb3QS$+EFRpiodb z>S#7rtLM@jU(wivPokHZkZ+lq)7q}~oYcv$CfaZ}lbT&_XNrD$jSrSP64#Jtmqmt|)7>GzFP*EWvmL4yN-e}H1vl4f zjAuNZg*Fu`X~B*wkq9<{ffAX^7yWT%ZI0u(nVB)?)S>CAUeHbTqWO@8fS<*(1qEv? zBYS}4ax^b#Fpns)?qaKahY1x;7j8Hv?3g%&29IlUtA)p>TKAg{5~ zjHC;~$N)%9Ep4b8D{jm3OuF!QX%UrRkoH&o0e9HzV_l)}Anx`P7j06m>LM#?LohJR zt1(_}$STX&%)~Tkq%E77vB(PpQ^=bu?$!Th^zV)Enucw z;8hLnWVc^to@ugc9#5Bz%7VaFHAsKzOzUg9R4qFR*|fv@}*%zAv{e<}RGXntl%rE&F~g=sOyrJfdPwc z&_e8{H%hB)N>W)#h%vC66z`3iI zZZ2~*G@T|l-cxPc+iS&a!EXpmkY+Y@}iSkcM; zvmc_dFBew?zyM1uynwVODI5I)f{SZ|o~wR0H_LZYKjUPV_#E10x`Uy&kMFFpS<% ze=kOg(HrjT9mI?Oa88HHhboZ7m~6v(Yrl)3i6iEKI-Zdgkruiv`k3KocS2(j{cJb4 zwc?;!r6t!z7~ZA=`ej%gy(k>htSBoR5kao5p~C|P!;1V25NG#03H2a4@})xooy>~2 zc8Na`Tu_mj6ZY7;g119>_K0!O{2vl zfJ(_3Xpx725CEYu(-`UKFm_bRrYcyI| ze@uWsfv$>oMBD`g4c})rbjRJyR)&6Z83>wMo}jg2kON#dbd$Q56Z!^7Xrv^ z0ljVi19ppj_WmWy)?c3`NC0crZ@jb8dA)kD{Iyf3PMzPhTzA!(anoGetIqbVI{WzO zvld7EOzGDru7584_DlCqtAF48)29OErzywNC(dk6zxcV=fAGW8&wur8{^2)Vn?HF} zeD#H=PS=*N_P+T2uRQjP2j8gQOS?Y*`lF}cdGmmL?(uh@6yGxH$9R)}>a@w9I%V?T zn=tur9yIys7fpWRd6W00P5zdY$%h^``GfbHyldpG1Lx$eC(c`*NHsTio=omL*~>rL z_l$ES{>umduz1aD@qZ`||KXdzd!P2evHjmV@XQN0jTL|Tv#I-LpZjrmO@HOw?=HK? zJste^dtcamW9y~;uN@mY@!r{2-kdsj?<0?#c3+#QY;lfQsjV&NJDb1dk5c2Q*pt`f-yMB*-#=4#&b|7px5?)N=gG4V Wo!fkQ>%`Lt$qUyeo;be;h5j2G=jFZt literal 0 HcmV?d00001 diff --git a/additional/Icon48.pdn b/additional/Icon48.pdn new file mode 100644 index 0000000000000000000000000000000000000000..d56b6266e1c2728231fb7e8e2e44b1aedfc46b44 GIT binary patch literal 6689 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 literal 0 HcmV?d00001 From 67e75da7c56b00e491a8818d815738134b066267 Mon Sep 17 00:00:00 2001 From: yck1509 Date: Sun, 8 Jun 2014 00:25:59 +0800 Subject: [PATCH 02/17] Work on GUI (WIP) --- ConfuserEx/App.xaml | 2 + ConfuserEx/ConfuserEx.csproj | 42 ++++ ConfuserEx/MainWindow.xaml | 17 +- ConfuserEx/MainWindow.xaml.cs | 13 +- ConfuserEx/Properties/AssemblyInfo.cs | 3 +- ConfuserEx/Resources/FontAwesome.otf | Bin 0 -> 75188 bytes ConfuserEx/Skin.xaml | 308 +++++++++++++++++++++++++- ConfuserEx/ViewModel/AppVM.cs | 60 +++++ ConfuserEx/ViewModel/IViewModel.cs | 7 + ConfuserEx/ViewModel/ProjectTabVM.cs | 8 + ConfuserEx/ViewModel/ProjectVM.cs | 52 +++++ ConfuserEx/ViewModel/TabViewModel.cs | 12 + ConfuserEx/ViewModel/Utils.cs | 79 +++++++ ConfuserEx/ViewModel/ViewModelBase.cs | 34 +++ ConfuserEx/Views.xaml | 6 + ConfuserEx/Views/ProjectTabView.xaml | 63 ++++++ 16 files changed, 685 insertions(+), 21 deletions(-) create mode 100644 ConfuserEx/Resources/FontAwesome.otf create mode 100644 ConfuserEx/ViewModel/AppVM.cs create mode 100644 ConfuserEx/ViewModel/IViewModel.cs create mode 100644 ConfuserEx/ViewModel/ProjectTabVM.cs create mode 100644 ConfuserEx/ViewModel/ProjectVM.cs create mode 100644 ConfuserEx/ViewModel/TabViewModel.cs create mode 100644 ConfuserEx/ViewModel/Utils.cs create mode 100644 ConfuserEx/ViewModel/ViewModelBase.cs create mode 100644 ConfuserEx/Views.xaml create mode 100644 ConfuserEx/Views/ProjectTabView.xaml diff --git a/ConfuserEx/App.xaml b/ConfuserEx/App.xaml index c398c5598..c1b54d45e 100644 --- a/ConfuserEx/App.xaml +++ b/ConfuserEx/App.xaml @@ -6,12 +6,14 @@ + + Resources/#FontAwesome \ No newline at end of file diff --git a/ConfuserEx/ConfuserEx.csproj b/ConfuserEx/ConfuserEx.csproj index c1e50ef4a..c2fa1fec0 100644 --- a/ConfuserEx/ConfuserEx.csproj +++ b/ConfuserEx/ConfuserEx.csproj @@ -60,6 +60,13 @@ Properties\GlobalAssemblyInfo.cs + + + + + + + MSBuild:Compile Designer @@ -76,6 +83,14 @@ MSBuild:Compile Designer + + MSBuild:Compile + Designer + + + MSBuild:Compile + Designer + @@ -88,6 +103,7 @@ Properties\ConfuserEx.snk + @@ -96,6 +112,32 @@ + + + {BEB67A6E-4C54-4DE5-8C6B-2C12F44A7B92} + Confuser.Core + + + {E832E9B8-2158-4FC0-89A1-56C6ECC10F6B} + Confuser.DynCipher + + + {3EAB01B5-9B49-48D8-BFA1-5493B26CCB71} + Confuser.Protections + + + {862DA0DA-52E1-47CD-B9C2-46B106031B28} + Confuser.Renamer + + + {A45C184F-F98F-4258-A928-BFF437034791} + Confuser.Runtime + + + {FDFC1237-143F-4919-8318-4926901F4639} + dnlib + + + + + + + + + + + PTL + + + + + solveAliasProblem;$(PrepareResourcesDependsOn) + + \ No newline at end of file diff --git a/ConfuserEx/ViewModel/UI/ProtectTabVM.cs b/ConfuserEx/ViewModel/UI/ProtectTabVM.cs index ffb0ea7a7..6feaff6da 100644 --- a/ConfuserEx/ViewModel/UI/ProtectTabVM.cs +++ b/ConfuserEx/ViewModel/UI/ProtectTabVM.cs @@ -1,4 +1,6 @@ -using System; +extern alias PTL; + +using System; using System.Windows; using System.Windows.Documents; using System.Windows.Input; @@ -6,6 +8,9 @@ using Confuser.Core; using Confuser.Core.Project; using GalaSoft.MvvmLight.Command; +using PTL::System.Threading; + +// http://connect.microsoft.com/VisualStudio/feedback/details/615953/ namespace ConfuserEx.ViewModel { internal class ProtectTabVM : TabViewModel, ILogger { @@ -24,6 +29,10 @@ public ICommand ProtectCmd { get { return new RelayCommand(DoProtect, () => !App.NavigationDisabled); } } + public ICommand CancelCmd { + get { return new RelayCommand(DoCancel, () => App.NavigationDisabled); } + } + public double? Progress { get { return progress; } set { SetProperty(ref progress, value, "Progress"); } @@ -36,18 +45,20 @@ public bool? Result { set { SetProperty(ref result, value, "Result"); } } + CancellationTokenSource cancelSrc; private void DoProtect() { var parameters = new ConfuserParameters(); parameters.Project = ((IViewModel)App.Project).Model; parameters.Logger = this; documentContent.Inlines.Clear(); - App.NavigationDisabled = true; + cancelSrc = new CancellationTokenSource(); Result = null; Progress = null; begin = DateTime.Now; + App.NavigationDisabled = true; - ConfuserEngine.Run(parameters) + ConfuserEngine.Run(parameters, cancelSrc.Token) .ContinueWith(_ => Application.Current.Dispatcher.BeginInvoke(new Action(() => { Progress = 0; @@ -56,6 +67,10 @@ private void DoProtect() { }))); } + private void DoCancel() { + cancelSrc.Cancel(); + } + private void AppendLine(string format, Brush foreground, params object[] args) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { documentContent.Inlines.Add(new Run(string.Format(format, args)) { Foreground = foreground }); diff --git a/ConfuserEx/Views/ProtectTabView.xaml b/ConfuserEx/Views/ProtectTabView.xaml index caab5e4f8..34fd123be 100644 --- a/ConfuserEx/Views/ProtectTabView.xaml +++ b/ConfuserEx/Views/ProtectTabView.xaml @@ -11,12 +11,14 @@ +