From 91524404207df9cc9a107777a874d60bb11c9907 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Sun, 31 Oct 2021 21:39:43 +0100 Subject: [PATCH] UX updates to make this all more bearable --- resources/Makefile | 3 ++ resources/bitmaps/side_resize.png | Bin 0 -> 1095 bytes resources/bitmaps/side_selectface.png | Bin 0 -> 1730 bytes resources/bitmaps/side_selectwhole.png | Bin 0 -> 1507 bytes resources/bitmaps/ws_icons.xcf | Bin 89400 -> 109114 bytes src/mainframe.cpp | 71 ++++++++++++++++++++++++- src/windowobservers.cpp | 7 +-- 7 files changed, 76 insertions(+), 5 deletions(-) create mode 100644 resources/bitmaps/side_resize.png create mode 100644 resources/bitmaps/side_selectface.png create mode 100644 resources/bitmaps/side_selectwhole.png diff --git a/resources/Makefile b/resources/Makefile index 8482181..1720ce4 100644 --- a/resources/Makefile +++ b/resources/Makefile @@ -92,6 +92,9 @@ all: cp -vf ./bitmaps/side_surfspec.png ../build/bitmaps/side_surfspec.png cp -vf ./bitmaps/side_tex.png ../build/bitmaps/side_tex.png cp -vf ./bitmaps/side_vertices.xpm ../build/bitmaps/side_vertices.xpm + cp -vf ./bitmaps/side_selectface.png ../build/bitmaps/side_selectface.png + cp -vf ./bitmaps/side_selectwhole.png ../build/bitmaps/side_selectwhole.png + cp -vf ./bitmaps/side_resize.png ../build/bitmaps/side_resize.png cp -vf ./bitmaps/splash.xcf ../build/bitmaps/splash.xcf cp -vf ./bitmaps/splash.xpm ../build/bitmaps/splash.xpm cp -vf ./bitmaps/texture_browser.xpm ../build/bitmaps/texture_browser.xpm diff --git a/resources/bitmaps/side_resize.png b/resources/bitmaps/side_resize.png new file mode 100644 index 0000000000000000000000000000000000000000..0501c336deed2faa3ef6f33ea1d14d9e0e852d03 GIT binary patch literal 1095 zcmV-N1i1T&P)EX>4Tx04R}tkv&MmKpe$iQ>9WW9gH9%n4vmZ5EXIMDionYs1;guFdzMbCJjl7 zi=*ILaPVWX>fqw6tAnc`2!4RLxj8AiNQwVT3N2zhIPS;0dyl(!0N1D}n$t~4AUmwAfDc| z4aWP#yi$@>;&b9LlP*a7$aLA`H^xPmIhM(rne;p{Pb?HWSngn@WNO4y#4%OVDWA)F ztTNtWtW|1C>z?d|k-WaL%ygPVNMaF75FtQD4P{hdBTlPMiiI@oCw%;au3sdVOs+B% zax9<<4U+2z`-9)zT7}68FDa4$x?ddUV+0880?oSPd>=bb^8^S!16O+6Uu^(0pQP8@ zTI>jjZUYzBZB5<-E_Z-|CqptNR|?YP3I*W(jJ_!c^xXpCHLthUK29Hi40V;d0S*p< z(IRE9`@FlSv$ucGwEFu2Uwd+&7lHJr00006VoOIv00000008+zyMF)x010qNS#tmY zE+YT{E+YYWr9XB6000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00JLLL_t(o!_AkyZWJ*TM$cuv1qH<-wheTfjtGg43i%o6 zw&EFh3g7`!5AP5OS*hqEArRXj(S$Y;i1rmaNF(~fIDZS z4dA{4A}N%niwL6nTgv%2mwzem>uyB=MS;5j2i*sg`D|-*KHI7#`(*y<)#Ur^HGlya zsF|k3Kh#KIpu;zkq%r_Tjk{9Lf7FZ`ONc+*DNvRC{(LckFtiDkohk_g*HQw%S%F5z-&s4PM1HR=8FaTbx z5a*G?%Mt}bOYVfB$S>_st39JT-e N002ovPDHLkV1k5L*A)N& literal 0 HcmV?d00001 diff --git a/resources/bitmaps/side_selectface.png b/resources/bitmaps/side_selectface.png new file mode 100644 index 0000000000000000000000000000000000000000..946ab14cbd8e365a21c391ce190e87919d119088 GIT binary patch literal 1730 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 JPDHLkV1k|itXTj6 literal 0 HcmV?d00001 diff --git a/resources/bitmaps/ws_icons.xcf b/resources/bitmaps/ws_icons.xcf index 1cf81cdc2f7b2c6491821a2bc325e4a5b26a8744..858c27768ca76ac4ccec21313dc512ea52605c25 100644 GIT binary patch literal 109114 zcmeHw31Ah~x&Lf;OLDW25J&Gw1*N&dj-)go`4e1f03|n{PR1 zX3l(P|IRWu&Asi8f_tvNvEV;Pjv6K57-<91PXaOkvW!zEz&{Nl0vuTY4Q|7Lvn^U8 ze_a8G0l}Ma>tWZ=zwNd;x8DVxJ9e42U{29pb8aa3(cHUkE|~u9@6I5XbnbQTZACZD z8Ftfxxi<*ke;v5+u6u8tQ?PLUt#fY}lr-?ho35XK>-+@;134PD;HDoI6^!J+QG?+8 z!vxNw3iywl?^$?9(e-n0zo}p}n0uX!O%J>K_PKWz%)R~ko98Sf|MPFWap9c13PzH5 z2W^qW!xXQv)msqA_K?#Nfy3qj)m{3xA6V%Sor@a7JlGAE&TYE7XI~X7XGcx|L&m0 zzeEv=ji^c zA~8TA(UXdCMot2doID3?8c6Exph@ZEhmItGpbH#yvV%@>&_M^C2AZBH4j%}*7rk^p zq8Se0z7D#NO`E`WPUje`IJAod1uS0P4x?6-zzrhpULjXCk4M&`9*zGzOj9|?n(Q$k z^LotGU?7zRJpeyIOH}|YsHS%7#=2(!)NXQtT&NV(6&BEsPS&{q!WPcaNi9$d8-e@x z???ZB{gnQ?g&GKP8J(1VtiQjX0g-p0Jb(>U2eb?vFc5$Ilz}>74FnsY!O0vvNE<8z z*dPxe1)vVr2Mr!PNC7!wXx?x(LK|+37(T)~Tpuxf_y}#JJW3uJ9W`>~sF9KpCl=!$vFT$fKj@j6P@d=yN=yV}#C8AtVQ7vMll4iU)Je)@9~gO(Ic2IcMV`tLo9YFrOko_nQ<|nunKG3CKkY(!nsT8r z?LwSeah`VJh0`unrpdNQn`S_!z>{(DMHi_Tvx~eJM=!egqKhx)OezHG#qve!x7hR` zAO%3Q0?@uSVtOksg6E4aR^d&#NP$-dnqBO-v2sxho=1jbbC!Q4N&*@y8E;&nS6>F?_^uWds}U0jK~UmuR+JhFkYx z@^E>WK781);p(s$q2ZokY^XAXK<1zi89HQ$GE^QC89HPr$e|uM28L*ZjX{)Al|jg_ zlrcTXvyFo(o6;XY1#W)iX%&!(Y_AP8cy=GrpY>Dv8vXkA^YkT(_0#&w{bZX~`a}u0Kc4m2+6G3asWBxjFV($uYAs)hsF;UjNzP>sbt9z#ULV?2OvW-BGu=Y1F~NQ$bnXWAmFE;0#*t5{1Gq#RZ&zm22emS zB}p|D645zX^&8Ag1!#aYgGJRyOEeOpe>9?SicT76nM81b7a5G!EH^35dQ)?AlMkfX z+~jYL5eGK;2y4hVA~*PeJx9Ft>~Nr7KU{zKun%M!z;{Tl*A5x=hw7C>N9qq90%4s= z!0J7RVqohIsdeU|I_(ex=yl+gIu(p^NUoDX!zZVeTBWYJwvPXB((2S&IMkYTwQ3y$ zv{-HjYiremN-aAWtd)V~gEBy?Z8=zrAO1D!LAl0rFj{l)ApS~C&?X`G)vyD8K+hWg z0lCIJP~$tmYPucJYYyx`;N1^5K4q>V5drPp$Uu)2iitp6VzUR;&A1wX#pHlK1IV`}S24sqEWbwXcdeI*XGSGJ`9VxMmP^wX`%r#d0;r)+ByfUxh= z)-9X2Y{q|!vf02{+sptFO9Yv`#U!Clf5edJr` zu?3!W@<-8ikgZ*#u2t4_U(43`0P0$K6HACHe?PD^2DEgk^1iy%0OeiE-q(m)s+1`21xw`j^pf{V z-qS!R9N2rF65l)QT?LTxj{I%_*!Pa{?%QvvZ^zzx`|Y>h^1dB?>usX6w;34rmhyHh z3Gn-u_NM$VA3%MR{mTPLdeivVo5U^lzM(IE;|(Ag(75=G#rT8AUwMNqR^JG|&i<(a zx&pMvFEj>S0Q@s)z|2(y~O_PeW~@&FTM0<0tIXe!2go+ zEPKWSP@dJFdG?uSydX6j0?%rTj3*a8>087&BrTGkltFtInU6lAJgPtP=%bH#9*sTn zD1J8Uf0R9v^r-qEd%z1I8~~&MvJoXWx)eUTY5Q)+Q@PeiUDsPB=Qh^_(ZUxEN10dQY5qIKg9O=E1ZBhZgN_mr3X>6+8 zCKiDH0C13HVJx?3mOgYv=vp`g?-cJHn7?2S;dgu=*!a!TII zsx%uElvxVs5!DI`*d##r8X1Lb^gvAw%I!d%jx)-1vlc}ruDVA6Dw+!+Jf46jU*4y>Ymq(bJ$eHV|Tsen3)#(r7j`Dh-*laF5eM8BtPbh`;4h30ZD3uk2(pY{do%IT3u%4kV ztVbx5<%P0XZm28EiTfkJ=mXITRI6Tk+P7;Z&U=OPA$5A-c1YU-+lWH1%1YnE9F`;43R4xUsNKIzcZyoqSDB5 zWLuU!OCq#lmqOiA9Ug@nMBVxextpiImOOptmGo{YbUdZdXyhX*aH#x9u^K`J7Z+X6 zjqjbVHAKd690tNF4CP<8H8dC39-}pscOTruA@pLGLwWWn4|f)BVDerS7lfsCQeBVH zqel)OI%Lp*{(XDr_voIL5$GkEfe~FsAMPLyN^F2N( zcQIzo1j`C7j?GetJ5RN*Qi=P%Vsjce{rU-``3*hfbVDkOnrJo~rk{BsFt1|jO1*aF z%2MqEcF^}hWa*LvOP2f#Zg@VNSgj8bSQ&$tr3t0)CzLKbY3cHWclf}T=GK}u2|bh^ zm(;tmb?>^Bc&D-s-r>;Dxb7GZtl`kgmE{SpU@W#Sfdgw$nBK5%#ZgzV1~fSu*Cmjn zRnnlhSH5>8%ysCeEcCRC6A~jU?_Q{JaaJvhp~bOxp)!+Q?TkC}=V$uvg)^^4@`^_( zi39NeaB2r(3hU@C$U5E+&pmudOC)Y$8SU;DYk+QQJS<%*VExg!lF_{DhgOw>2HqgR z;5hbzR@pH4xkKuFxrVG1zhzGb7Fn5QQKC!(Hz*2D?J`Y5>H7(#%T8LlJmDQau%(n~ z5_%{-E@@k)>EOLB(`3G;$Eo3SaCi}!?}Q=)+{bW1=#m1 zfZnL=?@f_Nv6nl@cWjVPLdrzSpmjePCUY64x1TsrWPB#!}j4#W{27wyA zB&RC~G`yGPWP$LL1SQ9NXeBJmLE-UU5=l^gya%)6vK$m4bk(+ZdG@ur4M|=3gWp?( zXDw2*r09F>?QWU%2*Qy`S?zLjX8YXSEuNbZKr1&xWanmx?A+Yl%FTH^H(yFgQP|8V zH+wHFx_8b3k_zi0|8t~(f9|v5Ba&c zCM@q+gIZw?V|jqH7x!dg`H?kvTdC(Fq~S$*fU_6(T!gokzIksOz%Xf4Z*6Rf8h+k= zM>Ka9+=}GJ5S|trpMr4lL`^waWP2*=(q|Mcq*?B~EG*~~B6nwTNJV0&8EmoaohN1R zyp3M4?HGA&8y(k+T^x@5uLN!ojr_Hcho$mFM$R6IjhwJT#*LgwP9tZay^#|`@(v>> zIERrFoWsZ&a2h!Sl5xWfZt(QZ#2v2+wKLU3E&HYqrq4Dz4cR}J9xZzRXwkA06)ivd z!VgH4Tgz&Wb}BtCQQ6VH5{Sx=_LV@iqP;IxtE@a83A>E!VQreE>)7Qa%d2IVdtiz@ z%Jl~tH&AxCW|j(Ru;ZPsAY*1~2dRF=%$ZlGbr2e}XI`D&L1tccbw&pfyD^OAFK&8m z(>|sB1gY9huNd^;so71hC`KKFNN)MsKJz3fOcRK{S>-FrSTdoZ%?1-1naz4~vso{0 zHp{00CYaDLRss_mS_8$saqe@90Twg!-efYL-JgQ7Cl(G$`8cPN@hqGMyBQ0oOFeMT zkn(V*Y5@ne`^30+&>r`my5R1GH0x-xC+oOWTJ~jNK-j_^5CI z7H%LXz9i&fX@^vI&g|K%#vpxZtp~?PiN3JC=}(W5 z=n8eVv71DZ7k4%M@iCG?vV$c0i@T3Jr#!|WQf3?5>Phscszbk5xk#REY&yh6`wl*( zagjM=B$CFH9x&AV$XSdjg{Oh;w%FMEZv4sM4%It2y^gWxL=d|zj)ARtj>1nt?zR|9 zE||IhIeJGSfRU+&>p=)K7Tf;fFQteA#E(c4|gE1lMH9NV~J!+r`#N{ z?dN>A4Pig0j7*N5DI+5|{5a7`0erkv+(eS5Kifukw4YD6w{qb=#Fzt^=^u-0X!V(Z zxuPP;Kt=Ko>I&)dAJ%1dlZ>D52V*?4E;Cz-$&XbHL5tgXkhrM)>z#chG`o#Eh>fVv zY{KX$8sA3Ihv0SfkDufysPa=JY{(+X;j->2S?*PjFG-iF)5;!l6r^Xq;_*;C_8kv;iQu_Bg`iSv>o4x&wqzZ z=*6zrzO$;$U)&9%@9YwCZk|8dbb#Tc^zV1+Xf{Yg>b%f1o4u0zJbMbmNdqj}eCja_ z{*cXpT#Tn4155S-%b!9VOa&IFf)lg`TCwFG(6UW?L6bdTvF|aAZJdTPEDtZxlhM_G zAq5y+{1<}2=-I!J3Jk->3u(YIa5}L0*bA_1EoLvo2RvMjwvRVgqwV!^@+te|GOdJZ3PiAs;7rj?*9A zZv=q0QBZAs#R>A)ODMhgeFR1t2cH9QV#|*ubJC~ZUstY!jyhKHUZk6j@*=8cM4d#{ zwHLd7jy{K^!dPL~RA*IfT|+O}c3jD)fZM##hW*}G@{#TiZeXu0wq=qqRB){Q6q?Qf zP-;At@FRMh2ph#zJ3H|ha&^WSk4wntEf}DX=&xwDIz20e?hhdPcs6eRva{6>;=Yb! zwrMff{uo$j#g4J7teto*55f)HRiiDDB%L`mcV}<&#mn_Grj_byw6kmAREIB~MkP=j z@C203R3CN*ENTfAyD6DgfJ|m|hL9btp{{5_WI}TmE}{Zel(3o3y_v=o+*Y)Zrc#}< zW78o4Gi94Zs{Qi;qIE!Fw~w1? z16Xkgh1mXXo+2E8g&WA5?GN5iUv^l?f=uia&=qtSY)+5`oPo^=VC(RW-uchl%8ZeL; zHg~oBYfJ$@1Y5)=I(PKf@jhSl+>YVw_#P*!4{@E)uh6&9zlaYJKf=F=KY@i@_!HNO z`-uCB=Lr8NiaWl4NBw+}K0E5aWBj=B=;p`ID+fBJw~p!YMANmnPUI7jZ$v&4`AXz7 z;or)KcT0NUsppe1v3B4FY|Jujpk!Xth(#F9H)3y|z*AUI@q99t#SGklJwqyo6_6|T z3L#f)o&7n`Lt@up#VjqdxF!YHH(HF@I50^v0vjMFH-l{mV9DN7C}BB|4UM1j;|i3h zoX0NA*LdmbHUaK{U5*1A1~79&0Q1D28iZ?rp9g*(-S*^4xKt*?&#-34Rn5aNS?tC( z0lU#J8P7YO`#i#tTp15nWpWbT!47rvFsui=(PG$*JrK6fdv|Eg))Mq(YYsZJwaHz% zh6f6zV?!f~guAH{6ty2U71ABu`0MB2!9R8-49gz!jN^-14|Jb1rS;IkU~tD3{0*&> z(2Lz-xWl>rOSr-39sez^xfT=OL#T6yd=B(*)a@ybdOgWerw1Ig-%*!)9rd^tH@R8{ zF3sWQbzI|j+{=02B*(K;9AWD5Ibo;w3d>K1-1lsYC*R?-d*k>ja! zOKvMA$;nwjlJnVAK#JK~^qx5G<_lIVI<6ACfV}%Rww#bq7s$I`5%Lr7Qi&$~>B1-0 z)N$WeGyz4EP&5%mlTqmPbj7Q9t_X(+mk6f_w|I|J)07Q++nTi}&|tgN&R-1}d%pHE2m0eRnaOMd^e z7M8G}`teXMKD(2LPwDi)XLNdU$PeK|h@nD!dZ!Sd-sywS?)1aJ!u&;aZqIe=w{ z2Ej5k2v(sXun2v5$g;1`w(r;7zJD&B)x&;nFNC2G;p!X8!4%N0XkBKo5wJLgr9WcV zMmN;QtM`-F^)vLHo$x67ZccbKeSar>j)ZUVgvZc#dBS6{P~Th@7z@UHBrt|t9vDNP z)%nvZY&JUY95k`?uyoNXY(P*oaWq!(voQ9dy>u^#S4U%Tj=rVC=E3VVqv*pr=sdmz zr?OGl5X2|3@o>0oqQrg=*~`FFaGRD?5ET&20Dc_!A>i4-Zvu}1-VB@pd>B{(Hn3dB z09Fdy_`~2cz;l0a-wb{Pcz!+jH^I*a&+iNVA@Glb=g$K_1AGN|9uDlsnc4!ulzb6F ztnz&sg5N{HgO0Vom*G{$_q1OLD}u}5{t|fpy4Xw5FIa#$L<;9Ujp?A z|L(*C*uV7mQ}F4BDZdBxK%fv8RC!oq#pAO_WGG6;h}n-aYY zx63k^S$543$++z0mSkqMynNXR=}78~hu++L*f0)ne)FLjsmP&HSeYDh02MbhP~F`w zcSJLZigINt2}NU)8j*B#rp6>q+oIz{OLJjCuI}O+J5~Prq zAia4B(ubEIeR&De4?+8l(1hwzeOD3uVjsSsX< z^dXc-$%ww(-fq1qr66+XOeqP$;m3)lB#}Gp+x#@mCI|^-*eU6!LlU?_^wViVeg{%R zK5ErG)UMr7%Vwdr%|NZ2iW)cwNI`9!gqk@3@S~>o0lcWWJ%EmO7;CYHWs~_lTC=bB z+V}I@_fNvJQtaoZA`BS_OBTY^4Pnbe81oU)@(yrKo>6)-Tbn1OkP4a_Tcn4{ZO?BEZhxQJKm;M-N~;M-N~;M-N~;M-N~ zFmrdP*wI*NSFvN2bi0Zj?U!~HJK8YqDs~v%J5=mgQF>Ixo^({j4zqZNianU1Vo!yv zW5tdYV!wk*j!8D~qV@9Yi*D_loiJ>OcGxcHPPDKs z#P#_AyFj(?#?gb$@1F{d*!~`T(cx3LLG<9eLY^v(2w5Pb^CW|A!`3`dOV;`56coc` zz8B#OqA}s*Q_(1K@@Z(GIQeumR-AkW8ZJ)03mP$Pd=CfR72kRFICyInmW+l@n}18D zpyAU|rlKL#QHCi5N69>BD0TEl>-)s}inV=bCf`1-S!pn=zK)rtZhE9VNa@E-k6&MU zchjR=K3Z!xJ4bnXtn?U`9>wIbE*z}Y6J5|crnL%RB}R)cjM~+H3Z{32QMcM0_SOue zX0iYIE3&GmKIUTz^ogPeBa;<+XjFCJmz|<-TFok;3!^N9$E+v8N2Ls6ZVO zY#J0s_34nPk`bnjgxapcERb+J0oujIP7kzRl(a>U=sdKwqN9twvLmc<1A^#CQwuj~ zY5~m$>0nx*79|~>#Q#z0-lGC0Ei(Z1KfbEftGIQ1^(xU{#p=~QbmO+;H}U=tWI`Esiu%o_ zHh*z9h<;NqpBj3s1@tc0VtI<=P0^%CwYmLF7o!6OG^PVN^jj4^G zO}qOpDrC>bi7)5ky^djX{k={vZ6Bh>vD*)S5ChBPEZji;foOhYhS-{1Ojcp_xv=JC zFt**o#*!^&cSvZ-5JnErB9%kNsHgRAz?xGw`jJRBWFDvNoS!wL2Z7eC6mNRzf(^3Jr$F53}Z=(Q=ZJ_8ss0OI^{`R?qP<$F3Ty${>r!yJ}{(j z%5}>9T<&8=?9(1jxsS{Jknis6lzX{60QrHTPC4zVr()WX5j!}-Dc86hv)E!sCOGA! z8WmHP483`pQ?77%5c1aPLLPzMXkEQ3r9vLNOvs}oCo!sPgIz1cF^EZuI^AS92r2s! zYA6X+zsc?tGDHYusM#M967x+6P`Aeg>>X9gX6BQMmq%ZU)Qy=hY8I0WhT_rUlBDiD z_AD+S<$zn7VsU;c7co_uYH>b%1jH~t%JNF_H|W75#w&@i_XNMS2T~CabuVyx`tpkr zynJv6hFTF(0J?UBrTjwBM(qO!`DhNt|EqCMaN` z6}xHtGT+zGb{B47U%o_KP-HG!9&J`(1PInmdPYD^)hk=&^ zF9)s$t_IeDbq5ymDCAMdO<)t)0H(#!!d=`)+?PKG&*RU<^LaQB9v&_%8nQ!*Fx#QW zdz9AWjp|FWkog*nvR;D)$-hiv?3Xge6oSf3uV|%sCOT0^A|Tf(lsv&dAoUgz7mOP_}ulEiT^K%jdrG9iVcdU z&K4W32-Ar+Zifm@TDXMICADQ8VxxrSCW=G2fiK}oB8RU!HpbFJ#0*J_jZQa15_yB> zk(_93I2TppHcJwve>-n1c?BNC;fReT9|+-B9UJZDt5R&x)-jzbZ`hhR(b#YJlQq~o?@+5fiDan;+=vTS_< zH;9()7jow`;`Y71w%(w#uX(J#hqEo}q&st;+Zi@zn4R>o-q)#}>ARPETJ{lhYkVtxt4sfL$9(JsfnBgD!B;$qqWj zL4OrXxG0>CV^!F}2(8#*U-i2LZV;{FDkL|z{CCTL8Dk@D<0H;8(@A&cGT#|CXPBL| z^BtYE+a~L*BVEqebJEV(bJCqJCf%Bx+tiQ0CihNVaQDKSsbcDsW8xGr94BfT8G&n$ zF($s@B7SG<)S(vNP?W$8q7D3$7~~d~%B8w*hws1d?mKV2>4(?;`>gMMYtq<3UD1~6 zc27pQzN0)@Vnv=XYs{@;Td=FyIEyy7ti`rx-US+WF}AD)%YI;SY>PtNk5&6B6`Y_o z(26bhfR=6A3))<8VIK3XO~wS~<2~cka^~^+{i3^i*RpDQwg)%`SOX3MtH7zi3UC^* z44e*ZuC2}hV%1@Jn5)!dM4PKrBoRuXohPLtwX$Mt6pC{XhP`Hrdot`lQ{0PTPnzO< zeAb5*7hoqCR$R!C_ltYu+~*WSAr=MPn=E0u;Qc950k*RVV%-4?r%G6D7*3P01Tma0 zVO?UFXRt73FdU+!qh4HaM$y8%=G;(lY0{2GRET{Ex7-`iZKCw;$`5@x(Em+Ac|YV$*T> z;{JVK%Ikr)XM7%2in|&g@A^D1mfH(;QQs2^+rGcq=bxjq! zH|K1LY^|)>z}7LJR0kRTq8sWfsyFW1v~BaJ>Xy3ATQ}{f-1|w*$4wtu&hWX(_Gt@_ z&ADD(4Y(R`HP9I}@WdCER=ga017Xel`Tu^g=biJqB}v<--&XSevHjLP{lLTwsj6_| z+&f+}_e-md)P8^yo4e0m<5R@8PD4QetDdFgXRB#4`qXxyF-VOk=` zLV$L`)JLi5O{>_bDSkRlOB3+?eiRN&lV!kt9W-s{N^%o8i)aA(cN_YQWWis{vO7-!KihO`vaBgu4x1R|BpFTn)Gya5dm+ zfHdGXf!rpLs{vO7t_EBUxEgRZ@D0=e?L>k>F)@Hf1A^(!3F{rcMoI&Ve8>@)2HWUb zKCn2c7*yvNSfqu`d|;7>DDl7|gi^0wl#KlUs`g0=)8D#xN=A;PXH2>G zElk|RS4XP0zx6-&6Q ziLYkt{5j?)=+hr4smoz{UC9H}X(Gb(xxadO$@*>k>RWVdXVr3OPi6TV&-~)1>4ga< zBG8s~e3)J=aiQYExh)rE8D3m;qIn3kbCsBfK=Tdy0>qqzMDq~F!@cd0lLxdh@nY02 zE|RAua6@sCe6^6fJ*XECi1~H=V&5EP2;PY&xXkd{3}LcG*FTU z+#RReCS};8i31)_;D*t}0e=y4DDjCnV4XNdZ*Tg=GjEhv?m5(P^cLHII0kyL4M=8Pi_&w&M;43@<$m9iPTCw^y;fxaqqxD{C#raFp zisvtJ-}H;(`OJ&cB54rwoB=@7k#SHC6n(4?r51_Xm0DCnbf!{^!biu6mReJ-%k8rq zDs}KeFLtRF`YeGPO07^t$VW(%(7(z*3CLIwME@*!srohHjFSlK`~@Q<_l>`Ne4lA? zT!eO*dImvQT1FX?mgx{siIs8D?RU++>)wKI-@fpUIoIDce*t8j@6$@yz|gQaF+9=Y z>^pd`W0;T5eU4t*K7?}YqV3#wg#)l~gX+$$5b|535ydKp!NuxK23jf3Eln==%p_`W zsZm~PL`=PWeR)|~D~qx+X2i-{&DASPlZqoVpKPppdM5XoTk0>CXGZ=IW9-1?{4TYn zWvom$Sb6D=m|nioj7IbwiWy^N(ehFs{F?t0Q<$N@WIxhNqTj?++`pKM_LfGOzG`LZ z>T>M=XhvGtKGQ5^P0ec~dZ~vzKNe9L?r-_dE!9Z&t5%hn22<=i?1-60X<6yYvfZo7 zSCryLwpv<=ypM;^&gxrK~Jg%F4^2L$;zUTDFdoQP~PpZ@A@-TJABxJ$5VAOKzWk zkV}%dWN+z55AELz1@epptzD#na8rpZ|IFXrxtH+*4+$zU;oD-CUB&CHqSeHD)=3f>y=MGSmEQ#evw5 zuieGHpw*6~l!1$Wa`kqS{J(TAsVOaAy<*#{GQ*7EA*Q*?i2QW+RxG*Mp26MIO7#zZ zHfxi{%pIkcq_z~#h?VMPrC5VhW*WvXXKmD&VQ#nGgSg^Xmsj8xpDDKJ5Dyu=mKm{# zx#Dj#|E95673tr)WlCwwOEa%MVys!cYpZ6<_LjDkt*qMFQeL{%Tv>L{6|0-peN=9i zu8iOXt*eqtW52ue-MaEX{0f~Cr;glG*7*E#b9E`(X{?N~?Pi(nBdJt>;r;TJ$?*&J zGh@X{R<@FTuxwR%tTbYNWU%PEHO3~}M{e9_R7ZL-nZCBQ++0<&wv0up8cX$3w(2OK z$enBrBEcy8u$;A)nd@6ySH#R!rN&V{W31FHTd%Vf>q}Q4IkWN=A0l}{*uiIg=?1gh z{Ftq2S!E)WEvuBWR^42~@S+`jTHzIiNgI|Vw}>&ATg0Hyaf=wYh;fS;w-w{IV%%2D z8P|#lOP}ETj>(dK-rlllUXV#r^x|g5K9oIR@G00StqL=n1H@q^{dqNp%Gj&q(JPr3 zx1tqmjfG3 zWThFI(gokFG-Kb%q#MM(n?={o>WXvrR|H{c7xg*Cr~tP&()SA5jh_VVZt2-%iJU3A z+8oQ5e9yrPZP?xQOZe0n+g-S!yMD>f#5G~*fTXg)l7|h%HWC9k_*j4G)PZ$RFYd3f zA%LNh%pt6lV7riS_S1RZA1w0yK;&e6hz)su0J1SG0qj)}6X=CEru=DiyCM9r#M!t82kn>zM6M1?j z^7KsPKY(v0^7JVK>z-cRUzv$KJrjAFLp)D^gP-o^>Ep}O?M4hKPdoSXIqi8G`Po32 zsGK=b6Z;I2A32sUYjN$ieLBlCH%}j5p5|X^7qjXqPpg2h ztL;sBmF7!Xc}kM#`GTf7M)YkmahzzL{x@+0j^$aaEqp~0aEClSYoEifa6_J+MP(a5 z!q_4)4wzxlon3qiAuN;fCP z4@tfr+c0h;wHQhxGki@0np>FU#dYbir3JU_KAg4pfUbWkODaYUjV;(yGB2A|>x=wS zqipIdQ?5!)PRhrtrTEg=tZr=I{v(-2lYH3gRd!1atTI-AY0QvQ426Qyy)n&b^s_$R zG)-%5Y}J)$eJrZLP|%H4D+grLt2G&3GfAoT3@}>|!jx!T43{;SNpfbj&oCk^5>3kL z60B=Zl6+lSYqHtFAzt-vv$pC1BfYmKWgcWrc~P=rm^!X2^mUigw)`wTxiP4>{#EsR z>vph6?LqTXJkC>~G@1T`t?YLbJjru0Hic2!%r4TWxXkA_Bfdtp0fUdskoU0-u|<-k zt10vbG0AN8GfDPj9njU7erNI`rX4zDdVFw8+MnDC1%%!XPeD>=5y)HC3wAl;eK14;UPcEG2Y@?oZURC$uOC)}cbRwLCb z@*&eu^oE$XR^4H+BP=opZklvZ(J~J-Mw;psDbSE~q*m7U+~_p}aMNWB7B)91&HH!j z$$Lfyl`1JOl4Yv&4)x9HfgK)CWYb6{sgY0Fj=g59St$Lp01^9%8hq%Mjb7>MXfQ2W zllSYjoBUBZeU~2*8#@FOPI6|~z2?E1XmyY&(WIRRkOv~T=&27P?Xf(Y#QoDC|nquf?o}}WIPZ&)}=}b+-3uk$2rQOki&8(_l zUh}26<-u%uZ*p@C`MBBdKM?gR4M=3sCaoE6`wk_WN`xKmwawR>@l3vA?s{mYbXa0t z;1;cTeIv{NP*yfeJ-bHMo7v3o4L+?$m&48U7>o>2O6(OliPE*eK_@%tFRJn=%mgP|cK(o5#4$@bv#UBIKy={`$XV1m5IX>Cyh`8=&G|#H#54Iakr7~Kc38zVc3P1By7;7KKR4P64eApIg6~?-U z$sikjQL#lTiO4b={j+L|lnUdcM`(sr?5~);kan`8# zWTQuLzUXu3LYF20Fv0RnT2*S^=GD(=zBRn>NF*bhSzLN?4wb zVFWk*xao(dHaGpa<kY?6WW* z(GPc(@<3Cei-VeX1k?=jl6|S&9{pqvqT_682>*xmO7>a4#j^idtk8zt?73y1!>@3I zu5M|w|9!(pzfbSH1J|a1TsHmDlyu``@06!`ZU?4xPHDN2=+pR_9{D84-mgLU+Yb5m zXWN)~31{c&+uupx294a#Ed=D|j?=m0be(!WO^0>6?e@W<+}){0;T^f{L`_#WIPQU* zy1=>rk*JmJ+`Zr_hhO1F*Ss#|Vfo)-WXPSt3NpR~hP~qD$5O(Yb;)BvP-Il_SEQa& z%3C4p9qx!{_!*a-YN|u{scY|zzYTTneQ}Pu_x?CX9kf84qb`0@oTE;Da-2gqpOj{) zioFsH7f7i`fg2+thTRxBj$HN4%_GHm3}sev4@RBNp1dR3i=~3jXF;3`SPIUCn2$~! z%w%*hPc85cW-{+!rtl7CkasXsc?UC%cQDg24nQ4G-ob=L4~Hm(MF(?qy9p*#U45Ms zOejR3JKA;%CXHQ74~ZZ0y+h-4n>Os~>fUc9a6@%rc=LL)30RH3D654%1E-??S%UWWts}GilQ8tq5%-mO&zC_=!4$JsU;(IRe z>lJojbF}ue%F-3fmo8bde8sxTHMLQ;nXx2z6dNwsKG|lhScn6*Vt}^*d9yZQDES<3 ze)48-zwmkfeB@7T$?!S%^O8TY8N=uJ^N>HWLBr?x)5xFLo8fc(spL;=*zh_26!Ir_ zYdD6#7O1bJWadnbj9)?tm)Tubql*(e8V^3YZ-NVuoxapP8 z&fe-_8AmzcgSo~dvo?8Hmkv%87V|H&HhNfQ2Nwjw{M+Rf9+uU?A-0*lI`ePdqvVa7 zH}YK{c3_Ix(T*GMz4GIh_bc%#M>|IU^5A}hZMO1D`^Q1n^awUJIhL#W5!Uh~azyZ% z5#@O?(S1ce?VN7N9PQ$qUeMgkx*{gj60@y@v0j~R&W3}hM7$FQ$?@{tAwyx|xKA!5 zR93bD-$()yxAg2#XuG9nTp?B(b4yRR^z2v@B`S8?%BIs-vbv?Gh#9x->8Sp!f{dz0 zx9w?fG={3bW2Sc7p7Hj!+xE0d^RKGy8J1p@YIA4&__>me)mXBiH&t&edG5zEa(ha~ zxcMJ+Va5lyjY|`ogRrGtF+u0eR588CBe9lj#u|h1X+|Eb97~Q*HS%Il2gS_5mLhFC zg>+|pPZ4XUknYUy*eRqtHW+E!DWp4XFcRM>q&sae65lDLJHrkm@vTC-(+(r?%|g1< z4kNw9ej(jyhmoG2VfPT)Hl#aN)8?Vy#y1b?&dlse(6oa{cg8*edCXlz@-VX(+lb@> zU6n26Knpi?!$sI;pgUbVF9+w`F9q!H(A?j1CG*0XEN0eRm?xQYYr24%+fy>XyDXiV z%f4HH9SN4DfV#1-)G%b;b1U~@ozT9O&&?YWmJX8brK4ebRJ$brwAzr4vuWnj53E0keEo5y(R2aWuCt&qEeP3~Y*ryFb%wT~D;9yN}V zt20k`s`*Z*U;sJ33lPtj@}k>B{sb1yuY^7QYVD-?tqU30g%rU<>IY^f_BCdtNrd~HU{HXD&E zw+y(h9$Y;LGZ5KM&y@5Kmi{EU`MhmNSPTiADe>oq(=B(7r`&P#x!Zm@ljfvn8Fi{&q^bq)+*6E7~Y3J5=@epUfJUpQ=e(YW}!cKlyu= z3OTj=PbXL-FWK>tmu~Tqmz?;>OON=-OTkeiFMp#h4E1Sf6@akljBdA&EcO1#x^Xs* zyxfTQX*=Y16GL(43)xb{cirpt5#3Cs@lRilRGT{X+F!o5cGr=p L86P13qScb8>hxqvK)+S})M;5SW%LaGX!zr1Jtj z-2xxHE--(!z(>6T%XSHzDc`-Hi}yv}3VbS_qpqx3A{wf{5LmlTU|od3we135suH+< zg22}^1a2NHaBH)`eV+>4A1m-be-!xNB7y(EEbzix40T1hEC>8y3O4{m2~-CK+6{r) zR)KLl1diG*@Lp+85dpwhu~IN8LD(O-AaMFS0!y0&&U&1pOHp91m=X9Ua|6ARfFDL- zXOkWKEdN86%Orqdv_(-PnZZRLQjJ>mYbPW~LwvS0#LqOw+*58b23-z-Ez+8}S6UN4 z;#NH9ipJ?HucM?S$w-exyc2>2oD3{b|WcZ!%u3v8#C5 z!~tAYuc7g4I0Gr;aZ~UfG=3+ZzpBJIUq4DkSvT-^>)ej}lf~3LyYPK4Bs%V&CSTi) zq8I+6;)^A1c(q=Ea{A;@IVa>$IaiFUx(9Gi*#Q2gNkh3-$;eHWjNE*q@Rb=>RPZux zY<9Z~wwQ}Zk!`u$_JSVc-R8rQxT-RMQ<@{NtMxHd`lRfv^d;F@X`2yj%?BK}s3z!# z<#FkEbVeV`d!$48N7AAEJl^rX3;)oz9#j&jh2!|~poV5Gm%Lexk~izm`0SwsV^8o= z8>;wPTIa=ZYm_oC(;UZW+P+gYF7M8>VtZ#Aex`Z=4|i(F=aeqK3DU(k{iiMkw!9VN z%tngY^m>?Hs%Tp=Lmkm7#TeSBonAJ!9Bp{&K`-*tj<|sRJEeoampkOJ zU~W4UKM$MnSCuocwO>PPO>wU^#l3bWby|*NJDs?%-)Xf`UzK#XLJODb)>1?QFa;$M64*-}LYX%-Szy1e8N_b{`<&IsE&?J|9|1gCv5fTzeKmDY)rf@pRm=VkLYU^ zw%pA1x}_fd_x$)!73g7n`@;VC(ACiI=Fk|~Hkhh0(NxbeWztQR%*=*UxVf*5?Dc@x zqMS2x&~s)EdM-aym;)Ua?AqUsQ|gPz?mTv+UhE_L^I&w6a`A+D7E)xn7f*Z?<>Hml z)jasCIz<@@-obc?KC?@nutPmRW1~$&M?yynAsB-zPYjT}$JmI&rScFTUMdgq;dP;_ zEwBfX30`{YJ7`jYNil|E;-~-(q0x-*Mktrj6A_vls;GcI1P;;^gyZDQ0!p&-`ooQE zy!=Q+wp2#igJM`Fa4UUtu!N$Tco#z5n8z~;*?F&l{dObiuyjb?MMP;@0& zAu%fQ4x*?;Au2-p`j{p0dBNBO^!WJGy0mP@B~UYLXIw_ZV9sV z<(_PR9^_AuFueCqa3%tx@ROCt<77E2yNBd{5nr;LcJej0AMYTPlTB_~VTag^jcaIl zsXP~Sqg0*>CZg2CY@NFhxnczkrjiF7a4*?GYYdc8Cpyh&5tGj740ZV-XeF;@LV!iS z0A-~KO4cKSlC_X^)`3FTUZkC&Y*oxDJ4FV{;Ep+EPYo3`z_vJ&=AoG?Ed|N$78+s+ zFVNhmgx6<@sDui*h3bWz%!M{Kl?qfwV`7pjqq#VfRN048Exf!oll^F>ug}r!Wr93g z7v$MQkV*L#a9X2jOcuPS;shE01|8g6B* &importCallback) +{ + importCallback(g_modifier_state == 0); +} +void Modifier2Export(const Callback &importCallback) +{ + importCallback(g_modifier_state == 1); +} +void Modifier3Export(const Callback &importCallback) +{ + importCallback(g_modifier_state == 3); +} + +FreeCaller &), Modifier1Export> g_modifier1_button_caller; +Callback &)> g_modifier1_button_callback(g_modifier1_button_caller); +ToggleItem g_modifier1_button(g_modifier1_button_callback); + +FreeCaller &), Modifier2Export> g_modifier2_button_caller; +Callback &)> g_modifier2_button_callback(g_modifier2_button_caller); +ToggleItem g_modifier2_button(g_modifier2_button_callback); + +FreeCaller &), Modifier3Export> g_modifier3_button_caller; +Callback &)> g_modifier3_button_callback(g_modifier3_button_caller); +ToggleItem g_modifier3_button(g_modifier3_button_callback); + +void ModifierChanged() +{ + g_modifier1_button.update(); + g_modifier2_button.update(); + g_modifier3_button.update(); +} + +void Modifier1() +{ + g_modifier_state = 0; + ModifierChanged(); + ModeChangeNotify(); +} +void Modifier2() +{ + g_modifier_state = 1; + ModifierChanged(); + ModeChangeNotify(); +} +void Modifier3() +{ + g_modifier_state = 3; + ModifierChanged(); + ModeChangeNotify(); +} + +int +Get_Modifier_State(void) +{ + return g_modifier_state; +} + void Texdef_Rotate(float angle) { @@ -2379,7 +2437,11 @@ ui::Toolbar create_main_sidebar() toolbar.add(btn); }; - toolbar_append_toggle_button(toolbar, "Resize (Q)", "side_select.png", "MouseDrag"); + toolbar_append_toggle_button(toolbar, "Create", "side_select.png", "Modifier1"); + toolbar_append_toggle_button(toolbar, "Select Face", "side_selectface.png", "Modifier3"); + toolbar_append_toggle_button(toolbar, "Select-Whole", "side_selectwhole.png", "Modifier2"); + space(); + toolbar_append_toggle_button(toolbar, "Resize (Q)", "side_resize.png", "MouseDrag"); toolbar_append_toggle_button(toolbar, "Translate (W)", "side_move.png", "MouseTranslate"); toolbar_append_toggle_button(toolbar, "Rotate (R)", "side_rotate.png", "MouseRotate"); toolbar_append_toggle_button(toolbar, "Scale", "side_scale.png", "MouseScale"); @@ -3109,6 +3171,11 @@ void MainFrame_Construct() GlobalToggles_insert("MouseDrag", makeCallbackF(DragMode), ToggleItem::AddCallbackCaller(g_dragmode_button), Accelerator('Q')); + + GlobalToggles_insert("Modifier1", makeCallbackF(Modifier1), ToggleItem::AddCallbackCaller(g_modifier1_button)); + GlobalToggles_insert("Modifier2", makeCallbackF(Modifier2), ToggleItem::AddCallbackCaller(g_modifier2_button)); + GlobalToggles_insert("Modifier3", makeCallbackF(Modifier3), ToggleItem::AddCallbackCaller(g_modifier3_button)); + GlobalCommands_insert("ColorSchemeWS", makeCallbackF(ColorScheme_WorldSpawn)); GlobalCommands_insert("ColorSchemeOriginal", makeCallbackF(ColorScheme_Original)); GlobalCommands_insert("ColorSchemeQER", makeCallbackF(ColorScheme_QER)); diff --git a/src/windowobservers.cpp b/src/windowobservers.cpp index 6f01a68..8a65bae 100644 --- a/src/windowobservers.cpp +++ b/src/windowobservers.cpp @@ -158,16 +158,17 @@ void GlobalWindowObservers_connectWidget(ui::Widget widget) widget.connect("motion_notify_event", G_CALLBACK(modifiers_motion), &g_window_observers); } +int Get_Modifier_State(void); ModifierFlags modifiers_for_state(unsigned int state) { ModifierFlags modifiers = c_modifierNone; - if (state & GDK_SHIFT_MASK) { + if (Get_Modifier_State() & 1) { modifiers |= c_modifierShift; } - if (state & GDK_CONTROL_MASK) { + if (Get_Modifier_State() & 2) { modifiers |= c_modifierControl; } - if (state & GDK_MOD1_MASK) { + if (Get_Modifier_State() & 4) { modifiers |= c_modifierAlt; } return modifiers;