From fd27b262711bbea34bff8e3f33987e2089d6fbc5 Mon Sep 17 00:00:00 2001 From: charras Date: Thu, 1 Oct 2009 16:46:13 +0000 Subject: [PATCH] pcbnew: minor work about netclasses. eeschema: bug fix --- CHANGELOG.txt | 21 + bitmaps/Via_Sketch.xpm | 36 +- common/about_kicad.cpp | 2 +- eeschema/getpart.cpp | 9 +- eeschema/libedit_undo_redo.cpp | 1 - include/wxPcbStruct.h | 3 +- internat/fr/kicad.mo | Bin 194845 -> 196374 bytes internat/fr/kicad.po | 2382 +++++++++++---------- pcbnew/class_board.cpp | 29 +- pcbnew/class_board.h | 21 +- pcbnew/dialog_general_options.cpp | 10 +- pcbnew/edit.cpp | 6 +- pcbnew/editrack-part2.cpp | 3 +- pcbnew/editrack.cpp | 25 +- pcbnew/files.cpp | 3 +- pcbnew/pcbframe.cpp | 13 +- pcbnew/pcbnew.cpp | 18 +- pcbnew/specctra_import.cpp | 5 +- pcbnew/tool_pcb.cpp | 20 +- pcbnew/toolbars_update_user_interface.cpp | 47 +- 20 files changed, 1394 insertions(+), 1260 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index bb5d469d41..151e77b397 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,27 @@ KiCad ChangeLog 2009 Please add newer entries at the top, list the date and your name with email address. +2009-oct-01 UPDATE Wayne Stambaugh +================================================================================ +* Component library viewer restores state between uses. +* Fixed automatic zoom calculations in library viewer. +* Make library entry list dialog restore previous selection. +* Fix bounding box calculation for vertical field and text draw objects. +* Changed library draw object comparison to test for greater and less than. +* Initial preparation for merging separate library component draw item lists. + + +2009-sept-29 UPDATE Wayne Stambaugh +================================================================================ +* Eliminate external direct manipulation of component draw item pointer. +* Add draw item remove, add, and locate methods to library component object. +* Remove redundant locate pin, field, and draw item code. +* Fix add new pin drawing bug that left initial pin draw in place. +* Improved best zoom calculations for small components. +* Library component bounding box calculation now includes fields. +* Removed unnecessary header file "libcmp.h". +* Fixed potential locate draw item bug in library editor hot key handler. + 2009-sept-27 UPDATE Jean-Pierre Charras ================================================================================ ++pcbnew diff --git a/bitmaps/Via_Sketch.xpm b/bitmaps/Via_Sketch.xpm index a8712b8288..efeda149f4 100644 --- a/bitmaps/Via_Sketch.xpm +++ b/bitmaps/Via_Sketch.xpm @@ -4,24 +4,26 @@ extern const char *via_sketch_xpm[]; #else const char * via_sketch_xpm[] = { -"16 16 3 1", +"16 16 5 1", " c None", ". c #7D7D00", "+ c #7C7C00", -" ", -" .... ", -" ..++++.. ", -" .. .. ", -" .. .. ", -" . .. . ", -" .+ .... +. ", -" .+ .. .. +. ", -" .+ .. .. +. ", -" .+ .... +. ", -" . .. . ", -" .. .. ", -" .. .. ", -" ..++++.. ", -" .... ", -" "}; +"* c #CC0000", +"= c #00AC00", +" .... ", +" ..++++.. ", +" .. .. ", +" .. .. ", +" . .. . ", +"***+***.... +.", +"**.+**..**.. +.", +"**.+**..**.. +.", +"***+***.... +.", +" . =..= . ", +" .. ==== .. ", +" .. ==== .. ", +" ..++++.. ", +" ...= ", +" ==== ", +" ==== "}; #endif diff --git a/common/about_kicad.cpp b/common/about_kicad.cpp index ec8ba6f032..c9f4315605 100644 --- a/common/about_kicad.cpp +++ b/common/about_kicad.cpp @@ -8,7 +8,7 @@ #include "appl_wxstruct.h" -#define BUILD_VERSION "(20090921-unstable)" +#define BUILD_VERSION "(20091001-unstable)" #ifdef HAVE_SVN_VERSION diff --git a/eeschema/getpart.cpp b/eeschema/getpart.cpp index 204164dfdd..ceb8a29caf 100644 --- a/eeschema/getpart.cpp +++ b/eeschema/getpart.cpp @@ -390,7 +390,6 @@ void WinEDA_SchematicFrame::SelPartUnit( SCH_COMPONENT* DrawComponent, void WinEDA_SchematicFrame::ConvertPart( SCH_COMPONENT* DrawComponent, wxDC* DC ) { - int ii; LIB_COMPONENT* LibEntry; if( DrawComponent == NULL ) @@ -414,7 +413,13 @@ void WinEDA_SchematicFrame::ConvertPart( SCH_COMPONENT* DrawComponent, DrawComponent->Draw( DrawPanel, DC, wxPoint( 0, 0 ), g_XorMode ); DrawComponent->m_Convert++; - if( DrawComponent->m_Convert > ii ) + // ensure m_Convert = 0, 1 or 2 + // 0 and 1 = shape 1 = not converted + // 2 = shape 2 = first converted shape + // > 2 is not used but could be used for more shapes + // like multiple shapes for a programmable component + // When m_Convert = val max, return to the first shape + if( DrawComponent->m_Convert > 2 ) DrawComponent->m_Convert = 1; /* Redessine le composant dans la nouvelle position */ diff --git a/eeschema/libedit_undo_redo.cpp b/eeschema/libedit_undo_redo.cpp index 504afd52f6..32fa3995b1 100644 --- a/eeschema/libedit_undo_redo.cpp +++ b/eeschema/libedit_undo_redo.cpp @@ -18,7 +18,6 @@ void WinEDA_LibeditFrame::SaveCopyInUndoList( EDA_BaseStruct* ItemToCopy, int unused_flag ) /*************************************************************************/ { - EDA_BaseStruct* item; LIB_COMPONENT* CopyItem; PICKED_ITEMS_LIST* lastcmd; diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index 0c557b3b07..f3d7fc5e86 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -58,8 +58,7 @@ public: WinEDAChoiceBox* m_SelViaSizeBox; private: - bool m_SelTrackWidthBox_Changed; - bool m_SelViaSizeBox_Changed; + bool m_TrackAndViasSizesList_Changed; DRC* m_drc; ///< the DRC controller, see drc.cpp diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index a02e0efd8730cbd7e0772eab184498f6202a118a..0247cb6c6d02ba51982c8094ebca42c7d0ed7f03 100644 GIT binary patch delta 62004 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
R^GiIC*1j&*qTL;x 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

-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 GqW=ScJ;QGR diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index a00c4b7de9..ae537a45dd 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-09-28 08:27+0100\n" -"PO-Revision-Date: 2009-09-28 08:28+0100\n" +"POT-Creation-Date: 2009-09-29 12:18+0100\n" +"PO-Revision-Date: 2009-09-29 12:23+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -52,7 +52,6 @@ msgid "Change module %s (%s) " msgstr "Change module %s (%s) " #: pcbnew/xchgmod.cpp:577 -#: pcbnew/automove.cpp:210 msgid "No Modules!" msgstr "Pas de Modules!" @@ -252,22 +251,16 @@ msgstr "Via Enterrées:" #: pcbnew/dialog_gendrill.cpp:293 #: pcbnew/cotation.cpp:103 +#: pcbnew/muonde.cpp:866 msgid "OK" msgstr "OK" #: pcbnew/dialog_gendrill.cpp:297 #: pcbnew/cotation.cpp:106 +#: pcbnew/muonde.cpp:869 msgid "Cancel" msgstr "Annuler" -#: pcbnew/automove.cpp:214 -msgid "Move Modules ?" -msgstr "Déplacer Modules ?" - -#: pcbnew/automove.cpp:222 -msgid "Autoplace modules: No board edges detected. Unable to place modules" -msgstr "Autoplace modules: Pas de contours sur pcb. Impossible de placer les modules" - #: pcbnew/class_marker_pcb.cpp:67 msgid "Type" msgstr "Type" @@ -281,6 +274,7 @@ msgid "ErrType" msgstr "Type Err" #: pcbnew/plotdxf.cpp:33 +#: pcbnew/plotgerb.cpp:68 msgid "File" msgstr "Fichier" @@ -289,6 +283,7 @@ msgid "Dimension properties" msgstr "Propriétés des Cotes" #: pcbnew/cotation.cpp:109 +#: pcbnew/muonde.cpp:875 msgid "Normal" msgstr "Normal" @@ -301,6 +296,7 @@ msgid "Display" msgstr "Affichage" #: pcbnew/cotation.cpp:121 +#: pcbnew/muonde.cpp:882 msgid "Size" msgstr "Taille " @@ -518,21 +514,285 @@ msgstr "Itération" msgid "Ok to abort ?" msgstr "Ok pour arrêter ?" -#: pcbnew/pcbframe.cpp:301 -msgid "Board modified, Save before exit ?" -msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" +#: pcbnew/tool_pcb.cpp:29 +msgid "" +"Show active layer selections\n" +"and select layer pair for route and place via" +msgstr "" +"Affiche sélections couche active\n" +"et sélection paire de couches pour routage et placement via" -#: pcbnew/pcbframe.cpp:302 -msgid "Confirmation" -msgstr "Confirmation" +#: pcbnew/tool_pcb.cpp:203 +msgid "New board" +msgstr "Nouveau Circuit Imprimé" -#: pcbnew/pcbframe.cpp:350 -msgid "3D Frame already opened" -msgstr "Fenêtre 3D déjà ouverte" +#: pcbnew/tool_pcb.cpp:205 +msgid "Open existing board" +msgstr "Ouvrir C.I. existant" -#: pcbnew/pcbframe.cpp:354 -msgid "3D Viewer" -msgstr "Visu 3D" +#: pcbnew/tool_pcb.cpp:207 +msgid "Save board" +msgstr "Sauver Circuit Imprimé" + +#: pcbnew/tool_pcb.cpp:211 +msgid "Page settings (size, texts)" +msgstr "Ajustage de la feuille de dessin (dimensions, textes)" + +#: pcbnew/tool_pcb.cpp:216 +msgid "Open module editor" +msgstr "Ouvrir Editeur de modules" + +#: pcbnew/tool_pcb.cpp:220 +msgid "Cut selected item" +msgstr "Suppression des éléments sélectionnés" + +#: pcbnew/tool_pcb.cpp:224 +msgid "Copy selected item" +msgstr "Copie des éléments sélectionnés" + +#: pcbnew/tool_pcb.cpp:227 +msgid "Paste" +msgstr "Copie des éléments sauvegardés" + +#: pcbnew/tool_pcb.cpp:232 +msgid "Undo last edition" +msgstr "Défait dernière édition" + +#: pcbnew/tool_pcb.cpp:234 +msgid "Redo the last undo command" +msgstr "Refait la dernière commande defaite" + +#: pcbnew/tool_pcb.cpp:238 +msgid "Print board" +msgstr "Imprimer C.I." + +#: pcbnew/tool_pcb.cpp:240 +msgid "Plot (HPGL, PostScript, or GERBER format)" +msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER" + +#: pcbnew/tool_pcb.cpp:243 +msgid "Zoom in" +msgstr "Zoom +" + +#: pcbnew/tool_pcb.cpp:248 +msgid "Zoom out" +msgstr "Zoom -" + +#: pcbnew/tool_pcb.cpp:253 +msgid "Redraw view" +msgstr "Redessin de l'écran" + +#: pcbnew/tool_pcb.cpp:258 +msgid "Zoom auto" +msgstr "Zoom Automatique" + +#: pcbnew/tool_pcb.cpp:264 +msgid "Find components and texts" +msgstr "Recherche de composants et textes" + +#: pcbnew/tool_pcb.cpp:272 +msgid "Read netlist" +msgstr "Lire Netliste" + +#: pcbnew/tool_pcb.cpp:274 +msgid "Pcb Design Rules Check" +msgstr "Contrôle des règles de conception" + +#: pcbnew/tool_pcb.cpp:286 +msgid "Mode Module: Manual and Automatic Move or Place for modules" +msgstr "Mode Module: Déplacements ou Placement Manuel ou Automatique des modules" + +#: pcbnew/tool_pcb.cpp:290 +msgid "Mode Track and Autorouting" +msgstr "Mode Pistes et Autoroutage" + +#: pcbnew/tool_pcb.cpp:296 +msgid "Fast access to theWeb Based FreeROUTE advanced router" +msgstr "Acces rapide au routeur avancé FreeROUTE sur le Web" + +#: pcbnew/tool_pcb.cpp:323 +msgid "Drc OFF" +msgstr "Drc DESACTIVEE" + +#: pcbnew/tool_pcb.cpp:326 +msgid "Display Grid OFF" +msgstr "Suppression de l'affichage de la grille" + +#: pcbnew/tool_pcb.cpp:329 +msgid "Display Polar Coord ON" +msgstr "Activer affichage coord Polaires" + +#: pcbnew/tool_pcb.cpp:332 +msgid "Units in inches" +msgstr "Unités en pouces" + +#: pcbnew/tool_pcb.cpp:335 +msgid "Units in millimeters" +msgstr "Unités en millimètres" + +#: pcbnew/tool_pcb.cpp:338 +msgid "Change Cursor Shape" +msgstr "Sélection de la forme du curseur" + +#: pcbnew/tool_pcb.cpp:343 +msgid "Show General Ratsnest" +msgstr "Montrer le chevelu général" + +#: pcbnew/tool_pcb.cpp:346 +msgid "Show Module Ratsnest when moving" +msgstr "Montrer le chevelu du module pendant déplacement" + +#: pcbnew/tool_pcb.cpp:352 +msgid "Enable Auto Del Track" +msgstr "Autoriser l'effacement automatique des pistes" + +#: pcbnew/tool_pcb.cpp:357 +msgid "Show filled areas in zones" +msgstr "Afficher les surfaces remplies dans les zones" + +#: pcbnew/tool_pcb.cpp:360 +msgid "Do not show filled areas in zones" +msgstr "Ne pas afficher les surfaces remplies dans les zones" + +#: pcbnew/tool_pcb.cpp:363 +msgid "Show outlines of filled areas only in zones" +msgstr "Afficher uniquement les contours des surfaces remplies dans les zones" + +#: pcbnew/tool_pcb.cpp:368 +msgid "Show Pads Sketch" +msgstr "Afficher pastilles en contour" + +#: pcbnew/tool_pcb.cpp:372 +msgid "Show Vias Sketch" +msgstr "Afficher Pastilles en Contour" + +#: pcbnew/tool_pcb.cpp:376 +msgid "Show Tracks Sketch" +msgstr "Afficher Pistes en Contour" + +#: pcbnew/tool_pcb.cpp:381 +msgid "High Contrast Mode Display" +msgstr "Mode d'affichage Haut Contraste" + +#: pcbnew/tool_pcb.cpp:388 +msgid "Show Invisible Text" +msgstr "Montrer textes invisibles" + +#: pcbnew/tool_pcb.cpp:399 +msgid "" +"Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n" +" This is a experimental feature (under development)" +msgstr "" +"Affiche/supprime le toolbar vertical auxiliaire (outils pour applications micro-ondes)\n" +"C'est un outil expérimental (en cours de développement)" + +#: pcbnew/tool_pcb.cpp:429 +msgid "Net highlight" +msgstr "Surbrillance des équipotentielles" + +#: pcbnew/tool_pcb.cpp:434 +msgid "Display local ratsnest (pad or module)" +msgstr "Afficher le chevelu local (pastilles ou modules)" + +#: pcbnew/tool_pcb.cpp:440 +msgid "Add modules" +msgstr "Addition de Modules" + +#: pcbnew/tool_pcb.cpp:444 +msgid "Add tracks and vias" +msgstr "Ajouter pistes et vias" + +#: pcbnew/tool_pcb.cpp:448 +msgid "Add zones" +msgstr "Addition de Zones" + +#: pcbnew/tool_pcb.cpp:453 +msgid "Add graphic line or polygon" +msgstr "Addition de lignes ou polygones graphiques" + +#: pcbnew/tool_pcb.cpp:457 +msgid "Add graphic circle" +msgstr "Addition de graphiques (Cercle)" + +#: pcbnew/tool_pcb.cpp:461 +msgid "Add graphic arc" +msgstr "Addition de graphiques (Arc de Cercle)" + +#: pcbnew/tool_pcb.cpp:465 +msgid "Add text" +msgstr "Ajout de Texte" + +#: pcbnew/tool_pcb.cpp:470 +msgid "Add dimension" +msgstr "Ajout des cotes" + +#: pcbnew/tool_pcb.cpp:474 +msgid "Add layer alignment target" +msgstr "Ajouter Mire de superposition" + +#: pcbnew/tool_pcb.cpp:479 +msgid "Delete items" +msgstr "Suppression d'éléments" + +#: pcbnew/tool_pcb.cpp:484 +msgid "Offset adjust for drill and place files" +msgstr "Ajuste offset pour fichier de perçage et placement" + +#: pcbnew/tool_pcb.cpp:510 +msgid "Create line of specified length for microwave applications" +msgstr "Création de lignes de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:514 +msgid "Create gap of specified length for microwave applications" +msgstr "Création de gaps de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:520 +msgid "Create stub of specified length for microwave applications" +msgstr "Création de stub de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:524 +msgid "Create stub (arc) of specified length for microwave applications" +msgstr "Création de stub (arc) de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:529 +msgid "Create a polynomial shape for microwave applications" +msgstr "Création de formes polynomiales (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:573 +msgid "Current NetClass clearance value" +msgstr "Valeur isolation NetClass courante" + +#: pcbnew/tool_pcb.cpp:578 +msgid "" +"Auto track width: when starting on an existing track use its width\n" +"otherwise, use current width setting" +msgstr "" +"Largeur de piste automatique: si on démarre sur une piste existante, utiliser sa largeur\n" +" sinon utiliser la largeur courante" + +#: pcbnew/tool_pcb.cpp:595 +msgid "Name of the current NetClass" +msgstr "Nom de la NetClass courante" + +#: pcbnew/tool_pcb.cpp:611 +msgid "Auto" +msgstr "Auto" + +#: pcbnew/tool_pcb.cpp:615 +msgid "Zoom " +msgstr "Zoom " + +#: pcbnew/tool_pcb.cpp:635 +msgid "Grid" +msgstr "Grille" + +#: pcbnew/tool_pcb.cpp:653 +msgid "User Grid" +msgstr "Grille perso" + +#: pcbnew/tool_pcb.cpp:764 +msgid "+/- to switch" +msgstr "+/- pour commuter" #: pcbnew/solve.cpp:240 msgid "Abort routing?" @@ -1187,69 +1447,6 @@ msgstr "Connecte une extrémité de piste en l'air, lorsque elle couvre un pad o msgid "Clean pcb" msgstr "Nettoyage PCB" -#: pcbnew/class_track.cpp:900 -msgid "Track" -msgstr "Piste" - -#: pcbnew/class_track.cpp:904 -msgid "Zone" -msgstr "Zone" - -#: pcbnew/class_track.cpp:929 -msgid "NetName" -msgstr "NetName" - -#: pcbnew/class_track.cpp:935 -msgid "NetCode" -msgstr "NetCode" - -#: pcbnew/class_track.cpp:940 -#: pcbnew/class_drawsegment.cpp:390 -msgid "Segment" -msgstr "Segment" - -#: pcbnew/class_track.cpp:942 -#: pcbnew/class_drawsegment.cpp:376 -msgid "Circle" -msgstr "Cercle" - -#: pcbnew/class_track.cpp:944 -msgid "Standard" -msgstr "Standard" - -#: pcbnew/class_track.cpp:952 -msgid "Flags" -msgstr "Flags" - -#: pcbnew/class_track.cpp:965 -msgid "Stat" -msgstr "Stat" - -#: pcbnew/class_track.cpp:981 -#: pcbnew/class_drawsegment.cpp:400 -msgid "Layer" -msgstr "Couche" - -#: pcbnew/class_track.cpp:990 -msgid "Diam" -msgstr "Diam" - -#: pcbnew/class_track.cpp:998 -msgid "Drill" -msgstr "Perçage" - -#: pcbnew/class_track.cpp:1002 -msgid "(Specific)" -msgstr "(Specifique)" - -#: pcbnew/class_track.cpp:1004 -msgid "(Default)" -msgstr "(Défaut)" - -#: pcbnew/class_track.cpp:1016 -msgid "Net Class" -msgstr "Classe d'Equipot" - #: pcbnew/modedit.cpp:76 msgid "Selection Clarification" msgstr "Clarification de la Sélection" @@ -1314,6 +1511,22 @@ msgstr "Forme X" msgid "Target Shape:" msgstr "Forme Mire:" +#: pcbnew/pcbframe.cpp:303 +msgid "Board modified, Save before exit ?" +msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" + +#: pcbnew/pcbframe.cpp:304 +msgid "Confirmation" +msgstr "Confirmation" + +#: pcbnew/pcbframe.cpp:352 +msgid "3D Frame already opened" +msgstr "Fenêtre 3D déjà ouverte" + +#: pcbnew/pcbframe.cpp:356 +msgid "3D Viewer" +msgstr "Visu 3D" + #: pcbnew/dialog_initpcb.cpp:103 msgid "Items to delete" msgstr "Eléments à effacer" @@ -1366,6 +1579,10 @@ msgstr "Inclure Pistes Verrouillées" msgid "Shape" msgstr "Forme" +#: pcbnew/class_drawsegment.cpp:376 +msgid "Circle" +msgstr "Cercle" + #: pcbnew/class_drawsegment.cpp:380 msgid "Arc" msgstr "Arc" @@ -1378,66 +1595,13 @@ msgstr "Angle" msgid "Curve" msgstr "Courbe" -#: pcbnew/files.cpp:22 -msgid "Printed circuit board" -msgstr "Circuit imprimé" +#: pcbnew/class_drawsegment.cpp:390 +msgid "Segment" +msgstr "Segment" -#: pcbnew/files.cpp:85 -msgid "Recovery file " -msgstr "Fichier de secours " - -#: pcbnew/files.cpp:85 -msgid " not found" -msgstr " non trouvé" - -#: pcbnew/files.cpp:91 -msgid "Ok to load Recovery file " -msgstr "Ok pour charger le fichier de secours" - -#: pcbnew/files.cpp:147 -msgid "Board Modified: Continue ?" -msgstr "Circuit imprimé modifié, Continuer ?" - -#: pcbnew/files.cpp:167 -msgid "Open Board File" -msgstr "Ouvrir Fichier C.I." - -#: pcbnew/files.cpp:190 -#, c-format -msgid "File <%s> not found" -msgstr " fichier %s non trouvé" - -#: pcbnew/files.cpp:210 -msgid "This file was created by a more recent version of PCBnew and may not load correctly. Please consider updating!" -msgstr "Ce fichier a été créé par une version plus récente de PCBnew et peut être incorrectement chargé. SVP penser à une mise à jour!" - -#: pcbnew/files.cpp:215 -msgid "This file was created by an older version of PCBnew. It will be stored in the new file format when you save this file again." -msgstr "Ce fichier a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde." - -#: pcbnew/files.cpp:307 -msgid "Save Board File" -msgstr "Sauver Fichier C.I." - -#: pcbnew/files.cpp:341 -msgid "Warning: unable to create backup file " -msgstr "Attention: impossible de créer un fichier backup " - -#: pcbnew/files.cpp:358 -msgid "Unable to create " -msgstr "Impossible de créer " - -#: pcbnew/files.cpp:377 -msgid "Backup file: " -msgstr "Fichier backup: " - -#: pcbnew/files.cpp:381 -msgid "Wrote board file: " -msgstr "Ecriture fichier CI: " - -#: pcbnew/files.cpp:383 -msgid "Failed to create " -msgstr "Impossible de créer fichier " +#: pcbnew/class_drawsegment.cpp:400 +msgid "Layer" +msgstr "Couche" #: pcbnew/find.cpp:117 msgid "Marker found" @@ -1489,138 +1653,66 @@ msgstr "Effacer Couche" msgid "Incorrect value for Via drill. No via drill change" msgstr "Valeur incorrecte pour perçage. Pas de changement pour la via" -#: pcbnew/librairi.cpp:34 -msgid "Kicad foot print export files (*.emp)|*.emp" -msgstr "Kicad fichiers export modules (*.emp)|*.emp" +#: pcbnew/files.cpp:22 +msgid "Printed circuit board" +msgstr "Circuit imprimé" -#: pcbnew/librairi.cpp:68 -msgid "Import Footprint Module" -msgstr "Importer Module" +#: pcbnew/files.cpp:85 +msgid "Recovery file " +msgstr "Fichier de secours " -#: pcbnew/librairi.cpp:100 -msgid "Not a module file" -msgstr "N'est pas un fichier de Modules" +#: pcbnew/files.cpp:85 +msgid " not found" +msgstr " non trouvé" -#: pcbnew/librairi.cpp:176 -msgid "Create New Library" -msgstr "Créer un Nouvelle Librairie" +#: pcbnew/files.cpp:91 +msgid "Ok to load Recovery file " +msgstr "Ok pour charger le fichier de secours" -#: pcbnew/librairi.cpp:176 -msgid "Export Module" -msgstr "Exporter Module" +#: pcbnew/files.cpp:147 +msgid "Board Modified: Continue ?" +msgstr "Circuit imprimé modifié, Continuer ?" -#: pcbnew/librairi.cpp:190 +#: pcbnew/files.cpp:167 +msgid "Open Board File" +msgstr "Ouvrir Fichier C.I." + +#: pcbnew/files.cpp:190 #, c-format -msgid "Unable to create <%s>" -msgstr "Incapable de créer <%s>" +msgid "File <%s> not found" +msgstr " fichier %s non trouvé" -#: pcbnew/librairi.cpp:210 -#, c-format -msgid "Module exported in file <%s>" -msgstr "Module exporté en fichier <%s>" +#: pcbnew/files.cpp:210 +msgid "This file was created by a more recent version of PCBnew and may not load correctly. Please consider updating!" +msgstr "Ce fichier a été créé par une version plus récente de PCBnew et peut être incorrectement chargé. SVP penser à une mise à jour!" -#: pcbnew/librairi.cpp:233 -#, c-format -msgid "Ok to delete module %s in library %s" -msgstr "Ok pour effacer module %s en librairie %s" +#: pcbnew/files.cpp:215 +msgid "This file was created by an older version of PCBnew. It will be stored in the new file format when you save this file again." +msgstr "Ce fichier a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde." -#: pcbnew/librairi.cpp:255 -msgid "Not a Library file" -msgstr "N'est pas un fichier Librairie" +#: pcbnew/files.cpp:308 +msgid "Save Board File" +msgstr "Sauver Fichier C.I." -#: pcbnew/librairi.cpp:284 -#, c-format -msgid "Module [%s] not found" -msgstr "Module [%s] non trouvé" +#: pcbnew/files.cpp:342 +msgid "Warning: unable to create backup file " +msgstr "Attention: impossible de créer un fichier backup " -#: pcbnew/librairi.cpp:382 -#, c-format -msgid "Component %s deleted in library %s" -msgstr "Composant %s supprimé en librairie %s" +#: pcbnew/files.cpp:359 +msgid "Unable to create " +msgstr "Impossible de créer " -#: pcbnew/librairi.cpp:409 -msgid " No modules to archive!" -msgstr "Pas de Modules à archiver" +#: pcbnew/files.cpp:378 +msgid "Backup file: " +msgstr "Fichier backup: " -#: pcbnew/librairi.cpp:416 -msgid "Library" -msgstr "Librairie" +#: pcbnew/files.cpp:382 +msgid "Wrote board file: " +msgstr "Ecriture fichier CI: " -#: pcbnew/librairi.cpp:433 -#, c-format -msgid "File %s exists, OK to replace ?" -msgstr "Fichier %s existant, OK pour remplacer ?" - -#: pcbnew/librairi.cpp:512 -#, c-format -msgid "Library %s not found" -msgstr "Librairie %s non trouvée" - -#: pcbnew/librairi.cpp:523 -msgid "Name:" -msgstr "Nom:" - -#: pcbnew/librairi.cpp:523 -msgid "Save module" -msgstr "Sauver Module" - -#: pcbnew/librairi.cpp:533 -#, c-format -msgid "Unable to open %s" -msgstr "Ne peut pas ouvrir \"%s\"" - -#: pcbnew/librairi.cpp:543 -#, c-format -msgid "File %s is not a eeschema library" -msgstr "Fichier %s n'est pas une librairie eeschema" - -#: pcbnew/librairi.cpp:572 -msgid "" -"Module exists\n" -" Line: " -msgstr "" -"Module existe\n" -" Ligne " - -#: pcbnew/librairi.cpp:694 -msgid "Component " -msgstr "Composant" - -#: pcbnew/librairi.cpp:695 -msgid " added in " -msgstr " ajouté dans " - -#: pcbnew/librairi.cpp:695 -msgid " replaced in " -msgstr " remplacé dans " - -#: pcbnew/librairi.cpp:722 -msgid "Module Reference:" -msgstr "Référence Module" - -#: pcbnew/librairi.cpp:722 -msgid "Module Creation" -msgstr "Création de Module" - -#: pcbnew/librairi.cpp:724 -msgid "No reference, aborted" -msgstr "Pas de référence, abandon" - -#: pcbnew/librairi.cpp:770 -msgid "Active Lib:" -msgstr "Librairie Active:" - -#: pcbnew/librairi.cpp:782 -msgid "Module Editor (lib: " -msgstr "Editeur de modules (lib: " - -#: pcbnew/librairi.cpp:797 -msgid "Library exists " -msgstr "Librairie existante " - -#: pcbnew/librairi.cpp:812 -msgid "Create error " -msgstr "Erreur en création " +#: pcbnew/files.cpp:384 +msgid "Failed to create " +msgstr "Impossible de créer fichier " #: pcbnew/cross-probing.cpp:60 #, c-format @@ -2438,11 +2530,11 @@ msgid "Ok to delete selected items ?" msgstr "Ok pour effacer les éléments sélectionnés ?" #: pcbnew/initpcb.cpp:155 -msgid "Current Board will be lost and this operation and cannot be undone. Continue ?" +msgid "Current Board will be lost and this operation cannot be undone. Continue ?" msgstr "Le circuit actuel sera perdu et cette opération ne pourra pas être annulée. Continuer ?" #: pcbnew/initpcb.cpp:201 -msgid "Current Footprint will be lost and this operation and cannot be undone. Continue ?" +msgid "Current Footprint will be lost and this operation cannot be undone. Continue ?" msgstr "Le module actuel sera perdu et cette opération ne pourra pas être annulée. Continuer ?" #: pcbnew/ioascii.cpp:175 @@ -2532,10 +2624,18 @@ msgstr "(Cutout)" msgid "Not Found" msgstr " Non Trouvé" +#: pcbnew/class_zone.cpp:944 +msgid "NetName" +msgstr "NetName" + #: pcbnew/class_zone.cpp:947 msgid "Non Copper Zone" msgstr "Zone non Cuivre" +#: pcbnew/class_zone.cpp:952 +msgid "NetCode" +msgstr "NetCode" + #: pcbnew/class_zone.cpp:960 msgid "Corners" msgstr "Sommets" @@ -2597,6 +2697,7 @@ msgid "Sizes and Widths" msgstr "Dims. et Epaiss." #: pcbnew/menubarmodedit.cpp:38 +#: pcbnew/menubarpcb.cpp:239 msgid "Adjust width for texts and drawings" msgstr "Ajuster dims pour textes et graphiques" @@ -2609,10 +2710,12 @@ msgid "User Grid Size" msgstr "Dim Grille utilisteur" #: pcbnew/menubarmodedit.cpp:48 +#: pcbnew/menubarpcb.cpp:233 msgid "Adjust User Grid" msgstr "Ajuster Grille utilisateur" #: pcbnew/menubarmodedit.cpp:61 +#: pcbnew/menubarpcb.cpp:314 msgid "&Contents" msgstr "&Contenu" @@ -2629,22 +2732,27 @@ msgid "About pcbnew PCB designer" msgstr "Au sujet de Pcbnew, concption de PCB" #: pcbnew/menubarmodedit.cpp:79 +#: pcbnew/menubarpcb.cpp:329 msgid "3D Display" msgstr "3D Visu" #: pcbnew/menubarmodedit.cpp:79 +#: pcbnew/menubarpcb.cpp:329 msgid "Show board in 3D viewer" msgstr "Visualisation du circuit en 3D" #: pcbnew/menubarmodedit.cpp:83 +#: pcbnew/menubarpcb.cpp:336 msgid "&Dimensions" msgstr "&Dimensions" #: pcbnew/menubarmodedit.cpp:84 +#: pcbnew/menubarpcb.cpp:339 msgid "&3D Display" msgstr "&3D Visu" #: pcbnew/menubarmodedit.cpp:85 +#: pcbnew/menubarpcb.cpp:340 msgid "&Help" msgstr "&Aide" @@ -3105,45 +3213,45 @@ msgid "Select general options for PCBNEW" msgstr " Sélection options générales pour PCBNEW" #: pcbnew/menubarpcb.cpp:188 -msgid "Copper &Layers" -msgstr "Couches &Cuivre." - -#: pcbnew/menubarpcb.cpp:189 -msgid "Select copper layers count and layers names" -msgstr "Sélection du nombre de couches cuivre et du nom des couches" - -#: pcbnew/menubarpcb.cpp:193 msgid "&Display" msgstr "&Affichage" -#: pcbnew/menubarpcb.cpp:194 +#: pcbnew/menubarpcb.cpp:189 msgid "Select how items (pads, tracks texts ... ) are displayed" msgstr "Sélectionner comment les éléments (pads, pistes, textes ...) sont affichés" -#: pcbnew/menubarpcb.cpp:201 +#: pcbnew/menubarpcb.cpp:196 msgid "&Save Preferences" msgstr "&Sauver Préférences" -#: pcbnew/menubarpcb.cpp:202 +#: pcbnew/menubarpcb.cpp:197 msgid "Save application preferences" msgstr "Sauver les préférences de l'application" -#: pcbnew/menubarpcb.cpp:206 +#: pcbnew/menubarpcb.cpp:201 msgid "&Read Preferences" msgstr "&Lire Préférences" -#: pcbnew/menubarpcb.cpp:207 +#: pcbnew/menubarpcb.cpp:202 msgid "Read application preferences" msgstr "Lire les préférences de l'application" -#: pcbnew/menubarpcb.cpp:217 +#: pcbnew/menubarpcb.cpp:212 msgid "Design Rules" msgstr "Règles de Conception" -#: pcbnew/menubarpcb.cpp:217 +#: pcbnew/menubarpcb.cpp:212 msgid "Open the design rules dialog editor" msgstr "Ouvrir la fenêtre de dialogue de l'éditeur de règles de conception" +#: pcbnew/menubarpcb.cpp:216 +msgid "Copper &Layers" +msgstr "Couches &Cuivre." + +#: pcbnew/menubarpcb.cpp:217 +msgid "Select copper layers count and layers names" +msgstr "Sélection du nombre de couches cuivre et du nom des couches" + #: pcbnew/menubarpcb.cpp:227 msgid "Tracks and Vias" msgstr "Pistes et Vias" @@ -3152,16 +3260,11 @@ msgstr "Pistes et Vias" msgid "Adjust size and width for tracks and vias" msgstr "Ajuster largeur des pistes et diamètre de vias" -#: pcbnew/menubarpcb.cpp:232 -msgid "Grid" -msgstr "Grille" - #: pcbnew/menubarpcb.cpp:238 msgid "Texts and Drawings" msgstr "Textes et Tracés" #: pcbnew/menubarpcb.cpp:243 -#: pcbnew/class_board.cpp:545 msgid "Pads" msgstr "Pads" @@ -3273,11 +3376,98 @@ msgstr "&Divers" msgid "P&ostprocess" msgstr "P&ostprocesseurs" +#: pcbnew/tool_modedit.cpp:42 +msgid "Select working library" +msgstr "Sélection de la librairie de travail" + +#: pcbnew/tool_modedit.cpp:46 +msgid "Save Module in working library" +msgstr "Sauver Module en librairie de travail" + +#: pcbnew/tool_modedit.cpp:51 +msgid "Create new library and save current module" +msgstr "Créer une nouvelle librairie et y sauver le composant" + +#: pcbnew/tool_modedit.cpp:56 +msgid "Delete part in current library" +msgstr "Supprimer composant en librairie de travail" + +#: pcbnew/tool_modedit.cpp:61 +msgid "New Module" +msgstr "Nouveau Module" + +#: pcbnew/tool_modedit.cpp:65 +msgid "Load module from lib" +msgstr "Charger un module à partir d'une librairie" + +#: pcbnew/tool_modedit.cpp:70 +msgid "Load module from current board" +msgstr "Charger module à partir du C.I." + +#: pcbnew/tool_modedit.cpp:74 +msgid "Update module in current board" +msgstr "Remplacer module dans le C.I." + +#: pcbnew/tool_modedit.cpp:78 +msgid "Insert module into current board" +msgstr "Placer module dans le C.I." + +#: pcbnew/tool_modedit.cpp:83 +msgid "import module" +msgstr "Importer Module" + +#: pcbnew/tool_modedit.cpp:87 +msgid "export module" +msgstr "Exporter Module" + +#: pcbnew/tool_modedit.cpp:99 +msgid "Module Properties" +msgstr "Propriétés du Module" + +#: pcbnew/tool_modedit.cpp:103 +msgid "Print Module" +msgstr "Imprimer Module" + +#: pcbnew/tool_modedit.cpp:134 +msgid "Module Check" +msgstr "Test module" + +#: pcbnew/tool_modedit.cpp:160 +msgid "Add Pads" +msgstr "Addition de \"pins\"" + +#: pcbnew/tool_modedit.cpp:177 +msgid "Add Text" +msgstr "Ajout de Texte" + +#: pcbnew/tool_modedit.cpp:238 +msgid "Show Texts Sketch" +msgstr "Afficher textes en contour" + +#: pcbnew/tool_modedit.cpp:242 +msgid "Show Edges Sketch" +msgstr "Afficher Modules en contour" + +#: pcbnew/tool_modedit.cpp:311 +#, c-format +msgid "Grid %.1f" +msgstr "Grille %.1f" + +#: pcbnew/tool_modedit.cpp:313 +#, c-format +msgid "Grid %.3f" +msgstr "Grille %.3f" + #: pcbnew/move-drag_pads.cpp:259 #, c-format msgid "Delete Pad (module %s %s) " msgstr "Effacer Pad (module %s %s) " +#: pcbnew/modules.cpp:82 +#: pcbnew/librairi.cpp:523 +msgid "Name:" +msgstr "Nom:" + #: pcbnew/modules.cpp:82 msgid "Search footprint" msgstr "Cherche Module" @@ -3286,49 +3476,13 @@ msgstr "Cherche Module" msgid "Value " msgstr "Valeur " -#: pcbnew/edit.cpp:322 -msgid "Add Tracks" -msgstr "Addition de Pistes" +#: pcbnew/automove.cpp:216 +msgid "Move Modules ?" +msgstr "Déplacer Modules ?" -#: pcbnew/edit.cpp:331 -msgid "Add Zones" -msgstr "Addition de Zones" - -#: pcbnew/edit.cpp:333 -msgid "Warning: Display Zone is OFF!!!" -msgstr "Attention: Affichage zones désactivé !!!" - -#: pcbnew/edit.cpp:339 -msgid "Add Layer Alignment Target" -msgstr "Ajouter Mire de superposition" - -#: pcbnew/edit.cpp:343 -msgid "Adjust Zero" -msgstr "Ajuster Zéro" - -#: pcbnew/edit.cpp:349 -msgid "Add Graphic" -msgstr "Addition éléments graphiques" - -#: pcbnew/edit.cpp:353 -msgid "Add Text" -msgstr "Ajout de Texte" - -#: pcbnew/edit.cpp:357 -msgid "Add Modules" -msgstr "Addition de Modules" - -#: pcbnew/edit.cpp:361 -msgid "Add Dimension" -msgstr "Ajout de cotes" - -#: pcbnew/edit.cpp:369 -msgid "Net Highlight" -msgstr "Surbrillance des équipotentielles" - -#: pcbnew/edit.cpp:373 -msgid "Local Ratsnest" -msgstr "Montrer le chevelu général" +#: pcbnew/automove.cpp:224 +msgid "Autoplace modules: No board edges detected. Unable to place modules" +msgstr "Autoplace modules: Pas de contours sur pcb. Impossible de placer les modules" #: pcbnew/class_board.cpp:45 msgid "This is the default net class." @@ -3358,6 +3512,135 @@ msgstr "Connect" msgid "NoConn" msgstr "Non Conn" +#: pcbnew/librairi.cpp:34 +msgid "Kicad foot print export files (*.emp)|*.emp" +msgstr "Kicad fichiers export modules (*.emp)|*.emp" + +#: pcbnew/librairi.cpp:68 +msgid "Import Footprint Module" +msgstr "Importer Module" + +#: pcbnew/librairi.cpp:100 +msgid "Not a module file" +msgstr "N'est pas un fichier de Modules" + +#: pcbnew/librairi.cpp:176 +msgid "Create New Library" +msgstr "Créer un Nouvelle Librairie" + +#: pcbnew/librairi.cpp:176 +msgid "Export Module" +msgstr "Exporter Module" + +#: pcbnew/librairi.cpp:190 +#, c-format +msgid "Unable to create <%s>" +msgstr "Incapable de créer <%s>" + +#: pcbnew/librairi.cpp:210 +#, c-format +msgid "Module exported in file <%s>" +msgstr "Module exporté en fichier <%s>" + +#: pcbnew/librairi.cpp:233 +#, c-format +msgid "Ok to delete module %s in library %s" +msgstr "Ok pour effacer module %s en librairie %s" + +#: pcbnew/librairi.cpp:255 +msgid "Not a Library file" +msgstr "N'est pas un fichier Librairie" + +#: pcbnew/librairi.cpp:284 +#, c-format +msgid "Module [%s] not found" +msgstr "Module [%s] non trouvé" + +#: pcbnew/librairi.cpp:382 +#, c-format +msgid "Component %s deleted in library %s" +msgstr "Composant %s supprimé en librairie %s" + +#: pcbnew/librairi.cpp:409 +msgid " No modules to archive!" +msgstr "Pas de Modules à archiver" + +#: pcbnew/librairi.cpp:416 +msgid "Library" +msgstr "Librairie" + +#: pcbnew/librairi.cpp:433 +#, c-format +msgid "File %s exists, OK to replace ?" +msgstr "Fichier %s existant, OK pour remplacer ?" + +#: pcbnew/librairi.cpp:512 +#, c-format +msgid "Library %s not found" +msgstr "Librairie %s non trouvée" + +#: pcbnew/librairi.cpp:523 +msgid "Save module" +msgstr "Sauver Module" + +#: pcbnew/librairi.cpp:533 +#, c-format +msgid "Unable to open %s" +msgstr "Ne peut pas ouvrir \"%s\"" + +#: pcbnew/librairi.cpp:543 +#, c-format +msgid "File %s is not a eeschema library" +msgstr "Fichier %s n'est pas une librairie eeschema" + +#: pcbnew/librairi.cpp:572 +msgid "" +"Module exists\n" +" Line: " +msgstr "" +"Module existe\n" +" Ligne " + +#: pcbnew/librairi.cpp:694 +msgid "Component " +msgstr "Composant" + +#: pcbnew/librairi.cpp:695 +msgid " added in " +msgstr " ajouté dans " + +#: pcbnew/librairi.cpp:695 +msgid " replaced in " +msgstr " remplacé dans " + +#: pcbnew/librairi.cpp:722 +msgid "Module Reference:" +msgstr "Référence Module" + +#: pcbnew/librairi.cpp:722 +msgid "Module Creation" +msgstr "Création de Module" + +#: pcbnew/librairi.cpp:724 +msgid "No reference, aborted" +msgstr "Pas de référence, abandon" + +#: pcbnew/librairi.cpp:770 +msgid "Active Lib:" +msgstr "Librairie Active:" + +#: pcbnew/librairi.cpp:782 +msgid "Module Editor (lib: " +msgstr "Editeur de modules (lib: " + +#: pcbnew/librairi.cpp:797 +msgid "Library exists " +msgstr "Librairie existante " + +#: pcbnew/librairi.cpp:812 +msgid "Create error " +msgstr "Erreur en création " + #: pcbnew/class_text_mod.cpp:459 msgid "Ref." msgstr "Ref." @@ -3396,6 +3679,114 @@ msgstr "Taille H" msgid "V Size" msgstr "Taille V" +#: pcbnew/class_board_item.cpp:24 +#: pcbnew/dialog_pad_properties_base.cpp:44 +msgid "Rect" +msgstr "Rect" + +#: pcbnew/class_board_item.cpp:27 +msgid "Bezier Curve" +msgstr "Courbe de Bezier" + +#: pcbnew/class_board_item.cpp:58 +msgid "Footprint" +msgstr "Module" + +#: pcbnew/class_board_item.cpp:64 +msgid "Pad" +msgstr "Pad" + +#: pcbnew/class_board_item.cpp:67 +msgid "all copper layers" +msgstr "Toutes Couches Cuivre" + +#: pcbnew/class_board_item.cpp:72 +msgid "???" +msgstr "???" + +#: pcbnew/class_board_item.cpp:73 +msgid ") of " +msgstr ") de " + +#: pcbnew/class_board_item.cpp:77 +msgid "Pcb Graphic" +msgstr "Pcb Graphic" + +#: pcbnew/class_board_item.cpp:79 +#: pcbnew/class_board_item.cpp:131 +msgid "Length:" +msgstr "Long.:" + +#: pcbnew/class_board_item.cpp:80 +#: pcbnew/class_board_item.cpp:89 +#: pcbnew/class_board_item.cpp:129 +#: pcbnew/class_board_item.cpp:165 +#: pcbnew/class_board_item.cpp:181 +#: pcbnew/class_board_item.cpp:209 +#: pcbnew/class_board_item.cpp:226 +msgid " on " +msgstr " sur " + +#: pcbnew/class_board_item.cpp:84 +msgid "Pcb Text" +msgstr "Texte Pcb" + +#: pcbnew/class_board_item.cpp:96 +msgid "Reference" +msgstr "Référence" + +#: pcbnew/class_board_item.cpp:100 +#: pcbnew/class_board_item.cpp:106 +#: pcbnew/class_board_item.cpp:116 +msgid " of " +msgstr " de " + +#: pcbnew/class_board_item.cpp:113 +msgid "Graphic" +msgstr "Graphique" + +#: pcbnew/class_board_item.cpp:123 +msgid "Track" +msgstr "Piste" + +#: pcbnew/class_board_item.cpp:130 +#: pcbnew/class_board_item.cpp:201 +#: pcbnew/dialog_copper_zones_base.cpp:197 +msgid "Net:" +msgstr "Net:" + +#: pcbnew/class_board_item.cpp:150 +msgid "Not on copper layer" +msgstr "Pas sur Couches Cuivre" + +#: pcbnew/class_board_item.cpp:169 +msgid "Zone" +msgstr "Zone" + +#: pcbnew/class_board_item.cpp:187 +msgid "Via" +msgstr "Via" + +#: pcbnew/class_board_item.cpp:191 +msgid "Blind/Buried" +msgstr "Borgne/Aveugle" + +#: pcbnew/class_board_item.cpp:193 +msgid "Micro Via" +msgstr "Micro Via" + +#: pcbnew/class_board_item.cpp:221 +msgid "Dimension" +msgstr "Dimension" + +#: pcbnew/class_board_item.cpp:226 +msgid "Target" +msgstr "Mire" + +#: pcbnew/class_board_item.cpp:227 +msgid "size" +msgstr "dimension" + #: pcbnew/edit_track_width.cpp:152 msgid "Change track width (entire NET) ?" msgstr "Change largeur piste ( NET complet) ?" @@ -3471,105 +3862,41 @@ msgstr "Aspect des Contours" msgid "Layer selection:" msgstr "Sélection couche:" -#: pcbnew/class_board_item.cpp:24 -#: pcbnew/dialog_pad_properties_base.cpp:44 -msgid "Rect" -msgstr "Rect" +#: pcbnew/moduleframe.cpp:229 +msgid "Module Editor: Module modified! Continue?" +msgstr "Editeur de Module: Module modifié! Continuer ?" -#: pcbnew/class_board_item.cpp:27 -msgid "Bezier Curve" -msgstr "Courbe de Bezier" +#: pcbnew/moduleframe.cpp:338 +msgid "Polar Coords not show" +msgstr "Coord Polaires non affichées" -#: pcbnew/class_board_item.cpp:58 -msgid "Footprint" -msgstr "Module" +#: pcbnew/moduleframe.cpp:339 +msgid "Display Polar Coords" +msgstr "Affichage coord Polaires" -#: pcbnew/class_board_item.cpp:64 -msgid "Pad" -msgstr "Pad" +#: pcbnew/moduleframe.cpp:344 +msgid "Grid not show" +msgstr "Grille non montrée" -#: pcbnew/class_board_item.cpp:67 -msgid "all copper layers" -msgstr "Toutes Couches Cuivre" +#: pcbnew/moduleframe.cpp:344 +msgid "Show Grid" +msgstr "Afficher grille" -#: pcbnew/class_board_item.cpp:72 -msgid "???" -msgstr "???" +#: pcbnew/moduleframe.cpp:355 +msgid "Show Vias Sketch mode" +msgstr "Afficher pastilles en mode contour" -#: pcbnew/class_board_item.cpp:73 -msgid ") of " -msgstr ") de " +#: pcbnew/moduleframe.cpp:356 +msgid "Show vias filled mode" +msgstr "Afficher pastilles en mode plein" -#: pcbnew/class_board_item.cpp:77 -msgid "Pcb Graphic" -msgstr "Pcb Graphic" +#: pcbnew/moduleframe.cpp:361 +msgid "Show Pads Sketch mode" +msgstr "Afficher pastilles en contour" -#: pcbnew/class_board_item.cpp:79 -#: pcbnew/class_board_item.cpp:131 -msgid "Length:" -msgstr "Long.:" - -#: pcbnew/class_board_item.cpp:80 -#: pcbnew/class_board_item.cpp:89 -#: pcbnew/class_board_item.cpp:129 -#: pcbnew/class_board_item.cpp:165 -#: pcbnew/class_board_item.cpp:181 -#: pcbnew/class_board_item.cpp:209 -#: pcbnew/class_board_item.cpp:226 -msgid " on " -msgstr " sur " - -#: pcbnew/class_board_item.cpp:84 -msgid "Pcb Text" -msgstr "Texte Pcb" - -#: pcbnew/class_board_item.cpp:96 -msgid "Reference" -msgstr "Référence" - -#: pcbnew/class_board_item.cpp:100 -#: pcbnew/class_board_item.cpp:106 -#: pcbnew/class_board_item.cpp:116 -msgid " of " -msgstr " de " - -#: pcbnew/class_board_item.cpp:113 -msgid "Graphic" -msgstr "Graphique" - -#: pcbnew/class_board_item.cpp:130 -#: pcbnew/class_board_item.cpp:201 -#: pcbnew/dialog_copper_zones_base.cpp:197 -msgid "Net:" -msgstr "Net:" - -#: pcbnew/class_board_item.cpp:150 -msgid "Not on copper layer" -msgstr "Pas sur Couches Cuivre" - -#: pcbnew/class_board_item.cpp:187 -msgid "Via" -msgstr "Via" - -#: pcbnew/class_board_item.cpp:191 -msgid "Blind/Buried" -msgstr "Borgne/Aveugle" - -#: pcbnew/class_board_item.cpp:193 -msgid "Micro Via" -msgstr "Micro Via" - -#: pcbnew/class_board_item.cpp:221 -msgid "Dimension" -msgstr "Dimension" - -#: pcbnew/class_board_item.cpp:226 -msgid "Target" -msgstr "Mire" - -#: pcbnew/class_board_item.cpp:227 -msgid "size" -msgstr "dimension" +#: pcbnew/moduleframe.cpp:362 +msgid "Show pads filled mode" +msgstr "Afficher pastilles en mode plein" #: pcbnew/dialog_copper_zones_base.cpp:32 msgid "Zone Setup:" @@ -3739,8 +4066,8 @@ msgstr "" "Les noms de net correspondant à ce modèle ne sont pas listés" #: pcbnew/dialog_pcb_text_properties.cpp:76 -msgid "TextPCB properties" -msgstr "Propriétés des textes PCB" +msgid "PCB Text properties" +msgstr "Propriétés du Texte PCB" #: pcbnew/dialog_pcb_text_properties.cpp:107 msgid "Text:" @@ -3815,6 +4142,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" @@ -4144,325 +4475,33 @@ 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/tool_pcb.cpp:29 -msgid "" -"Show active layer selections\n" -"and select layer pair for route and place via" -msgstr "" -"Affiche sélections couche active\n" -"et sélection paire de couches pour routage et placement via" +#: pcbnew/class_track.cpp:988 +msgid "Flags" +msgstr "Flags" -#: pcbnew/tool_pcb.cpp:203 -msgid "New board" -msgstr "Nouveau Circuit Imprimé" +#: pcbnew/class_track.cpp:1001 +msgid "Stat" +msgstr "Stat" -#: pcbnew/tool_pcb.cpp:205 -msgid "Open existing board" -msgstr "Ouvrir C.I. existant" +#: pcbnew/class_track.cpp:1026 +msgid "Diam" +msgstr "Diam" -#: pcbnew/tool_pcb.cpp:207 -msgid "Save board" -msgstr "Sauver Circuit Imprimé" +#: pcbnew/class_track.cpp:1034 +msgid "Drill" +msgstr "Perçage" -#: pcbnew/tool_pcb.cpp:211 -msgid "Page settings (size, texts)" -msgstr "Ajustage de la feuille de dessin (dimensions, textes)" +#: pcbnew/class_track.cpp:1038 +msgid "(Specific)" +msgstr "(Specifique)" -#: pcbnew/tool_pcb.cpp:216 -msgid "Open module editor" -msgstr "Ouvrir Editeur de modules" +#: pcbnew/class_track.cpp:1040 +msgid "(Default)" +msgstr "(Défaut)" -#: pcbnew/tool_pcb.cpp:220 -msgid "Cut selected item" -msgstr "Suppression des éléments sélectionnés" - -#: pcbnew/tool_pcb.cpp:224 -msgid "Copy selected item" -msgstr "Copie des éléments sélectionnés" - -#: pcbnew/tool_pcb.cpp:227 -msgid "Paste" -msgstr "Copie des éléments sauvegardés" - -#: pcbnew/tool_pcb.cpp:232 -msgid "Undo last edition" -msgstr "Défait dernière édition" - -#: pcbnew/tool_pcb.cpp:234 -msgid "Redo the last undo command" -msgstr "Refait la dernière commande defaite" - -#: pcbnew/tool_pcb.cpp:238 -msgid "Print board" -msgstr "Imprimer C.I." - -#: pcbnew/tool_pcb.cpp:240 -msgid "Plot (HPGL, PostScript, or GERBER format)" -msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER" - -#: pcbnew/tool_pcb.cpp:243 -msgid "Zoom in" -msgstr "Zoom +" - -#: pcbnew/tool_pcb.cpp:248 -msgid "Zoom out" -msgstr "Zoom -" - -#: pcbnew/tool_pcb.cpp:253 -msgid "Redraw view" -msgstr "Redessin de l'écran" - -#: pcbnew/tool_pcb.cpp:258 -msgid "Zoom auto" -msgstr "Zoom Automatique" - -#: pcbnew/tool_pcb.cpp:264 -msgid "Find components and texts" -msgstr "Recherche de composants et textes" - -#: pcbnew/tool_pcb.cpp:272 -msgid "Read netlist" -msgstr "Lire Netliste" - -#: pcbnew/tool_pcb.cpp:274 -msgid "Pcb Design Rules Check" -msgstr "Contrôle des règles de conception" - -#: pcbnew/tool_pcb.cpp:286 -msgid "Mode Module: Manual and Automatic Move or Place for modules" -msgstr "Mode Module: Déplacements ou Placement Manuel ou Automatique des modules" - -#: pcbnew/tool_pcb.cpp:290 -msgid "Mode Track and Autorouting" -msgstr "Mode Pistes et Autoroutage" - -#: pcbnew/tool_pcb.cpp:296 -msgid "Fast access to theWeb Based FreeROUTE advanced router" -msgstr "Acces rapide au routeur avancé FreeROUTE sur le Web" - -#: pcbnew/tool_pcb.cpp:323 -msgid "Drc OFF" -msgstr "Drc DESACTIVEE" - -#: pcbnew/tool_pcb.cpp:326 -msgid "Display Grid OFF" -msgstr "Suppression de l'affichage de la grille" - -#: pcbnew/tool_pcb.cpp:329 -msgid "Display Polar Coord ON" -msgstr "Activer affichage coord Polaires" - -#: pcbnew/tool_pcb.cpp:332 -msgid "Units in inches" -msgstr "Unités en pouces" - -#: pcbnew/tool_pcb.cpp:335 -msgid "Units in millimeters" -msgstr "Unités en millimètres" - -#: pcbnew/tool_pcb.cpp:338 -msgid "Change Cursor Shape" -msgstr "Sélection de la forme du curseur" - -#: pcbnew/tool_pcb.cpp:343 -msgid "Show General Ratsnest" -msgstr "Montrer le chevelu général" - -#: pcbnew/tool_pcb.cpp:346 -msgid "Show Module Ratsnest when moving" -msgstr "Montrer le chevelu du module pendant déplacement" - -#: pcbnew/tool_pcb.cpp:352 -msgid "Enable Auto Del Track" -msgstr "Autoriser l'effacement automatique des pistes" - -#: pcbnew/tool_pcb.cpp:357 -msgid "Show filled areas in zones" -msgstr "Afficher les surfaces remplies dans les zones" - -#: pcbnew/tool_pcb.cpp:360 -msgid "Do not show filled areas in zones" -msgstr "Ne pas afficher les surfaces remplies dans les zones" - -#: pcbnew/tool_pcb.cpp:363 -msgid "Show outlines of filled areas only in zones" -msgstr "Afficher uniquement les contours des surfaces remplies dans les zones" - -#: pcbnew/tool_pcb.cpp:368 -msgid "Show Pads Sketch" -msgstr "Afficher pastilles en contour" - -#: pcbnew/tool_pcb.cpp:372 -msgid "Show Tracks Sketch" -msgstr "Afficher Pistes en Contour" - -#: pcbnew/tool_pcb.cpp:377 -msgid "High Contrast Mode Display" -msgstr "Mode d'affichage Haut Contraste" - -#: pcbnew/tool_pcb.cpp:384 -msgid "Show Invisible Text" -msgstr "Montrer textes invisibles" - -#: pcbnew/tool_pcb.cpp:395 -msgid "" -"Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n" -" This is a experimental feature (under development)" -msgstr "" -"Affiche/supprime le toolbar vertical auxiliaire (outils pour applications micro-ondes)\n" -"C'est un outil expérimental (en cours de développement)" - -#: pcbnew/tool_pcb.cpp:425 -msgid "Net highlight" -msgstr "Surbrillance des équipotentielles" - -#: pcbnew/tool_pcb.cpp:430 -msgid "Display local ratsnest (pad or module)" -msgstr "Afficher le chevelu local (pastilles ou modules)" - -#: pcbnew/tool_pcb.cpp:436 -msgid "Add modules" -msgstr "Addition de Modules" - -#: pcbnew/tool_pcb.cpp:440 -msgid "Add tracks and vias" -msgstr "Ajouter pistes et vias" - -#: pcbnew/tool_pcb.cpp:444 -msgid "Add zones" -msgstr "Addition de Zones" - -#: pcbnew/tool_pcb.cpp:449 -msgid "Add graphic line or polygon" -msgstr "Addition de lignes ou polygones graphiques" - -#: pcbnew/tool_pcb.cpp:453 -msgid "Add graphic circle" -msgstr "Addition de graphiques (Cercle)" - -#: pcbnew/tool_pcb.cpp:457 -msgid "Add graphic arc" -msgstr "Addition de graphiques (Arc de Cercle)" - -#: pcbnew/tool_pcb.cpp:461 -msgid "Add text" -msgstr "Ajout de Texte" - -#: pcbnew/tool_pcb.cpp:466 -msgid "Add dimension" -msgstr "Ajout des cotes" - -#: pcbnew/tool_pcb.cpp:470 -msgid "Add layer alignment target" -msgstr "Ajouter Mire de superposition" - -#: pcbnew/tool_pcb.cpp:475 -msgid "Delete items" -msgstr "Suppression d'éléments" - -#: pcbnew/tool_pcb.cpp:480 -msgid "Offset adjust for drill and place files" -msgstr "Ajuste offset pour fichier de perçage et placement" - -#: pcbnew/tool_pcb.cpp:506 -msgid "Create line of specified length for microwave applications" -msgstr "Création de lignes de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:510 -msgid "Create gap of specified length for microwave applications" -msgstr "Création de gaps de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:516 -msgid "Create stub of specified length for microwave applications" -msgstr "Création de stub de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:520 -msgid "Create stub (arc) of specified length for microwave applications" -msgstr "Création de stub (arc) de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:525 -msgid "Create a polynomial shape for microwave applications" -msgstr "Création de formes polynomiales (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:569 -msgid "Current NetClass clearance value" -msgstr "Valeur isolation NetClass courante" - -#: pcbnew/tool_pcb.cpp:574 -msgid "" -"Auto track width: when starting on an existing track use its width\n" -"otherwise, use current width setting" -msgstr "" -"Largeur de piste automatique: si on démarre sur une piste existante, utiliser sa largeur\n" -" sinon utiliser la largeur courante" - -#: pcbnew/tool_pcb.cpp:591 -msgid "Name of the current NetClass" -msgstr "Nom de la NetClass courante" - -#: pcbnew/tool_pcb.cpp:607 -msgid "Auto" -msgstr "Auto" - -#: pcbnew/tool_pcb.cpp:611 -msgid "Zoom " -msgstr "Zoom " - -#: pcbnew/tool_pcb.cpp:649 -msgid "User Grid" -msgstr "Grille perso" - -#: pcbnew/tool_pcb.cpp:760 -msgid "+/- to switch" -msgstr "+/- pour commuter" - -#: pcbnew/dialog_design_rules.cpp:56 -msgid "* (Any)" -msgstr "* (Tout)" - -#: pcbnew/dialog_design_rules.cpp:75 -msgid "Net" -msgstr "Net" - -#: pcbnew/dialog_design_rules.cpp:76 -msgid "Class" -msgstr "Classe" - -#: pcbnew/dialog_design_rules.cpp:104 -msgid "Current general setting:
" -msgstr "Reglages généraux courants:
" - -#: pcbnew/dialog_design_rules.cpp:108 -#, c-format -msgid "Minimum value for tracks width: %s
\n" -msgstr "Valeur minimum pour la largeur de piste: %s
\n" - -#: pcbnew/dialog_design_rules.cpp:111 -#, c-format -msgid "Minimum value for vias diameter: %s
\n" -msgstr "Valeur minimum pour le diamètre de via: %s
\n" - -#: pcbnew/dialog_design_rules.cpp:114 -#, c-format -msgid "Minimum value for microvias diameter: %s
\n" -msgstr "Valeur minimum pour le diamètre de microvia: %s
\n" - -#: pcbnew/dialog_design_rules.cpp:414 -msgid "Errors detected, Abort" -msgstr "Erreurs detectées, Abandont" - -#: pcbnew/dialog_design_rules.cpp:430 -msgid "New Net Class Name:" -msgstr "Nouveau Nom de Classe d'Equipotentielle:" - -#: pcbnew/dialog_design_rules.cpp:443 -msgid "This NetClass is already existing, cannot add it; Aborted" -msgstr "Cette NetClass existe déjà, et ne peut être ajoutée; Abandon" - -#: pcbnew/dialog_design_rules.cpp:668 -#, c-format -msgid "%s: Via DrillVia Dia
" -msgstr "%s: Perçage ViaDiam Via
" +#: pcbnew/class_track.cpp:1052 +msgid "Net Class" +msgstr "Classe d'Equipot" #: pcbnew/gen_modules_placefile.cpp:134 msgid "No Modules for Automated Placement" @@ -4538,33 +4577,45 @@ msgstr "Visible" msgid "Invisible" msgstr "Invisible" -#: pcbnew/moduleframe.cpp:229 -msgid "Module Editor: Module modified! Continue?" -msgstr "Editeur de Module: Module modifié! Continuer ?" +#: pcbnew/edit.cpp:323 +msgid "Add Tracks" +msgstr "Addition de Pistes" -#: pcbnew/moduleframe.cpp:338 -msgid "Polar Coords not show" -msgstr "Coord Polaires non affichées" +#: pcbnew/edit.cpp:332 +msgid "Add Zones" +msgstr "Addition de Zones" -#: pcbnew/moduleframe.cpp:339 -msgid "Display Polar Coords" -msgstr "Affichage coord Polaires" +#: pcbnew/edit.cpp:334 +msgid "Warning: Display Zone is OFF!!!" +msgstr "Attention: Affichage zones désactivé !!!" -#: pcbnew/moduleframe.cpp:344 -msgid "Grid not show" -msgstr "Grille non montrée" +#: pcbnew/edit.cpp:340 +msgid "Add Layer Alignment Target" +msgstr "Ajouter Mire de superposition" -#: pcbnew/moduleframe.cpp:344 -msgid "Show Grid" -msgstr "Afficher grille" +#: pcbnew/edit.cpp:344 +msgid "Adjust Zero" +msgstr "Ajuster Zéro" -#: pcbnew/moduleframe.cpp:354 -msgid "Show Pads Sketch mode" -msgstr "Afficher pastilles en contour" +#: pcbnew/edit.cpp:350 +msgid "Add Graphic" +msgstr "Addition éléments graphiques" -#: pcbnew/moduleframe.cpp:355 -msgid "Show pads filled mode" -msgstr "Afficher pastilles en mode plein" +#: pcbnew/edit.cpp:358 +msgid "Add Modules" +msgstr "Addition de Modules" + +#: pcbnew/edit.cpp:362 +msgid "Add Dimension" +msgstr "Ajout de cotes" + +#: pcbnew/edit.cpp:370 +msgid "Net Highlight" +msgstr "Surbrillance des équipotentielles" + +#: pcbnew/edit.cpp:374 +msgid "Local Ratsnest" +msgstr "Montrer le chevelu général" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:22 msgid "No Display" @@ -4736,8 +4787,6 @@ msgstr "Si activé, utiliser 2 segments de piste, avec un angle de 45 degrés en #: pcbnew/dialog_general_options_BoardEditor_base.cpp:136 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:144 -#: pcbnew/dialog_display_options_base.cpp:30 -#: pcbnew/dialog_display_options_base.cpp:38 msgid "Never" msgstr "Jamais" @@ -4748,8 +4797,6 @@ msgstr "En création de pistes" #: pcbnew/dialog_general_options_BoardEditor_base.cpp:136 #: pcbnew/dialog_general_options_BoardEditor_base.cpp:144 -#: pcbnew/dialog_display_options_base.cpp:30 -#: pcbnew/dialog_display_options_base.cpp:38 msgid "Always" msgstr "Toujours" @@ -5059,125 +5106,93 @@ msgstr "Net Code" msgid "Net Length" msgstr "Long. Net" -#: pcbnew/dialog_display_options_base.cpp:20 -msgid "Tracks and vias:" -msgstr "Pistes et vias:" +#: pcbnew/toolbars_update_user_interface.cpp:36 +msgid " mils" +msgstr " mils" -#: pcbnew/dialog_display_options_base.cpp:24 -msgid "Tracks:" -msgstr "Pistes:" +#: pcbnew/toolbars_update_user_interface.cpp:38 +msgid " mm" +msgstr " mm" -#: pcbnew/dialog_display_options_base.cpp:26 -msgid "Select how tracks are displayed" -msgstr "Sélectionner comment les pistes sont affichées" +#: pcbnew/toolbars_update_user_interface.cpp:50 +msgid "NetClass: " +msgstr "NetClass: " -#: pcbnew/dialog_display_options_base.cpp:30 -msgid "New track" -msgstr "Nouvelle piste" +#: pcbnew/toolbars_update_user_interface.cpp:186 +msgid "DRC Off (Disable !!!), Currently: DRC is active" +msgstr "DRC off (désactivée !!!), actuellement DRC active" -#: pcbnew/dialog_display_options_base.cpp:30 -msgid "New track with via area" -msgstr "Nouvelle piste avec via" +#: pcbnew/toolbars_update_user_interface.cpp:187 +msgid "DRC On (Currently: DRC is inactive !!!)" +msgstr "DRC On (Actuellement, DRC désactivée !!!)" -#: pcbnew/dialog_display_options_base.cpp:32 -msgid "Show Tracks Clearance:" -msgstr "Montrer Isolation Piste:" +#: pcbnew/toolbars_update_user_interface.cpp:198 +msgid "Polar coords not show" +msgstr "Coord Polaires non affichées" -#: pcbnew/dialog_display_options_base.cpp:34 -msgid "" -"Show( or not) tracks clearance area.\n" -"If New track is selected, track clearance area is shown only when creating the track." -msgstr "" -"Monter (ou non) la zone d'isolation des pistes.\n" -"Si Nouvelle Piste est sélectionné, la zone d'isolation de la piste est montrée seulement pendant sa création." +#: pcbnew/toolbars_update_user_interface.cpp:199 +msgid "Display polar coords" +msgstr "Affichage coord Polaires" -#: pcbnew/dialog_display_options_base.cpp:38 -msgid "Defined holes" -msgstr "Trous définis" +#: pcbnew/toolbars_update_user_interface.cpp:204 +msgid "Show grid" +msgstr "Afficher grille" -#: pcbnew/dialog_display_options_base.cpp:40 -msgid "Show Via Holes:" -msgstr "Montrer trous des vias:" +#: pcbnew/toolbars_update_user_interface.cpp:213 +msgid "Hide general ratsnest" +msgstr "Ne pas afficher le chevelu général" -#: pcbnew/dialog_display_options_base.cpp:42 -msgid "" -"Show (or not) via holes.\n" -"If Defined Holes is selected, only the non default size holes are shown" -msgstr "" -"Montrer (ou non) le perçage des vias.\n" -"Si Trours Définis est sélectionné, seuls les trous à la valeur non défaut sont montrés" +#: pcbnew/toolbars_update_user_interface.cpp:214 +msgid "Show general ratsnest" +msgstr "Afficher le chevelu général" -#: pcbnew/dialog_display_options_base.cpp:49 -msgid "Net Names:" -msgstr "Nom Equipots:" +#: pcbnew/toolbars_update_user_interface.cpp:220 +msgid "Hide module ratsnest" +msgstr "Ne pas montrer le chevelu du module" -#: pcbnew/dialog_display_options_base.cpp:51 -msgid "Do not show" -msgstr "Ne pas montrer" +#: pcbnew/toolbars_update_user_interface.cpp:221 +msgid "Show module ratsnest" +msgstr "Montrer le chevelu du module" -#: pcbnew/dialog_display_options_base.cpp:51 -msgid "On pads" -msgstr "Sur pads" +#: pcbnew/toolbars_update_user_interface.cpp:228 +msgid "Disable auto delete old track" +msgstr "Ne pas Autoriser l'effacement automatique des pistes" -#: pcbnew/dialog_display_options_base.cpp:51 -msgid "On tracks" -msgstr "Sur pistes" +#: pcbnew/toolbars_update_user_interface.cpp:229 +msgid "Enable auto delete old track" +msgstr "Autoriser l'effacement automatique des pistes" -#: pcbnew/dialog_display_options_base.cpp:51 -msgid "On pads and tracks" -msgstr "Sur pads et pistes" +#: pcbnew/toolbars_update_user_interface.cpp:236 +msgid "Show pads sketch mode" +msgstr "Afficher pastilles en mode contour" -#: pcbnew/dialog_display_options_base.cpp:53 -msgid "Show Net Names:" -msgstr "Montrer Noms d'Equipotentielles:" +#: pcbnew/toolbars_update_user_interface.cpp:244 +msgid "Show vias sketch mode" +msgstr "Afficher vias en mode contour" -#: pcbnew/dialog_display_options_base.cpp:55 -msgid "Show or not net names on pads and/or tracks" -msgstr "Montrer ou non les noms d'équipotentielles sur les pads et/ou sur les pistes" +#: pcbnew/toolbars_update_user_interface.cpp:252 +msgid "Show tracks sketch mode" +msgstr "Afficher pistes en mode contour" -#: pcbnew/dialog_display_options_base.cpp:62 -msgid "Footprints:" -msgstr "Modules:" +#: pcbnew/toolbars_update_user_interface.cpp:253 +msgid "Show tracks filled mode" +msgstr "Afficher pistes en mode plein" -#: pcbnew/dialog_display_options_base.cpp:69 -msgid "Module Edges:" -msgstr "Contours modules:" +#: pcbnew/toolbars_update_user_interface.cpp:259 +msgid "Normal contrast mode display" +msgstr "Mode d'affichage contraste normal" -#: pcbnew/dialog_display_options_base.cpp:75 -msgid "Texts:" -msgstr "Textes:" +#: pcbnew/toolbars_update_user_interface.cpp:260 +msgid "High contrast mode display" +msgstr "Mode d'affichage haut contraste" -#: pcbnew/dialog_display_options_base.cpp:82 -msgid "Pad Options:" -msgstr "Options Pads:" +#: pcbnew/toolbars_update_user_interface.cpp:265 +msgid "Show invisible text" +msgstr "Montrer textes invisibles" -#: pcbnew/dialog_display_options_base.cpp:86 -msgid "Pad Shapes:" -msgstr "Forme Pads:" - -#: pcbnew/dialog_display_options_base.cpp:90 -msgid "Show pad clearance" -msgstr "Montrer isolation" - -#: pcbnew/dialog_display_options_base.cpp:94 -msgid "Show pad number" -msgstr "Afficher le n° de pad" - -#: pcbnew/dialog_display_options_base.cpp:99 -msgid "Show pad NoConnect" -msgstr "Montrer non conn" - -#: pcbnew/dialog_display_options_base.cpp:112 -msgid "Others:" -msgstr "Autres:" - -#: pcbnew/dialog_display_options_base.cpp:116 -msgid "Display other items:" -msgstr "Afficher autres éléments" - -#: pcbnew/dialog_display_options_base.cpp:122 -msgid "Show page limits" -msgstr " Afficher limites de page" +#: pcbnew/toolbars_update_user_interface.cpp:266 +msgid "Hide invisible text" +msgstr "Cacher textes invisibles" #: pcbnew/dialog_orient_footprints.cpp:138 msgid "Orientation:" @@ -5389,18 +5404,6 @@ msgstr "Il y a un problème d'impression" msgid "Print page %d" msgstr "Imprimer page %d" -#: pcbnew/onleftclick.cpp:180 -msgid "Graphic not authorized on Copper layers" -msgstr "Graphique non autorisé sur Couches Cuivre" - -#: pcbnew/onleftclick.cpp:203 -msgid "Tracks on Copper layers only " -msgstr "Pistes sur Couches Cuivre seulement" - -#: pcbnew/onleftclick.cpp:284 -msgid "Cotation not authorized on Copper layers" -msgstr "Cotation non autorisée sur Couches Cuivre" - #: pcbnew/class_pad.cpp:380 msgid "Unknown Pad shape" msgstr "Forme Pad inconnue" @@ -5409,6 +5412,10 @@ msgstr "Forme Pad inconnue" msgid "RefP" msgstr "RefP" +#: pcbnew/class_pad.cpp:469 +msgid "Net" +msgstr "Net" + #: pcbnew/class_pad.cpp:585 msgid "Drill X / Y" msgstr "Perçage X/Y" @@ -5438,11 +5445,6 @@ msgstr "Module courant" msgid "Current Value" msgstr "Valeur courante" -#: pcbnew/dialog_exchange_modules_base.cpp:39 -#: pcbnew/tool_modedit.cpp:61 -msgid "New Module" -msgstr "Nouveau Module" - #: pcbnew/dialog_exchange_modules_base.cpp:51 msgid "Change module" msgstr "Change module" @@ -5463,80 +5465,6 @@ msgstr "Change tous" msgid "Browse Libs modules" msgstr "Liste modules" -#: pcbnew/tool_modedit.cpp:42 -msgid "Select working library" -msgstr "Sélection de la librairie de travail" - -#: pcbnew/tool_modedit.cpp:46 -msgid "Save Module in working library" -msgstr "Sauver Module en librairie de travail" - -#: pcbnew/tool_modedit.cpp:51 -msgid "Create new library and save current module" -msgstr "Créer une nouvelle librairie et y sauver le composant" - -#: pcbnew/tool_modedit.cpp:56 -msgid "Delete part in current library" -msgstr "Supprimer composant en librairie de travail" - -#: pcbnew/tool_modedit.cpp:65 -msgid "Load module from lib" -msgstr "Charger un module à partir d'une librairie" - -#: pcbnew/tool_modedit.cpp:70 -msgid "Load module from current board" -msgstr "Charger module à partir du C.I." - -#: pcbnew/tool_modedit.cpp:74 -msgid "Update module in current board" -msgstr "Remplacer module dans le C.I." - -#: pcbnew/tool_modedit.cpp:78 -msgid "Insert module into current board" -msgstr "Placer module dans le C.I." - -#: pcbnew/tool_modedit.cpp:83 -msgid "import module" -msgstr "Importer Module" - -#: pcbnew/tool_modedit.cpp:87 -msgid "export module" -msgstr "Exporter Module" - -#: pcbnew/tool_modedit.cpp:99 -msgid "Module Properties" -msgstr "Propriétés du Module" - -#: pcbnew/tool_modedit.cpp:103 -msgid "Print Module" -msgstr "Imprimer Module" - -#: pcbnew/tool_modedit.cpp:134 -msgid "Module Check" -msgstr "Test module" - -#: pcbnew/tool_modedit.cpp:160 -msgid "Add Pads" -msgstr "Addition de \"pins\"" - -#: pcbnew/tool_modedit.cpp:234 -msgid "Show Texts Sketch" -msgstr "Afficher textes en contour" - -#: pcbnew/tool_modedit.cpp:238 -msgid "Show Edges Sketch" -msgstr "Afficher Modules en contour" - -#: pcbnew/tool_modedit.cpp:307 -#, c-format -msgid "Grid %.1f" -msgstr "Grille %.1f" - -#: pcbnew/tool_modedit.cpp:309 -#, c-format -msgid "Grid %.3f" -msgstr "Grille %.3f" - #: pcbnew/dialog_edit_module_for_Modedit_base.cpp:24 msgid "Fields:" msgstr "Champs:" @@ -5614,12 +5542,10 @@ msgid "3D settings" msgstr "3D Caract" #: pcbnew/dialog_edit_module_for_Modedit.cpp:83 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:205 msgid "Use this attribute for most non smd components" msgstr "Utiliser cet attribut pour la plupart des composants" #: pcbnew/dialog_edit_module_for_Modedit.cpp:86 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:208 msgid "" "Use this attribute for smd components.\n" "Only components with this option are put in the footprint position list file" @@ -5628,37 +5554,30 @@ msgstr "" "Seuls les composants avec cette option sont mis dans le fichier de position des composants" #: pcbnew/dialog_edit_module_for_Modedit.cpp:89 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:211 msgid "Use this attribute for \"virtual\" components drawn on board (like a old ISA PC bus connector)" msgstr "Uiliser cet attribut pour les composants \"virtuels\" directement dessinés sur le PCB (tel que les vieux connecteurs ISA de PC)" #: pcbnew/dialog_edit_module_for_Modedit.cpp:115 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:237 msgid "Enable hotkey move commands and Auto Placement" msgstr "Autoriser les commandes clavier de déplacement et l'auto placement" #: pcbnew/dialog_edit_module_for_Modedit.cpp:116 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:238 msgid "Disable hotkey move commands and Auto Placement" msgstr "Interdire les commandes clavier de déplacement et l'auto placement" #: pcbnew/dialog_edit_module_for_Modedit.cpp:125 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:247 msgid "Shape Scale:" msgstr "Echelle de la forme:" #: pcbnew/dialog_edit_module_for_Modedit.cpp:129 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:251 msgid "Shape Offset:" msgstr "Offset forme:" #: pcbnew/dialog_edit_module_for_Modedit.cpp:133 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:255 msgid "Shape Rotation:" msgstr "Rot de la forme" #: pcbnew/dialog_edit_module_for_Modedit.cpp:237 -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:359 msgid "3D Shape:" msgstr "Forme 3D:" @@ -5702,6 +5621,18 @@ msgstr "Y" msgid "Change Module(s)" msgstr "Change module(s)" +#: pcbnew/onleftclick.cpp:181 +msgid "Graphic not authorized on Copper layers" +msgstr "Graphique non autorisé sur Couches Cuivre" + +#: pcbnew/onleftclick.cpp:204 +msgid "Tracks on Copper layers only " +msgstr "Pistes sur Couches Cuivre seulement" + +#: pcbnew/onleftclick.cpp:311 +msgid "Cotation not authorized on Copper layers" +msgstr "Cotation non autorisée sur Couches Cuivre" + #: pcbnew/muwave_command.cpp:52 msgid "Add Line" msgstr "Addition de lignes" @@ -5790,6 +5721,11 @@ msgstr "Selectionner Tout >>" msgid "No Net" msgstr "No Net" +#: pcbnew/dialog_copper_layers_setup.cpp:135 +#: pcbnew/dialog_design_rules.cpp:422 +msgid "Errors detected, Abort" +msgstr "Erreurs detectées, Abandont" + #: pcbnew/dialog_copper_layers_setup.cpp:207 #, c-format msgid "This layer name %s is already existing
" @@ -5911,65 +5847,189 @@ msgstr "Interne 2" msgid "Inner 1" msgstr "Interne 1" -#: pcbnew/toolbars_update_user_interface.cpp:36 -msgid " mils" -msgstr " mils" +#: pcbnew/dialog_design_rules.cpp:56 +msgid "* (Any)" +msgstr "* (Tout)" -#: pcbnew/toolbars_update_user_interface.cpp:38 -msgid " mm" -msgstr " mm" +#: pcbnew/dialog_design_rules.cpp:76 +msgid "Class" +msgstr "Classe" -#: pcbnew/toolbars_update_user_interface.cpp:50 -msgid "NetClass: " -msgstr "NetClass: " +#: pcbnew/dialog_design_rules.cpp:104 +msgid "Current general settings:
" +msgstr "Reglages généraux courants:
" -#: pcbnew/toolbars_update_user_interface.cpp:186 -msgid "DRC Off (Disable !!!), Currently: DRC is active" -msgstr "DRC off (désactivée !!!), actuellement DRC active" +#: pcbnew/dialog_design_rules.cpp:108 +#, c-format +msgid "Minimum value for tracks width: %s
\n" +msgstr "Valeur minimum pour la largeur de piste: %s
\n" -#: pcbnew/toolbars_update_user_interface.cpp:187 -msgid "DRC On (Currently: DRC is inactive !!!)" -msgstr "DRC On (Actuellement, DRC désactivée !!!)" +#: pcbnew/dialog_design_rules.cpp:112 +#, c-format +msgid "Minimum value for vias diameter: %s
\n" +msgstr "Valeur minimum pour le diamètre de via: %s
\n" -#: pcbnew/toolbars_update_user_interface.cpp:213 -msgid "Hide General ratsnest" -msgstr "Ne pas afficher le chevelu général" +#: pcbnew/dialog_design_rules.cpp:116 +#, c-format +msgid "Minimum value for microvias diameter: %s
\n" +msgstr "Valeur minimum pour le diamètre de microvia: %s
\n" -#: pcbnew/toolbars_update_user_interface.cpp:214 -msgid "Show General ratsnest" -msgstr "Afficher le chevelu général" +#: pcbnew/dialog_design_rules.cpp:438 +msgid "New Net Class Name:" +msgstr "Nouveau Nom de Classe d'Equipotentielle:" -#: pcbnew/toolbars_update_user_interface.cpp:220 -msgid "Hide Module ratsnest" -msgstr "Ne pas montrer le chevelu du module" +#: pcbnew/dialog_design_rules.cpp:451 +msgid "This NetClass is already existing, cannot add it; Aborted" +msgstr "Cette NetClass existe déjà, et ne peut être ajoutée; Abandon" -#: pcbnew/toolbars_update_user_interface.cpp:221 -msgid "Show Module ratsnest" -msgstr "Montrer le chevelu du module" +#: pcbnew/dialog_design_rules.cpp:671 +#, c-format +msgid "%s: Track Size < Min Track Size
" +msgstr "%s: Largeur PisteLargeur Piste Minimum
" -#: pcbnew/toolbars_update_user_interface.cpp:228 -msgid "Disable Auto Delete old Track" -msgstr "Ne pas Autoriser l'effacement automatique des pistes" +#: pcbnew/dialog_design_rules.cpp:685 +#, c-format +msgid "%s: Via Diameter < Minimun Via Diameter
" +msgstr "%s: Diamètre ViaMin. Diamètre Via
" -#: pcbnew/toolbars_update_user_interface.cpp:229 -msgid "Enable Auto Delete old Track" -msgstr "Autoriser l'effacement automatique des pistes" +#: pcbnew/dialog_design_rules.cpp:697 +#, c-format +msgid "%s: Via DrillVia Dia
" +msgstr "%s: Perçage ViaDiam Via
" -#: pcbnew/toolbars_update_user_interface.cpp:243 -msgid "Show Tracks Sketch mode" -msgstr "Afficher pistes en contour" +#: pcbnew/dialog_design_rules.cpp:711 +#, c-format +msgid "%s: MicroVia Diameter < Minimun MicroVia Diameter
" +msgstr "%s: Diamètre MicroViaDiamètre MicroVia Minimum
" -#: pcbnew/toolbars_update_user_interface.cpp:244 -msgid "Show Tracks filled mode" -msgstr "Afficher pistes en mode plein" +#: pcbnew/dialog_design_rules.cpp:723 +#, c-format +msgid "%s: MicroVia DrillMicroVia Dia
" +msgstr "%s: Perçage MicroViaDiam MicroVia
" -#: pcbnew/toolbars_update_user_interface.cpp:250 -msgid "Normal Contrast Mode Display" -msgstr "Mode d'affichage Contraste normal" +#: pcbnew/dialog_display_options_base.cpp:20 +msgid "Tracks and vias:" +msgstr "Pistes et vias:" -#: pcbnew/toolbars_update_user_interface.cpp:257 -msgid "Hide Invisible Text" -msgstr "Cacher textes invisibles" +#: pcbnew/dialog_display_options_base.cpp:24 +msgid "Tracks:" +msgstr "Pistes:" + +#: pcbnew/dialog_display_options_base.cpp:26 +msgid "Select how tracks are displayed" +msgstr "Sélectionner comment les pistes sont affichées" + +#: pcbnew/dialog_display_options_base.cpp:30 +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:" + +#: pcbnew/dialog_display_options_base.cpp:34 +msgid "" +"Show( or not) tracks clearance area.\n" +"If New track is selected, track clearance area is shown only when creating the track." +msgstr "" +"Monter (ou non) la zone d'isolation des pistes.\n" +"Si Nouvelle Piste est sélectionné, la zone d'isolation de la piste est montrée seulement pendant sa création." + +#: pcbnew/dialog_display_options_base.cpp:38 +msgid "Defined holes" +msgstr "Trous définis" + +#: pcbnew/dialog_display_options_base.cpp:40 +msgid "Show Via Holes:" +msgstr "Montrer trous des vias:" + +#: pcbnew/dialog_display_options_base.cpp:42 +msgid "" +"Show (or not) via holes.\n" +"If Defined Holes is selected, only the non default size holes are shown" +msgstr "" +"Montrer (ou non) le perçage des vias.\n" +"Si Trours Définis est sélectionné, seuls les trous à la valeur non défaut sont montrés" + +#: pcbnew/dialog_display_options_base.cpp:49 +msgid "Net Names:" +msgstr "Nom Equipots:" + +#: pcbnew/dialog_display_options_base.cpp:51 +msgid "Do not show" +msgstr "Ne pas montrer" + +#: pcbnew/dialog_display_options_base.cpp:51 +msgid "On pads" +msgstr "Sur pads" + +#: pcbnew/dialog_display_options_base.cpp:51 +msgid "On tracks" +msgstr "Sur pistes" + +#: pcbnew/dialog_display_options_base.cpp:51 +msgid "On pads and tracks" +msgstr "Sur pads et pistes" + +#: pcbnew/dialog_display_options_base.cpp:53 +msgid "Show Net Names:" +msgstr "Montrer Noms d'Equipotentielles:" + +#: pcbnew/dialog_display_options_base.cpp:55 +msgid "Show or not net names on pads and/or tracks" +msgstr "Montrer ou non les noms d'équipotentielles sur les pads et/ou sur les pistes" + +#: pcbnew/dialog_display_options_base.cpp:62 +msgid "Footprints:" +msgstr "Modules:" + +#: pcbnew/dialog_display_options_base.cpp:69 +msgid "Module Edges:" +msgstr "Contours modules:" + +#: pcbnew/dialog_display_options_base.cpp:75 +msgid "Texts:" +msgstr "Textes:" + +#: pcbnew/dialog_display_options_base.cpp:82 +msgid "Pad Options:" +msgstr "Options Pads:" + +#: pcbnew/dialog_display_options_base.cpp:86 +msgid "Pad Shapes:" +msgstr "Forme Pads:" + +#: pcbnew/dialog_display_options_base.cpp:90 +msgid "Via Shapes:" +msgstr "Forme Vias:" + +#: pcbnew/dialog_display_options_base.cpp:94 +msgid "Show pad clearance" +msgstr "Montrer isolation" + +#: pcbnew/dialog_display_options_base.cpp:98 +msgid "Show pad number" +msgstr "Afficher le n° de pad" + +#: pcbnew/dialog_display_options_base.cpp:103 +msgid "Show pad NoConnect" +msgstr "Montrer non conn" + +#: pcbnew/dialog_display_options_base.cpp:116 +msgid "Others:" +msgstr "Autres:" + +#: pcbnew/dialog_display_options_base.cpp:120 +msgid "Display other items:" +msgstr "Afficher autres éléments" + +#: pcbnew/dialog_display_options_base.cpp:126 +msgid "Show page limits" +msgstr " Afficher limites de page" #: eeschema/libedit.cpp:30 msgid "Component Library Editor: " @@ -6100,7 +6160,7 @@ msgid "Delete component \"%s\" from library \"%s\"?" msgstr "Supprimer composant \"%s\" de la librairie \"%s\"?" #: eeschema/libedit.cpp:441 -msgid "The component being deleted has been modified. All changes will be lost. Discard changes?" +msgid "The component being deleted has been modified. All changes will be lost. Discard changes?" msgstr "" #: eeschema/libedit.cpp:498 @@ -6697,10 +6757,6 @@ msgstr "Force affichage des pins invisibles" msgid "Hide grid" msgstr "Ne pas afficher la grille" -#: eeschema/schframe.cpp:476 -msgid "Show grid" -msgstr "Afficher grille" - #: eeschema/schframe.cpp:553 msgid "Schematic" msgstr "Schématique" @@ -8041,6 +8097,10 @@ msgstr "" msgid "file ended prematurely while attempting to flush to end of drawing section." msgstr "" +#: eeschema/build_BOM.cpp:51 +msgid "Bill of Materials file (*.lst)|*.lst" +msgstr "Fichier Liste du Materiel (*.lst)|*.lst" + #: eeschema/build_BOM.cpp:92 msgid "Bill of Materials" msgstr "Liste du Materiel" @@ -8158,7 +8218,7 @@ msgstr "Nom Fichier" #: eeschema/class_library.cpp:23 #, c-format -msgid "Component library <%s> has duplicate entry name <%s>. This may cause some expected behavior when loading components into a schematic." +msgid "Component library <%s> has duplicate entry name <%s>. This may cause some unexpected behavior when loading components into a schematic." msgstr "" #: eeschema/class_library.cpp:183 @@ -8776,11 +8836,11 @@ msgid "Pin connected to some others pins but no pin to drive it" msgstr "Pin connectée à d'autres pins, mais aucune pin pour la piloter" #: eeschema/class_drc_erc_item.cpp:47 -msgid "Confict problem between pins. Severity: warning" +msgid "Conflict problem between pins. Severity: warning" msgstr "Problème de conflit entre pins. Sévérité: warning" #: eeschema/class_drc_erc_item.cpp:49 -msgid "Confict problem between pins. Severity: error" +msgid "Conflict problem between pins. Severity: error" msgstr "Problème de conflit entre pins. Sévérité: erreur" #: eeschema/class_drc_erc_item.cpp:51 @@ -9133,7 +9193,7 @@ msgstr "" #: eeschema/dialog_edit_component_in_lib_base.cpp:96 msgid "" "Check this option if Eeschema cannot change parts selections inside a given package\n" -"This happens when parts are differents in this package." +"This happens when parts are different in this package." msgstr "" #: eeschema/dialog_edit_component_in_lib_base.cpp:108 @@ -9988,6 +10048,45 @@ msgstr "Certains fichiers n'ont pas pu être trouvés!" msgid "Some files are invalid!" msgstr "Certains fichiers sont invalides!" +#: cvpcb/dialog_display_options.cpp:136 +#: cvpcb/dialog_display_options.cpp:144 +msgid "&Line" +msgstr "&Ligne" + +#: cvpcb/dialog_display_options.cpp:137 +#: cvpcb/dialog_display_options.cpp:145 +msgid "&Filled" +msgstr "&Plein" + +#: cvpcb/dialog_display_options.cpp:138 +#: cvpcb/dialog_display_options.cpp:146 +msgid "&Sketch" +msgstr "&Contour" + +#: cvpcb/dialog_display_options.cpp:139 +msgid "Edges:" +msgstr "Contours:" + +#: cvpcb/dialog_display_options.cpp:154 +msgid "Fill &pad" +msgstr "&Pad Plein" + +#: cvpcb/dialog_display_options.cpp:158 +msgid "Fill &via" +msgstr "&Via Pleine" + +#: cvpcb/dialog_display_options.cpp:162 +msgid "Show pad &number" +msgstr "Afficher le n° de &pad" + +#: cvpcb/dialog_display_options.cpp:165 +msgid "Display pad number" +msgstr "Afficher numéro des pastilles" + +#: cvpcb/dialog_display_options.cpp:180 +msgid "&Apply" +msgstr "&Appliquer" + #: cvpcb/autosel.cpp:93 #, c-format msgid "Footprint alias library file <%s> could not be found in the default search paths." @@ -10035,41 +10134,6 @@ msgstr " Formats NetListe: EESchema" msgid "Netlist error: %s" msgstr "Erreur Netliste: %s" -#: cvpcb/dialog_display_options.cpp:135 -#: cvpcb/dialog_display_options.cpp:143 -msgid "&Line" -msgstr "&Ligne" - -#: cvpcb/dialog_display_options.cpp:136 -#: cvpcb/dialog_display_options.cpp:144 -msgid "&Filled" -msgstr "&Plein" - -#: cvpcb/dialog_display_options.cpp:137 -#: cvpcb/dialog_display_options.cpp:145 -msgid "&Sketch" -msgstr "&Contour" - -#: cvpcb/dialog_display_options.cpp:138 -msgid "Edges:" -msgstr "Contours:" - -#: cvpcb/dialog_display_options.cpp:153 -msgid "Fill &pad" -msgstr "&Pad Plein" - -#: cvpcb/dialog_display_options.cpp:157 -msgid "Show pad &number" -msgstr "Afficher le n° de &pad" - -#: cvpcb/dialog_display_options.cpp:160 -msgid "Display pad number" -msgstr "Afficher numéro des pastilles" - -#: cvpcb/dialog_display_options.cpp:175 -msgid "&Apply" -msgstr "&Appliquer" - #: cvpcb/dialog_cvpcb_config_fbp.cpp:51 msgid "Footprint alias files" msgstr "Fichier Alias Modules" @@ -10560,6 +10624,71 @@ msgstr "Effacer Textes Pcb" msgid "Delete Layer %d" msgstr "Effacer Couche %d" +#: gerbview/files.cpp:84 +msgid "Not yet available..." +msgstr "non encore disponible" + +#: gerbview/files.cpp:133 +msgid "Gerber files (.gbr .gbx .lgr .ger .pho)| \t\t\t*.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" +msgstr "Fichiers Gerber (.gbr .gbx .lgr .ger .pho)| \t\t\t*.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" + +#: gerbview/files.cpp:137 +msgid "Top layer (*.GTL)|*.GTL;*.gtl|" +msgstr "Couche composant" + +#: gerbview/files.cpp:138 +msgid "Bottom layer (*.GBL)|*.GBL;*.gbl|" +msgstr "Couche cuivre" + +#: gerbview/files.cpp:139 +msgid "Bottom solder resist (*.GBS)|*.GBS;*.gbs|" +msgstr "" + +#: gerbview/files.cpp:140 +msgid "Top solder resist (*.GTS)|*.GTS;*.gts|" +msgstr "" + +#: gerbview/files.cpp:141 +msgid "Bottom overlay (*.GBO)|*.GBO;*.gbo|" +msgstr "" + +#: gerbview/files.cpp:142 +msgid "Top overlay (*.GTO)|*.GTO;*.gto|" +msgstr "" + +#: gerbview/files.cpp:143 +#, fuzzy +msgid "Bottom paste (*.GBP)|*.GBP;*.gbp|" +msgstr "Couche cuivre" + +#: gerbview/files.cpp:144 +msgid "Top paste (*.GTP)|*.GTP;*.gtp|" +msgstr "" + +#: gerbview/files.cpp:145 +msgid "Keep-out layer (*.GKO)|*.GKO;*.gko|" +msgstr "" + +#: gerbview/files.cpp:146 +msgid "Mechanical layers (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|" +msgstr "Couches mécaniques (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|" + +#: gerbview/files.cpp:147 +msgid "Top Pad Master (*.GPT)|*.GPT;*.gpt|" +msgstr "" + +#: gerbview/files.cpp:148 +msgid "Bottom Pad Master (*.GPB)|*.GPB;*.gpb|" +msgstr "" + +#: gerbview/files.cpp:158 +msgid "Open Gerber File" +msgstr "Ouvrir Fichier Gerber" + +#: gerbview/files.cpp:241 +msgid "Save Gerber File" +msgstr "Sauver Fichier Gerber" + #: gerbview/tool_gerber.cpp:32 msgid "Clear and Load Gerber File" msgstr "Effacer et Charger Fichier Gerber" @@ -10749,125 +10878,21 @@ msgid "Show Spots in Sketch Mode" msgstr "Afficher Flashs en Mode Contour" #: gerbview/tool_gerber.cpp:367 +msgid "Show Vias in Sketch Mode" +msgstr "Afficher Vias en Mode Contour" + +#: gerbview/tool_gerber.cpp:371 msgid "Show Lines in Sketch Mode" msgstr "Afficher Lignes en Mode Contour" -#: gerbview/tool_gerber.cpp:371 +#: gerbview/tool_gerber.cpp:375 msgid "Show Polygons in Sketch Mode" msgstr "Afficher Polygones en Mode Contour" -#: gerbview/tool_gerber.cpp:375 +#: gerbview/tool_gerber.cpp:379 msgid "Show dcode number" msgstr "Afficher le n° de DCode" -#: gerbview/options.cpp:148 -msgid "Gerbview Options" -msgstr "Gerbview Options " - -#: gerbview/options.cpp:189 -msgid "millimeters" -msgstr "millimètres" - -#: gerbview/options.cpp:198 -msgid "Small" -msgstr "Petit" - -#: gerbview/options.cpp:198 -msgid "Big" -msgstr "Grand" - -#: gerbview/options.cpp:206 -msgid "format: 2.3" -msgstr "Format 2.3" - -#: gerbview/options.cpp:206 -msgid "format 3.4" -msgstr "Format 3.4" - -#: gerbview/options.cpp:279 -msgid "Gerbview Draw Options" -msgstr "Options d'Affichage" - -#: gerbview/options.cpp:303 -msgid "Lines:" -msgstr "Lignes:" - -#: gerbview/options.cpp:310 -msgid "Spots:" -msgstr "Spots:" - -#: gerbview/options.cpp:318 -msgid "Polygons:" -msgstr "Polygones:" - -#: gerbview/options.cpp:332 -msgid "Show D codes" -msgstr "Montrer DCodes" - -#: gerbview/files.cpp:84 -msgid "Not yet available..." -msgstr "non encore disponible" - -#: gerbview/files.cpp:133 -msgid "Gerber files (.gbr .gbx .lgr .ger .pho)| \t\t\t*.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" -msgstr "Fichiers Gerber (.gbr .gbx .lgr .ger .pho)| \t\t\t*.gbr;*.GBR;*.gbx;*.GBX;*.lgr;*.LGR;*.ger;*.GER;*.pho;*.PHO|" - -#: gerbview/files.cpp:137 -msgid "Top layer (*.GTL)|*.GTL;*.gtl|" -msgstr "Couche composant" - -#: gerbview/files.cpp:138 -msgid "Bottom layer (*.GBL)|*.GBL;*.gbl|" -msgstr "Couche cuivre" - -#: gerbview/files.cpp:139 -msgid "Bottom solder resist (*.GBS)|*.GBS;*.gbs|" -msgstr "" - -#: gerbview/files.cpp:140 -msgid "Top solder resist (*.GTS)|*.GTS;*.gts|" -msgstr "" - -#: gerbview/files.cpp:141 -msgid "Bottom overlay (*.GBO)|*.GBO;*.gbo|" -msgstr "" - -#: gerbview/files.cpp:142 -msgid "Top overlay (*.GTO)|*.GTO;*.gto|" -msgstr "" - -#: gerbview/files.cpp:143 -msgid "Bottom paste (*.GBP)|*.GBP;*.gto|" -msgstr "" - -#: gerbview/files.cpp:144 -msgid "Top paste (*.GTP)|*.GTP;*.gtp|" -msgstr "" - -#: gerbview/files.cpp:145 -msgid "Keep-out layer (*.GKO)|*.GKO;*.gko|" -msgstr "" - -#: gerbview/files.cpp:146 -msgid "Mechanical layers (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|" -msgstr "Couches mécaniques (*.GMx)|*.GM1;*.gm1;*.GM2;*.gm2;*.GM3;*.gm3|" - -#: gerbview/files.cpp:147 -msgid "Top Pad Master (*.GPT)|*.GPT;*.gpt|" -msgstr "" - -#: gerbview/files.cpp:148 -msgid "Bottom Pad Master (*.GPB)|*.GPB;*.gpb|" -msgstr "" - -#: gerbview/files.cpp:158 -msgid "Open Gerber File" -msgstr "Ouvrir Fichier Gerber" - -#: gerbview/files.cpp:241 -msgid "Save Gerber File" -msgstr "Sauver Fichier Gerber" - #: gerbview/reglage.cpp:100 msgid "Save Cfg..." msgstr "Sauver config..." @@ -10884,6 +10909,51 @@ msgstr "Ext. Fichiers Gerber" msgid "D code File Ext:" msgstr "Ext. Fichiers DCodes:" +#: gerbview/options.cpp:160 +msgid "Gerbview Options" +msgstr "Gerbview Options " + +#: gerbview/options.cpp:201 +msgid "millimeters" +msgstr "millimètres" + +#: gerbview/options.cpp:210 +msgid "Small" +msgstr "Petit" + +#: gerbview/options.cpp:210 +msgid "Big" +msgstr "Grand" + +#: gerbview/options.cpp:218 +msgid "format: 2.3" +msgstr "Format 2.3" + +#: gerbview/options.cpp:218 +msgid "format 3.4" +msgstr "Format 3.4" + +#: gerbview/options.cpp:292 +msgid "Gerbview Draw Options" +msgstr "Options d'Affichage" + +#: gerbview/options.cpp:316 +msgid "Lines:" +msgstr "Lignes:" + +#: gerbview/options.cpp:323 +#: gerbview/options.cpp:331 +msgid "Spots:" +msgstr "Spots:" + +#: gerbview/options.cpp:341 +msgid "Polygons:" +msgstr "Polygones:" + +#: gerbview/options.cpp:355 +msgid "Show D codes" +msgstr "Montrer DCodes" + #: gerbview/select_layers_to_pcb.cpp:262 #: gerbview/select_layers_to_pcb.cpp:358 msgid "Do not export" @@ -12075,6 +12145,8 @@ msgstr "DCodes id." msgid "Page Settings" msgstr "Ajustage opt Page" +#~ msgid "TextPCB properties" +#~ msgstr "Propriétés des textes PCB" #~ msgid " Convert" #~ msgstr " Convert" #~ msgid " Normal" diff --git a/pcbnew/class_board.cpp b/pcbnew/class_board.cpp index 07777082d0..cec105d97b 100644 --- a/pcbnew/class_board.cpp +++ b/pcbnew/class_board.cpp @@ -43,7 +43,9 @@ BOARD::BOARD( EDA_BaseStruct* parent, WinEDA_BasePcbFrame* frame ) : // Should user eventually load a board from a disk file, then these defaults // will get overwritten during load. m_NetClasses.GetDefault()->SetDescription( _( "This is the default net class." ) ); - m_CurrentNetClassName = m_NetClasses.GetDefault()->GetName( ); + m_ViaSizeSelector = 0; + m_TrackWidthSelector = 0; + SetCurrentNetClass(m_NetClasses.GetDefault()->GetName( )); // Initialize default values } @@ -74,6 +76,31 @@ BOARD::~BOARD() delete m_NetInfo; } +/** + * Function SetCurrentNetClass + * Must be called after a netclass selection (or after a netclass parameter change + * Initialise vias and tracks values displayed in comb boxs of the auxiliary toolbar + * and some others parametres (netclass name ....) + */ + void BOARD::SetCurrentNetClass( const wxString & aNetClassName) +{ + NETCLASS * netClass = m_NetClasses.Find(aNetClassName); + + // if not found (should not happen) use the default + if ( netClass == NULL ) + netClass = m_NetClasses.GetDefault(); + + m_CurrentNetClassName = netClass->GetName(); + + // Initialize others values: + if( m_ViaSizeHistory.size() == 0 ) + m_ViaSizeHistory.push_back(0); + if( m_TrackWidthHistory.size() == 0 ) + m_TrackWidthHistory.push_back(0); + + m_ViaSizeHistory[0] = netClass->GetViaDiameter(); + m_TrackWidthHistory[0] = netClass->GetTrackWidth(); +} wxString BOARD::GetLayerName( int aLayerIndex ) const { diff --git a/pcbnew/class_board.h b/pcbnew/class_board.h index 2a1cf2edef..75038c4d03 100644 --- a/pcbnew/class_board.h +++ b/pcbnew/class_board.h @@ -97,14 +97,22 @@ public: std::vector m_LocalRatsnest; /* Rastnest list relative to a given footprint * (used while moving a footprint) */ + ZONE_CONTAINER* m_CurrentZoneContour; // zone contour currently in progress + NETCLASSES m_NetClasses; ///< List of current netclasses. There is always the default netclass wxString m_CurrentNetClassName; /* Current net class name used to display netclass info. * this is also the last used netclass after starting a track */ - ZONE_CONTAINER* m_CurrentZoneContour; // zone contour currently in progress - std::vector m_ViaSizeHistory; // Last used via sizes (max count = HISTORY_MAX_COUNT) - std::vector m_TrackWidthHistory; // Last used track widths (max count = HISTORY_MAX_COUNT) + + // handling of vias and tracks size: + // the first value is always the value of the current NetClass + // The others values are extra values + std::vector m_ViaSizeHistory; // Last used via sizes (max count = HISTORY_MAX_COUNT) + std::vector m_TrackWidthHistory; // Last used track widths (max count = HISTORY_MAX_COUNT) + int m_ViaSizeSelector; // index for m_ViaSizeHistory to select the value + // O is the selection of the default value Netclass + int m_TrackWidthSelector; // index for m_TrackWidthHistory to select the value /**********************************/ public: @@ -356,6 +364,13 @@ public: */ void SynchronizeNetsAndNetClasses(); + /** + * Function SetCurrentNetClass + * Must be called after a netclass selection (or after a netclass parameter change + * Initialise vias and tracks values displayed in comb boxs of the auxiliary toolbar + * and some others parametres (netclass name ....) + */ + void SetCurrentNetClass( const wxString & aNetClassName); /** * Function Save diff --git a/pcbnew/dialog_general_options.cpp b/pcbnew/dialog_general_options.cpp index e8648b2880..d82f5d535c 100644 --- a/pcbnew/dialog_general_options.cpp +++ b/pcbnew/dialog_general_options.cpp @@ -93,7 +93,7 @@ void Dialog_GeneralOptions::OnOkClick( wxCommandEvent& event ) int ii; DisplayOpt.DisplayPolarCood = - (m_PolarDisplay->GetSelection() == 0) ? FALSE : TRUE; + (m_PolarDisplay->GetSelection() == 0) ? FALSE : true; ii = g_UnitMetric; g_UnitMetric = (m_UnitsSelection->GetSelection() == 0) ? 0 : 1; if( ii != g_UnitMetric ) @@ -113,7 +113,7 @@ void Dialog_GeneralOptions::OnOkClick( wxCommandEvent& event ) { g_Show_Ratsnest = m_ShowGlobalRatsnest->GetValue(); m_Parent->Ratsnest_On_Off( m_DC ); - m_Parent->RedrawActiveWindow( m_DC, TRUE); + m_Parent->RedrawActiveWindow( m_DC, true); } g_Show_Module_Ratsnest = m_ShowModuleRatsnest->GetValue(); g_AutoDeleteOldTrack = m_TrackAutodel->GetValue(); @@ -195,7 +195,7 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) switch( id ) { case ID_TB_OPTIONS_DRC_OFF: - Drc_On = m_OptionsToolBar->GetToolState( id ) ? FALSE : TRUE; + Drc_On = m_OptionsToolBar->GetToolState( id ) ? FALSE : true; break; case ID_TB_OPTIONS_SHOW_GRID: @@ -209,7 +209,7 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) wxClientDC dc( DrawPanel ); DrawPanel->PrepareGraphicContext( &dc ); Ratsnest_On_Off( &dc ); - RedrawActiveWindow( &dc, TRUE); + RedrawActiveWindow( &dc, true); } break; @@ -223,7 +223,7 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) case ID_TB_OPTIONS_SELECT_UNIT_INCH: if( id == ID_TB_OPTIONS_SELECT_UNIT_INCH ) g_UnitMetric = INCHES; - m_SelTrackWidthBox_Changed = TRUE; + m_TrackAndViasSizesList_Changed = true; UpdateStatusBar(); /* Reaffichage des coord curseur */ ReCreateAuxiliaryToolbar(); DisplayUnitsMsg(); diff --git a/pcbnew/edit.cpp b/pcbnew/edit.cpp index 4011a20dc6..2831a4e600 100644 --- a/pcbnew/edit.cpp +++ b/pcbnew/edit.cpp @@ -997,8 +997,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) int ii = m_SelTrackWidthBox->GetChoice(); g_DesignSettings.m_CurrentTrackWidth = GetBoard()->m_TrackWidthHistory[ii]; DisplayTrackSettings(); - m_SelTrackWidthBox_Changed = false; - m_SelViaSizeBox_Changed = false; + m_TrackAndViasSizesList_Changed = false; g_DesignSettings.m_UseConnectedTrackWidth = false; } break; @@ -1035,8 +1034,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event ) int ii = m_SelViaSizeBox->GetChoice(); g_DesignSettings.m_CurrentViaSize = GetBoard()->m_ViaSizeHistory[ii]; DisplayTrackSettings(); - m_SelTrackWidthBox_Changed = false; - m_SelViaSizeBox_Changed = false; + m_TrackAndViasSizesList_Changed = false; } break; diff --git a/pcbnew/editrack-part2.cpp b/pcbnew/editrack-part2.cpp index 86563d2edf..fe25a97ba0 100644 --- a/pcbnew/editrack-part2.cpp +++ b/pcbnew/editrack-part2.cpp @@ -33,8 +33,7 @@ void WinEDA_PcbFrame::DisplayTrackSettings() msg.Printf( _( "Track Width: %s Vias Size : %s" ), buftrc.GetData(), bufvia.GetData() ); Affiche_Message( msg ); - m_SelTrackWidthBox_Changed = TRUE; - m_SelViaSizeBox_Changed = TRUE; + m_TrackAndViasSizesList_Changed = TRUE; } diff --git a/pcbnew/editrack.cpp b/pcbnew/editrack.cpp index 37594206b3..9112eb43f8 100644 --- a/pcbnew/editrack.cpp +++ b/pcbnew/editrack.cpp @@ -44,7 +44,7 @@ static void Exit_Editrack( WinEDA_DrawPanel* Panel, wxDC* DC ) if( track && ( track->Type()==TYPE_VIA || track->Type()==TYPE_TRACK ) ) { /* Erase the current drawing */ - ShowNewTrackWhenMovingCursor( Panel, DC, FALSE ); + ShowNewTrackWhenMovingCursor( Panel, DC, false ); if( g_HightLigt_Status ) frame->Hight_Light( DC ); @@ -147,7 +147,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) D( g_CurrentTrackList.VerifyListIntegrity(); ); - build_ratsnest_pad( LockPoint, wxPoint( 0, 0 ), TRUE ); + build_ratsnest_pad( LockPoint, wxPoint( 0, 0 ), true ); D( g_CurrentTrackList.VerifyListIntegrity(); ); @@ -170,7 +170,8 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) g_CurrentTrackSegment->SetNet( g_HightLigth_NetCode ); // Display info about track Net class: - GetBoard()->m_CurrentNetClassName = g_CurrentTrackSegment->GetNetClassName(); + GetBoard()->SetCurrentNetClass( g_CurrentTrackSegment->GetNetClassName() ); + m_TrackAndViasSizesList_Changed = true; AuxiliaryToolBar_DesignRules_Update_UI(); if( pt_pad ) @@ -198,7 +199,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) g_CurrentTrackSegment->DisplayInfo( this ); SetCurItem( g_CurrentTrackSegment ); - DrawPanel->ManageCurseur( DrawPanel, DC, FALSE ); + DrawPanel->ManageCurseur( DrawPanel, DC, false ); if( Drc_On ) { @@ -227,20 +228,20 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) /* Current track is Ok: current segment is kept, and a new one is created * unless the current segment is null, or 2 last are null if a 2 segments track build */ - bool CanCreateNewSegment = TRUE; + bool CanCreateNewSegment = true; if( !g_TwoSegmentTrackBuild && g_CurrentTrackSegment->IsNull() ) - CanCreateNewSegment = FALSE; + CanCreateNewSegment = false; if( g_TwoSegmentTrackBuild && g_CurrentTrackSegment->IsNull() && g_CurrentTrackSegment->Back() && g_CurrentTrackSegment->Back()->IsNull() ) - CanCreateNewSegment = FALSE; + CanCreateNewSegment = false; if( CanCreateNewSegment ) { /* Erase old track on screen */ D( g_CurrentTrackList.VerifyListIntegrity(); ); - ShowNewTrackWhenMovingCursor( DrawPanel, DC, FALSE ); + ShowNewTrackWhenMovingCursor( DrawPanel, DC, false ); D( g_CurrentTrackList.VerifyListIntegrity(); ); @@ -279,7 +280,7 @@ TRACK* WinEDA_PcbFrame::Begin_Route( TRACK* aTrack, wxDC* DC ) D( g_CurrentTrackList.VerifyListIntegrity(); ); /* Show the new position */ - ShowNewTrackWhenMovingCursor( DrawPanel, DC, FALSE ); + ShowNewTrackWhenMovingCursor( DrawPanel, DC, false ); } g_CurrentTrackSegment->DisplayInfo( this ); } @@ -446,8 +447,8 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) if( Begin_Route( aTrack, DC ) == NULL ) return; - ShowNewTrackWhenMovingCursor( DrawPanel, DC, TRUE ); /* mise a jour trace reel */ - ShowNewTrackWhenMovingCursor( DrawPanel, DC, FALSE ); /* efface trace piste*/ + ShowNewTrackWhenMovingCursor( DrawPanel, DC, true ); /* mise a jour trace reel */ + ShowNewTrackWhenMovingCursor( DrawPanel, DC, false ); /* efface trace piste*/ trace_ratsnest_pad( DC ); /* efface trace chevelu*/ /* cleanup @@ -776,7 +777,7 @@ void ShowNewTrackWhenMovingCursor( WinEDA_DrawPanel* panel, wxDC* DC, bool erase DisplayOpt.DisplayPcbTrackFill = Track_fill_copy; ( (WinEDA_BasePcbFrame*)(panel->m_Parent) )-> - build_ratsnest_pad( NULL, g_CurrentTrackSegment->m_End, FALSE ); + build_ratsnest_pad( NULL, g_CurrentTrackSegment->m_End, false ); ( (WinEDA_BasePcbFrame*)(panel->m_Parent) )->trace_ratsnest_pad( DC ); } diff --git a/pcbnew/files.cpp b/pcbnew/files.cpp index 433f21c1ca..d0ae3130bc 100644 --- a/pcbnew/files.cpp +++ b/pcbnew/files.cpp @@ -148,8 +148,7 @@ bool WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append return false; } - m_SelTrackWidthBox_Changed = true; - m_SelViaSizeBox_Changed = true; + m_TrackAndViasSizesList_Changed = true; if( Append ) { diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index 1a3c5fad0d..f2495affba 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -220,13 +220,12 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, wxConfig* config = wxGetApp().m_EDA_Config; m_FrameName = wxT( "PcbFrame" ); - m_Draw_Sheet_Ref = TRUE; // TRUE pour avoir le cartouche dessine - m_Draw_Auxiliary_Axis = TRUE; + m_Draw_Sheet_Ref = true; // true pour avoir le cartouche dessine + m_Draw_Auxiliary_Axis = true; m_SelTrackWidthBox = NULL; m_SelViaSizeBox = NULL; m_SelLayerBox = NULL; - m_SelTrackWidthBox_Changed = FALSE; - m_SelViaSizeBox_Changed = FALSE; + m_TrackAndViasSizesList_Changed = false; SetBoard( new BOARD( NULL, this ) ); @@ -260,7 +259,7 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, GetScreen()->SetGrid( GridSize ); if( DrawPanel ) - DrawPanel->m_Block_Enable = TRUE; + DrawPanel->m_Block_Enable = true; ReCreateMenuBar(); ReCreateHToolbar(); ReCreateAuxiliaryToolbar(); @@ -295,7 +294,7 @@ void WinEDA_PcbFrame::OnCloseWindow( wxCloseEvent& Event ) { wxConfig * config = wxGetApp().m_EDA_Config; - DrawPanel->m_AbortRequest = TRUE; + DrawPanel->m_AbortRequest = true; if( ScreenPcb->IsModify() ) { @@ -354,7 +353,7 @@ void WinEDA_PcbFrame::Show3D_Frame( wxCommandEvent& event ) } m_Draw3DFrame = new WinEDA3D_DrawFrame( this, _( "3D Viewer" ) ); - m_Draw3DFrame->Show( TRUE ); + m_Draw3DFrame->Show( true ); } /** diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index adf0f71f54..dfd23caf3a 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -26,17 +26,17 @@ #include "eda_dde.h" -bool Drc_On = TRUE; -bool g_AutoDeleteOldTrack = TRUE; +bool Drc_On = true; +bool g_AutoDeleteOldTrack = true; bool g_No_Via_Route; bool g_Drag_Pistes_On; bool g_Show_Ratsnest; bool g_Show_Module_Ratsnest; -bool g_Show_Pads_Module_in_Move = TRUE; -bool g_Raccord_45_Auto = TRUE; +bool g_Show_Pads_Module_in_Move = true; +bool g_Raccord_45_Auto = true; bool Track_45_Only; bool Segments_45_Only; -bool g_TwoSegmentTrackBuild = TRUE; +bool g_TwoSegmentTrackBuild = true; bool g_HightLigt_Status; extern PARAM_CFG_BASE* ParamCfgList[]; @@ -116,17 +116,17 @@ Changing extension to .brd." ), ActiveScreen = ScreenPcb; SetTopWindow( frame ); - frame->Show( TRUE ); + frame->Show( true ); if( CreateServer( frame, KICAD_PCB_PORT_SERVICE_NUMBER ) ) { SetupServerFunction( RemoteCommand ); } - frame->Zoom_Automatique( TRUE ); - Read_Config( fn.GetFullPath() ); + frame->Zoom_Automatique( true ); + /* Load file specified in the command line. */ if( fn.IsOk() ) { @@ -135,5 +135,5 @@ Changing extension to .brd." ), frame->ReCreateLayerBox( NULL ); } - return TRUE; + return true; } diff --git a/pcbnew/specctra_import.cpp b/pcbnew/specctra_import.cpp index cf803bbe5e..d14977b1fa 100644 --- a/pcbnew/specctra_import.cpp +++ b/pcbnew/specctra_import.cpp @@ -111,8 +111,7 @@ void WinEDA_PcbFrame::ImportSpecctraSession( wxCommandEvent& event ) SetLocaleTo_Default( ); // revert to the current locale - m_SelTrackWidthBox_Changed = TRUE; - m_SelViaSizeBox_Changed = TRUE; + m_TrackAndViasSizesList_Changed = true; GetScreen()->SetModify(); GetBoard()->m_Status_Pcb = 0; @@ -128,7 +127,7 @@ void WinEDA_PcbFrame::ImportSpecctraSession( wxCommandEvent& event ) Affiche_Message( wxString( _("Session file imported and merged OK.")) ); - DrawPanel->Refresh( TRUE ); + DrawPanel->Refresh( true ); } diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index ba1c4cc1cf..cd7f0f4daa 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -75,25 +75,25 @@ void WinEDA_PcbFrame::PrepareLayerIndicator() if( previous_active_layer_color != active_layer_color ) { previous_active_layer_color = active_layer_color; - change = TRUE; + change = true; } Route_Layer_TOP_color = g_DesignSettings.m_LayerColor[((PCB_SCREEN*)GetScreen())->m_Route_Layer_TOP]; if( previous_Route_Layer_TOP_color != Route_Layer_TOP_color ) { previous_Route_Layer_TOP_color = Route_Layer_TOP_color; - change = TRUE; + change = true; } Route_Layer_BOTTOM_color = g_DesignSettings.m_LayerColor[((PCB_SCREEN*)GetScreen())->m_Route_Layer_BOTTOM]; if( previous_Route_Layer_BOTTOM_color != Route_Layer_BOTTOM_color ) { previous_Route_Layer_BOTTOM_color = Route_Layer_BOTTOM_color; - change = TRUE; + change = true; } via_color = g_DesignSettings.m_ViaColor[g_DesignSettings.m_CurrentViaType ]; if( previous_via_color != via_color ) { previous_via_color = via_color; - change = TRUE; + change = true; } if( !change && (LayerPairBitmap != NULL) ) @@ -193,7 +193,7 @@ void WinEDA_PcbFrame::ReCreateHToolbar() } - m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE ); + m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, true ); m_HToolBar->SetRows( 1 ); SetToolBar( m_HToolBar ); @@ -422,7 +422,7 @@ void WinEDA_PcbFrame::ReCreateVToolbar() // Set up toolbar m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString, wxBitmap( cursor_xpm ), wxEmptyString, wxITEM_CHECK ); - m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE ); + m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, true ); m_VToolBar->AddSeparator(); m_VToolBar->AddTool( ID_PCB_HIGHLIGHT_BUTT, wxEmptyString, @@ -553,7 +553,7 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() if( m_AuxiliaryToolBar == NULL ) { m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, - ID_AUX_TOOLBAR, TRUE ); + ID_AUX_TOOLBAR, true ); // Set up toolbar m_AuxiliaryToolBar->AddSeparator(); @@ -562,7 +562,7 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH + 20, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelTrackWidthBox ); - m_SelTrackWidthBox_Changed = TRUE; + m_TrackAndViasSizesList_Changed = true; m_ClearanceBox = new wxTextCtrl( m_AuxiliaryToolBar, -1, wxEmptyString, @@ -655,9 +655,7 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() m_SelGridBox->Append( msg ); } - m_SelViaSizeBox_Changed = TRUE; - m_SelTrackWidthBox_Changed = TRUE; - + m_TrackAndViasSizesList_Changed = true; ReCreateLayerBox( NULL ); SetToolbars(); diff --git a/pcbnew/toolbars_update_user_interface.cpp b/pcbnew/toolbars_update_user_interface.cpp index 4f0782480d..65a179fddb 100644 --- a/pcbnew/toolbars_update_user_interface.cpp +++ b/pcbnew/toolbars_update_user_interface.cpp @@ -62,48 +62,47 @@ void WinEDA_PcbFrame::AuxiliaryToolBar_DesignRules_Update_UI( ) } - /** * Function AuxiliaryToolBar_Update_UI * update the displayed values on auxiliary horizontal toolbar * (track width, via sizes, clearance ... + * Display format for track and via lists + * first item = current selected class value + * next items (if any) = ordered list of sizes (extra sizes). + * So the current selected class value can be same as an other extra value */ void WinEDA_PcbFrame::AuxiliaryToolBar_Update_UI( ) { wxString msg; m_AuxiliaryToolBar->ToggleTool( ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH, g_DesignSettings.m_UseConnectedTrackWidth ); - if( m_SelTrackWidthBox && m_SelTrackWidthBox_Changed ) - { - m_SelTrackWidthBox_Changed = false; - m_SelTrackWidthBox->Clear(); - - for( unsigned ii = 0; ii < GetBoard()->m_TrackWidthHistory.size(); ii++ ) - { - msg = _( "Track" ) + ReturnStringValue(GetBoard()->m_TrackWidthHistory[ii]); - - m_SelTrackWidthBox->Append( msg ); - - if( GetBoard()->m_TrackWidthHistory[ii] == g_DesignSettings.m_CurrentTrackWidth ) - m_SelTrackWidthBox->SetSelection( ii ); - } - } AuxiliaryToolBar_DesignRules_Update_UI( ); - if( m_SelViaSizeBox && m_SelViaSizeBox_Changed ) + if( m_SelTrackWidthBox && m_TrackAndViasSizesList_Changed ) { - m_SelViaSizeBox_Changed = false; - m_SelViaSizeBox->Clear(); + m_SelTrackWidthBox->Clear(); + for( unsigned ii = 0; ii < GetBoard()->m_TrackWidthHistory.size(); ii++ ) + { + msg = _( "Track" ) + ReturnStringValue(GetBoard()->m_TrackWidthHistory[ii]); + m_SelTrackWidthBox->Append( msg ); + } + if( GetBoard()->m_TrackWidthSelector >= (int)GetBoard()->m_TrackWidthHistory.size() ) + GetBoard()->m_TrackWidthSelector = 0; + m_SelTrackWidthBox->SetSelection( GetBoard()->m_TrackWidthSelector ); + } + if( m_SelViaSizeBox && m_TrackAndViasSizesList_Changed ) + { + m_SelViaSizeBox->Clear(); for( unsigned ii = 0; ii < GetBoard()->m_ViaSizeHistory.size(); ii++ ) { msg = _( "Via" ) + ReturnStringValue(GetBoard()->m_ViaSizeHistory[ii]); - m_SelViaSizeBox->Append( msg ); - if( GetBoard()->m_ViaSizeHistory[ii] == g_DesignSettings.m_CurrentViaSize ) - m_SelViaSizeBox->SetSelection( ii ); } + if( GetBoard()->m_ViaSizeSelector >= (int)GetBoard()->m_ViaSizeHistory.size() ) + GetBoard()->m_ViaSizeSelector = 0; + m_SelViaSizeBox->SetSelection( GetBoard()->m_ViaSizeSelector ); } if( m_SelZoomBox ) @@ -122,7 +121,7 @@ void WinEDA_PcbFrame::AuxiliaryToolBar_Update_UI( ) m_SelZoomBox->SetSelection( -1 ); } - if( m_SelGridBox && GetScreen() ) + if( m_SelGridBox ) { int kk = m_SelGridBox->GetChoice(); @@ -137,6 +136,8 @@ void WinEDA_PcbFrame::AuxiliaryToolBar_Update_UI( ) } } } + + m_TrackAndViasSizesList_Changed = false; }