From 2732aa0c2f5394c6b44622abe4b9b8d89935ec8c Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Mon, 7 Feb 2022 00:29:25 -0600 Subject: [PATCH] added reordering, refactored mixins --- README.md | 3 +- images/pic1.png | Bin 13208 -> 13853 bytes images/pic2.png | Bin 33301 -> 28756 bytes images/pic3.png | Bin 0 -> 34223 bytes src/Window.py | 2 +- src/controller/ChangeView.py | 4 +- src/controller/Controller.py | 31 ++++++- src/controller/widgets/Case.py | 9 +-- src/controller/widgets/Insert.py | 7 +- src/controller/widgets/Remove.py | 7 +- src/controller/widgets/RemoveFromTo.py | 11 ++- src/controller/widgets/Replace.py | 11 ++- src/mixins/CommonActionsMixin.py | 98 +++++------------------ src/mixins/CommonWidgetGeneratorMixin.py | 78 ++++++++++++++++++ src/mixins/__init__.py | 1 + 15 files changed, 154 insertions(+), 108 deletions(-) create mode 100644 images/pic3.png create mode 100644 src/mixins/CommonWidgetGeneratorMixin.py diff --git a/README.md b/README.md index f26a6bd..10149dc 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,5 @@ sudo apt-get install python3.8 python3-setproctitle python3-gi # Images ![1 BulkR clean slate. ](images/pic1.png) -![2 BulkR loaded dir and some actions. ](images/pic2.png) +![2 BulkR actions collection without set dir. ](images/pic2.png) +![3 BulkR loaded dir and some actions. ](images/pic3.png) diff --git a/images/pic1.png b/images/pic1.png index 5de477d59452327b4fe15c119efb01bd8b2004b0..89d0bd34a7fdad118ee318b4f4e24b4439bfe4b6 100644 GIT binary patch literal 13853 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 diff --git a/images/pic2.png b/images/pic2.png index 19c5f843ae6fb458b62876bd71b097bf29099147..b5373938899c7846df727a871a7a75a32a875c58 100644 GIT binary patch literal 28756 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 SBx<`L2O_IS>bz literal 33301 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 diff --git a/images/pic3.png b/images/pic3.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a908e4bff8810fe23c90e1c98769c11f1792e0 GIT binary patch literal 34223 zcmce;bzD?i|2918Q7{M=b0 z&^^q|yYbw0&h7cV&+~rX=lO>ZYxdr&_FCV#u50c0N(#~>S7@$)Kp+yCXOb!)&~Ne} z(D@DG^T01d8NSy*Ab*&Qg8`f9 zogM8=(cSL#_0t1nbj@U@zwAr+P(yWA`XQb$w{i9lXd#r->LHEH zjY#IpGLiJ8!6;UlNb+KG31T*<#z1cLv&f-Z2XAn5{~(n=c|5{Ii+d^M9Pn6s#P=uA zSIrY9wRQa3$=Z2QCfNGEzGTk>&!Y~);rOD2*z?RC=bLc^-XkR{lU^J*|E zAv%)5LG1gieI-I`>{S^HYt~cUu)9~z>TJnF@hRfgA_9;jf_76ICtedCat&j!mu*Fr z?-chDE=%1{=lNxb)7Xa2t=WIlpKp>DRMFaz5ouJ<0)~GZ7uGKpoWCw%2IC_PZ#E)EBL9Y_+V%V)t zUUa!4YLNGQ-pR3M;mf`?e{$`RllM~lbj7FGm0*dW0GIRLoo@bm!Bxpgu{KvPkxixV zTV|`}2G90)|-?`>ErZxFt0Qj#Mp^`R$!;L0gUmF9nqB;u#uoWKPjz zDFH5dA_kL{$#kxK{bJr1fo8%DBAHpTzTmgf8FF!mR+eT#yPY6y)lBtc+lmk>>lBUN zV#|hiHawjT>g(f>|QS)L?UQmXzyB- z7V)fVt6YIf4Wa>P1GLlaexoTeLc3pQ|5adYOqaXGLz-lbkqiZb<7N5hY~vcMBOK#a zK}6z#KY;g^Bse;`D}3k()jSu+(&eZf04$CX3-w52*LDeF8Aovq1-Io=NVg~711-eh zCDawA9Q^gb!nPSlo&JhsE`gn@Ja%n2fA6 z5v%i<_)n3sk+I6d6N9MrV)D4c7E$dA4}V9K9u2F7eOj$H){HM1wDS6w!q|NlKfki8 zwEPWd`;lP{ozMOf=1b|`-ogR}oLAq)@=}VB!`$NZR1am>r^}lb*cnJ2_~ONjEvz)b z6^OGAZ#^pJ%wq=6cu&3vM5iQ+SS@u7`ii60b3T6DYrqT792H47yx8eM%hjv5yI7q) zL7^DQ9LRYUECPQPo|JStpUEWFayaq!ArPF^JXtde{D%rc!fEd25e!j#)LfBy7{)sgh^EQHka+#SrpFRk`sq zo03Y$Om}vt>=WeA;=_eM7ZYlczjqb0G4)tJ=<@HUKfAR(;){yKkoLQ{3TBzY%nm2y z1L{FP&hxn=eU>g4*BH)jS%@FAmJJHyqaM7LVxlV_g-$Xm)5fuD$jZvXgy{ZtlXgL& zQratBucYsTix1uFq0%s+=casMBA|vxMPDZ{E7Ve8wDVngpOhyrD<*a)SkCIcmra!7 zI_v&({-Oht&Zg#(MLXo|QZ#FCuTIzZ#jjVj2*;?%3<7RbSFoJy>{8V%GKtAATLTn3(b^!~~sKFL)&^!9_f3LRI&7pIyK=*gEI3x-H zf0X@jQJCn^roS>YOrbddK2_<6@n@DhH$rpPLHtmTUf$z(Cu5=26fg+qx+6Y;DL1#4Kpe&3goM(m4pkI{@?C*7^l^!_+FC!SqA-L~sZ6A{@2?M~5t{S1_3 zd3tNtAMWMQbYcuwzR>nDSg6$K`(B8~JHnO>(YO|LwMi=FdNg$sk#Wb}G5Yr`&bB9!s{^Uhi z%@x|iT@9IdBPM}-5yr%I`xiWn)7ir(sGWA!G(DXL{43quCfgIILpGWDi|sV5Z1MQl`TvdiDZY;Vc5U?#CbcV_b2hlKw zkGVOub7PYHY^-;jSx#4h@lD=vl0Wyd;FdH z?B*7!SQD8@$4|faLZq_>wVq1_HYvZ>KdbPOcn4|VSacf7bK$;xiZ8US>4yz(X5w>d zUge*5qd$r{S;OqU+v0th6sJ&TnM;axPtJLqIcSjo2lUx=fd0!I{>3`}Un|NxxPtE8 z(~6a+w$KRH;@(I}EsauR57D;T+KFXmBZNGQ%=-QWad__$?Q3!gAvz%VjEpdhTs&o* z9tF>GuZQ1Lb}V@k>7=w8|ItE%@*K*_ysUa|)bU}0f#>XST| zgIc|Ei@mj_jaqbfCJ1H8PZP4SM!}#DtC=!?cttt2!L#JwPcPu(GMN4bi!4%v8FKbUUk`-;TtD|n{!zRqir)Lgi^H7MBS#R=6Sp-&PN5u> zpzs*&%?7vrx9ruPYe9LlfOBP84Hq#9Q3rtpSNV;Gg97SXrml)ojE;d!?#Va62Ul@q zSoMd*VB;}ESvgVPxxU;U>HLeH=dH_g#RR=1D!!@8;WsCCWgv=UuB&?=W_oaQvLANg ziJ6LQKR&a>%=$V(Ykey@C#3wJv%j1t%MwsEtzSU1`GsSK7j%kzPit4&3>t%LR3EV^ z72uX-#B$-MuTBP>-nR@`Z%LP&#^Pq?x;l`)cp>-Cv^D2U+C>{htYaq}Mtr7gJqYfC z>xJvq_J~G2yJK(vjd)pA!=(4KE-NKWtysoE{M2j*))#l@_vys{c==W4oB)5Hb zd*27DxcNZCnPgBEMkoUTeXq|391gZ}GIo??575{3Gxn{=-M4(FX*^vTqlx(xxuxDW zX-2$K?sP=zg--PQV&r%$e81!$;WEiz4YlzhdJ?w>xuVD=Fv>>wHakT|!Zer8f#Oi? z(6k<5_u%Gg2?6UN{Q);U_*h@PX6QcrXuU7?8F z?{zW~vqm;_d;hT&W1XAXfCRW(hNw+(X4t6HnZUmbt@*_4*LVBWvu+^WBD_IEKw4k4 zY$MR7$h3xhF2;h7-EJZR|Gewu++qRSHq=g+;UpDmsbRh|-mKs1psFcC$l13(nxVb` zO?=4GZR}|>{*hfoLY_-!C}+;7_7;8hY|RrxHVNXG)(RuIz9Jzn7Vxe5A`KR(fM6L) zuw;zD=10t@2M6!$cB^LP_{MDOPqAUK_yUGqJ|Qx0cKIsgcW<4Ch4bk*i)PIP3w1rg z9e4bep-wPV!33Xn*_9ohI0rt*u405Ltutn-@I5?>{dA}oUPxTlDFOJB-}dPHYAoJ8 zO12Ia^7ZO*O++MOe0l=vM)(}Mzlhkywkr94Ul)WX-=F>5zhvofkJ-g?#Ii5dr#zk8 zUytqU%p;3v0UmK^rCSrp&oaAQ|0I5}h9;%U zRDFC$?_}Toq)6BVmHAaQFcvYbX|%p)=DjyJMMibiQ1%33ytAawXL>O|p={YJ(tdm8 zroIsNQDfH7TQOuJI8&J7&YM)}+qz z7B@2aM7{O^-(*J`xRx)XQy#d%`-YIR9cnn#jPNIaGu5iFzCc*+P|YE%-IZu_t!@sj$mjvA6Z4EE z$@uYVBk4@%T9Rd0?gi<?Om~J)6VQLC+!Du%KY4EO~F=B{NMD0?mWZ zPD|OZsTjpdm%6rZW_p!uYM>uKDIK_Q;)U%#aSm(6aJUH(s7I@UAHd8$b->VYF}QH; zLD%J*(9?~+kZHSm9aRLSgtM2Yo73he9z52e9ZR6{7`t!0$FWMp^>mxLtbRka&Lt9K zuN&a>3>}dUKM2)7-45Igg_kpR?-p!d;Hyx1bQs{N>BGyq@D9%Hj`!@YM4H^8dJgBc z9Y?Q9(O;UXyO=jKTETdW%2d(E?lkaf6G@14h|gnUhqWQ$z(ZB8&efzrHJiiF4-C;y z)49+sY2ibKdU;lH3Wukf2;1bj4NbPKpP?dH4fd&lEM#Lm-E?W|N0Hs|vlH*}=F6%} z-dR@o#tVVy;xXIJP}>z(qmCqMFk|$&%~I|Nz!@G zhr(Yiw?93&8Mjf7a@qPy#PBlhq3g`{H+^~1!V^wo=XR>K z9gxypfx2v6keC#ja(n!`|E`%lEj9r+&`aB-vh%P;+W%713@xidzJ4YCD_2cZxHjWx zo#Vi2aEC-t>Fgb6Y&+$e0aE*f;w5fRW zaE5oB(?Za-@TfmeJMmJ0h*|F)-*GoEcgyToeMt4wf`S*Sgx4jO#bWz`sueo>mv2Zs zV-Jgi=en8VI=YLBu)adKVvH+vxbf8+F9Hg&4V@NZw6Mb2I^)IZN{Xl^Q_(U{tw?E{ zfQidl$ATFfqaZN}VJ~XUzh@B=`Ez|s=ncBXBW!O;n2RxDvZj_-Qt_mCdW&6}?a5KlWhKU#a6Lydr* zNSG0}Vy*6Uf`4yFC|__SAgk23s2Tvk)Dh(|-1#C0-&)e{>t1fC_QoQwQt_D3-=>7Q zPlW0vb$7&T8`POCHgEDUUj@H9L<|USpfRF1JOsTn-)`(OlCs9HXD+NkxgkH2rcqmy z0&Dv(vS_Afe9BmMG|pxh-(J2s?of<__xv~KlxlLLTZ1fb;q*L-4`(q9J4ML$=|+?ZZL2Z%6dPm&Bg(8-RzCHCLSYU+Cp5)PZe!6Caz6akpfSVl zTFKD_2N_~zJw*M>(#zm(!A;#KAu?=^l=~1i_oXk^mAf;?*Rb4q0P8$&mVdr1p z9H9y+U&UXNce9a+WbHl?vbuWCBZQo6MO_6M{K`fD)_A>W{u9JO4H8k*Az_rwBr|~B zT{2DPeUt^O|2oMlV$fc!RZcrd@A|5!Xd`X;99aqKmI!L_i^4TI%DHpFPrwdR^kB(%Cy(ETM_H+-V2tjo!5i#-mclg|w)GqZ zl+($=ZQfrV7K!^!hi}7LMzhIjB41j5%CnOn!*>ejPDy%Uh#@(4^)YD+K3G4*v7i*+F?yK z!J${c`Ne&C8)|%InQ!yP3JbA&j%$SHUKN|QiUP(?hoN6qak??LRKG-9)%+O5xy11_%#PcIR zs(ot#&m<{J7pPnY6GN)*dirX-dmQ7q1O( zM2dEvl&$FYM0&LzZ>m;2C((Cn)X5u&+qNQXBDv8~1)dGqnS*8a`Br>QE`IvAb@c)( zuIusCj(+5sI@o;if`piU?ZIBmdj($?`?%LTDVE8uIMZZJVer*O^jXhHK*{aYd=tMS)emruPlaZ4SDH6+Swdj`X?T(MrC;^Kya@jxkm2%N0o1Jmu!Z&LHw(p`#Y(%#gWCb z`jsLgeCOB8U_WaEf|bO)=6Efg+5s9~I2~XAGWf~kGn;7B#x0@1?T&RtaNQvswME!h zWUQAc#`J3qDlk;pP@gz*FxF`slv{>@ZIW+R(xgn74)*#Mvbx+plGJWaxuYi- zEm3vM{wjNP7doYLgpE;`0q}1bo4y>!aauikF6B-nTFt|9v@y$%vrE9q!};i#rAq)3 z$f#4i)Gz2EPiUZeF5?h*h`CAPQDrRwJ1ss?RXr4x4)b-{uDx|#OV%i=KJ0E_0Ulkt zWaB`cte@{-jasw`rW83jaN}F>R*Z01?479>F{F@4Ix(E#yI_!Vn4iUe+y`ZR`a1$U zGcb*CW+WIA0g-K`+sUAvD~0`(YLoAW>x1mmqfQ&}MbXtPBQ67)6H9f*`GRG6IcSw- z@l`O4Q{Q-P47cBZ(@U&5WKFqYL(8sqvsaBQYYoa%({IvgCC}lt-PU7smFfj{&%`np%en>lt#lulvks-XQzkgvd- zdlPQ&xVasdz-n+JzD7P~I877RpJCQBqp7dWXSeeDyLVR4hM|o7k@t+i_1o)7%`JfM zsxkR4(I)2|ppdl6!pjXmF*#_?HDRA5 z>=LT6tPJvH#NfF@y#cYo)l*mHr{ya5>KKmHC9CV^pL6yNkzSyL2<;oRVg)V$a$c?8e?zM#N==O{f4ShUzZRhWUH5tD96G~~P94SZ}ny==sqyql=GRq5&zITR8 zRN9gNk9~XM_h)=IAnDzJVx%!cFGw)LM2mg2SGI(&vF=KxbkUQ>x}PXSt#kx{XRJ62 z2X`#n3w@|zy0>o}*ks+=w<>mJAV~J;e5 zVA90CcG`>o5;*w>jv_A(e-d8cD>fpogg^>6n^sev>^>FbJ`dWmx17jH&yub7t?Z$r zuHN+OKO_PvHCFMVh2oN^O>5UlwG=bN?k#Yj@dFxHbCt{9Y82mXm1ZF97Rysg5YI^Klx1(2@CEp9kny|) zaMkFC5Ve~CS0mc}VFRC3Omf<&$T(HTu{UZ{5# z^{F3bb|N=Rtx^rWm7yXVOydeGC{?nnDnW?}^utht0^m~utfB79=5+y& z)vW|q)C_D&ZqKK48wfFSL){cWppCPc(hYz6_HE=~w|jDrX&Hr-9SHOxt$%e#j7R+v zD7=J7BYv*xr$GQ+A^SC^_wS|2p%Gr{-=ZWSE(e_#kV3N(hX=m zaC4uT1Se5KAON0^IR{#JKk*Y3Q#Lzfju#ePW!lJl)cZUIk{X%C*|oIS>?G~VGvV9} zz6$n})v1?j5Lbk1WaW=jz*hTqP*@d=FCj)j#naUjH)XmCMf;TTx8Q#?Ojl`tD1V-O z?j3-1ESkyGZDZ@-VLXU>i7&q|5qcQ#y8eQPpbdF;RL^yE7~{c-GR55MPpK zJ(e(C?DFp0mDuP?Z>zWs(ZuC)46tl2pS>0i+g^wYgb>h+U2Phks`Z_mrHdX{Uw zsEzpO=JZT$RI|o6BESH3CA9kE4l8L~f zVrw`kbUB}TxUYx5mJ`YJ+0N729PwTji61p4KnrdofB zNwLTk+`Msm8in_%7Y>mnHkAEHE@3We*-2{jso%#p5hYxk9ZS%z-jqo3h{UK2oq)z- zotswe6^wc+=e*MTi8@0+TA5;}W~uzh`S(_>a@PZagzYSO>_N^JH*xy)$-1xp4*I<} z8?g1F4p^rQ6C;($dYh3h=+2xN(-1>h+ku_0ag*St;%%r`^KwpCA+ZdL-`Ds;S@tJD zQh+aS)a;#M&~Q;{@48i1g~`gx813ngY!xh_FEFD=Uj;IXX8|-G`%|+(UJ_wilQ-)= zMgameood`<_X&a|7RzptXw6NoTafu7uZ{=OZO zkzF1AxzIGP^pFv>lSV;*BCD)fqCSo#dnEHEH8pkNp_9H@i58a@VMRI3(B2*`ZKb&% z9?~CSh=o~0eHP2H!fbxzK+RWP@LTmCfAI{ci09p9f%fJr<`w-9X`XD%St>F(_EozMnQ>Wj0LGhGEnXNy@5@teomh&eK$?)X7? z*B5raMj@5|Ujh4k&4R|3D%JTwpYUVNQZv?GI;9TPSQ96YxvKPq8Gs+#0SbalQB_^lu~byg&z4uxeFHUFC$?xeyn*JA$f7*S>fh z*HuYfWimFBLsETUJJQ^%ddp`Ot*Ggzy+~y3$F5VJSz$f(``5QDEVeV_86v%`0txr$ zwE$Y=u&G7jQ=|`ReC=^jD9^q%?!`qrbqVLA`j9*_1NojFO8YYE68v}G3DO03oePh^ z>77a@px+rM!=2VMgT7v~iqr4SSchJ}?$l&VsCnhg06AGHZ3>3!Q^UdhK0ZHm=7~a+ z_sX2SULsiKD18o|K9777q_3qdB5E{X2nNWg0^PNk>vp8?uV7b?3PfEy=*pG{>G`BW zMXAL3$`yKj1&ff0rTirZD6A+B)7S!UGaj<)$0i$sBW`Bt@lWjbtAiy0_!`c0x)4k| zd>8wXM#xmRIgS2mrd=t`X`mv_gKYe!fx$D6Z&J(s%Uz0;zPI4Y6^q|y-vwewj*rfe z$Ydv0*0NVGrw-_8>Gd6j1a*FoOWekjzSz~@JeR7ZYyw!$aIy_I z(l^#Rr~PwLvFzSNWQ5JrG1WG*wV`|f*<3p|A4!-t;Jz9nF96AJjjD-db$@8RmhOtA zD0A5#`@|gBB}LD+ttns~ls}k*ybx#bhleu8Yd+1oA@N0j3Tt8BXk}z@m3nI-_Njqn z0w#XYV5Vlr*!c65ZN2?+U^?|lN=O&FCU0aI(QrF%^=l%2(pz@G&8L3lPz~@*6jfrZ zb=pQVM7DlGBx}evRuQ`4u0X-uGM_Thjo@U`k|(fFJ*G8HG>i^->|_jl(yo=r71;6g z>H$Es;*L&X3gzd2)wOD( zMNNP5SRGe}+26ZN$84WBc<#UZC)x^jEJxCT0BDmqlK<57Ei2IE>F!j zTi&zJIE0tMD0^BH4y>qpp+5Xb<04JBS4W;=yPmBwDlXpGf;~QwfmK(U(e<#HHe2IR zwwnuF8{%e}^^X&;+my!dOrmrS>9dEt zn&*~$3A+e?M(zp$`u?h&;uStsOmWaSp#v!$5Jqjk*kq>y=;-b^HuVn^7#>t6AhtDz zT6vcI6W5QIEjJd+7NchT%iRhHjWGS#1)NdVhEUYBP2X1q6uVm{v!tCt(eK|Adf;Ol zW9Pf3;o)ID#2}WN>a1pGOCZ+M=WZ#*3e>5*H!@7TCN>XkdLFdX6Vh-~`vYLIQq2Kl zZ~vGJ@M-^2wj~5^RP%!#^}7inbS{7>ND6_!fD*6oZ-j6EqqHO8MuZa}x5B}Cc>M*% zfb>Ty=G^N*CBWyMwfI9S;XINj=Ng>*^awv&Y)voj=yi^khnL|N%_SmNpHi4Q+1PD* z>T|_wy|{C2P~4Zwnv0;H0cK7rq|Kz}*D?O~i?%qAa-aOS73^SPubEa%w^VWM(wkeHY!29A?kRVH2Z2(&GM1aRh=z&hIP@fJzteSzJ*v)EceQPkD> zuvlK24p5N&i^<)z5sey8m(qJ@IyTHCsKO=jiK$6}n@nVdE@L2ijc&5y>AbMG@O4@r z*nDRhRU{{*G#)cvr5zj&aVkWn)NW@2GSh?X{f?vv)mFdBV&N+*^yfevl!dd4Iq1-TlAzIEwf!8XD)}OyOb&rw z)kG|$;oB6X2~U-I7K2dqAgi zBWKrcdD@wb0;FEKZ_RX9gWeOx5c^N`#ZA@%6ZFGJLAx_NkR*uQf29dDaUsNDzpejB zL3Z=xk=6FnvZpa5w0G8=bEBTj6P64Ax1G?KDeO;OC1Q_$k|xD?PlUH{N(^h)Q~3wW zqbMrqsbxO$Lr{M&JaP^}KgH-F%svGP`L~Fz!-a`j04!NX%9Fd;5W7(mUe&kSQ}Y{? z@TCEcP)NTa@#zK=uk_T+kyw7tbsY_!i93F>XuSrD3BwE0?#&9M{KG%BZcZf%)Tyd9 zmV*fqJ>!eDl%UsMsb{bH$D1oG=+W+e2}_+Ph|v2JXOg^25<$;^^z^#Z>bFQ$BEK(J ztcP4qKW#^~DaaL@`4-rd0&@oBCuE)nAu?c|UahZ7nJ8c>iIw|e%YxC24K!xOqa30S zPU}*RA?k}?za&G8_n(Iihdt!3@b>+ub}n`zFMiXY#(BibFvg_LIqPcIkKfU()OxDU3pt#f zd-LwK+)T|pwM#MKT$E8Q?AQ}Qw+y@e$wQ3-#Dm#_AFTW5y|2-fA^Da&xCuK0`r?Vk z^3XbtMxh-PDSok5joo|kTeWw9-)*%+T>M6%^$2%hnUMS7B*OqHy2dQLNj zAh-5^cGvkbqSh3N#$7t_@ijFo05Eg=SF@*F62yZTdb5EV5}M&0?Tfw9e#;mRO6G;V zA93rn9lXMaS%xkKPD7FtM)p4X^Qwpvw_3r-fXDT-f^Qz-w*w{YVTHuBp4AVTQb#G>vo>7 zVCj>^@;1=c*Po%~k8}T-2>AEYf?mHeFRk|Kl{-u6*WajTeof&x!-qjF{(r@X|0L)A z-vnBtqVRlX4SFTdHv%sJs!PE7-Vl;sD9d?@U=um?0T~cR_bIkrbhoIF4N)4*Ii#{4!JDS}h&4Sq; zIpd0HJEW51>@d=aKd=l`VyQs1X5hT_uyrM+4Uq z?~m>-#8wT4O$%6^TK!hG#{1(a3r^u$0ZRQ^$%20NE}*nwdpEAjRTqYz_~e0|j1WVI zPEynJnjukRQG(MCFM|P$Ks=t$vGY^7jz-|$B1^jRGrmjfxjGeQrIuO4?GjARb^cAVM?nMnun>@x zzHdA5O%*#e-7bo}TPF&8_AP^6wc!Yrf4C;Tmps{hb2P6b(jV@9J!*mc^V+8s#VmS2 zdeeDyEoXc8!VC@6e*Fsq12|7)+C}fchBe&D# zxK|`yYND-oJP8s!o<9Cf*)Fc3+UR85z(#8v#xIJtJ#>5!GF-Eg$n#K3*cBQ7Y3Rcn zmkC#EXSWVRaPu#*xhacs>2w~b)~ULe)Ku(+Kr)7M!386$(5W-nmwi5#-AM4MpUI1w zJr8aZ!uz04w3(b1A0#e3ikRG@J6~4#f&9+6BU(|_#Hzl?t^YjQ7t)=v>r?9v!BAQG z$_PxzvpFQjF|_v-|3g*r_lXgeL_2ATUhE+K7~}i8Q+R%^Jk);Kddd9nbR@M=ATf6F zosH;-xue6~k<;{UfckW*aQdql<0z&7Uul-YQtE%DLX)tHTcBtap^p^p?9^ z>L;WO_?hF9tWd_`9Ibs{g~w^`|kQp>kl< z!$j@nUucI#0!^%1V%t3l{Txg9 z&9E2ghRvU!o;Y?F8-aM?U~p z@ct?@qLNUvn`SvWzKg?oxzNOrH%8x%7<>C~ugxateeShN0DBbH*388&rbzgg&Uu<5 zSpgXMGuw8^aH%R)2txEw_eX^MnCA67&b17YK&i6w&%6FpbX*qWYD2lU+Vp_v$1FK1 zt0Az50^C*3X2d#)+`uDqj3jgqHN~q9BgRf!*XCPSD3MsMJ5#2ilqwT69xi@k+YG${7;qOtybQ2A@@s`~%gAhKg z^;;>o@%oAk7fFB2O2jy5#&j(F$-D2Hnp`0PJ$39Vdahq@tk{B{rWswy>8wv-ml<$B z8S*TZU0RM3>>;TU+#Sx{Ghuh3=|e&KB4Il(B5lm=<<3aB=qvJZL2t5ToaQq|N=PZD7=>^Id-R;>qoY zmdR#)QF{2rj5;rY_rQM5nRH6CaeT2n zJ#BDUOtG(r(<>Q(NUmD6UpVZPNs{a35FqE1AEZE?08F zZcQA|{RUCXBR5>6yVa7{wB5_iLo?WL=TgwsyOhY8oiG`bwlqe{Po8!3yes=pOX{l* zTpdo@wsc_=w|*6kyr6IN_-{PcDMkAth$Xd?qPBCiCnC=$XS`@v?t-N{O0In3@&nHi z?<%%C^2ERkH;Mc=uhfGo;dkmSQK=ZaNgGDT7lp0_z2^OMSRsV?&NY&4FyV{Z8OW`} zSsr+nwDhRbvOz&0*R)R1x2AldUUar|j0Y*PPw``yclY&=ceg$;!c1@u4?&M|G}h5h zKu(?d5&%+J7J;<#bt8o*fT!Mj@xJ~a^wou56Hos$qDtZWPg<&FD){Xx)ahV?zl*|^ z2Lw7)k&5Za-C_^Ti_LKW$)?Zs{*h|xC%hF@Udfr=JS+-L*vi<2`zVqUwot;JX0;6u zzTX2DYKjx3*B+MO{Z)WF{YMu&^LNIc9i0Q;V4k~FtDJ?Ue?Y1L5@z@Qd6%`QecP#f z1FKNmKcX0blSz1xhqnth#ROHE<$pQYz%ONMET%)_8+bd-dE9_Vh4~&zT}p*oT<>Tb z*JLs#?6u%_h>W3yXwm^kIs_Mznj3sjq;zUCsa58Hv~5+~05bc0fXRm4Mwjs{>)EOe z{JLIi$a(aZqT7q3V2W0(Lh%?-29;clDcpIj%(R-Q;3bO9l1ywWsJrlbPAxa@a0H4cm8S7l;76I3j^TvtZWD{ZUM>WPgC z^xE|v2Dy5}x6hxDE>D#{PE`<)PJ-4i)%1+?z`&AcN#(ScwKoe_ z$_{RhlJA-k-N_>VyxZQd=qb&EKWcJqQ=GWIbUb|Y#&TsE25@@S88aa)PNsfd_w6=s zg>Cp;0!#iPEtgo@J2yqUp?BQzDV)rwdf|BU!Mt$Xd)@oqos|~wJX)9AYBM8{o(plF zu!DsQ9ZLsDhmM!q+dsuad!q1y{UWR}ua?~{At;N3fE#z;pE0lAIF@0;WSQ6JDeOQ4-?9dBePSp!dbeT@00@6Zys6JF$qQ&hgbeXulsn( z7voLne;Y@LQZHK}B2CU%0x7Yxs8cJyme@VK#8&#j$+rtR%W#X)-L>|sr%bt>^n7z)1jpR(&abcG6@SUE_ zce=PdL|FdtQ>lqXlkCxWr>?hG!VazL`RCt~e-6<17H?wpI}?uvcKsBOZl?4A5XT<} z+C<%|4%^+|LjYyx1a%+~+Q;lvJG<}3)tD;YRRu>iS4cs3DFCz z74&GCB;c;=NFbDmUcXgRiE;lS;gr6`j>K_^sIP5(*2Y_{)L*Sy2Lm`JK&;oStgbw? zT9eLGV?)3h1b2lP!glJj0(b&*rt(RTO?5)qR%1-f@}@&F6L^0167AAb;- zKXl6j&Ns;%18kQ$ysfis^Xg5BzX>l;(6?{-anH@w#;xpXZ@-vUE#MeTJ-$jPoU@P@ zaX*SZ-hYGXq7S*LBR%1pC|{t376{dSoHK-?#t z#HEQHynEGc22Hmc3Tt-l#_IXRjUK%|{NUv3V`w_jcyU;~Zkp!s4dO9#v*c;9RoQlZ z;!*|Yi)FW*-oE#$b&{=%stufkrh9(Bf+pNoU)aWa?$q>ABK8eNkzJ9sP~haqBo#nUx zFP{6?eqBDN7lJcG`qY@l&uv@;J&Ff{1|`{;y`;gvA`L2lodSHZ)9UMS-+L| z#Zz#qpL=GfThD>WAOI2jd)#Eale5WME&oAC@oY^NV$=-Qj(qbAtqCL((7~uz*!G&E z*xMU)TYK8My6P2d`pR5uSbb7*w^X6N)pv&2uYx5J)FtONdK~dZ@)=w+83yny#ynLG zn=2wN=EtkvIWR3CUm7qrhYypS=XjwqcTk{Ly=(oM{Ejg)DX-+NU9H6p2_Vz<<~3V5 zOKtKgo`UWb0Q2&C(n$x|ALnbmPQ;~3hB!WIgD!A3k@bFZenAXYGvOHVFlkPF^0~2I z*ryA^p6c1uOXaiELb4X+Ek#1d$352L-G%WPRf%X ziv(kJo0B(B%=GAf{F}%FGEA$r5rdC%E~E0k8{#Y$qR^Q=&)hLv*$R3hlVQd7q(b^t^ix9CjdLJX32~gLpev zni^7fyS)!p1T53=CrGWwF8B9d=*lKKZ!jCsM>hv`E63`XqOWQRbis^F)z2(3rtaMH zd1Y1D?WT_hSSp)(_X_%-rr2>KC&@gjsuVcCf2I@wnsDS{yQ*sNz2pUjBF4G7)5|%2Za;a;&Dl; zI&og*Omi{HH^))?*MTo;`~?8@s<4)a-lT~+7^mgA6nm()*7?vJ-`J4nwsarYk+>8v zmFRAze!?3gOtPE+NxJKE{?W?QpAw%$I0u)XP=n|3`Q5JcfUpss_=?@hDi#sN16pC9 zRE5c)%Oa)w9zDooJNK@){-JRv*OG-$a>lyi`&~QGkC5kHzd|E@zk^=icy}h~-2QH}GYRJqXz4eHQo7A&sNiF?= zNqencLYb`Ss7ZDXltJ}V;bPkbkpP@&oj7MD9?wI_?^|H$+3zuIeVsr5%dIU(ys}vI z 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 literal 0 HcmV?d00001 diff --git a/src/Window.py b/src/Window.py index c06b4f9..108673c 100644 --- a/src/Window.py +++ b/src/Window.py @@ -21,7 +21,7 @@ class Window(Gtk.Window, Builtins): self.add(Controller(args)) self.connect("delete-event", Gtk.main_quit) - self.set_default_size(800, 600) + self.set_default_size(850, 600) self.set_title(f"{app_name}") self.set_icon_from_file("/usr/share/bulkr/bulkr.png") self.set_gravity(5) # 5 = CENTER diff --git a/src/controller/ChangeView.py b/src/controller/ChangeView.py index e3d6d2f..09cdf4c 100644 --- a/src/controller/ChangeView.py +++ b/src/controller/ChangeView.py @@ -7,10 +7,10 @@ gi.require_version('Gdk', '3.0') from gi.repository import Gtk, Gdk # Application imports -from mixins import CommonActionsMixin +from mixins import CommonWidgetGeneratorMixin, CommonActionsMixin -class ChangeView(Gtk.Box, CommonActionsMixin): +class ChangeView(Gtk.Box, CommonWidgetGeneratorMixin, CommonActionsMixin): def __init__(self): super(ChangeView, self).__init__() diff --git a/src/controller/Controller.py b/src/controller/Controller.py index 00ac263..eb6911b 100644 --- a/src/controller/Controller.py +++ b/src/controller/Controller.py @@ -8,7 +8,7 @@ from gi.repository import Gtk from gi.repository import GLib # Application imports -from mixins import CommonActionsMixin +from mixins import CommonWidgetGeneratorMixin from . import ChangeView from .widgets import * @@ -19,7 +19,7 @@ def threaded(fn): return wrapper -class Controller(Gtk.Box, CommonActionsMixin): +class Controller(Gtk.Box, CommonWidgetGeneratorMixin): def __init__(self, args): super(Controller, self).__init__() @@ -60,6 +60,9 @@ class Controller(Gtk.Box, CommonActionsMixin): actions_scroll_label = Gtk.Label(label="Actions:") actions_scroll_label.set_xalign(-20) actions_scroll_view, self.actions_list_view = self._create_listBox_widget() + actions_scroll_view.set_vexpand(True) + + self.copy_window = Gtk.Box() self.set_spacing(20) self.set_margin_top(5) @@ -111,14 +114,31 @@ class Controller(Gtk.Box, CommonActionsMixin): self.change_view.update_to_list() return - for action in self.action_collection: + for i, action in enumerate(self.action_collection): if action == target: + if type == "move-up": + if i > 0: + parent = target.get_parent() + parent.remove(target) + parent.destroy() + self.actions_list_view.insert(target, (i - 1)) + self.action_collection[i-1], self.action_collection[i] = self.action_collection[i], self.action_collection[i - 1] + if type == "move-down": + if i < len(self.action_collection): + parent = target.get_parent() + parent.remove(target) + parent.destroy() + self.actions_list_view.insert(target, (i + 1)) + self.action_collection[i+1], self.action_collection[i] = self.action_collection[i], self.action_collection[i + 1] + if type == "delete": self.action_collection.remove(target) target.delete() if type == "run": target.run() + break + def _add_action(self, widget): itr = self.combo_box.get_active_iter() @@ -165,3 +185,8 @@ class Controller(Gtk.Box, CommonActionsMixin): def _str_to_class(self, class_name): return getattr(sys.modules[__name__], class_name)() + + # NOTE: Yes, this exists in CommonActionsMixin. But, I don't want to add a while mixin just for one method + def _has_method(self, obj, name): + ''' Checks if a given method exists. ''' + return callable(getattr(obj, name, None)) diff --git a/src/controller/widgets/Case.py b/src/controller/widgets/Case.py index ddfe5f7..3b263fb 100644 --- a/src/controller/widgets/Case.py +++ b/src/controller/widgets/Case.py @@ -6,20 +6,19 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from mixins import CommonActionsMixin +from mixins import CommonWidgetGeneratorMixin, CommonActionsMixin -class Case(Gtk.Box, CommonActionsMixin): +class Case(Gtk.Box, CommonWidgetGeneratorMixin, CommonActionsMixin): def __init__(self): super(Case, self).__init__() - label = Gtk.Label(label="Case") data = ["Title Case", "UPPER", "lower", "InVert CaSe --> iNvERT cAsE"] self.store, self.combo_box = self._create_combobox_widget(data) - label.set_hexpand(True) + self.combo_box.set_hexpand(True) - self.add_widgets([label, self.combo_box]) + self.add_widgets([self.combo_box]) self.set_spacing(20) self.show_all() diff --git a/src/controller/widgets/Insert.py b/src/controller/widgets/Insert.py index 97afb68..7ce660e 100644 --- a/src/controller/widgets/Insert.py +++ b/src/controller/widgets/Insert.py @@ -7,14 +7,13 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from mixins import CommonActionsMixin +from mixins import CommonWidgetGeneratorMixin, CommonActionsMixin -class Insert(Gtk.Box, CommonActionsMixin): +class Insert(Gtk.Box, CommonWidgetGeneratorMixin, CommonActionsMixin): def __init__(self): super(Insert, self).__init__() - label = Gtk.Label(label="Insert: ") self.insert_entry = Gtk.Entry() self.insert_entry.set_hexpand(True) self.insert_entry.set_placeholder_text("Insert...") @@ -24,7 +23,7 @@ class Insert(Gtk.Box, CommonActionsMixin): self.spin_button = self._create_spinbutton_widget() - self.add_widgets([label, self.insert_entry, self.combo_box, self.spin_button]) + self.add_widgets([self.insert_entry, self.combo_box, self.spin_button]) self.set_spacing(20) self.show_all() diff --git a/src/controller/widgets/Remove.py b/src/controller/widgets/Remove.py index fe7b38b..e2649c5 100644 --- a/src/controller/widgets/Remove.py +++ b/src/controller/widgets/Remove.py @@ -6,14 +6,13 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from mixins import CommonActionsMixin +from mixins import CommonWidgetGeneratorMixin, CommonActionsMixin -class Remove(Gtk.Box, CommonActionsMixin): +class Remove(Gtk.Box, CommonWidgetGeneratorMixin, CommonActionsMixin): def __init__(self): super(Remove, self).__init__() - label = Gtk.Label(label="Remove: ") self.entry_from = Gtk.Entry() data = ["All", "Word Start", "Word End", "First Instance", "Last Instance", "RegEx"] @@ -22,7 +21,7 @@ class Remove(Gtk.Box, CommonActionsMixin): self.entry_from.set_hexpand(True) self.entry_from.set_placeholder_text("Remove...") - self.add_widgets([label, self.entry_from, self.combo_box]) + self.add_widgets([self.entry_from, self.combo_box]) self.set_spacing(20) self.show_all() diff --git a/src/controller/widgets/RemoveFromTo.py b/src/controller/widgets/RemoveFromTo.py index ebd1fbb..b0a13ea 100644 --- a/src/controller/widgets/RemoveFromTo.py +++ b/src/controller/widgets/RemoveFromTo.py @@ -6,23 +6,22 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from mixins import CommonActionsMixin +from mixins import CommonWidgetGeneratorMixin, CommonActionsMixin -class RemoveFromTo(Gtk.Box, CommonActionsMixin): +class RemoveFromTo(Gtk.Box, CommonWidgetGeneratorMixin, CommonActionsMixin): def __init__(self): super(RemoveFromTo, self).__init__() - label = Gtk.Label(label="Remove From / To: ") self.entry_from = Gtk.Entry() self.entry_to = Gtk.Entry() self.entry_from.set_hexpand(True) self.entry_to.set_hexpand(True) - self.entry_from.set_placeholder_text("From...") - self.entry_to.set_placeholder_text("To...") + self.entry_from.set_placeholder_text("Remove From...") + self.entry_to.set_placeholder_text("Remove To...") - self.add_widgets([label, self.entry_from, self.entry_to]) + self.add_widgets([self.entry_from, self.entry_to]) self.set_spacing(20) self.show_all() diff --git a/src/controller/widgets/Replace.py b/src/controller/widgets/Replace.py index 821d131..c127223 100644 --- a/src/controller/widgets/Replace.py +++ b/src/controller/widgets/Replace.py @@ -6,23 +6,22 @@ gi.require_version('Gtk', '3.0') from gi.repository import Gtk # Application imports -from mixins import CommonActionsMixin +from mixins import CommonWidgetGeneratorMixin, CommonActionsMixin -class Replace(Gtk.Box, CommonActionsMixin): +class Replace(Gtk.Box, CommonWidgetGeneratorMixin, CommonActionsMixin): def __init__(self): super(Replace, self).__init__() - label = Gtk.Label(label="Replace With: ") self.entry_from = Gtk.Entry() self.entry_to = Gtk.Entry() self.entry_from.set_hexpand(True) self.entry_to.set_hexpand(True) - self.entry_from.set_placeholder_text("From...") - self.entry_to.set_placeholder_text("To...") + self.entry_from.set_placeholder_text("Replace From...") + self.entry_to.set_placeholder_text("Replace To...") - self.add_widgets([label, self.entry_from, self.entry_to]) + self.add_widgets([self.entry_from, self.entry_to]) self.set_spacing(20) self.show_all() diff --git a/src/mixins/CommonActionsMixin.py b/src/mixins/CommonActionsMixin.py index f8afbee..0755493 100644 --- a/src/mixins/CommonActionsMixin.py +++ b/src/mixins/CommonActionsMixin.py @@ -14,33 +14,47 @@ class CommonActionsMixin: for widget in widgets: self.add(widget) - remove_button = Gtk.Button(label="X") test_button = Gtk.Button(label="Test") + remove_button = Gtk.Button(label="X") + up_button = Gtk.Button() + down_button = Gtk.Button() + up_button.set_image(Gtk.Image.new_from_icon_name("up", 4)) + down_button.set_image(Gtk.Image.new_from_icon_name("down", 4)) + + up_button.set_size_request(32, 32) + down_button.set_size_request(32, 32) + remove_button.set_size_request(32, 32) + test_button.set_size_request(96, 32) + + up_button.connect("clicked", self._move_up) + down_button.connect("clicked", self._move_down) remove_button.connect("clicked", self._remove_self) test_button.connect("clicked", self._do_run) - remove_button.set_size_request(120, 32) - test_button.set_size_request(120, 32) - self.add(test_button) + self.add(up_button) + self.add(down_button) self.add(remove_button) def delete(self): self.get_parent().destroy() + def _move_up(self, widget): + event_system.push_gui_event(["move-up", self, ()]) + def _move_down(self, widget): + event_system.push_gui_event(["move-down", self, ()]) + def _has_method(self, obj, name): + ''' Checks if a given method exists. ''' + return callable(getattr(obj, name, None)) def get_file_parts(self, name): file_extension = pathlib.Path(name).suffix base = name.split(file_extension)[0] return base, file_extension - def _has_method(self, obj, name): - ''' Checks if a given method exists. ''' - return callable(getattr(obj, name, None)) - def _replace_last(self, string, find, replace): reversed = string[::-1] replaced = reversed.replace(find[::-1], replace[::-1], 1) @@ -54,71 +68,3 @@ class CommonActionsMixin: def _do_run(self, widget): event_system.push_gui_event(["run", self, ()]) - - - def _create_spinbutton_widget(self): - spin_button = Gtk.SpinButton() - spin_button.set_numeric(True) - spin_button.set_wrap(True) - spin_button.set_digits(0) - spin_button.set_increments(1.0, 1.0) - spin_button.set_range(1, 1000000) - spin_button.set_sensitive(False) - - return spin_button - - def _create_combobox_widget(self, data): - cell = Gtk.CellRendererText() - store = Gtk.ListStore(str) - - for row in data: - store.append([row]) - - combo_box = Gtk.ComboBox() - combo_box.set_model(store) - combo_box.pack_start(cell, True) - combo_box.add_attribute(cell, 'text', 0) - combo_box.set_active(0) - - if self._has_method(self, "_combo_box_changed"): - combo_box.connect("changed", self._combo_box_changed) - - return store, combo_box - - def _create_treeview_widget(self, title = "Not Set"): - scroll = Gtk.ScrolledWindow() - grid = Gtk.TreeView() - store = Gtk.ListStore(str) - column = Gtk.TreeViewColumn(title) - name = Gtk.CellRendererText() - selec = grid.get_selection() - - grid.set_model(store) - selec.set_mode(2) - - column.pack_start(name, True) - column.add_attribute(name, "text", 0) - column.set_expand(False) - - grid.append_column(column) - grid.set_search_column(0) - grid.set_headers_visible(True) - grid.set_enable_tree_lines(False) - - grid.show_all() - scroll.add(grid) - grid.columns_autosize() - scroll.set_size_request(360, 240) - return scroll, store - - def _create_listBox_widget(self,): - scroll = Gtk.ScrolledWindow() - grid = Gtk.ListBox() - viewport = Gtk.Viewport() - - grid.show_all() - viewport.add(grid) - scroll.add(viewport) - - scroll.set_size_request(360, 200) - return scroll, grid diff --git a/src/mixins/CommonWidgetGeneratorMixin.py b/src/mixins/CommonWidgetGeneratorMixin.py new file mode 100644 index 0000000..80d8710 --- /dev/null +++ b/src/mixins/CommonWidgetGeneratorMixin.py @@ -0,0 +1,78 @@ +# Python imports +import pathlib + +# lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports + + +class CommonWidgetGeneratorMixin: + def _create_spinbutton_widget(self): + spin_button = Gtk.SpinButton() + spin_button.set_numeric(True) + spin_button.set_wrap(True) + spin_button.set_digits(0) + spin_button.set_increments(1.0, 1.0) + spin_button.set_range(1, 1000000) + spin_button.set_sensitive(False) + + return spin_button + + def _create_combobox_widget(self, data): + cell = Gtk.CellRendererText() + store = Gtk.ListStore(str) + + for row in data: + store.append([row]) + + combo_box = Gtk.ComboBox() + combo_box.set_model(store) + combo_box.pack_start(cell, True) + combo_box.add_attribute(cell, 'text', 0) + combo_box.set_active(0) + + if self._has_method(self, "_combo_box_changed"): + combo_box.connect("changed", self._combo_box_changed) + + return store, combo_box + + def _create_treeview_widget(self, title = "Not Set"): + scroll = Gtk.ScrolledWindow() + grid = Gtk.TreeView() + store = Gtk.ListStore(str) + column = Gtk.TreeViewColumn(title) + name = Gtk.CellRendererText() + selec = grid.get_selection() + + grid.set_model(store) + selec.set_mode(2) + + column.pack_start(name, True) + column.add_attribute(name, "text", 0) + column.set_expand(False) + + grid.append_column(column) + grid.set_search_column(0) + grid.set_headers_visible(True) + grid.set_enable_tree_lines(False) + + grid.show_all() + scroll.add(grid) + grid.columns_autosize() + scroll.set_size_request(360, 240) + return scroll, store + + def _create_listBox_widget(self,): + scroll = Gtk.ScrolledWindow() + grid = Gtk.ListBox() + viewport = Gtk.Viewport() + + grid.show_all() + viewport.add(grid) + scroll.add(viewport) + + scroll.set_size_request(360, 200) + return scroll, grid diff --git a/src/mixins/__init__.py b/src/mixins/__init__.py index 55cf9b4..49ca33f 100644 --- a/src/mixins/__init__.py +++ b/src/mixins/__init__.py @@ -1 +1,2 @@ from .CommonActionsMixin import CommonActionsMixin +from .CommonWidgetGeneratorMixin import CommonWidgetGeneratorMixin