From 732cda4b461428a0841681e1e9b748f76e6e5707 Mon Sep 17 00:00:00 2001 From: Roman Telezhynskyi Date: Sun, 16 Feb 2020 18:17:50 +0200 Subject: [PATCH] Dummy base for Puzzle application. --- dist/Puzzle.icns | Bin 0 -> 48576 bytes dist/macx/puzzle/Info.plist | 30 ++ src/app/app.pro | 6 +- src/app/puzzle/main.cpp | 38 ++ src/app/puzzle/puzzle.pri | 15 + src/app/puzzle/puzzle.pro | 335 ++++++++++++++++++ src/app/puzzle/puzzlemainwindow.cpp | 41 +++ src/app/puzzle/puzzlemainwindow.h | 50 +++ src/app/puzzle/puzzlemainwindow.ui | 24 ++ src/app/puzzle/share/resources/puzzle.rc | 80 +++++ src/app/puzzle/share/resources/puzzleicon.qrc | 5 + .../share/resources/puzzleicon/64x64/logo.ico | Bin 0 -> 16958 bytes .../share/resources/puzzleicon/64x64/logo.png | Bin 0 -> 1504 bytes src/app/puzzle/warnings.pri | 85 +++++ 14 files changed, 707 insertions(+), 2 deletions(-) create mode 100644 dist/Puzzle.icns create mode 100755 dist/macx/puzzle/Info.plist create mode 100644 src/app/puzzle/main.cpp create mode 100644 src/app/puzzle/puzzle.pri create mode 100644 src/app/puzzle/puzzle.pro create mode 100644 src/app/puzzle/puzzlemainwindow.cpp create mode 100644 src/app/puzzle/puzzlemainwindow.h create mode 100644 src/app/puzzle/puzzlemainwindow.ui create mode 100644 src/app/puzzle/share/resources/puzzle.rc create mode 100644 src/app/puzzle/share/resources/puzzleicon.qrc create mode 100644 src/app/puzzle/share/resources/puzzleicon/64x64/logo.ico create mode 100644 src/app/puzzle/share/resources/puzzleicon/64x64/logo.png create mode 100644 src/app/puzzle/warnings.pri diff --git a/dist/Puzzle.icns b/dist/Puzzle.icns new file mode 100644 index 0000000000000000000000000000000000000000..a8c2190d6a20bd94c83396992a1680300c853414 GIT binary patch literal 48576 zcmeEv2|SeB|Nog8TeL_Ep)i&qYg!eRwNj#_EN#l33Q@G!_kEYj&X7SWyDV8}P)eb! zEq0N83-doSmMGoZ{rd|31a}ocCuvpXWU1InO!I4E>8&t^tsfuYYZ;C;&)i zPhi)9Xyvx$LU97nZrg!qN856u(2%z2K-B2l&Cx*4evU+5M$gIEb}avd=G5`v=7bvE z9i7%444s_Z1cCu48vqzgWJd=-rmW1GKv#wbfCsayGy=n0VoN}gYW5hQZ8J|w&62hl zB=7m``3m5*BZ~;xVi4ST+j3Cs2|NKPwk=2Cv9__uBmnI3c35N#0JeB!!P6MqSsKLK z&!JCaXHk1REjGqTIT8z{@dRr;1A%~z=0IP;J_O)lLJppgkicP!riGzD#3dEx;&42+ zXcVbti$lia%xz{W_Bh}>OWNTOw}j?tJ2F4XE*@;Mro8=Fxj#o zm>X>yP>qnbVL=Mqt)H)eO#68}pz%AtoSD6`A>it}29ge|HOpF7)`s_jLVgV&05CBU zV_~^!A}l0qEkq{_z!hUX{@o_VLV`9zC=pn-HwJ3oN$pwE));A|x_!1{XAA^w$J;b0llB9YN@k>}n#+yOnds1DVSQ;BLP#w`vGB9V4 zIMfres7@qe7uD;7N*C3?$NOV@erT`0A?XUCP=}drcWy(pb2)PYv>mC^0Xkhc0oRYT zV+XRcqkWF!(1GeSL8HG{LB0E|l0ye@{!Sx`(QdO0#}3qXPEIs*L^kf!foQ0;;iN!| zp5)`QUf>a8kMRV;<%O6vCxQ=eO#t{=u+s)!!Pf1d6V`=o2#7MYHK!dw@$vBR+I9dj zYaT$bF1Lk0pv(?fV*oF_-aAFDF|GtVV1uCu?(FEOwjtMSF{tf!2Y78T$n0Fa6J)z$ zP`o_b@s5!6z<{LL(qguJPAZ`Y55}-;hC~qX&SZ>a+m&q71%u!zbuI(=4*=#D?@|il zTw-8COP%ouLaZ|u{9JLwqe}6m^E^j9NO7B$bHIZl_wRK20=i(1hVt=q@=kbUacQhI zmLfLTDl*1;p*L$R&2|nn`ce!QI~xK8Ar^~`vPI8|5$y4x)CP~j#>U>aK~r$RGRh86 z;1UyYWj1(%7nJ z6o_+%np`jxc5?2STv%M{K_kpPvoi}|b!h0yBvT&7V7J2@r8rNC%urBHbw>7#?D3vV_|1OAo2kil1EsIpGVjqMxg&fRo>zIp|Ag)c7Wq2>2M~Ejk8C3 z`WyvI=fBGDO>zDs{T9=#tk-{F-?L!>a|!=$i`hTL=g_-Y;K%r1Tef#JFA({WPkim7 zO^W}OgPT_?EPvt?iKP6zzSB!=F#GyTzHn0{9mP4o>mhSF}iJBySmQ7-! z?o56SQc@hVAk=X&CB@e_B_*X1R$ju=U_SpTnGkAso$(LJnd5tWy=L{q9?Pm<@`KLg+O=PVMNJ38*n3oOBhf;|p%(o6G+^QUQPex27J=)ca+G$o~;d@P}# z?wke_KYJ|2|D*l~)t2htieBFjW8?3%m*PzR|JL97dZZZ!l{^vj0WWy>MSF2M0q+ig z_JlKyr74dNRC`CqtbkhwWoM@?=g!%xdj|!Y3r-(qv|XV=E#*fQ?8n;?5Sg6TaPI5`ryvO4 zYWogw91?uxwq^DNyD}#LXDJvsdkVFI^A&HxOdUAGCz#Hy-yvHJ=!8bQVL2;gi=pD} zXz%F!%mW`Ic=29jO$Yd-f#J2oQ1Cv!m|N;j#=M}4HD-qP!vH}yGU`WCa-Ap3W=MYw zSOCtFUeFwdhqr7-(G%8oVs7AP40=L`_%ctj9nbmLmY{e%p+kZv9uP=9gY*MRNHy;m z*eUQ{aJuqy>4`^_&ayo4$W(0NjF>APNx;YWl2zRB{^ZgXk0^`rnjg7&=XDU)0&{=6I-WE#}6U)iLiROxlwISo)5CgIH z=ou+;Ez}N;4y`gQab{OwT?l=`r4xr+p*R$Al3=M ziBS>34i6G-a3H}8&aPkwf%7VR*t*AdARq_A9rHJs|f++4FZK^XDd zvj8m{6JTs7XfI?d2!vsGfKxkW2uqR(K~HE6b_ru3V+TXAT?j!jh?y)BqcSpPWnp1v zg^$A~USw5!V+uG&G%>O>rZm~3vPDqPl?;0uQy3W;n+VU;{EZPtf-Yo60DO@CnVJ{7 zDm=sVg62$&jf`i_k*b%Cj|tCLQ6@q{g6?FCUf+ZM6-f?OnADl{$TP}iG=J;u>i<^b ze#t)`*495F$$sCXC(Wl8A6W8|!6Gd4pOgR65ce12`5GXo#QOX4|vi!XL=P6)m!SqVXUU9P_;Ud-4-9 z?@5BhF5w>d`_Jw7>=-7?6BS91VhiN$qDjX)GV=|YHa3PuJZl{p>fVTjHMnLlcaY?< zo4U!&I@WktBg;oezac~KAh1ZDbUijGl6l0TouucuKffM(1iNO8$$k4Rd19bDsUHs* zJtC?7xqaf-n-`y!BpnMN_kL_b@61^xDbE}W@-s7@OceOo1eQ;cxme~M(n+IpqU7=? z`Gwr7y5aXmelxnW_#euXWCoPV7Ml1|d18|PUz0Df{cG}1eEyRBxOU-h%hz@jyWDRt zIt72&UM#DkaB%-Z^9%d)661ed1L+!Bc>J;bnd|)@lK-psySeM~|ASKBl=MWs`X#BU z#9#jFhl}_L9msY7k~o7wQU~JiCgM7%J3HZnbLWhs80fpB!-4D_+p!Gpg>j*|xOirm z(H+Ph03WvzT->DSqB@Xm0G$D;$PQ#T;3n-2B*Iz*+-v|`Su<423>6Ny902DW2sqIs zb~t=E2G7WHfLw+_scL}EhENy`WQMsw3OTQcYMZx)Xagh#vR7`BSr|>*_h_Ozpe!2g z0D~h19o>QG1&*A6om7c|3kjqqTBDJy00h8YL{3gFU&z41&Bjg#;LEv;i-UbDI|mmR z8tnz~xDK06xXb{6Cnplk$?FJ^Fh8Dy1-=+E`awS zP~h=^18(cghU3bK0581>$YQ{?2*Z055O^@JP7*8gA|T5M-!T_>jsa9%h>_$-s%5ic zNI_ zjHKG>4!cMsIUIKk0u5YY=&(mYdIt2sP;LcX zogHvthZ1hGb%L!Pb1YA|)dWDNJ*o2pZn$(Zqd{72!EnLO!-e7X#K4QJoKTJ@;0a|| z*kmt^4G#@B-&Q_u9$p?EFN^~~m6Q_7q9H2)19$>3%SqeSJQxhLj4vyTf_M@Jv6;MD z#1AUw0A3zD3>6PAH^{@6ML?NM=o3^#k|`8~OG#ihjOgVI0lD~a2xXCW$3Pj0dOi6%Rw+^mPCN)Y>0)E z1hKJMkPL$)RGL8%#o*ZtR$4uSMZf?_P&ghrD-{M~nNyB{X(Fpe;87LO;1B*_JSDIl zGx1QuV6ic=Y0y|So}vOoVd3f?60QwCf=Cp8IXM?txP2NE4}d?J;}1D;cn9EvT^19A zjSr5;#>BuCMiNL3^Fh||z@lPeu@Ugv#bRSUA&-3OJh3a|0D$Y;a5Wm_#d`yh%9PCPp1bCp~@az5^L&X3zhdUa{fd=yi zTu3M9XV?{s09@W^1Sgoc=|Xzjgu@5knC2mp6hvS;UFN*FU=cCE7eX=f5LwC#u8hJ# z4~mg`EDH8mxX+D@h3nU(nJGb6DTx2B?naV@LBqRa{DOce5|ThE!Id0AlG|KZZg3Yn z9+VNB@RV@e0r3e7IFt$TPsuFU$DhW-t?!w(dBC0Y1ONynrPg?=(h>pyaq%8=Oivs# z0T&NDQG7yzCkeEHZ$QMtjQHZH6XFwt6Cv({a{zG=^21TaC*W}L@xC}(c$t!Dc$sp< zKvoitmdwG$Lp~rOX;2uF?3|IXk_Z>1o#9?RVCRT{)htqONq8m>m4E|WBrKbRk%(t7 z3Xbquf@_XopCOQdpCgPcjf@9uBrKa`mWz`F&TB$jiDX-ln6VB$CXqePN5V#qBm;+f z2w2H6CgBiqaFrZJO$s|2+DpRG0T7Q%z`-*C8!`hqz!sD81I0tpu;~J%KwN5m=jn~%mCCUz?TVNs4S%Z(eQT?@o=@Bg_UK-O$-Z?m31Q==%LFf zmgTH0aGv|VzOlak{R}^v1<3#!ts5xo8|v#D>qugeEELRe>Ax|Ztbzb_q<13{VI=}C zse}3~vIt^^2q(3zfsD7u&lnRxuUrVHo4IY3SwE7vBI3qq|LJd+1OC)2v9IjjUJFoK4+c{ zE8%-?BJdRuK_Ouw_zqi>=N!u&?mV;s_+kZ07_`;9&%ti+t+{#t*W;1Gpm70;Yy!gW zB(UCXPSgd8HUbe(A*2YXcm0kc>+6BH5E3-OcUorSaBV<)54bG>w^(2avkfr>;Pnzh3i3k|-sCpH z4U`Qbz*7hzER+uShCJYDVur)~7B8VV-~wOZ1I#|Kj~l@kOyE-z++%?o4KOx1*c&4O z3#%u5MTZrbkhw_^b%C$A0A>gyVUKks>5$MFS?_r}-!YOP>q0>UVD*9BZC=#{Zi5&D zW@dMC?=V_`qfCqd$Mkc@$I=bRE=iJR0WpV>-aD(6t_c_qrn94{8urRa0 z-5+ZBn+52Y7|pAA8YAJGtJW;m%+@S$z%cThQzLDUTy_NDvbQk`0Ab+-*f<|!S`!l^ zBON0n(l(BlF&x_jV%cpcNw^Na8+&DrDv}D8?@wMpl3) zV~&Jpa_g)WlNrG*vTZ@Z8Byds3L}|ulS$4dDW)uFT!2K7Vzr04Gd2cdLV~0aNQj*= zl?iN(h@kL{3~Vsmc``A9FL#QN8k_`^g5nnx5}au+H7RvMLc)S^WZrBiNt#RY-$ne< zux?7;)!I+<|G~o5zfJr%1OH~=-wgblfqygbCmA4Z0{@j`5P<(c<<~*{72jl8xE1qP zk6(NLkBt3Q_r!nw|2hNzK{EdXm4E&JDg*yPGXDdWUwQxc`uh)(`5&nK7xF(o)RN{O zlw0^8owEP2|LM^XfjJ}pK>J7Q1OZs9Vq|<`?LX1}5&TNPojuw=KG8px$@jnB{;6hK zaAA0I#_#0pdtHAain$ZFRQWq*hIxSA0STM(`!A37rl8-vNq3Lg7}5EU&BA; zf24s2fIYqq15*R_K6~I7#WarmpuL3KdFThxKd=7if1E%Iwp0$z+#)9jUv2@kgdfhq zyt5^UKX>?p#1HQ(~Xq3^@v^oSlE!tFftgY`eJF7`jf53+xp9ZhBfp+zZ~ zceVua=MI06SnU5ZSV#U$$s(b#^^}{hSp3Ndl8Jt0kg?Fz zyt5^Ug>t_|FZS;Xu8sesHf{|37J^H-orf06{T990e;_dV+5ea^2wG@s-q{kwLb>0f z7yHjyGXKXx?m}BjxSfZ7x??Tw&5LW$=nw1vMPSVm{f_|@E$|Oje*55Gbm2fFLwtXx zoAG0elkg>%|MbZG$ymmpncDp0_%nq0GnEDWh50W8Yk#z#rzHY+&}+(w#~9$Ii4+<+tbs&Hag7Xdn=n{uDfM+~miLX`#w*(LXs|04y}% z2aK1vn2kW-LZQXi-$KqW=>_h7A{Q#9FL^O5gGC=P`y2hY0EVA0=Fv5vZDEjqqyIrc zkoD8`mjy%?jR}9F|M3vO_2b1n%n8C4b;`fdKXF(XoL|&f;_x{jusEc@)BjY%Dxke+ zGN}tzHGZF5lKR2l>7O`OMhiqL<|oq?!hp8yhc5ZI`X`Pw@d6;`UDrR^U*|0b0AKUs zsqEj}ej;&d*lXSVAhFJSsfVe;+@OH;*1?~Ls)d*7LVDib62wBe8G3XiOIu_Ey~YgceVuaTaJDqG+hDK{geKQgJK~27qKmb zmuU7pv{3FZ)01BCcJb$0^Ujta{#^TyBf4 z_y?!U-b>6-eu{U#u}cs?3I7SO`2NTD8@>O(JpO#Y|DOZP8Wu0~{v!4znmrHwLgm*m zU;0=d+=m&3^B?-M-?{t!m)j2j!*OFHfBi4c$8Xf;&h=8|Z>TR8`8WTI z^YI(CrSd+9{f7Etk$>~QI3K@Jo6Gf5;Qzf0=wB4s1;8=*ooryaff76W3R)-lWd>laj;V!_fsrUX zsl~IUA}sY_b-lixmI?eTR*-~06x8tB4dAir;#ETv5(WT0{6SyT($)bK~4@Y2kmO z7T^X5X%lTtQ*ABw3l{8(M%q{8m1GaFU)MIdrhoMcyQt7sArYcCAT<{#(Lp8)1p(%ERV{EOz$Lbwj@Z<<%XZ2;^NBx+^T32zi%bK1a4#4M+|41tiF1s zq4`lCd}04~lk8L+} zxyRH(E_%sJKi}}JveHFYb=bU2jVdQ`mxQX8mJC+0%U`d*KZhxNmvnIMnPFMpNt9nu zv#k6?;qZ7woz^#?8{3XG~mxv@_6+*>H7W3{7;tDug6%esT7Se8@?1YDxcm~7Jtv* zP5Gf+$(I`z`xq1Y3Y_=592F_B^Q%zU&qlMk0D%p&~ zUgaKgu4Y(Mx~6HPsq%<#=;cBIRNAV-0rhFKh%Zjh*ZNDG)oL|7a4@7dQfsAgkkI;D z=O#o8=+=I{_|i5gqUZD*ir&Vr%^n6J=fgV7Xuz@-*D!60ia?i)lM?5nFNiljO03dl z++d*Cym!5o=J4xN)GJUGR<+L>0yq@hS{NmSD7RwMai<3!Wd~9pzdFGoFb5VkyEvw6DTL+p(IP3D0=txtPgxf4+$Hg5 zIsLKIOwxBkT!we3R*l*)KX_l~F&bJLbV~zco-nXlt@cb0&-6r;e(#G>By}+x$m5(; zyUTr+t<4%Oxn}PRUBg=mj0MhaYDz_74nvp=Q5W8CGvs&f98^5=C{RoWALm!M)iZh9 z(dPvr*Yh4vtarPWW$&maPjO9(g}&8=Q|i?_o>8LokrOeVmXE2j4oj&W;w)=$SK9I7 zX!arD!{{u_vx7XzhQ#ISp`XQfvAZMuG+BJ7Re;bH=j;gMk&M@eCJN86jL|t8?LAc= zDZbyezxk8O$)Q)Fdz4mOQ(#Wy5Zk7B#OG2?mQ0nF&mj&4@%u5)vv<1)l$5M`w!67@ zyA$?M#KS3~)m9gYP1mU7WJZ-O#9d+~(=CpUHk|R6$cRsyntpxjvi>=%UD4Jo55+dU z690s_Iey?N{gazJ9Mu6gwrWiA(@}*ER_2sV+!QBXy#Ew2(EH|{Yast%p=axnr)U=Z z!LDNpDlZ*IrH{zpQY8wG+DJGJM}Ar9(p*{K7v{jtX7|qUk$t$UYSq^PU9XP{aWX#C zAK)8C-C zF50AEvNxkth1CulK2G8FGND9$ zWcn1PwsUstX3CchR%pRKOU+uj{-pe4Vj|^7wrnfkpvJ75pL!wh;uC5Ew$K}+C~v2@ zozk~&Kf278cGLS}1ZvbEu+TJ|;~_tl_#SyPt(E2jzWj10<#mX{_m4bVZm}DFv0nMr zFSpGiPK0Q$n2;CiT5CSKFUXrg>W;yUDj-xT&|4N=#rc_`t*nJ*q9m_|$6;j4DQkA4 zekFsO;|~Q`s1#UpSM_HD0k4TL*B9+uUBt(81Bd)jgG4s#ouM>3=c1pheb^Cj7j zir?1_;yt&dgI7oeHxZA1O1-3H-S+X`J?Z7wA6)IYDyJl8QuEP&xI=CH-C?E50>?0i zWo&lN5-C<(Te)>*)Ob2w^b7a$CtS|oZTwY|h4s-_nFm*Hx#>$VzVEE1{Wy7Hd&vin z_xCl^D>vpF?!tt=2rmEdwR|(Sk7vW)+ml|5cPJDL4z}&{=CE=M{+P!}6Ygs_;*S#8 zdx(Pe8(mgAKK|3m$$V`1x35Ld#-yBm9;!*?4y={;DdpO$t&z8Pv}CFhNLN++suxW@ z`BYc;)^#sWHGfURtpNLkq|}tR;f@=OPg`m~=r8+r?xVj(MYfzxHOWo?N=6)OO_?Cy*cb zcIG-rBAZ5 zdn0n6@O+N7KP;{G((c5SI<^ZfR|!t)F_QQx%h0^ag7`28#eKWknXc*&8r4w0!!Z#N z_sy$3RtSC!)aO5aS!O5wN~3c7`zx^Ka$)K_KHVRRcbIt05-TVExLQ|QQY0L&7{iD< z?G*ax+k=}aP9kMn&veUDa%@tFM=B%hScXh3r*!-RHtKO`Xl+OhYcaWR*ze^&y)7b- zzFN|8bbVRvG4K5pyIw`5);eievZ+4d5$Eug-z{9Q?(?xJj$ZxGV_P=wDA^Y+r~0n< z)+xS>^WVZ)=$i&r)klK)^IjIW*{dDE_tV$3R7amE5OJirR+Y7GDAvF6D1BgZ#D2{Z z|BaF8a4(;|*^E|wlKkft#~5yLE*GM)I>;<^&9^U=Uvbq7l%~YVYUbO+(cG_sFB-JI zuB^6uzbVksF~7Clr)A_@UiZdxZY#{KiP9!fwPp8sf*%%pG27ff?C`R9ZE^3L;KD1a zu18)>hVTe)SWnn}S97O?&o1vLmKus%UG@yNJ=wCFsZ7RU)wCX)s_(5;3KdP~Q_(Cg zug^Q&dVop_Ij9q)|K@#g4)s=y#tq@Sw-RZd=k9kYThE<6ZuwYmz1AfadMAtF4XP&Y z<+fttq8dIzlILeoizW^R_z)aK|?Tx}w>3EwT27ea*Jk-Y9m zj9~D974bl2p)BTOV}mh?uVS$Sz1h1rdoT zSxAnehPI(UZuKzDH#sh$5f|01|LOf^t3JDScmr~mcruWB;M>#{276tbOZo3Bbko9Q zS3c{esmw9F6=$Qc&6@TVW0|`#_sZpu9PKdn{XHjBlO8xJpKh%%7}E(1srTRU}XCLV7<0}~qQ4i3tOP=2MfVJECu`PI2dOt;H#3tP0*^OZ8 z=Wi0P0CaAc6#K2d+``9Qp?0E2F~SEDR({A|mmoFy{Jiq518vu8+IIWDe!K@Qf052F z(CF}Xp<`^TCr=6xhAsC5O6ReesY%|BIy=Q@*_R#j$y`W1;dCo|!}ZtCD5_6(wa^rQ znfU1ZIEbrjWv1l)+fGMZZ53Lg8(s~I`ffddT3R``l&P5io?q^*vg$ZaaQc-GGA(xuFR@#T|yk%NlcD{ji3i{E5* zGU{big$Vb%M(2>QWdTyh0I#F3&kZ`(D^wn{8!mfiHaRNh zlfG}|UM|t#N=9XS=e4_f&NIFJa@6f<4y#R?=k$Fw{!J%z>sq4kdH{8p-Uz*>6>3?R8&)9XeG#Ma-<9DE9Wtdd?cV-I zkz+IuCcN$*xFa!^YyF%OfxmB5{;g}X8f!+djbCZ7ruIPd%Xaz6Ck5B>J2>t-R!XO} zB!)Ls?KwZFx!R8Z>`F|;WOvp0>6PUhHV}NMUo*ac(z^G&@pRHL{vi9Cs<*}&wu{M5 z=4ON*`-B^Bez)sPl&heH#ojNn&To3xb)6D*^EK^lb9H%AgyjjRkMrj-!34V(6t_)s zt~p@Vpq+8%F^fREL?A;(&}aKpH`ZfDOdKaWT6klhKPZ#Zif0vXl~BXceWMa}yejos z{z#QQ|HUTroud2CiF2Nye6gk})~kN^jW|aBT3hM;m#_0=Uv7V+x$z+5JJDeVRsW*>$A4_!J%jDNthAI}>%Tg#e@Wwbs@n1E7xC8Aa~J$L z%+J!l%i~B+DAPHSdhMbZun<(Z*QP4E-L3fRG{p{yfUl0>GQBd-yOzH?FvXbc=zqpK zm#-p&`W9a?yRg|;?iC!BJ*V9Kv%|Hzl(v}QRVZ84uWfvGP#PMF% z7Tri2xp5Wx@}V90_HwuN7e8rl(ylC&)cqK~W$fgK5HrQH~OHqGe@o=KCM(Puwq!@N_9w}c*_chlQb_Y^6BiF0!$oDoq07e zdHAO?)0LgRd{bs@TmjO!N5j=;P%0pXH#ktMd)GZ{R!oH3qq6MazNpAEQ!ldJTbQ2i zx^wD5Anx>D3yzmeQP*^}9G0y*yYg(qHP_u8)Tfw^JlLkYeB+^0Lk>YNHaoDFne^Yx z=uBU0E4As1z+Tn(WqLXI)*`Jdeb&cnT$O{LT^H2uG?Rb7qyL3#-zq$NM9L5<=j8x{ zuhqM+8wccG=bvjm5UWsi(ED-b&e~;ZSMhouuVFi%@L7mRj6OqfM$o#-o?exhcrX76 zMJCl0iyh;cAgWD!ZzJwy+WTp~9Sicm|2p~pSoN)kX3L}>e}#V;X+Qlo?IT5L-~7*T zKMI=I*?TFb$G%WrxBFwh_hxx+%GT99&b2ZRxXMCB`^M69-@i?`bTXVUNa=f4q^T+Dm=I8xZ>Mj}0&YW(C0(KawaTnqrv{^(~TFMev9GgCYGYcOR z6Dni4X{Ba2x}8=-Md1u_l?soh@grJ>5w+y*^&VYG3ZrPVtJw6TbkS_j%f;^*uwHw0 zB=Ee(x;^}-S{d<=8VZ<0WkthEbeRepmmA74xhL2;?z^YcrnFM^qy(?(waVC$C&s-` zoxg-x?vQI3G;hWXDoi*}vIgk;e0^@%<+YZI&qZ5!ePc0K`D&c$j>=25AEiWNAC(U6 zc{9*z9p`qqj4GMxMa2P(M{dJL<^+ml%Bwc=37lmdB7E1DVT*6GGz8S$^zs(DsJpF5 zUuQZun}vd???I#alx>Gz+hv6`>2;ZsSkC6q=yRcAl`ng<@+40+dZ`t?;B~ex-q84F zu+!w!>5f&ZZJL+(!b%v_t0JTC*;Q;jcJsuVtz*T^J@(A%Q`U-2ep3y4^c%fQH|;Pj z_^`T8KHg`;rt@g)OzSKy#$7b_j7R9IGU{R#Bkd1AaHgf5k`2<;9k^rnHQ%@hrEq-Y zVpvU|mgWPCoAo#OEQ-tzO5ubfZn+m{^z5&xr{JET-p;DyA#P!%t;!a?PJHl}NQE#Umf zX7%nX4fyuTFMJ<8KjDsjWBa5eb!UJ%#;4BhhLi7sf)&~4P~C_knacHjku9N3nVjhOHAmIZ%G@@*%I~;rF?CWLIM_d{H%Docq+=_kOeXTBh!F8OhF` z(pdHg+k0xe^fxN%k}V%Yp9nGT?vCp`?p8%1_5^#{iprmv8z*+U>)cA;Pxjf$deW7M zFQ}gO;~IUHRa;t4s9BCHOBu31x^ZdZQetrNMTVgM;ykRD1$*}&uwF5%PGiRYAd zO!B()?HMSRZ2A-y<5x+aS1PkI#p<2`hwpaFBO&c|Z-sDSYC?Nn%3##Zy`R2V&wgxO zp^>NnCNcjE>g)Aqd}H*jiKs#e&G#&O>>ly8&Od(;ZvQ4T48)k`kvJG_x!iE#8iZ@>!!fcdueXD z^PcW>gHU0UpU&{WnyAw|?*v5N>pSwL@lrz+b;oPX5uU^OpAOy~yk9~Teu zYc|_us#Dk$?U`OcvFY-|a~CA=ER>ar-mCU$=Wtey(;mJSeOnA$o6^~n~8F6`KC<>&C?7fZbC6u1iuUpgn@5p+v&{{Pgt*KX0Lrr+q&+w zQK%C3^hV+RXU&E=$K-8JfKE!3`ZT!>8Epr3=x;R#IjmipsptHG9O`Of;<#`{Jto9)WA z^`|CSrA?l?yl<`v=@LJoyMu*Em%6r@aRpAv!x99buAJYkj+`#% z)u9`G4b-AF6E=kj$-Qc|$2I8hsi&NvR`1z05O6?gL_X}b?V5@K#tmmPZpuCq@4c&* z7M4zl(G5&{^_ogDVZFclr@IM;7|8^!T}dh)&vFjBk5AmP=E#(KznA6$lN6oU-8!YT zWLxvBv_~>d8-n?HzR?rP<9m*THAwltI=Qk>VWZq`=0pYtg)ahQhbC2TZPGV?{9e{O zpi42>p6B%~p2@EM%DX!x&M>5C-Pl&~Ic|8OfArQ7WsMW!z4hyJ&#swdTQ^|3y2$1^ zfjYCL3foYn)~URf`K{!-JhRPDooi!m#U3>cQ##>voOj6RehZ%W9=P-XlRv_#WNI+f zbK|62yX{3yCf&oCo~<`!aK)(M?WPxUqL0$6Ub&=th${Wg<*TRH%bJPWJY@PZ@FZ~5 zL`iGYv2af(8}}*hmj};;y{&UO5P8R5yZre}8`K%@&qI5;_rp!MRgqFx1OklKSs(G7 z;PW)QmePg$@Uiysp@AoQY_hLy`d3XEV+>oE$R2ufo ze`j#_Lw$?As*gp{cRONEFdB+al!Yes-S|dayEV=$dBwJqUr*K5nI8WfXM5aLS8nxG zuKlWwSG2`Tgm@+Qp4_>bqpyoliJeA$QoM-1G<@$F!3i`$$rysvk?K`~wPEQiT za1xjW?Kzcxt3f}{O>}*ZUS9k5{p`)3A0HU*|3KN0sY6(c%67}4bGKDFkxRdmcI>66 zbX2CrsWE5n=bwiUU?0WvS29IjLv}bNn&}Fpo|8;7Pkks-@WHj-Y;Sz0`VMcgVfLd@ z3P&+C z-!jgv5m>i7PRcm1vM_wZ*p;`I%)XrlJ?9@W*E(M^C_gKbUlyZ$sFL!~F~gfa9u_N- zU;8yBfSR2Z9)9IQTG@z|{`9&U+S0C>QPDCagL@c?ONSo0Ahb6w5G+oI#Nce0JC8B{msB+R? zqkH8gF8;d?b(=)5G~Te{Og4 zO2tbYr`+%7Y?WM;rY2K;ci!jEP8`0SuyHa}OsR{dDp^B^lI_uor-bOCNbP~$S9;`W zi1zHkHXEGWys!-`0#kCfp6Ydtx?5%vMjKS-tUQUo{34nC)y>_$qWYRC7Plpdr`_uK z9~kC3$NSQ!>uFw3Y^$5OilFdr&U)u#zHZA6T| zKcL6mWo60TcaO+|UCFS6Ij)4Rh*=<8JR}Z(Uz$qvgV2Y~F{WWeRos_|f>b4G30vip zI+N#YmTPU~K@qiMr1%f+brM`{o77mBa!{(~UV562r_z(2&&%J5I$hnZyCYn$y%Qaa z=04luo5CC1d+}cU^yv0<^@q{hj+yWA9Fg;;*WNCN{rEWVX5aM>9b2V$T#e$h(_+ec z+!WH=vcp~=;+9vhsOHLs@C(JgD?g<4CyEtr*~Jn<8$51M=Zjd57P*M$!?2YF5u9%y zoxqyvgy!^wMjaoD6LWouX3gh{yhhEIcDM3uk!#uR)GC_I^g9{VF-Tt&duRFe>epQ@ z^=I;L*|l(XthA@9_73*)i+-bA8iOi+S4GE_Y?r54vD)EExIuer!NaaLQ%$xyZ&UV= zFHK(!%z9d=cc>sxD(0?J8qu1*;Z$Gk-g-_HB}pgjk91!llbxwv5VS8S4f*P&+PL`i z{q!yIvf;Mua0h+^IEkg*nkiznas6A0$5AULUa&PG+(Ok?Q)y1_r-TCN{QV9!k^2#y z_J$X;Z%c@-%=~(*^0rS+&uXI05w5P}FVY;hrZC?Asi%l*rg(iLN2kBSQL@n*eUstP?@%K)FDj(doWnbL>NP$60DMR%HaJ*Dae-k z=wQNzv4Z@JTodghYc2)LGCzyZdaZCO54WP<@geQTOGD`HK+fWKQu?fFcTQd6>zRCJ z$dPNS&Z@CHo>yYsgxMrpoW*DMCNnln-8v~HMt!UPHA=KDcvDj2frZRrhe zd}3Tql54}pd``E@|3&V64@F(AF>mgOfWW zZ>$DSqQrSd{KI5YHLWT-MaOzd)$P5_DJHH3-mNCA-QR1;h&4l>q~Aev(pzv9tKsPR zqnK0QB&id3co{1Xh&5LhnqfYs_mAm^_hp+6JKriQ7zxj@JDPWzQFy=#6J38PO4YUH z!>fibkJEM}iie!g>3i7ySo#?InHy)HHXBf3d_EkF>1Iwb&o|sHVY-dR%gH)jFTS!4 zwM#Zn|Jhztxq;=euPJStz6tb3sDEaP92V(Cg`A7H#76{On@&GDq|ayi!i=X?bAP+} z`jNMe)y+pgB(>)Xf3C1&xSg?;kf_$t?}KE74-!P)S3X*WQSnXB$5u7beY($EhSI)r zCY{pq>#6CdT5GP3$iseS?yV(7QixdKFGcGLQAE-^<|=;&#DO*uaL;{GFD3wq|k z8lPxCb({h=uT+ID>@r_p-WI*ht5sHAuVNPG;b9!kqCD#NiQb1}?ENYaA+y!uek-r@ z)Zft?ovb~Od{}LlicCV!>d7uns%I5<<35b#KP#f%Gpr^x)ftk>9($Ow!XRWhDVd{?adU5-j4p~x}A%^{TDuUn!IzuZ@3Ga0b+DrfF!Hv&8O zjcEF8onVlH?T!ilZ@yW!4knL}bvhp|C(w;dPZSf1#WJgW8&7gEZR5tBjJQ5P8!l$# zZZ+xa&ns+fs`1WmzhQXQI-cE<4RJZ8pSCa@v9XV$+jW#Vv@NJZ=$mJ(jqWlP-}r}3 zvWm&-JMB+YG1{FMd(4`px>u-ut8<=9yy`0C&Tpp^83{MUV=kRPOkErywLAxH$8pidO^EF_?bGZ^PSWmR;!1 zlYr0nR2zzK_th!C^RP{wwBj|Ix)OTwuHW@l{2Yu{neGJCYU}GUaymmM{Ruqmy_*tm z8r4?Z+sw%J^fuKvZp1#DAgD3!r}3I2J1`*sV#(nbVXq2bzG!~1|LMzE0ZxWyl~REs z-7Pn|>x>;E;oW!l<~_FSwIiFEH7cz~Z^|Ay^zAt~VNcU@9Ail3Lg_@086A@vwpXfR zyZcowH}4q5Q@)O)yT+SFXpcmmd(?xy)vZW?yQ_RuJwMeN1NmYv-95GLv z`DJ>PlfzlmYzi4Rw$z;s^-(-$bt4&is%?rb}Tq4UC)`gnzI>6?K^ zf}LK-;(|VPS@_>skEJWMq|_+3ZwQXgaJnugCZ^XKTk?5tFyhTYrP~4nHJ8=bHTEj` ztd{TLLpcXMRw7!Gw94`__{3(3$|XmXe7n2}SRtx}_9X z*;i?8KW%p1+)C+s1Wh7=8!OkBU~;I#W`(wE?mTQ1+&uAIo#J&=EA z-@{@y+jZ(xwz>U9H#})>J!!qWO2_ihGPS*dRFPwO8%`jGb@b_JT?%ZyI^{mrAKv)X z*hx3m#PCRdOXP#iZ*yPm0n3x=vp?-!{pmRm{}yV^2`*o*42gS*xA%<1&@>i@36Y zJ{ys=x(ByxSVDBr>TByd+Q6=ngNn)9x>5~=mZ{!)n=`f3!y1<5xin^FtS)?U^UvpW>B(QaD3FLydy(FENxmh}lPz#mHM-4DY66A)8cXRJb(kZfvML2*!q@i?N>Vt~p8F)dZ@{mMLMkm@60f`J zUPBnweYreT%=z7|7=%Kw61z>27cC>dVZIUFnKARunAe0g#T?XzJ5d$*xLOUR{VzVW z4^ioPSh3PR95M{we{7$zox^M91JdhEbre!Id$nz78T7rlbF=otLZ&Gp`N^CuLUn;B zHoa}|+W(&UXvEI-VaB16#5G}DFR0m%Z$Dgat!8919g4HK9EF+=Sq2+SxjK8QHyn6lpz=Kcbb)}c7=mjSEE8L>%ZzUZ5 z^68AS{=HSL?I`IQ{|8ibNDtvaxpQkmRy~X4Qt%JG$-=ojfYISZIDB<<3XjQa%p7>n z^x(eq!>V}R0jzdRZ1C_h7HL*GhBR-q_$)~E$PO?9*dTVR_NP=zaL{oRLI%Ct` zvySU??lIlAV4v#FsxjYLoKcF4+OR|38ZeblIYZN13C?%6S$y*>8dOrvVDhPTyWY%Z z`1F|ovfq?=II=?6oXTo5zC$omL1SI~78d?JxsE(+rj;LgeM2t>rBA_$0%0WkHBW+5 zHybmmTt3%CBhtfT{q>x8TU@&W7~h6FJM0R*aKy!i{@kZ;8(YdJRyHLwb=;m*!m6h= zn^h=Yk~(0^a)-O*s|`)r>2I7x`hG8`T+NBg*aR-}=TSsw#Eq=hstH$`erJ^t$w{lX z`Pr3?@JgVKcSHo8W)0x6>Wc03J>h#rCQ+fC82ddN(R5oM(PXMeW zQ`@D993rIQ^jhKXfwK|zrXF2AlAyI=`Bzl$kRRkU&(jUnEQSnvL^WJWbCXkV#|aG;)hr{Ju1gm0Pz7 z{{UIH4*FW2%(7Aw0D6AXZiwM33bmS@nlm2^=$vDneCf;$X)n-LUGG9@5NXdlDFsJA6wLgVz{43Al zVrTHSe}!HAD%B36=0R(OPj^69X7%-uy$6#sh|q~N@dz}ESxBDszuYZ*^ZwE+ajye6)E4xF zm;-pg!Xg<%;^}3KPDjVu(JK#jKNDRQm-7$`i=y4rG0uS=T-G?O#MST0}wJX9`n5nOFY$^QK z>uia|ag$%P2N~hyWX_w1?0(ZMnViQ2;c%MGA)F>2%gOZSyeec;^c!$APkDzGxCa~T z+WUwQAIBG%GiQ!efP{9N=Xr=VX_9hoK8D5=zXFjo3ta?Sbf43GxIS-L5nJSa8C%c; zx_$is*8%@Pky(~5nNLI!kzGEpHTzs&lF*mxYW`g^pKva3l>=G`Uxdh{ghunqfK`-Y zXh@&$H$i#GMvnH9aeb{AwPUzr*Fcitx(P$hQQC8oY$_8E@#7IQFIGDFiWP=fM%MNV zSv{!GotS%{yj%F|ajh!kOIHz}3;yp2M5-nqawZ2(+s^>GipTg7+Qy`^BnMo`9Vck3w3`K8lv0=R2J*+KHiwn^FN42Q7s5ZxA zp>U$HGmR#d_4~lBgi0FCCvu6wTY2Mkn~9l4j`j|R_K*SEJWJ;uD5i1iUahXKqyhhR zC`1d`<>v$0j{->pq7WRFwYt?$-SKfX2?$J^jDg{)GoWJ}EvVP#9F!C+aR3Y?8D6?r zf~=B#jX707LKB67KpFAhzI2&a)`lj&H<0XTuw~uy z0z}s(GkA8eqaDyQxBYV~xb)K-eE_;FwhRd^-Tw#&|8|{c^#FrP4O;&fU;|_E>P5Yq zQN6x7^xr9Z2%f-NlLJxd|8Q~+^9=w*(Lm&;cZ)cDrgR}3rCDtTZ=zQ)_kSBb6~xB= z+k?HKJjnR;uzloX2v9BIc0H%9@X62`Zor2Qn!6D(*C0ak8lo1!E*XY=QbLvB-_=3i zIc5J_-Ttk-ZV^n!2UEOr&SJ@f1XD`EOhO%{&y7D}ir1H5+i`dZSKN%bnSUogdfUEp zhF}R0;1B*(5HGtGjo(^gk>t0MJ^msq?V5eOpWwbLGt!B~D;{C;r^%IwoR5%x+}Q%% z2@UCdB`&K{aoSGmO-ELKM_Rs7PSb7)A;0uQf!}VS++K%XyF!yHJIeJZKsE92%_RIO zq#7&+`?7JXwisBSb$=IinZ7nK5T0QhCWmfjx?}sq2LVV)h;zC?AJLF=2HFv_Wo=lgd{~5&v4;}%OR4!B?}Oh} z(Tz+%0qgFFH}VTGKI(zyz4OA_;=A?NZtpz9GH|)4>wnKi>_iF@o{Bn0+5*M{I_8&pf?Mxtdj(PYi z2u>T)HBH>cT*?9tS~N0zAOjUoJVm$ki|wkRoTmqxvsn?>LSbBZ*_8FaXnv;77+kyd=GZ*<5}UU>tX zqU!z|?0}tRF%CA1iVl*oF#Ah?)SVzH5HVPh0Wn?Zwi!up5QW&bIPENm1tyobEMOps zOh!hR|IRsI^QhaO;Ht?PK zNl*3Dibxmwv(EoHQ0u9@44N~8$&t@_XaJ;MFX!;J@3ynP+g|%>yuRB?`)l9fWPb{q zAHtXZ6gTjuKZE%46hN%rurw2VE@5F%Z5Y=vZ4a9)EK;A6zqwGLDY&~7!{~{%=e2kh ztF5{OH*GT}Of3CKD04QQyX6-XdNjld*eP6sQHNVox;Qfj!@XMqA4LJSF^R``0JJrj z!5KvKcD4r?FhOfY9>Z9Zql0$B*CUPmp9Ze5VErbu zuA3F&HPDa!#I|eZNV4A~PiNiJ>|H@KgyT06H$P8i>^$UcP6jIssS7kDb&cSH_-Js_ z&RpRGxfQ98goSeRJEmGMb%GXp;+ha=rl&-FeMFn&fk}U@*`iJL@m(V}o3D+6dmt;hxzyfJJ$x+)BtU~G zh!7Bx(Vm(=E<_kWTnO2NFC0%R%^`OsdF1z-Fl{BKtX+>sRjlN$kgoAb8$x5mUQuqf z=WbM9Yoj!R)?T1^+yn8#E@*MO%iapeSRhKJB=)?*6_VQ4`0-Jy3sV#0?nlh?R*t7wTEfx9A;QkKp@ z*GC)rC|S*`vI_+8c>D`8bs}Tap6D+q?S@)-z8c>4{&?BD`jsljORFSps3>H_UW1Uk zSyF$SW6S1o4|Pa4IUN{ktx*B9X)`nbB}myzL-QOLUISe8O?|X?DdB)Xz%P+*k#i+E zEi>l^Zt#fKpJw0SS6D{nro?LKoVs`tme3>_`L*O((3ocITI3ekQir%(-~3f*F{0i> z8u&JjRSudv_(GHLLtq@WHZ7tc0{xSxB4dt!liV7DkcO7c%b2gJxbfiQHWpX#Ks~yZ z{~6C|8ru|0Cs3Y32Fs8M2c-mrXE3E>N@kyx zFE>P0HuFcuRM-%VM0&F3>d--Nhnew9u)Dc|nz_s0BxctpdRa1d^UG&p`wY;9Gz>#? zlgk=hokZ`i6nYI)pWWwS8m&IG>}dAnUi%jeG-Lw(JW1@c<|(RZ4T{IUSJcm7mE6$k0zuSDjX;lA zyt>YI$5186m^U|l=OpJ66`5ELQ!)5LP2b5C!SkoVdm%7p$^S4|9{*?yL>~?iY=V)r zz)dO{@7L3YO_PbFIpn58JHrGyYnPhg8ynleHLbPp}*m&mE?g3 zI7=c51rz^$5l2`{u5wIF8uTXWC@Ip>!BvI;|9^bpw4Mpggzv2pcT<%3FLtXh{elRjJ@;#F zJ%)ZB@$S_&1YGa$04wUt4L|tX_4kbJy*Zq1lbr@U`rFk2!`s~xX{3?9iv*bCwrCwE zWm>68ANfBf0wAPdkd|dC5O2vN_>Jm79Z%2hrL+F|0~<4A|9=! zvjea7-k>^&#}`Cm%Hcj_rSidK85$d)teW+@SCGBi=`D!=cWU)3pUxZs|5QcH1zgdg zo(8o5PLLrHQ_F?Iw9xZ;qHhNGcjPv)9~=YNe3fFzZ25!ybh@4Bl@nWK< zN)%JI(ee6D%wOrcgDZHcs5B4%LUqwY(<_f;!0cH@dq4!k12nGmtahA6w+flZ@cE6l zI{`93kKh)Vl-_~Uw~3o>tyk6O9tlH)6gq2Y>^_8ou(fJ58vwT3W1Cxo(3%;o=NP?} zAjeUiZ?68lQtD@;O$`$TT86nP5wa9xG#ZjL|7!RAC6JR!2lG?;z9i; z1&l_i?&>{|zr;w`-n(VHUH3}LBV`A0IJmB%r;Pt!g;g@-NZ~!E?K8}HlZcOT>=gEe3b>`C;BVvVqsWiDm#J{!wFq3V(p2-m{*|iem4bO}5j_WC0 zxX*xSoiLFNvzdqRf?xCKGsH;U&(wjj5{dk-)Lwa({Vsk~vriwX18pH(u*Je-m^6OS zNe6*(827@Q4Y!SB1xM%fLiP={O39aqwSp20akYC-CnriN_8iq^bahJQUscNA zJ#6}2O|Q=~O(wD-HW5t_VI}3eMOLo`Lrf%NpIj#yz-E>}Z-epM#Zi%E3mA*G1?k=v z<5l$|VzKUyRx-d8Ey@z;zvM3;HM4N5b$@b<3ECcv$m5dD{tdupk;Us0}x8;J0uy=uQo^ZA)pCc*yE z&;|`t{n`!s;w&c{GuR+o48OONdIc*(&1Ig6)BbyR9E(pmUe#`2=kTrnLcqS-_WNrb z{uPJtudlYTzS_4R!jS$HJ@(L-+d=^H9c^0@>4xRF3-Y>Cp?%9Dv=kE;><>mzIL~jd zddKvHy`{UUWze@nk79g$a#>9sZ9&SM^Qp7^Nf8A*=ufFri$-be-Fx{>BfuH(o^u^h zqjs!=ROI>6Sp+?}5Zn?EBSEnff4*E-n^`t(IT^<5=+S9Q%fkAN6yB8P&Ri@m&vQA8 z$3-@c5O2Kt9g9?xv%y%_XkO4Ji8C3v4MaDE6D= z*qdT&VB%Z6(|9B^H3H~qwE&L2Dmo{G24H;Hv=WdnR9OZ_Zvv!b?73o^K`evX%5CtWh=;>L^S5f@NwSb-T!a6MCd_2!M&VmFv#Kf z1X~Z37l{$0-7L_6VIZyM4SW}t<$*?DeF2zi)*=Y6Feh%4Rkq^8xut2KmHY7J9yYXD z#Iub09sSZXNG(;XoPlBFS0_%j@GoC-Wi`avBpK7^j$d8#(lAheOV{*4;pWVDU%e28 zLVZT(gT>Ny#-C4aa{L!}IFN!qO?UpRrK25_C)o9B`2P2x#8ib{21B1C6GFp(uKW4F zAplloDv9mT5Hnb^PnER6|5ai{wdjD57^e^=*jOpKv(k6X@*^OK+0Pm;VIt0-VBC z!NHH^_94+c%Ewb+5v6`z0X6skeG8l{bU>4D1`EPN1oPMO73x^8QHy1#(%O{6W#Hi_ zR$L;xcF_Fd!`3ykMFW z`Kb0AmSnSeoF-zzboOigY>ekHDoA*#j8# zvTBr%`gk@-v6ut@4lVSApP+_b*KoOy!N%SXru@cA7>Uy39#VH~J7FMN^5KsOWAEbM z)V-9e2rUcUwUx#QQ34<;a;FTC(TgIq9E$rs#2H;z*cFgd&JfR|k{GKeSqSC;`W|h( z4deIPmZho*Qzo6OZE9%id4z+6+?}JNX<1Rv2bHit7uzMRjLq zlu-6Z{6Kgu=(&&*C=5$V+r|??xFR>)$+7XZ$V0UUW848CX6RAfBw%IjU6UXO`c83b zfA%Y+R)^_^#7Ls5_7Rd~xqW*_NVU5Cx6+e$T+)_%wVQ{MYqis&zLf6iYj1*SF4odNx%DtGS4aM*7Ksl+goVPW?ec3~mHSF5P={ zvdencuJ=9A%-?F-P5}%s^QEWcF54R5#rj>QLg33T?C<$SIQ>n=Ujo5IWuTnmM~fzk z-%+cl>F$5`VJb3eE8Xx0AUhVGfEA#_G{`X{TSK@FeN zQU-x$j=2>Td->2=@eQYzb;e?o>*N5+=1mW13(aWz{wM+9?8KRZ&yaNR$zm38`$3)E5+WquD>BCGX zf*vf)&aI(z5h&>-rP<+AZLsv32EhrbbJ2FtRulP)W@S$kGN9zl#!WKx5cJ zsj*N9mJPO?Xfg3Nu#AvvKs7gd7g+)f??_9e254dj zFd5pc%Tc$z`No zh_Pq?LI7Afgk-iRUg~UbJ9@8Q&FD}uouG>J5B)}SAKl-T)N3hj%u$f^MkS(P5f%gj zf^dr+h}C_Te0ILP0J8wDc2HzLTId2^3e)adBw=7cKeulR6ZJcqJnt=a7)&*A zNVD9dME(7xL%VNxW9pj@IfX(p8zM&?Bgja#9+PMV`j@P6R&siy4w$C3nYKDNbDOFw zC;+7@%8SkPiLTDv^)W`IZbNUyg!r9LP@`zDUmXWbEclxPvk~276SC>H8hA=Khj*A# z%z1U&obJ)ofo`m%c^6M%;mn^;^Jc{+ArV$uhs$g@<$TLa!&Fx0YYGpSZGsZeGxupW zXC8B{zg9rDgb05XxZ5gEbadd3*XRbY3AQ89g8Uf=^upVa7g;mlI74^O-QkDonr^=X7?GtjH zW!;L_G+T5D6~ZIT;4YgO8y(wjk#=UAVt3wZCggRMYHF<32XBgi3#}MlETf zs|nz+b^2$1xb|Nf98WADL(`mi4lvx#q`6ro#i2vQJ4wRT_V9yBMYZAeO`PI{JjqiT z&25X~+$FAbyMiQ7cr$)ep{UjXcOj4BwW8cT!$|B{PS=U^?%;qB6~p`0H~AwT{yI>0;x*^I#J^J{FLmfY~MN6OZuManilCe(he85p7(_N(`@0u_AN z*w#d?gVU6VB(Y<0JFixDSJ8TE+t#A9K1b3pI6jw%qb~bnV+$%XO@SrUKIvZJI_+(GS2x2FadIAFivXd%E%lZo}zN4@H*PX5?D*q3Ho%t2xX zlZT>Mg$%vQ7S`fdqkeJdOki^N&S&Y;Brn*1NeoiR4H(tNh)T zh;G$+_%jK9dG^(|JwvI*DO_Cv!>$4^U2H)+6kPQ+YkbH=|9@jEZ@gixu5)`)R-dqh zDR1pQrIQ(=N+K5?hx}>0A`fx)V4bAQngmVD!D;5k4|LJlI1epSL}28hQmcB{ne6_o zG_lc?gUWn+-`Q&y0pUjNxI{{JA!sXE34~yH7WdvPZnr5>C)d3)l+YicwlCWx`zOIU z-?;>km=n$hkenufm=ao8G72h7UxP1COY=U-QDR{KJwPy!bU7qfdbtNHVzN+1}h>_`u?AHaXa+Ic52@+oO!lvwz@S%o$4CMVyocqcl*Y9TXzZ zp)&Ss`9`c=BfW^zCQ>z$Wiy?R9*&urAB4x2RNM>nD^rRY2_XyM2JotD0~iFlGb;C5 zIvOX>28V=vNLc|_j9@x`vocVj5POgh74sk#Yt`z)3mx!u7LJ9y7EvUD(D5x6pARNL z?864-Ao8CDp~;zJJ^Dv}P4K%;=!q7Vsp>?qeqUcJJ65^l)WvamLhj55M^d*nKsT1V zSv94ljG)DC1|}8JG_zn++I`vvJL+)$MhmYXcab0f0b@(fx5!scIpPz=nmIbo@(uO~RABV@VeNw zUz%ytV?rGu9;9S+L%QqtqznYNk;C#*BsU^Z00CgLTEe4v<3IFA_Nb-&)d=C4*AxrJ zmMn;XU(|9_oLuLyc!*U?b9$cfRwAG~*YxVy?DlJ7XkT98n)B!Eo60F zNKQ^RM99B%$s~QEo=iC!RY+cs0vH7Ifox@_Y{l?)fk|{P^`nPOn7h$pvEa7Nn(GaO z0yZXRg)Yo)Q7a8jOMq%l(9Ngo7o<#a0f&>xI1DuLs>`8LPq;qS91#)Q>c!=`ucBdR za`U0HaY~us`o}KSwH{yVX2p7)3TU+PT6h1eiD1N|{)qV8S9?3z2<0g^7?=lgh91e@C{q> zHP%;Sh&fig-~SY;IWGQ$jGg6EQ{MJ6=#Sy*_gQot+ z&3=S+cq4_^7h#Z+Ts93CaO1zNgc&DsW~AT4YElg4jAxSikoIYY(tYe|TpWl;m{Q<| zm4G0){1Td!0UFD6r)jwTW=UGoLh5so4O*Cg$W*}t@O8AHz?QWLso`dbKLf_B9HQzT z*rr<5>EjE3_L?-SM}jt+%+Z8GeW-in_vwqzr_g)E`8bTrjCSae38k#|2z z15MfJWOUj()%P)}lj=CO)~2`nZB@ZK`cB>1je=~OwfFe}VxqYuKwLSyr|`$!q|;tg zZBa<71V^&*w{nb$-eSN)khrCd$W@r96v%m+LX-=fZQd-Io1&aVt|hC`*!{q=Ua=2Z z6IXPsm6U^b1OFj*Ds`<}%1nYDIR%dt?!AyKt3i#0Q4E3)c^(RW2&2$BAQw^Ke$ovS hiDTh|$ZK;xUK+61n8EWsj|}N*j|}}HUHZIV|JfEa&!YeU literal 0 HcmV?d00001 diff --git a/dist/macx/puzzle/Info.plist b/dist/macx/puzzle/Info.plist new file mode 100755 index 000000000..5eaa2370b --- /dev/null +++ b/dist/macx/puzzle/Info.plist @@ -0,0 +1,30 @@ + + + + + NSPrincipalClass + NSApplication + CFBundleIconFile + @ICON@ + CFBundlePackageType + APPL + LSMinimumSystemVersion + 10.6 + NSHumanReadableCopyright + © 2013-2020, Valentina project + CFBundleSignature + @TYPEINFO@ + CFBundleExecutable + @EXECUTABLE@ + CFBundleIdentifier + io.bitbucket.valentinaproject.@EXECUTABLE@ + CFBundleShortVersionString + 0.7.0 + CFBundleVersion + 0.7.0.0 + CFBundleInfoDictionaryVersion + 6.0 + NSRequiresAquaSystemAppearance + + + diff --git a/src/app/app.pro b/src/app/app.pro index 4a4eb35c8..6a02b9428 100644 --- a/src/app/app.pro +++ b/src/app/app.pro @@ -1,8 +1,10 @@ TEMPLATE = subdirs SUBDIRS = \ tape \ - valentina + valentina \ + puzzle -macx{# For making app bundle tape must exist before valentina.app will be created +macx{# For making app bundle tape and puzzle must exist before valentina.app will be created valentina.depends = tape + valentina.depends = puzzle } diff --git a/src/app/puzzle/main.cpp b/src/app/puzzle/main.cpp new file mode 100644 index 000000000..f214dd3a0 --- /dev/null +++ b/src/app/puzzle/main.cpp @@ -0,0 +1,38 @@ +/************************************************************************ + ** + ** @file main.cpp + ** @author Roman Telezhynskyi + ** @date 16 2, 2020 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2020 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#include "puzzlemainwindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + PuzzleMainWindow w; + w.show(); + + return a.exec(); +} diff --git a/src/app/puzzle/puzzle.pri b/src/app/puzzle/puzzle.pri new file mode 100644 index 000000000..863a4d1a2 --- /dev/null +++ b/src/app/puzzle/puzzle.pri @@ -0,0 +1,15 @@ +# ADD TO EACH PATH $$PWD VARIABLE!!!!!! +# This need for corect working file translations.pro + +SOURCES += \ + $$PWD/main.cpp \ + $$PWD/puzzlemainwindow.cpp + +*msvc*:SOURCES += $$PWD/stable.cpp + +HEADERS += \ + $$PWD/puzzlemainwindow.h \ + $$PWD/stable.h + +FORMS += \ + $$PWD/puzzlemainwindow.ui diff --git a/src/app/puzzle/puzzle.pro b/src/app/puzzle/puzzle.pro new file mode 100644 index 000000000..b0255b2c2 --- /dev/null +++ b/src/app/puzzle/puzzle.pro @@ -0,0 +1,335 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2020-02-16T17:16:07 +# +#------------------------------------------------- + +# File with common stuff for whole project +include(../../../common.pri) + +QT += core gui widgets + +# Name of binary file +TARGET = puzzle + +# We want create executable file +TEMPLATE = app + +# Use out-of-source builds (shadow builds) +CONFIG -= debug_and_release debug_and_release_target + +# Since Q5.12 available support for C++17 +equals(QT_MAJOR_VERSION, 5):greaterThan(QT_MINOR_VERSION, 11) { + CONFIG += c++17 +} else { + CONFIG += c++14 +} + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which has been marked as deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +# Since Qt 5.4.0 the source code location is recorded only in debug builds. +# We need this information also in release builds. For this need define QT_MESSAGELOGCONTEXT. +DEFINES += QT_MESSAGELOGCONTEXT + +# Directory for executable file +DESTDIR = bin + +# Directory for files created moc +MOC_DIR = moc + +# Directory for objecs files +OBJECTS_DIR = obj + +# Directory for files created rcc +RCC_DIR = rcc + +# Directory for files created uic +UI_DIR = uic + + +# Suport subdirectories. Just better project code tree. +include(puzzle.pri) + +RESOURCES += \ + share/resources/puzzleicon.qrc + +include(../translations.pri) + +# Set "make install" command for Unix-like systems. +unix{ + # Prefix for binary file. + isEmpty(PREFIX){ + PREFIX = $$DEFAULT_PREFIX + } + + unix:!macx{ + DATADIR =$$PREFIX/share + DEFINES += DATADIR=\\\"$$DATADIR\\\" PKGDATADIR=\\\"$$PKGDATADIR\\\" + + # Path to bin file after installation + target.path = $$PREFIX/bin + + INSTALLS += \ + target + } + macx{ + # Some macx stuff + QMAKE_MAC_SDK = macosx + + # QMAKE_MACOSX_DEPLOYMENT_TARGET defined in common.pri + + CONFIG(release, debug|release){ + QMAKE_RPATHDIR += @executable_path/../Frameworks + + # Path to resources in app bundle + #RESOURCES_DIR = "Contents/Resources" defined in translation.pri + FRAMEWORKS_DIR = "Contents/Frameworks" + MACOS_DIR = "Contents/MacOS" + # On macx we will use app bundle. Bundle doesn't need bin directory inside. + # See issue #166: Creating OSX Homebrew (Mac OS X package manager) formula. + target.path = $$MACOS_DIR + + #languages added inside translations.pri + + # Symlinks also good names for copying. Make will take origin file and copy them with using symlink name. + # For bundle this names more then enough. We don't need care much about libraries versions. + #libraries.path = $$FRAMEWORKS_DIR + #libraries.files += $${OUT_PWD}/../../libs/qmuparser/$${DESTDIR}/libqmuparser.2.dylib + #libraries.files += $${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR}/libvpropertyexplorer.1.dylib + + # logo on macx. + ICON = $$PWD/../../../dist/Puzzle.icns + + QMAKE_INFO_PLIST = $$PWD/../../../dist/macx/puzzle/Info.plist + + format.path = $$RESOURCES_DIR/ + format.files += $$PWD/../../../dist/macx/i-measurements.icns + format.files += $$PWD/../../../dist/macx/s-measurements.icns + + QMAKE_BUNDLE_DATA += \ + #libraries \ + format + } + } +} + +#win32 { +# for(DIR, INSTALL_OPENSSL) { +# #add these absolute paths to a variable which +# #ends up as 'mkcommands = path1 path2 path3 ...' +# openssl_path += $${PWD}/$$DIR +# } +# copyToDestdir($$openssl_path, $$shell_path($${OUT_PWD}/$$DESTDIR)) +#} + +# Compilation will fail without this files after we added them to this section. +OTHER_FILES += \ + share/resources/puzzleicon/64x64/logo.ico # Puzzle's logo. + +# Set using ccache. Function enable_ccache() defined in common.pri. +$$enable_ccache() + +include(warnings.pri) + +CONFIG(release, debug|release){ + # Release mode + !*msvc*:CONFIG += silent + DEFINES += V_NO_ASSERT + !unix:*g++*{ + QMAKE_CXXFLAGS += -fno-omit-frame-pointer # Need for exchndl.dll + } + + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols + DEFINES += V_NO_DEBUG + } else { + # Turn on debug symbols in release mode on Unix systems. + # On Mac OS X temporarily disabled. Need find way how to strip binary file. + !macx:!*msvc*{ + QMAKE_CXXFLAGS_RELEASE += -g -gdwarf-3 + QMAKE_CFLAGS_RELEASE += -g -gdwarf-3 + QMAKE_LFLAGS_RELEASE = + } + } +} else { +# Breakpoints do not work if debug the app inside of bundle. In debug mode we turn off creating a bundle. +# Probably it will breake some dependencies. Version for Mac designed to work inside an app bundle. + CONFIG -= app_bundle +} + +DVCS_HESH=$$FindBuildRevision() +message("Build revision:" $${DVCS_HESH}) +DEFINES += "BUILD_REVISION=$${DVCS_HESH}" # Make available build revision number in sources. + +# Path to recource file. +win32:RC_FILE = share/resources/puzzle.rc + +noRunPath{ # For enable run qmake with CONFIG+=noRunPath + # do nothing +} else { + unix:!macx{ + # suppress the default RPATH + # helps to run the program without Qt Creator + # see problem with path to libqmuparser and libpropertybrowser + QMAKE_LFLAGS_RPATH = + QMAKE_LFLAGS += "-Wl,-rpath,\'\$$ORIGIN\' -Wl,-rpath,$${OUT_PWD}/../../libs/qmuparser/$${DESTDIR} -Wl,-rpath,$${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR}" + } +} + +# When the GNU linker sees a library, it discards all symbols that it doesn't need. +# Dependent library go first. + +#VTools static library (depend on VWidgets, VMisc, VPatternDB) +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/vtools/$${DESTDIR}/ -lvtools + +#INCLUDEPATH += $$PWD/../../libs/vtools +#INCLUDEPATH += $$OUT_PWD/../../libs/vtools/$${UI_DIR} # For UI files +#DEPENDPATH += $$PWD/../../libs/vtools + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vtools/$${DESTDIR}/vtools.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vtools/$${DESTDIR}/libvtools.a + +##VWidgets static library +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/vwidgets/$${DESTDIR}/ -lvwidgets + +#INCLUDEPATH += $$PWD/../../libs/vwidgets +#DEPENDPATH += $$PWD/../../libs/vwidgets + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vwidgets/$${DESTDIR}/vwidgets.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vwidgets/$${DESTDIR}/libvwidgets.a + +## VFormat static library (depend on VPatternDB, IFC) +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/vformat/$${DESTDIR}/ -lvformat + +#INCLUDEPATH += $$PWD/../../libs/vformat +#DEPENDPATH += $$PWD/../../libs/vformat + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vformat/$${DESTDIR}/vformat.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vformat/$${DESTDIR}/libvformat.a + +##VPatternDB static library (depend on vgeometry, vmisc, VLayout) +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/vpatterndb/$${DESTDIR} -lvpatterndb + +#INCLUDEPATH += $$PWD/../../libs/vpatterndb +#DEPENDPATH += $$PWD/../../libs/vpatterndb + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpatterndb/$${DESTDIR}/vpatterndb.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vpatterndb/$${DESTDIR}/libvpatterndb.a + +## Fervor static library (depend on VMisc, IFC) +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/fervor/$${DESTDIR}/ -lfervor + +#INCLUDEPATH += $$PWD/../../libs/fervor +#DEPENDPATH += $$PWD/../../libs/fervor + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/fervor/$${DESTDIR}/fervor.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/fervor/$${DESTDIR}/libfervor.a + +## IFC static library (depend on QMuParser, VMisc) +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/ifc/$${DESTDIR}/ -lifc + +#INCLUDEPATH += $$PWD/../../libs/ifc +#DEPENDPATH += $$PWD/../../libs/ifc + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/ifc/$${DESTDIR}/ifc.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/ifc/$${DESTDIR}/libifc.a + +##VMisc static library +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/vmisc/$${DESTDIR}/ -lvmisc + +#INCLUDEPATH += $$PWD/../../libs/vmisc +#DEPENDPATH += $$PWD/../../libs/vmisc + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vmisc/$${DESTDIR}/vmisc.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vmisc/$${DESTDIR}/libvmisc.a + +## VLayout static library (depend on VGeometry) +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/vlayout/$${DESTDIR}/ -lvlayout + +#INCLUDEPATH += $$PWD/../../libs/vlayout +#DEPENDPATH += $$PWD/../../libs/vlayout + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vlayout/$${DESTDIR}/vlayout.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vlayout/$${DESTDIR}/libvlayout.a + +## VGeometry static library (depend on ifc) +#unix|win32: LIBS += -L$$OUT_PWD/../../libs/vgeometry/$${DESTDIR}/ -lvgeometry + +#INCLUDEPATH += $$PWD/../../libs/vgeometry +#DEPENDPATH += $$PWD/../../libs/vgeometry + +#win32:!win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vgeometry/$${DESTDIR}/vgeometry.lib +#else:unix|win32-g++: PRE_TARGETDEPS += $$OUT_PWD/../../libs/vgeometry/$${DESTDIR}/libvgeometry.a + +## QMuParser library +#win32:CONFIG(release, debug|release): LIBS += -L$${OUT_PWD}/../../libs/qmuparser/$${DESTDIR} -lqmuparser2 +#else:win32:CONFIG(debug, debug|release): LIBS += -L$${OUT_PWD}/../../libs/qmuparser/$${DESTDIR} -lqmuparser2 +#else:unix: LIBS += -L$${OUT_PWD}/../../libs/qmuparser/$${DESTDIR} -lqmuparser + +#INCLUDEPATH += $${PWD}/../../libs/qmuparser +#DEPENDPATH += $${PWD}/../../libs/qmuparser + +## VPropertyExplorer library +#win32:CONFIG(release, debug|release): LIBS += -L$${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR} -lvpropertyexplorer +#else:win32:CONFIG(debug, debug|release): LIBS += -L$${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR} -lvpropertyexplorer +#else:unix: LIBS += -L$${OUT_PWD}/../../libs/vpropertyexplorer/$${DESTDIR} -lvpropertyexplorer + +#INCLUDEPATH += $${PWD}/../../libs/vpropertyexplorer +#DEPENDPATH += $${PWD}/../../libs/vpropertyexplorer + +contains(DEFINES, APPIMAGE) { + unix:!macx: LIBS += -licudata -licui18n -licuuc +} + +CONFIG(release, debug|release){ + noStripDebugSymbols { + # do nothing + } else { + !macx:!*msvc*{ + noDebugSymbols{ # For enable run qmake with CONFIG+=noDebugSymbols + win32:!*msvc*{ + # Strip debug symbols. + QMAKE_POST_LINK += objcopy --strip-debug bin/${TARGET} + } + + unix:!macx{ + # Strip after you link all libaries. + QMAKE_POST_LINK += objcopy --strip-debug ${TARGET} + } + } else { + win32:!*msvc*{ + # Strip debug symbols. + QMAKE_POST_LINK += objcopy --only-keep-debug bin/${TARGET} bin/${TARGET}.dbg && + QMAKE_POST_LINK += objcopy --strip-debug bin/${TARGET} && + QMAKE_POST_LINK += objcopy --add-gnu-debuglink="bin/${TARGET}.dbg" bin/${TARGET} + + QMAKE_DISTCLEAN += bin/${TARGET}.dbg + } + + unix:!macx{ + # Strip debug symbols. + QMAKE_POST_LINK += objcopy --only-keep-debug ${TARGET} ${TARGET}.dbg && + QMAKE_POST_LINK += objcopy --strip-debug ${TARGET} && + QMAKE_POST_LINK += objcopy --add-gnu-debuglink="${TARGET}.dbg" ${TARGET} + + QMAKE_DISTCLEAN += ${TARGET}.dbg + } + } + } + } +} + +CONFIG(release, debug|release){ + macx{ + # run macdeployqt to include all qt libraries in packet + QMAKE_POST_LINK += $$[QT_INSTALL_BINS]/macdeployqt $${OUT_PWD}/$${DESTDIR}/$${TARGET}.app + } +} diff --git a/src/app/puzzle/puzzlemainwindow.cpp b/src/app/puzzle/puzzlemainwindow.cpp new file mode 100644 index 000000000..2c0321e4c --- /dev/null +++ b/src/app/puzzle/puzzlemainwindow.cpp @@ -0,0 +1,41 @@ +/************************************************************************ + ** + ** @file puzzlemainwindow.cpp + ** @author Roman Telezhynskyi + ** @date 16 2, 2020 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2020 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#include "puzzlemainwindow.h" +#include "ui_puzzlemainwindow.h" + +PuzzleMainWindow::PuzzleMainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::PuzzleMainWindow) +{ + ui->setupUi(this); +} + +PuzzleMainWindow::~PuzzleMainWindow() +{ + delete ui; +} diff --git a/src/app/puzzle/puzzlemainwindow.h b/src/app/puzzle/puzzlemainwindow.h new file mode 100644 index 000000000..bf1943946 --- /dev/null +++ b/src/app/puzzle/puzzlemainwindow.h @@ -0,0 +1,50 @@ +/************************************************************************ + ** + ** @file puzzlemainwindow.h + ** @author Roman Telezhynskyi + ** @date 16 2, 2020 + ** + ** @brief + ** @copyright + ** This source code is part of the Valentina project, a pattern making + ** program, whose allow create and modeling patterns of clothing. + ** Copyright (C) 2020 Valentina project + ** All Rights Reserved. + ** + ** Valentina is free software: you can redistribute it and/or modify + ** it under the terms of the GNU General Public License as published by + ** the Free Software Foundation, either version 3 of the License, or + ** (at your option) any later version. + ** + ** Valentina is distributed in the hope that it will be useful, + ** but WITHOUT ANY WARRANTY; without even the implied warranty of + ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + ** GNU General Public License for more details. + ** + ** You should have received a copy of the GNU General Public License + ** along with Valentina. If not, see . + ** + *************************************************************************/ +#ifndef PUZZLEMAINWINDOW_H +#define PUZZLEMAINWINDOW_H + +#include + +namespace Ui { +class PuzzleMainWindow; +} + +class PuzzleMainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit PuzzleMainWindow(QWidget *parent = nullptr); + virtual ~PuzzleMainWindow(); + +private: + Q_DISABLE_COPY(PuzzleMainWindow) + Ui::PuzzleMainWindow *ui; +}; + +#endif // PUZZLEMAINWINDOW_H diff --git a/src/app/puzzle/puzzlemainwindow.ui b/src/app/puzzle/puzzlemainwindow.ui new file mode 100644 index 000000000..9de7e2667 --- /dev/null +++ b/src/app/puzzle/puzzlemainwindow.ui @@ -0,0 +1,24 @@ + + PuzzleMainWindow + + + + 0 + 0 + 400 + 300 + + + + PuzzleMainWindow + + + + + + + + + + + diff --git a/src/app/puzzle/share/resources/puzzle.rc b/src/app/puzzle/share/resources/puzzle.rc new file mode 100644 index 000000000..809de88e6 --- /dev/null +++ b/src/app/puzzle/share/resources/puzzle.rc @@ -0,0 +1,80 @@ +IDI_ICON1 ICON DISCARDABLE "puzzleicon/64x64/logo.ico" + +#include +#include "../../version.h" + +VS_VERSION_INFO VERSIONINFO +FILEVERSION VER_FILEVERSION +PRODUCTVERSION VER_PRODUCTVERSION + +// normally found in included by +// FILEFLAGS +#define VS_FF_NORMAL 0x00000000L // ok I made this one up +#ifndef VS_FF_DEBUG +#define VS_FF_DEBUG 0x00000001L +#endif +#ifndef VS_FF_PRERELEASE +#define VS_FF_PRERELEASE 0x00000002L +#endif +// FILEOS +#ifndef VOS_NT +#define VOS_NT 0x00040000L +#endif +#ifndef VOS__WINDOWS32 +#define VOS__WINDOWS32 0x00000004L +#endif +#ifndef VOS_NT_WINDOWS32 +#define VOS_NT_WINDOWS32 0x00040004L +#endif +// FILETYPE +#ifndef VFT_APP +#define VFT_APP 0x00000001L +#endif +#ifndef VFT_DLL +#define VFT_DLL 0x00000002L +#endif + +#ifdef V_PRERELEASE + +#ifdef V_NO_DEBUG + FILEFLAGS (VS_FF_PRERELEASE) +#else + FILEFLAGS (VS_FF_DEBUG|VS_FF_PRERELEASE) +#endif + +#else + +#ifdef V_NO_DEBUG + FILEFLAGS (VS_FF_NORMAL) +#else + FILEFLAGS (VS_FF_DEBUG|VS_FF_NORMAL) +#endif + +#endif + +FILEOS VOS_NT_WINDOWS32 +FILETYPE VFT_APP +FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "CompanyName", VER_COMPANYNAME_STR + VALUE "FileDescription", VER_FILEDESCRIPTION_STR + VALUE "FileVersion", VER_FILEVERSION_STR + VALUE "InternalName", VER_INTERNALNAME_STR + VALUE "LegalCopyright", VER_LEGALCOPYRIGHT_STR + VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR + VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR + VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR + VALUE "ProductName", VER_PRODUCTNAME_STR + VALUE "ProductVersion", VER_PRODUCTVERSION_STR + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0x04E4 //U.S. English + END +END diff --git a/src/app/puzzle/share/resources/puzzleicon.qrc b/src/app/puzzle/share/resources/puzzleicon.qrc new file mode 100644 index 000000000..871f678c4 --- /dev/null +++ b/src/app/puzzle/share/resources/puzzleicon.qrc @@ -0,0 +1,5 @@ + + + puzzleicon/64x64/logo.png + + diff --git a/src/app/puzzle/share/resources/puzzleicon/64x64/logo.ico b/src/app/puzzle/share/resources/puzzleicon/64x64/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..a98015678987ba65896d47a8b929fc9178de2451 GIT binary patch literal 16958 zcmeI1?@t?b9LEp;f-M^+qc=nE&g*T`Hgz~3sf`boY(DadQ%n|rKG2NNHf9NCBGEyX z_+*hdBbbc@`op#?84$Ne!dSB26*H%yA+9YAn5F2tfe$yz{ z*)6Pxp40DlHexRvhX$*AqC++F2RPB;H>EdtOa`^a{ZFsGbQJ4iYX9>q)E0j37c2AN z1@NbKtwB}iUy0we>=<U=!t>vC_*tJTXmUFO?0BAOV_lQtH=+3UUm7|JMDhv_!0i`34HJA&(V?ZVdi zz4q=-)tNkxKbNc7bMuU+0?J0MGKle@w;u0AaJLH}QIagQ~-R$$Zbx@o99e(yK$tQ1@V$buhG~N5#25%2-UiSqpYLnkN@_ZZC_}EVT zq>x%P2#;B(pRHB?E3OfCU~8Pe+0xp?r@Ej)x|9YaFU}B>)ZiE~eYN!-@@II%sTPJm z)k22{l)^%X|3EE}DX}Mr*e|asexKs6ly}-)d=-4XAK}|B;C%tGrxf{xWX8ZJ|J?4o zg)x%<>rC8Dor!sA-!}0LK}gSld!__C>Ki_7rui=t!RD8@xrZ<2q5F%;${PV&LXq#k z{cf}G|F7#q$-##ndJxYj6@`}$q5o&WzF3lfy~YWTLdSQD?vcB1#sB}%l0WLE?^&5? zn}y<6cIFpuBllPIto_*?_%o;-d!im@U_bH4y>vS6WxB1@uP&SiFDq$) zKJosy?d^?VkL)M@brv^0Kj$^RVx|T3!$K4qWD7dL8KOxl?VGU}$raDBG=`BQ1s z#c@L@$>&16r09QnPmDu@sF(Tt9lPf+=J`i0RQM{`FWV@gb$=y&;NgD!+Dv`uYCTe=YQ)wuJp4$|I0h> zF1iZ)_5yr5p;nL~u@Cit90}FJLoXD8=>xg~x&pcax&pcab*_L^;VYZd?MwZAT?ox} Is4$JvzghJNOaK4? literal 0 HcmV?d00001 diff --git a/src/app/puzzle/share/resources/puzzleicon/64x64/logo.png b/src/app/puzzle/share/resources/puzzleicon/64x64/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ea9aa050ea8f934743af8140e45da696fc11c335 GIT binary patch literal 1504 zcmV<61t0o}P)sZ-J?FeL0~IP%s8FH8A&c@ge!qHP8#tSodJJ!mX5*Yx4ixAOyO0<=#;GihMjjUY8nzDXGQlf0&uRS<;CcftpNlnMt&3Q zE!0)8*HJ~~vjT&>j2xF3Ng11Qz=?g16cN)Rygt|LJqoYd85DeYAI;xh@Xdyn&+13C z1GPCLG+76)iHC)jOn3H`-W}-3H5LjOFn-7NotAoK)_zrc=f7XK^a`wNa^+o_0P3zA z)qZ2c(wTEj7;s>p5Z$wQ&SZl5wT~%k*9<*#z93?vb9`DQcF7ERb=IV*(0iWf&^bEK zYb^A!nXKr+2R_-=Q{8OqeD)PIaw0Ks*JlGybyk;3?kkRJWdjzC1>(p@ozd;M?{`9` z6_}Z8a8Wrx*_gFd@Zb?0`#I~HP`;U_*d(ZnC9kFM6}N59PZL^gm9*@YkKzoF#yt7s zh$e{*dHVdK5T0)Sz3zT+p{=ZB6t@Im_|iQM&vp2SNx%wl$9`@5vcL7{gss|H?M%O|#7^-`pJ`X_^y9Fdi#*scZEuK8oYn-Barc7`*05piCfs%7y5u~;VSYn$^B)q-_X-r3wV`NJJA zAmyuL95hO5fJ}DbtPkFciY<VyaTO|5s8FFoiTM)-Rq%NhL>@>00000