From fd7e47f60b2ceb77f2493834e3f76fcf2eb48df8 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 27 Oct 2020 13:31:26 +0200 Subject: [PATCH 1/3] - updated the Turkuish translation strings (by Mehmet Kaya) --- CHANGELOG.md | 1 + locale/tr/LC_MESSAGES/strings.mo | Bin 395659 -> 396577 bytes locale/tr/LC_MESSAGES/strings.po | 584 +++++++++++++++---------------- 3 files changed, 288 insertions(+), 297 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3dc9781..33b65b12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ CHANGELOG for FlatCAM beta - created custom classes derived from TextEdit and from LineEdit where I overloaded the context menu and I made all the other classes that were inheriting from them to inherit from those new classes - minor fix in ToolsDB2UI +- updated the Turkuish translation strings (by Mehmet Kaya) 26.10.2020 diff --git a/locale/tr/LC_MESSAGES/strings.mo b/locale/tr/LC_MESSAGES/strings.mo index 61a68278f0b5335fbc26f29cb6174e7946b91e5f..6434a2db145aea85b681d73be140ebfd0cb27ba9 100644 GIT binary patch delta 73391 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¥aw&s9zZiEuAc>ROAzvY}-cJ3jK!Tyf(?6$P#1U716Jl7;A-}5n)!g3W=m4 za74ytqT7J6iS$qTP%MDqvM^c3WefLPfD`8AGUJJ9S0jm3EcpwJyC7SD{dk-|gDL1Q zrna+{I)}~+Nv8Fi)471O2kO-X< zwzokzOUQV763h;(W7EX~En-E!QO96Y3ZJn^BAF$4Qv2TqC(kiFf|D*5WGe=tr6FT} ztVneP8*t!b`9e!A#%^FYFO2>Q`e93AY$FlWXTI;z?tz`kZ+i1m1E(rQFq};?t1Q4< zltPdvB-`D#3XUTG)MhN6&F}-kzgq%X2=X~h0z=F$JU*A2&I9bf3N^VUA|LB%`))APTm*@O;wIX= zP&!PInpz1I)>&eMk$q(B2u?%GK9W6%&2z>Ipr0H+D)W%fw&X&PtF)xwn|1~3=Rl{Z z-n={|$OoL{V|Hh7{)o&Ik#PYFJb->~0x!owY;PZD-{WOWb{Hy2PUkt-bdCsXuK!Orsh}!9Z{Z#QF&zgoqa51*U%k~ z-eB6L;8&caLskNvs|5Uqg#KjgBUPmbc4bNM7vw?sD~*04lA6QVIudS$EU-F*2P5dU zfb)~(80fr0XQw6q!4~0PVtm8bAH+*S{ohgtyJQFlQlH!SU2HcC%vLYKufIF;2RgCJQTaIKqAXiyI?Qh9% zH(5P&k1~;>BpQkK|CZRq_zOQ%buUQI?1FJzCCt*vpbtt{ke^h=@lR?7Du63xW0`&xnt9VODDy6Hpll$07e6y}tBQ;;SN)8m09gM)qIeCLH}{GpQOT>vt$$ zC0HAb?`o;(|6tXA(ofFSxf-gJKvs$%na~|cBHIZ14c&jRQE7+oIQR{MH?dhy+xH8z ztb^fiC>O@Cy*Z0bzb^8tC{;vuh_My)W6=L zNMszrPnyj+=Xb*l44{6%APP&Zat)<(^mpO#JxIc2GoNZ^q<%Es7!9G_<< zYb{wRHfPz7(Z5M8hCh{Uw6CCl9pCNEe{%fK#P%@(7Qo7SApJn7vfq@{j*sji3KKWWtWGlIh2SFkD!zlZ zT=@{zMfnHL+J+9oevC&$ex0iFgoGoKXkql4+o}vkR$We!4@JKZ^42!?z$n`Sv~QwU z(R@t~{cMN^|3sJ*N1K@KRB98HN6`P@QW<$tg2X4-Dr#>MQHcnbkZ?D62D?lI3R_a5 ztI~q;B=~oWbN_Rj=`cuO%PdJ*>K;oV0>(iY)}y}AKvbXf3zz1wY2ijvz-;b>b zL4KJ;>shdc_*lfI}qo^N$irXZb|$$rN2_24J=6` z97ZaCqwo{M_BPw-I4W=1wjszXSIu+YWZ#gLMz#;TwlD?#QK9-I6iDDzj77I(ensbB ze0PD{orKx{mn5K)jg|NngI`e?gVA*QwMeY0JM3wU=uBh9N}{LoD-IhG zC@bx)wD*xrN_<_!=179ECTLMaM@GbjG5qa@|;u_@1Y9 z0&!T{PH_X;2MC^=Sw*3ix8+)mgONB7k7F;KhfXhS3$Y5rv7Lxrpv~S5!`2YEB6fwL zN(GB?6}>{}U-B=_`v|hkgp?z%$XN#7>ZGyUV?UJQuo8UIB zdbMdC@_d=!^e7Rk)-F@iQ>Ip_kY6_YW%u_-J7oDbzleTO{vX{HzxnkD=hrGEPKaNw zSs^8=hMOG6uWQJ;mf=c<52#+ERGE;d9m9>w^yt;0P0wt#yLJtpl_9l%x`_3<_UP2J zTZ>k0LdvK1-ySbq>#iYR3i{_x9grhe!CWCZoB3aC7peA;E;sx{1*mBDbc^j(JjF(T6PHT&?98;7yopD5&yHDu{j`K zoLX&;tYR>zT5#tU{abViZh^iAwm%FAjPZXL=Shr!mI43QG^9}6fP#K0{(r_nWqNh$ z&?UIdu|>TI*(+Yahj9L7dbSGbkTBrbjwlUUbUV6*p`%-RcxIKj7!W&zf9}SMcyx1c zn;sp4N(6@_dlE1&qPLc_s5@T=oXO#>e z-tX_e&inrJIp@sG$?Ke%UH0)^y(HDNd8z!{Ny8R+{9n!lo|hH}boIQYNj&e&C6#(! z(a%G?3|I_@V^d6rS1>jHjhQfE>JTpr=EpqP#N{VpLh_q2HhzzZ@HjT|Jm0%QB8q}s zX+pdZY=I-N6{^9T_zyNtYt~E`;teKWK7EKc3io3|9xR?A#7j)RYPi+Y%-I6tQQiu5 zy&J~I;aG_Fy~*x|gP4p9r%@fbjj8Z1YD8~Q9nBtL*P9>{bfts;Vm=9NA ze!PGMF_1CD%Z)`bE$w@qNNDQDVF%pkOqj{0wm-I`{0mHv?@%56JhNTTjhdmlcmgYD z3GvEf!mJ@)POOK@kHRW=6iZ{gY$2ZCgG4nFwQ(=j#aP)xyb9P9tKtf*gO9NR7RwRh z1#l*62Iit-VJ&Lphp;-{!5Ek`((ccPn)*Um1j|K+_`wH;Q4o`YCAc3~Bk}09%xMpH z$I;|_V=Vj&pn@+Seuib-^@gbWTj%nvM?EP}g~Lz{OmH{M zKt=6RcYQ4?n6{#VX+Nr>Gw%8g)CeD(HbnixW;2|o=o})$_C}1N_go^5LRCzsA@V3G?I3Dxh$bweSH>i5{pqAt`mc$#F zOZz`%p%AYY1r@Lc&O;qUcQGY?KuuNh!Zrh$Fgf{BE?*xzk?)B)@iG=buZYcHLDUS5 zLe1bQR4hEe*xLVZNN6oXirUmAMP|#JgF`4kQp|#{cyWu7{mv84i>NjK1=Z0fm=ym- z%~0GD_FM{FLp}mE!^bg=_WyYjTGKx;H4VRW`Q)W6`ZJ>*$nMOKnxT>yj!jY9ZWwBW zOHfn33)PX6sNlYdy6-pCwv1Vt{jWrP5;CbXl{39Fvoq3}*IC$E618i}xqLNe9cLqF z3uilLm(uKiHQdV;3~&x}j&@FTPIu0AE^@ALu62Ix+=gkWe-A3!FQI1W32KG{(d_?$ zBvM9)cr9=SDu{l^NK8@2EQ{)B4=jrPa5`?nDOj{@h&LXO;ux%4F2tLPr?4V6C~q!7 z#oAreZg}C7$V4Kff|&&sL{(8i)fm;&4%iTfxa;RoG4qSd|AE=azs0f`Q8C18i|tVz zK8`B?h>E2$l|sC%=vO15;OL9$(Fjz-(^1=Gu`Az#3Z{do5nM#Q)$XIVY4XbUF363k z$Va1Qtcfdcg&Ig7RL937_4(dBcVQjo;lg)z!Fz(a$^VD?;E1eZFO4cVhx}+%hm%&d z8Ow;u=S4M8#+BE0`Ie}cRu3$WeK4c;|0WUzC^(0jqR?tqK?T$d)OYzVElWvCHiPBV`WDnoeTVAM$vW(R_2`N#xQFW5 zpDzCqwLRn2wOEKkRZsyn@_MKdH*&Uic0moOFSf$rsE*t~wRaCSL(hD7;cryK?@$%S zt!MdUsC*`u&xP84B~fp|ny3ofV^-{q>fl0DY^+7qyA#XfG1T+1>f3XEDiRSCWJdM4 z5^A5d+R;``$rU za2B<;w_N@)D#+g8bo3h8$Y!8AycBcb0nC7pFdSnwwtRMH6;#7rP%}9g)uGYB>+HV; zBos8eF%-W;b>skQMoyx((Ir%H{*GVbf7lyWHVN@sW1^-Z-el~J^YIN1!5Pi$XpY(3 zraTX7W{P7f+V`rHP(vM1Q{T(oFh)0!pNsnL--KE4G%A?>a^?S`4x$t-tmFBx3i*RZf(_pt~jYRUdDL83B=j5rSUz&Z@a>!_pm9qIr{)yjgb6e`~Vv*Q%h3AzI# z@i$a3CTVRWEsC1Cs;G`P$1>QiHTz#{v&LQ6fg15X)LLCa?bDlBA0MNly<{7^uL^b| z-xjqbCtbdK+YqlZ`Ab+EQ@0E8dSW-!4E~H-x{vMr5U)RpUhOSN?qfCbFR&_>>|pzJ zB3>as9lynP9YehCn5L6O|0HZmK3``lW*bbyv*h1*3GrUxsjea3I6T;m&vdSr>mK6$ zkNj4joc87Lp5`HB_PjtZo2quyrWxppnvp@M8S_!GG7}Zet6hE%>RoXPwaso}@Ss7} z^Ec`_uaCuwpNxbG(xdi!K2)?-ngocOR+)M_fK^ zn2jhtDyX7RQ&|YrU=7qhZ;CoWyQAtKgsN{W7Q?Bi82Vut`(G8Dqd>v*5cQjh*Qf^y z4Y!I)q4HH+z7DFv<}Tj_wF~;AVrDXG##W(%dME0HJmvfq^_KiJoc*7lM1m3aKp9j; z^-&FUL3L~(Y9td;K{^-1aUB-LA5p>SjkNnSqV6w%YAD*3*F@Fd3Kfj~eG=-~Z09D- zNB#urXnupmvEV2>Vtb?RUxQlvgQ&H=ftvC=s0M#`zClfOOa`j+BQfgw=cobt*<3+E zY)nBpcVP)?Y1X4gd=T|6xP;ojf4O{$(UvcWy50;`@etG!OhC=VBJ6={Q8SffOfcqr zuK)>chnmi+m8$JCgMFDhF!*6EImMVEaL=w ziSmlDdEj_K&FTo^K}mzYU4%B=nW~4c5kZvuwLH#}?$< zqoVvUYE9pwIuL)hHBcS3ONL=2PD91W9*lv%px*oUQ9=5|7vm`3`$~)`0@|MmH&hDt0>Nkfd)|8B;K-*$BR>5N!9N}E6u)4De zDw;dGd|y;YN1>jdfI2bfVF0gUY`lS*i3g})e}WA#t3S^w7>=5nv8bNSKpmyaQ4MZI zZNvT856|NmEH~f2<$gd78g*cF zL5-jvR>DE3=stit!7e+Wpbnsqs15|au-GZ=EREVFl`sMuq6RV;bLjm)jYL@rc4G$o z7jb@hW=Psh|zm4&<|DTgk zkKSWeOtjddw=kwB-vXQBaMW(Nf)z0T68l~lj5?w>pgQmX^%nhv8c^n?_S&w1+Kyc? z8-9U>Y2Q0ULR0kG8Dp94=g&~(QK&DX(x?g=yXzC3t5N&;dsL8JMUC_qEQL={Gn{R? z4X7(>CMTocpTs;8dLY&cdtH8pnzBgLjm1$@S`if!bx|?X5EVqNuo(75bz~DR#N!x_ zEmqo0jYOTGTTlZzvy%OrvZw8|uU3C@KhlMlIoQuKW|~LnXPt&OR!0V=f9>qNZjl=Er@g;ChNW zg0ro+scwTs$S*-%zl1t?5^S*h>R=T4Db9VUFQ_M|Ab)}Cu%Bw9t#yPmA1aE=qV{!5 zR8X};?S?My`Xtm8u0cinVPrph4^dH{=xZBc6lyzHMx7g7F&sykzPFNuDmsjsqFbmb zevN7{&L)eA?5HV=M!jAeVkNKWeEi zqUw2odg;7D)gNbP@L#{Z6g~+BTTj%8rl3Z=0CVD3xCk#|3GBAZqJ146BYzSVE7Nz| zu9=T&U_B1OU8p6@y~kpqD5`@sP&4AUBcZ7n>IxR2M!FR>BbQMfyNMdXBh(bWK?POv zy;f0X)O{tKm7VobOW7K=8@ixoY7o*f-<$1jSZW2{TIW_&PrpOW$OY7t-*x#nsHKVh ztzFNA>Re+2ngKu0u_C7mGGdk;GMXry< z4tNr)V(#zU_W(wc-+-FIpHTJPKsEe3R=|+`%%t{zB@$uS9yNtsP{A_*YqL)#q8_~Z zeTdf#pP_=b$^i?;E~q73fJJc^ssqp5^;8G#gQg;?L)}p`)en93Y#a$W54E4ypn_(z zEB_WX)hAIi^#E1D3zrW)WF1e8iixzS=X0X&D~x)+GV1wur~&pl#Qs-eECqUCK5ETZ zVqV;h8p&^12$LMP?Nr&>!r9k35%v61RKwd*F>@5v@D0?v<*~c|{;+Qs;vcaOjnt?a zNROJ4?5LMZQGAEZ@EkTgYEhl}n2k6$YKcmsj@UhiL zbDX!CXo}&K4?%77#TZ}v|0@zYB6pxF*pIdG53GeHF4)pcMJ>q@RB&EEopg6m_dP@H zqLLS_p~|SG>VgW+5vW}-54B5Hqpu40x*JZQ*60?7;Y(Bl|DqlYyJS(F6m`7>s=+eO z>Zonk$mKhu2G$St{BTsqr=Ws;@g=wa*SLb+s0t6EdUzVu&|OqV9%6ZXi6yb{Pqusd zV>tO?s9;@+ilsfM7`o}o-@5!~m+dP!|7G^Sj?$(S=%5&i3Z6Nr^5gEthp2-n{uNuh zBB+C;Jod##E`Jg=qc>4A`8%rPpHOQa|Ek4KD%3}81D}MZW-w~R6Hsfl)a7@eUbiPv zBYB9Ly1+GSC;_UWv@V|yb-j$sS98~!x_mFxKu0?L1@4B;&ZC%%8?K?YQ`pZo#qlu@ z`D7T5(upl0+FY9=yV57z5@IZ3FY{HP1Xu_ji+VK^T( zg^6xhgK3=+sQa^`W+p$XBXuwYo1>z?B`PNRqVAiHIw`-#MB4x7NK~faHmZkNZ`uu& zPz`rOP1#`7+Rj2Xv;q~~8&Ofc19g-iMJ?$m)WLHN^@$hz7ppHb>Uus*NBdqh302S% zRbfx(Ak-B5*aOF78GM22SpHi!bJ3{Ssf_AqOVss&s8||{>iA-8$kc4WBIG~bX8-Gh zq3|7B+uo=LSD;?Yn=lm~z-D+Avtz!y_B)|w_$&FW^Bp52&?D@~h>eFbnzesI}~h3dZrSd?)ItzK(kCZ`6z= zd1%3$4YlSCoI@}`e%V9c)^ZgEn)*$ssoI5F<723`I_Iwcg89imboo@jSwj)1B`ktk zg373qu(d1igX+*|SH2LnZP)uG+LQPmHMQZ7Y$R1N8~OGafzwb^wizqob*zHnkL?!` zT~YTfbsj)1$sJU^VNWcd8x`dBP&4WGa|JV;n=vaF&Z17JS1zCOcgvSXMR{8czFeFm zP%||fHPRI>zY7&ZM^Q6-6SZxBN1pe+*Ou_&{$UlQM{S#2s3>iT3cdxX2LD1;6!z5e z$(-3xM{)^N@YX_&unlUehohEcHfo7hV|MNTeI&vuxbH3mp4n8T!E%(Bartprf&2#4 zls>~;nBq?huJWh`JEMYYEUMv&sF_)cTEdN(1FxuD`~MRO1zUpWW-8RS%!HbO7N~~i zqegzjc>(of_#F(xhZvk%RD-WkGZyxj%}grP_Ri_@MbX#VR3{-jpdJ{BYG@9sqE)Dd zwxBB5h3fDT)Rdob-a*y#615%Uy|9_cf;xzDpz14ws;AZq_P;7>?g~1gf~!AjB*Rca zI1!_8Bj(2ISPEmkw7-h0h;7L)McwxSRZs4}ZDtChX0({IAL?bb>2LPG61yo-4-cUl zzKW{gKE}o;r~~LFR>M@UEH>I>g%JK7(D}zd_Hmi_Uwa94$58I?>Fk4As{W{UhxjDa zz*y82Ps6P^2b*KrH%uuFEXNkO=Pl)!?0tyW8GHX{|B!I)Lx^{X`*VG?-w!^;4&<|b zvOjQ~hN@TH*^S##LFji52@U=JMXmWV)C_M#?)SajBvjEQRM6c*-S`w|;algFKxlBLJ`b~sGoqHP zI4Y>>qJpTL(N1q_QkrGTl@bQ2^|Uwol>@>j)*cR2m7*vDvP}_4gYDspX>OYTa?~I@DC>a{2NYNxmMc;*nSl7h!sW@&T#?q47h#*_ar+;%ZbZ#Y+%MAo9<9 z2}1o~Pd=kSYnIBH-B}bBR8>$7bwnL7qfs4Sj2h88=MGd197K)$5^BaCqJr@?>R?Kk zFf{lN7TFW}p}~*Ob`+>b-B2U%ff~UmRM1R!*XN-2^E}jyEkrHBDwp4g>d;Q-Ayjbx z54A*BQ8Vz`UH{;d(8%H>vKup_ZivEgER33&#;C94&Zr-&d!vGHCaQz;QM+d`>crgO zuKy2J-$m3+{EV8JCob>*M?xb`kk~5Bfa-A;)O$QH=EX{=3I?MZoQ(N!2CCshSQyWt zf;vW$(BRu{0!EPEj#|o}P)qR_(vI)NP8u3~%OykgtU8v)R+t%=JCCA*^AT#s{=-a| zGFfQwo38}wh;E7+fbX1&>i7cGQmsQR-Bz^sKMAe%eN+tmg_`P@s2ks5ZVdY@H26uD zA2p@TP;1>5gJ(QyTlK;0H~_U2%P|TMquTikHL#Bu{QLh*$*sa@)HbW+Y>9ecfV(~x zdyt=kk@y<56cH(GWLZ%ijzTR-G0cfoFjx;}B|jFm1RK%MLE;FBq4)<5!;UFKgTFk! zi^s_~O=VM>;d2{dBx))0pkk*yYQ`F3Wo(J%@hcpFPf#6bmD&c{!`VMI`(GD^QJ|@u zj9R<-&XuT&zecU$4(BmctXy_JLY)WioUzh`27f>B8R}Oxb#V{Qz#p(e+R)&i=f_FM z{@3=JpUxUyi(132sHxnE>c9c#an#7qqISo9R4~3l1!J=GwmpkD8#xD}1~4BrV_%`3 z+v}51FkM2;#C6n29-$g~g?cbf2AiSOs2?V?Vlga-iiHu_2iK!wB2~C;=X9tqpG;T? zTVN5Ki;5BdGzlG<*Rdx)Lsif`!e*oms$<=qLs8pk5~`!KUHNiUg_}?_`W>p?)2Nxe zjot7uYN_jI4C;HWN$7^|sI?!6YH+m6&qS^DVpId)ptk9LR7Ve>mh7mzegf6OE2x>f zjg9a*X2VLEEJ%A{@b7>2kjTu1^Qi6d3U!dA$!sTASyXv@)IOeyHSjysK97~fPQJXT z4s}MYaSzmqHwtxBFGY21HLAX^v5Ah#izGT?WL6u=Y*YpFo$H+6qNe;bDk!hH{2k|0 z)C|6L`LJv@V@aIhsHKTQ4LBNufB)Bkgbsv0s5P66s%RN%%GaX~l0B#q+(&if56p*e zP(OA@X185Y1yx@w)X6vqYvNE;@cxMUe1DLg{jak=B8Q!PZBWrU7k()^6#DbbK7?7ip9CU5_PoSKn>^xYKhbMd2A%Pu^-s7~T7 z>L99^*Jh#y)+OH$wdOyd8aj*m0C|S0IDWoRuQO&rZLb;5-KZG3h3e4nsD1wrD*8k6 z2baqCvXjsVyJI99dl81?u>$tF{cAxRamqq=#AZXyRCSER(Wvua6RM+|Q3KiIt{*^k zUPMCoj z;TqHuoOb26u@(7OuDpIxu515yCZRPMj#~SfsI^_?@;6cY{TXWN|3L-kXT>b2@}ovv z6?KxA+IS14@ zqfiyiLRGxf<#)R4hfo8!fNIE#wy6IcwX~U0u~7uIBsE=mBi~)xxJHb9NM4d%kms1s~H=EIe!slSLd@E$5i^Hj3u>Y_T{1l55ysNme;uJ3i% z4`T55eW((6dZ+X*;_)x|YIpsF3f5mx&p*c) z+W+rKXo^Fc+Yy-zbz?2mgKbe$*bNmtV^F(eI%=OUL+y^Wu6#FYsg9%0l^dw~U!hLG zm@RBTsWG_!3y@HQWicBzKvg&bbq>tHa9oBO@c~rFPCI|X`s9B>%|PCk_FQq){Z&yT zZiMPsJJf+S82#)dmXL_RW2lZiMD_R$s)D$!tiqJetf-L}LUp7Rs)0(V=&pwfu70Qi z%tp=NN>u%OP}}!ZEB3!`xaMy74b{UBsHscZ+VZ(D2l=w7DeR7V&POfDOjHLJJHJA8 za64)y_o1FU?Y!;EU$*wGflaWRy@i^om#B_}wKWr= z%2T6`@LWiYdIeA&ErcbotnUg&qIx(5_26=>hFeh&zC(7W_aAEedF`y?n5ZdDfSTfP z)BuX0g0uoECK{j`ZiQK~8|p3U&mp0TPoqX~4mI-Ys0W^-DtPaV(cY#s5$gVM)LQ05 zjkFlH$1mGpb|1I$vOZ?f;J?G}3$>Y^q0~dVUI3!FAM$b{|#2M^r=cI$Ay{ zYDO}kI+O+TVqVmJZC!a6)bssO^^Xq9{+~@kyI_^Oa0<0H*HH&h@=g{^sZqg{5q0Di zz^2$2)!_e74gQC@G0@qTG9M}!%cGvJj_ODYOilYL zID+~{yo6fw-%(2y(#8H^ApsU4?_)Ub#R&WvwQJsCCXCaS{jaIZO+pqx^|TnO!m_B2 z)I{~T0ji^IQTKO3b*Klbqa#tVG#S<5>8^Yks^Rs{J*fJQcV+)8x-U_n3NNFg`35TJ zo}oJMFRH?iE}yWQl_y7?WNBSK8ufOoBjz7kH2>p4x{$< zHRn^*+J^K6dlA$UR7A~KOVokY(dnZGuoyKnYf$%ZK?U^*R8XJSjo~EzK=mws z51Z0VsF^5;nySjE8EAkSQ3q6oLr@)>?aEhR1@b#k&;5&fdxrJ2d^*fZJ`(ewUzbFG z5~HyOzQP<>wwFE79o6s`)IywinWE)Uxy9IUM0q0p%M{l7z@&YvzA5k+Fr*}~P z{*y!&3O+}@G@?;oI4w~@I099{WaPl`7GN1X>B{5uu@RJsLUqUOR zzAL^#)&B(J>ir+PpG{#hX9Q~PqENwC%;n3VMp_Lug-uZ%8;u(I4Ah91yYlV0g8V`3 zfGzu53>`()^P|-Mze++4Jw#Rb6g5?EF}QXE?7&Hf+Sko78s|BG!ph{64Yc2gG{>6c zCt?}Aj0(2ogY00-hdS_jqOV|CNJ87_CKkhwm=lW*=B>y6?0}ufuNz{&*H19iVx=zD zp?n2a!{=BDix0E>7z`(W2CLvRtcZn&+n3ge;p~5nXfFkN8$Czu%j_d;A6LWRw!$dN zebmxyMNRoW=PBoPOiYKL;8J`y(t>s&+gu0NO4JOmMLoaWC!t_Cf?9&Rs1xlG>I{E_ zYB1|)Tavt}H7=>b||$2M?oSE#Gw7)&4I^ zLJe0$MQI&Wg$;2$_Quip%3U8g!=`kYb26%f3sDtsbZ$ch<6cxpE~7^N5_NybO!mJ< z_!$XZ$bq_06jfdwbp*FTy=;0o$GhvxoZGQ9*H54Z5@S|q@V}~+7?q!h`mmXUih=d0 znAkgu{jcqHoB{>UdDK!|L2a}9sHuDHu75(!P>k7D9v9W|WX_DJ=ks9%mPXA$8&t54 z#9TNFBk}v$|G(cU&{6xw-I!#Kbtn@CXU16+HImAx8ET0eupd?n<+osS?S$(zKh*nz z@^4TBsIb76rY36S4V>+K5}M*Zs3{(S+70tjXZ$kMTk99p$Ua|aWMosy*&ePbK{4XwFaCPuL->XDIQQN=@ zyyh<76}5(aP$Qpo(dK%et>agZJIXL6m3OWFuID8Oa~Q zXuR*t_>KKis~zekb{=PA?9HLxZCs2yaL5++|2TS-b8Beue~-U)n@v&JcKcB(BeEg9 z`Pc#T?qWCKf<5*Z5*7B@UrrprVN_V;JKKgkQ16P{SPE0^x7cZfF=%fAwx)ck|Gkau zJ+`Evp-4k_Nmqd zRnKmmhpB(C4*6S1ehVsS?^)jWlAp4V$SRnb3yZM?9z<=ocUTaMoi=;n7v$HV_H~K> z*}>8d*OC7YZ(-Xr_7xm`);?NiU{Yr0A~xjuujlyZckTb;=j|k$hqbuy9CcEazMva8 zGI55=aTboeXiJvhl69~awxWCn>R@_`IuBz1WJhoW)*)X5Ro`;#hp({@?R#A>+f?1a zKgb8J*tgtsR8LD>wO^sk!KLI+VoyfW;hKF=T>3fGTT6NQ>-JYIk1;3t{x|p*Eqd*cagi-mu)p8*%)dh)#=+24Ssd>rcCCBF)@;Fu?VXz)KCv;K*# zd6wTTxJIIaG5H^Mz!XPytR;TNR4zbm&##|a5I)0fQ`o2r{9HyMmh_t;4WN+AMh(&@sCwp;kDTxYf}Ctmc_rYJm&w`&V@m! zU%{+J?e{~d-S86iZix5B>Pe2gRei4li7+nIMD5RdScrVbx7N^7RIoikHI(X|{pi&K zb&`!l?TRGtZ3#A`j@&D#?Uw96JKB4oX7C8s!ite$zcEUR&rlV4A%Wm|Q6Ckgn@}@w6_el#)Cn614FvxXsUYh0Jq@#J|F2R4 zf5d1S`V%W+p0I#d2nWRA0sJ~DpT zUH$^9Be63Dg4;J53;-ktxclk)vgGI0l zR>efP12f}M%#Dvw!JIscMR`foNb6!2Y>v8b3=&(ux0OT`1-DUClrXD3kPOvhoA?~cduXAJ)D|5juV1YaIoP!Fch z5eU8$vZLOP>rf*0}4)}bn>{oV-G(Y}}#hhYSMf#J9hbq?G>4J=+xI;{Pl zmPCFWgj#})mNHm6{!9hg|7y5r!GIUQ5vVB~jhcxm&iT%js1AIM>cB4NVOM?z z_54+rzk?dk6V&~$QT2uvvH>P2#QxV>C8I!5oEMdE=<@ws{tHwL>_Tx^ruEO7=`LUan${lFebM2NvPrusGbkPOsH}_xCXV4w_qPUg4Hp95!)@J zP(L?}Lj~bI)cNrrro^O0Ew&<2^|nOqmND2F{Tn1|ktkQpF3dq)_#N|Mz2f#(8;?3@ zwjxXH{f3%}$Ec3KM8(W|XGjT)@>oa+c&Sh$PlK9?{C1tc|0JPku8rz>U)0o2!W_5| zyWn9wk2y-(OXn>%B44_cbz}jmV=GbT$!b*8Uqp56Ix0x-pk^jPX?2ACmxY8zk`MJj z3Dg7SQ9r3vMXl{fY>acT0zN@ClqcFc+zR!4Pt>j$h&s^5q4xV^)RHbn&A?g={{C;9 zD>#5cGk3GpJsA@Ai+&QKy`(INsi2{viE_TI>I0#Er3k1Jjcc41*92cWs z-8%ev4Msq|7S6|WSP$FRH22_C@^NYff}i2@@dxtRYTF69U9y232S08lN$BCPz_b@SS*8wQM)Uo zsl}3?n1rG+6>2FmqYj)XRMeJ3MSp!)-Wjz`hoLH(joKwEQQP$=R8W3E1?wkNP{wLz zYoFMe!t}kgBy?j&OoWln;;4$Mx$8Ah6*WL@&z8>i&aS9>dZUik!Kio2D9n#zQT6Xe z)q5O+|Ni$Q361oUyWs)qrSUhaL9e-uEDq|ND1e%=Qm8MTs;KSO$GO;f6xGo`Q1`#U ziueIlZ}}ElW+V^2CZR(1lE|f(zPz_aKO^i>^>Z2-Z)5;E{URa;}20YL8|1cx@ zGi_|&KgUAkhqMg@fAP2lqjVj$EBgJIPjJd-5-_DK_e7^=!k|0Lbb_Kj`l_kY%~V{|9?z%1oA-f_M&?Hv-1IJzyFDv!oN`?OfV$i zwZRmq?Kc?1aS3Y5_hU9ZkM;0hoQliW10$Kza#m=y^Ad%`Z9P5WNC+4gz; z6ILTXZjN~lwSPaKYr7#gmeBpEj*dbt&0^GAe}&pTJ8=>ocjYzbS&TGC-QNw1;vn?3 z4Yrc#i2tHK7F*7@A4Ha-PO4j|uh~bapozc0J|xmP^P)Ob9@RiAR7bj@PQDSSm)U&O zeLrGSyuX0`uc-cq0!4Z9h4x@t)B%zQH3QX96}58ZgRltsxv1@V8a1L{Q72%!FYJfa zGWZSo!KivNFS1}S>TI-#{jZS?pg?QA7}cR~F@Qf~Vf+QtVzR|{^5sR%TnE&QeB(TT zI-<{^X5c4`%{G0As{hX=HbV)P27>=t?$3P^#ksHnwe}BCYnf-6o$V!2+p!{sV++(# zJQ6j9OHuEDEw~c*qGqJ=atp$~sE!OqodZ))Gr0-r7ytVo68h!xanzLGSYb!!Ys^MI z!%CZx%BXy2)B!ciJ-{Ew)ZJBPvl{%4%E zHsznAIueOBu(&IqgjvZiLha*2sQX@`qB`^|n}G;agC#H~F;xxqHm$qPf_EM6A^#&P z_(rW~|7*%eueYEXkKyDOqM~#!s-g3!n7D(Ag}+cU5_5xHPlB3>2%L+NsQV9~4zzQa z6XS2Ruj`_ylXT!l-#)LmQ=lpN0~JhJzqTnXg$lB&m>WBxf^?U@!DH*%JSWqsZ6szp)$6<4_8^Z?^CFhp38^ZZRXAc~K*eMs>6rYOUL% zKEZlo4xH%RhFbF*r~%%?ESPqy)$5ldQJ;dks44jhb;CW(jG zn2s9JGF0%barvXDZ^lzN8gHYPp!F_$>GZ?(%;ok4;tY5L;ekjfTz5S9a z`GJ6^|NgA!lh8||%pp69s~)zPXmy0`Lis!VmWs9?v)6LBAMAtU8=S`V`=}GN*9kk2 z2B11J78OI&T=^2z?%9Bv>4O;j`@c&hG*ypKQTz_IeL{bJe#u=L3y`0IRq)9F*#A{Y#64pVG{A836HsUR zI@DSpMs@HS7RHwtjXBO*G4fi3VBHpb!?tmkvFF8Q0-1#@4tpNJNs-jZ)oGnf35b*MaQTX#aejHaVv z#$QN6+h!SRjklwY#>!`Ql z9aKA?knaTk{pYe(5RSSKiK?I&YKl8@@k`VU{fLU0Yp8}^ zpqAnzhGXh$_K{iw)!qP1LHph!66)zz)Ca|WRFIrPRrDBD@js}B6a8#!nh({X2B;XC zi8b&L=E3;a?fw#|jem?5{y{L2HEUMw(T|UuG%jd#y%In@_|7*nkC z2S^>%ZWxTM@iI2Vg12l+r($;UTTmUihMJjI*bB4V4tQg6KK93yci8`vNKCt9+b-E% zd;QkItdx&LMeSPDk@*8EMt(+}2OpiE-?N!0h?=RIsF`SuItK=#W^OY^<6+c&o`2sO zOp4veN24nK8tdS3T!ASb*ml~D^~m2tt#QF$?Kc|ju`>DJu_NYx81Po%BGlWp*l+d{ z8;OdgSdT0Q{0I`YLim*^s;8qL+sox!)KU5;YKFVQM+vd)}noHxx4TbHKLcODSeOSF!rDJVNxA+cK?8ynRCwTsF&2QF8|); zV?MVvPlt;7^{AIui6^tC37NL0tuxEfQuuqr!8i3*_VE$gg_TAHS)=exXO|Ley2?uIWhG5Ia1DL#aH;52FtuVV&$ zhC102{A1@te#}I^DK^8ASQCH7+L-mVjd&1h+wMjkRKNNpbn+$m*N)IA)RNT03OF9M zolap=7!K{z9GgF+bYLISdtq zXR(>~|D|ApPpD4;ZyXmU<8X}6Z5r8RRKs7OUMeS0Q~dzPgz%onY~=fgh6P8w6czoe zQB%DOOX4-uYxlE2Sa7B?WAK0fms1HY6h}>2Rn&g2jas`-sF4guz0KyJj_RYRseFfp zuy9ydFjjh?8vGiy%^sm*DQgUSt~+Xp*PyQth~G%)tPhWA)<^Avi5MI?s$(ZmBRhkd zfjbzE&)oHdv20|Yq23K?Q1w z7B!MLs16s2V@uH&RnbgTNB6q&-%xMSKwNu1J!+S=LUn93DyBBa^{r>uDNutU@yzU~ z8*5`EjzEoIJ*uJesQW*<@+|Sgg5P>IQO|Wn?Vg1gAHTzJ{1Nr*yT=&7n0^AA>bR(F zk_HvMSy2y0;V3NW^82wR`ID#vC~HES^6IFUR6S=0RO}2wo%z#T`BBu;U3U8SNoZ~V zLapsM&Mo4jiE`yg5P@KsI{(yI)ZzmmS!EQLpxFX`~+%7o}hyEUsOkmB(r*l zqGD$$hU00>K>OYwBy?oP`^Od=yIbPs*3Y)8aBiX zDZ+wZ&jaxg`L9q*(lKRN@F?z%!T`i7teFz<8rzY-fRgSS(&|FwqC+yyUrfw-J>=RahMr z11+!~4n;M12DQCjqDJ~3>b06QLs;++m~)|KYeoz*&$8Fda+LIqO?)b%MC1HVEA>n7BDeJ5&r9>YiYJMP3w z*(_)$X1ArCg_^llm`MBo00{-#Sq#M(In3D3c+P~Vs8525k+gUbb7M^WgdH(vq;i<71M=HY zu@WQ7wqa7#j1@q|MibO?-BB~R5cA@WDE5DD5)a%BN%Gp1mqd-Qnag)aRWJoL#k;T^ z-b4)`eLicr1M0m#!R5ER{3X;b`-sJ{Kz{33ul($P?b|UF=)vu%hHhaMj9nls`1`@S zSc&{n)YRR_jF_ZgSa1LZQ3p&rtcGK-4xYiPn66M*@F%0rs9-*X+J;Yk61p*YVVmks zs1YtkHE;>V5^0Sg`TKwH41g# z64a6&L9Ou<=YN=&e4;W|UIu;LP~R1FLftUb<-bNn=>g|&sD=`iHFKi2Z)J>$12Hy^ zK<$zVsFQUUYN^hl26i1a(1&H&|GMy!0-fC-um|QVXH&caHFbwk4P0~H#xU{^u^0Z1 z%dlyA8`*2r(Hy6O#Y7TRJIPVO8IGFqVikP*xU5Nmf~GbqI69zq!4y>RY(yMm9(-Mj(Q2@!3|g%TjL|th$~mIZP*6Y!A?$pJPGymOVnCzMKyQ|^}p4= zfn~|}uV$~+-B^hHYgB`|s+%QIL0JRUaCg+M`X6e>KHzg~SHsSQdNqUh``!o=xwxM^pz#qF%E*QL%La)lOJln}K|o zR^R`%NoeFfQ160?s9mrJ75$G;!I!w61x-rS$aA8~OQ4pb9O}TTgIe=;s9n$tb>DK- z)UQPa-%-q{{eP8&mf)>3W_=5;WT+bppn|M2HpA|y1L_3k#Cxa?Cum?tb7?F=zAcu) z<*4tA+o%~x(a`ecG5FvA8&0Ai7uKRqwCgUPtdT8271VC%jq1n(=RVXL-$G4!qQ;i5 zh#L7|)X3MNVq-I^{xhh7#caa<*UKbz6Wax)P)kuCH6uMyQ#}k7#ZyruU4senGKS*= z)J%jm4GaFeL0;5-t5FSIa{h){$-hH&IHDQ*Un6MT%z8Kl^}q(yT7Hij@i}+>C1xO> zq`7U!e5i(7U}>C;dN=%tT7oC2j$~z&`CI&unI;cHaG4LgK+b3*v)#X(r1 zQ`+t9DdkMwrVzCeh^+^@qnG`khRH$8%3DwcO_zf1t&iD}Z_XIV&hIupaY`3uB z-v>1BVfjZr!-Bs(AJ{uA_}_lIgMI-XT;0dE%@yoPzEa?+nL6NRo^-6j+e18 zmhp$%SMOld$i|?ia2{%^R^o8ngL*sWA7NiUEl|PO7WG^o%z|Ux^$o6kGb*?bx%^3t zB!2_7+x!?Kt-*AtigKW)ri9Bk!8qi*x%>c^pNQ(?)*a6b;jMx!mt&mh6V~SY2Pz21 zqfWjR?)q1#qkTQuxN@}!ojHLrl5}U*)G4&c^EY#KcZiV#4jXNQPT0&fz+re%8Xj$0;mV7p*qkS z^)edh9EaLwbFd2TL{0sFsE($YU@xhxsH3_gM&rNF%dG=Vj;{Yk&S}b zmMQn{aTE9Y7_$_9@Ur`l?O|zwm@63d1pg1bXD&uynj_Sw<)Ig%9+klH=@cW=L z2~BNdEQwuFYrYP(Mh8$0e?Tosx*1`?{|QAEoJ9V-v+>NZ;C~(C4r(S&&$0%8M!f^> zp&I;v+6@V2hv|=1{Qv9f9H8t=5M#T-&Qw)e=@KV%0b%6?o4w-o#w(&TU81w;hM(Q z#=cNj&seC-aynGN)lkonT~I4}4odGKbUy$4nuccn4VH$vrUddcK7G7C(D|>mC8zS- zrk`M%dzr3=+VkB|TX7sJ;qy>SeAnd9pst#CP>F|`?mo0)!L;;q!5TgqO=xKEH$#2% z`4Gw={0x_Ip$=VYsFf%IHM8WIj z&0szaWxfm+hijoO#}7~|lHo5mkseToaVTslJ*b3Y&2q;R8q-6ap?ub_3YBORs06#3 zeCRB$e;tk~2z1L`12wZFa45V2wbb=zy8&85Ep;#BFq2O)E;9K#sQbfisLS*!RHE0R z61fL;$9zAV>tBMXb6h5c)#+!0T7eO;1l$9&!oa!i401u8nKDp!(BUvM+yQ0x0&2-q z%nNk>wnP(HhW=St491)9UIh(&G_(TEp!WDrs7&WTZOvk+C0_~Kz{^l)rtkvyb-*5| z2^@qv-IuKY)cW6`wj$C(H}T|9E1c8lD`}0IP=}}`ltDkJ%V;vJ0arlX%YQ*FZTLm* zcycIteyFV}1+@Y-pw85IsKY!17J^HmbI2iEz~6sd>^e*hHS?lSZy1z;TA9_b9y|tX z!W4hIiS~o#=ud=Nq3bXk470?280Ce!&g(-xv|2))vHma@oCfP_El<$U3{x+42L?dB zzTXISxtzBCdsvWu zJ-)v~ZB5V`_oZERn4SKyHC+Ev{E0w^B=cI=K_RHaR2~Mwx==Tweo$MmA7=2Qv5prS zFynf6>ndz;Pxnw5#PC$8%XAaejNd_-<=W`R$+OYtUWX+SCOd#bLC~Zelf|R<@Uqh7Q?isOxeyl;d5n zE4%}BxmDfbj<<(83;m%2OoE!>VyG>=19jQGg&E*CsFz}?f?d0kP!p^Nb=mq_(a>IY zHTE(3pe~;gFcq8xbr^%861Zdh2o*T|R#z`ROhdmYRO0Q7!(b2k^I?4$W1C~=^K_=6 znGb@2a1tyGr^9OS64Z5`X1jaYbcZ?v=U`c4?cc__9gxbUPFf4on zHS;e}hbqbeH_>6n$xt(#4~xRBP-o~n)FCc;(0#?#@u1H=G;lZlUE_n&4LsbdtDrpR5*ctl4eo%*Y0MtrOfl6#C)M4EKb=vpY_#vo6d)4H=uQX)v z!vx`vx&b0X%{VU97NmgED`l(>HS;D=Gj0vFGCiSQZqI{Ccs-QfKI2iS37>(v_58m= zLk3Zfxq*_yMD$BSIcyHK0%M^9&4tom3B7Q)$qzy$d>$&%+b}D90d*fpble>;1+_BO zoIclIQySWnj&K7U4WGaQCtQORC*8A<1?nDO9u|O$pzag5q4qxTlzRuv4%5@G2PeZ3 zFbj-(+C5`sVK(}UU}oZbF49njfoI%Pn-MCZ($HA}IEDULs5@lhv+fophaKr>g4*M` zP%E<#>P&2c8R2o*0DgrvV9j&xEqo>PDZm~Yy8NENAQ*VweV;xh)Jz(~9B?cg3-`j- zM67Tj&~t$PrpxZzZ+)(~f&H(#3C4xm`{XbkOb4~}HDONJ;wsmFJsPtSRDhpgSy=3v z`_AS#s2fV&>+X`*fo14Vho#|ds2f$P8}6ZM549!Tq3$EIpbp_GsFm3Pr*qkyfjUbq zZ*l!=Z@S;&Jz2N}>hel(+g+kmP>T7X4qI81SB5$REv&x?hNHg)>K45R%FlJ5NQ+dKRpMLGT#VE&Mr*4U^t=6VC%3 zzc4@YQcwx{hS1REH6CiF^Pv>~g}UxH!3^*+Ob!F?xrZ_})RI<)x)nEvy8QY>`56hd z*VCcSz!Kvs8{Ysq6Fzo_aqka}`L9g^HomtkqBrR)y1 zQvF~mI0<%w!BBRo9=m?hK;17gKy5` zm!W1H^ND-7lE5JPxuEQ8L#;#$sHN`)wX(yY{EadBEU3g*J>mMVMq?cUy}$@~>fUG~ zLpdr26|f3aBK4u}52ImacmZl9l0S1-CNE4)zX+6F8>qy(LnSZ>D$Yb09nN~@bMHj| zBGA&_he7Ze)EzOxbN6wX8tO(=8tPWv%K8&wC;Drk0wj82OAck971o56U?aE$>P{N) z(v6qLM?;6DFjVG$LM_cQsKd7kY6b_PW_r%XpFkz_66(ei@s+C=6Kd&`LS5F`VLDg> zCWW1$>?XsG(6^3;?tF<~y9(1`TKd5-3A|^0zc+4T>7fEOO zGcXY9>KY1VKMyi7pJy2j&1@r7X2+mjf;}}xeCx_HL7nc3P!20YEpbig95$#u9R@Yi znNWJ$paSlJx=$Rn{!18N*Z(IIM1AMpVB$d;WP}Qk3+ghf4g+96s6c-jC&M86OQ3G8 zhoH`q-+MQ)a8O$iAL^D|5^91CL|y+r8rtK*Z&=;1l|~9e{k=B1)-L{ zKGgNx0m^xdnCohyUch zaabDGqrV3hfbl=O`n92!z7^C8je=UiIZ)4(tx$>Wwec&T?e+h21bVvtG)Dj88l;9g zM463wp_Z~ZObI)|OmG?uf(M{h>>(@*Kf>~`&{ubYW1#LMi;ZW$a{Yfo@C!i}8GLi! z*-ZJ}{ZZ*ysDPiKW)$?Fn`m~ZnUsM#WR0QDMoXxNR9mP!=|GqZj)uCS?SR-ez|YC z^nhBK(j0o08tEAy0IU6=u`f!W~=s3nc!$G9JVun6{~ zKgHkcyvhw1;B|gcIX|qAd_2^x`x$Je>pyRx*Leoag<7gNumMcv^*Y}|4TX8=?}jh+rlscY-aL~FdzNlP+PVaYD-SRr0^zGg1?~d{mCPGofWME z6X^OMM58^N3pKNFk=#JVpblS4I2cZXvtjheE>}bCahX57&QHNc8P7m%P3$OM=W{>h zp!^Jh+S=8yIlKUUnQ7#X>dv6GaWT~Oehcn}38J~Y3AfRo7v1Z;OI|yM*ZCG}71UX| z1+&5QF9~@t%(-P>vJxLxUt+l$qscNC<~QwBNzlnL!I`OP&blI z#+}B4#*@a2#+$~6#+SyA#vifx|A%rI7~5qeV@zX0sJ%>K{p?Wpf&5U{ZzWg-wt+fS z+n}!hGq3`D0F`)_IPRIr2W3|h>i*H#M?=r~UN8twggQj)U^lo6>IRb~uInfl)OZmn zc}1uttqxbgUT_>t7SA1D3-xr|Y&-&WW4Z>FnD3D_-auXF-=LlWN#naSDF=1>8$msU zdYOEl$=93w7*wFQFfH^?;4%Z$Wm(JE9qNosg50Y4{T~{-3NAoBovJ5vSEL1$!+}ss zH4!S~Wl&qT4(jsU3bi7Kt$zXP@qG_!tDYNwLTyddM7E_crXpvjp&6I4fv(0uP!E@h zP&c04CjSWatye%|_pl~`N+<`^St$UOczLLR4WabA!qad(T;Rv^KZ(~fMl=5r zdt_2~CaIFSmq&J}hebZ98PVNhhelLt$|^)_4Xgff&hMri8j5&+#c$d z{UHS_uYsf~z0OasYQiS;hr`|QF`NOHrgB*zwb%Khkr&`xh(h=s4Zy>_0Vb!mEc0CEnEt9{cnJZd(uZkdv(JU zUO^@D9qP14%j#Zs37{MlgBq_4by>B7ayZmD53ao&Nz*-MBN4*LiO! zWj>dk;0W}BVG&p;zq?{SsQz47O4t7_8r>13DB#|i{({r#pMdLO(}G^-*KA@G@_LrD zwvV7r^MoQ^=Z%QZurK|XMLC2l(FEhV5^n!|X|MC4w2$Su-qBlI-s`-JmahVrt*-yW zGz!2772W4~X{hUYBpLh1KY9 zfpuZ{x?ayA*c|G0L)v;?=a0;{hB|b6;cDou?{!{$ZiM;i|E$mTUx-HD2CkqFtVw?p z%mE`bbXTS@%uRm)bjG0$X@o}Z3ytisB>k4KEL;WC!%y%8OxoDhe+3)SkKM%U{2{WQ zO}PGlA;{3wees#TnY;AOUGf>yCVC9&#b}xi?s#*!jEUsz=yiSp@n$FYP}lA3b^aroFJc$>rPf?n0>vXR zBaGC|eIb#ryVv=5x<}wh9MA9Jb$-a4s;Afa9PYvn_J-LQUjggu`oBp- z4)Tn0AB)Z5H~NpE4$IxqUgxJ+iO0CN+$Qi2@|IASUCFWT(=y^Xuk*Q{&QMp$6Icos z9Pgf~VX!p)+fcXqR1>)V^^~eYBPARStHQOgJoKCB-bgCKAo?9)VmJZna$5~I!w+x` zTrtU=S)Ix5VIB)BAm0Zo!9S+B6KV+cT5`@5u7AC_+>b!l`*oNMMw#k9B(gzWJ_Vr{ z_Jn$l_lM4Z!Gl`49n;*IK8Ct4WSs8W)q?TpPk;;Hau^KD%y9KRGuiW62uja%mvBDR z68Zn-u0%Q5g#KJO4*rDFA2ZAA{7UsbsOx>vZ1+$WoWoVXo)3gyke{7vkKcLj7Tkhe zkmsK7-e;EkXy_jP5=MjJ7r0B905+vx2?oJ+P)l~s_!TB4P?Ci%i!S2vOuzYJ?tHNI z-(KfmFHBwH^_;>k;ZpYw`y3XcpK6)w&)1TMmTVlM!0rw#HU*kSr_rt>U2d;JR{kz~i`p@7(R%GNluje)WG#k9m z{}G9^(aS%j^l_Qc=*z&4P41rL-0a@b`a@_dInBVqTsS3x`&i+(bg3Fd*iu3N)$a5B_kz6p!K6#Lz$V@s&}!&>P3gNFBj zdkAAf^|L~~JT79a0(F@-fyrSXs6CzwqryWlCAP*1zK5ccx8`xo4#t42S$BoDV<2AUN%~ zyAqq>Ao@3;R&qPV6J?;%_!0}KosqRCa ziPWdu!<7Thq~8qgh2LRExZ||@@Jf5ey*z6{t!#g&xW4%`6!4%4UO=rxw6pHFUP)jg z`q`l_)2dK=xgKio4@0fQ6{v5m?m{K}18RoR&$)Ujpw3WEm>O1upY{3wo;30z=x~9j z8kg5HsM9&(vikz#Ce%YJ_Z8Q17Z|85OCFX90dl@j}P@QNeq+1Jl3xVwWK|uR%#}cpUqGS?uS~@6HqH~&HC>| z?mwR2CWw5^%{T#+gOpH9m<{Tbmw>Th1t>?&VH(&U>U1xG+LB;+03L;P;kfJWiamxS z=)ZtTV7D7w|8Z$dp`pE71+~XVU}2d0rt6?JY)5||tO7IKa^(YIANp6IUW!$@?H<}e zFbn++&<{R<+M-8LEAkeGf!}U({Y&7v;~uu~PU1W9T7fc9hpHaT2)jVNGcq6Q zFm8i7Bd6go81}B$`5n@6(0O%y&+Gh{?if_OJonwiir)9RH^knn_Y9{WMTp(+0MOgJ6F65@yi&Lw9RyLM777M?-ts9%_k(K+SkO z)XWxGe-qTCQ1^rPP)l9RwRGyCY%x~jxPg^+%yV7 zy|(KGufgfCBJBLc>-@6VE;yaO@2UF&BGxm${ia_7O1=v&gVmqA`rqMC`a55EonPtR z{?dIGq<-bTdY%I}>-E3qwfpjT3!H*MqBmaW!)5EBmwwZ??p4tmYKyu;?dc%c3toh+ zVEK3Mi_HxX$DZF%6WRRUedtX5;Po7*e;jUv(?9BINc^&&T*IkwDg$@nLfGT8`<+j$ zFYe{?5~e{O>8pDW&k5CUY8(T*)87d7Oi2CBeK+hd98JIZclV+53J#!O?mrSEzUK%H zIr9JE&Lll7Mt=%i3@^cwu+L9-Z+F8A^uNP;u=FqY7QPtD&oQXO_8#ViNq)Nl>%uGa zFGC&bH5^@EE*eK@w1mH45!k{njPni0Qm8xE6XPeSLlfX1#<|hNg1T>{f;#oZU=XYa z6`;TMr&)h9EROs%%n73hgz-72vP^*MupHDqyFS!q)e`CqbTD~0;{X@~`3R^x-)yMU zy&CEcxE9LKUMN4uq5PaP`4!{60G~VX0)cKk@1UN~pP^m>B@1*NXM;L?IiPMl#bGSi z2r6I?sLOXa)XXM9C3qNW1+T*#@F~=tGLhG1MIR0A)j%i*E1{NnGpq`aKm~{w#!Vm{ zj6^>#)Qn3(J#@-ICDh6|0BYt_pg)`iwE}ZtTDaK8eJ4%f0@MsIL(TjV)D7no3H}pe zm8lz*G9?AP$3~83YzR(MFa_OK^^M9iZf|?FXOtRDbtcR57fge!jFytZKe%>EZ~V6) zyLtHe4}V*ccU9K9{_~j9e<E1;5sejWO^NN6GL zyCkI2gMJs}4e)m!Mu<%O(F9C{5_d(<0vvQT{j>2+AK+dztvl^zR zUj`k%Lv#MoXkkkru5k^CPPelVpExRfq|h^xRV(Ee`XWgMJwN z#6f$4sqnWcJ(uaXWPGHpLSkfJZ2TchHkW>13o4sx)PjsxG#$w{p{IA*^7H@4`MZu> z7IaiHkl8+F!@q3zbRg4yIO^#RdAuaJj=-fb=I@VsuF?NtPWOijI0RWA{OCTSQrN~C z;kPe7cMz)@~>PQp>2p{v5* z9(Kxd^m`zWjz2$ws`%+PNNIp=BiIp^)cG5Q@dPqFf^s`DTZVA}Msw*GwI!C}NBSyP z(JxF*&scN%!?E?EKNOBd?uUF5e(J-QjIU?xCjH^mY$RU?*(|t?IJ5cuiDxv9d9*t} zsoKThZt5OtIqGyAzQize>4+?(_%TbB1~}UbI}mgqoK8JJ)h+xmRWH$wQjbxOQ%_J& zQcq1S_$q;Kx~_JGGgh7f> z*R|Lo60isD6t+6u%x}6-`bF@w&WFQD zI64G-pqviFy|AzamE!@7tK1~xStjR|ty7L+my;O}qCb=%Ik8Vi;JN6kL}OfK9d#4I zdHLm8X=8!t`Ht{q51Cv;@jAwjLj`Vy{4KJ)B(M&{^Eep6cpjV8Zkts%^i&$d{^+Yj z$6r(Ip1^<5k4n&vHjz}8JZk=)^Hc9Vh~c}<@G#VtGMD|N6jF}ij?cJyk|E<)_MH+J zH=k_|i*SF)LhitAHVg3?zQ@-;W+TId_?S%kDe-sTb>;lnfj?R8^NhgZArva%@US^C z9nX231X2^@uq10R1t;;$aa8nGh9e({{b_8&lE_{9ec(ycdrbcj?HL4rht4UBu?E?l z2pq#aD5&svu$|Hnh0g@)hm#jJmX@(zHa-VOk7$oVrwHTvhNm-=$WA*Mwk=64CblYf z%zmQTzPA<2j_qqErALudR$`Fe+FuzADZ6lR2^{jgL_T zuaE9J>MDYbLidsdeF!hx?B~!P&qRC&aXt*E>#5mn$!g-Lt`mkkE1C0wd#7BW?feFw zjWx2s$FbGRJe5KCQ#oy8Gp&D-z&r8#p0Nk$C!{|!yv<*)9Yabif-JTy<6saCM>~-P zki>LLBt$nov#pM^KhW7?vrLZ7IfAxl1ym|9UV>Vcm1>Qw1iBNkOHRzU{^@xG!-7o` zF+6|+mBSeESE2t`Zq2+G&M$^9Eq0NKRTUqDXs^ZZ9r9X2e`zT7g&0O<{5c$gj>=?Q zpGG&0ElzT5rqcd}zhy8U6oNFp}D=Ac*H7A$P2r2pW7y~=EBVSAG}mr14@varN(4s0GA zuEDq(hRqm^MSlSbix}Qu&N371u45o0xBQ92Dag~IlhIZrjRlj&7UajMeMz<>{ufiH zQd`oGL;VMxc)D+^WV1jiNI>Nvj*g(DlG%8i#C{{6L$FdLQ-(Uh^lw`NYgmcxEPE~d z-6z;7bUIUW(a(eJb9`lGd@*sK;Tk=81PB`J;9ymomAy8>VKd-g7 z*w$@D_JXnS*wwRS9A&-~Ay8Gu>%dE}H#UW^->K*J-((cmoTQ@tfo#W-P#6>rVa(rJ z_rzx(^|6JBIInBESqV~~vCw6Wjol~ESjJm1cotuEnOI}k5P1W54PPCI#~GdaIhM^r!WOFl{v^eQf}uw5O68|EsJtQ9jG zL(oph;!^`zwI}Fjpe`YBNSS7n`G*NR``;GB%r^UdazeKIanP2U8>^jUIu@2A$N-#e zL|%*b1%gFJcL4oq^b_HumN|copOn}oVQjd`W-@^+*aRb6MMD3EB|abi_YA|Z8H4&{ z*8~*w9i>VeoT#KS{?PJ~z`y9IT%z69bbBKUAkZ0`>1LL=BED~;$NPFt;s1Pi_L0&oHXE3EC;TNM`ALlF-K6oGUGU}&Ab?GKgROmG;}FSuwm5ojHyJjq}9IU zY!CBqW7$iXhKyDIF~|8x>K6U|Fm$^Uo=Qp23c}Q{2KjQD1omTF z)8y}HN5Ibz>{j6G2=Xk{!mQ#*#+?0cfkI;H0hA6>|6y?ZSAQWMY*DMe{4p#G*NLcg==6leAk@u_m#{qZ{cZF@S4K-(C6hQTamo!n+o z8>8dMLds%vP7%C>B`}+r)vAX{(XoFH?^nl=RZ8E_qUBjp%O3RStwMCLe z6UL$uxC%jEV|S3TLpDC&lAZ=1G5(SSKA^9X1>Lij+(*cd4LpmfQTXAOXABP8lfWyC zS`zpuZIzD%Z$s9lVO=wpyf6WKQuVVPetE_7E7Y-wgFIfSesPkBiO&c4h{w^YZ!?#l zw@S`Apl}tARMx`}Zu5U%a}a#087?uskimS6-Bl7W5<%J%a4P*_^vBrB1lfdS^NPua zE;D~e_0v2jQOk$PeRpAxVa3C1T<)9n6Y<-*7EGPW67gitOLuxCstaM&N*-HF?U=pKH#O z;5aW1^%8RhP6yCe$x5J4unYG3Y}XL%h9aA-t;O~u`XOZn@~-+1Q_;vI3g05QsOWRj&fm`gw=S1tQ}QllqKT!*ajS(!uTZetD zjCV&ih=exSL~^3L8{aB{*#2vNT?t$G2}OPq=KM5M!d;eWUYMT@$1+~loFzo|j&?Vg z(3bdCs01_GD)e9?sR5R34}rK7PCu*gUuGWv(5al^;cT*GEGlH$FOTior&!< zbW1BKCicIZP@p-;O3(_(3y?%pb5@J7xfq6&2Lx8B!b&`%{V%mO4c^Z;m~M@6yQX47EJHZI(c-P=}|G$sBdQlqKjr z*bXPtaW~>Tw)z#j;f$xpzASciVH;%KErHYMS3~v?*-gez=xr_ih%`Qe2xRog zf^9`HDe_rnxF4sTZ0TaszHjo2*lfjSEwc9bP>ITUs$knym+?4^9c8Q(iT0!)gnlGe zMP*LNcj?i|syRjxS&2I+6@-tedn}xx0T!Y2AI`@RI0k;pqyN^D3NgzP zDxPGSdgGuAN-t%|U>j<3`t5NVQl=w|hO;Y?X1rQ_P&WaK&1GTp$RmJ>n z!FGZzz$F`7Mlunwjm)PqoD$oDs}qaCbf!4MvX;D~?R!>pmfP6a|& zRkoQ9Duy|@ z0mqW~B3psu1iVU}h`a=K4>dD3@tAd0d{v{?#7_V^R^0X9M)2LtdM!a!x?vceb`o2O zd$bD@qyZd+?sMcpIGYQro6T<$TY+tLIFzw@=yj&uhM8x?c9R8dMKXV|Dp!y_)qf@F zV*91Q-!ROF!dhfiFgO8ES%3-{MaN-El2eHSBQn;RB>2dO=M(|QF#Zc4ndy(fz6Lst zN#F#*4*%b*Jvoqlqt4ZL_QP;?Qv#fIqdf&j1#lF)M8QEblZ`<)5{@6B*VmLt?J zd1YI<>*ywC5|?ZeQR%Dbub~9c_GKf1)HpAUFrw}M5>sA})A7tk@^FDUa-Sx*m)Gn&y)6#LLG zhG7HRN1UJFMRUy^AI~hs8_33y#!s|!k*>-Vyp#>4n}_ikM62lzds^ewAN_xj{f%rP z>6byL1F2UU6w7Bw5=g^(4nWHmmHb}M{k!bf!4t&vT@rk^cGbmR^7txhHrc-gf1mc(O%G)18_ z2I-NPr=J#Qv28;YK;Q{%#tLBj2fp7?n=!V{HqUvf`OapX zmO!sU%|IXG8jf*Ylq)d9eHcH)`6ZmHOu{ZI&T29K+!A+3xC^ljFOWq1D}s+B`hnC@I%TQ15u7mPe{j?ir_*pW7~_-3Pf<@(&rr`& zRnEb11gSx?7flucUZP&s7{QtnG^8x15gnhoNJiy{KFkq|&J|{-lAR5eC)vHD*+19SJ{AVHe|=}d4uut z`0t5qwQT6Olu}^?S>Yry`j1T0n)BIY92;49TdvA58Do)=kH_gJX7LQWc*wutFcrFQ zk^O~EN1KHFmzMGf{zYCCy{*XWlFV}CZ9<)<+}NsQL|&cohS-kB<}`_YqF)=I_pv{NUPnJp+TUc< z8Nn${@=eXT}tKTGZhdeJ$##h~JQ{F&WQGuQHN;TmsIZE=M;! zWA$iPryYrQPZIkZnoS(#b zf0Ra{ydRC+1n}8v9HieErxB0^6XXc}Ke3z7cnoINly-gOoovQU@KX$*39#`a&S{eF zi2voLqBDScOUsDtKXiM* zuIMZv*atVp8!&eYGH5m`2CZ&chz6%y?6-L7>YbmrrF$GK69_LYT^pd~{ z2;7$d37JiOvs+3~l?S1cR{tRO*$KQHJC!HcZO4yF1mwkOXV9CfqZ#;)@ug4>%3<^p z`4*CDK>Ha1|G{A~5{yGq1Cgb-z}p#9Spj3&1oorb+r}RgETojir%EFx(wGDmYX8rg z!WlE@gVI18?X}Eb(cecu2L?4*jgXQ6`7b)<37j2XCa6l2P!rispa#gBAv<9He$$?a zpNjY^q{|@_fjd~{a*!BVCHiAAEY8@!1o)GB62oL9JJpid!0Jp!Hk5rD{og5(8;5OoEd%$ilJTg=mK( zspkqtnFBvCOO@TmyEcJv=#DeJ?w0gz{P;7@U!wDrqh4Y~1`{iX-c+l?GCwinwBqq4JN36Ee+K>3 z)|Suy#A!~Pkm5Um^J-L;OQ9593Ew5K6_*Lv6~TRiRK@vb`omytW~!1Ihb?IL!oC%& z<&VvMboAT)s~As+?p9(1TH>A2ujMA;^K52d4O!O4`45y!m{KfeQwV2aSgy2;g)XOY z7*d)L_zQYp37Q+*5jL3&w1*<=X-Td_ClH@oh}G9*`Me!iPJ}8mOsIA|WUtk*a$GYp zy$2Q`k*(GrBomuu?H|g%EIM^{7+*`JgTE-qR$JWUrYqa=jJ+V173Zn%2}gin zBx$JyZE}xnQb$6qctZuF-xj@m|L4S04V$C{Ud#AO^DOj3UWdv2AeoRd4ZDa;ZmA<9 zeg(1{M*@#6U@mwK?b#TX!eMWev(xTPyBH3i+v*O$!C%Njm$2qTvZd%2A*n0apJ&!L zVNDwkM_Z+yK3cOEr9(LF0245~1DXw4*0Ml<+wyIr-^~nza9D=+K6FD$dTdK0k7GK& zY=yod??VkD*(TJ_#2H8(hoNsavna~URI(vdX=lrI7YAdIl_T&MoaSZhAr2-{zmwE? zs8X1*KP<_81X5{5B0b`E`Kb8lN1|J>b*{fCD61Sm;T#I3=$F9hQ)c|g##&&I8-p;^s_1PZNH*8Z zqxfHuPewm2V|5r)39v*jTY{1WAJMWExI$%T}@oyH5%in?Qq(MWXcg_C{|lYV2xR)W|^Ox^EZrd!%2L`^4RP`f_RX} zMei^4+rUG%r7iHi65UiJQHz9CzSF;_51bY!&;pcyAXp5)qx1wmVfMd~#lyG-1_^EU zS&=U!bCqN0$=_~lE+DIC%f6L%ENV7ta`Y>px0>YI;wv@n()ilqtgdtZdFP6ms~ke< zFLQDQ#fLbEPd|<=-v^@ICMlI-HWRh$;y69Fop5|YZPVA-aB2=G7&kYYL_CY(9H81b zoP^R*lBiGnI1UogE{{(LJ>lkqv88c5xZU*C5colxvUJ%V8+YDlR`5=n7Tkzgu$ZIw1+n8ju?iUf9>%>wqj z9y-_Puf$&mY@*@+2Z^R6iA|w=|G;Nhep%RYT*?kgC6p2p@E*>8;bVFOn(Os6Hs4;a=c61g3ds6ui~p4wK)2hVMvK>?fiPzMI{Vb4#uDd31lJIGTKov z+J|CIc%JbWIL^RWb#zqxX$KJ~If;E@T;&mov|x3-jD?|wrK(Jj4)QwqJ%UX}^sl0u zUEg)x!SQ1{-BE042D4DA$k-cXM=<&e2NR)61ayO0nb@`plI^1X7Pdn^0=)(1M`O86 z?>cc#;8&#>)koh~fx*Q%oIysKSWaeKhrlYMaS{P%mr?9)vY#mVnZpW<{Yhdgkkv59 ziO}`h3U$E7i_R{R`eIAI7riIMONWm$e*D5<5e7FC?1?F?#P~HvKd34RNMbimXEI&_ zU6s6Y0Cy0)GHsRS#^vbEMz1mf4*&0kZaC+~?g9KH!+$Oq!M3a|K2*A5*9ad2Eyj8q z@5=Z&%T0Qj$m<6EUewO`N(-kV|ITD*Ve^!H`Y{69=V$(y1Vp8%&A zdyl{9tU^zl%tkZ3iQiw0I~RL+8qugF&2d}HvK59?F$|B~i^Bo52O=9pfU>kVvCKP= zue9J*vHObv!N_x?qY{qs(4{~9GUmTm$gd-n!dX;|hT*&&g9YfnHwQ%tet}t+BI7j3 zXV^BCr9Yf@WMq}GSwedn&U4fMkA7{U<}=-tOl~RtMffU1jAPiU>}_?z|)Tag0DPSRd$Th)zreVcVA*Ow=V;57)`jETHK?;Jt?gY~dg39t#NosfEl z7|vg&l0YRl4%*`M5CiYv8XS$q!D|u=Dc`Me4tYh!LzlbOxz5-b>{}D?3$~H)mmS}m z=)VY+gw&h1XCS0xBKvk2R)7aFdP3$039^=2kN!F8ew@q4c60Qb*pGe8DR_O{iv!=0VufSUyN6HkjNrm2g)7xijsbK|) z#7pO0jOE9+1~sH)BHl+j(TJ5opY#}mVQO2)#|+*w<PwZ&1ZR~qg@%_(?j{siG2g? zRi0rpC!F(_6SzGhyhBaJL_cDs5|$)s4s{oC^C ziEeoR4E>qt*Q7lYUta27bT%T-OH#@8i_^If zq%)_v+^jsM@X;9M&B&KA+hFA1Y;~3)FGoK-Grxf2K8*h$fuuN01f(fJzk=I(X`D#^?sHc2(a*cNzWsz4vHiE?B zLY3Uu55^`YEAR-t4b%bD1jtkd(GE`%t4-gxo*8_`*?b06#@RquOQ;UY>CtJ(STUAu zHGP%5I9!KrFnTAkeL;PLAC>0llz;`%*h*A6GpcVHHp1a@ z6hg`%OGN!N=zPLq3~Wx@c5GpM6;2P(U&HujYDx1oA6+lW1l#07eCDz7nRDQyEskUyfI5&2eZhO;uUXqSRVE%?*_FNvOt zSC@KB%W8qP;Y6h*{fj8%!bv0A2UxC4v{j1YbRsrGs3Xz;$yi8vWsT2~g15x?J5Vcl zXji{3NrS&n@w*Tv_}nbNEfIs4FZCN2DY(!Ezf1way*K;$`2~;L;@8eU`1@ABEHi_% zRPi4ZGk8x6|3YDd13LJRP9HpFrvLFs!JU@)=NUY6L&|`eGuxyJND};4s({t8gUb~R z$eJQBOV)hZf_+T`&bAJ2dMuzt%HWf)14jG#x9u2Q^KC%dFu_AU2h0oOE#I_n(@w$Z ze+Hxu6Fes%Fih0oRWSma1O_LI8<@c_xJ$giPyWGe69yjK5}fx!;JettIi3g34j+8+ zL*VhOVT*Qa+Tq~(_A@7M4vZ1JJEgZ> will ensure that the non-copper clearing is always complete.\n" @@ -677,12 +677,12 @@ msgstr "" "Bu başarılı olmazsa, bakırın temizlenmesi de başarısız olur.\n" "- Temizle -> Geleneksel bakır temizleme." -#: appDatabase.py:596 appEditors/AppGerberEditor.py:2749 +#: appDatabase.py:595 appEditors/AppGerberEditor.py:2749 #: appTools/ToolNCC.py:4059 msgid "Clear" msgstr "Temizle" -#: appDatabase.py:605 appDatabase.py:851 +#: appDatabase.py:604 appDatabase.py:850 #: appGUI/preferences/excellon/ExcellonOptPrefGroupUI.py:62 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:56 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:182 @@ -692,7 +692,7 @@ msgstr "Temizle" msgid "Milling Type" msgstr "Freze Tipi" -#: appDatabase.py:607 appDatabase.py:615 appDatabase.py:853 appDatabase.py:861 +#: appDatabase.py:606 appDatabase.py:614 appDatabase.py:852 appDatabase.py:860 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:184 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:192 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:139 @@ -708,7 +708,7 @@ msgstr "" "- Tırmanma: Hassas frezeleme ve daha az uç kullanımını için en uygunu\n" "- Geleneksel: Geri tepme telafisi olmadığında yararlı" -#: appDatabase.py:612 appDatabase.py:858 +#: appDatabase.py:611 appDatabase.py:857 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:62 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:189 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:144 @@ -716,7 +716,7 @@ msgstr "" msgid "Climb" msgstr "Tırmanma" -#: appDatabase.py:613 appDatabase.py:859 +#: appDatabase.py:612 appDatabase.py:858 #: appGUI/preferences/geometry/GeometryEditorPrefGroupUI.py:63 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:190 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:145 @@ -724,7 +724,7 @@ msgstr "Tırmanma" msgid "Conventional" msgstr "Geleneksel" -#: appDatabase.py:625 appDatabase.py:734 appDatabase.py:836 appDatabase.py:1110 +#: appDatabase.py:624 appDatabase.py:733 appDatabase.py:835 appDatabase.py:1109 #: appEditors/AppGeoEditor.py:450 appGUI/ObjectUI.py:1677 #: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:250 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:167 @@ -735,7 +735,7 @@ msgstr "Geleneksel" msgid "Overlap" msgstr "Üst Üste Gelme" -#: appDatabase.py:627 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:184 +#: appDatabase.py:626 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:184 #: appTools/ToolNCC.py:4093 msgid "" "How much (percentage) of the tool width to overlap each tool pass.\n" @@ -754,7 +754,7 @@ msgstr "" "Daha yüksek değerler = Çok sayıda yol nedeniyle CNC'de yavaş\n" "işleme ve yavaş yürütmeye sebep olur." -#: appDatabase.py:646 appDatabase.py:1154 appEditors/AppGeoEditor.py:470 +#: appDatabase.py:645 appDatabase.py:1153 appEditors/AppGeoEditor.py:470 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:72 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:229 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:59 @@ -772,7 +772,7 @@ msgstr "" msgid "Margin" msgstr "Pay" -#: appDatabase.py:648 appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:74 +#: appDatabase.py:647 appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:74 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:61 #: appGUI/preferences/tools/Tools2FiducialsPrefGroupUI.py:125 #: appGUI/preferences/tools/ToolsCornersPrefGroupUI.py:68 @@ -783,7 +783,7 @@ msgstr "Pay" msgid "Bounding box margin." msgstr "Sınırlayıcı kutu boşluğu." -#: appDatabase.py:659 appDatabase.py:770 appEditors/AppGeoEditor.py:484 +#: appDatabase.py:658 appDatabase.py:769 appEditors/AppGeoEditor.py:484 #: appGUI/ObjectUI.py:1692 appGUI/ObjectUI.py:2184 #: appGUI/preferences/cncjob/CNCJobAdvOptPrefGroupUI.py:85 #: appGUI/preferences/tools/Tools2EDrillsPrefGroupUI.py:105 @@ -795,7 +795,7 @@ msgstr "Sınırlayıcı kutu boşluğu." msgid "Method" msgstr "Yöntem" -#: appDatabase.py:661 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:217 +#: appDatabase.py:660 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:217 #: appTools/ToolNCC.py:4114 msgid "" "Algorithm for copper clearing:\n" @@ -808,7 +808,7 @@ msgstr "" "- Nokta Bazlı: Merkezden dışarıya doğru.\n" "- Çizgi Bazlı: Paralel çizgiler." -#: appDatabase.py:669 appDatabase.py:784 appEditors/AppGeoEditor.py:498 +#: appDatabase.py:668 appDatabase.py:783 appEditors/AppGeoEditor.py:498 #: appGUI/ObjectUI.py:1702 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:215 #: appTools/ToolNCC.py:1965 appTools/ToolNCC.py:4127 appTools/ToolPaint.py:1456 @@ -818,7 +818,7 @@ msgstr "" msgid "Standard" msgstr "Standart" -#: appDatabase.py:669 appDatabase.py:784 appEditors/AppGeoEditor.py:498 +#: appDatabase.py:668 appDatabase.py:783 appEditors/AppGeoEditor.py:498 #: appEditors/AppGeoEditor.py:568 appEditors/AppGeoEditor.py:5123 #: appGUI/ObjectUI.py:1702 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:215 @@ -829,7 +829,7 @@ msgstr "Standart" msgid "Seed" msgstr "Nokta Bazlı" -#: appDatabase.py:669 appDatabase.py:784 appEditors/AppGeoEditor.py:498 +#: appDatabase.py:668 appDatabase.py:783 appEditors/AppGeoEditor.py:498 #: appEditors/AppGeoEditor.py:5127 appGUI/ObjectUI.py:1702 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:215 @@ -839,7 +839,7 @@ msgstr "Nokta Bazlı" msgid "Lines" msgstr "Çizgi Bazlı" -#: appDatabase.py:669 appDatabase.py:784 +#: appDatabase.py:668 appDatabase.py:783 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:230 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:215 #: appTools/ToolNCC.py:1998 appTools/ToolNCC.py:4127 appTools/ToolPaint.py:1649 @@ -847,7 +847,7 @@ msgstr "Çizgi Bazlı" msgid "Combo" msgstr "Karma" -#: appDatabase.py:677 appDatabase.py:795 appEditors/AppGeoEditor.py:505 +#: appDatabase.py:676 appDatabase.py:794 appEditors/AppGeoEditor.py:505 #: appGUI/ObjectUI.py:2269 appGUI/ObjectUI.py:2292 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:237 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:222 @@ -856,7 +856,7 @@ msgstr "Karma" msgid "Connect" msgstr "Birleştir" -#: appDatabase.py:681 appDatabase.py:798 appEditors/AppGeoEditor.py:507 +#: appDatabase.py:680 appDatabase.py:797 appEditors/AppGeoEditor.py:507 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:239 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:224 #: appTools/ToolNCC.py:4152 appTools/ToolNCC.py:4253 appTools/ToolPaint.py:3030 @@ -867,14 +867,14 @@ msgstr "" "Takım asansörünü en aza indirmek için\n" "elde edilen bölümler arasında çizgiler çizin." -#: appDatabase.py:687 appDatabase.py:802 appEditors/AppGeoEditor.py:515 +#: appDatabase.py:686 appDatabase.py:801 appEditors/AppGeoEditor.py:515 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:246 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:230 #: appTools/ToolNCC.py:4158 appTools/ToolNCC.py:4259 appTools/ToolPaint.py:3034 msgid "Contour" msgstr "Kenar" -#: appDatabase.py:691 appDatabase.py:805 appEditors/AppGeoEditor.py:517 +#: appDatabase.py:690 appDatabase.py:804 appEditors/AppGeoEditor.py:517 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:248 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:232 #: appTools/ToolNCC.py:4162 appTools/ToolNCC.py:4261 appTools/ToolPaint.py:3037 @@ -885,7 +885,7 @@ msgstr "" "Düz olmayan kenarları düzeltmek\n" "için şeklin çevresini kesin." -#: appDatabase.py:697 appDatabase.py:755 appEditors/AppGeoEditor.py:611 +#: appDatabase.py:696 appDatabase.py:754 appEditors/AppGeoEditor.py:611 #: appEditors/AppGerberEditor.py:5321 appEditors/appGCodeEditor.py:692 #: appGUI/ObjectUI.py:143 appGUI/ObjectUI.py:999 appGUI/ObjectUI.py:2009 #: appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:255 @@ -896,7 +896,7 @@ msgstr "" msgid "Offset" msgstr "Hizala" -#: appDatabase.py:701 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:257 +#: appDatabase.py:700 appGUI/preferences/tools/ToolsNCCPrefGroupUI.py:257 #: appTools/ToolNCC.py:4172 appTools/ToolNCC.py:4269 msgid "" "If used, it will add an offset to the copper features.\n" @@ -909,7 +909,7 @@ msgstr "" "kadar olacaktır.\n" "Değer, 0 ile 10 arasında FlatCAM birimi olabilir." -#: appDatabase.py:736 appEditors/AppGeoEditor.py:452 +#: appDatabase.py:735 appEditors/AppGeoEditor.py:452 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:163 #: appTools/ToolPaint.py:2957 msgid "" @@ -928,7 +928,7 @@ msgstr "" "Daha yüksek değerler = CNC daha yavaş işlemeye sebep olacağından \n" "çok fazla yol nedeniyle işleme yavaş yürütülür." -#: appDatabase.py:757 appEditors/AppGeoEditor.py:472 +#: appDatabase.py:756 appEditors/AppGeoEditor.py:472 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:183 #: appTools/ToolPaint.py:2978 appTools/ToolPaint.py:3085 msgid "" @@ -939,7 +939,7 @@ msgstr "" "Çizilecek şeklin kenarlarından\n" "kaçınılacak mesafe bırakır." -#: appDatabase.py:772 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:198 +#: appDatabase.py:771 appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:198 #: appTools/ToolPaint.py:2993 msgid "" "Algorithm for painting:\n" @@ -960,7 +960,7 @@ msgstr "" "- Karma: Arıza durumunda, bu sıraya göre yukarıdan\n" "yeni bir yöntem seçilecektir." -#: appDatabase.py:784 appDatabase.py:786 +#: appDatabase.py:783 appDatabase.py:785 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:215 #: appTools/ToolPaint.py:154 appTools/ToolPaint.py:159 #: appTools/ToolPaint.py:1498 appTools/ToolPaint.py:3016 @@ -968,12 +968,12 @@ msgstr "" msgid "Laser_lines" msgstr "Lazer Çizgileri" -#: appDatabase.py:823 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:154 +#: appDatabase.py:822 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:154 #: appTools/ToolIsolation.py:3176 msgid "Passes" msgstr "Geçişler" -#: appDatabase.py:825 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:156 +#: appDatabase.py:824 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:156 #: appTools/ToolIsolation.py:3178 msgid "" "Width of the isolation gap in\n" @@ -982,7 +982,7 @@ msgstr "" "Yalıtım aralığının uç genişliği\n" "sayısı (tamsayı) cinsinden genişliği." -#: appDatabase.py:838 appGUI/ObjectUI.py:1679 +#: appDatabase.py:837 appGUI/ObjectUI.py:1679 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:169 #: appTools/ToolIsolation.py:3191 msgid "How much (percentage) of the tool width to overlap each tool pass." @@ -990,13 +990,13 @@ msgstr "" "Her bir geçişte uç genişliğinin ne kadarlık kısmının (yüzde) üst üste " "geleceği." -#: appDatabase.py:871 appGUI/ObjectUI.py:234 +#: appDatabase.py:870 appGUI/ObjectUI.py:234 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:201 #: appTools/ToolIsolation.py:3224 msgid "Follow" msgstr "Takip Et" -#: appDatabase.py:873 appDatabase.py:879 appGUI/ObjectUI.py:235 +#: appDatabase.py:872 appDatabase.py:878 appGUI/ObjectUI.py:235 #: appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:45 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:203 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:209 @@ -1009,12 +1009,12 @@ msgstr "" "'Takip et' şekli oluşturur.\n" "Bu, yolun ortasından kesileceği (çizileceği) anlamına gelir." -#: appDatabase.py:888 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:218 +#: appDatabase.py:887 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:218 #: appTools/ToolIsolation.py:3241 msgid "Isolation Type" msgstr "Yalıtım Şekli" -#: appDatabase.py:890 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:220 +#: appDatabase.py:889 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:220 #: appTools/ToolIsolation.py:3243 msgid "" "Choose how the isolation will be executed:\n" @@ -1034,23 +1034,23 @@ msgstr "" "mümkündür. Ancak 'İç' yalıtım sadece çokgenin içinde bir boşluk\n" "olduğunda yapılabilir. Örneğin: Çokgen bir \"halka\" şeklindeyse)." -#: appDatabase.py:899 appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:72 +#: appDatabase.py:898 appGUI/preferences/gerber/GerberAdvOptPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:229 #: appTools/ToolIsolation.py:3252 msgid "Full" msgstr "Tam" -#: appDatabase.py:900 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:230 +#: appDatabase.py:899 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:230 #: appTools/ToolIsolation.py:3253 msgid "Ext" msgstr "Dış" -#: appDatabase.py:901 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:231 +#: appDatabase.py:900 appGUI/preferences/tools/ToolsISOPrefGroupUI.py:231 #: appTools/ToolIsolation.py:3254 msgid "Int" msgstr "İç" -#: appDatabase.py:919 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:59 +#: appDatabase.py:918 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:59 #: appTools/ToolDrilling.py:2145 appTools/ToolMilling.py:1795 msgid "" "Drill depth (negative)\n" @@ -1059,12 +1059,12 @@ msgstr "" "Delme derinliği (negatif)\n" "bakır tabakanın altında." -#: appDatabase.py:938 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:283 +#: appDatabase.py:937 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:283 #: appTools/ToolDrilling.py:2288 appTools/ToolMilling.py:1980 msgid "Offset Z" msgstr "Z Hizası" -#: appDatabase.py:940 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:285 +#: appDatabase.py:939 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:285 #: appTools/ToolDrilling.py:2290 appTools/ToolMilling.py:1982 msgid "" "Some drill bits (the larger ones) need to drill deeper\n" @@ -1075,7 +1075,7 @@ msgstr "" "çıkış deliği çapını oluşturmak için daha derin delmesi gerekir.\n" "Buradaki değer Z derinliği parametresini telafi edebilir." -#: appDatabase.py:957 appGUI/ObjectUI.py:1237 +#: appDatabase.py:956 appGUI/ObjectUI.py:1237 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:72 #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:82 #: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:80 @@ -1091,7 +1091,7 @@ msgstr "" "için çoklu geçişler kullanın. Z derinliğine\n" "ulaşana kadar birkaç kez kesilir." -#: appDatabase.py:979 appGUI/ObjectUI.py:1251 +#: appDatabase.py:978 appGUI/ObjectUI.py:1251 #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:94 #: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:92 #: appTools/ToolCutOut.py:2146 appTools/ToolDrilling.py:2180 @@ -1099,7 +1099,7 @@ msgstr "" msgid "Depth of each pass (positive)." msgstr "Her geçişin derinliği (pozitif)." -#: appDatabase.py:988 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:100 +#: appDatabase.py:987 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:100 #: appTools/ToolDrilling.py:2191 appTools/ToolMilling.py:1841 msgid "" "Tool height when travelling\n" @@ -1108,7 +1108,7 @@ msgstr "" "XY düzleminde hareket \n" "ederken uç yüksekliği." -#: appDatabase.py:1014 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:173 +#: appDatabase.py:1013 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:173 #: appTools/ToolDrilling.py:2212 appTools/ToolMilling.py:1877 msgid "" "Tool speed while drilling\n" @@ -1121,14 +1121,14 @@ msgstr "" "Buna 'Daldırma' besleme hızı denir.\n" "Doğrusal hareket G01 için kullanılır." -#: appDatabase.py:1029 appGUI/ObjectUI.py:1308 +#: appDatabase.py:1028 appGUI/ObjectUI.py:1308 #: appGUI/preferences/geometry/GeometryAdvOptPrefGroupUI.py:67 #: appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:317 #: appTools/ToolDrilling.py:2227 appTools/ToolMilling.py:1892 msgid "Feedrate Rapids" msgstr "İlerleme Hızları" -#: appDatabase.py:1031 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:319 +#: appDatabase.py:1030 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:319 #: appTools/ToolDrilling.py:2229 appTools/ToolMilling.py:1894 msgid "" "Tool speed while drilling\n" @@ -1144,7 +1144,7 @@ msgstr "" "Sadece Marlin için kullanışlıdır, \n" "diğer durumlar için yoksayın." -#: appDatabase.py:1052 appGUI/ObjectUI.py:1351 +#: appDatabase.py:1051 appGUI/ObjectUI.py:1351 #: appGUI/preferences/geometry/GeometryOptPrefGroupUI.py:217 #: appObjects/FlatCAMGeometry.py:1828 appTools/ToolDrilling.py:1310 #: appTools/ToolDrilling.py:2249 appTools/ToolMilling.py:1307 @@ -1152,7 +1152,7 @@ msgstr "" msgid "Spindle speed" msgstr "Dönüş Hızı" -#: appDatabase.py:1054 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:188 +#: appDatabase.py:1053 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:188 #: appTools/ToolDrilling.py:2251 appTools/ToolMilling.py:1944 msgid "" "Speed of the spindle\n" @@ -1161,17 +1161,17 @@ msgstr "" "Dakikadaki devir cinsinden \n" "uç dönüş hızı (isteğe bağlı)." -#: appDatabase.py:1099 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:243 +#: appDatabase.py:1098 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:243 #: appTools/ToolDrilling.py:2304 msgid "Drill slots" msgstr "Yuvaları Del" -#: appDatabase.py:1101 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:245 +#: appDatabase.py:1100 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:245 #: appTools/ToolDrilling.py:2306 msgid "If the selected tool has slots then they will be drilled." msgstr "Seçilen delik yuvaya sahipse, bunlar delinecektir." -#: appDatabase.py:1112 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:252 +#: appDatabase.py:1111 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:252 #: appTools/ToolDrilling.py:2314 msgid "" "How much (percentage) of the tool diameter to overlap previous drill hole." @@ -1179,12 +1179,12 @@ msgstr "" "Uç kalınlığının ne kadarının (yüzde olarak) bir önceki delikle üst üste " "geleceği." -#: appDatabase.py:1126 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:264 +#: appDatabase.py:1125 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:264 #: appTools/ToolDrilling.py:2328 msgid "Last drill" msgstr "Son Delik" -#: appDatabase.py:1128 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:266 +#: appDatabase.py:1127 appGUI/preferences/tools/ToolsDrillPrefGroupUI.py:266 #: appTools/ToolDrilling.py:2330 msgid "" "If the slot length is not completely covered by drill holes,\n" @@ -1193,7 +1193,7 @@ msgstr "" "Yuva uzunluğu matkap delikleri ile tamamen kaplanmamışsa,\n" "yuvanın son noktasına bir matkap deliği ekleyin." -#: appDatabase.py:1156 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:117 +#: appDatabase.py:1155 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:117 #: appTools/ToolCutOut.py:2163 msgid "" "Margin over bounds. A positive value here\n" @@ -1205,12 +1205,12 @@ msgstr "" "Buraya girilecek yüksek bir değer PCB'nin \n" "çevresinden tamamen ayrılmasına sebep olacaktır" -#: appDatabase.py:1168 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:131 +#: appDatabase.py:1167 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:131 #: appTools/ToolCutOut.py:2171 msgid "Gap size" msgstr "Geçit Boyutu" -#: appDatabase.py:1170 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:133 +#: appDatabase.py:1169 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:133 #: appTools/ToolCutOut.py:2173 msgid "" "The size of the bridge gaps in the cutout\n" @@ -1221,12 +1221,12 @@ msgstr "" "PCB kesildiği zaman çevresinden kopmaması\n" "için kullanılan, kesik içindeki geçitlerin boyutu." -#: appDatabase.py:1179 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:148 +#: appDatabase.py:1178 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:148 #: appTools/ToolCutOut.py:2186 msgid "Gap type" msgstr "Geçit Şekli" -#: appDatabase.py:1181 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:150 +#: appDatabase.py:1180 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:150 #: appTools/ToolCutOut.py:2188 msgid "" "The type of gap:\n" @@ -1245,22 +1245,22 @@ msgstr "" "- Fare Isırığı (M-Bites) -> Boyutu 'Köprü' ile aynıdır, ancak deliklerle " "kaplanmıştır" -#: appDatabase.py:1189 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:158 +#: appDatabase.py:1188 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:158 #: appTools/ToolCutOut.py:2196 msgid "Bridge" msgstr "Geçit" -#: appDatabase.py:1190 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:159 +#: appDatabase.py:1189 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:159 #: appTools/ToolCutOut.py:2197 msgid "Thin" msgstr "İncelik" -#: appDatabase.py:1201 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:169 +#: appDatabase.py:1200 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:169 #: appTools/ToolCutOut.py:2207 msgid "Depth" msgstr "Derinlik" -#: appDatabase.py:1203 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:171 +#: appDatabase.py:1202 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:171 #: appTools/ToolCutOut.py:2209 msgid "" "The depth until the milling is done\n" @@ -1269,18 +1269,18 @@ msgstr "" "Geçit boşluklarını inceltmek için \n" "frezeleme yapılana kadar olan derinlik." -#: appDatabase.py:1220 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:43 +#: appDatabase.py:1219 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:43 #: appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:186 #: appTools/ToolCalculators.py:249 appTools/ToolCutOut.py:2224 msgid "Tool Diameter" msgstr "Uç Kalınlığı" -#: appDatabase.py:1222 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:188 +#: appDatabase.py:1221 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:188 #: appTools/ToolCutOut.py:2226 msgid "The drill hole diameter when doing mouse bites." msgstr "Geçitlerde fare ısırığı şekli için delik genişliği." -#: appDatabase.py:1233 +#: appDatabase.py:1232 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:151 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:180 #: appGUI/preferences/tools/Tools2CThievingPrefGroupUI.py:209 @@ -1290,19 +1290,19 @@ msgstr "Geçitlerde fare ısırığı şekli için delik genişliği." msgid "Spacing" msgstr "Aralık" -#: appDatabase.py:1235 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:200 +#: appDatabase.py:1234 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:200 #: appTools/ToolCutOut.py:2238 msgid "The spacing between drill holes when doing mouse bites." msgstr "" "Geçitlerde fare ısırığı şekli oluştururken matkap\n" "delikleri arasındaki boşluk." -#: appDatabase.py:1254 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:233 +#: appDatabase.py:1253 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:233 #: appTools/ToolCutOut.py:2038 msgid "Convex Shape" msgstr "Yuvarlak Köşe" -#: appDatabase.py:1257 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:235 +#: appDatabase.py:1256 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:235 #: appTools/ToolCutOut.py:2040 appTools/ToolCutOut.py:2045 msgid "" "Create a convex shape surrounding the entire PCB.\n" @@ -1312,12 +1312,12 @@ msgstr "" "şeklin köşelerini yuvarlaklaştırın.\n" "Yalnız, kaynak nesnenin türü Gerber ise kullanılabilir." -#: appDatabase.py:1265 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:209 +#: appDatabase.py:1264 appGUI/preferences/tools/ToolsCutoutPrefGroupUI.py:209 #: appTools/ToolCutOut.py:2267 msgid "Gaps" msgstr "Geçit Sayısı" -#: appDatabase.py:1267 appTools/ToolCutOut.py:2269 +#: appDatabase.py:1266 appTools/ToolCutOut.py:2269 msgid "" "Number of gaps used for the Automatic cutout.\n" "There can be maximum 8 bridges/gaps.\n" @@ -1341,11 +1341,11 @@ msgstr "" "- 2 Üst Alt--> 2*üst + 2*alt\n" "- 8-->2*sol + 2*sağ +2*üst + 2*alt" -#: appDatabase.py:1304 +#: appDatabase.py:1303 msgid "Add Tool in DB" msgstr "Veri Tabanına Araç Ekle" -#: appDatabase.py:1307 +#: appDatabase.py:1306 msgid "" "Add a new tool in the Tools Database.\n" "It will be used in the Geometry UI.\n" @@ -1355,43 +1355,43 @@ msgstr "" "Kullanıcı ara yüzünde işlemler için kullanılacaktır.\n" "Ekledikten sonra düzenleyebilirsiniz." -#: appDatabase.py:1321 +#: appDatabase.py:1320 msgid "Delete Tool from DB" msgstr "Aracı Veri Tabanından Kaldır" -#: appDatabase.py:1324 +#: appDatabase.py:1323 msgid "Remove a selection of tools in the Tools Database." msgstr "Seçili uçları veri tabanından kaldırır." -#: appDatabase.py:1328 +#: appDatabase.py:1327 msgid "Export DB" msgstr "Veri Tabanını Dışa Aktar" -#: appDatabase.py:1331 +#: appDatabase.py:1330 msgid "Save the Tools Database to a custom text file." msgstr "Araçlar Veri tabanını özel bir metin dosyasına kaydeder." -#: appDatabase.py:1335 +#: appDatabase.py:1334 msgid "Import DB" msgstr "Veri Tabanını İçe Aktar" -#: appDatabase.py:1338 +#: appDatabase.py:1337 msgid "Load the Tools Database information's from a custom text file." msgstr "Özel bir metin dosyasından araç veri tabanı bilgileri yükleniyor." -#: appDatabase.py:1342 +#: appDatabase.py:1341 msgid "Save DB" msgstr "Veri Tabanını Kaydet" -#: appDatabase.py:1345 +#: appDatabase.py:1344 msgid "Save the Tools Database information's." msgstr "Araçlar veri tabanı bilgilerini kaydedin." -#: appDatabase.py:1349 +#: appDatabase.py:1348 msgid "Transfer the Tool" msgstr "Aracı Aktar" -#: appDatabase.py:1351 +#: appDatabase.py:1350 msgid "" "Insert a new tool in the Tools Table of the\n" "object/application tool after selecting a tool\n" @@ -1400,13 +1400,13 @@ msgstr "" "Araçlar Veri Tabanında bir uç seçtikten sonra, uygulamanın\n" "o sırada aktif olan Araçlar Tablosuna yeni bir uç ekler." -#: appDatabase.py:1364 appGUI/MainGUI.py:1550 +#: appDatabase.py:1363 appGUI/MainGUI.py:1550 #: appGUI/preferences/PreferencesUIManager.py:932 app_Main.py:2311 #: app_Main.py:3327 app_Main.py:4282 app_Main.py:4528 app_Main.py:8740 msgid "Cancel" msgstr "İptal" -#: appDatabase.py:1377 appDatabase.py:1388 appEditors/AppExcEditor.py:4215 +#: appDatabase.py:1376 appDatabase.py:1387 appEditors/AppExcEditor.py:4215 #: appEditors/AppExcEditor.py:4226 appEditors/appGCodeEditor.py:775 #: appEditors/appGCodeEditor.py:786 appGUI/ObjectUI.py:163 #: appGUI/ObjectUI.py:174 appTool.py:280 appTool.py:291 @@ -1442,7 +1442,7 @@ msgstr "İptal" msgid "Edited value is out of range" msgstr "Düzenlenen değer aralık dışında" -#: appDatabase.py:1383 appDatabase.py:1390 appEditors/AppExcEditor.py:4221 +#: appDatabase.py:1382 appDatabase.py:1389 appEditors/AppExcEditor.py:4221 #: appEditors/AppExcEditor.py:4228 appEditors/appGCodeEditor.py:781 #: appEditors/appGCodeEditor.py:788 appGUI/ObjectUI.py:169 #: appGUI/ObjectUI.py:176 appTool.py:286 appTool.py:293 @@ -1478,72 +1478,72 @@ msgstr "Düzenlenen değer aralık dışında" msgid "Edited value is within limits." msgstr "Düzenlenen değer limitler dahilinde." -#: appDatabase.py:1645 +#: appDatabase.py:1644 msgid "Add to DB" msgstr "Veri Tabanına Ekle" -#: appDatabase.py:1648 +#: appDatabase.py:1647 msgid "Copy from DB" msgstr "Veri Tabanından Kopyala" -#: appDatabase.py:1651 +#: appDatabase.py:1650 msgid "Delete from DB" msgstr "Veri Tanından Sil" -#: appDatabase.py:1656 appTranslation.py:209 app_Main.py:3321 app_Main.py:8734 +#: appDatabase.py:1655 appTranslation.py:209 app_Main.py:3321 app_Main.py:8734 msgid "Save changes" msgstr "Değişiklikleri Kaydet" -#: appDatabase.py:1730 appDatabase.py:2100 appDatabase.py:2134 +#: appDatabase.py:1729 appDatabase.py:2099 appDatabase.py:2133 #: appTools/ToolCutOut.py:294 appTools/ToolDrilling.py:895 #: appTools/ToolIsolation.py:1067 appTools/ToolNCC.py:1011 #: appTools/ToolPaint.py:704 msgid "Could not load Tools DB file." msgstr "Araçlar Veri Tabanı dosyası yüklenemedi." -#: appDatabase.py:1738 appDatabase.py:2142 appTools/ToolCutOut.py:305 +#: appDatabase.py:1737 appDatabase.py:2141 appTools/ToolCutOut.py:305 #: appTools/ToolDrilling.py:903 appTools/ToolIsolation.py:1078 #: appTools/ToolNCC.py:1022 appTools/ToolPaint.py:715 msgid "Failed to parse Tools DB file." msgstr "Araçlar Veri Tabanı dosyası okunamadı." -#: appDatabase.py:1741 appDatabase.py:2145 +#: appDatabase.py:1740 appDatabase.py:2144 msgid "Loaded Tools DB from" msgstr "Araçlar Veri Tabanı şuradan yüklendi" -#: appDatabase.py:2000 +#: appDatabase.py:1999 msgid "Tool added to DB." msgstr "Uç, Araçlar Veri Tabanına eklendi." -#: appDatabase.py:2033 +#: appDatabase.py:2032 msgid "Tool copied from Tools DB." msgstr "Uç, Araçlar Veri Tabanından kopyalandı." -#: appDatabase.py:2060 +#: appDatabase.py:2059 msgid "Tool removed from Tools DB." msgstr "Uç, Araçlar Veri Tabanından kaldırıldı." -#: appDatabase.py:2071 +#: appDatabase.py:2070 msgid "Export Tools Database" msgstr "Araçları Veri Tabanını Dışa Aktar" -#: appDatabase.py:2074 +#: appDatabase.py:2073 msgid "Tools_Database" msgstr "Araçlar Veri Tabanı" -#: appDatabase.py:2111 appDatabase.py:2114 appDatabase.py:2209 +#: appDatabase.py:2110 appDatabase.py:2113 appDatabase.py:2208 msgid "Failed to write Tools DB to file." msgstr "Araçlar Veri Tabanı dosyaya yazılamadı." -#: appDatabase.py:2117 +#: appDatabase.py:2116 msgid "Exported Tools DB to" msgstr "Araçlar Veri Tabanı şuraya aktarıldı" -#: appDatabase.py:2124 +#: appDatabase.py:2123 msgid "Import FlatCAM Tools DB" msgstr "FlatCAM Araçlar Veri Tabanını İçe Aktar" -#: appDatabase.py:2156 appDatabase.py:2547 appGUI/MainGUI.py:487 +#: appDatabase.py:2155 appDatabase.py:2546 appGUI/MainGUI.py:487 #: appObjects/FlatCAMGeometry.py:1090 appTools/ToolCutOut.py:484 #: appTools/ToolCutOut.py:525 appTools/ToolIsolation.py:2583 #: appTools/ToolIsolation.py:2667 appTools/ToolNCC.py:3715 @@ -1553,25 +1553,25 @@ msgstr "FlatCAM Araçlar Veri Tabanını İçe Aktar" msgid "Tools Database" msgstr "Araçlar Veri Tabanı" -#: appDatabase.py:2213 +#: appDatabase.py:2212 msgid "Saved Tools DB." msgstr "Araçlar Veri Tabanı kaydedildi." -#: appDatabase.py:2373 +#: appDatabase.py:2372 msgid "" "To change tool properties select only one tool. Tools currently selected" msgstr "" "Uç özelliklerini değiştirmek için sadece bir uç seçin. Şu anda seçili uçlar" -#: appDatabase.py:2530 +#: appDatabase.py:2529 msgid "No Tool/row selected in the Tools Database table" msgstr "Araçlar Veri Tabanı tablosunda uç/satır seçilmedi" -#: appDatabase.py:2534 appTools/ToolDrilling.py:907 +#: appDatabase.py:2533 appTools/ToolDrilling.py:907 msgid "Tools DB empty." msgstr "Araçlar Veri Tabanı boş." -#: appDatabase.py:2551 +#: appDatabase.py:2550 msgid "Cancelled adding tool from DB." msgstr "Araçlar Veri Tabanından uç ekleme işlemi iptal edildi." @@ -1952,7 +1952,7 @@ msgstr "" #: appEditors/AppExcEditor.py:3908 appEditors/AppExcEditor.py:4030 #: appEditors/AppExcEditor.py:4123 appEditors/AppGerberEditor.py:2820 -#: appGUI/GUIElements.py:4130 appGUI/MainGUI.py:475 appGUI/MainGUI.py:668 +#: appGUI/GUIElements.py:4046 appGUI/MainGUI.py:475 appGUI/MainGUI.py:668 #: appGUI/MainGUI.py:4416 appGUI/MainGUI.py:4682 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:92 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:187 @@ -1965,7 +1965,7 @@ msgstr "X" #: appEditors/AppExcEditor.py:3909 appEditors/AppExcEditor.py:4031 #: appEditors/AppExcEditor.py:4124 appEditors/AppGerberEditor.py:2821 -#: appGUI/GUIElements.py:4137 appGUI/MainGUI.py:478 appGUI/MainGUI.py:4417 +#: appGUI/GUIElements.py:4053 appGUI/MainGUI.py:478 appGUI/MainGUI.py:4417 #: appGUI/MainGUI.py:4683 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:93 #: appGUI/preferences/excellon/ExcellonEditorPrefGroupUI.py:188 @@ -2361,7 +2361,7 @@ msgid "Buffer" msgstr "Tampon" #: appEditors/AppGeoEditor.py:643 appEditors/AppGerberEditor.py:5353 -#: appGUI/GUIElements.py:3467 +#: appGUI/GUIElements.py:3479 #: appGUI/preferences/tools/ToolsFilmPrefGroupUI.py:169 #: appGUI/preferences/tools/ToolsTransformPrefGroupUI.py:44 #: appTools/ToolDblSided.py:683 appTools/ToolDblSided.py:857 @@ -3516,15 +3516,15 @@ msgid "Add a new aperture to the aperture list." msgstr "Şekil Tablosuna yeni bir şekil ekler." #: appEditors/AppGerberEditor.py:2595 appEditors/AppGerberEditor.py:2743 -#: appGUI/GUIElements.py:568 appGUI/GUIElements.py:1006 -#: appGUI/GUIElements.py:1342 appGUI/GUIElements.py:1698 -#: appGUI/GUIElements.py:1874 appGUI/GUIElements.py:3769 appGUI/MainGUI.py:420 -#: appGUI/MainGUI.py:731 appGUI/MainGUI.py:790 appGUI/MainGUI.py:869 -#: appGUI/MainGUI.py:988 appGUI/MainGUI.py:1205 appGUI/MainGUI.py:1689 -#: appGUI/MainGUI.py:2147 appGUI/MainGUI.py:2360 appGUI/MainGUI.py:4922 -#: appGUI/ObjectUI.py:1132 appObjects/FlatCAMGeometry.py:561 -#: appTools/ToolIsolation.py:70 appTools/ToolIsolation.py:3150 -#: appTools/ToolNCC.py:69 appTools/ToolNCC.py:4024 appTools/ToolPaint.py:143 +#: appGUI/GUIElements.py:325 appGUI/GUIElements.py:1012 +#: appGUI/GUIElements.py:1348 appGUI/GUIElements.py:1553 +#: appGUI/GUIElements.py:1886 appGUI/MainGUI.py:420 appGUI/MainGUI.py:731 +#: appGUI/MainGUI.py:790 appGUI/MainGUI.py:869 appGUI/MainGUI.py:988 +#: appGUI/MainGUI.py:1205 appGUI/MainGUI.py:1689 appGUI/MainGUI.py:2147 +#: appGUI/MainGUI.py:2360 appGUI/MainGUI.py:4922 appGUI/ObjectUI.py:1132 +#: appObjects/FlatCAMGeometry.py:561 appTools/ToolIsolation.py:70 +#: appTools/ToolIsolation.py:3150 appTools/ToolNCC.py:69 +#: appTools/ToolNCC.py:4024 appTools/ToolPaint.py:143 #: appTools/ToolPaint.py:2926 appTools/ToolSolderPaste.py:163 #: appTools/ToolSolderPaste.py:1209 app_Main.py:6063 msgid "Delete" @@ -3860,7 +3860,7 @@ msgstr "Bul kutusundaki dizeyle Değiştir kutusundaki dizeleri değiştirir." msgid "String to replace the one in the Find box throughout the text." msgstr "Metin boyunca Bul kutusundaki ile değiştirilecek dize." -#: appEditors/AppTextEditor.py:106 appGUI/GUIElements.py:4158 +#: appEditors/AppTextEditor.py:106 appGUI/GUIElements.py:4074 #: appGUI/ObjectUI.py:1864 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:61 #: appGUI/preferences/tools/ToolsISOPrefGroupUI.py:295 #: appGUI/preferences/tools/ToolsPaintPrefGroupUI.py:278 @@ -4010,113 +4010,107 @@ msgstr "Kodu Ekle" msgid "Insert the code above at the cursor location." msgstr "Yukarıdaki Kodu imleç konumuna ekleyin." -#: appGUI/GUIElements.py:533 appGUI/GUIElements.py:971 -#: appGUI/GUIElements.py:1307 appGUI/GUIElements.py:1663 -#: appGUI/GUIElements.py:1839 appGUI/GUIElements.py:3734 +#: appGUI/GUIElements.py:290 appGUI/GUIElements.py:977 +#: appGUI/GUIElements.py:1313 appGUI/GUIElements.py:1518 +#: appGUI/GUIElements.py:1851 msgid "Undo" -msgstr "" +msgstr "Geri Al" -#: appGUI/GUIElements.py:533 appGUI/GUIElements.py:971 -#: appGUI/GUIElements.py:1307 appGUI/GUIElements.py:1663 -#: appGUI/GUIElements.py:1839 appGUI/GUIElements.py:3734 +#: appGUI/GUIElements.py:290 appGUI/GUIElements.py:977 +#: appGUI/GUIElements.py:1313 appGUI/GUIElements.py:1518 +#: appGUI/GUIElements.py:1851 msgid "Ctrl+Z" msgstr "Ctrl+Z" -#: appGUI/GUIElements.py:540 appGUI/GUIElements.py:978 -#: appGUI/GUIElements.py:1314 appGUI/GUIElements.py:1670 -#: appGUI/GUIElements.py:1846 appGUI/GUIElements.py:3741 +#: appGUI/GUIElements.py:297 appGUI/GUIElements.py:984 +#: appGUI/GUIElements.py:1320 appGUI/GUIElements.py:1525 +#: appGUI/GUIElements.py:1858 msgid "Redo" -msgstr "" +msgstr "İleri Al" -#: appGUI/GUIElements.py:540 appGUI/GUIElements.py:978 -#: appGUI/GUIElements.py:1314 appGUI/GUIElements.py:1670 -#: appGUI/GUIElements.py:1846 appGUI/GUIElements.py:3741 +#: appGUI/GUIElements.py:297 appGUI/GUIElements.py:984 +#: appGUI/GUIElements.py:1320 appGUI/GUIElements.py:1525 +#: appGUI/GUIElements.py:1858 msgid "Ctrl+Y" msgstr "Ctrl+Y" -#: appGUI/GUIElements.py:549 appGUI/GUIElements.py:987 -#: appGUI/GUIElements.py:1323 appGUI/GUIElements.py:1679 -#: appGUI/GUIElements.py:1855 appGUI/GUIElements.py:3750 appGUI/MainGUI.py:1630 -#: appGUI/ObjectUI.py:1866 appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:63 +#: appGUI/GUIElements.py:306 appGUI/GUIElements.py:993 +#: appGUI/GUIElements.py:1329 appGUI/GUIElements.py:1534 +#: appGUI/GUIElements.py:1867 appGUI/MainGUI.py:1630 appGUI/ObjectUI.py:1866 +#: appGUI/preferences/cncjob/CNCJobOptPrefGroupUI.py:63 msgid "Cut" -msgstr "Kesim" +msgstr "Kes" -#: appGUI/GUIElements.py:549 appGUI/GUIElements.py:987 -#: appGUI/GUIElements.py:1323 appGUI/GUIElements.py:1679 -#: appGUI/GUIElements.py:1855 appGUI/GUIElements.py:3750 appGUI/MainGUI.py:4692 +#: appGUI/GUIElements.py:306 appGUI/GUIElements.py:993 +#: appGUI/GUIElements.py:1329 appGUI/GUIElements.py:1534 +#: appGUI/GUIElements.py:1867 appGUI/MainGUI.py:4692 msgid "Ctrl+X" -msgstr "" +msgstr "Ctrl+X" -#: appGUI/GUIElements.py:556 appGUI/GUIElements.py:994 -#: appGUI/GUIElements.py:1330 appGUI/GUIElements.py:1686 -#: appGUI/GUIElements.py:1862 appGUI/GUIElements.py:3529 -#: appGUI/GUIElements.py:3757 appGUI/MainGUI.py:414 appGUI/MainGUI.py:728 -#: appGUI/MainGUI.py:787 appGUI/MainGUI.py:867 appGUI/MainGUI.py:986 -#: appGUI/MainGUI.py:1203 appGUI/MainGUI.py:1687 appGUI/MainGUI.py:2145 -#: appGUI/MainGUI.py:2358 appGUI/MainGUI.py:4911 appGUI/ObjectUI.py:1125 -#: appObjects/FlatCAMGeometry.py:558 appTools/ToolPanelize.py:325 -#: appTools/ToolPanelize.py:351 appTools/ToolPanelize.py:448 -#: appTools/ToolPanelize.py:477 appTools/ToolPanelize.py:538 +#: appGUI/GUIElements.py:313 appGUI/GUIElements.py:1000 +#: appGUI/GUIElements.py:1336 appGUI/GUIElements.py:1541 +#: appGUI/GUIElements.py:1874 appGUI/GUIElements.py:3541 appGUI/MainGUI.py:414 +#: appGUI/MainGUI.py:728 appGUI/MainGUI.py:787 appGUI/MainGUI.py:867 +#: appGUI/MainGUI.py:986 appGUI/MainGUI.py:1203 appGUI/MainGUI.py:1687 +#: appGUI/MainGUI.py:2145 appGUI/MainGUI.py:2358 appGUI/MainGUI.py:4911 +#: appGUI/ObjectUI.py:1125 appObjects/FlatCAMGeometry.py:558 +#: appTools/ToolPanelize.py:325 appTools/ToolPanelize.py:351 +#: appTools/ToolPanelize.py:448 appTools/ToolPanelize.py:477 +#: appTools/ToolPanelize.py:538 msgid "Copy" msgstr "Kopyala" -#: appGUI/GUIElements.py:556 appGUI/GUIElements.py:994 -#: appGUI/GUIElements.py:1330 appGUI/GUIElements.py:1686 -#: appGUI/GUIElements.py:1862 appGUI/GUIElements.py:3529 -#: appGUI/GUIElements.py:3757 appGUI/MainGUI.py:414 appGUI/MainGUI.py:4423 +#: appGUI/GUIElements.py:313 appGUI/GUIElements.py:1000 +#: appGUI/GUIElements.py:1336 appGUI/GUIElements.py:1541 +#: appGUI/GUIElements.py:1874 appGUI/GUIElements.py:3541 appGUI/MainGUI.py:414 +#: appGUI/MainGUI.py:4423 msgid "Ctrl+C" msgstr "Ctrl+C" -#: appGUI/GUIElements.py:563 appGUI/GUIElements.py:1001 -#: appGUI/GUIElements.py:1337 appGUI/GUIElements.py:1693 -#: appGUI/GUIElements.py:1869 appGUI/GUIElements.py:3764 +#: appGUI/GUIElements.py:320 appGUI/GUIElements.py:1007 +#: appGUI/GUIElements.py:1343 appGUI/GUIElements.py:1548 +#: appGUI/GUIElements.py:1881 msgid "Paste" -msgstr "" +msgstr "Yapıştır" -#: appGUI/GUIElements.py:563 appGUI/GUIElements.py:1001 -#: appGUI/GUIElements.py:1337 appGUI/GUIElements.py:1693 -#: appGUI/GUIElements.py:1869 appGUI/GUIElements.py:3764 +#: appGUI/GUIElements.py:320 appGUI/GUIElements.py:1007 +#: appGUI/GUIElements.py:1343 appGUI/GUIElements.py:1548 +#: appGUI/GUIElements.py:1881 msgid "Ctrl+V" msgstr "Ctrl+V" -#: appGUI/GUIElements.py:568 appGUI/GUIElements.py:1006 -#: appGUI/GUIElements.py:1342 appGUI/GUIElements.py:1698 -#: appGUI/GUIElements.py:1874 appGUI/GUIElements.py:3547 -#: appGUI/GUIElements.py:3769 appGUI/MainGUI.py:4491 appGUI/MainGUI.py:4492 -#: appGUI/MainGUI.py:4696 appGUI/MainGUI.py:4788 appGUI/MainGUI.py:4789 -#: appGUI/MainGUI.py:4922 appGUI/MainGUI.py:4923 +#: appGUI/GUIElements.py:325 appGUI/GUIElements.py:1012 +#: appGUI/GUIElements.py:1348 appGUI/GUIElements.py:1553 +#: appGUI/GUIElements.py:1886 appGUI/GUIElements.py:3559 appGUI/MainGUI.py:4491 +#: appGUI/MainGUI.py:4492 appGUI/MainGUI.py:4696 appGUI/MainGUI.py:4788 +#: appGUI/MainGUI.py:4789 appGUI/MainGUI.py:4922 appGUI/MainGUI.py:4923 msgid "Del" -msgstr "" +msgstr "Del" -#: appGUI/GUIElements.py:575 appGUI/GUIElements.py:1013 -#: appGUI/GUIElements.py:1349 appGUI/GUIElements.py:1705 -#: appGUI/GUIElements.py:1881 appGUI/GUIElements.py:3537 -#: appGUI/GUIElements.py:3776 appGUI/MainGUI.py:445 appGUI/MainGUI.py:565 -#: appGUI/MainGUI.py:4422 appObjects/ObjectCollection.py:1128 -#: appObjects/ObjectCollection.py:1175 +#: appGUI/GUIElements.py:332 appGUI/GUIElements.py:1019 +#: appGUI/GUIElements.py:1355 appGUI/GUIElements.py:1560 +#: appGUI/GUIElements.py:1893 appGUI/GUIElements.py:3549 appGUI/MainGUI.py:445 +#: appGUI/MainGUI.py:565 appGUI/MainGUI.py:4422 +#: appObjects/ObjectCollection.py:1128 appObjects/ObjectCollection.py:1175 msgid "Select All" msgstr "Tümünü Seç" -#: appGUI/GUIElements.py:575 appGUI/GUIElements.py:1013 -#: appGUI/GUIElements.py:1349 appGUI/GUIElements.py:1705 -#: appGUI/GUIElements.py:1881 appGUI/GUIElements.py:3537 -#: appGUI/GUIElements.py:3776 appGUI/MainGUI.py:445 appGUI/MainGUI.py:4422 +#: appGUI/GUIElements.py:332 appGUI/GUIElements.py:1019 +#: appGUI/GUIElements.py:1355 appGUI/GUIElements.py:1560 +#: appGUI/GUIElements.py:1893 appGUI/GUIElements.py:3549 appGUI/MainGUI.py:445 +#: appGUI/MainGUI.py:4422 msgid "Ctrl+A" msgstr "Ctrl+A" -#: appGUI/GUIElements.py:1020 appGUI/GUIElements.py:1356 -#, fuzzy -#| msgid "Step" +#: appGUI/GUIElements.py:1026 appGUI/GUIElements.py:1362 msgid "Step Up" -msgstr "Adım" +msgstr "Değeri Artır" -#: appGUI/GUIElements.py:1025 appGUI/GUIElements.py:1361 -#, fuzzy -#| msgid "Step" +#: appGUI/GUIElements.py:1031 appGUI/GUIElements.py:1367 msgid "Step Down" -msgstr "Adım" +msgstr "Değeri Azalt" -#: appGUI/GUIElements.py:3469 +#: appGUI/GUIElements.py:3481 msgid "" "The reference can be:\n" "- Absolute -> the reference point is point (0,0)\n" @@ -4126,19 +4120,19 @@ msgstr "" "- Kesin -> Referans noktası bir noktadır (0,0)\n" "- Değişen -> Referans noktası farenin atlamadan önceki konumudur" -#: appGUI/GUIElements.py:3474 +#: appGUI/GUIElements.py:3486 msgid "Abs" msgstr "Kesin" -#: appGUI/GUIElements.py:3475 +#: appGUI/GUIElements.py:3487 msgid "Relative" msgstr "Değişen" -#: appGUI/GUIElements.py:3485 +#: appGUI/GUIElements.py:3497 msgid "Location" msgstr "Konum" -#: appGUI/GUIElements.py:3487 +#: appGUI/GUIElements.py:3499 msgid "" "The Location value is a tuple (x,y).\n" "If the reference is Absolute then the Jump will be at the position (x,y).\n" @@ -4150,87 +4144,85 @@ msgstr "" "Referans Değişen ise, geçiş farenin geçerli \n" "konumundan (x, y) mesafede olacaktır." -#: appGUI/GUIElements.py:3542 +#: appGUI/GUIElements.py:3554 msgid "Save Log" msgstr "Kayıt Dosyası" -#: appGUI/GUIElements.py:3542 appGUI/MainGUI.py:161 appGUI/MainGUI.py:343 +#: appGUI/GUIElements.py:3554 appGUI/MainGUI.py:161 appGUI/MainGUI.py:343 #: appGUI/MainGUI.py:4432 appGUI/MainGUI.py:4691 appGUI/MainGUI.py:4791 #: appGUI/MainGUI.py:4927 msgid "Ctrl+S" msgstr "Ctrl+S" -#: appGUI/GUIElements.py:3547 -#, fuzzy -#| msgid "Clear plot" +#: appGUI/GUIElements.py:3559 msgid "Clear All" -msgstr "Nesneyi Temizle" +msgstr "Tümünü Temizle" -#: appGUI/GUIElements.py:3590 appTools/ToolShell.py:296 +#: appGUI/GUIElements.py:3602 appTools/ToolShell.py:296 msgid "Type >help< to get started" msgstr "Başlamak için >yardım Date: Tue, 27 Oct 2020 14:29:46 +0200 Subject: [PATCH 2/3] - fixed a bug in conversion of any to Gerber in the section of Excellon conversion - some PEP8 fixes - fixed a bug due of recent chagnes in FileMenuHandlers class --- CHANGELOG.md | 3 + appTools/ToolShell.py | 3 + app_Main.py | 137 +++++++++++++++++++++++++----------------- 3 files changed, 89 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33b65b12..771a6c6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,9 @@ CHANGELOG for FlatCAM beta - created custom classes derived from TextEdit and from LineEdit where I overloaded the context menu and I made all the other classes that were inheriting from them to inherit from those new classes - minor fix in ToolsDB2UI - updated the Turkuish translation strings (by Mehmet Kaya) +- fixed a bug in conversion of any to Gerber in the section of Excellon conversion +- some PEP8 fixes +- fixed a bug due of recent chagnes in FileMenuHandlers class 26.10.2020 diff --git a/appTools/ToolShell.py b/appTools/ToolShell.py index 2fda01df..02e093e0 100644 --- a/appTools/ToolShell.py +++ b/appTools/ToolShell.py @@ -74,6 +74,9 @@ class TermWidget(QWidget): self._delete_line.clicked.connect(self.on_delete_line_clicked) + def command_line(self): + return self._edit + def on_delete_line_clicked(self): self._edit.clear() diff --git a/app_Main.py b/app_Main.py index 17b041da..e2ebb868 100644 --- a/app_Main.py +++ b/app_Main.py @@ -1984,7 +1984,7 @@ class App(QtCore.QObject): self.drilling_tool = ToolDrilling(self) self.drilling_tool.install(icon=QtGui.QIcon(self.resource_location + '/drill16.png'), pos=self.ui.menutool, - before=self.sub_tool.menuAction, separator=True) + before=self.sub_tool.menuAction, separator=True) self.copper_thieving_tool = ToolCopperThieving(self) self.copper_thieving_tool.install(icon=QtGui.QIcon(self.resource_location + '/copperfill32.png'), @@ -3595,10 +3595,10 @@ class App(QtCore.QObject): root_path = winreg.HKEY_CURRENT_USER # create the keys - def set_reg(name, root_pth, new_reg_path, value): + def set_reg(name, root_pth, new_reg_path_par, value): try: - winreg.CreateKey(root_pth, new_reg_path) - with winreg.OpenKey(root_pth, new_reg_path, 0, winreg.KEY_WRITE) as registry_key: + winreg.CreateKey(root_pth, new_reg_path_par) + with winreg.OpenKey(root_pth, new_reg_path_par, 0, winreg.KEY_WRITE) as registry_key: winreg.SetValueEx(registry_key, name, 0, winreg.REG_SZ, value) return True except WindowsError: @@ -3736,7 +3736,7 @@ class App(QtCore.QObject): self.autocomplete_kw_list = \ self.ui.util_defaults_form.kw_group.kw_list_text.get_value().replace(' ', '').split(',') self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords - self.shell._edit.set_model_data(self.myKeywords) + self.shell.command_line().set_model_data(self.myKeywords) def del_extension(self, ext_type): """ @@ -3794,7 +3794,7 @@ class App(QtCore.QObject): self.autocomplete_kw_list = \ self.ui.util_defaults_form.kw_group.kw_list_text.get_value().replace(' ', '').split(',') self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords - self.shell._edit.set_model_data(self.myKeywords) + self.shell.command_line().set_model_data(self.myKeywords) def restore_extensions(self, ext_type): """ @@ -3824,7 +3824,7 @@ class App(QtCore.QObject): # update the self.myKeywords so the model is updated self.autocomplete_kw_list = self.default_keywords self.myKeywords = self.tcl_commands_list + self.autocomplete_kw_list + self.tcl_keywords - self.shell._edit.set_model_data(self.myKeywords) + self.shell.commnad_line().set_model_data(self.myKeywords) def delete_all_extensions(self, ext_type): """ @@ -3845,7 +3845,7 @@ class App(QtCore.QObject): # update the self.myKeywords so the model is updated self.myKeywords = self.tcl_commands_list + self.tcl_keywords - self.shell._edit.set_model_data(self.myKeywords) + self.shell.command_line().set_model_data(self.myKeywords) def on_edit_join(self, name=None): """ @@ -4193,7 +4193,7 @@ class App(QtCore.QObject): 'tools_drill_cutz', 'tools_drill_depthperpass', 'tools_drill_travelz', 'tools_drill_endz', 'tools_drill_endxy', 'tools_drill_feedrate_z', 'tools_drill_toolchangez', "tools_drill_drill_overlap", 'tools_drill_offset', "tools_drill_toolchangexy", "tools_drill_startz", 'tools_drill_feedrate_rapid', - "tools_drill_feedrate_probe", "tools_drill_z_pdepth", "tools_drill_area_overz", + "tools_drill_feedrate_probe", "tools_drill_z_pdepth", "tools_drill_area_overz", # NCC Tool "tools_ncc_tools", "tools_ncc_margin", "tools_ncc_offset_value", "tools_ncc_cutz", "tools_ncc_tipdia", @@ -5057,13 +5057,13 @@ class App(QtCore.QObject): """ self.defaults.report_usage("on_copy_command()") - def initialize(obj_init, app): + def initialize(obj_init, app_obj): """ :param obj_init: the new object :type obj_init: class - :param app: An instance of the App class - :type app: App + :param app_obj: An instance of the App class + :type app_obj: App :return: None :rtype: """ @@ -5083,14 +5083,14 @@ class App(QtCore.QObject): if obj.tools: obj_init.tools = deepcopy(obj.tools) except Exception as err: - log.debug("App.on_copy_command() --> %s" % str(err)) + app_obj.debug("App.on_copy_command() --> %s" % str(err)) try: obj_init.source_file = deepcopy(obj.source_file) except (AttributeError, TypeError): pass - def initialize_excellon(obj_init, app): + def initialize_excellon(obj_init, app_obj): obj_init.source_file = deepcopy(obj.source_file) obj_init.tools = deepcopy(obj.tools) @@ -5101,6 +5101,10 @@ class App(QtCore.QObject): obj_init.slots = deepcopy(obj.slots) obj_init.create_geometry() + if not obj_init.tools: + app_obj.debug("on_copy_command() --> no excellon tools") + return 'fail' + def initialize_script(obj_init, app_obj): obj_init.source_file = deepcopy(obj.source_file) @@ -5126,7 +5130,7 @@ class App(QtCore.QObject): def on_copy_object2(self, custom_name): - def initialize_geometry(obj_init, app): + def initialize_geometry(obj_init, app_obj): obj_init.solid_geometry = deepcopy(obj.solid_geometry) try: obj_init.follow_geometry = deepcopy(obj.follow_geometry) @@ -5142,20 +5146,26 @@ class App(QtCore.QObject): if obj.tools: obj_init.tools = deepcopy(obj.tools) except Exception as ee: - log.debug("on_copy_object2() --> %s" % str(ee)) + app_obj.debug("on_copy_object2() --> %s" % str(ee)) - def initialize_gerber(obj_init, app): + def initialize_gerber(obj_init, app_obj): obj_init.solid_geometry = deepcopy(obj.solid_geometry) obj_init.apertures = deepcopy(obj.apertures) obj_init.aperture_macros = deepcopy(obj.aperture_macros) + if not obj_init.apertures: + app_obj.debug("on_copy_object2() --> no gerber apertures") + return 'fail' - def initialize_excellon(obj_init, app): + def initialize_excellon(obj_init, app_obj): obj_init.tools = deepcopy(obj.tools) # drills are offset, so they need to be deep copied obj_init.drills = deepcopy(obj.drills) # slots are offset, so they need to be deep copied obj_init.slots = deepcopy(obj.slots) obj_init.create_geometry() + if not obj_init.tools: + app_obj.debug("on_copy_object2() --> no excellon tools") + return 'fail' for obj in self.collection.get_selected(): obj_name = obj.options["name"] @@ -5212,7 +5222,7 @@ class App(QtCore.QObject): except AttributeError: pass - def initialize_excellon(obj_init, app): + def initialize_excellon(obj_init, app_obj): # objs = self.collection.get_selected() # GeometryObject.merge(objs, obj) solid_geo = [] @@ -5220,6 +5230,9 @@ class App(QtCore.QObject): for geo in obj.tools[tool]['solid_geometry']: solid_geo.append(geo) obj_init.solid_geometry = deepcopy(solid_geo) + if not obj_init.solid_geometry: + app_obj.log("convert_any2geo() failed") + return 'fail' if not self.collection.get_selected(): log.warning("App.convert_any2geo --> No object selected") @@ -5245,7 +5258,7 @@ class App(QtCore.QObject): :return: """ - def initialize_geometry(obj_init, app): + def initialize_geometry(obj_init, app_obj): apertures = {} apid = 0 @@ -5265,7 +5278,11 @@ class App(QtCore.QObject): obj_init.solid_geometry = deepcopy(obj.solid_geometry) obj_init.apertures = deepcopy(apertures) - def initialize_excellon(obj_init, app): + if not obj_init.apertures: + app_obj.log("convert_any2gerber() failed") + return 'fail' + + def initialize_excellon(obj_init, app_obj): apertures = {} apid = 10 @@ -5278,7 +5295,7 @@ class App(QtCore.QObject): new_el['follow'] = geo.exterior apertures[str(apid)]['geometry'].append(deepcopy(new_el)) - apertures[str(apid)]['size'] = float(obj.tools[tool]['C']) + apertures[str(apid)]['size'] = float(obj.tools[tool]['tooldia']) apertures[str(apid)]['type'] = 'C' apid += 1 @@ -5293,8 +5310,10 @@ class App(QtCore.QObject): obj_init.solid_geometry = deepcopy(solid_geometry) obj_init.apertures = deepcopy(apertures) - # clear the working objects (perhaps not necessary due of Python GC) - apertures.clear() + + if not obj_init.apertures: + app_obj.log("convert_any2gerber() failed") + return 'fail' if not self.collection.get_selected(): log.warning("App.convert_any2gerber --> No object selected") @@ -5324,7 +5343,7 @@ class App(QtCore.QObject): :return: """ - def initialize_geometry(obj_init, app): + def initialize_geometry(obj_init, app_obj): tools = {} tooluid = 1 @@ -5347,9 +5366,9 @@ class App(QtCore.QObject): current_tooldias.append(tools[tool]['tooldia']) if new_dia in current_tooldias: + digits = app_obj.decimals for tool in tools: - if float('%.*f' % (self.decimals, tools[tool]["tooldia"])) == float('%.*f' % (self.decimals, - new_dia)): + if app_obj.dec_format(tools[tool]["tooldia"], digits) == app_obj.dec_format(new_dia, digits): tools[tool]['drills'].append(new_drill) tools[tool]['solid_geometry'].append(deepcopy(new_drill_geo)) else: @@ -5368,9 +5387,13 @@ class App(QtCore.QObject): obj_init.tools = deepcopy(tools) obj_init.solid_geometry = unary_union(obj_init.solid_geometry) - def initialize_gerber(obj_init, app): + if not obj_init.solid_geometry: + return 'fail' + + def initialize_gerber(obj_init, app_obj): tools = {} tooluid = 1 + digits = app_obj.decimals obj_init.solid_geometry = [] @@ -5391,13 +5414,13 @@ class App(QtCore.QObject): for tool in tools: if tools[tool] and 'tooldia' in tools[tool]: current_tooldias.append( - float('%.*f' % (self.decimals, tools[tool]['tooldia'])) + app_obj.dec_format(tools[tool]['tooldia'], digits) ) - if float('%.*f' % (self.decimals, new_dia)) in current_tooldias: + formatted_new_dia = app_obj.dec_format(new_dia, digits) + if formatted_new_dia in current_tooldias: for tool in tools: - if float('%.*f' % (self.decimals, tools[tool]["tooldia"])) == float( - '%.*f' % (self.decimals, new_dia)): + if app_obj.dec_format(tools[tool]["tooldia"], digits) == formatted_new_dia: if new_drill not in tools[tool]['drills']: tools[tool]['drills'].append(new_drill) tools[tool]['solid_geometry'].append(deepcopy(new_drill_geo)) @@ -5460,6 +5483,9 @@ class App(QtCore.QObject): obj_init.tools = deepcopy(tools) obj_init.solid_geometry = unary_union(obj_init.solid_geometry) + if not obj_init.solid_geometry: + return 'fail' + if not self.collection.get_selected(): log.warning("App.convert_any2excellon--> No object selected") self.inform.emit('[WARNING_NOTCL] %s' % _("No object is selected. Select an object and try again.")) @@ -7787,8 +7813,9 @@ class App(QtCore.QObject): return if act_name == _("Opacity"): - # alpha_level, ok_button = QtWidgets.QInputDialog.getInt( - # self.ui, _("Set alpha level ..."), '%s:' % _("Value"), min=0, max=255, step=1, value=191) + # alpha_level, ok_button = QtWidgets.QInputDialog.getInt(self.ui, _("Set alpha level ..."), + # '%s:' % _("Value"), + # min=0, max=255, step=1, value=191) alpha_dialog = FCInputDialogSlider( self.ui, _("Set alpha level ..."), '%s:' % _("Value"), min=0, max=255, step=1, init_val=191) @@ -8319,7 +8346,7 @@ class MenuFileHandlers(QtCore.QObject): date = str(datetime.today()).rpartition('.')[0] date = ''.join(c for c in date if c not in ':-') - date = self.app.date.replace(' ', '_') + date = date.replace(' ', '_') data = None if self.app.is_legacy is False: @@ -9293,7 +9320,7 @@ class MenuFileHandlers(QtCore.QObject): except Exception: return 'fail' - with self.app.proc_container.new(_("Exporting SVG")) as proc: + with self.app.proc_container.new(_("Exporting SVG")): exported_svg = obj.export_svg(scale_stroke_factor=scale_stroke_factor) # Determine bounding area for svg export @@ -9553,12 +9580,12 @@ class MenuFileHandlers(QtCore.QObject): if use_thread is True: - with self.app.proc_container.new(_("Exporting Excellon")) as proc: + with self.app.proc_container.new(_("Exporting Excellon")): def job_thread_exc(app_obj): ret = make_excellon() if ret == 'fail': - self.inform.emit('[ERROR_NOTCL] %s' % _('Could not export Excellon file.')) + app_obj.inform.emit('[ERROR_NOTCL] %s' % _('Could not export Excellon file.')) return self.worker_task.emit({'fcn': job_thread_exc, 'params': [self]}) @@ -9687,12 +9714,12 @@ class MenuFileHandlers(QtCore.QObject): return 'fail' if use_thread is True: - with self.app.proc_container.new(_("Exporting Gerber")) as proc: + with self.app.proc_container.new(_("Exporting Gerber")): def job_thread_grb(app_obj): ret = make_gerber() if ret == 'fail': - self.inform.emit('[ERROR_NOTCL] %s' % _('Could not export file.')) + app_obj.inform.emit('[ERROR_NOTCL] %s' % _('Could not export file.')) return self.worker_task.emit({'fcn': job_thread_grb, 'params': [self]}) @@ -9754,7 +9781,7 @@ class MenuFileHandlers(QtCore.QObject): if use_thread is True: - with self.app.proc_container.new(_("Exporting DXF")) as proc: + with self.app.proc_container.new(_("Exporting DXF")): def job_thread_exc(app_obj): ret_dxf_val = make_dxf() @@ -9804,7 +9831,10 @@ class MenuFileHandlers(QtCore.QObject): file_content = f.read() geo_obj.source_file = file_content - with self.app.proc_container.new(_("Importing SVG")) as proc: + # appGUI feedback + app_obj.inform.emit('[success] %s: %s' % (_("Opened"), filename)) + + with self.app.proc_container.new(_("Importing SVG")): # Object name name = outname or filename.split('/')[-1].split('\\')[-1] @@ -9818,9 +9848,6 @@ class MenuFileHandlers(QtCore.QObject): # Register recent file self.app.file_opened.emit("svg", filename) - # appGUI feedback - self.inform.emit('[success] %s: %s' % (_("Opened"), filename)) - def import_dxf(self, filename, geo_type='geometry', outname=None, plot=True): """ Adds a new Geometry Object to the projects and populates @@ -9859,6 +9886,9 @@ class MenuFileHandlers(QtCore.QObject): file_content = f.read() geo_obj.source_file = file_content + # appGUI feedback + app_obj.inform.emit('[success] %s: %s' % (_("Opened"), filename)) + with self.app.proc_container.new(_("Importing DXF")): # Object name @@ -9873,9 +9903,6 @@ class MenuFileHandlers(QtCore.QObject): # Register recent file self.app.file_opened.emit("dxf", filename) - # appGUI feedback - self.inform.emit('[success] %s: %s' % (_("Opened"), filename)) - def open_gerber(self, filename, outname=None, plot=True, from_tcl=False): """ Opens a Gerber file, parses it and creates a new object for @@ -10333,12 +10360,12 @@ class MenuFileHandlers(QtCore.QObject): def obj_init(obj_inst, app_inst): try: obj_inst.from_dict(obj) - except Exception as e: - self.app.log('App.open_project() --> ' + str(e)) + except Exception as erro: + app_inst.log('MenuFileHandlers.open_project() --> ' + str(erro)) return 'fail' - self.app.log.debug("Recreating from opened project an %s object: %s" % - (obj['kind'].capitalize(), obj['options']['name'])) + self.app.log.debug( + "Recreating from opened project an %s object: %s" % (obj['kind'].capitalize(), obj['options']['name'])) # for some reason, setting ui_title does not work when this method is called from Tcl Shell # it's because the TclCommand is run in another thread (it inherit TclCommandSignaled) @@ -10377,6 +10404,9 @@ class MenuFileHandlers(QtCore.QObject): self.app.log.debug("save_project()") self.app.save_in_progress = True + if from_tcl: + log.debug("MenuFileHandlers.save_project() -> Project saved from TCL command.") + with self.app.proc_container.new(_("Saving FlatCAM Project")): # Capture the latest changes # Current object @@ -10452,13 +10482,12 @@ class MenuFileHandlers(QtCore.QObject): # t.start() self.app.start_delayed_quit(delay=500, filename=filename, should_quit=quit_action) - def save_source_file(self, obj_name, filename, use_thread=True): + def save_source_file(self, obj_name, filename): """ Exports a FlatCAM Object to an Gerber/Excellon file. :param obj_name: the name of the FlatCAM object for which to save it's embedded source file :param filename: Path to the Gerber file to save to. - :param use_thread: if to be run in a separate thread :return: """ From 9b1e78d2850911f6bc6b2050f66bf372a7a04519 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 27 Oct 2020 15:36:01 +0200 Subject: [PATCH 3/3] - fixed an issue in Tools Database (ToolsDB2 class) that did not made the Tab name in Red color when adding/deleting a tool by using the context menu - optimized the Tools Database --- CHANGELOG.md | 2 ++ appDatabase.py | 59 +++++++++++++++++++++++++++++++++++++++++--------- app_Main.py | 22 ------------------- 3 files changed, 51 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 771a6c6a..21aa2c08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ CHANGELOG for FlatCAM beta - fixed a bug in conversion of any to Gerber in the section of Excellon conversion - some PEP8 fixes - fixed a bug due of recent chagnes in FileMenuHandlers class +- fixed an issue in Tools Database (ToolsDB2 class) that did not made the Tab name in Red color when adding/deleting a tool by using the context menu +- optimized the Tools Database 26.10.2020 diff --git a/appDatabase.py b/appDatabase.py index b2bda071..47a15c40 100644 --- a/appDatabase.py +++ b/appDatabase.py @@ -271,7 +271,7 @@ class ToolsDB2UI: self.tool_op_combo = FCComboBox() self.tool_op_combo.addItems( - [_("General"), _("Milling"), _("Drilling"), _('Isolation'), _('Paint'), _('NCC'), _("Cutout")]) + [_("General"), _("Milling"), _("Drilling"), _('Isolation'), _('Paint'), _('NCC'), _('Cutout')]) self.tool_op_combo.setObjectName('gdb_tool_target') self.grid_tool.addWidget(self.tool_op_label, 8, 0) @@ -1393,13 +1393,12 @@ class ToolsDB2(QtWidgets.QWidget): mark_tools_rows = QtCore.pyqtSignal() - def __init__(self, app, callback_on_edited, callback_on_tool_request, parent=None): + def __init__(self, app, callback_on_tool_request, parent=None): super(ToolsDB2, self).__init__(parent) self.app = app self.app_ui = self.app.ui self.decimals = self.app.decimals - self.callback_app = callback_on_edited self.on_tool_request = callback_on_tool_request @@ -2028,7 +2027,7 @@ class ToolsDB2(QtWidgets.QWidget): self.ui.tree_widget.setCurrentItem(last_item) last_item.setSelected(True) - self.callback_app() + self.on_tools_db_edited() self.app.inform.emit('[success] %s' % _("Tool copied from Tools DB.")) def on_tool_delete(self): @@ -2169,7 +2168,7 @@ class ToolsDB2(QtWidgets.QWidget): if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Drilling'): for k in list(self.db_tool_dict[tool_id]['data'].keys()): if str(k).startswith('tools_'): - if str(k).startswith('tools_drill'): + if str(k).startswith('tools_drill') or str(k).startswith('tools_mill'): pass else: self.db_tool_dict[tool_id]['data'].pop(k, None) @@ -2177,7 +2176,7 @@ class ToolsDB2(QtWidgets.QWidget): if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Isolation'): for k in list(self.db_tool_dict[tool_id]['data'].keys()): if str(k).startswith('tools_'): - if str(k).startswith('tools_iso'): + if str(k).startswith('tools_iso') or str(k).startswith('tools_mill'): pass else: self.db_tool_dict[tool_id]['data'].pop(k, None) @@ -2185,7 +2184,7 @@ class ToolsDB2(QtWidgets.QWidget): if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Paint'): for k in list(self.db_tool_dict[tool_id]['data'].keys()): if str(k).startswith('tools_'): - if str(k).startswith('tools_paint'): + if str(k).startswith('tools_paint') or str(k).startswith('tools_mill'): pass else: self.db_tool_dict[tool_id]['data'].pop(k, None) @@ -2193,7 +2192,15 @@ class ToolsDB2(QtWidgets.QWidget): if self.db_tool_dict[tool_id]['data']['tool_target'] == _('NCC'): for k in list(self.db_tool_dict[tool_id]['data'].keys()): if str(k).startswith('tools_'): - if str(k).startswith('tools_ncc'): + if str(k).startswith('tools_ncc') or str(k).startswith('tools_mill'): + pass + else: + self.db_tool_dict[tool_id]['data'].pop(k, None) + + if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Cutout'): + for k in list(self.db_tool_dict[tool_id]['data'].keys()): + if str(k).startswith('tools_'): + if str(k).startswith('tools_cutout') or str(k).startswith('tools_mill'): pass else: self.db_tool_dict[tool_id]['data'].pop(k, None) @@ -2354,11 +2361,24 @@ class ToolsDB2(QtWidgets.QWidget): if wdg is None: return + if isinstance(wdg, FCButton) or isinstance(wdg, QtWidgets.QAction): + # this is called when adding a new tool; no need to run the update below since that section is for + # when editing a tool + self.on_tools_db_edited() + return + wdg_name = wdg.objectName() val = wdg.get_value() - except AttributeError: + except AttributeError as err: + self.app.log.debug("ToolsDB2.update_storage() -> %s" % str(err)) return + # ############################################################################################################# + # ############################################################################################################# + # ################ EDITING PARAMETERS IN A TOOL SECTION + # ############################################################################################################# + # ############################################################################################################# + # ############################################################################################################# # this might change in the future; it makes sense to change values at once for all tools # for now change values only for one tool at once @@ -2522,7 +2542,7 @@ class ToolsDB2(QtWidgets.QWidget): elif wdg_name == "gdb_ct_mb_spacing": self.db_tool_dict[tool_id]['data']['tools_cutout_mb_spacing'] = val - self.callback_app() + self.on_tools_db_edited() def on_tool_requested_from_app(self): if not self.ui.tree_widget.selectedItems(): @@ -2541,6 +2561,25 @@ class ToolsDB2(QtWidgets.QWidget): selected_tool = self.db_tool_dict[key] self.on_tool_request(tool=selected_tool) + def on_tools_db_edited(self, silent=None): + """ + Executed whenever a tool is edited in Tools Database. + Will color the text of the Tools Database tab to Red color. + + :return: + """ + + for idx in range(self.app.ui.plot_tab_area.count()): + if self.app.ui.plot_tab_area.tabText(idx) == _("Tools Database"): + self.app.ui.plot_tab_area.tabBar.setTabTextColor(idx, QtGui.QColor('red')) + + self.ui.save_db_btn.setStyleSheet("QPushButton {color: red;}") + + self.tools_db_changed_flag = True + if silent is None: + msg = '[WARNING_NOTCL] %s' % _("Tools in Tools Database edited but not saved.") + self.app.inform[str, bool].emit(msg, False) + def on_cancel_tool(self): for idx in range(self.app_ui.plot_tab_area.count()): if self.app_ui.plot_tab_area.tabText(idx) == _("Tools Database"): diff --git a/app_Main.py b/app_Main.py index e2ebb868..af54daf3 100644 --- a/app_Main.py +++ b/app_Main.py @@ -5648,35 +5648,30 @@ class App(QtCore.QObject): self.tools_db_tab = ToolsDB2( app=self, parent=self.ui, - callback_on_edited=self.on_tools_db_edited, callback_on_tool_request=self.on_geometry_tool_add_from_db_executed ) elif source == 'ncc': self.tools_db_tab = ToolsDB2( app=self, parent=self.ui, - callback_on_edited=self.on_tools_db_edited, callback_on_tool_request=self.ncclear_tool.on_ncc_tool_add_from_db_executed ) elif source == 'paint': self.tools_db_tab = ToolsDB2( app=self, parent=self.ui, - callback_on_edited=self.on_tools_db_edited, callback_on_tool_request=self.paint_tool.on_paint_tool_add_from_db_executed ) elif source == 'iso': self.tools_db_tab = ToolsDB2( app=self, parent=self.ui, - callback_on_edited=self.on_tools_db_edited, callback_on_tool_request=self.isolation_tool.on_iso_tool_add_from_db_executed ) elif source == 'cutout': self.tools_db_tab = ToolsDB2( app=self, parent=self.ui, - callback_on_edited=self.on_tools_db_edited, callback_on_tool_request=self.cutout_tool.on_cutout_tool_add_from_db_executed ) @@ -5702,23 +5697,6 @@ class App(QtCore.QObject): # detect changes in the Tools in Tools DB, connect signals from table widget in tab self.tools_db_tab.ui_connect() - def on_tools_db_edited(self): - """ - Executed whenever a tool is edited in Tools Database. - Will color the text of the Tools Database tab to Red color. - - :return: - """ - - self.inform[str, bool].emit('[WARNING_NOTCL] %s' % _("Tools in Tools Database edited but not saved."), False) - - for idx in range(self.ui.plot_tab_area.count()): - if self.ui.plot_tab_area.tabText(idx) == _("Tools Database"): - self.ui.plot_tab_area.tabBar.setTabTextColor(idx, QtGui.QColor('red')) - self.tools_db_tab.ui.save_db_btn.setStyleSheet("QPushButton {color: red;}") - - self.tools_db_changed_flag = True - def on_geometry_tool_add_from_db_executed(self, tool): """ Here add the tool from DB in the selected geometry object.