From e8778199456a6a5a6aef62ba42027c8b04b0595d Mon Sep 17 00:00:00 2001 From: charras Date: Thu, 18 Jun 2009 20:51:01 +0000 Subject: [PATCH] Pcbnew: Added: Option to show the via area while creating a new track. Better code. --- CHANGELOG.txt | 2 +- gerbview/gerberframe.cpp | 2 +- gerbview/gerbview_config.cpp | 2 +- gerbview/lay2plot.cpp | 2 +- gerbview/options.cpp | 2 +- gerbview/tool_gerber.cpp | 2 +- gerbview/tracepcb.cpp | 2 +- include/pcbstruct.h | 22 +- internat/fr/kicad.mo | Bin 186265 -> 186677 bytes internat/fr/kicad.po | 686 ++++++++++++++++-------------- pcbnew/class_track.cpp | 4 +- pcbnew/classpcb.cpp | 8 +- pcbnew/dialog_display_options.cpp | 39 +- pcbnew/editrack.cpp | 129 +++--- pcbnew/pcbcfg.h | 18 +- pcbnew/pcbnew.cpp | 1 - pcbnew/pcbnew.h | 6 - pcbnew/print_board_functions.cpp | 5 +- 18 files changed, 481 insertions(+), 451 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index c35ea6f2bc..78e4adf66f 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -9,7 +9,7 @@ email address. ++Pcbnew: Added: in DRC tests: tests for vias min size and tracks min width. Added: Option to show the via area while creating a new track. - Useful in compact designs to know hos to place a via during track creation. + Useful in compact designs to know how to place a via during track creation. 2009-june-11 UPDATE Jean-Pierre Charras ================================================================================ diff --git a/gerbview/gerberframe.cpp b/gerbview/gerberframe.cpp index ed52d94884..a6676a2af0 100644 --- a/gerbview/gerberframe.cpp +++ b/gerbview/gerberframe.cpp @@ -59,7 +59,7 @@ BEGIN_EVENT_TABLE( WinEDA_GerberFrame, WinEDA_BasePcbFrame ) EVT_MENU( ID_COLORS_SETUP, WinEDA_GerberFrame::Process_Config ) EVT_MENU( ID_OPTIONS_SETUP, WinEDA_GerberFrame::Process_Config ) - EVT_MENU( ID_PCB_LOOK_SETUP, WinEDA_GerberFrame::Process_Config ) + EVT_MENU( ID_PCB_DISPLAY_OPTIONS_SETUP, WinEDA_GerberFrame::Process_Config ) EVT_MENU_RANGE( ID_LANGUAGE_CHOICE, ID_LANGUAGE_CHOICE_END, WinEDA_DrawFrame::SetLanguage ) diff --git a/gerbview/gerbview_config.cpp b/gerbview/gerbview_config.cpp index c2d0578023..b167624646 100644 --- a/gerbview/gerbview_config.cpp +++ b/gerbview/gerbview_config.cpp @@ -51,7 +51,7 @@ void WinEDA_GerberFrame::Process_Config( wxCommandEvent& event ) } case ID_PCB_TRACK_SIZE_SETUP: - case ID_PCB_LOOK_SETUP: + case ID_PCB_DISPLAY_OPTIONS_SETUP: case ID_OPTIONS_SETUP: InstallPcbOptionsFrame( pos, id ); break; diff --git a/gerbview/lay2plot.cpp b/gerbview/lay2plot.cpp index 3f4666ea74..8507dd9219 100644 --- a/gerbview/lay2plot.cpp +++ b/gerbview/lay2plot.cpp @@ -28,7 +28,7 @@ void Print_PcbItems(BOARD * Pcb, wxDC *DC, int drawmode, int printmasklayer) DisplayOpt.DisplayPadNoConn = 0; DisplayOpt.DisplayPadIsol = 0; DisplayOpt.DisplayPcbTrackFill = FILLED; - DisplayOpt.DisplayTrackIsol = 0; + DisplayOpt.ShowTrackClearanceMode = DO_NOT_SHOW_CLEARANCE; DisplayOpt.DisplayDrawItems = FILLED; DisplayOpt.DisplayZonesMode = 0; diff --git a/gerbview/options.cpp b/gerbview/options.cpp index 550a8d1d7c..0570a921f5 100644 --- a/gerbview/options.cpp +++ b/gerbview/options.cpp @@ -390,7 +390,7 @@ void WinEDA_GerberFrame::InstallPcbOptionsFrame( const wxPoint& pos, int id ) { switch( id ) { - case ID_PCB_LOOK_SETUP: + case ID_PCB_DISPLAY_OPTIONS_SETUP: { WinEDA_LookFrame* OptionsFrame = new WinEDA_LookFrame( this, pos ); diff --git a/gerbview/tool_gerber.cpp b/gerbview/tool_gerber.cpp index bed09ba043..3a9f34abf2 100644 --- a/gerbview/tool_gerber.cpp +++ b/gerbview/tool_gerber.cpp @@ -87,7 +87,7 @@ void WinEDA_GerberFrame::ReCreateMenuBar( void ) ADD_MENUITEM_WITH_HELP( configmenu, ID_OPTIONS_SETUP, _( "&Options" ), _( " Select general options" ), preference_xpm ); - ADD_MENUITEM_WITH_HELP( configmenu, ID_PCB_LOOK_SETUP, _( "Display" ), + ADD_MENUITEM_WITH_HELP( configmenu, ID_PCB_DISPLAY_OPTIONS_SETUP, _( "Display" ), _( " Select how items are displayed" ), display_options_xpm ); diff --git a/gerbview/tracepcb.cpp b/gerbview/tracepcb.cpp index e240553a37..056ab6ed6c 100644 --- a/gerbview/tracepcb.cpp +++ b/gerbview/tracepcb.cpp @@ -43,7 +43,7 @@ void WinEDA_DrawPanel::PrintPage( wxDC* DC, bool Print_Sheet_Ref, int printmaskl DisplayOpt.DisplayModEdge = FILLED; DisplayOpt.DisplayModText = FILLED; DisplayOpt.DisplayPcbTrackFill = FILLED; - DisplayOpt.DisplayTrackIsol = 0; + DisplayOpt.ShowTrackClearanceMode = DO_NOT_SHOW_CLEARANCE; DisplayOpt.DisplayDrawItems = FILLED; DisplayOpt.DisplayZonesMode = 0; DisplayPolygonsModeImg = g_DisplayPolygonsModeSketch; diff --git a/include/pcbstruct.h b/include/pcbstruct.h index 99cbe12412..055939adc0 100644 --- a/include/pcbstruct.h +++ b/include/pcbstruct.h @@ -268,6 +268,17 @@ public: #include "class_marker.h" #include "class_zone.h" +/* Values for DISPLAY_OPTIONS.ShowTrackClearanceMode parameter option + * This parameter controls how to show tracks and vias clerance area + */ +enum ShowTrackClearanceModeList { + DO_NOT_SHOW_CLEARANCE = 0, // Do not show clearance areas + SHOW_CLEARANCE_NEW_TRACKS, // Show clearance areas only for new track during track creation + SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS, /* Show clrearance areas only for new track during track creation, + * and shows a via clearnce area at end of current new segment (guide to place a nev via + */ + SHOW_CLEARANCE_ALWAYS // Show Always clearance areas for track and vias +}; class DISPLAY_OPTIONS { @@ -279,10 +290,15 @@ public: int DisplayModEdge; int DisplayModText; - bool DisplayPcbTrackFill; /* FALSE = sketch , TRUE = filled */ - bool DisplayTrackIsol; + bool DisplayPcbTrackFill; /* FALSE = sketch , TRUE = filled */ + int ShowTrackClearanceMode; /* = 0 , 1 or 2 + * 0 = do not show clearance + * 1 = show track clearance + * 2 = show clearance + via area + * (useful to know what clearance area is neede if we want to put a via on terminal track point) + */ - int m_DisplayViaMode; /* 0 do not show via hole, + int m_DisplayViaMode; /* 0 do not show via hole, * 1 show via hole for non default value * 2 show all via hole */ diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 5c3005edaa78eb6c9c9c324b72aa90be6866c532..fbae68be7d6ae0ff70db0ac0778c403a718a21ba 100644 GIT binary patch delta 58491 zcmXWkci@iI|M>CS3L$9;$y@f`D`b;WGLq1usEm@VhFhqpghZiGG&Hm)6@6%krf6tb zl}M5XN}uQRKCjc>zs34H~D?O^PVa8((}c#-yTQ`V1yaCJMR4k24u^6tzZulOahbL~&WRAtb z=zU|cd?u64%%I@FPvgnBE^gS4M^QhF#FojwBUu8AQa>5(@U*Bm!XngLN4+!Vr+yw5 z!d`LxLbTt3cr@c@uA;z%GuNXXPevb@j;(Mu-ijZif%Ms#$rQlL(3xC;w%?2eaVpx+ zbUYF7L;HU^T!}vS0ajrA%ytULV}T#ij7p;&RYyCn6E?@AsCU4^cvjdm+WVnPa~Yb6 zG3Zic(IvVQ%iv?^^Q$rIOx~y9KpW73zX-oU*LWMAhWl^`9{*z|Ga7G1XZRbs6or4v zWQya-XzHtk)zOU9itA0VF!lC7k^hPm&Z40@4nrfIgKUn>b65mFLOcEfOX5y6V}D>Z zEV?TV*Z`eSstjg_+^(aBesckK(}x(3vkmm*fRBBdeqSA-c)7p!e^_BDfz-^0Di&H;>#jw~f znapum8na%gNx^}eVF~Pt-f#i>z}4vWG3fnM(She+349Q}{v>++4Rop2MSWvj--^!s zcXUEWej)!xSZHsGv>19rDRc==K|87v?e)Ub!%pb)=V3nVgC(#px3$Km# z>-Um>&*vB#Ox^gnFadp|O+>HHLOZ-S>i35W!iC{O;nMIi^bPq$)K`W7L;HIt8x8Bw z8E-&mvMJiX2)_=$4Y!6n!XLw*(T;x!e?$BG1MUAWG@#6{>AvhqQ7DVY(0(eq1a;6? zadY%*)f?Rt!_X9G(WRLl-iOtxKZNd?b?AVb&;Y&*x1t%{p6c1m4{_nA@aJ$3dgI=x z|Ax8Eg9ds8t73_LnM{3bj1BM#Y=ZY;3*3MWvG8w922V%79iy6Tiaqu+IKWrY=svruZ~ohC8qhcK$sDd_C5pJ{b-C8La5}-xLjh zqbaX&Aicp_qA5Hd4d`OL2d_Z`&i_YhKL$%tuYi@Y0UB^0^f>lI10NFgYodM=W>4V4 z6bhzx9=f(mu_Qhp^|#RhKStMlOVocrJKm25cqlCPXS)9swEybp=e#uR<|}EV|h$V_)nU?N5d;p&5D$4PZSw zUUmxw2lxeR;6Zc~RXUVB6WdT9j+O9fJPkiV137@cg8xMaC~!D=ESkacX#dsG%r!^S_#ck#9mH+aC2F(GCuv9UMXfJo?{sUm5hd^5_g}q8Vw5u5BB1&-BFB zcqKC9%%j*1S79yBe~BY0)h*C9y%O;coqx}|i zFWeRF_ec99=z!0n0j+r?GUdR?^RMreR-qTUTFQtun> zH=vohJ+99}C-5M8S{_FOc?R7x*|#W|+RxCAe?n9D2YQSSqHCS6U`q9|Xdq>DEVm8=9(JVZlPFUI7jKbaW=& z(SZk{DZUmBd=k2sW}%r_gl^6!Fn9jnpx}d_qBHw0ZrC05BWTKwJ}TW;7VW4S+TIWy zusu3ZZ}j*MM3?pkbo1SbX6ywt;7@GNQrJns8%q>Ur{GjPg?bZofS%|~2BN7RiC5!n z?21RwfzK?GPDdYXO8rK3rq82$VlC$3M`%C$Fl(g870s8q7;EBeoQ7v&`J>aC4n_kQ zjz)eH=8hlsqCOv;z+N;H|3$r2v6Ru%&|f@t(fiKF8aTKZ=ijxR84XWjb?TpEZ9Ee7 zTE+8ano;kKo|3!J0G>h5^J{3wZ=p;1akPJfW?*~N|3m})2i>g4l;He(yiP2UA}Wgx z&=FmNA?QF;!n?!!!-vDC&`tX?x@7CofwrJ8sJ-YC{e|{d=$N#JN@gjz>B^#OQWe|a zndqjOiU#y7o{XPicie*x)T(3}s2e)di^GxV(oR8_?g8|)Jc&NH3hgiZF$KR$yU^4Z zI5yo_8||m_zKY)W8QR}=Y>dTAr5U$FpYMkBo6THK!2rgg zk=}!*>LGM3pFx*sCHf*+jSlcWo`qjVd*$QOn$|{B+z9QbHQMjl=#un9`yGbW{Qi%p za4HQC|3D)ye|(x@6ZHI_hknKSqp7?R9q3+k&6i*mdpSReOeJ*;$M+U>p2--wr^1Kfzt_--_y2hhyEgf7iT zQU4j;3k6T&{97nP!IaiTJ31rm5ndkG$D#w?j;3-U+VQjK?*9M{d@Gj2qf6(@G{UOr z9_WV#I0LW32TRBIzwpUvrYGR(TsRj^`82GF4`F*;kG?`nmdTfCi*?ZZN1%Z%Ljzca z2CxgwY@xF0IF~@%Yobflxh&`3V|P9c&U`GoW_O^GK8tqzCYsXE(HF;FGy{L2U%A5N z(u=4T`XXw89_#kux#*_rhc4j|^myNwrO<)GTi6y0oRVhP5#7ZD(HRUw1H3-GJ)Dm& z!PDr#??wBUQQw0G`ft=rmQQ;u56wWfF$GiF0o`Pmp)CPEa3~t!IP_FaK~KZ|=>5-QanJwT6r9mV=)l|JhJCpkXvj9>OG;{(>ZTI}YM8OVLqaA#L4)krb{}S#0q8%Px zF?Dz{dVgiK!v;}rA9hFYAAt6EH5%A>G@vP%H8nFS=u))9SJ4O7qBm|tkK^}frv65E zeX-NhlGQ`oJEHerfc7^i>SNJom4etsx^AOJGvB?qnR9wt#LXw!VmBk{10>A|68i1O)?+7@o_Zr zAJC=QkFNa*)$?V}$J*#jCSd_wjLv*%xE#&YtLT!vg-&RFT;GCb@CRgbW;44fc>WK@ zg<>^Q0LP*?o`NnxMRZMTqcd%Z4sag27cN3SyJOK^KM@<^-ROO*(M|Uunz{X0)bn4a zW=d5hbSYY(GiZknbSAoqE<$HA2wjp<=sbLIWBcU?3X6aCFmU!~5d;Gw4iSM+f=05&e#KbXub{liKJ2tM`UmKQcOy%j%^cGt?cSKdt*1c2l6*Z-anZN6pXMHHo)HKX1Wbc@zdyo-(r9K0}Z4{ zixj{>bOP6+shxx#zeh0l?LY(m8huafi|d)wIsc}z0tIhqgH5n^)bBvobP<|?N6@u@ zDts|q8LkP}ha1B!;SO}1J?JUQ*OK#Zp?J%bqSELltBf9>`sl!Y(HUNX9@CL%AQRCS z&r~$f>F9)JqkHEC^tsQ`etyJOxEEcrTCF($ZiY6kQe@-NfbK@ub{;z5W9XW_jGl(i z&{MJ{{2|H{T(2cOQF3e3a0cwnJ0c z8QlZ@(akjs4QM=?!O77+1D(JF=>1Qk$9*L_PIeOoe~IitBP`q|4O9Zn#BpfH<)dB= z-CPaPP1^(Q_$su+8?Xn?M1NpxLo;_6z5nF4sl7fDNH)`zf)Niw2fPNI;SK4A%nbCq zy)4{-?&{yr-CU$ydj4c|rj@ZOHbReMKXlEebMcHb4VvhX&pq4YW_xhoJY3K<}G?X6~-e*_5JX zH006n7CON9=mUGgf8u)aE-7_&(52{zrg$j2X>UO%Fc;0hVssNej?R2dxH#wSQB^PRhTW=HJ#V- zIFN=9&=l4^E2XdrdTu+TFOG}Rfyc%5saTKtJakRpM+4o4KKCm&#=>W(P2CDz+WyEm z+03OB?086c3!2ge=s?e*sauVnj*Vz$_M>ZjOt*C0Dxd?m!TQ(@&B)DY2Jb=xosR~# z4$FD|w^3+F!x3za4bDlCUW2u%-;KT*SD>j}9exmg9)1_@3V#p(4GW)}o-Y-aQ_p{u zXs8#q2s@wypMx$*FEj)FFb~H?`#dzT#ptGcBHEuvGxr*riS=kEzD6^<3$uRB4pPV+ zx9;h@7e?RVWzbX(MFV&My?+Th;8SQoFJmp-h&3>CUaHqbKf`^{(=jgU)6x5$Igj)2 zo9s&(9N=Gc#szz%wLKbbFNe0Dh6Yd_J*ExNnY0eiL0`=mp)aIK*aGLG&wq^ew+YSE zH$6E2cDR!U-5dTDW_qUfqTz92xv+9rCv1v#+$QQ>!t=rl!-3(@Y!t2!Zw_w@XN32o z9X}NHW#RMTinzWeTpw->w}d;wJ?Lr49-!cH%GWEUygZtsx@d}Ged!R8I zXd859ozNNgi1xl{KNq7D7=-pS49(DZ^o2DUeZk#}xxfE=f`YHkm*a+ya5eSs@eO>q zPkO^$dO2tUw3)6wSnTwEy4Hfs6M|FSye%_xJzpC{*P_A2jlt z(bV3Cb~Fba@KJQe&!Yps7VT@$nSYFD;^*idIQ7C5KyCCGwnCpDg9dW*g`9r}m`#JJ zT8h@6LsRy4xE>8?6S{eJq5!VDHEx0JsrNyjn}_bL$I%}&&!W%2-H-F{ zKpSY#&1lNDq7nXvc2Kx~`goj#cF-BkNZ+Vm9`!Nk3@4%eO+yEojZSbOR=_9GaX!dW zFy&vP5A2Bg-l+eDEosj;ApN#$jRw{i9cVvO_IXoi+W{S7Sc_y1iA zMzj$fcqcZ%-_c`J<on21205>m@G%vb{*ElkI?%Mp_#}xB)x!+Lj$abX0kQ9 zgk8`;`=R{~LyzH2nEUrXGbxOw;Sn@|a#yB~Dxw3`LkDV#3$Y8D@*mJOJdAmG1iin) zRq2#e4eOzMqB(m1rD(oIp4(EInJnLCJX-XbGXza`M?WzoPZW+|LUp(dV=H=-TCj1II8eV2b4 z^-X98-=cx;L>Bn7 z2ch?08{QO74evz*T8#GhB)aymqVJV=u&}@Xw?)Ix*qIAQjZ7V%gU;+ibV;s8mt+Du zquZkWF1&;KVjP0Cu1lMBHX7g)XeM7qm*g$<7;nU*J^u$OxVsCEN)eYsAE=7%-g;;t z?W5icP3>TGW~0%-CPn)l=yUV1Cq9Mlq5sgODR6yS(ju7q`@iET*ii*EWwpa*=-z0L zzOj0uACIfi0j8pRV*xsWN6=HW5}o;%Xn#A=`}d*mfdZq`1j>)*{JSY?)8Gsmq4kz% z2HK-3I~xt;QuMxS(E-MVQ_u;_LfK}-IAD{tmj`ppiIsabRLxV4%ztMAC zYE1gCSe3%5*oXFCup)LGo0eoSnwhcK9cQ3>=sPr!s^d~%Ezp^Fj{2o&Aj7j1jBqTP z+DYgucrlvFRZ;&24e(!d?N1t?I`}OE^6XW{b$ON;Qg%m1rVFfnD z@6gCjx-orZ+M-J`2n}#FdVaHLhYQd>u`GNJ&BSZyOg};c*%W?<_VW|g_WbXs;1X20 zDW#|;+F`x08QMV`bl@|iemOeh;b@2B(M>oxoEhy8qR00!Y>cm>{r`f6JpX@C@P%*~ z8(`kesl%S=00YnrT#3&31~kP}(ZKIV2VN4_pN;l6(M|Y1x<|I4&+SJ0J&aikg(sv7 z$D$%o4cdE9;eQXbjou6t5fJh zgBi%811&`(eg$jeJ7_?^qXQj5?>lB9dH7JS&iQ+rg0IYv&;hsSF7T>FXK?gwX}6w))~kh$!ZzXA;RWF!wBKvc%{mzk zY%aQ|7Gv)F|2zdZ(;L_bKSN&-g>O%5SQ7mv9FNYl5gJHy^mukeGtnPilELWl8iU?< zJGz9k!^hG4-oV`7|81aPN87@K=w>{2YU-#K8bB*F@&V}2^bzQqPsggb44vu6SQEFS zDL-afdafKg(K={mI!uf6e*q2d@`>n79>hF+9PRLZ^fS8!bAR85x#M<6+Ef={1Fm0- z&h%mQ4=Aso8Tbm_bU%be?o1P|c_-)J&D4$t*QQI@16_jtQ6CfzkM^-)HoQHq&xrcG z@F6q<%i{XWXn?EG41R70uEhcL6coHGrSdd1u&(HPpgX#z7o+F;8Z_Wh=$^P4U9w4N z;18l1djvfNZ=lb=gC6hA=+b5XpfNZMy%Vr(!$$VCk7D z!20NBIvY*pW$50Rhz9l+o{pO^4@=ET8Ec4UrWFqG``?>_H$I0QaSyh{2KS^?4M#WE zJ?M>^ymBT=%yQsW@J9Pw6BEkqD!_p>RYii<7a-O;0%i1n{KF%wWv1? zFUF?S@4&ve8l8FBIccE!crEpF(6xON+v9e0rd8*rfX@hrqI>Ip%>DjfNWnFJ65R{0 zp^?86^-X9>x1(!&2<@Qced%8~oru04T4L@+gl@LM;aK$fsb~fkh0E^a{QJNQH2Cg* z6Wz^gF%Q?_rMMg2#og{td*FOD&=Kfnyb;aF^l%9}&}(QQ|3hEx8`1msVjgDZasHiA z#d+z*rs&MOgcqR4ZwT7q7_`HQ=zz1(%sqw%^b-2~+vpznG_L=O2JkN$K%V zJT`67wdxfPMLU{|XW?u#fNwDme?n7UbU}Kq2HJ5u^!WBd?;n8%JPzGc)54dcJ-d~H z0qhS8J&*=I8J%Huw1YFy4!fi8`U}xbI}vZhMK})2J(%vhH(ZEj@NqQ2SJ3g^M_$d@ z%oYl+`A_H`_yv7~9SHvk3ocCU#lsWO`%eigg*C$lVe_yJ+HYrcLg(h%Ie(W>a5oP| zXE-eCW6&kI3H^xNg>KgS(fgK!Powv}g3jz+bbznWuiS1lQ~!mhE=qf$HRk^Q{{jj| zb~)O?Fto!g+R=<~aa?~6-E3>n419u~jxW%_wxXMIcX$vDr10YOjVXs_yai_M;0y{a zuv1*fq8XWjUcUow^@5~2g%g=Tm`xcuR4 z>S#3$?)J~n2X>(y91IIBN%c};dGzyH1MRRAIzV4Eb3>wicsMbfjZW}UbmC8EDfn*R z7#3TaFLMs{_SgewVn^JDZL!)T$t$rD^<~%zzrnMy(xd6ca}AooyU@TMMEAy1I09eB zn=o7Du{86Cu^tVtVk`U!eXz>o>2ur|8&V&RW@a(E$(}+xemz`+&hSI@bNzX^7tL_t zWhrCjkxcRLzbV*3Q*;-%MUP8YbSbVxQ#uYkeiOoJ=vv>4&h#O4Pdtx4w+0P#Bj(}v z=!Eh;kzV=7;xT^zt57hq#^{4*h5e%aYIJ~!(LM|PsrC?hY~PCO@1g^Kflg=#I-$Mj zz<;5e^r$EEW%6M$JeBb?B`6qqZ8VTG(9O|1>NldF&sk_nA4ivBH5$kP%){fJN=wxU z-5bNO7A{7=73n1pM?KB?_qSOq3U)ja4djlfKY(WBCG?}R7OUX*=uD4Vo-%VB zI^#;{jO(ENG)0%}O!Onx3(dg7XkW6N^Y7X&r@?_@GH(`F<^9<+T&Gst|7veF`rjD*e0~&+(;%(Rr z%RQHVtoA}T-<&>%*JTOx}iOY%coBUV=<0n|UQJyn}Z5 z85-dhGy~h?`cG(}f1oowjQ(Oe;pG%iZFI9Wj(QvPbaX-cxdP49)p7l1tmFB=m4e6N z1$51JptdChg zK65F!)*G-V{*9j3vtLht88sJOyKm4`{)`^WU(tZ`tw?Kn0(xI{bcRjPOteGq>w_-c zRpUW|`x(m&~p)3VcS>(+$gR^z%`#5xF z<$e&m@H_PQ{)cAh=nW}D*|HSe z-F2`!c0>mpj?U=X@cM9EcvCnroDxnA?+Ryz_oDsYAN2*vY-Uk3ED0YApA4S~UqCx} z1x@+uQU71~PWXPfKKv;B6wTP@=&|00xqturHw8CK@efn#E1+xD2u)c>binRt>ifp^ zfoLj6p=&)Ey>BYIB(u=_=b@)-3EJOEbQ8XdMY0q&QSdYQUEFX0{h0iR23F>yG*E4< zLcJCGUKogWI07ATJm%poXdn-x0X&J$_@$_SfClh6=KlP@gMuCGMtAS;=&sH8ar*2Q zMhB{jp7#dmea+F1I-@f@AMIxZn!zz>0Joz7%|bIaAD!S6AIJG$LxY>`y|{5b<|4$} zwC{-aQlF#&%7&+*Yg!Wxs2TcPCv?WW(bIHwI02o&J#l^BC!Bv@4A0PDgsah4=sI-9 zd(c$>h0d(Nr)hv<=uFC@_t%ViH+0|uXdu_2r|Xuuet%qlJnC;|DLC+l=nOWa0qqR` zLQ`1uv($b(n(8X({b!&v>V_^^FLX0rh-T(uwEv-KKi8vyPl)T;yD2!+1!xD4Vm^Ed z4P-gGG^?V0P1N5B*G2n>;m2qIpGJK%+RvBh@!gH~w>QeCq<*wF44Z__b8`M#M#C9lyRakLahLFHw8QS`Ug&|Y^@VZ$ zns5}l_G8ieZbLJ0H~LLkj6SylbLamP3a-sp=mR^jI_`<~6F*Ngs(=PiJ*G&K-5aei>pAU8p&|A||L$ix`iIbU*cS6|O5g7e*qHh>JRRReH{(I9 zjK^(Gd#M?kf%fQT>wyMv8Jf|{(TQHUne%@+g==ZJ5r%fF4g3i-;BVskiC?A9bWJp{-smYAkG@eS;v$^=Rh<7uU#AP5(6#D|4sbOZ z={$5s51})97Jad-iuy+M{vGH5$8SmZRYgC;P0{CjM|}`_d~eB8aKIVpi{>G;gQw9S zrK`|C`Fw%?0{RQx8^?c>255yo*9{%0FZ%qLa2guu1L#scixu&GblmK23O?{}cx1(>!-rLeKy#$@fRcPwRpyzrLnwbZ&9zKb+@awSf_Vhp3*9Z;# zX7&5Ol!BY=1N0UA85+o!=@GYP7vrt? zD;ntNot%GDIhlg5%-QIG51@fOhaQ_(qW&g&{~Gj|ZbUP4^baYeC!$MM8x5=_y6M`Y zFSrZQy)X#fGh=>;@Bi&In9@7rhWpWgo{Sq`L}$1byWw}}n%Dj@U*OAb!=KT;@GCmNA6OR)?@9MHMW1gO zc11IA0Xng3(M)F1{^y{lW-&6sZ00En-uQA{Sc`V}2|B~?qP_?1;1JqDp(e;DomG0gq%|Gz}R09MC^kI{&~MF%{92J&Cji|<XcoRB3VaBTq<%9#gTLb0xag0xWV_J-_oJtzX!g%E)6>uw zOMNtD&!9`O27TZMG=P86nI8LBdf~LkX4Ef2@1KLd312}!V!vTitn+u;W0zxB>eJDW zP3dVI_3U8=y1p8V*1=-8E=OH=uz}3umKy=|OalEWl{%j8k7jqcua&<-v^pBs-0?i^zVP3i3_izsr?!q@DDVALizIN*03a+nHG2jUW6X6 z|Dh=^nLmGSX4TOE>tjtk8$AtUusJ>-?#`dhpE-?&$_4W0*1QXv!v1LL#-bhFinVYt zdjEQK2EU@IFI6yq?uAqhy}uLsSFo3&f!&O5>bdBiS&qKIR%aZ5CX0eZ{^V{Y@I=l@|eu=g6cMR4tZ2_diNK23?|c=yQ9} z2^>O~B!6);&-p7y!5KF}ALxbdfzjbCG}TX|OZ7H7qb*V2gRbdOCDIJb;OW$xqk)dX zAvg)$%s)r_0nGjH{}ebTf9}n7Dtb<9qMzkv=HJ1N-F1L#^mjXtmeo#_wgn*NCfQsmf_u?pzSTch`# zhdy^HI`i@9b5qfY%}2+1EZSc^mh*4JIvVWwYjn5nM>{;aRGM*Fw7ojo-WFY=^Uwf> zp_$2|?}zDV0MDTTtO`F3cf|ESOL6{vu+VX-gS^YUycScIKS1yM676pndTRbgCsZMOeA>Ou&Khq@gels z9eqNYd1Lf6^hGl?1s!lPIZ^!lb z&^7%k{1J;$KM?iIN%?dC9~nxZ?Y+_6e`$C%@-fP0uBXtL3**D(al>{rBfp>>6fB)O zI2OIXEOx-|Xl7=|^{22J^_S7p@NHb*k9pLKot*BkjTJrroha1j!VvV`eSi1@`o{V& z`~}aTUc5|tvz?7IsgFc6m%nVvR8>5idQ)`GC!qn)Lf?q*;9%T?x&QsoUgh%V{-7`l zP4(FDb~NSpMg2i^NuEYi`6l{3e-EAM2J}6!6${{B=;l3)-dFUL^xQFMU?*el-~U&m z;99mq&wp3+6?_%C39rNEcq_U$-o#q?F*>t<(1040Pn)$RIzTV<)jbeh%He3gQ_v-w zUY_&sEB8?vO!a$s0{(~&{0}-{$y1XR(Lfuar=%@9^FioGWh}Zxi_v%ecW3}Vq66+B(FZTZqws2Uz>(+=iQCW)m!Ny(W%T}c(C0r!XTAjuyj;bUnd<1K zZiTh+0`&S6w7={u3T~REXh*N3sd^{cKSEQu6J4TxXbMZ7mhL|l?XV^qSTl4KQz`xMI15eH4cG$jLIZgR>)(%ldtfHc#rtq7)~%Ul z@Cy1OIfC`Da;@~P?~ShMwdglvGWxz)fZq2MdP=sS&ljpqCOk&9D0suUXng|uMtcZd z)3s&$PixSQiIjW4s65gzw_DxU*h1 zb=0SR+HBXMyL<{d;1aBjn=lUxG)OLMnEqbZNGtOOQQC z!AOcXN}hnO(JAO=se-leT=b1~13J(w?1&4{4!_49_&54)KdW&XU=X@D#-K|x89gQU zApvGHuf+{(F?U>|{tdbmKcf#8ZIafyJlbJLG^IUo9bSO$ozt48nKnb0=nQO)=b;n5 z8=c@>JkImKh=MbF9^HiRqwn-D(GGq@Q*{vC-Nl=wl%Iyqq!GFq&qp`yNHnl}(SGKm zOY%6n1h1e=^CnjE{I8?nDcFmyWs&A-pfcE>dOh?7awj_Aqv(L|q0jBWJUoKVtU`-4 z)9Ps8_0b7-K$o%~x~Xr&-2eTb7brOM56}+2MkCyTzTx(vOL6My=~dktJx*El{uj|1 zzkx2*|Ij_M8SQ6lwEq(3Ynhhn#Fm_Y&uvW_{Ke86eV{Me!R45TBhWRU5!W9;2YNhQ ziEg@&(M;{a%2=>fdcH<@7JB}NVm+MJit}HE!fP~me!oLE(SLE{39a*IhEi{c4!98A z6VIbFUxV(64QPPdqrMN_%txIO=N&yICu43&!VXyqu1z2GJP$`_atGSs5;POfqHF#- z`oh_S-j}aUdcG{?QEw3TL<1XzZn|k`W@m;EpcBbHPQgfDM;};=&h%?^hQFeFGV(T~qiba&4{ z16daB&!Yiu3V%ieKZ16ALi?1dMwmyvJG!*jVlD${W*@-ZzyDcA!6kSD9cUxE2fjhi z?S6DKtPdYh{Nzo?2ez~HCUx%x_=J3<_pnGK8G&#YCO&J|E&eg*C}P9 zGCGq>F}Fr&fU_{S>(LCYM33F~=o60g84`Rz(NyfIi;~^Kb}eJuXw@h9%g5 z`U_}^c4AfBk7lAwm$c^9u`Ttc=q4PC1~e1Tz!$L({*GqutTWS3xNFcrmtk&GpUL^p zZ9W=wZTNBcb@&7Nz;EHh@?V-NJJ zIRQO>lh8GP6kUp^&{Op?Hp12D8}$#gzmn&1{%t5n!8LD!6|pPYJ`{bC+=_0ZhtWOq zDmvhXsQ-rEcT|rQKqWMQ8t4QXq1QX3FQP%{L`L=C{QF|Lfd*4G4V}TP@IG_~52C4i z9PQxc@E!D{vk9HRUTlT=d!~Wg;5O<#aSJx-l|J{!^-dFP-kbAp06l5&)p;4ZmN&-@ zGtlF<41H6sLf?2_NBsciQ7?IZIkd!@$Kl$XNS+C8QBomzt2WtPxv=Fn`Tx69k2;Hz**>;pC4X=-hUOkmu^BQFc*D~Jdx_z%r*+9>d&|# z|ApzeoP-8a37u(8bbvdVedlzjM)3HW+jN z`yW#&_`qy*Mo*wOu8a0ztki&HIW&MO=;>&KX5t)llMX=l!f13UZbMJcJaj_K zF!%3&UZUWGYr~CbK-7Qzl8ZOO(`yo23!f- zVgvNK>(Kt@WGT4W7NV(q5e?)+G=R_0UHo;_x1kUIjL!J?u+U}c1y&jjq!HTRndsUN zM3-zdx;LhwFTCu-6infp=zt%g0c=L!TwCyFJctG|c3`@H0=h|OpaVXJo}QKHfSb`w z{fzFVgW<7*Qoq%Z>)A|43T~QSXk?e7GaHZf@J=++6=;W>(Sd(JGj{}Cq7yDp?I)vw z)<^qmh6Z*Xy2pm1OLilc_Rs&fQZQ8yqTlaV&|SX?9q<5F#{yTR4r-$Vw8EO$0o`OH z(1BjY-0qJ0b~KP9=*Ow_;It=tV?)3H11Xs5Ip|EE$2|NH4d7R_<0EJwWrn1H+oSgn zK+p3ybZ<;SzoOI88PCQ#xFp&?iTY;D{rmqySEe;Bj=q`7WA255F3mY;X8NHosPX8Y znTM|J6X;T`#@V?Y4$Y<)Ns(dcPbhWK0k1@N z@ksQ2Fa@3Y40N|YgQk29nyHV`CHfZ4#6fg`lEc%$EzslF1KkT(p!ZM6QgFue&<HgN}anD{t!Q(I_ z9Eq;ojp*9nf-c3~XdrXY-Tefbp_ORhAE7h<8r{slq0b+4ZR)Qa+D}DvQ&vX;$Yz>T zFg0z%-e^Zxq7O_!H_feRU~{AX02=ty;VU?d`fBWebw{SmUWd+f9{QemDC&>kQJ(*& zDH!RC;cB$w57DLg0^OuPpfmj!y}#&nDe#lf_L}H%ZHn%hPSJi|)CXWL(`dgVG57EP zvJ_0^UFgggp&h)0zKT~x``T##8XfQlw4?oDW>i|5W6*)}(0*!$O~SU}*_ic)J`{Z5 zvT$fPI?RUC(3#Ih_rPLog3m|$PgtA!A9y96c6~ZcccOdZUUaFSLziUj^_+iq?*LMt5`DF=@t^qk&$FzWHvzIye^%Xbo1wP3WFEf=;mH*wla7umKv# znPWNsJ~)5|cjX9lh7-{CJJG-%#Ix{4bQArDE=_@PY0ZnE9hOFyuol`+JG9?((er*W zI^pqH1s7!F!fN!!Epfvh^u2J*_%!n-=uFz7?}2XUn{O~W;50O)i^9jkXVCY=D_9vn zN1s20zUZkmhk8Y~!XylF2H&r_{uzqpV57HsKij zIlSz~^q=Lvz^*dL4DoZf_2paa~D4sa(L@M~xwYvcMy=$`oo z&0xL>X-`x~2F#p?ZpQhT`}hB^P;kcYplkja`mW!J&Y%!`#8+_{bf5<4i>W1=^7dF8 z&kEgB_O}#${yB6ru0;dhgl2FX9>@D9^P2@MI5Alo-Q6|OfI6cO_C+&rIePzf=-S_k z)o}s(bz6fS@egc@r{9vkjw8{ve+XT&6_|AwzC*!*_MkI55*{@vZJuM$%~Bi9K$EZy z+EG_*h`pozcJy@23g?Ck(0&%9pXFtfIR7@hM}sr`1RdZTG=)E+$L|0-P_fA=r6-|# zq$V187VT#i+VOmBiLap<`vYBq0#nk2PC)x@I3-fwl?FQ+fVuZT)F(uJCVGAsqYth? zm*7)$Eq9^=9fZg}xb!+@3O9AMG#Onu0f;ho=52bd!ui_ri2EpgCwq zOTrh?nXirO8`016HuSll(7^Vgd#v!(v~+dQK-wjycwP74s^VtcabU2eTxpa0*V3>&Hz`_f=V4tO6F!12!A5lETd)r9Lzm>#yVGfEg1O)SZ7G=g zF6fNTM~~A0^w?byUK`$s-hUgqN$*8d{|dU>-$D1(7wGf9h5w+ZtMH8UeCZjSe>`7zq@?x-Ke&eTtunKtD`=n@V>Gdl#G=$$h;|2}vR z4MzMhx`r#zf!;-r$=B!-?M3hV4_$(jXQcodqu+?`Xhw!$9^QeT^C!_`z7E~I-=j-$ zboQS3J&%5sx}dxIa&(hS!A7_cP4TB_M_bVj{z3;nW_J2dH&xLA`l9WV(6yhBKKEW+ z{}$U&&lb5ieLT)Y2Of!Ca26WCm+0~O9bKvu=cE}{LN{w?^asW$bkog3GdM4N1U*&H zMSVs1ZfehFK8qW^34cU8`Yq}Q!vb?t21=mE=@c};8feNppcxsAru=4Xh!3Ef@FR3{ zeuZXo4;JwE|6vM7{2zM0i`|#j^jI{ITIgCgLQh3^G?jhP42(cCw*cK6E71ElVpZH1 z_0spJz0?TZ%$+g!fB&~X1yeWU=m58R8c`9o+Ruc85NMmKA|htjvCWY`IN(taaO#t$Fj{5PP`^Wk*k6nudC>u84; zEXki4gk!Keeub`ifu-sG`dEniU^KvC=)gCl0p5weU+zcO{Bd+|yn(*BzRXf^lO4c1 z_z$|4H6KYG^g&-lgU|=YqDyuUx@liR2Us2TPtZ;J4chMy=>2=q8JBuA1vm$N6K0oC z@Ho7SMz#rk5$#7eWy#0V0Cms@TBE!DGW5P%&sbwi64bWrPE$UZ<6VVAQKu^DVlKLsBc99|QS3vUVU2xp@mKY-5oQFP!}&{yqSXn*U_)A1Ra!7tI7 z??RX0&*hwdJ1Y20>hKu!b9*wn2Wp|4s2!Th^UjD9nIL7&@?J@9a}pYvSG zKu@&)zUbHV5_F=sWGNWoy=WkhU>>dvzd;{366QUhB5#kL{|nIP2VqUT9t+?iG_WP; zW_%poq_3mTeTq&n`z-}iyeG`OkRm<-eXuM#K<%(Kx|ZjnDZDrwg-&27K>hyC3UQ-y9ZsDSZuF z;2_#(VQc&YUAjgu`wHj$T}`1S4U6#{+=AXv^OYDFU8_mx%;%t+_7S`tpTRq@*{kUV z^)}X^{vCF}qOYY)oP&P#2I1Mb5KDUgf2QD!4xt?ve?55;nt?p@mrgZwFSJ85HVAzq zPDbxrjIQltXv$wemu_|VDS8~YqsMd?=Fa~C3Lc;T&`nZ&MY1y5K`Zq7Iq1Os(6zq- zUE>+yBk1!h&H73lWdtfTM zyO&});V|@6>)P{maNJ(Fr|)X5vHiKLi5H-IW;uFlvL8^WO5tZT zg{9t3DQtiS)&)(~`RD^<(Y2q8rua#8Db}E$+xPJ*{1Kf{kN>4WuE5u+-;4vW`I_A4 zIGdS6!57B?bnS|*O)0C0!>M;f1AHFO!Y}bMto%;;N2s^q1nMiIe)_xVU&~*EU1|Rt z&1n1gQl`#D$LWu`fB!o&SKyCY=*;d5pF-DoHP*#n(M@^k`{}+~=;myT1+Xi+Bif~XaR}|G><4N0RzL^pfS!sT z*dA}eJY0irzMbeXEU`X)q|U&$)UR64`M2-{4IZ!E*aRzYNPl+ghwhE(Xv9m=Q}6_u zu@}+Z{sx+{kI*Ih44vusXomKoFS4Q^rc9N^eAMfIm`xowq`~9SJUlyYxH#&Uq5+JG z`gnA}yKo@R#LoCT`u;fmqx3Hz2V-~YZ=jp8#K-Z1Lo<0*mV)PW1p1D@4SmBcMrW`R zP4RkkjlaU&jL;=1`bpXgHP8T?hi9N`-!VKJ&0J5cjswt)WN(cd=7tZV120AQ!i&+q z5)I&g=x+WJ-6O?5O#zffm#!)r$N+S}fmj2Fp~rVF+W%H$V%f}Z6k5>mA3F0EpQTKk zk7ni?bd%nWewH6WQ@;gWvhUFje@E{xurbZ79Qu{39X3OsYmdGGJLlRte}gF4(FnAo zTf$jr3Lgp|N0;asbkn_$Zo;q8SM&~a=KrBHFZ6kOz9gE-lh6#Eie|1i=KlNNr4$@^ zIJzb`V}86Fjd&J%eCD75y@PhR0S)AHG>{+B0QaGLW>auoVFnrKD`v?ncG#?nZ3v?!xZwZohkWXa9fSxvp{QnP=vl6?O?%tS?qR zA&tYzVhgdRmugsd;_El~_?O4%Cke53Ddv-8!pg~WV&$sxs4a?>k6TaK3VF}R&;&Nf z$aNi)k0;~;wMS?Txf0|O4F&MqK$r%bx$q($jlNxl&IYvj-BfNd-*9}*%Sy1;U3O~}V8#<&(| z6vGZPcrFA<=yU})CclV!F9t1QNHUE+)cSEkky6;T4DL;R2Jt%ZBH7gP)N2@y27|H4 z6MBZCL*Plp=Kw=40C`c7zAO<&^9uAhzKA~yU1qR|d?rexWbV3zQHSkdK|96O2eY60 zIXM1kUHUI*?{2Unrk}xdV}M9wbew zi4rv4qjo9_?x8n7_2<}1irauKr#Cc{1!M4yF*p+$uo#tR2ze4{2=Ekx>d;(=1*&nn z7g&*5*d8n*vJ;HRLms}Bdg2M>CV;=K4{09aOVlRN6DByc9K0F8%yHoHm*>rDBu1hq zI6*}Kds$!-aUgyeHY=NcVen=>p$xr^KaYAftQ&C)2t{%c&&SroroeMk7oP%050)ti zu7c(!^BiFMrtBaJ3jv4>VAC8BTO@(}AC_>TDI6=(n0k68Nd?{kOfhPsIq3_uEV%=E zBg+++Ru|l@bNpD&RlWwc*F+Tv#*u7H?yfH2uFajac{tc3U@TJC;;3DrL)+5FSGeEd_~OQEH1WJ2j59mu_;F(<@_$bDm3kuF#p zau4(-KEmNdZZ)+_*uC_1q#mI7lGxf{mVjT6ZBP9>c7;6t_X(D;%^ebdWe`?gTDW27 z>!~}iLfC=K`(q##4qS+_o_uO{^xUqjLo-;on!WpG~XdkA{~^rAKyzX7?LXj_O|C{dX9*I|grFlxL! zGyI~b0r6+X@*6>!Z_v@*O=(GLYK% zGihxNu(x80Kq*p%k>6QOBsZFxdT)9P^uN@_=V&@EP5a zclk5P8JgCyz(dY1QX0Rt*3236pA%W=9gB1YKLnnwkaou3PQE@`hk-`rc*k;w$=v~S zL=T!H6@TFl5)6dTOHZ_ehDMNVrJ*qPIJGeB9|rs&CokJ)<6C4T{fYGMV!=k({KTEm zt@Mbr1)GY&BGVaek;3B0U-+w9Y^&ES`8O=FM;ycxvfZe)jDY9|i2-OS249Dx6vL-8 z^oSL3H#|0|MQq_2q&GQ<9-}XRREMk$Ha825;e=gKk=y7FJ!w1YE;Kt6zhzJd;x@YQ zIQj*)1S?-OS<8KJzZsYp>@9d-v&>hPENSj_HM|5M(p4&m0w;aGy#~7jS2x?fSrY{h+aWc zF`yqOal+)_jKlQc#{J_sU_ySmUYdPSC^3rrrpQKy71j2 z?|?qVcTDSHh75za5TMdJK(aL;DvEB2?~~$eEDmKgE>oV@Eix9$GEjxE@>aT6fsV(f zBA1U^IQVwhPuQL?7YA3>s{b!}Yq_F9X>dE>XbGPP?~ZFUbR}t#^^hE7kccgQ8uiT? zhH+qZ8Ys$AYCexUnLSw+e zfEwW!r+8h7Z6I@$MQ9vEO=O|f(w@{y67SU;n22APTnn&yu_8A)bqw|oJklBoe;1th z@+l_^#5E*qCB7_mOq(S=oLHolo_Ym6e)y3Zm!m!&{1FDYqnXK%0H1}W3SyJspUu#@ zLV_G&t}klzq|pWNF@jh~k7EY`6nTp;a*pliLB5liZyXxhp>^r&h+R+32P<+5U!*WY zt84EG`XGncOZG{L5gGUEJs&^b@rZa=3>2*pKv=pl7fVf{c2KO%&ZA z$fC{9A=*vH5$cJ;hD^r)!2$&#s0Y>$Y-Seq(H_B6r0*%Z5Wh9~e#~eO<^X;t`sBNe zBeBkKo6a9Zp^+{j1aoK@4nV}6A?pB^L{pRZ1NVdl_A0(P#JTY|DgGQi55OjK;x+g& z)JD)Zn;E>l?*Byp&rGh3xGO3W z1hzbR8y2uf)1nTjBPvoAe0{VT_#rHQSM#TcAIi7WL~av|VVKBEz?I}w5T}LM1v>>5 zi3DfIiGm^VA}&oF4rVpEJ93>^k=z_+IXVKahv;x>i_td9!yYCn$B$GD-6@DHktHCg zOQS{3OA1rts#k+>Yaqgi$i4ZbY(MVb4nO(4Go%pmYjQIRU(dg~&_ z0E*?=@DUBK0Ibpz$T#Ul0u(q8%rBPMNGwn8UOFHM`~~%EQ>#wx8v~Yt-vqZS{#TYB z3ReXEDQGKtGSHJvzMXaw;58cC0D4C;G;beehJe!`=;V;Nd1N;UXz=AumB4x1h z(}%HO+n^)R&X8pxUkL3?EHVndS_~aPugEKgFDI7`Yt&qN`YOpc14l8a63I^#MOqO5 z#Qx?4lOP#M{-2)a27Y=5-GD4vmo+uNFHLTlEf?UBeBCFbfK02K{|$9roI4cEjtO;g1JMFMY4d)MQ$+m3;JDq zw!pc_?DIMa(n)OE3mpJRWFQ0k(Rc&UQ%*h+($nB}lRrm16Wl6dk&2LI;WXRyhF0qW z5#&S?6_-upi^LseA^0QYzm!}^!)p=)DYSy@yf!RWqJ9kB#&RiUK0_5SHHgO$=TXw; zkd?H$k>|vh;0XsimV95hJg`0KOG3ZF`5HBS{_6oSg6-!3=tILC3X>rCM?8*LWF&DW z^ahKHyo1n{`b2aV_?*<-AZ~_#*$gpklmRMn;BV=H8Z&Dei%$V>`uyjnz(A5Q6pPa| z3L6XQ7MAk>Xpx2F`+(oUA_cLfz{n-6BCepzP9rxOTt4#6$lt^U18PD3GqDTtKNK+< zO6pb;mE|w*b-Z$FUw>`MQ&63#R3a7zNo_;)e5GC{DJ&sXh!(*gTIJh zTsB5Z%g6s@B?tj9g<;bGG`Au-OOuE#`O6GVjg_CX)mDrLx%u>sXL*qlkgui3N#iBd ztK-kLy2TmvhJnfI0@xKm41h`42tY4v;*)n}Gv?$HijgkCJd0#gjwt5ULo?{^S;=n% zJCK}3`j8vTj9KJ2ke^K99V3>(dz837y!ojGg9}uiaB3I8EtXeiZ3)^za2|aM@El8b zR-g=7M}8Z5i#Y4>77RHH`3$T`b+zJ;#V??@FR@4xyq(hSmQk{Puy zR|c|Jw30N#E@Y{{5O}bVMLvRGtIHn6o zusT`;<+qwlZ*N)~-y0RN1%KM?8Vb{2grOo`S>OR2-O)H*v_APB#F>cW6I z!t#H$m?V#$uoO{I^4nQrJymJ29=BqF`VlS{+LmgP2jdSBSpdnNV zWk64Esv$LtoWNfUaVo3a6?p838^DjWUT4_r|PMOLhK5N|Bc2lorc=z z1*=oK;!lTIq$Af@S^axzB|jd_Czkz3Zaln0Bni(+OmzmXrY{{TlGXI@m~blT0@VN< zrdU(~16brTggeRq0T-z^)siKfGUTn*a;B4ji9;lt1GUh438OHL5B`t=o-kXDeeIz>9v-D+$jjJX>B9e0&p~ey93-a!HSe6 zf0P9Rup(XMmqD^K`lIm%A7Il2Inb1YyF=`*ZIX_{K=uy6R=SoSyeJ@roLIIV35 zo1Ok$)DDo30@s0s`oimnpAN01oLA)ys@(v}A-m|dYly976=c28{^${!MUK%>1X3qX zGe+@U=^uImqb_N*Ten>A5FapzQ{1OXUri#E7ZsB0f`+H zognOw{X*j|hBVgeno9l(8V#{XMwZNpe+TmWO8QT&)T_dKQ4eqkY;8Tn0&>X$Kn|Ke zvGKgekUk1{rZyCUT@0A0w^Ew?KZvf98%=XPmb*#rfYu*jU8(0r^PqXrig26*vmAd7 z%l*WTqpvqh%pfi-Pwd^$S`=16+D$h;Mr@G|5dWZQJcC8v(^!cfi}>pe<=39RTAQtl zH3T2Y&8^3FhvT*txA8Q@A~{L+Qhy2lR=}TWS_4@o^dCcVYrP$(ngC`om{m&FkDNsc z@9RR3)^CM(R*IG#ngxImh{Nue+kfCn$w#S+ywDu8uDRVGw3+r zU=~`5wjs92TIz}5iZfso$${D*ql;E1|4#9_sI_MCCDe*wMb^M)`TJ)|Btt0j!fJ@b zg=lU|<4|k>wZho%kc)(1Z&UjM*+9)n{sr+h;^_?QhChu1TI3IYoMKH+hm8R=5aeT-B8nMC?mYu%5ch+tCOzrF{?>YCIA2pQ zL%a~~%=UVIN0Jc~Q`1n0hV~RwAbUq%B#`)^E_fP@H#KXCX9eiky|Vf zNp1tfi!kUjDss_m3`r6z-wk;h?SVd~d6_0-upSC-zyk6)B8021Kt2b!i;!C+KZA=~ zVsN?P+CVM^TsHix_;L7^(LTf$d5(V(ym1m+?$c|ksJ4~fKz~ISq`3_`7cx&U^_1u} zxz7yOy$!n*pTbQ(12+J>8tu>W7MTZlzBbf%Aa*c>Hq!4A&FILedlB zPsHAUHUs{O{f4H6NW@;T;*YR8*(P|lNfIf6eqp(h)W0!Yg#S&}B;)8`0M{F$Z}Nk< zx)ie0ydM7y1IJ+(v)u{QiIeW9KA)UO5Oo&_vugZ=zBqXy7k^<_YGXOj{k3Ao^Qgn( z4Z{kMJ*YW=si{ZFu6H5WZ>)7rrqO~Lo39z{HXT0_(QNvBx~%a73a z04NA~5a+%E$xJSy(C3;BgMy)YJMM_}zQoF{$EG!^0 zUTsxycc~RXS28CDm~Qf7?h;Mj`VhPYyd3`z_CAASSY|py&gj5JKnLbL$B$y!*=Tb!h+m@RY^(d^*-i8s?5!2ts0MywX@3BD~$ zU6Uo4Z+HXP6YviTB6c*T)4|;t{278uG|Z&IU7CugEQW zLuCnMD7eXR&LfwfUSn|*O)2>6z@=(uLNEihmTojPCzpg)pl>ZiBI!8YLxzxh` z*wLE{vhoZZ2zEO+SOjoEy-7=-*!$p1z}XY5KXKdm%6B}B#mIT!-Td_Bae zSiL31-86T^c7U`TWa+8*#h(erkDhlo~-O*;Y3vTO;3l=DKK3%FJmdxSRMHqiJW|Oe z?uXx;p=Wfdc!oWPY%=+$_#(Di%WT!>2G1kQnRC{vSOxShr?43&YvtCjtalwFzNtl zdq{6U&>HpBEo~U+Ph1X60%Qfq+h9-GZL9ad&)X$1DkL%{BqH446C7>vt0d0$uo;m$ z(XEKhS}&)-s0hE10Jo+g;cl%%1_UP_Z*S8%txI3Gn5clj-fn$EVtTs8Q4fd;4oGwl zv^nXN=n!pFt9%W&=&*p$P`9uU2uz4*x(&V&5n8bH2gUTX$_kYL6Y8$Endcxw{X;+` zrmVI(p3YvENSwRf=4X2QN^V}ItCaOhn3rsmUxV_Ahm&oJx6c0mhxzZpUT3wPVwX5H zmu-*g&ORXlVV-iX5dJWqGV!Uu?M27z%_3ssfFi3gHw&u7f&$L;tAgve^t5+|LoP4DzSylxmy delta 58095 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Ξ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\n" "MIME-Version: 1.0\n" @@ -366,7 +366,6 @@ msgid "Layer" msgstr "Couche" #: pcbnew/class_pcb_text.cpp:242 -#: pcbnew/cotation.cpp:109 msgid "Mirror" msgstr "Miroir" @@ -383,7 +382,6 @@ msgid "Orient" msgstr "Orient" #: pcbnew/class_pcb_text.cpp:252 -#: pcbnew/cotation.cpp:125 msgid "Width" msgstr "Epaisseur" @@ -404,14 +402,19 @@ msgid "Dimension properties" msgstr "Propriétés des Cotes" #: pcbnew/cotation.cpp:103 +#: pcbnew/muonde.cpp:865 +#: pcbnew/dialog_gendrill.cpp:291 msgid "OK" msgstr "OK" #: pcbnew/cotation.cpp:106 +#: pcbnew/muonde.cpp:868 +#: pcbnew/dialog_gendrill.cpp:295 msgid "Cancel" msgstr "Annuler" #: pcbnew/cotation.cpp:109 +#: pcbnew/muonde.cpp:874 msgid "Normal" msgstr "Normal" @@ -420,6 +423,7 @@ msgid "Display" msgstr "Affichage" #: pcbnew/cotation.cpp:121 +#: pcbnew/muonde.cpp:881 msgid "Size" msgstr "Taille " @@ -607,99 +611,99 @@ msgstr "Fichiers rapport de perçage (.rpt)*.rpt" msgid "Save Drill Report File" msgstr "Sauver Fichier Rapport de Perçage" -#: pcbnew/pcbframe.cpp:303 +#: pcbnew/pcbframe.cpp:304 msgid "Board modified, Save before exit ?" msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" -#: pcbnew/pcbframe.cpp:304 +#: pcbnew/pcbframe.cpp:305 msgid "Confirmation" msgstr "Confirmation" -#: pcbnew/pcbframe.cpp:409 +#: pcbnew/pcbframe.cpp:410 msgid "DRC Off (Disable !!!), Currently: DRC is active" msgstr "DRC off (désactivée !!!), actuellement DRC active" -#: pcbnew/pcbframe.cpp:410 +#: pcbnew/pcbframe.cpp:411 msgid "DRC On (Currently: DRC is inactive !!!)" msgstr "DRC On (Actuellement, DRC désactivée !!!)" -#: pcbnew/pcbframe.cpp:421 +#: pcbnew/pcbframe.cpp:422 msgid "Polar Coords not show" msgstr "Coord Polaires non affichées" -#: pcbnew/pcbframe.cpp:422 +#: pcbnew/pcbframe.cpp:423 msgid "Display Polar Coords" msgstr "Affichage coord Polaires" -#: pcbnew/pcbframe.cpp:427 +#: pcbnew/pcbframe.cpp:428 msgid "Grid not show" msgstr "Grille non montrée" -#: pcbnew/pcbframe.cpp:427 +#: pcbnew/pcbframe.cpp:428 msgid "Show Grid" msgstr "Afficher grille" -#: pcbnew/pcbframe.cpp:436 +#: pcbnew/pcbframe.cpp:437 msgid "Hide General ratsnest" msgstr "Ne pas afficher le chevelu général" -#: pcbnew/pcbframe.cpp:437 +#: pcbnew/pcbframe.cpp:438 msgid "Show General ratsnest" msgstr "Afficher le chevelu général" -#: pcbnew/pcbframe.cpp:443 +#: pcbnew/pcbframe.cpp:444 msgid "Hide Module ratsnest" msgstr "Ne pas montrer le chevelu du module" -#: pcbnew/pcbframe.cpp:444 +#: pcbnew/pcbframe.cpp:445 msgid "Show Module ratsnest" msgstr "Montrer le chevelu du module" -#: pcbnew/pcbframe.cpp:451 +#: pcbnew/pcbframe.cpp:452 msgid "Disable Auto Delete old Track" msgstr "Ne pas Autoriser l'effacement automatique des pistes" -#: pcbnew/pcbframe.cpp:452 +#: pcbnew/pcbframe.cpp:453 msgid "Enable Auto Delete old Track" msgstr "Autoriser l'effacement automatique des pistes" -#: pcbnew/pcbframe.cpp:459 +#: pcbnew/pcbframe.cpp:460 msgid "Show Pads Sketch mode" msgstr "Afficher pastilles en contour" -#: pcbnew/pcbframe.cpp:460 +#: pcbnew/pcbframe.cpp:461 msgid "Show pads filled mode" msgstr "Afficher pastilles en mode plein" -#: pcbnew/pcbframe.cpp:466 +#: pcbnew/pcbframe.cpp:467 msgid "Show Tracks Sketch mode" msgstr "Afficher pistes en contour" -#: pcbnew/pcbframe.cpp:467 +#: pcbnew/pcbframe.cpp:468 msgid "Show Tracks filled mode" msgstr "Afficher pistes en mode plein" -#: pcbnew/pcbframe.cpp:473 +#: pcbnew/pcbframe.cpp:474 msgid "Normal Contrast Mode Display" msgstr "Mode d'affichage Contraste normal" -#: pcbnew/pcbframe.cpp:474 +#: pcbnew/pcbframe.cpp:475 msgid "Hight Contrast Mode Display" msgstr "Mode d'affichage Haut Contraste" -#: pcbnew/pcbframe.cpp:487 +#: pcbnew/pcbframe.cpp:488 msgid "Track" msgstr "Piste" -#: pcbnew/pcbframe.cpp:519 +#: pcbnew/pcbframe.cpp:520 msgid "Via" msgstr "Via" -#: pcbnew/pcbframe.cpp:591 +#: pcbnew/pcbframe.cpp:592 msgid "3D Frame already opened" msgstr "Fenêtre 3D déjà ouverte" -#: pcbnew/pcbframe.cpp:595 +#: pcbnew/pcbframe.cpp:596 msgid "3D Viewer" msgstr "Visu 3D" @@ -836,6 +840,18 @@ msgstr "Trou près d'un pad" msgid "Hole near track" msgstr "Trou près d'une piste" +#: pcbnew/class_drc_item.cpp:81 +msgid "Too small track width" +msgstr "Trop petite épaisseur de piste" + +#: pcbnew/class_drc_item.cpp:83 +msgid "Too small via size" +msgstr "Trop petite dimension de via" + +#: pcbnew/class_drc_item.cpp:85 +msgid "Too small micro via size" +msgstr "Trop petite dimension de microvia" + #: pcbnew/class_module.cpp:931 msgid "Last Change" msgstr "Last Change" @@ -2434,35 +2450,35 @@ msgstr "Fusion" msgid "0" msgstr "0" -#: pcbnew/clean.cpp:523 +#: pcbnew/clean.cpp:522 msgid "Merge: " msgstr "Fusionner: " -#: pcbnew/clean.cpp:753 +#: pcbnew/clean.cpp:752 msgid "DRC Control:" msgstr "Contrôle DRC:" -#: pcbnew/clean.cpp:758 +#: pcbnew/clean.cpp:757 msgid "NetCtr" msgstr "NetCtr" -#: pcbnew/clean.cpp:1103 +#: pcbnew/clean.cpp:1102 msgid "Centre" msgstr "Centre" -#: pcbnew/clean.cpp:1103 +#: pcbnew/clean.cpp:1102 msgid "0 " msgstr "0" -#: pcbnew/clean.cpp:1114 +#: pcbnew/clean.cpp:1113 msgid "Pads: " msgstr "Pastilles: " -#: pcbnew/clean.cpp:1118 +#: pcbnew/clean.cpp:1117 msgid "Max" msgstr "Max" -#: pcbnew/clean.cpp:1121 +#: pcbnew/clean.cpp:1120 msgid "Segm" msgstr "Segm" @@ -2695,16 +2711,16 @@ msgstr "Surbrillance des équipotentielles" msgid "Local Ratsnest" msgstr "Montrer le chevelu général" -#: pcbnew/pcbcfg.cpp:74 +#: pcbnew/pcbcfg.cpp:73 msgid "Read Project File" msgstr "Lire Fichier Projet" -#: pcbnew/pcbcfg.cpp:84 +#: pcbnew/pcbcfg.cpp:83 #, c-format msgid "File %s not found" msgstr "Fichier %s non trouvé" -#: pcbnew/pcbcfg.cpp:229 +#: pcbnew/pcbcfg.cpp:223 msgid "Save Project File" msgstr "Sauver Fichier Projet" @@ -2810,6 +2826,127 @@ msgstr "Mire" msgid "size" msgstr "dimension" +#: pcbnew/dialog_drc_base.cpp:25 +msgid "Options" +msgstr "Options" + +#: pcbnew/dialog_drc_base.cpp:35 +#: pcbnew/dialog_track_options_base.cpp:106 +msgid "Clearance" +msgstr "Isolation" + +#: pcbnew/dialog_drc_base.cpp:40 +#: pcbnew/dialog_drc_base.cpp:49 +#: pcbnew/dialog_drc_base.cpp:61 +#: pcbnew/dialog_drc_base.cpp:70 +msgid "In the clearance units, enter the clearance distance" +msgstr "Entrée l'isolation" + +#: pcbnew/dialog_drc_base.cpp:44 +msgid "Via Min Size" +msgstr "Via Taille Min" + +#: pcbnew/dialog_drc_base.cpp:54 +msgid "Track Min Width" +msgstr "Epais.Mini Piste" + +#: pcbnew/dialog_drc_base.cpp:65 +msgid "MicroVia Min Size" +msgstr "Diam. Mini MicroVia" + +#: pcbnew/dialog_drc_base.cpp:77 +msgid "Create Report File" +msgstr "Créer fichier rapport " + +#: pcbnew/dialog_drc_base.cpp:81 +msgid "Enable writing report to this file" +msgstr "Autoriser l'écriture du rapport dans ce fichier" + +#: pcbnew/dialog_drc_base.cpp:86 +msgid "Enter the report filename" +msgstr "Entrer le nom du fichier rapport " + +#: pcbnew/dialog_drc_base.cpp:91 +msgid "..." +msgstr "..." + +#: pcbnew/dialog_drc_base.cpp:99 +msgid "Include Tests For:" +msgstr "Inclure Tests Pour:" + +#: pcbnew/dialog_drc_base.cpp:101 +msgid "Pad to pad" +msgstr "Pad à pad" + +#: pcbnew/dialog_drc_base.cpp:104 +#: pcbnew/dialog_drc_base.cpp:105 +msgid "Include tests for clearances between pad to pads" +msgstr "Inclure test de l'isolation entre pads" + +#: pcbnew/dialog_drc_base.cpp:109 +msgid "Zones" +msgstr "Zones" + +#: pcbnew/dialog_drc_base.cpp:111 +msgid "Include zones in clearance or unconnected tests" +msgstr "Inclure zones dans les test d'isolation et tests de nonconnexion" + +#: pcbnew/dialog_drc_base.cpp:118 +msgid "Find unconnected pads" +msgstr "Trouver pads non connectés" + +#: pcbnew/dialog_drc_base.cpp:129 +msgid "Start DRC" +msgstr "Démarrer DRC" + +#: pcbnew/dialog_drc_base.cpp:131 +msgid "Start the Design Rule Checker" +msgstr "Démarrer le Contrôle des Règles de Conception (DRC)" + +#: pcbnew/dialog_drc_base.cpp:135 +msgid "List Unconnected" +msgstr "Liste Non Conn." + +#: pcbnew/dialog_drc_base.cpp:136 +msgid "List unconnected pads or tracks" +msgstr "Lister pads ou pistes non connectées" + +#: pcbnew/dialog_drc_base.cpp:140 +msgid "Delete All Markers" +msgstr "Effacer tous les Marqueurs" + +#: pcbnew/dialog_drc_base.cpp:141 +msgid "Delete every marker" +msgstr "Effacer Chaque Marqueur" + +#: pcbnew/dialog_drc_base.cpp:145 +msgid "Delete Current Marker" +msgstr "Effacer Marqueur Courant" + +#: pcbnew/dialog_drc_base.cpp:146 +msgid "Delete the marker selected in the listBox below" +msgstr "Supprimer le marqueur sélectionné dans la liste ci dessous" + +#: pcbnew/dialog_drc_base.cpp:154 +msgid "Error Messages:" +msgstr "Messages d'Erreur:" + +#: pcbnew/dialog_drc_base.cpp:164 +msgid "MARKERs, double click any to go there in PCB, right click for popup menu" +msgstr "MARQUEURS, double clic pour aller sur le PCB, clic droit pour ouvrir menu" + +#: pcbnew/dialog_drc_base.cpp:172 +msgid "Distance Problem Markers" +msgstr "Marqueurs de problèmes de distance" + +#: pcbnew/dialog_drc_base.cpp:178 +msgid "A list of unconnected pads, right click for popup menu" +msgstr "Pour une liste de pads non connecté, clic droit pour ouvrir un menu" + +#: pcbnew/dialog_drc_base.cpp:185 +msgid "Unconnected" +msgstr "Non connecté" + #: pcbnew/dialog_track_options_base.cpp:27 msgid "Vias:" msgstr "Vias:" @@ -2898,10 +3035,6 @@ msgstr "Epais. Piste" msgid "Enter the current track width" msgstr "Entrer la largeur de piste courante" -#: pcbnew/dialog_track_options_base.cpp:106 -msgid "Clearance" -msgstr "Isolation" - #: pcbnew/dialog_track_options_base.cpp:111 msgid "This is the clearance between tracks, vias and pads for DRC." msgstr "Ceci est l'isolation entre pistes, vias et pads pour le calcul DRC." @@ -2993,126 +3126,22 @@ msgstr "Le composant avec valeur \"%s\" a une référence vide." msgid "Multiple components have identical reference IDs of \"%s\"." msgstr "Multiple composants ont une reference identique \"%s\"." -#: pcbnew/dialog_drc.cpp:430 -msgid "Options" -msgstr "Options" - -#: pcbnew/dialog_drc.cpp:445 -msgid "In the clearance units, enter the clearance distance" -msgstr "Entrée l'isolation" - -#: pcbnew/dialog_drc.cpp:448 -msgid "Create Report File" -msgstr "Créer fichier rapport " - -#: pcbnew/dialog_drc.cpp:455 -msgid "Enable writing report to this file" -msgstr "Autoriser l'écriture du rapport dans ce fichier" - -#: pcbnew/dialog_drc.cpp:460 -msgid "Enter the report filename" -msgstr "Entrer le nom du fichier rapport " - -#: pcbnew/dialog_drc.cpp:463 -msgid "..." -msgstr "..." - -#: pcbnew/dialog_drc.cpp:465 -msgid "Pick a filename interactively" -msgstr "Choisir un nom de fichier interactivement" - -#: pcbnew/dialog_drc.cpp:468 -msgid "Include Tests For:" -msgstr "Inclure Tests Pour:" - -#: pcbnew/dialog_drc.cpp:472 -msgid "Pad to pad" -msgstr "Pad à pad" - -#: pcbnew/dialog_drc.cpp:475 -msgid "Include tests for clearances between pad to pads" -msgstr "Inclure test de l'isolation entre pads" - -#: pcbnew/dialog_drc.cpp:478 -msgid "Zones" -msgstr "Zones" - -#: pcbnew/dialog_drc.cpp:481 -msgid "Include zones in clearance or unconnected tests" -msgstr "Inclure zones dans les test d'isolation et tests de nonconnexion" - -#: pcbnew/dialog_drc.cpp:487 -msgid "Find unconnected pads" -msgstr "Trouver pads non connectés" - -#: pcbnew/dialog_drc.cpp:493 -msgid "Start DRC" -msgstr "Démarrer DRC" - -#: pcbnew/dialog_drc.cpp:495 -msgid "Start the Design Rule Checker" -msgstr "Démarrer le Contrôle des Règles de Conception (DRC)" - -#: pcbnew/dialog_drc.cpp:498 -msgid "List Unconnected" -msgstr "Liste Non Conn." - -#: pcbnew/dialog_drc.cpp:500 -msgid "List unconnected pads or tracks" -msgstr "Lister pads ou pistes non connectées" - -#: pcbnew/dialog_drc.cpp:503 -msgid "Delete All Markers" -msgstr "Effacer tous les Marqueurs" - -#: pcbnew/dialog_drc.cpp:505 -msgid "Delete every marker" -msgstr "Effacer Chaque Marqueur" - -#: pcbnew/dialog_drc.cpp:508 -msgid "Delete Current Marker" -msgstr "Effacer Marqueur Courant" - -#: pcbnew/dialog_drc.cpp:510 -msgid "Delete the marker selected in the listBox below" -msgstr "Supprimer le marqueur sélectionné dans la liste ci dessous" - -#: pcbnew/dialog_drc.cpp:514 -msgid "Error Messages:" -msgstr "Messages d'Erreur:" - -#: pcbnew/dialog_drc.cpp:524 -msgid "MARKERs, double click any to go there in PCB, right click for popup menu" -msgstr "MARQUEURS, double clic pour aller sur le PCB, clic droit pour ouvrir menu" - -#: pcbnew/dialog_drc.cpp:526 -msgid "Distance Problem Markers" -msgstr "Marqueurs de problèmes de distance" - -#: pcbnew/dialog_drc.cpp:530 -msgid "A list of unconnected pads, right click for popup menu" -msgstr "Pour une liste de pads non connecté, clic droit pour ouvrir un menu" - -#: pcbnew/dialog_drc.cpp:532 -msgid "Unconnected" -msgstr "Non connecté" - -#: pcbnew/dialog_drc.cpp:655 -#: pcbnew/dialog_drc.cpp:733 +#: pcbnew/dialog_drc.cpp:118 +#: pcbnew/dialog_drc.cpp:198 #, c-format msgid "Report file \"%s\" created" msgstr "Fichier rapport \"%s\" créé" -#: pcbnew/dialog_drc.cpp:657 -#: pcbnew/dialog_drc.cpp:735 +#: pcbnew/dialog_drc.cpp:120 +#: pcbnew/dialog_drc.cpp:199 msgid "Disk File Report Completed" msgstr "Fichier rapport terminé" -#: pcbnew/dialog_drc.cpp:756 +#: pcbnew/dialog_drc.cpp:218 msgid "DRC report files (.rpt)|*.rpt" msgstr "Fichier rapport DRC (.rpt)|*.rpt" -#: pcbnew/dialog_drc.cpp:762 +#: pcbnew/dialog_drc.cpp:224 msgid "Save DRC Report File" msgstr "Sauver Fichier Rapport DRC:" @@ -4258,32 +4287,6 @@ msgstr "Le fichier Session a une 'reference' à un composant non existant \"%s\" msgid "A wire_via references a missing padstack \"%s\"" msgstr "Une piste ou via a une référence vers un pad \"%s\" manquant" -#: pcbnew/class_track.cpp:913 -#: pcbnew/dialog_pad_properties_base.cpp:80 -msgid "Standard" -msgstr "Standard" - -#: pcbnew/class_track.cpp:921 -msgid "Flags" -msgstr "Flags" - -#: pcbnew/class_track.cpp:959 -msgid "Diam" -msgstr "Diam" - -#: pcbnew/class_track.cpp:967 -#: pcbnew/class_pad.cpp:578 -msgid "Drill" -msgstr "Perçage" - -#: pcbnew/class_track.cpp:971 -msgid "(Specific)" -msgstr "(Specifique)" - -#: pcbnew/class_track.cpp:973 -msgid "(Default)" -msgstr "(Défaut)" - #: pcbnew/dialog_copper_zones_base.cpp:32 msgid "Zone Setup:" msgstr "Options Zone:" @@ -4520,6 +4523,10 @@ msgstr "Orient pad:" msgid "Pad Orient (0.1 deg)" msgstr "Orient. Pad (0.1 deg)" +#: pcbnew/dialog_pad_properties_base.cpp:80 +msgid "Standard" +msgstr "Standard" + #: pcbnew/dialog_pad_properties_base.cpp:80 msgid "SMD" msgstr "CMS" @@ -4600,6 +4607,10 @@ msgstr "RefP" msgid "Net" msgstr "Net" +#: pcbnew/class_pad.cpp:578 +msgid "Drill" +msgstr "Perçage" + #: pcbnew/class_pad.cpp:586 msgid "Drill X / Y" msgstr "Perçage X/Y" @@ -5246,6 +5257,22 @@ msgstr "Recalculer le chevelu complet ( utile après une édition manuelle de no msgid "Netlist File:" msgstr "Fichier Netliste:" +#: pcbnew/class_track.cpp:924 +msgid "Flags" +msgstr "Flags" + +#: pcbnew/class_track.cpp:962 +msgid "Diam" +msgstr "Diam" + +#: pcbnew/class_track.cpp:974 +msgid "(Specific)" +msgstr "(Specifique)" + +#: pcbnew/class_track.cpp:976 +msgid "(Default)" +msgstr "(Défaut)" + #: pcbnew/class_board.cpp:532 msgid "Nodes" msgstr "Nodes" @@ -5282,6 +5309,10 @@ msgstr "Sélectionner comment les pistes sont affichées" msgid "New track" msgstr "Nouvelle piste" +#: pcbnew/dialog_display_options_base.cpp:30 +msgid "New track with via area" +msgstr "Nouvelle piste avec via" + #: pcbnew/dialog_display_options_base.cpp:32 msgid "Show Tracks Clearance:" msgstr "Montrer Isolation Piste:" @@ -6302,22 +6333,6 @@ msgstr "Force affichage des pins invisibles" msgid "HV orientation for Wires and Bus" msgstr "Force direction H, V et X pour les fils et bus" -#: eeschema/libfield.cpp:250 -msgid "Edit field" -msgstr "Editer Champ" - -#: eeschema/libfield.cpp:267 -msgid "" -"This name is an existing alias of the component\n" -"Aborting" -msgstr "" -"Ce nom est celui d'un alias existant du composant\n" -"Abandon." - -#: eeschema/libfield.cpp:287 -msgid "No new text: no change" -msgstr "Pas de nouveau texte: pas de changements" - #: eeschema/schframe.cpp:316 msgid "Schematic modified, Save before exit ?" msgstr "Schématique modifiée, Sauver avant de quitter ?" @@ -6350,7 +6365,7 @@ msgstr "Afficher grille" msgid "Schematic" msgstr "Schématique" -#: eeschema/symbdraw.cpp:801 +#: eeschema/symbdraw.cpp:798 #, c-format msgid "Arc %.1f deg" msgstr "Arc %.1f deg" @@ -7321,55 +7336,58 @@ msgstr "Exporter le symbole" msgid "Save Symbol in [%s]" msgstr "Symbole sauvé en [%s]" -#: eeschema/class_pin.cpp:29 +#: eeschema/class_pin.cpp:45 msgid "Pin" msgstr "Pin" -#: eeschema/class_pin.cpp:991 +#: eeschema/class_pin.cpp:1047 msgid "PinName" msgstr "Nom Pin" -#: eeschema/class_pin.cpp:1000 +#: eeschema/class_pin.cpp:1056 msgid "PinNum" msgstr "Num Pin" -#: eeschema/class_pin.cpp:1004 +#: eeschema/class_pin.cpp:1060 msgid "PinType" msgstr "Type Pin" -#: eeschema/class_pin.cpp:1010 +#: eeschema/class_pin.cpp:1066 msgid "no" msgstr "non" -#: eeschema/class_pin.cpp:1012 +#: eeschema/class_pin.cpp:1068 msgid "yes" msgstr "oui" -#: eeschema/class_pin.cpp:1024 +#: eeschema/class_pin.cpp:1080 msgid "Up" msgstr "Haut" -#: eeschema/class_pin.cpp:1028 +#: eeschema/class_pin.cpp:1084 msgid "Down" msgstr "Bas" -#: eeschema/class_pin.cpp:1032 +#: eeschema/class_pin.cpp:1088 msgid "Left" msgstr "Gauche" -#: eeschema/class_pin.cpp:1036 +#: eeschema/class_pin.cpp:1092 msgid "Right" msgstr "Droite" #: eeschema/plotps.cpp:177 +#: eeschema/plothpgl.cpp:210 msgid "Page Size A4" msgstr "Feuille A4" #: eeschema/plotps.cpp:178 +#: eeschema/plothpgl.cpp:215 msgid "Page Size A" msgstr "Feuille A" #: eeschema/plotps.cpp:179 +#: eeschema/plothpgl.cpp:220 msgid "Plot page size:" msgstr "Format de la feuille:" @@ -7390,10 +7408,12 @@ msgid "Print Sheet Ref" msgstr "Imprimer cartouche" #: eeschema/plotps.cpp:205 +#: eeschema/plothpgl.cpp:270 msgid "&Plot Page" msgstr "&Tracer Page" #: eeschema/plotps.cpp:209 +#: eeschema/plothpgl.cpp:274 msgid "Plot A&LL" msgstr "&Tout Tracer" @@ -7536,7 +7556,6 @@ msgstr "" #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:79 #: eeschema/dialog_create_component.cpp:178 -#: eeschema/dialog_edit_component_in_lib.cpp:160 msgid "Parts are locked" msgstr "Les parts sont verrouillées" @@ -7794,7 +7813,6 @@ msgid "As Convert" msgstr "A une forme \"convertie\"" #: eeschema/dialog_create_component.cpp:174 -#: eeschema/dialog_edit_component_in_lib.cpp:156 msgid "Power Symbol" msgstr "Symbole d'Alimentation" @@ -7923,7 +7941,6 @@ msgid "Pin Name Inside" msgstr "Nom de pin à l'intérieur" #: eeschema/dialog_create_component.cpp:247 -#: eeschema/dialog_edit_component_in_lib.cpp:150 msgid "Skew:" msgstr "Décalage:" @@ -8062,114 +8079,81 @@ msgstr "&Accepter Offset" msgid "Plot " msgstr "Trace " -#: eeschema/classes_body_items.cpp:48 +#: eeschema/classes_body_items.cpp:34 msgid "Undefined" msgstr "Non Défini" -#: eeschema/classes_body_items.cpp:69 -#: eeschema/classes_body_items.cpp:75 +#: eeschema/classes_body_items.cpp:55 +#: eeschema/classes_body_items.cpp:61 msgid "All" msgstr "Tout" -#: eeschema/classes_body_items.cpp:132 +#: eeschema/classes_body_items.cpp:123 #, c-format msgid "arc only had %d parameters of the required 8" msgstr "l'arc a seulement %d paramètres sur les 8 requis" -#: eeschema/classes_body_items.cpp:332 -#: eeschema/classes_body_items.cpp:455 -#: eeschema/classes_body_items.cpp:675 -#: eeschema/classes_body_items.cpp:785 -#: eeschema/classes_body_items.cpp:870 -#: eeschema/classes_body_items.cpp:1107 +#: eeschema/classes_body_items.cpp:378 +#: eeschema/classes_body_items.cpp:543 +#: eeschema/classes_body_items.cpp:663 +#: eeschema/classes_body_items.cpp:812 +#: eeschema/classes_body_items.cpp:1100 msgid "Line width" msgstr "Epaisseur ligne" -#: eeschema/classes_body_items.cpp:337 -#: eeschema/classes_body_items.cpp:464 -#: eeschema/classes_body_items.cpp:875 -#: eeschema/classes_body_items.cpp:1112 +#: eeschema/classes_body_items.cpp:383 +#: eeschema/classes_body_items.cpp:552 +#: eeschema/classes_body_items.cpp:817 +#: eeschema/classes_body_items.cpp:1105 msgid "Bounding box" msgstr "Rectange dencadrement" -#: eeschema/classes_body_items.cpp:367 +#: eeschema/classes_body_items.cpp:418 #, c-format msgid "circle only had %d parameters of the required 6" msgstr "le cercle a seulement %d paramètres sur les 6 requis" -#: eeschema/classes_body_items.cpp:459 +#: eeschema/classes_body_items.cpp:547 msgid "Radius" msgstr "Rayon" -#: eeschema/classes_body_items.cpp:529 -#, c-format -msgid "text only had %d parameters of the required 8" -msgstr "le texte a seulement %d paramètres sur les 8 requis" - -#: eeschema/classes_body_items.cpp:687 +#: eeschema/classes_body_items.cpp:565 msgid "Rectangle" msgstr "Rectangle" -#: eeschema/classes_body_items.cpp:710 +#: eeschema/classes_body_items.cpp:588 #, c-format msgid "rectangle only had %d parameters of the required 7" msgstr "le rectangle a seulement %d paramètres sur les 7 requis" -#: eeschema/classes_body_items.cpp:884 +#: eeschema/classes_body_items.cpp:862 msgid "PolyLine" msgstr "PolyLigne" -#: eeschema/classes_body_items.cpp:916 +#: eeschema/classes_body_items.cpp:894 #, c-format msgid "polyline only had %d parameters of the required 4" msgstr "la polyligne a seulement %d paramètres sur les 4 requis" -#: eeschema/classes_body_items.cpp:921 +#: eeschema/classes_body_items.cpp:899 #, c-format msgid "polyline count parameter %d is invalid" msgstr "le nombre de paramètes (%d) de la polyligne est mauvais" -#: eeschema/classes_body_items.cpp:937 +#: eeschema/classes_body_items.cpp:915 #, c-format msgid "polyline point %d X position not defined" msgstr "la position X du point %d de la polyligne n'est pas définie" -#: eeschema/classes_body_items.cpp:944 +#: eeschema/classes_body_items.cpp:922 #, c-format msgid "polyline point %d Y position not defined" msgstr "la position Y du point %d de la polyligne n'est pas définie" -#: eeschema/dialog_edit_component_in_lib.cpp:134 -msgid "General :" -msgstr "Général :" - -#: eeschema/dialog_edit_component_in_lib.cpp:142 -msgid "Number of Units:" -msgstr "Nombre de Parts:" - -#: eeschema/dialog_edit_component_in_lib.cpp:170 -msgid "Doc:" -msgstr "Doc:" - -#: eeschema/dialog_edit_component_in_lib.cpp:176 -msgid "Keywords:" -msgstr "Mots Clés:" - -#: eeschema/dialog_edit_component_in_lib.cpp:182 -msgid "DocFileName:" -msgstr "Fichier de Doc:" - -#: eeschema/dialog_edit_component_in_lib.cpp:190 -msgid "Copy Doc" -msgstr "Copie Doc" - -#: eeschema/dialog_edit_component_in_lib.cpp:193 -msgid "Browse DocFiles" -msgstr "Examen Fichiers de Doc" - -#: eeschema/dialog_edit_component_in_lib.cpp:200 -msgid "Alias" -msgstr "Alias" +#: eeschema/class_BodyItem_Text.cpp:83 +#, c-format +msgid "text only had %d parameters of the required 8" +msgstr "le texte a seulement %d paramètres sur les 8 requis" #: eeschema/dialog_options.cpp:140 #: eeschema/dialog_options.cpp:287 @@ -8339,6 +8323,22 @@ msgstr "Erreur. Vous devez entrer une ligne de commande" msgid "Error. You must provide a Title" msgstr "Erreur. Vous devez entrer un titre" +#: eeschema/libfield.cpp:250 +msgid "Edit field" +msgstr "Editer Champ" + +#: eeschema/libfield.cpp:267 +msgid "" +"This name is an existing alias of the component\n" +"Aborting" +msgstr "" +"Ce nom est celui d'un alias existant du composant\n" +"Abandon." + +#: eeschema/libfield.cpp:287 +msgid "No new text: no change" +msgstr "Pas de nouveau texte: pas de changements" + #: eeschema/files-io.cpp:74 msgid "Clear Schematic Hierarchy (modified!)?" msgstr "Effacer la hiérarchie schématique (modifiée!)?" @@ -8400,6 +8400,10 @@ msgstr "Propriétés pour " msgid "(alias of " msgstr "(alias de " +#: eeschema/edit_component_in_lib.cpp:105 +msgid "Alias" +msgstr "Alias" + #: eeschema/edit_component_in_lib.cpp:131 #: eeschema/edit_component_in_lib.cpp:208 msgid "Delete All" @@ -8490,7 +8494,7 @@ msgstr "" msgid "User defined search path" msgstr "Chemin de recherche défini par l'utilisateur" -#: eeschema/class_libentry_fields.cpp:325 +#: eeschema/class_libentry_fields.cpp:358 msgid "Datasheet" msgstr "Documentation" @@ -8563,39 +8567,31 @@ msgid "Text Shape:" msgstr "Aspect Texte:" #: eeschema/dialog_bodygraphictext_properties_base.cpp:82 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:54 msgid "Align left" msgstr "Alignement à gauche" #: eeschema/dialog_bodygraphictext_properties_base.cpp:82 #: eeschema/dialog_bodygraphictext_properties_base.cpp:88 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:54 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:67 msgid "Align center" msgstr "Alignement au centre" #: eeschema/dialog_bodygraphictext_properties_base.cpp:82 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:54 msgid "Align right" msgstr "Alignement à droite" #: eeschema/dialog_bodygraphictext_properties_base.cpp:84 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56 msgid "Horiz. Justify" msgstr "Justification Horiz." #: eeschema/dialog_bodygraphictext_properties_base.cpp:88 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:67 msgid "Align bottom" msgstr "Alignement en bas" #: eeschema/dialog_bodygraphictext_properties_base.cpp:88 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:67 msgid "Align top" msgstr "Alignement au sommet" #: eeschema/dialog_bodygraphictext_properties_base.cpp:90 -#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69 msgid "Vert. Justify" msgstr "Vert. Justifié" @@ -8819,23 +8815,23 @@ msgstr "" "\n" "Cette opération supprimera l'annotation existante et ne peut être annulée." -#: eeschema/component_class.cpp:1075 +#: eeschema/component_class.cpp:1074 msgid "Ref" msgstr "Ref" -#: eeschema/component_class.cpp:1080 +#: eeschema/component_class.cpp:1079 msgid "Pwr Symb" msgstr "Symb Alim" -#: eeschema/component_class.cpp:1082 +#: eeschema/component_class.cpp:1081 msgid "Val" msgstr "Val" -#: eeschema/component_class.cpp:1086 +#: eeschema/component_class.cpp:1085 msgid "RefLib" msgstr "RefLib" -#: eeschema/component_class.cpp:1089 +#: eeschema/component_class.cpp:1088 msgid "Lib" msgstr "Lib" @@ -8897,6 +8893,38 @@ msgstr "Placer composant en schématique" msgid "Current" msgstr "Courant" +#: eeschema/dialog_edit_component_in_lib.cpp:134 +msgid "General :" +msgstr "Général :" + +#: eeschema/dialog_edit_component_in_lib.cpp:142 +msgid "Number of Units:" +msgstr "Nombre de Parts:" + +#: eeschema/dialog_edit_component_in_lib.cpp:170 +msgid "Description:" +msgstr "Description:" + +#: eeschema/dialog_edit_component_in_lib.cpp:176 +msgid "Keywords:" +msgstr "Mots Clés:" + +#: eeschema/dialog_edit_component_in_lib.cpp:182 +msgid "DocFileName:" +msgstr "Fichier de Doc:" + +#: eeschema/dialog_edit_component_in_lib.cpp:190 +msgid "Copy Doc" +msgstr "Copie Doc" + +#: eeschema/dialog_edit_component_in_lib.cpp:193 +msgid "Browse DocFiles" +msgstr "Examen Fichiers de Doc" + +#: eeschema/dialog_edit_component_in_lib.cpp:196 +msgid "Description" +msgstr "Description" + #: eeschema/dialog_edit_label.cpp:68 msgid "Global Label Properties" msgstr "Propriétés du Label Global" @@ -9168,7 +9196,6 @@ msgid "Active Low Output" msgstr "Sortie Active Bas" #: cvpcb/tool_cvpcb.cpp:31 -#: cvpcb/menucfg.cpp:39 msgid "Open a NetList file" msgstr "Lire un Fichier Netliste" @@ -9281,11 +9308,13 @@ msgid "Project File Error" msgstr "Erreur en Fichier Projet" #: cvpcb/listlib.cpp:73 +#: cvpcb/loadcmp.cpp:50 #, c-format msgid "PCB foot print library file <%s> could not be found in the default search paths." msgstr "Le fichier librairie de modules PCB <%s> n'a pas pu être trouvé dans les chemins de recherche par défaut." #: cvpcb/listlib.cpp:84 +#: cvpcb/loadcmp.cpp:61 #, c-format msgid "Could not open PCB foot print library file <%s>." msgstr "Ne peut ouvrir le fichier librairie de modules PCB <%s>." @@ -9971,14 +10000,11 @@ msgid "%d errors while reading Gerber file [%s]" msgstr "%d erreurs pendant lecture fichier gerber [%s]" #: gerbview/readgerb.cpp:274 -#: gerbview/files.cpp:208 -#: gerbview/files.cpp:243 #, c-format msgid "Gerber DCODE files (%s)|*.%s" msgstr "Fichiers Gerber DCODE (%s)|*.%s" #: gerbview/readgerb.cpp:278 -#: gerbview/files.cpp:213 msgid "Load GERBER DCODE File" msgstr "Charger Fichier de DCodes" @@ -10446,131 +10472,131 @@ msgstr "Fichiers \"Portable document format\" (*.pdf)|*.pdf" msgid "All files (*)|*" msgstr "Tous les fichiers (*)|*" -#: common/common.cpp:245 +#: common/common.cpp:244 msgid " (\"):" msgstr " (\"):" -#: common/common.cpp:335 +#: common/common.cpp:334 msgid " \"" msgstr " \"" -#: common/common.cpp:339 +#: common/common.cpp:338 msgid " mm" msgstr " mm" -#: common/common.cpp:584 +#: common/common.cpp:588 msgid "Copper " msgstr "Cuivre " -#: common/common.cpp:584 +#: common/common.cpp:588 msgid "Inner L1 " msgstr "Interne 1" -#: common/common.cpp:584 +#: common/common.cpp:588 msgid "Inner L2 " msgstr "Interne 2" -#: common/common.cpp:584 +#: common/common.cpp:588 msgid "Inner L3 " msgstr "Interne 3" -#: common/common.cpp:585 +#: common/common.cpp:589 msgid "Inner L4 " msgstr "Interne 4" -#: common/common.cpp:585 +#: common/common.cpp:589 msgid "Inner L5 " msgstr "Interne 5" -#: common/common.cpp:585 +#: common/common.cpp:589 msgid "Inner L6 " msgstr "Interne 6" -#: common/common.cpp:585 +#: common/common.cpp:589 msgid "Inner L7 " msgstr "Interne 7" -#: common/common.cpp:586 +#: common/common.cpp:590 msgid "Inner L8 " msgstr "Interne 8" -#: common/common.cpp:586 +#: common/common.cpp:590 msgid "Inner L9 " msgstr "Interne 9" -#: common/common.cpp:586 +#: common/common.cpp:590 msgid "Inner L10" msgstr "Interne 10" -#: common/common.cpp:586 +#: common/common.cpp:590 msgid "Inner L11" msgstr "Interne 11" -#: common/common.cpp:587 +#: common/common.cpp:591 msgid "Inner L12" msgstr "Interne 12" -#: common/common.cpp:587 +#: common/common.cpp:591 msgid "Inner L13" msgstr "Interne 13" -#: common/common.cpp:587 +#: common/common.cpp:591 msgid "Inner L14" msgstr "Interne 14" -#: common/common.cpp:588 +#: common/common.cpp:592 msgid "Adhes Cop" msgstr "Adhes Cu " -#: common/common.cpp:588 +#: common/common.cpp:592 msgid "Adhes Cmp" msgstr "Adhes Cmp" -#: common/common.cpp:588 +#: common/common.cpp:592 msgid "SoldP Cop" msgstr "SoldP Cu " -#: common/common.cpp:588 +#: common/common.cpp:592 msgid "SoldP Cmp" msgstr "SoldP Cmp" -#: common/common.cpp:589 +#: common/common.cpp:593 msgid "SilkS Cop" msgstr "Sérigr Cu " -#: common/common.cpp:589 +#: common/common.cpp:593 msgid "SilkS Cmp" msgstr "Sérigr Cmp" -#: common/common.cpp:589 +#: common/common.cpp:593 msgid "Mask Cop " msgstr "Masque Cu " -#: common/common.cpp:589 +#: common/common.cpp:593 msgid "Mask Cmp " msgstr "Masque Cmp" -#: common/common.cpp:590 +#: common/common.cpp:594 msgid "Drawings " msgstr "Drawings " -#: common/common.cpp:590 +#: common/common.cpp:594 msgid "Comments " msgstr "Commentaires " -#: common/common.cpp:590 +#: common/common.cpp:594 msgid "Eco1 " msgstr "Eco1 " -#: common/common.cpp:590 +#: common/common.cpp:594 msgid "Eco2 " msgstr "Eco2 " -#: common/common.cpp:591 +#: common/common.cpp:595 msgid "Edges Pcb" msgstr "Contour Pcb" -#: common/common.cpp:591 +#: common/common.cpp:595 msgid "BAD INDEX" msgstr "BAD INDEX" @@ -10663,11 +10689,11 @@ msgstr "Catalan" msgid "Dutch" msgstr "Hollandais" -#: common/edaappl.cpp:804 +#: common/edaappl.cpp:792 msgid "Language" msgstr "Langue" -#: common/edaappl.cpp:805 +#: common/edaappl.cpp:793 msgid "Select application language (only for testing!)" msgstr "Choisir la langue (seulement pour tests!)" @@ -10883,22 +10909,18 @@ msgid "Back View" msgstr "Vue arrière" #: 3d-viewer/3d_canvas.cpp:368 -#: 3d-viewer/3d_toolbar.cpp:85 msgid "Move left <-" msgstr "Vers la gauche <-" #: 3d-viewer/3d_canvas.cpp:373 -#: 3d-viewer/3d_toolbar.cpp:88 msgid "Move right ->" msgstr "Vers la droite ->" #: 3d-viewer/3d_canvas.cpp:378 -#: 3d-viewer/3d_toolbar.cpp:91 msgid "Move Up ^" msgstr "Vers le haut ^" #: 3d-viewer/3d_canvas.cpp:383 -#: 3d-viewer/3d_toolbar.cpp:94 msgid "Move Down" msgstr "Vers le bas" @@ -11099,10 +11121,6 @@ msgstr "Propriétés du Texte sur Module" msgid "dialog_freeroute_exchange" msgstr "dialog_freeroute_exchange" -#: pcbnew/dialog_drc.h:63 -msgid "DRC Control" -msgstr "Contrôle DRC" - #: pcbnew/dialog_initpcb.h:38 msgid "Global Delete" msgstr "Effacements Généraux" @@ -11111,6 +11129,10 @@ msgstr "Effacements Généraux" msgid "Footprints Orientation" msgstr "Orientation des Modules" +#: pcbnew/dialog_drc_base.h:98 +msgid "DRC Control" +msgstr "Contrôle DRC" + #: pcbnew/dialog_track_options_base.h:76 msgid "Tracks and Vias Sizes" msgstr "Dims Pistes et Vias" @@ -11123,12 +11145,12 @@ msgstr "Dialogue Netliste" msgid "Create SVG file" msgstr "Créer Fichier SVG" -#: pcbnew/drc_stuff.h:149 +#: pcbnew/drc_stuff.h:152 #, c-format msgid "ErrType(%d): %s
  • %s: %s
  • %s: %s
" msgstr "Type Err(%d): %s
  • %s: %s
  • %s: %s
" -#: pcbnew/drc_stuff.h:157 +#: pcbnew/drc_stuff.h:160 #, c-format msgid "ErrType(%d): %s
  • %s: %s
" msgstr "Type Err (%d): %s
  • %s: %s
" @@ -11505,6 +11527,10 @@ msgstr "DCodes id." msgid "Page Settings" msgstr "Ajustage opt Page" +#~ msgid "Pick a filename interactively" +#~ msgstr "Choisir un nom de fichier interactivement" +#~ msgid "Doc:" +#~ msgstr "Doc:" #~ msgid "Size:" #~ msgstr "Taille:" diff --git a/pcbnew/class_track.cpp b/pcbnew/class_track.cpp index 96586b7903..b86ccef695 100644 --- a/pcbnew/class_track.cpp +++ b/pcbnew/class_track.cpp @@ -49,7 +49,7 @@ static bool ShowClearance( const TRACK* aTrack ) { // maybe return true for tracks and vias, not for zone segments return !(aTrack->m_Flags & DRAW_ERASED) - && DisplayOpt.DisplayTrackIsol + && DisplayOpt.ShowTrackClearanceMode == SHOW_CLEARANCE_ALWAYS && aTrack->GetLayer() <= LAST_COPPER_LAYER && ( aTrack->Type() == TYPE_TRACK || aTrack->Type() == TYPE_VIA ); } @@ -764,7 +764,7 @@ void SEGVIA::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, const wxPoi } } - if( DisplayOpt.DisplayTrackIsol ) + if( DisplayOpt.ShowTrackClearanceMode == SHOW_CLEARANCE_ALWAYS ) GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon + g_DesignSettings.m_TrackClearence, color ); diff --git a/pcbnew/classpcb.cpp b/pcbnew/classpcb.cpp index fc70d7c79c..56353d8218 100644 --- a/pcbnew/classpcb.cpp +++ b/pcbnew/classpcb.cpp @@ -143,12 +143,12 @@ DISPLAY_OPTIONS::DISPLAY_OPTIONS() DisplayModEdge = true; DisplayModText = true; - DisplayPcbTrackFill = true; /* false = sketch , true = rempli */ - DisplayTrackIsol = false; - m_DisplayViaMode = VIA_HOLE_NOT_SHOW; + DisplayPcbTrackFill = true; /* false = sketch , true = filled */ + ShowTrackClearanceMode = SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS; + m_DisplayViaMode = VIA_HOLE_NOT_SHOW; DisplayPolarCood = false; /* false = display absolute coordinates, - * true = display polar cordinates */ + * true = display polar cordinates */ DisplayZonesMode = 0; /* 0 = Show filled areas outlines in zones, * 1 = do not show filled areas outlines * 2 = show outlines of filled areas */ diff --git a/pcbnew/dialog_display_options.cpp b/pcbnew/dialog_display_options.cpp index 8ca805407b..b7310e6842 100644 --- a/pcbnew/dialog_display_options.cpp +++ b/pcbnew/dialog_display_options.cpp @@ -60,13 +60,22 @@ void Dialog_Display_Options::init() if ( DisplayOpt.DisplayPcbTrackFill ) m_OptDisplayTracks->SetSelection(1); - if ( DisplayOpt.DisplayTrackIsol ) - m_OptDisplayTracksClearance->SetSelection(3); - else if ( g_ShowClearanceWhenTrackCreation == 1) - m_OptDisplayTracksClearance->SetSelection(1); - else if ( g_ShowClearanceWhenTrackCreation == 2) - m_OptDisplayTracksClearance->SetSelection(2); - else m_OptDisplayTracksClearance->SetSelection(0); + switch ( DisplayOpt.ShowTrackClearanceMode ) + { + case DO_NOT_SHOW_CLEARANCE: + m_OptDisplayTracksClearance->SetSelection(0); + break; + case SHOW_CLEARANCE_NEW_TRACKS: + m_OptDisplayTracksClearance->SetSelection(1); + break; + default: + case SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS: + m_OptDisplayTracksClearance->SetSelection(2); + break; + case SHOW_CLEARANCE_ALWAYS: + m_OptDisplayTracksClearance->SetSelection(3); + break; + } if ( DisplayOpt.DisplayPadFill ) m_OptDisplayPads->SetSelection(1); @@ -115,21 +124,17 @@ void Dialog_Display_Options::OnOkClick(wxCommandEvent& event) switch ( m_OptDisplayTracksClearance->GetSelection() ) { - case 3: - DisplayOpt.DisplayTrackIsol = TRUE; - g_ShowClearanceWhenTrackCreation = 1; + case 0: + DisplayOpt.ShowTrackClearanceMode = DO_NOT_SHOW_CLEARANCE; break; case 1: - DisplayOpt.DisplayTrackIsol = FALSE; - g_ShowClearanceWhenTrackCreation = 1; + DisplayOpt.ShowTrackClearanceMode = SHOW_CLEARANCE_NEW_TRACKS; break; case 2: - DisplayOpt.DisplayTrackIsol = FALSE; - g_ShowClearanceWhenTrackCreation = 2; + DisplayOpt.ShowTrackClearanceMode = SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS; break; - case 0: - DisplayOpt.DisplayTrackIsol = FALSE; - g_ShowClearanceWhenTrackCreation = 0; + case 3: + DisplayOpt.ShowTrackClearanceMode = SHOW_CLEARANCE_ALWAYS; break; } diff --git a/pcbnew/editrack.cpp b/pcbnew/editrack.cpp index 3fd947b2ff..598c46e339 100644 --- a/pcbnew/editrack.cpp +++ b/pcbnew/editrack.cpp @@ -16,15 +16,14 @@ #include "trigo.h" - /* Routines Locales */ -static void Exit_Editrack( WinEDA_DrawPanel* panel, wxDC* DC ); -void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, - wxDC* DC, bool erase ); -static void ComputeBreakPoint( TRACK* track, int n, wxPoint end ); -static void DeleteNullTrackSegments( BOARD* pcb, DLIST& aTrackList ); +static void Exit_Editrack( WinEDA_DrawPanel* panel, wxDC* DC ); +void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, + wxDC* DC, bool erase ); +static void ComputeBreakPoint( TRACK* track, int n, wxPoint end ); +static void DeleteNullTrackSegments( BOARD* pcb, DLIST& aTrackList ); -static void EnsureEndTrackOnPad( D_PAD* Pad ); +static void EnsureEndTrackOnPad( D_PAD* Pad ); /* variables locales */ static int OldNetCodeSurbrillance; @@ -83,14 +82,14 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) * - si DRC OK : addition d'un nouveau point piste */ { - D_PAD* pt_pad = NULL; - TRACK* TrackOnStartPoint = NULL; - int masquelayer = g_TabOneLayerMask[((PCB_SCREEN*)GetScreen())->m_Active_Layer]; - BOARD_ITEM* LockPoint; - wxPoint pos = GetScreen()->m_Curseur; + D_PAD* pt_pad = NULL; + TRACK* TrackOnStartPoint = NULL; + int masquelayer = g_TabOneLayerMask[( (PCB_SCREEN*) GetScreen() )->m_Active_Layer]; + BOARD_ITEM* LockPoint; + wxPoint pos = GetScreen()->m_Curseur; - static int InitialTrackWidthValue; /* first track segment width. - * used when we are in the auto tack width mode */ + static int InitialTrackWidthValue; /* first track segment width. + * used when we are in the auto tack width mode */ DrawPanel->ManageCurseur = ShowNewTrackWhenMovingCursor; DrawPanel->ForceCloseManageCurseur = Exit_Editrack; @@ -131,10 +130,11 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) CreateLockPoint( &pos.x, &pos.y, TrackOnStartPoint, NULL ); } } - else // no starting point, but a filled zone area can exist. This is also a good starting point. { - ZONE_CONTAINER* zone = GetBoard()->HitTestForAnyFilledArea( pos, GetScreen()->m_Active_Layer ); + ZONE_CONTAINER* zone = GetBoard()->HitTestForAnyFilledArea( pos, + GetScreen()-> + m_Active_Layer ); if( zone ) g_HightLigth_NetCode = zone->GetNet(); } @@ -147,7 +147,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) Hight_Light( DC ); - g_CurrentTrackSegment->SetLayer( ((PCB_SCREEN*)GetScreen())->m_Active_Layer ); + g_CurrentTrackSegment->SetLayer( ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer ); g_CurrentTrackSegment->m_Width = g_DesignSettings.m_CurrentTrackWidth; if( g_DesignSettings.m_UseConnectedTrackWidth ) @@ -259,7 +259,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) newTrack->m_Start = newTrack->m_End; - newTrack->SetLayer( ((PCB_SCREEN*)GetScreen())->m_Active_Layer ); + newTrack->SetLayer( ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer ); if( !g_DesignSettings.m_UseConnectedTrackWidth ) { @@ -294,8 +294,8 @@ bool WinEDA_PcbFrame::Add_45_degrees_Segment( wxDC* DC ) * 0 si impossible */ { - int pas_45; - int dx0, dy0, dx1, dy1; + int pas_45; + int dx0, dy0, dx1, dy1; if( g_CurrentTrackList.GetCount() < 2 ) return false; /* il faut au moins 2 segments */ @@ -309,9 +309,9 @@ bool WinEDA_PcbFrame::Add_45_degrees_Segment( wxDC* DC ) return false; } - pas_45 = (int)GetScreen()->GetGrid().x / 2; + pas_45 = (int) GetScreen()->GetGrid().x / 2; if( pas_45 < curTrack->m_Width ) - pas_45 = (int)GetScreen()->GetGrid().x; + pas_45 = (int) GetScreen()->GetGrid().x; while( pas_45 < curTrack->m_Width ) pas_45 *= 2; @@ -420,7 +420,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) * Routine de fin de trace d'une piste (succession de segments) */ { - int masquelayer = g_TabOneLayerMask[((PCB_SCREEN*)GetScreen())->m_Active_Layer]; + int masquelayer = g_TabOneLayerMask[( (PCB_SCREEN*) GetScreen() )->m_Active_Layer]; if( aTrack == NULL ) return; @@ -441,12 +441,12 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) trace_ratsnest_pad( DC ); /* efface trace chevelu*/ /* cleanup - if( g_CurrentTrackSegment->Next() != NULL ) - { - delete g_CurrentTrackSegment->Next(); - g_CurrentTrackSegment->SetNext( NULL ); - } - */ + * if( g_CurrentTrackSegment->Next() != NULL ) + * { + * delete g_CurrentTrackSegment->Next(); + * g_CurrentTrackSegment->SetNext( NULL ); + * } + */ D( g_CurrentTrackList.VerifyListIntegrity(); ); @@ -485,14 +485,14 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) // Insert new segments if they exist. This can be NULL on a double click on the start point if( g_FirstTrackSegment != NULL ) { - int netcode = g_FirstTrackSegment->GetNet(); - TRACK* firstTrack = g_FirstTrackSegment; - int newCount = g_CurrentTrackList.GetCount(); + int netcode = g_FirstTrackSegment->GetNet(); + TRACK* firstTrack = g_FirstTrackSegment; + int newCount = g_CurrentTrackList.GetCount(); // Put entire new current segment list in BOARD TRACK* track; TRACK* insertBeforeMe = g_CurrentTrackSegment->GetBestInsertPoint( GetBoard() ); - while( (track = g_CurrentTrackList.PopFront()) != NULL ) + while( ( track = g_CurrentTrackList.PopFront() ) != NULL ) { GetBoard()->m_Track.Insert( track, insertBeforeMe ); } @@ -502,7 +502,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) Trace_Une_Piste( DrawPanel, DC, firstTrack, newCount, GR_OR ); int i = 0; - for( track=firstTrack; track && iNext() ) + for( track = firstTrack; track && iNext() ) { track->m_Flags = 0; track->SetState( BUSY, OFF ); @@ -560,10 +560,10 @@ TRACK* LocateIntrusion( TRACK* start, int net, int width ) continue; /* TRACK::HitTest */ - int dist = width / 2 + track->m_Width / 2 + g_DesignSettings.m_TrackClearence; + int dist = width / 2 + track->m_Width / 2 + g_DesignSettings.m_TrackClearence; - wxPoint pos = ref - track->m_Start; - wxPoint vec = track->m_End - track->m_Start; + wxPoint pos = ref - track->m_Start; + wxPoint vec = track->m_End - track->m_Start; if( !DistanceTest( dist, vec.x, vec.y, pos.x, pos.y ) ) continue; @@ -599,7 +599,7 @@ TRACK* LocateIntrusion( TRACK* start, int net, int width ) */ static void PushTrack( WinEDA_DrawPanel* panel ) { - BOARD* pcb = ( (WinEDA_BasePcbFrame*) (panel->m_Parent) )->GetBoard(); + BOARD* pcb = ( (WinEDA_BasePcbFrame*)(panel->m_Parent) )->GetBoard(); wxPoint cursor = ActiveScreen->m_Curseur; wxPoint cv, vec, n; TRACK* track = g_CurrentTrackSegment; @@ -666,29 +666,27 @@ void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, wxDC* DC, bool erase { D( g_CurrentTrackList.VerifyListIntegrity(); ); - int IsolTmp; - bool Track_fill_copy; PCB_SCREEN* screen = (PCB_SCREEN*) panel->GetScreen(); - Track_fill_copy = DisplayOpt.DisplayPcbTrackFill; + bool Track_fill_copy = DisplayOpt.DisplayPcbTrackFill; DisplayOpt.DisplayPcbTrackFill = true; - IsolTmp = DisplayOpt.DisplayTrackIsol; + int showTrackClearanceMode = DisplayOpt.ShowTrackClearanceMode; - if( g_ShowClearanceWhenTrackCreation ) - DisplayOpt.DisplayTrackIsol = TRUE; + if( showTrackClearanceMode != DO_NOT_SHOW_CLEARANCE ) + DisplayOpt.ShowTrackClearanceMode = SHOW_CLEARANCE_ALWAYS; /* efface ancienne position si elle a ete deja dessinee */ if( erase ) { Trace_Une_Piste( panel, DC, g_FirstTrackSegment, g_CurrentTrackList.GetCount(), GR_XOR ); - ( (WinEDA_BasePcbFrame*) (panel->m_Parent) )->trace_ratsnest_pad( DC ); - if( g_ShowClearanceWhenTrackCreation > 1 ) // Show the via area + ( (WinEDA_BasePcbFrame*)(panel->m_Parent) )->trace_ratsnest_pad( DC ); + if( showTrackClearanceMode >= SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS ) // Show the via area { int color = g_DesignSettings.m_LayerColor[g_CurrentTrackSegment->GetLayer()]; GRCircle( &panel->m_ClipBox, DC, g_CurrentTrackSegment->m_End.x, - g_CurrentTrackSegment->m_End.y, - (g_DesignSettings.m_CurrentViaSize/2) + g_DesignSettings.m_TrackClearence, - color ); + g_CurrentTrackSegment->m_End.y, + (g_DesignSettings.m_CurrentViaSize / 2) + g_DesignSettings.m_TrackClearence, + color ); } } @@ -698,7 +696,7 @@ void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, wxDC* DC, bool erase /* dessin de la nouvelle piste : mise a jour du point d'arrivee */ g_CurrentTrackSegment->SetLayer( screen->m_Active_Layer ); - if( ! g_DesignSettings.m_UseConnectedTrackWidth ) + if( !g_DesignSettings.m_UseConnectedTrackWidth ) g_CurrentTrackSegment->m_Width = g_DesignSettings.m_CurrentTrackWidth; if( g_TwoSegmentTrackBuild ) @@ -707,7 +705,7 @@ void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, wxDC* DC, bool erase if( previous_track && previous_track->Type()==TYPE_TRACK ) { previous_track->SetLayer( screen->m_Active_Layer ); - if( ! g_DesignSettings.m_UseConnectedTrackWidth ) + if( !g_DesignSettings.m_UseConnectedTrackWidth ) previous_track->m_Width = g_DesignSettings.m_CurrentTrackWidth; } } @@ -719,10 +717,10 @@ void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, wxDC* DC, bool erase g_CurrentTrackSegment->m_End = ActiveScreen->m_Curseur; if( Drc_On ) - PushTrack(panel); + PushTrack( panel ); ComputeBreakPoint( g_CurrentTrackSegment, g_CurrentTrackList.GetCount(), - g_CurrentTrackSegment->m_End ); + g_CurrentTrackSegment->m_End ); } else { @@ -742,22 +740,22 @@ void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, wxDC* DC, bool erase D( g_CurrentTrackList.VerifyListIntegrity(); ); Trace_Une_Piste( panel, DC, g_FirstTrackSegment, g_CurrentTrackList.GetCount(), GR_XOR ); - if( g_ShowClearanceWhenTrackCreation > 1 ) // Show the via area + if( showTrackClearanceMode >= SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS ) // Show the via area { int color = g_DesignSettings.m_LayerColor[g_CurrentTrackSegment->GetLayer()]; GRCircle( &panel->m_ClipBox, DC, g_CurrentTrackSegment->m_End.x, - g_CurrentTrackSegment->m_End.y, - (g_DesignSettings.m_CurrentViaSize/2) + g_DesignSettings.m_TrackClearence, - color ); + g_CurrentTrackSegment->m_End.y, + (g_DesignSettings.m_CurrentViaSize / 2) + g_DesignSettings.m_TrackClearence, + color ); } - DisplayOpt.DisplayTrackIsol = IsolTmp; - DisplayOpt.DisplayPcbTrackFill = Track_fill_copy; + DisplayOpt.ShowTrackClearanceMode = showTrackClearanceMode; + DisplayOpt.DisplayPcbTrackFill = Track_fill_copy; - ( (WinEDA_BasePcbFrame*) (panel->m_Parent) )-> + ( (WinEDA_BasePcbFrame*)(panel->m_Parent) )-> build_ratsnest_pad( NULL, g_CurrentTrackSegment->m_End, FALSE ); - ( (WinEDA_BasePcbFrame*) (panel->m_Parent) )->trace_ratsnest_pad( DC ); + ( (WinEDA_BasePcbFrame*)(panel->m_Parent) )->trace_ratsnest_pad( DC ); } @@ -778,7 +776,7 @@ void Calcule_Coord_Extremite_45( int ox, int oy, int* fx, int* fy ) /* calcul de l'angle preferentiel : 0, 45 , 90 degre */ deltax = abs( deltax ); deltay = abs( deltay ); - angle = 45; + angle = 45; if( deltax >= deltay ) { @@ -859,7 +857,7 @@ void ComputeBreakPoint( TRACK* track, int SegmentCount, wxPoint end ) if( lastTrack ) { if( (lastTrack->m_End.x == lastTrack->m_Start.x) - || (lastTrack->m_End.y == lastTrack->m_Start.y) ) + || (lastTrack->m_End.y == lastTrack->m_Start.y) ) { iAngle = 45; } @@ -964,8 +962,8 @@ void DeleteNullTrackSegments( BOARD* pcb, DLIST& aTrackList ) firsttrack->start = NULL; while( track != NULL ) { - oldtrack = track; - track = track->Next(); + oldtrack = track; + track = track->Next(); oldtrack->end = track; if( track ) @@ -1029,4 +1027,3 @@ void EnsureEndTrackOnPad( D_PAD* Pad ) g_CurrentTrackSegment->end = Pad; g_CurrentTrackSegment->SetState( END_ONPAD, ON ); } - diff --git a/pcbnew/pcbcfg.h b/pcbnew/pcbcfg.h index d085d93e9a..4b585eff89 100644 --- a/pcbnew/pcbcfg.h +++ b/pcbnew/pcbcfg.h @@ -194,20 +194,13 @@ static PARAM_CFG_BOOL SegmFillCfg TRUE /* Default value */ ); -static PARAM_CFG_INT NewTrackAfficheGardeCfg -( - INSETUP, - wxT( "NewAffG" ), /* Keyword */ - &g_ShowClearanceWhenTrackCreation, /* Parameter address */ - 1 /* Default value */ -); -static PARAM_CFG_BOOL TrackAfficheGardeCfg +static PARAM_CFG_INT TrackDisplayClearanceCfg ( INSETUP, - wxT( "SegAffG" ), /* Keyword */ - &DisplayOpt.DisplayTrackIsol, /* Parameter address */ - FALSE /* Default value */ + wxT( "TrackDisplayClearance" ), /* Keyword */ + &DisplayOpt.ShowTrackClearanceMode, /* Parameter address */ + SHOW_CLEARANCE_NEW_TRACKS_AND_VIA_AREAS /* Default value */ ); static PARAM_CFG_BOOL PadFillCfg @@ -816,8 +809,7 @@ PARAM_CFG_BASE* ParamCfgList[] = &Raccord45Cfg, &UnitCfg, &SegmFillCfg, - &TrackAfficheGardeCfg, - &NewTrackAfficheGardeCfg, + &TrackDisplayClearanceCfg, &PadFillCfg, &PadAfficheGardeCfg, &PadShowNumCfg, diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index a594aa49ec..c2575ade58 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -33,7 +33,6 @@ bool g_Show_Ratsnest; bool g_Show_Module_Ratsnest; bool g_Show_Pads_Module_in_Move = TRUE; bool g_Raccord_45_Auto = TRUE; -int g_ShowClearanceWhenTrackCreation = 1; bool Track_45_Only; bool Segments_45_Only; bool g_TwoSegmentTrackBuild = TRUE; diff --git a/pcbnew/pcbnew.h b/pcbnew/pcbnew.h index a22fbdd2d5..197a8d6583 100644 --- a/pcbnew/pcbnew.h +++ b/pcbnew/pcbnew.h @@ -54,12 +54,6 @@ extern bool g_Show_Ratsnest; extern bool g_Show_Module_Ratsnest; extern bool g_Show_Pads_Module_in_Move; extern bool g_Raccord_45_Auto; -extern int g_ShowClearanceWhenTrackCreation; /* = 0 , 1 or 2 - * 0 = do not show clearance - * 1 = show track clearance - * 2 = show clearance + via area - * (useful to know what clearance area is neede if we want to put a via on terminal track point) - */ extern const wxString g_FootprintLibFileWildcard; // Wildcard for footprint libraries filesnames diff --git a/pcbnew/print_board_functions.cpp b/pcbnew/print_board_functions.cpp index 3668adfa0b..f31bb00eee 100644 --- a/pcbnew/print_board_functions.cpp +++ b/pcbnew/print_board_functions.cpp @@ -45,12 +45,13 @@ void WinEDA_DrawPanel::PrintPage( wxDC* aDC, bool aPrint_Sheet_Ref, int aPrintMa DisplayOpt.DisplayModEdge = FILLED; DisplayOpt.DisplayModText = FILLED; frame->m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill = FILLED; - DisplayOpt.DisplayTrackIsol = false; + DisplayOpt.ShowTrackClearanceMode = DO_NOT_SHOW_CLEARANCE; DisplayOpt.DisplayDrawItems = FILLED; DisplayOpt.DisplayZonesMode = 0; + DisplayOpt.DisplayNetNamesMode = 0; m_PrintIsMirrored = aPrintMirrorMode; - + // The OR mode is used in color mode, but be aware the backgroud *must be BLACK. // In print page dialog, we first plrint in BLACK, and after reprint in color, // on the black "local" backgroud, in OR mode