From 2bae762415c15ff9036186288e7d583c95ba7ebc Mon Sep 17 00:00:00 2001 From: charras Date: Thu, 21 Jan 2010 20:36:48 +0000 Subject: [PATCH] pcbnew: Added option in left tool bar to show/hide Layer manager tool bar --- bitmaps/CMakeLists.txt | 1 + bitmaps/layers_manager.xpm | 38 + bitmaps/sources/layers_manager.svg | 422 +++++++++ cvpcb/init.cpp | 2 +- eeschema/tool_viewlib.cpp | 15 +- include/bitmaps.h | 1 + include/class_board_design_settings.h | 2 +- include/wxPcbStruct.h | 1 + internat/fr/kicad.mo | Bin 221787 -> 223291 bytes internat/fr/kicad.po | 1210 +++++++++++++------------ pcbnew/class_netinfo_item.cpp | 1 + pcbnew/dialog_general_options.cpp | 14 +- pcbnew/editrack.cpp | 4 +- pcbnew/layer_widget.cpp | 18 +- pcbnew/pcbframe.cpp | 18 +- pcbnew/pcbnew_id.h | 22 +- pcbnew/ratsnest.cpp | 15 +- pcbnew/tool_pcb.cpp | 191 ++-- 18 files changed, 1256 insertions(+), 719 deletions(-) create mode 100644 bitmaps/layers_manager.xpm create mode 100644 bitmaps/sources/layers_manager.svg diff --git a/bitmaps/CMakeLists.txt b/bitmaps/CMakeLists.txt index 27ef4b3185..4e7df1b0d5 100644 --- a/bitmaps/CMakeLists.txt +++ b/bitmaps/CMakeLists.txt @@ -190,6 +190,7 @@ set(BITMAP_SRCS Lang_Ru.xpm Lang_Sl.xpm Language.xpm + layers_manager.xpm Leave_Sheet.xpm left.xpm libedit_icon.xpm diff --git a/bitmaps/layers_manager.xpm b/bitmaps/layers_manager.xpm new file mode 100644 index 0000000000..e6993da31f --- /dev/null +++ b/bitmaps/layers_manager.xpm @@ -0,0 +1,38 @@ +/* XPM */ +const char *layers_manager_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 16 16 1", +"X c #3A3916", +"o c #165304", +"& c #534D52", +"; c #375884", +" c #1A6C08", +". c #AE1D04", +"O c None", +"% c #678B87", +"$ c #616E7F", +"# c #6A4E40", +"- c #587FAA", +"+ c #0A8108", +": c #9CBADC", +"@ c #796E50", +"= c #2E2320", +"* c #7699AC", +/* pixels */ +" ..........XoOO", +"oo........... OO", +"X++++++++++ .oOO", +"O+++++++++++..XO", +"O ++++++++++X.oO", +"Oo++++@ ++++ .#O", +"OX++++@@@+++ $%&", +"OO+@ ++@@+++%*$X", +"OO @@@@##@+%%@+o", +"OOo+@@@@#&*%+++ ", +"OOOOOOO=$*$@OOOO", +"OOOOO=$*-$##@=OO", +"OOOO&-*-;OX@#@XO", +"OOO;:*$;OOO=@@%=", +"OOO;--;OOOOOO#@O", +"OOOO&&OOOOOOOOOO" +}; diff --git a/bitmaps/sources/layers_manager.svg b/bitmaps/sources/layers_manager.svg new file mode 100644 index 0000000000..9f5ba85c71 --- /dev/null +++ b/bitmaps/sources/layers_manager.svg @@ -0,0 +1,422 @@ + + + + + fabrication.svg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + Jakub Steiner + + + + + fabrication.svg + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cvpcb/init.cpp b/cvpcb/init.cpp index fdea865e0b..b07aa561b9 100644 --- a/cvpcb/init.cpp +++ b/cvpcb/init.cpp @@ -139,7 +139,7 @@ int WinEDA_CvpcbFrame::SaveNetList( const wxString& fileName ) wxFileDialog dlg( this, _( "Save Net and Component List" ), fn.GetPath(), fn.GetFullName(), NetlistFileWildcard, - wxFD_SAVE | wxFD_OVERWRITE_PROMPT ); + wxFD_SAVE/*| wxFD_OVERWRITE_PROMPT*/ ); if( dlg.ShowModal() == wxID_CANCEL ) return -1; diff --git a/eeschema/tool_viewlib.cpp b/eeschema/tool_viewlib.cpp index 674c19fc5e..b5fd15d852 100644 --- a/eeschema/tool_viewlib.cpp +++ b/eeschema/tool_viewlib.cpp @@ -126,22 +126,19 @@ void WinEDA_ViewlibFrame::ReCreateHToolbar() } // Must be AFTER Realize(): + m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, asdeMorgan ); + m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, asdeMorgan ); if( asdeMorgan ) { - m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, - (m_convert <= 1) ? true : false ); - m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, - (m_convert >= 2) ? true : false ); - m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, true ); - m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, true ); + bool normal = m_convert <= 1; + m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT,normal ); + m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, !normal ); } else { m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, true ); m_HToolBar->ToggleTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, false ); - m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_CONVERT_BUTT, false ); - m_HToolBar->EnableTool( ID_LIBVIEW_DE_MORGAN_NORMAL_BUTT, false ); - } + } int parts_count = 1; diff --git a/include/bitmaps.h b/include/bitmaps.h index 8b3a65295e..067bebc1b9 100644 --- a/include/bitmaps.h +++ b/include/bitmaps.h @@ -182,6 +182,7 @@ extern const char* lang_pt_xpm[]; extern const char* lang_ru_xpm[]; extern const char* lang_sl_xpm[]; extern const char* language_xpm[]; +extern const char* layers_manager_xpm[]; extern const char* leave_sheet_xpm[]; extern const char* left_xpm[]; extern const char* libedit_icon_xpm[]; diff --git a/include/class_board_design_settings.h b/include/class_board_design_settings.h index 2dbb6cf0e8..a04e19ceac 100644 --- a/include/class_board_design_settings.h +++ b/include/class_board_design_settings.h @@ -40,7 +40,7 @@ protected: public: // Color options for screen display of the Printed Board: - int m_LayerColor[NB_LAYERS]; ///< Layer colors (tracks and graphic items) + int m_LayerColor[LAYER_COUNT]; ///< Layer colors (tracks and graphic items) int m_ViaColor[4]; // Via color (depending on is type) diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index 9ab282848a..3b92e26bfa 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -104,6 +104,7 @@ public: bool m_TrackAndViasSizesList_Changed; bool m_show_microwave_tools; + bool m_show_layer_manager_tools; private: diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 12c2aa7e9f24ee3c2c9ff7903fae17ae4f52d0e6..667da643bb852176f95133a2b0547d43f265c031 100644 GIT binary patch delta 66067 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\n" "MIME-Version: 1.0\n" @@ -22,67 +22,6 @@ msgstr "" "X-Poedit-SearchPath-6: 3d-viewer\n" "X-Poedit-SearchPath-7: share\n" -#: pcbnew/files.cpp:21 -msgid "Printed circuit board" -msgstr "Circuit imprimé" - -#: pcbnew/files.cpp:71 -msgid "Recovery file " -msgstr "Fichier de secours " - -#: pcbnew/files.cpp:71 -msgid " not found" -msgstr " non trouvé" - -#: pcbnew/files.cpp:77 -msgid "Ok to load Recovery file " -msgstr "Ok pour charger le fichier de secours" - -#: pcbnew/files.cpp:133 -msgid "Board Modified: Continue ?" -msgstr "Circuit imprimé modifié, Continuer ?" - -#: pcbnew/files.cpp:152 -msgid "Open Board File" -msgstr "Ouvrir Fichier C.I." - -#: pcbnew/files.cpp:175 -#, c-format -msgid "File <%s> not found" -msgstr "Fichier %s non trouvé" - -#: pcbnew/files.cpp:195 -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:200 -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:305 -msgid "Save Board File" -msgstr "Sauver Fichier C.I." - -#: pcbnew/files.cpp:339 -msgid "Warning: unable to create backup file " -msgstr "Attention: impossible de créer un fichier backup " - -#: pcbnew/files.cpp:356 -msgid "Unable to create " -msgstr "Impossible de créer " - -#: pcbnew/files.cpp:375 -msgid "Backup file: " -msgstr "Fichier backup: " - -#: pcbnew/files.cpp:379 -msgid "Wrote board file: " -msgstr "Ecriture fichier CI: " - -#: pcbnew/files.cpp:381 -msgid "Failed to create " -msgstr "Impossible de créer fichier " - #: pcbnew/dialog_gendrill.cpp:165 msgid "Millimeters" msgstr "Millimètres" @@ -420,7 +359,7 @@ msgstr "Epaisseur Contour" msgid "Incorrect number, no change" msgstr "Nombre incorrect, pas de changement" -#: pcbnew/tool_pcb.cpp:30 +#: pcbnew/tool_pcb.cpp:28 msgid "" "Show active layer selections\n" "and select layer pair for route and place via" @@ -428,163 +367,164 @@ msgstr "" "Affiche sélections couche active\n" "et sélection paire de couches pour routage et placement via" -#: pcbnew/tool_pcb.cpp:199 +#: pcbnew/tool_pcb.cpp:202 msgid "New board" msgstr "Nouveau Circuit Imprimé" -#: pcbnew/tool_pcb.cpp:201 +#: pcbnew/tool_pcb.cpp:204 msgid "Open existing board" msgstr "Ouvrir C.I. existant" -#: pcbnew/tool_pcb.cpp:203 +#: pcbnew/tool_pcb.cpp:206 msgid "Save board" msgstr "Sauver Circuit Imprimé" -#: pcbnew/tool_pcb.cpp:207 +#: pcbnew/tool_pcb.cpp:210 msgid "Page settings (size, texts)" msgstr "Ajustage de la feuille de dessin (dimensions, textes)" -#: pcbnew/tool_pcb.cpp:212 +#: pcbnew/tool_pcb.cpp:215 msgid "Open module editor" msgstr "Ouvrir Editeur de modules" -#: pcbnew/tool_pcb.cpp:216 +#: pcbnew/tool_pcb.cpp:219 msgid "Cut selected item" msgstr "Suppression des éléments sélectionnés" -#: pcbnew/tool_pcb.cpp:220 +#: pcbnew/tool_pcb.cpp:223 msgid "Copy selected item" msgstr "Copie des éléments sélectionnés" -#: pcbnew/tool_pcb.cpp:223 +#: pcbnew/tool_pcb.cpp:226 msgid "Paste" msgstr "Copie des éléments sauvegardés" -#: pcbnew/tool_pcb.cpp:228 +#: pcbnew/tool_pcb.cpp:231 msgid "Undo last edition" msgstr "Défait dernière édition" -#: pcbnew/tool_pcb.cpp:230 +#: pcbnew/tool_pcb.cpp:233 msgid "Redo the last undo command" msgstr "Refait la dernière commande defaite" -#: pcbnew/tool_pcb.cpp:234 +#: pcbnew/tool_pcb.cpp:237 msgid "Print board" msgstr "Imprimer C.I." -#: pcbnew/tool_pcb.cpp:236 +#: pcbnew/tool_pcb.cpp:239 msgid "Plot (HPGL, PostScript, or GERBER format)" msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER" -#: pcbnew/tool_pcb.cpp:239 +#: pcbnew/tool_pcb.cpp:242 msgid "Zoom in" msgstr "Zoom +" -#: pcbnew/tool_pcb.cpp:244 +#: pcbnew/tool_pcb.cpp:247 msgid "Zoom out" msgstr "Zoom -" -#: pcbnew/tool_pcb.cpp:249 +#: pcbnew/tool_pcb.cpp:252 msgid "Redraw view" msgstr "Redessin de l'écran" -#: pcbnew/tool_pcb.cpp:254 +#: pcbnew/tool_pcb.cpp:257 msgid "Zoom auto" msgstr "Zoom Automatique" -#: pcbnew/tool_pcb.cpp:260 +#: pcbnew/tool_pcb.cpp:263 msgid "Find components and texts" msgstr "Recherche de composants et textes" -#: pcbnew/tool_pcb.cpp:268 +#: pcbnew/tool_pcb.cpp:271 msgid "Read netlist" msgstr "Lire Netliste" -#: pcbnew/tool_pcb.cpp:270 +#: pcbnew/tool_pcb.cpp:273 msgid "Perform design rules check" msgstr "Exécute le contrôle des règles de conception" -#: pcbnew/tool_pcb.cpp:283 +#: pcbnew/tool_pcb.cpp:286 msgid "Manual and automatic move or place of modules" msgstr "Mode module: déplacements ou placement manuel ou automatique des modules" -#: pcbnew/tool_pcb.cpp:287 +#: pcbnew/tool_pcb.cpp:290 msgid "Mode Track and Autorouting" msgstr "Mode Pistes et Autoroutage" -#: pcbnew/tool_pcb.cpp:293 +#: 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:313 +#: pcbnew/tool_pcb.cpp:316 msgid "Enable design rule checking" msgstr "Active le contrôle des règles de conception" -#: pcbnew/tool_pcb.cpp:317 +#: pcbnew/tool_pcb.cpp:320 msgid "Hide grid" msgstr "Ne pas afficher la grille" -#: pcbnew/tool_pcb.cpp:320 +#: pcbnew/tool_pcb.cpp:323 msgid "Display polar coordinates" msgstr "Affichage coord polaires" -#: pcbnew/tool_pcb.cpp:323 +#: pcbnew/tool_pcb.cpp:326 msgid "Units in inches" msgstr "Unités en pouces" -#: pcbnew/tool_pcb.cpp:326 +#: pcbnew/tool_pcb.cpp:329 msgid "Units in millimeters" msgstr "Unités en millimètres" -#: pcbnew/tool_pcb.cpp:329 +#: pcbnew/tool_pcb.cpp:332 msgid "Change cursor shape" msgstr "Changer la forme du curseur" -#: pcbnew/tool_pcb.cpp:334 +#: pcbnew/tool_pcb.cpp:337 msgid "Show board ratsnest" msgstr "Montrer le chevelu général" -#: pcbnew/tool_pcb.cpp:337 +#: pcbnew/tool_pcb.cpp:340 msgid "Show module ratsnest when moving" msgstr "Montrer le chevelu du module pendant le déplacement" -#: pcbnew/tool_pcb.cpp:343 +#: pcbnew/tool_pcb.cpp:346 msgid "Enable automatic track deletion" msgstr "Active l'effacement de piste automatique lorsque l'on recrée une piste." -#: pcbnew/tool_pcb.cpp:349 +#: pcbnew/tool_pcb.cpp:352 msgid "Show filled areas in zones" msgstr "Afficher les surfaces remplies dans les zones" -#: pcbnew/tool_pcb.cpp:354 +#: pcbnew/tool_pcb.cpp:357 msgid "Do not show filled areas in zones" msgstr "Ne pas afficher les surfaces remplies dans les zones" -#: pcbnew/tool_pcb.cpp:359 +#: pcbnew/tool_pcb.cpp:362 msgid "Show outlines of filled areas only in zones" msgstr "Afficher uniquement les contours des surfaces remplies dans les zones" -#: pcbnew/tool_pcb.cpp:364 +#: pcbnew/tool_pcb.cpp:367 msgid "Show pads in outline mode" msgstr "Afficher pastilles en mode contour" -#: pcbnew/tool_pcb.cpp:368 +#: pcbnew/tool_pcb.cpp:371 msgid "Show vias in outline mode" msgstr "Afficher pastilles en mode contour" -#: pcbnew/tool_pcb.cpp:372 +#: pcbnew/tool_pcb.cpp:375 msgid "Show tracks in outline mode" msgstr "Afficher pistes en mode contour" -#: pcbnew/tool_pcb.cpp:378 +#: pcbnew/tool_pcb.cpp:381 msgid "Enable high contrast display mode" msgstr "Active le mode d'affichage haut contraste" -#: pcbnew/tool_pcb.cpp:385 +#: pcbnew/tool_pcb.cpp:388 msgid "Show invisible text" msgstr "Montrer textes invisibles" -#: pcbnew/tool_pcb.cpp:396 +#: pcbnew/tool_pcb.cpp:399 +#: pcbnew/tool_pcb.cpp:408 msgid "" "Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n" " This is a experimental feature (under development)" @@ -592,87 +532,87 @@ 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:421 +#: pcbnew/tool_pcb.cpp:432 msgid "Highlight net" msgstr "Surbrillance net" -#: pcbnew/tool_pcb.cpp:426 +#: pcbnew/tool_pcb.cpp:437 msgid "Display local ratsnest" msgstr "Afficher le chevelu local" -#: pcbnew/tool_pcb.cpp:432 +#: pcbnew/tool_pcb.cpp:443 msgid "Add modules" msgstr "Addition de Modules" -#: pcbnew/tool_pcb.cpp:436 +#: pcbnew/tool_pcb.cpp:447 msgid "Add tracks and vias" msgstr "Ajouter pistes et vias" -#: pcbnew/tool_pcb.cpp:440 +#: pcbnew/tool_pcb.cpp:451 msgid "Add zones" msgstr "Addition de Zones" -#: pcbnew/tool_pcb.cpp:445 +#: pcbnew/tool_pcb.cpp:456 msgid "Add graphic line or polygon" msgstr "Addition de lignes ou polygones graphiques" -#: pcbnew/tool_pcb.cpp:449 +#: pcbnew/tool_pcb.cpp:460 msgid "Add graphic circle" msgstr "Addition de graphiques (Cercle)" -#: pcbnew/tool_pcb.cpp:453 +#: pcbnew/tool_pcb.cpp:464 msgid "Add graphic arc" msgstr "Addition de graphiques (Arc de Cercle)" -#: pcbnew/tool_pcb.cpp:457 +#: pcbnew/tool_pcb.cpp:468 msgid "Add text" msgstr "Ajout de Texte" -#: pcbnew/tool_pcb.cpp:462 +#: pcbnew/tool_pcb.cpp:473 msgid "Add dimension" msgstr "Ajout des cotes" -#: pcbnew/tool_pcb.cpp:466 +#: pcbnew/tool_pcb.cpp:477 msgid "Add layer alignment target" msgstr "Ajouter Mire de superposition" -#: pcbnew/tool_pcb.cpp:471 +#: pcbnew/tool_pcb.cpp:482 msgid "Delete items" msgstr "Suppression d'éléments" -#: pcbnew/tool_pcb.cpp:476 +#: pcbnew/tool_pcb.cpp:487 msgid "Offset adjust for drill and place files" msgstr "Ajuste offset pour fichier de perçage et placement" -#: pcbnew/tool_pcb.cpp:498 +#: pcbnew/tool_pcb.cpp:509 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:502 +#: pcbnew/tool_pcb.cpp:513 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:508 +#: pcbnew/tool_pcb.cpp:519 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:512 +#: pcbnew/tool_pcb.cpp:523 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:517 +#: pcbnew/tool_pcb.cpp:528 msgid "Create a polynomial shape for microwave applications" msgstr "Création de formes polynomiales (pour applications micro-ondes)" -#: pcbnew/tool_pcb.cpp:569 +#: pcbnew/tool_pcb.cpp:580 msgid "Current NetClass clearance value" msgstr "Valeur isolation NetClass courante" -#: pcbnew/tool_pcb.cpp:578 +#: pcbnew/tool_pcb.cpp:589 msgid "Name of the current NetClass" msgstr "Nom de la NetClass courante" -#: pcbnew/tool_pcb.cpp:587 +#: pcbnew/tool_pcb.cpp:599 msgid "" "Auto track width: when starting on an existing track use its width\n" "otherwise, use current width setting" @@ -680,23 +620,23 @@ 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:605 +#: pcbnew/tool_pcb.cpp:617 msgid "Auto" msgstr "Auto" -#: pcbnew/tool_pcb.cpp:609 +#: pcbnew/tool_pcb.cpp:621 msgid "Zoom " msgstr "Zoom " -#: pcbnew/tool_pcb.cpp:631 +#: pcbnew/tool_pcb.cpp:643 msgid "Grid" msgstr "Grille" -#: pcbnew/tool_pcb.cpp:650 +#: pcbnew/tool_pcb.cpp:662 msgid "User Grid" msgstr "Grille perso" -#: pcbnew/tool_pcb.cpp:759 +#: pcbnew/tool_pcb.cpp:770 msgid "+/- to switch" msgstr "+/- pour commuter" @@ -1088,15 +1028,119 @@ msgstr "X Pos" msgid "Y pos" msgstr "Y pos" -#: pcbnew/hotkeys.cpp:599 +#: pcbnew/hotkeys.cpp:595 #, c-format msgid "Footprint %s found, but locked" msgstr "Module %s trouvé, mais verrouillé" -#: pcbnew/hotkeys.cpp:797 +#: pcbnew/hotkeys.cpp:789 msgid "Delete module?" msgstr "Effacer Module?" +#: pcbnew/pcbframe.cpp:216 +msgid "Through Via" +msgstr "Via Traversante" + +#: pcbnew/pcbframe.cpp:216 +msgid "Show through vias" +msgstr "Afficher vias traversantes" + +#: pcbnew/pcbframe.cpp:217 +msgid "Blind/Buried Via" +msgstr "Via Aveugle/Enterrée" + +#: pcbnew/pcbframe.cpp:217 +msgid "Show blind or buried vias" +msgstr "Afficher vias enterrées/aveugles" + +#: pcbnew/pcbframe.cpp:218 +msgid "Micro Via" +msgstr "Micro Via" + +#: pcbnew/pcbframe.cpp:218 +msgid "Show micro vias" +msgstr "Afficher micro vias" + +#: pcbnew/pcbframe.cpp:219 +msgid "Ratsnets" +msgstr "Chevelu" + +#: pcbnew/pcbframe.cpp:219 +msgid "Show the ratsnest" +msgstr "Montrer le chevelu" + +#: pcbnew/pcbframe.cpp:220 +msgid "Mod Text Back" +msgstr "Texte Mod. Dessous" + +#: pcbnew/pcbframe.cpp:220 +msgid "Show footprint text residing on board's back" +msgstr "Afficher les textes sur modules situés sur le dessous du ciruit imprimé" + +#: pcbnew/pcbframe.cpp:221 +msgid "Mod Text Front" +msgstr "Texte Mod. Dessus" + +#: pcbnew/pcbframe.cpp:221 +msgid "Show footprint text residing on board's front" +msgstr "Afficher les textes sur modules situés sur le dessus du ciruit imprimé" + +#: pcbnew/pcbframe.cpp:222 +msgid "Mod Text Hide" +msgstr "Cacher Textes Mod." + +#: pcbnew/pcbframe.cpp:222 +#: pcbnew/pcbframe.cpp:223 +#: pcbnew/pcbframe.cpp:225 +#: pcbnew/pcbframe.cpp:226 +#: pcbnew/pcbframe.cpp:227 +msgid "TBD" +msgstr "" + +#: pcbnew/pcbframe.cpp:223 +msgid "Anchors" +msgstr "Ancres" + +#: pcbnew/pcbframe.cpp:225 +msgid "Not Connecteds" +msgstr "Non connectés" + +#: pcbnew/pcbframe.cpp:226 +msgid "Modules Front" +msgstr "Modules Dessus" + +#: pcbnew/pcbframe.cpp:227 +msgid "Modules Back" +msgstr "Modules Dessous" + +#: pcbnew/pcbframe.cpp:422 +msgid "Front copper layer" +msgstr "Couche cuivre dessus" + +#: pcbnew/pcbframe.cpp:430 +msgid "An innner copper layer" +msgstr "Couche interne" + +#: pcbnew/pcbframe.cpp:438 +msgid "Back copper layer" +msgstr "Couche cuivre dessous" + +#: pcbnew/pcbframe.cpp:459 +msgid "Board modified, Save before exit ?" +msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" + +#: pcbnew/pcbframe.cpp:460 +msgid "Confirmation" +msgstr "Confirmation" + +#: pcbnew/pcbframe.cpp:499 +msgid "3D Frame already opened" +msgstr "Fenêtre 3D déjà ouverte" + +#: pcbnew/pcbframe.cpp:503 +msgid "3D Viewer" +msgstr "Visu 3D" + #: pcbnew/netlist.cpp:118 #, c-format msgid "Netlist file %s not found" @@ -1447,11 +1491,11 @@ msgstr "Inclure Pistes Autoroutées" msgid "Include Locked Tracks" msgstr "Inclure Pistes Verrouillées" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:224 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:83 msgid "Use this attribute for most non smd components" msgstr "Utiliser cet attribut pour la plupart des composants" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:226 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:86 msgid "" "Use this attribute for smd components.\n" "Only components with this option are put in the footprint position list file" @@ -1459,39 +1503,39 @@ msgstr "" "Uiliser cet attribut pour les composants CMS.\n" "Seuls les composants avec cette option sont mis dans le fichier de position des composants" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:228 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:89 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_BoardEditor.cpp:255 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:115 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_BoardEditor.cpp:257 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:116 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_BoardEditor.cpp:266 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:125 msgid "Shape Scale:" msgstr "Echelle de la forme:" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:271 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:129 msgid "Shape Offset:" msgstr "Offset forme:" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:276 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:133 msgid "Shape Rotation:" msgstr "Rot de la forme" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:382 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:259 msgid "3D Shape:" msgstr "Forme 3D:" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:412 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:287 msgid "Use a relative path?" msgstr "Utiliser un chemin relatif?" -#: pcbnew/dialog_edit_module_for_BoardEditor.cpp:413 +#: pcbnew/dialog_edit_module_for_Modedit.cpp:288 msgid "Path type" msgstr "Type de chemin" @@ -1664,17 +1708,72 @@ msgstr "Lignes de Hachure" msgid "Corners in DrawList" msgstr "Sommets en Liste de dessin" -#: pcbnew/initpcb.cpp:47 -msgid "Ok to delete selected items ?" -msgstr "Ok pour effacer les éléments sélectionnés ?" +#: pcbnew/files.cpp:21 +msgid "Printed circuit board" +msgstr "Circuit imprimé" -#: pcbnew/initpcb.cpp:156 -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/files.cpp:71 +msgid "Recovery file " +msgstr "Fichier de secours " -#: pcbnew/initpcb.cpp:208 -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/files.cpp:71 +#: pcbnew/librairi.cpp:248 +msgid " not found" +msgstr " non trouvé" + +#: pcbnew/files.cpp:77 +msgid "Ok to load Recovery file " +msgstr "Ok pour charger le fichier de secours" + +#: pcbnew/files.cpp:133 +msgid "Board Modified: Continue ?" +msgstr "Circuit imprimé modifié, Continuer ?" + +#: pcbnew/files.cpp:152 +msgid "Open Board File" +msgstr "Ouvrir Fichier C.I." + +#: pcbnew/files.cpp:175 +#: pcbnew/librairi.cpp:74 +#, c-format +msgid "File <%s> not found" +msgstr "Fichier %s non trouvé" + +#: pcbnew/files.cpp:195 +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:200 +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:308 +msgid "Save Board File" +msgstr "Sauver Fichier C.I." + +#: pcbnew/files.cpp:342 +msgid "Warning: unable to create backup file " +msgstr "Attention: impossible de créer un fichier backup " + +#: pcbnew/files.cpp:359 +#: pcbnew/librairi.cpp:301 +#: pcbnew/librairi.cpp:447 +#: pcbnew/librairi.cpp:606 +#: pcbnew/librairi.cpp:809 +msgid "Unable to create " +msgstr "Impossible de créer " + +#: pcbnew/files.cpp:378 +msgid "Backup file: " +msgstr "Fichier backup: " + +#: pcbnew/files.cpp:382 +msgid "Wrote board file: " +msgstr "Ecriture fichier CI: " + +#: pcbnew/files.cpp:384 +msgid "Failed to create " +msgstr "Impossible de créer fichier " #: pcbnew/controle.cpp:175 #: pcbnew/modedit.cpp:81 @@ -1810,9 +1909,17 @@ msgstr "Librairie existante " msgid "Create error " msgstr "Erreur en création " -#: pcbnew/ioascii.cpp:175 -msgid "Error: Unexpected end of file !" -msgstr "Erreur: Fin de fichier inattendue !" +#: pcbnew/initpcb.cpp:47 +msgid "Ok to delete selected items ?" +msgstr "Ok pour effacer les éléments sélectionnés ?" + +#: pcbnew/initpcb.cpp:156 +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:213 +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/clean.cpp:183 msgid "Delete unconnected tracks:" @@ -1952,29 +2059,169 @@ msgstr "Chercher Marqueur" msgid "Find Next Marker" msgstr "Marqueur Suivant" -#: pcbnew/editrack.cpp:807 +#: pcbnew/editrack.cpp:805 msgid "Track Len" msgstr "Long. Piste" -#: pcbnew/editrack.cpp:811 +#: pcbnew/editrack.cpp:809 msgid "Segs Count" msgstr "Nb Segms" -#: pcbnew/pcbframe.cpp:334 -msgid "Board modified, Save before exit ?" -msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" +#: pcbnew/ioascii.cpp:175 +msgid "Error: Unexpected end of file !" +msgstr "Erreur: Fin de fichier inattendue !" -#: pcbnew/pcbframe.cpp:335 -msgid "Confirmation" -msgstr "Confirmation" +#: pcbnew/class_board.cpp:52 +msgid "This is the default net class." +msgstr "Ceci est la Netclass par défaut" -#: pcbnew/pcbframe.cpp:374 -msgid "3D Frame already opened" -msgstr "Fenêtre 3D déjà ouverte" +#: pcbnew/class_board.cpp:212 +msgid "Front" +msgstr "Dessus" -#: pcbnew/pcbframe.cpp:378 -msgid "3D Viewer" -msgstr "Visu 3D" +#: pcbnew/class_board.cpp:213 +msgid "Inner2" +msgstr "Interne2" + +#: pcbnew/class_board.cpp:214 +msgid "Inner3" +msgstr "Interne3" + +#: pcbnew/class_board.cpp:215 +msgid "Inner4" +msgstr "Interne4" + +#: pcbnew/class_board.cpp:216 +msgid "Inner5" +msgstr "Interne5" + +#: pcbnew/class_board.cpp:217 +msgid "Inner6" +msgstr "Interne6" + +#: pcbnew/class_board.cpp:218 +msgid "Inner7" +msgstr "Interne7" + +#: pcbnew/class_board.cpp:219 +msgid "Inner8" +msgstr "Interne8" + +#: pcbnew/class_board.cpp:220 +msgid "Inner9" +msgstr "Interne9" + +#: pcbnew/class_board.cpp:221 +msgid "Inner10" +msgstr "Interne10" + +#: pcbnew/class_board.cpp:222 +msgid "Inner11" +msgstr "Interne11" + +#: pcbnew/class_board.cpp:223 +msgid "Inner12" +msgstr "Interne12" + +#: pcbnew/class_board.cpp:224 +msgid "Inner13" +msgstr "Interne13" + +#: pcbnew/class_board.cpp:225 +msgid "Inner14" +msgstr "Interne14" + +#: pcbnew/class_board.cpp:226 +msgid "Inner15" +msgstr "Interne15" + +#: pcbnew/class_board.cpp:227 +msgid "Back" +msgstr "Dessous" + +#: pcbnew/class_board.cpp:228 +msgid "Adhes_Back" +msgstr "Adhes_Dessous" + +#: pcbnew/class_board.cpp:229 +msgid "Adhes_Front" +msgstr "Adhes_Dessus" + +#: pcbnew/class_board.cpp:230 +msgid "SoldP_Back" +msgstr "SoldP_Dessous" + +#: pcbnew/class_board.cpp:231 +msgid "SoldP_Front" +msgstr "SoldP_Dessus" + +#: pcbnew/class_board.cpp:232 +msgid "SilkS_Back" +msgstr "SilkS_Dessous" + +#: pcbnew/class_board.cpp:233 +msgid "SilkS_Front" +msgstr "Sérigr_Dessus" + +#: pcbnew/class_board.cpp:234 +msgid "Mask_Back" +msgstr "Masque_Dessous" + +#: pcbnew/class_board.cpp:235 +msgid "Mask_Front" +msgstr "Masque_Dessus" + +#: pcbnew/class_board.cpp:236 +msgid "Drawings" +msgstr "Drawings " + +#: pcbnew/class_board.cpp:237 +msgid "Comments" +msgstr "Commentaires " + +#: pcbnew/class_board.cpp:238 +msgid "Eco1" +msgstr "Eco1 " + +#: pcbnew/class_board.cpp:239 +msgid "Eco2" +msgstr "Eco2 " + +#: pcbnew/class_board.cpp:240 +msgid "PCB_Edges" +msgstr "Contours_PCB" + +#: pcbnew/class_board.cpp:241 +msgid "BAD INDEX" +msgstr "BAD INDEX" + +#: pcbnew/class_board.cpp:761 +msgid "Pads" +msgstr "Pads" + +#: pcbnew/class_board.cpp:764 +msgid "Vias" +msgstr "Vias" + +#: pcbnew/class_board.cpp:767 +msgid "Nodes" +msgstr "Nodes" + +#: pcbnew/class_board.cpp:770 +msgid "Nets" +msgstr "Nets" + +#: pcbnew/class_board.cpp:778 +msgid "Links" +msgstr "Liens" + +#: pcbnew/class_board.cpp:781 +msgid "Connect" +msgstr "Connect" + +#: pcbnew/class_board.cpp:784 +msgid "Unconnected" +msgstr "Non connecté" #: pcbnew/pcbplot.cpp:558 msgid "Warning: Scale option set to a very small value" @@ -1997,6 +2244,30 @@ msgstr "Pas de couche sélectionnée" msgid "Freeroute Help" msgstr "Aide Freeroute" +#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:40 +msgid "from " +msgstr "De " + +#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:186 +msgid "Footprint library files:" +msgstr "Fichiers Library Modules:" + +#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:227 +msgid "Library already in use" +msgstr "Librairie déjà en usage" + +#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:240 +msgid "Default Path for Libraries" +msgstr "Chemin par Défaut des Librairies" + +#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:289 +msgid "Path already in use" +msgstr "Chemin déjà en usage" + +#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:328 +msgid "Footprint document file:" +msgstr "Documentation des Modules:" + #: pcbnew/swap_layers.cpp:68 msgid "Swap Layers:" msgstr "Permutation Couches:" @@ -2105,10 +2376,6 @@ msgstr "Problèmes / Marqueurs" msgid "A list of unconnected pads, right click for popup menu" msgstr "Pour une liste de pads non connecté, clic droit pour ouvrir un menu" -#: pcbnew/dialog_drc_base.cpp:171 -msgid "Unconnected" -msgstr "Non connecté" - #: pcbnew/moduleframe.cpp:251 msgid "Module Editor: Module modified! Continue?" msgstr "Editeur de Module: Module modifié! Continuer ?" @@ -3098,10 +3365,6 @@ msgstr "Via" msgid "Blind/Buried" msgstr "Borgne/Aveugle" -#: pcbnew/class_board_item.cpp:193 -msgid "Micro Via" -msgstr "Micro Via" - #: pcbnew/class_board_item.cpp:216 msgid "Marker" msgstr "Marqueur" @@ -4162,30 +4425,6 @@ msgstr "Via %s" msgid "Via %s; (drl %s)" msgstr "Via %s; (perçage %s)" -#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:40 -msgid "from " -msgstr "De " - -#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:186 -msgid "Footprint library files:" -msgstr "Fichiers Library Modules:" - -#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:227 -msgid "Library already in use" -msgstr "Librairie déjà en usage" - -#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:240 -msgid "Default Path for Libraries" -msgstr "Chemin par Défaut des Librairies" - -#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:289 -msgid "Path already in use" -msgstr "Chemin déjà en usage" - -#: pcbnew/dialog_pcbnew_config_libs_and_paths.cpp:328 -msgid "Footprint document file:" -msgstr "Documentation des Modules:" - #: pcbnew/dialog_edit_module_text.cpp:99 msgid "Value:" msgstr "Valeur:" @@ -4288,10 +4527,6 @@ msgstr "Last Change" msgid "Netlist path" msgstr "Chemin Netliste " -#: pcbnew/class_module.cpp:858 -msgid "Pads" -msgstr "Pads" - #: pcbnew/class_module.cpp:865 msgid "Stat" msgstr "Stat" @@ -5379,66 +5614,6 @@ msgstr "jumper" msgid "Copper layer type for Freerouter. Power layers are removed from Freerouter's layer menus." msgstr "Type de couches cuivre pour Freerouter. Les couches type \"Power\" sont supprimées du menu des couches de Freerouter." -#: pcbnew/dialog_layers_setup_base.cpp:199 -msgid "Inner2" -msgstr "Interne2" - -#: pcbnew/dialog_layers_setup_base.cpp:226 -msgid "Inner3" -msgstr "Interne3" - -#: pcbnew/dialog_layers_setup_base.cpp:253 -msgid "Inner4" -msgstr "Interne4" - -#: pcbnew/dialog_layers_setup_base.cpp:280 -msgid "Inner5" -msgstr "Interne5" - -#: pcbnew/dialog_layers_setup_base.cpp:307 -msgid "Inner6" -msgstr "Interne6" - -#: pcbnew/dialog_layers_setup_base.cpp:334 -msgid "Inner7" -msgstr "Interne7" - -#: pcbnew/dialog_layers_setup_base.cpp:361 -msgid "Inner8" -msgstr "Interne8" - -#: pcbnew/dialog_layers_setup_base.cpp:388 -msgid "Inner9" -msgstr "Interne9" - -#: pcbnew/dialog_layers_setup_base.cpp:415 -msgid "Inner10" -msgstr "Interne10" - -#: pcbnew/dialog_layers_setup_base.cpp:442 -msgid "Inner11" -msgstr "Interne11" - -#: pcbnew/dialog_layers_setup_base.cpp:469 -msgid "Inner12" -msgstr "Interne12" - -#: pcbnew/dialog_layers_setup_base.cpp:496 -msgid "Inner13" -msgstr "Interne13" - -#: pcbnew/dialog_layers_setup_base.cpp:523 -msgid "Inner14" -msgstr "Interne14" - -#: pcbnew/dialog_layers_setup_base.cpp:550 -msgid "Inner15" -msgstr "Interne15" - -#: pcbnew/dialog_layers_setup_base.cpp:577 -msgid "Back" -msgstr "Dessous" - #: pcbnew/dialog_layers_setup_base.cpp:579 msgid "Layer name of back (bottom) copper layer" msgstr "Nom de la couche sur le dessous du circuit (coté cuivre)" @@ -5551,6 +5726,7 @@ msgstr "Pistes et vias:" #: pcbnew/dialog_display_options_base.cpp:73 #: pcbnew/dialog_display_options_base.cpp:84 #: pcbnew/dialog_display_options_base.cpp:118 +#: pcbnew/dialog_plot_base.cpp:97 msgid "Sketch" msgstr "Contour" @@ -5559,6 +5735,7 @@ msgstr "Contour" #: pcbnew/dialog_display_options_base.cpp:73 #: pcbnew/dialog_display_options_base.cpp:84 #: pcbnew/dialog_display_options_base.cpp:118 +#: pcbnew/dialog_plot_base.cpp:97 msgid "Filled" msgstr "Plein" @@ -5704,11 +5881,6 @@ msgstr "Nom Equipot" msgid "Net Code" msgstr "Net Code" -#: pcbnew/class_netinfo_item.cpp:164 -#: pcbnew/class_board.cpp:751 -msgid "Vias" -msgstr "Vias" - #: pcbnew/class_netinfo_item.cpp:167 msgid "Net Length" msgstr "Long. Net" @@ -5718,6 +5890,7 @@ msgid "Print Footprint" msgstr "Imprimer Module" #: pcbnew/dialog_print_for_modedit_base.cpp:22 +#: pcbnew/dialog_plot_base.cpp:91 msgid "Scale 1" msgstr "Echelle 1" @@ -5729,86 +5902,6 @@ msgstr "Echelle 8" msgid "Scale 16" msgstr "Echelle 16" -#: pcbnew/class_board.cpp:52 -msgid "This is the default net class." -msgstr "Ceci est la Netclass par défaut" - -#: pcbnew/class_board.cpp:212 -msgid "Front" -msgstr "Dessus" - -#: pcbnew/class_board.cpp:228 -msgid "Adhes_Back" -msgstr "Adhes_Dessous" - -#: pcbnew/class_board.cpp:229 -msgid "Adhes_Front" -msgstr "Adhes_Dessus" - -#: pcbnew/class_board.cpp:230 -msgid "SoldP_Back" -msgstr "SoldP_Dessous" - -#: pcbnew/class_board.cpp:231 -msgid "SoldP_Front" -msgstr "SoldP_Dessus" - -#: pcbnew/class_board.cpp:232 -msgid "SilkS_Back" -msgstr "SilkS_Dessous" - -#: pcbnew/class_board.cpp:233 -msgid "SilkS_Front" -msgstr "Sérigr_Dessus" - -#: pcbnew/class_board.cpp:234 -msgid "Mask_Back" -msgstr "Masque_Dessous" - -#: pcbnew/class_board.cpp:235 -msgid "Mask_Front" -msgstr "Masque_Dessus" - -#: pcbnew/class_board.cpp:236 -msgid "Drawings" -msgstr "Drawings " - -#: pcbnew/class_board.cpp:237 -msgid "Comments" -msgstr "Commentaires " - -#: pcbnew/class_board.cpp:238 -msgid "Eco1" -msgstr "Eco1 " - -#: pcbnew/class_board.cpp:239 -msgid "Eco2" -msgstr "Eco2 " - -#: pcbnew/class_board.cpp:240 -msgid "PCB_Edges" -msgstr "Contours_PCB" - -#: pcbnew/class_board.cpp:241 -msgid "BAD INDEX" -msgstr "BAD INDEX" - -#: pcbnew/class_board.cpp:754 -msgid "Nodes" -msgstr "Nodes" - -#: pcbnew/class_board.cpp:757 -msgid "Nets" -msgstr "Nets" - -#: pcbnew/class_board.cpp:765 -msgid "Links" -msgstr "Liens" - -#: pcbnew/class_board.cpp:768 -msgid "Connect" -msgstr "Connect" - #: pcbnew/gen_modules_placefile.cpp:133 msgid "No modules for automated placement." msgstr "Pas de module pour placement automatisé" @@ -5825,63 +5918,26 @@ msgstr "Fichier placement côté cuivre:" msgid "Module count" msgstr "Nb Modules" -#: pcbnew/layer_widget.cpp:242 -#, fuzzy +#: pcbnew/layer_widget.cpp:247 msgid "Show All Cu" -msgstr "Tout Afficher" +msgstr "Afficher toutes couches cuivre" -#: pcbnew/layer_widget.cpp:245 +#: pcbnew/layer_widget.cpp:250 msgid "Hide All Cu" -msgstr "" +msgstr "Cacher Cu" -#: pcbnew/layer_widget.cpp:385 +#: pcbnew/layer_widget.cpp:389 msgid "Left click to select, middle click for color change, right click for menu" -msgstr "Clquer sur bouton gauche pour selectionner, du milieu pour changer la couleur, drit pour le menu" +msgstr "Cliquer sur bouton gauche pour selectionner, du milieu pour changer la couleur, droit pour le menu" -#: pcbnew/layer_widget.cpp:401 +#: pcbnew/layer_widget.cpp:405 msgid "Enable this for visibility" msgstr "Activer ceci pour activer la visibilité" -#: pcbnew/layer_widget.cpp:419 +#: pcbnew/layer_widget.cpp:424 msgid "Middle click for color change" msgstr "Clicquer sur bouton du milieu pour changer la couleur" -#: pcbnew/layer_widget.cpp:709 -msgid "wxAUI Test" -msgstr "" - -#: pcbnew/layer_widget.cpp:718 -msgid "RED" -msgstr "ROUGE" - -#: pcbnew/layer_widget.cpp:719 -msgid "GREEN" -msgstr "VERT" - -#: pcbnew/layer_widget.cpp:720 -msgid "BROWN" -msgstr "BRUN" - -#: pcbnew/layer_widget.cpp:721 -msgid "BLUE" -msgstr "BLEU" - -#: pcbnew/layer_widget.cpp:724 -msgid "Spock here" -msgstr "" - -#: pcbnew/layer_widget.cpp:726 -msgid "My eyes are upon you" -msgstr "" - -#: pcbnew/layer_widget.cpp:741 -msgid "Pane 2 - sample text" -msgstr "" - -#: pcbnew/layer_widget.cpp:746 -msgid "Main content window" -msgstr "" - #: pcbnew/dialog_general_options_BoardEditor_base.cpp:22 msgid "No Display" msgstr "Pas d'affichage" @@ -6431,9 +6487,8 @@ msgid "Save current board" msgstr "Sauver le C.I. actuel" #: pcbnew/menubar_pcbframe.cpp:76 -#, fuzzy msgid "Save as...\tShift+Ctrl+S" -msgstr "&Sauver\tCtrl S" +msgstr "Sauver sous...\tCtrl S" #: pcbnew/menubar_pcbframe.cpp:77 msgid "Save the current board as.." @@ -6545,9 +6600,8 @@ msgid "Export board" msgstr "Exporter le C.I." #: pcbnew/menubar_pcbframe.cpp:189 -#, fuzzy msgid "&Print\tCtrl+P" -msgstr "&Ouvrir\tCtrl+O" +msgstr "Imprime&r\tCtrl+O" #: pcbnew/menubar_pcbframe.cpp:190 msgid "Print pcb board" @@ -6623,9 +6677,8 @@ msgid "&Find" msgstr "&Chercher" #: pcbnew/menubar_pcbframe.cpp:272 -#, fuzzy msgid "Find\tCtrl+F" -msgstr "&Ouvrir\tCtrl+O" +msgstr "Chercher\tCtrl+F" #: pcbnew/menubar_pcbframe.cpp:276 msgid "Find components and text in current loaded board" @@ -6691,9 +6744,8 @@ msgid "Redraw" msgstr "Redessin de l'écran" #: pcbnew/menubar_pcbframe.cpp:358 -#, fuzzy msgid "Redraw\tCtrl+R" -msgstr "&Nouveau\tCtrl+N" +msgstr "Redessiner\tCtrl+R" #: pcbnew/menubar_pcbframe.cpp:362 msgid "Redraw the screen of the board" @@ -6713,7 +6765,7 @@ msgstr "&Librairie" #: pcbnew/menubar_pcbframe.cpp:392 msgid "Setting libraries, directories and others..." -msgstr "Sélectionner les librairies , répertoires et autres" +msgstr "Sélectionner les librairies, répertoires et autres" #: pcbnew/menubar_pcbframe.cpp:398 msgid "&Colors and Visibility" @@ -7223,11 +7275,11 @@ msgstr "Le composant \" %s\" existe, Le changer ?" msgid "Component %s saved in library %s" msgstr "Composant %s sauvé en librairie %s" -#: eeschema/hotkeys.cpp:337 +#: eeschema/hotkeys.cpp:333 msgid "Add Component" msgstr "Ajout Composant" -#: eeschema/hotkeys.cpp:361 +#: eeschema/hotkeys.cpp:357 msgid "Add Wire" msgstr "Ajouter Fils" @@ -8345,12 +8397,12 @@ msgid "Place a bus" msgstr "Placer un bus" #: eeschema/tool_sch.cpp:179 -#: eeschema/menubar.cpp:302 +#: eeschema/menubar.cpp:294 msgid "Place a wire to bus entry" msgstr "Placer une Entrée de Bus (type fil vers bus)" #: eeschema/tool_sch.cpp:183 -#: eeschema/menubar.cpp:309 +#: eeschema/menubar.cpp:301 msgid "Place a bus to bus entry" msgstr "Placer une Entrée de Bus (type bus vers bus)" @@ -8359,7 +8411,7 @@ msgid "Place no connect flag" msgstr "Placer symbole de non connexion" #: eeschema/tool_sch.cpp:192 -#: eeschema/menubar.cpp:321 +#: eeschema/menubar.cpp:313 msgid "Place net name" msgstr "Place nom de net" @@ -8376,7 +8428,7 @@ msgid "Place a junction" msgstr "Placer une jonction" #: eeschema/tool_sch.cpp:206 -#: eeschema/menubar.cpp:344 +#: eeschema/menubar.cpp:336 msgid "Place a hierarchical label. This label will be seen as a pin sheet in the sheet symbol" msgstr "Placer un label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole" @@ -8587,9 +8639,8 @@ msgid "Open a recent opened schematic project" msgstr "Ouvrir un projet schématique récemment ouvert" #: eeschema/menubar.cpp:69 -#, fuzzy msgid "&Save Whole Schematic Project\tCtrl+S" -msgstr "SauverTout le Projet Schématique" +msgstr "Sauver Tout le Projet Schématique\tCtrl+S" #: eeschema/menubar.cpp:70 msgid "Save all sheets in the schematic project" @@ -8604,9 +8655,8 @@ msgid "Save only current schematic sheet" msgstr "Sauver seulement la feuille active" #: eeschema/menubar.cpp:81 -#, fuzzy msgid "Save Current Sheet &as\tShift+Ctrl+S" -msgstr "Sauver la Feuille Courante sous ..." +msgstr "Sauver Feuille Courante &sous\tShift+Ctrl+S" #: eeschema/menubar.cpp:82 msgid "Save current schematic sheet as..." @@ -8669,176 +8719,175 @@ msgstr "Tracer les feuilles schématiques en format HPGL, POSTSCRIPT ou SVG" msgid "Quit EESchema" msgstr "Quitter EESchema" -#: eeschema/menubar.cpp:190 -#, fuzzy +#: eeschema/menubar.cpp:182 msgid "&Find\tCtrl+F" -msgstr "&Ouvrir\tCtrl+O" +msgstr "&Chercher\tCtrl+F" -#: eeschema/menubar.cpp:199 +#: eeschema/menubar.cpp:191 msgid "Backannotate" msgstr "Rétro Annotation" -#: eeschema/menubar.cpp:200 +#: eeschema/menubar.cpp:192 msgid "Back annotated footprint fields" msgstr "Rétroannotation des champs modules" -#: eeschema/menubar.cpp:246 +#: eeschema/menubar.cpp:238 msgid "Fit the schematic sheet on the screen" msgstr "Ajuster la feuille de schéma à l'écran" -#: eeschema/menubar.cpp:262 +#: eeschema/menubar.cpp:254 msgid "Redraw the schematic view" msgstr "Redessin de l'écran" -#: eeschema/menubar.cpp:276 +#: eeschema/menubar.cpp:268 msgid "&Component" msgstr "&Composant" -#: eeschema/menubar.cpp:277 +#: eeschema/menubar.cpp:269 msgid "Place the component" msgstr "Placer le Composant" -#: eeschema/menubar.cpp:282 +#: eeschema/menubar.cpp:274 msgid "&Power port" msgstr "Power Symbole" -#: eeschema/menubar.cpp:283 +#: eeschema/menubar.cpp:275 msgid "Place the power port" msgstr "Placer le Symbole Power" -#: eeschema/menubar.cpp:288 +#: eeschema/menubar.cpp:280 msgid "&Wire" msgstr "&Fil" -#: eeschema/menubar.cpp:289 +#: eeschema/menubar.cpp:281 msgid "Place the wire" msgstr "Place fil" -#: eeschema/menubar.cpp:294 +#: eeschema/menubar.cpp:286 msgid "&Bus" msgstr "&Bus" -#: eeschema/menubar.cpp:295 +#: eeschema/menubar.cpp:287 msgid "Place bus" msgstr "Place bus" -#: eeschema/menubar.cpp:301 +#: eeschema/menubar.cpp:293 msgid "W&ire to bus entry" msgstr "Entrées de bus (type fil vers bus)" -#: eeschema/menubar.cpp:308 +#: eeschema/menubar.cpp:300 msgid "B&us to bus entry" msgstr "Entrées de bus (type bus vers bus)" -#: eeschema/menubar.cpp:314 +#: eeschema/menubar.cpp:306 msgid "No connect flag" msgstr "Symbole de Non Connexion" -#: eeschema/menubar.cpp:315 +#: eeschema/menubar.cpp:307 msgid "Place a no connect flag" msgstr "Placer un Symbole de Non Connexion" -#: eeschema/menubar.cpp:320 +#: eeschema/menubar.cpp:312 msgid "Net name" msgstr "Net Name" -#: eeschema/menubar.cpp:326 +#: eeschema/menubar.cpp:318 msgid "Global label" msgstr "Label Global" -#: eeschema/menubar.cpp:327 +#: eeschema/menubar.cpp:319 msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy" msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hiérarchie" -#: eeschema/menubar.cpp:333 +#: eeschema/menubar.cpp:325 msgid "Junction" msgstr "Jonction" -#: eeschema/menubar.cpp:334 +#: eeschema/menubar.cpp:326 msgid "Place junction" msgstr "Place jonction" -#: eeschema/menubar.cpp:343 +#: eeschema/menubar.cpp:335 msgid "Hierarchical label" msgstr "Label Hiérarchique" -#: eeschema/menubar.cpp:351 +#: eeschema/menubar.cpp:343 msgid "Hierarchical sheet" msgstr "Feuille Hiérrachique" -#: eeschema/menubar.cpp:352 +#: eeschema/menubar.cpp:344 msgid "Create a hierarchical sheet" msgstr "Créer une Feuille Hiérachique" -#: eeschema/menubar.cpp:358 +#: eeschema/menubar.cpp:350 msgid "Import Hierarchical Label" msgstr "Importer Label Hiérarchique" -#: eeschema/menubar.cpp:359 +#: eeschema/menubar.cpp:351 msgid "Place a pin sheet created by importing a hierarchical label from sheet" msgstr "Placer une pin hiérarchique créée par importation d'un label hiérarchique de la feuille" -#: eeschema/menubar.cpp:366 +#: eeschema/menubar.cpp:358 msgid "Add Hierarchical Pin to Sheet" msgstr "Ajouter Pins de Hiérarchie dans feuille" -#: eeschema/menubar.cpp:367 +#: eeschema/menubar.cpp:359 msgid "Place a hierarchical pin to sheet" msgstr "Addition de pins de hiérarchie dans les feuilles symboles de hiérarchie" -#: eeschema/menubar.cpp:377 +#: eeschema/menubar.cpp:369 msgid "Graphic line or polygon" msgstr "Ligne ou polygone graphique" -#: eeschema/menubar.cpp:378 +#: eeschema/menubar.cpp:370 msgid "Place graphic lines or polygons" msgstr "Placer lignes ou polygones graphiques" -#: eeschema/menubar.cpp:385 +#: eeschema/menubar.cpp:377 msgid "Graphic text" msgstr "Texte graphique" -#: eeschema/menubar.cpp:386 +#: eeschema/menubar.cpp:378 msgid "Place graphic text for comment" msgstr "Placer textes graphiques en commentaire." -#: eeschema/menubar.cpp:400 +#: eeschema/menubar.cpp:392 msgid "Library preferences" msgstr "Préférences pour Librairie" -#: eeschema/menubar.cpp:405 +#: eeschema/menubar.cpp:397 msgid "&Colors" msgstr "&Couleurs" -#: eeschema/menubar.cpp:406 +#: eeschema/menubar.cpp:398 msgid "Color preferences" msgstr "Préférences de couleurs" -#: eeschema/menubar.cpp:411 +#: eeschema/menubar.cpp:403 msgid "&Options" msgstr "&Options" -#: eeschema/menubar.cpp:412 +#: eeschema/menubar.cpp:404 msgid "Eeschema general options and preferences" msgstr "Options et préférences générales de Eeschema" -#: eeschema/menubar.cpp:426 +#: eeschema/menubar.cpp:418 msgid "&Save preferences" msgstr "&Sauver Préférences" -#: eeschema/menubar.cpp:432 +#: eeschema/menubar.cpp:424 msgid "&Read preferences" msgstr "&Lire Préférences" -#: eeschema/menubar.cpp:444 +#: eeschema/menubar.cpp:436 msgid "Open the eeschema manual" msgstr "Ouvrir la documentation de eeschema" -#: eeschema/menubar.cpp:452 +#: eeschema/menubar.cpp:444 msgid "About eeschema schematic designer" msgstr "Au sujet de Eeschema (outil de conception schématique)" -#: eeschema/menubar.cpp:465 +#: eeschema/menubar.cpp:457 msgid "&Place" msgstr "&Placer" @@ -9519,10 +9568,6 @@ msgstr "Imprimer Tout" msgid "Current" msgstr "Courant" -#: eeschema/dialog_eeschema_config.cpp:224 -msgid "Library files:" -msgstr "Fichiers Librairies:" - #: eeschema/eelibs_read_libraryfiles.cpp:61 msgid "\n" msgstr "\n" @@ -10079,296 +10124,296 @@ msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enreg msgid "Done Loading " msgstr "Chargement terminé " -#: eeschema/onrightclick.cpp:117 +#: eeschema/onrightclick.cpp:108 msgid "Leave Sheet" msgstr "Quitter sous-feuille" -#: eeschema/onrightclick.cpp:132 +#: eeschema/onrightclick.cpp:123 msgid "Delete Noconn" msgstr "Supprimer Non Connexion" -#: eeschema/onrightclick.cpp:142 +#: eeschema/onrightclick.cpp:133 msgid "Move Bus Entry" msgstr "Déplacer Entrée de Bus" -#: eeschema/onrightclick.cpp:150 +#: eeschema/onrightclick.cpp:141 msgid "Set Bus Entry /" msgstr "Entrée de Bus /" -#: eeschema/onrightclick.cpp:153 +#: eeschema/onrightclick.cpp:144 msgid "Set Bus Entry \\" msgstr "Entrée de Bus \\" -#: eeschema/onrightclick.cpp:155 +#: eeschema/onrightclick.cpp:146 msgid "Delete Bus Entry" msgstr "Supprimer Entrée de Bus" -#: eeschema/onrightclick.cpp:252 +#: eeschema/onrightclick.cpp:243 msgid "Move Field" msgstr "Déplace Champ" -#: eeschema/onrightclick.cpp:258 +#: eeschema/onrightclick.cpp:249 msgid "Rotate Field" msgstr "Rotation Champ" -#: eeschema/onrightclick.cpp:263 +#: eeschema/onrightclick.cpp:254 msgid "Edit Field" msgstr "Editer Champ" -#: eeschema/onrightclick.cpp:291 +#: eeschema/onrightclick.cpp:282 msgid "Move Component" msgstr "Déplace Composant" -#: eeschema/onrightclick.cpp:296 +#: eeschema/onrightclick.cpp:287 msgid "Drag Component" msgstr "Drag Composant" -#: eeschema/onrightclick.cpp:309 +#: eeschema/onrightclick.cpp:300 msgid "Mirror --" msgstr "Miroir--" -#: eeschema/onrightclick.cpp:312 +#: eeschema/onrightclick.cpp:303 msgid "Mirror ||" msgstr "Miroir ||" -#: eeschema/onrightclick.cpp:320 +#: eeschema/onrightclick.cpp:311 msgid "Orient Component" msgstr "Oriente Composant" -#: eeschema/onrightclick.cpp:338 +#: eeschema/onrightclick.cpp:329 msgid "Footprint " msgstr "Empreinte: " -#: eeschema/onrightclick.cpp:354 +#: eeschema/onrightclick.cpp:345 #, c-format msgid "Unit %d %c" msgstr "Unité %d %c" -#: eeschema/onrightclick.cpp:366 +#: eeschema/onrightclick.cpp:357 msgid "Edit Component" msgstr "Edite Composant" -#: eeschema/onrightclick.cpp:370 +#: eeschema/onrightclick.cpp:361 msgid "Copy Component" msgstr "Copie Composant" -#: eeschema/onrightclick.cpp:394 +#: eeschema/onrightclick.cpp:385 msgid "Move Global Label" msgstr "Déplacer Label Global" -#: eeschema/onrightclick.cpp:398 +#: eeschema/onrightclick.cpp:389 msgid "Copy Global Label" msgstr "Copier Label Global" -#: eeschema/onrightclick.cpp:404 +#: eeschema/onrightclick.cpp:395 msgid "Rotate Global Label" msgstr "Rot. Label Global" -#: eeschema/onrightclick.cpp:408 +#: eeschema/onrightclick.cpp:399 msgid "Edit Global Label" msgstr "Editer Label Global" -#: eeschema/onrightclick.cpp:412 +#: eeschema/onrightclick.cpp:403 msgid "Delete Global Label" msgstr "Supprimer Label Global" -#: eeschema/onrightclick.cpp:419 -#: eeschema/onrightclick.cpp:506 -#: eeschema/onrightclick.cpp:557 +#: eeschema/onrightclick.cpp:410 +#: eeschema/onrightclick.cpp:497 +#: eeschema/onrightclick.cpp:548 msgid "Change to Hierarchical Label" msgstr "Changer en Label Hiérarchique" -#: eeschema/onrightclick.cpp:421 -#: eeschema/onrightclick.cpp:463 -#: eeschema/onrightclick.cpp:554 +#: eeschema/onrightclick.cpp:412 +#: eeschema/onrightclick.cpp:454 +#: eeschema/onrightclick.cpp:545 msgid "Change to Label" msgstr "Change en Label" -#: eeschema/onrightclick.cpp:423 -#: eeschema/onrightclick.cpp:465 -#: eeschema/onrightclick.cpp:508 +#: eeschema/onrightclick.cpp:414 +#: eeschema/onrightclick.cpp:456 +#: eeschema/onrightclick.cpp:499 msgid "Change to Text" msgstr "Change en Texte" -#: eeschema/onrightclick.cpp:426 -#: eeschema/onrightclick.cpp:470 -#: eeschema/onrightclick.cpp:513 -#: eeschema/onrightclick.cpp:564 +#: eeschema/onrightclick.cpp:417 +#: eeschema/onrightclick.cpp:461 +#: eeschema/onrightclick.cpp:504 +#: eeschema/onrightclick.cpp:555 msgid "Change Type" msgstr "Change Type" -#: eeschema/onrightclick.cpp:437 +#: eeschema/onrightclick.cpp:428 msgid "Move Hierarchical Label" msgstr "Déplacer Label Hiérarchique" -#: eeschema/onrightclick.cpp:442 +#: eeschema/onrightclick.cpp:433 msgid "Copy Hierarchical Label" msgstr "Copier Label Hiérarchique" -#: eeschema/onrightclick.cpp:448 -#: eeschema/onrightclick.cpp:451 +#: eeschema/onrightclick.cpp:439 +#: eeschema/onrightclick.cpp:442 msgid "Rotate Hierarchical Label" msgstr "Rot. Label Hiérarchique" -#: eeschema/onrightclick.cpp:452 -#: eeschema/onrightclick.cpp:455 +#: eeschema/onrightclick.cpp:443 +#: eeschema/onrightclick.cpp:446 msgid "Edit Hierarchical Label" msgstr "Editer Label Hiérarchique" -#: eeschema/onrightclick.cpp:456 +#: eeschema/onrightclick.cpp:447 msgid "Delete Hierarchical Label" msgstr "Supprimer Label Hiérarchique" -#: eeschema/onrightclick.cpp:467 -#: eeschema/onrightclick.cpp:510 +#: eeschema/onrightclick.cpp:458 +#: eeschema/onrightclick.cpp:501 msgid "Change to Global Label" msgstr "Change en Label Global" -#: eeschema/onrightclick.cpp:481 +#: eeschema/onrightclick.cpp:472 msgid "Move Label" msgstr "Déplace Label" -#: eeschema/onrightclick.cpp:485 +#: eeschema/onrightclick.cpp:476 msgid "Copy Label" msgstr "Copier Label" -#: eeschema/onrightclick.cpp:491 +#: eeschema/onrightclick.cpp:482 msgid "Rotate Label" msgstr "Rot. Label" -#: eeschema/onrightclick.cpp:495 +#: eeschema/onrightclick.cpp:486 msgid "Edit Label" msgstr "Editer Label" -#: eeschema/onrightclick.cpp:499 +#: eeschema/onrightclick.cpp:490 msgid "Delete Label" msgstr "Supprimer Label" -#: eeschema/onrightclick.cpp:524 +#: eeschema/onrightclick.cpp:515 msgid "Move Text" msgstr "Déplacer Texte" -#: eeschema/onrightclick.cpp:529 +#: eeschema/onrightclick.cpp:520 msgid "Copy Text" msgstr "CopierTexte" -#: eeschema/onrightclick.cpp:539 +#: eeschema/onrightclick.cpp:530 msgid "Edit Text" msgstr "Editer Texte" -#: eeschema/onrightclick.cpp:543 +#: eeschema/onrightclick.cpp:534 msgid "Delete Text" msgstr "Effacer Texte" -#: eeschema/onrightclick.cpp:561 +#: eeschema/onrightclick.cpp:552 msgid "Change to Glabel" msgstr "Change en Label Global" -#: eeschema/onrightclick.cpp:580 -#: eeschema/onrightclick.cpp:627 +#: eeschema/onrightclick.cpp:571 +#: eeschema/onrightclick.cpp:618 msgid "Break Wire" msgstr "Briser Fil" -#: eeschema/onrightclick.cpp:583 +#: eeschema/onrightclick.cpp:574 msgid "Delete Junction" msgstr "Supprimer Jonction" -#: eeschema/onrightclick.cpp:592 -#: eeschema/onrightclick.cpp:620 +#: eeschema/onrightclick.cpp:583 +#: eeschema/onrightclick.cpp:611 msgid "Delete Node" msgstr "Supprimer Noeud" -#: eeschema/onrightclick.cpp:594 -#: eeschema/onrightclick.cpp:623 +#: eeschema/onrightclick.cpp:585 +#: eeschema/onrightclick.cpp:614 msgid "Delete Connection" msgstr "Supprimer Connexion" -#: eeschema/onrightclick.cpp:608 +#: eeschema/onrightclick.cpp:599 msgid "Wire End" msgstr "Terminer Fil" -#: eeschema/onrightclick.cpp:612 +#: eeschema/onrightclick.cpp:603 msgid "Drag Wire" msgstr "Drag Fil" -#: eeschema/onrightclick.cpp:617 +#: eeschema/onrightclick.cpp:608 msgid "Delete Wire" msgstr "Supprimer Fil" -#: eeschema/onrightclick.cpp:641 -#: eeschema/onrightclick.cpp:673 +#: eeschema/onrightclick.cpp:632 +#: eeschema/onrightclick.cpp:664 msgid "Add Global Label" msgstr "Ajout Label Global" -#: eeschema/onrightclick.cpp:653 +#: eeschema/onrightclick.cpp:644 msgid "Bus End" msgstr "Terminer Bus" -#: eeschema/onrightclick.cpp:657 +#: eeschema/onrightclick.cpp:648 msgid "Delete Bus" msgstr "Supprimer Bus" -#: eeschema/onrightclick.cpp:660 +#: eeschema/onrightclick.cpp:651 msgid "Break Bus" msgstr "Briser Bus" -#: eeschema/onrightclick.cpp:684 +#: eeschema/onrightclick.cpp:675 msgid "Enter Sheet" msgstr "Entrer dans Feuille" -#: eeschema/onrightclick.cpp:686 +#: eeschema/onrightclick.cpp:677 msgid "Move Sheet" msgstr "Déplacer Feuille" -#: eeschema/onrightclick.cpp:694 +#: eeschema/onrightclick.cpp:685 msgid "Place Sheet" msgstr "Placer Feuille" -#: eeschema/onrightclick.cpp:699 +#: eeschema/onrightclick.cpp:690 msgid "Edit Sheet" msgstr "Editer Feuille" -#: eeschema/onrightclick.cpp:705 +#: eeschema/onrightclick.cpp:696 msgid "Resize Sheet" msgstr "Redimensionner Feuille" -#: eeschema/onrightclick.cpp:708 +#: eeschema/onrightclick.cpp:699 msgid "Import PinSheets" msgstr "Importer Connecteur de Hiérarchie" -#: eeschema/onrightclick.cpp:712 +#: eeschema/onrightclick.cpp:703 msgid "Cleanup PinSheets" msgstr "Nettoyage des Pins Hiérarchiques" -#: eeschema/onrightclick.cpp:714 +#: eeschema/onrightclick.cpp:705 msgid "Delete Sheet" msgstr "Supprimer Feuille" -#: eeschema/onrightclick.cpp:725 +#: eeschema/onrightclick.cpp:716 msgid "Move PinSheet" msgstr "Déplace Connecteur de hiérarchie" -#: eeschema/onrightclick.cpp:731 +#: eeschema/onrightclick.cpp:722 msgid "Edit PinSheet" msgstr "Edit Connecteur de hiérarchie" -#: eeschema/onrightclick.cpp:735 +#: eeschema/onrightclick.cpp:726 msgid "Delete PinSheet" msgstr "Supprimer Connecteur de hiérarchie" -#: eeschema/onrightclick.cpp:748 +#: eeschema/onrightclick.cpp:739 msgid "Window Zoom" msgstr "Zoom sur Fenètre" -#: eeschema/onrightclick.cpp:757 +#: eeschema/onrightclick.cpp:748 msgid "Save Block" msgstr "Sauver Bloc" -#: eeschema/onrightclick.cpp:760 +#: eeschema/onrightclick.cpp:751 msgid "Drag Block" msgstr "Drag Bloc" -#: eeschema/onrightclick.cpp:770 +#: eeschema/onrightclick.cpp:761 msgid "Copy to Clipboard" msgstr "Copie dans Presse papier" @@ -10456,6 +10501,10 @@ msgstr "Remplissage en &avant plan" msgid "Fill &background" msgstr "Remplissage en a&rriere plan" +#: eeschema/dialog_eeschema_config.cpp:224 +msgid "Library files:" +msgstr "Fichiers Librairies:" + #: eeschema/dialog_eeschema_options_base.cpp:34 msgid "Mesurement &units:" msgstr "&Unités de mesure:" @@ -12133,14 +12182,6 @@ msgstr "MIME type inconnu pour fichier Doc <%s>" msgid "??? Via" msgstr "??? Via" -#: common/pcbcommon.cpp:64 -msgid "Blind/Buried Via" -msgstr "Via Aveugle/Enterrée" - -#: common/pcbcommon.cpp:66 -msgid "Through Via" -msgstr "Via Traversante" - #: common/pcbcommon.cpp:84 msgid "Kicad footprint library files (*.mod)|*.mod" msgstr "Fichiers Modules Kicad (*.mod)|*.mod" @@ -12323,7 +12364,7 @@ msgstr "??" msgid "Load Error!" msgstr "Erreur de Chargement!" -#: common/hotkeys_basic.cpp:316 +#: common/hotkeys_basic.cpp:349 msgid "" "Current hotkey list:\n" "\n" @@ -12331,87 +12372,87 @@ msgstr "" "Liste des Hotkeys courantes:\n" "\n" -#: common/hotkeys_basic.cpp:324 +#: common/hotkeys_basic.cpp:357 msgid "key " msgstr "touche: " -#: common/hotkeys_basic.cpp:377 +#: common/hotkeys_basic.cpp:410 msgid "Save Hotkey Configuration File:" msgstr "Sauver Fichier Configuration des Hotkeys:" -#: common/hotkeys_basic.cpp:409 +#: common/hotkeys_basic.cpp:442 msgid "Allowed keys:\n" msgstr "Touches autorisées:\n" -#: common/hotkeys_basic.cpp:494 +#: common/hotkeys_basic.cpp:527 msgid "Open Hotkey Configuration File:" msgstr "Ouvrir Fichier Configuration des Hotkeys:" -#: common/hotkeys_basic.cpp:512 +#: common/hotkeys_basic.cpp:545 msgid "Unable to read " msgstr "Impossible de lire " -#: common/hotkeys_basic.cpp:629 +#: common/hotkeys_basic.cpp:663 msgid "List Current Keys" msgstr "Lister Touches Courantes" -#: common/hotkeys_basic.cpp:630 +#: common/hotkeys_basic.cpp:664 msgid "Displays the current hotkeys list and corresponding commands" msgstr "Afficher la liste des hotkeyc courante et les commandes correspondantes" -#: common/hotkeys_basic.cpp:636 +#: common/hotkeys_basic.cpp:670 msgid "(Re)create Hotkeys File" msgstr "(Re)créer Fichier Hotkeys" -#: common/hotkeys_basic.cpp:637 +#: common/hotkeys_basic.cpp:672 msgid "Create or recreate the hotkey configuration file from current hotkey list" msgstr "Créer ou recréer le fichier configuration des Hotkeys à partir de la liste courante" -#: common/hotkeys_basic.cpp:644 +#: common/hotkeys_basic.cpp:679 msgid "Reload Hotkeys File" msgstr "Relire Fichiers Hotkeys" -#: common/hotkeys_basic.cpp:645 +#: common/hotkeys_basic.cpp:680 msgid "Reload the hotkey configuration file" msgstr "Relire les fichiers configuration des hotkeys" -#: common/hotkeys_basic.cpp:651 +#: common/hotkeys_basic.cpp:686 msgid "Edit Hotkeys File" msgstr "Editer Fichier Hotkeys" -#: common/hotkeys_basic.cpp:652 +#: common/hotkeys_basic.cpp:687 msgid "Edit the hotkey configuration file in a text editor" msgstr "Editer les fichiers configuration des hotkeys" -#: common/hotkeys_basic.cpp:658 +#: common/hotkeys_basic.cpp:693 msgid "Hotkeys" msgstr "Hotkeys" -#: common/hotkeys_basic.cpp:659 +#: common/hotkeys_basic.cpp:694 msgid "Hotkeys configuration and preferences" msgstr "Options et préférences générales des hotkeys" -#: common/hotkeys_basic.cpp:667 +#: common/hotkeys_basic.cpp:702 msgid "Home directory" msgstr "Répertoire d'accueil (home)" -#: common/hotkeys_basic.cpp:668 +#: common/hotkeys_basic.cpp:703 msgid "Use home directory to load or store Hotkey config files" msgstr "Utiliser le répertoire d'accueil pour charger ou sauver les fichiers de config des Hotkeys" -#: common/hotkeys_basic.cpp:675 +#: common/hotkeys_basic.cpp:710 msgid "KiCad template directory" msgstr "kicad/template répertoire" -#: common/hotkeys_basic.cpp:676 +#: common/hotkeys_basic.cpp:711 msgid "Use kicad/template directory to load or store Hotkey config files" msgstr "Utiliser répertoire kicad/template pour charger ou sauver les fichiers de config des Hotkeys" -#: common/hotkeys_basic.cpp:682 +#: common/hotkeys_basic.cpp:717 msgid "Location" msgstr "Emplacement" -#: common/hotkeys_basic.cpp:683 +#: common/hotkeys_basic.cpp:718 msgid "Select hotkey configuration file location" msgstr "Sélectionner l'emplacement du fichier fonfiguration des hotkeys:" @@ -12737,10 +12778,6 @@ msgstr "Texte Module Dessus" msgid "Text Module invisible" msgstr "Texte Module invisible" -#: pcbnew/set_color.h:415 -msgid "Anchors" -msgstr "Ancres" - #: pcbnew/set_color.h:432 msgid "Show Noconnect" msgstr "Montrer Non Conn" @@ -13106,6 +13143,15 @@ msgstr "Options d'Affichage" msgid "Page Settings" msgstr "Ajustage opt Page" +#~ msgid "RED" +#~ msgstr "ROUGE" +#~ msgid "GREEN" +#~ msgstr "VERT" +#~ msgid "BROWN" +#~ msgstr "BRUN" +#~ msgid "BLUE" +#~ msgstr "BLEU" + #, fuzzy #~ msgid "Zoom Out\t" #~ msgstr "Zoom -" diff --git a/pcbnew/class_netinfo_item.cpp b/pcbnew/class_netinfo_item.cpp index efe009be8d..237a10cb3d 100644 --- a/pcbnew/class_netinfo_item.cpp +++ b/pcbnew/class_netinfo_item.cpp @@ -192,6 +192,7 @@ void RATSNEST_ITEM::Draw( WinEDA_DrawPanel* panel, int aDrawMode, const wxPoint& aOffset ) { + GRSetDrawMode( DC, aDrawMode ); GRLine( &panel->m_ClipBox, DC, m_PadStart->m_Pos - aOffset, m_PadEnd->m_Pos - aOffset, 0, g_DesignSettings.m_RatsnestColor ); } diff --git a/pcbnew/dialog_general_options.cpp b/pcbnew/dialog_general_options.cpp index ac1e07e138..69d9dea946 100644 --- a/pcbnew/dialog_general_options.cpp +++ b/pcbnew/dialog_general_options.cpp @@ -256,15 +256,25 @@ void WinEDA_PcbFrame::OnSelectOptionToolbar( wxCommandEvent& event ) break; case ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1: + m_show_microwave_tools = m_OptionsToolBar->GetToolState( id ); #if !defined(KICAD_AUIMANAGER) // show auxiliary Vertical toolbar (Microwave tool) - m_AuxVToolBar->Show(m_OptionsToolBar->GetToolState( id )); + m_AuxVToolBar->Show(m_show_microwave_tools); { wxSizeEvent SizeEv( GetSize() ); OnSize( SizeEv ); } #else - m_auimgr.GetPane( wxT( "m_AuxVToolBar" ) ).Show( m_OptionsToolBar->GetToolState( id ) ); + m_auimgr.GetPane( wxT( "m_AuxVToolBar" ) ).Show( m_show_microwave_tools ); + m_auimgr.Update(); +#endif + break; + + case ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR: +#if defined(KICAD_AUIMANAGER) + // show auxiliary Vertical layers and visibility manager toolbar + m_show_layer_manager_tools = m_OptionsToolBar->GetToolState( id ); + m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools ); m_auimgr.Update(); #endif break; diff --git a/pcbnew/editrack.cpp b/pcbnew/editrack.cpp index 356db2cbfc..cc6f811504 100644 --- a/pcbnew/editrack.cpp +++ b/pcbnew/editrack.cpp @@ -495,7 +495,7 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) TRACK* firstTrack = g_FirstTrackSegment; int newCount = g_CurrentTrackList.GetCount(); - // Put entire new current segment list in BOARD, ans prepare undo + // Put entire new current segment list in BOARD, and prepare undo // command TRACK* track; TRACK* insertBeforeMe = g_CurrentTrackSegment->GetBestInsertPoint( @@ -526,10 +526,8 @@ void WinEDA_PcbFrame::End_Route( TRACK* aTrack, wxDC* DC ) SaveCopyInUndoList( s_ItemsListPicker, UR_UNSPECIFIED ); s_ItemsListPicker.ClearItemsList(); // s_ItemsListPicker is no more // owner of picked items - /* compute the new rastnest */ test_1_net_connexion( DC, netcode ); - GetScreen()->SetModify(); GetBoard()->DisplayInfo( this ); } diff --git a/pcbnew/layer_widget.cpp b/pcbnew/layer_widget.cpp index 67d1225a94..95cdce9313 100644 --- a/pcbnew/layer_widget.cpp +++ b/pcbnew/layer_widget.cpp @@ -718,7 +718,7 @@ class MYFRAME : public wxFrame public: MYFRAME( wxWindow * parent ) : - wxFrame( parent, -1, _( "wxAUI Test" ), wxDefaultPosition, + wxFrame( parent, -1, wxT( "wxAUI Test" ), wxDefaultPosition, wxSize( 800, 600 ), wxDEFAULT_FRAME_STYLE ) { // notify wxAUI which frame to use @@ -728,19 +728,19 @@ public: // add some layer rows static const LAYER_WIDGET::ROW layerRows[] = { - LAYER_WIDGET::ROW( wxT("layer 1"), 0, RED, _("RED"), false ), - LAYER_WIDGET::ROW( wxT("layer 2"), 1, GREEN, _("GREEN"), true ), - LAYER_WIDGET::ROW( wxT("brown_layer"), 2, BROWN, _("BROWN"), true ), - LAYER_WIDGET::ROW( wxT("layer_4_you"), 3, BLUE, _("BLUE"), false ), + LAYER_WIDGET::ROW( wxT("layer 1"), 0, RED, wxT("RED"), false ), + LAYER_WIDGET::ROW( wxT("layer 2"), 1, GREEN, wxT("GREEN"), true ), + LAYER_WIDGET::ROW( wxT("brown_layer"), 2, BROWN, wxT("BROWN"), true ), + LAYER_WIDGET::ROW( wxT("layer_4_you"), 3, BLUE, wxT("BLUE"), false ), }; lw->AppendLayerRows( layerRows, DIM(layerRows) ); // add some render rows static const LAYER_WIDGET::ROW renderRows[] = { - LAYER_WIDGET::ROW( wxT("With Very Large Ears"), 0, -1, _("Spock here") ), + LAYER_WIDGET::ROW( wxT("With Very Large Ears"), 0, -1, wxT("Spock here") ), LAYER_WIDGET::ROW( wxT("With Legs"), 1, YELLOW ), - LAYER_WIDGET::ROW( wxT("With Oval Eyes"), 1, BROWN, _("My eyes are upon you") ), + LAYER_WIDGET::ROW( wxT("With Oval Eyes"), 1, BROWN, wxT("My eyes are upon you") ), }; lw->AppendRenderRows( renderRows, DIM(renderRows) ); @@ -758,12 +758,12 @@ public: m_mgr.AddPane( lw, li ); - wxTextCtrl* text2 = new wxTextCtrl( this, -1, _( "Pane 2 - sample text" ), + wxTextCtrl* text2 = new wxTextCtrl( this, -1, wxT( "Pane 2 - sample text" ), wxDefaultPosition, wxSize( 200, 150 ), wxNO_BORDER | wxTE_MULTILINE ); m_mgr.AddPane( text2, wxBOTTOM, wxT( "Pane Number Two" ) ); - wxTextCtrl* text3 = new wxTextCtrl( this, -1, _( "Main content window" ), + wxTextCtrl* text3 = new wxTextCtrl( this, -1, wxT( "Main content window" ), wxDefaultPosition, wxSize( 200, 150 ), wxNO_BORDER | wxTE_MULTILINE ); m_mgr.AddPane( text3, wxCENTER ); diff --git a/pcbnew/pcbframe.cpp b/pcbnew/pcbframe.cpp index 67bc366c22..c19088ec94 100644 --- a/pcbnew/pcbframe.cpp +++ b/pcbnew/pcbframe.cpp @@ -23,7 +23,7 @@ #define PCB_MAGNETIC_PADS_OPT wxT( "PcbMagPadOpt" ) #define PCB_MAGNETIC_TRACKS_OPT wxT( "PcbMagTrackOpt" ) #define SHOW_MICROWAVE_TOOLS wxT( "ShowMicrowaveTools" ) - +#define SHOW_LAYER_MANAGER_TOOLS wxT( "ShowLayerManagerTools" ) BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame ) EVT_SOCKET( ID_EDA_SOCKET_EVENT_SERV, WinEDA_PcbFrame::OnSockRequestServer ) @@ -153,6 +153,8 @@ BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame ) // Option toolbar EVT_TOOL_RANGE( ID_TB_OPTIONS_START, ID_TB_OPTIONS_END, WinEDA_PcbFrame::OnSelectOptionToolbar ) + EVT_TOOL( ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR, + WinEDA_PcbFrame::OnSelectOptionToolbar) // Vertical toolbar: EVT_TOOL( ID_NO_SELECT_BUTT, WinEDA_PcbFrame::Process_Special_Functions ) @@ -241,6 +243,7 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, m_SelLayerBox = NULL; m_TrackAndViasSizesList_Changed = false; m_show_microwave_tools = false; + m_show_layer_manager_tools = true; m_Layers = new LYRS( this ); m_Layers->AppendRenderRows( renderRows, DIM(renderRows) ); @@ -320,11 +323,16 @@ WinEDA_PcbFrame::WinEDA_PcbFrame( wxWindow* father, m_auimgr.AddPane( m_VToolBar, wxAuiPaneInfo( vert ).Name( wxT( "m_VToolBar" ) ).Right().Row( 1 ) ); - m_auimgr.AddPane( m_Layers, lyrs.Right().Row( 0 ) ); + m_auimgr.AddPane( m_Layers, lyrs.Name( wxT( "m_LayersManagerToolBar" ) ).Right().Row( 0 ) ); if( m_OptionsToolBar ) + { m_auimgr.AddPane( m_OptionsToolBar, wxAuiPaneInfo( vert ).Name( wxT( "m_OptionsToolBar" ) ).Left() ); + m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR, + m_show_layer_manager_tools ); + m_auimgr.GetPane( wxT( "m_LayersManagerToolBar" ) ).Show( m_show_layer_manager_tools ); + } if( DrawPanel ) m_auimgr.AddPane( DrawPanel, @@ -531,6 +539,7 @@ void WinEDA_PcbFrame::LoadSettings() config->Read( PCB_MAGNETIC_PADS_OPT, &g_MagneticPadOption ); config->Read( PCB_MAGNETIC_TRACKS_OPT, &g_MagneticTrackOption ); config->Read( SHOW_MICROWAVE_TOOLS, &m_show_microwave_tools ); + config->Read( SHOW_LAYER_MANAGER_TOOLS, &m_show_layer_manager_tools ); } @@ -547,5 +556,8 @@ void WinEDA_PcbFrame::SaveSettings() config->Write( PCB_MAGNETIC_PADS_OPT, (long) g_MagneticPadOption ); config->Write( PCB_MAGNETIC_TRACKS_OPT, (long) g_MagneticTrackOption ); - config->Write( SHOW_MICROWAVE_TOOLS, ( m_AuxVToolBar && m_AuxVToolBar->IsShown() ) ? true : false ); + config->Write( SHOW_MICROWAVE_TOOLS, + ( m_AuxVToolBar && m_AuxVToolBar->IsShown() ) ? true : false ); + config->Write( SHOW_LAYER_MANAGER_TOOLS, (long)m_show_layer_manager_tools ); + } diff --git a/pcbnew/pcbnew_id.h b/pcbnew/pcbnew_id.h index 7124fc17e2..6fba05f81e 100644 --- a/pcbnew/pcbnew_id.h +++ b/pcbnew/pcbnew_id.h @@ -231,6 +231,17 @@ enum pcbnew_ids ID_PCB_GEN_BOM_FILE_FROM_BOARD, ID_MENU_PCB_SHOW_DESIGN_RULES_DIALOG, + ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR, + + ID_PCB_MUWAVE_START_CMD, + ID_PCB_MUWAVE_TOOL_DISPLAY_TOOLS, + ID_PCB_MUWAVE_TOOL_SELF_CMD, + ID_PCB_MUWAVE_TOOL_GAP_CMD, + ID_PCB_MUWAVE_TOOL_STUB_CMD, + ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD, + ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD, + ID_PCB_MUWAVE_END_CMD, + ID_MODEDIT_CHECK, ID_MODEDIT_SELECT_CURRENT_LIB, ID_MODEDIT_SAVE_LIBMODULE, @@ -251,16 +262,7 @@ enum pcbnew_ids ID_MODEDIT_MODULE_MIRROR, ID_MODEDIT_IMPORT_PART, ID_MODEDIT_EXPORT_PART, - ID_MODEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, - - ID_PCB_MUWAVE_START_CMD, - ID_PCB_MUWAVE_TOOL_DISPLAY_TOOLS, - ID_PCB_MUWAVE_TOOL_SELF_CMD, - ID_PCB_MUWAVE_TOOL_GAP_CMD, - ID_PCB_MUWAVE_TOOL_STUB_CMD, - ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD, - ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD, - ID_PCB_MUWAVE_END_CMD + ID_MODEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART }; #endif /* __PCBNEW_IDS_H__ */ diff --git a/pcbnew/ratsnest.cpp b/pcbnew/ratsnest.cpp index ee5bf62a17..65b8ccfb18 100644 --- a/pcbnew/ratsnest.cpp +++ b/pcbnew/ratsnest.cpp @@ -529,18 +529,17 @@ void WinEDA_BasePcbFrame::DrawGeneralRatsnest( wxDC* DC, int net_code ) return; if( DC == NULL ) return; - + int state = CH_VISIBLE | CH_ACTIF; for( unsigned ii = 0; ii < m_Pcb->GetRatsnestsCount(); ii++ ) { - if( ( m_Pcb->m_FullRatsnest[ii].m_Status & - ( CH_VISIBLE | CH_ACTIF ) ) != - ( CH_VISIBLE | CH_ACTIF ) ) + RATSNEST_ITEM& item = m_Pcb->m_FullRatsnest[ii]; + if( ( item.m_Status & state ) != state ) continue; - if( ( net_code <= 0 ) - || ( net_code == m_Pcb->m_FullRatsnest[ii].GetNet() ) ) - m_Pcb->m_FullRatsnest[ii].Draw( DrawPanel, DC, GR_XOR, - wxPoint( 0, 0 ) ); + if( ( net_code <= 0 ) || ( net_code == item.GetNet() ) ) + { + item.Draw( DrawPanel, DC, GR_XOR, wxPoint( 0, 0 ) ); + } } } diff --git a/pcbnew/tool_pcb.cpp b/pcbnew/tool_pcb.cpp index ecdf4e5643..947813f5eb 100644 --- a/pcbnew/tool_pcb.cpp +++ b/pcbnew/tool_pcb.cpp @@ -24,15 +24,14 @@ #include "hotkeys.h" -#define MUWAVE_ENBL - #define SEL_LAYER_HELP _( \ "Show active layer selections\nand select layer pair for route and place via" ) /* Data to build the layer pair indicator button */ static wxBitmap* LayerPairBitmap = NULL; -static const char s_BitmapLayerIcon[16][16] = { +static const char s_BitmapLayerIcon[16][16] = +{ // 0 = draw pixel with active layer color // 1 = draw pixel with top layer color (top/bottom layer used in // autoroute and place via) @@ -70,19 +69,22 @@ void WinEDA_PcbFrame::PrepareLayerIndicator() previous_Route_Layer_BOTTOM_color, previous_via_color; /* get colors, and redraw bitmap button only on changes */ - active_layer_color = g_DesignSettings.m_LayerColor[((PCB_SCREEN*)GetScreen())->m_Active_Layer]; + active_layer_color = + g_DesignSettings.m_LayerColor[( (PCB_SCREEN*) GetScreen() )->m_Active_Layer]; if( previous_active_layer_color != active_layer_color ) { previous_active_layer_color = active_layer_color; change = true; } - Route_Layer_TOP_color = g_DesignSettings.m_LayerColor[((PCB_SCREEN*)GetScreen())->m_Route_Layer_TOP]; + 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; } - Route_Layer_BOTTOM_color = g_DesignSettings.m_LayerColor[((PCB_SCREEN*)GetScreen())->m_Route_Layer_BOTTOM]; + 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; @@ -177,7 +179,7 @@ void WinEDA_PcbFrame::PrepareLayerIndicator() /* Creates or updates the main horizontal toolbar for the board editor -*/ + */ void WinEDA_PcbFrame::ReCreateHToolbar() { wxString msg; @@ -192,48 +194,49 @@ void WinEDA_PcbFrame::ReCreateHToolbar() m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, true ); m_HToolBar->SetRows( 1 ); #if !defined(KICAD_AUIMANAGER) - SetToolBar( (wxToolBar*)m_HToolBar ); + SetToolBar( (wxToolBar*) m_HToolBar ); #endif + // Set up toolbar m_HToolBar->AddTool( ID_NEW_BOARD, wxEmptyString, wxBitmap( new_xpm ), - _( "New board" ) ); + _( "New board" ) ); m_HToolBar->AddTool( ID_LOAD_FILE, wxEmptyString, wxBitmap( open_xpm ), - _( "Open existing board" ) ); + _( "Open existing board" ) ); m_HToolBar->AddTool( ID_SAVE_BOARD, wxEmptyString, wxBitmap( save_xpm ), - _( "Save board" ) ); + _( "Save board" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_SHEET_SET, wxEmptyString, wxBitmap( sheetset_xpm ), - _( "Page settings (size, texts)" ) ); + _( "Page settings (size, texts)" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_OPEN_MODULE_EDITOR, wxEmptyString, - wxBitmap( modedit_xpm ), - _( "Open module editor" ) ); + wxBitmap( modedit_xpm ), + _( "Open module editor" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( wxID_CUT, wxEmptyString, wxBitmap( cut_button ), - _( "Cut selected item" ) ); + _( "Cut selected item" ) ); #if 0 m_HToolBar->AddTool( wxID_COPY, wxEmptyString, wxBitmap( copy_button ), - _( "Copy selected item" ) ); + _( "Copy selected item" ) ); m_HToolBar->AddTool( wxID_PASTE, wxEmptyString, wxBitmap( paste_xpm ), - _( "Paste" ) ); + _( "Paste" ) ); #endif m_HToolBar->AddSeparator(); m_HToolBar->AddTool( wxID_UNDO, wxEmptyString, wxBitmap( undo_xpm ), - _( "Undo last edition" ) ); + _( "Undo last edition" ) ); m_HToolBar->AddTool( wxID_REDO, wxEmptyString, wxBitmap( redo_xpm ), - _( "Redo the last undo command" ) ); + _( "Redo the last undo command" ) ); m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_GEN_PRINT, wxEmptyString, wxBitmap( print_button ), - _( "Print board" ) ); + _( "Print board" ) ); m_HToolBar->AddTool( ID_GEN_PLOT, wxEmptyString, wxBitmap( plot_xpm ), - _( "Plot (HPGL, PostScript, or GERBER format)" ) ); + _( "Plot (HPGL, PostScript, or GERBER format)" ) ); m_HToolBar->AddSeparator(); msg = AddHotkeyName( _( "Zoom in" ), s_Board_Editor_Hokeys_Descr, @@ -265,9 +268,9 @@ void WinEDA_PcbFrame::ReCreateHToolbar() m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, wxBitmap( netlist_xpm ), - _( "Read netlist" ) ); + _( "Read netlist" ) ); m_HToolBar->AddTool( ID_DRC_CONTROL, wxEmptyString, wxBitmap( erc_xpm ), - _( "Perform design rules check" ) ); + _( "Perform design rules check" ) ); m_HToolBar->AddSeparator(); @@ -289,8 +292,8 @@ void WinEDA_PcbFrame::ReCreateHToolbar() // Fast call to FreeROUTE Web Bases router m_HToolBar->AddSeparator(); m_HToolBar->AddTool( ID_TOOLBARH_PCB_FREEROUTE_ACCESS, wxEmptyString, - wxBitmap( web_support_xpm ), - _( "Fast access to theWeb Based FreeROUTE advanced router" ) ); + wxBitmap( web_support_xpm ), + _( "Fast access to theWeb Based FreeROUTE advanced router" ) ); // after adding the buttons to the toolbar, must call Realize() to reflect // the changes @@ -345,18 +348,18 @@ void WinEDA_PcbFrame::ReCreateOptToolbar() m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddRadioTool( ID_TB_OPTIONS_SHOW_ZONES, wxEmptyString, - wxBitmap( show_zone_xpm ), wxNullBitmap, - _( "Show filled areas in zones" ) ); + wxBitmap( show_zone_xpm ), wxNullBitmap, + _( "Show filled areas in zones" ) ); m_OptionsToolBar->AddRadioTool( ID_TB_OPTIONS_SHOW_ZONES_DISABLE, - wxEmptyString, - wxBitmap( show_zone_disable_xpm ), - wxNullBitmap, - _( "Do not show filled areas in zones" )); + wxEmptyString, + wxBitmap( show_zone_disable_xpm ), + wxNullBitmap, + _( "Do not show filled areas in zones" ) ); m_OptionsToolBar->AddRadioTool( ID_TB_OPTIONS_SHOW_ZONES_OUTLINES_ONLY, - wxEmptyString, - wxBitmap( show_zone_outline_only_xpm ), - wxNullBitmap, - _( "Show outlines of filled areas only in zones" ) ); + wxEmptyString, + wxBitmap( show_zone_outline_only_xpm ), + wxNullBitmap, + _( "Show outlines of filled areas only in zones" ) ); m_OptionsToolBar->AddSeparator(); m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString, @@ -385,17 +388,23 @@ void WinEDA_PcbFrame::ReCreateOptToolbar() _( "Show invisible text" ), wxITEM_CHECK ); m_OptionsToolBar->ToggleTool( ID_TB_OPTIONS_SHOW_INVISIBLE_TEXT_MODE, - g_DesignSettings.IsElementVisible( MODULE_TEXT_NOV_VISIBLE )); + g_DesignSettings.IsElementVisible( MODULE_TEXT_NOV_VISIBLE ) ); -#ifdef MUWAVE_ENBL m_OptionsToolBar->AddSeparator(); + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MANAGE_LAYERS_VERTICAL_TOOLBAR, + wxEmptyString, + wxBitmap( layers_manager_xpm ), + _( + "Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n This is a experimental feature (under development)" ), + wxITEM_CHECK ); + m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_EXTRA_VERTICAL_TOOLBAR1, wxEmptyString, wxBitmap( mw_toolbar_xpm ), - _( "Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n This is a experimental feature (under development)" ), + _( + "Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n This is a experimental feature (under development)" ), wxITEM_CHECK ); -#endif m_OptionsToolBar->Realize(); SetToolbars(); @@ -494,18 +503,18 @@ void WinEDA_PcbFrame::ReCreateAuxVToolbar() // Set up toolbar m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_SELF_CMD, wxEmptyString, - wxBitmap( mw_Add_Line_xpm ), - _( "Create line of specified length for microwave applications" ) ); + wxBitmap( mw_Add_Line_xpm ), + _( "Create line of specified length for microwave applications" ) ); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_GAP_CMD, wxEmptyString, - wxBitmap( mw_Add_Gap_xpm ), - _( "Create gap of specified length for microwave applications" ) ); + wxBitmap( mw_Add_Gap_xpm ), + _( "Create gap of specified length for microwave applications" ) ); m_AuxVToolBar->AddSeparator(); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_STUB_CMD, wxEmptyString, - wxBitmap( mw_Add_Stub_xpm ), - _( "Create stub of specified length for microwave applications" ) ); + wxBitmap( mw_Add_Stub_xpm ), + _( "Create stub of specified length for microwave applications" ) ); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD, wxEmptyString, wxBitmap( mw_Add_stub_arc_xpm ), @@ -513,8 +522,8 @@ void WinEDA_PcbFrame::ReCreateAuxVToolbar() ); m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD, wxEmptyString, - wxBitmap( mw_Add_Shape_xpm ), - _( "Create a polynomial shape for microwave applications" ) ); + wxBitmap( mw_Add_Shape_xpm ), + _( "Create a polynomial shape for microwave applications" ) ); m_AuxVToolBar->Realize(); @@ -547,17 +556,17 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() // Creates box to display and choose tracks widths: m_SelTrackWidthBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_AUX_TOOLBAR_PCB_TRACK_WIDTH, - wxPoint( -1, -1 ), - wxSize( LISTBOX_WIDTH, -1 ) ); + ID_AUX_TOOLBAR_PCB_TRACK_WIDTH, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelTrackWidthBox ); m_AuxiliaryToolBar->AddSeparator(); // Creates box to display and choose vias diameters: m_SelViaSizeBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_AUX_TOOLBAR_PCB_VIA_SIZE, - wxPoint( -1, -1 ), - wxSize( (LISTBOX_WIDTH*12)/10, -1 ) ); + ID_AUX_TOOLBAR_PCB_VIA_SIZE, + wxPoint( -1, -1 ), + wxSize( (LISTBOX_WIDTH * 12) / 10, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelViaSizeBox ); m_AuxiliaryToolBar->AddSeparator(); @@ -566,7 +575,7 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() wxEmptyString, wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH + 10, -1 ), wxTE_READONLY ); - m_ClearanceBox->SetToolTip(_("Current NetClass clearance value") ); + m_ClearanceBox->SetToolTip( _( "Current NetClass clearance value" ) ); m_AuxiliaryToolBar->AddControl( m_ClearanceBox ); m_AuxiliaryToolBar->AddSeparator(); @@ -575,7 +584,7 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() wxEmptyString, wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH, -1 ), wxTE_READONLY ); - m_NetClassSelectedBox->SetToolTip(_("Name of the current NetClass") ); + m_NetClassSelectedBox->SetToolTip( _( "Name of the current NetClass" ) ); m_AuxiliaryToolBar->AddControl( m_NetClassSelectedBox ); m_AuxiliaryToolBar->AddSeparator(); @@ -584,36 +593,37 @@ void WinEDA_PcbFrame::ReCreateAuxiliaryToolbar() m_AuxiliaryToolBar->AddTool( ID_AUX_TOOLBAR_PCB_SELECT_AUTO_WIDTH, wxEmptyString, wxBitmap( auto_track_width_xpm ), - _( "Auto track width: when starting on \ -an existing track use its width\notherwise, use current width setting" ), + _( + "Auto track width: when starting on \ +an existing track use its width\notherwise, use current width setting" ), wxITEM_CHECK ); // Add the box to display and select the current grid size: m_AuxiliaryToolBar->AddSeparator(); m_SelGridBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_ON_GRID_SELECT, - wxPoint( -1, -1 ), - wxSize( LISTBOX_WIDTH, -1 ) ); + ID_ON_GRID_SELECT, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH, -1 ) ); m_AuxiliaryToolBar->AddControl( m_SelGridBox ); // Add the box to display and select the current Zoom m_AuxiliaryToolBar->AddSeparator(); m_SelZoomBox = new WinEDAChoiceBox( m_AuxiliaryToolBar, - ID_ON_ZOOM_SELECT, - wxPoint( -1, -1 ), - wxSize( LISTBOX_WIDTH, -1 ) ); + ID_ON_ZOOM_SELECT, + wxPoint( -1, -1 ), + wxSize( LISTBOX_WIDTH, -1 ) ); msg = _( "Auto" ); m_SelZoomBox->Append( msg ); - for( int i = 0; i < (int)GetScreen()->m_ZoomList.GetCount(); i++ ) + for( int i = 0; i < (int) GetScreen()->m_ZoomList.GetCount(); i++ ) { msg = _( "Zoom " ); - if ( (GetScreen()->m_ZoomList[i] % GetScreen()->m_ZoomScalar) == 0 ) + if( (GetScreen()->m_ZoomList[i] % GetScreen()->m_ZoomScalar) == 0 ) msg << GetScreen()->m_ZoomList[i] / GetScreen()->m_ZoomScalar; else { wxString value; value.Printf( wxT( "%.1f" ), - (float)GetScreen()->m_ZoomList[i] / + (float) GetScreen()->m_ZoomList[i] / GetScreen()->m_ZoomScalar ); msg += value; } @@ -628,7 +638,7 @@ an existing track use its width\notherwise, use current width setting" ), // Update displayed values m_SelGridBox->Clear(); - wxString format = _( "Grid"); + wxString format = _( "Grid" ); if( g_UnitMetric == INCHES ) format += wxT( " %.1f" ); else @@ -636,9 +646,9 @@ an existing track use its width\notherwise, use current width setting" ), for( i = 0; i < GetScreen()->m_GridList.GetCount(); i++ ) { - GRID_TYPE grid = GetScreen()->m_GridList[i]; - double value = To_User_Unit( g_UnitMetric, grid.m_Size.x, - m_InternalUnits ); + GRID_TYPE grid = GetScreen()->m_GridList[i]; + double value = To_User_Unit( g_UnitMetric, grid.m_Size.x, + m_InternalUnits ); if( grid.m_Id != ID_POPUP_GRID_USER ) { if( g_UnitMetric == INCHES ) @@ -655,7 +665,7 @@ an existing track use its width\notherwise, use current width setting" ), m_SelGridBox->SetSelection( i ); } - m_TrackAndViasSizesList_Changed = true; + m_TrackAndViasSizesList_Changed = true; ReCreateLayerBox( NULL ); SetToolbars(); @@ -669,13 +679,13 @@ void WinEDA_PcbFrame::UpdateToolbarLayerInfo() // Enable the display on the correct layer // To avoid reentrancy ( Bug wxGTK Linux version? ), the selection is // made where it is bad ( corrected on wxGTK 2.6.0 ) - int count = m_SelLayerBox->GetCount(); - int choice = m_SelLayerBox->GetChoice(); - int layer = GetScreen()->m_Active_Layer; + int count = m_SelLayerBox->GetCount(); + int choice = m_SelLayerBox->GetChoice(); + int layer = GetScreen()->m_Active_Layer; - for( int listNdx=0; listNdxGetClientData( listNdx ) == layer ) + if( (int) ( size_t ) m_SelLayerBox->GetClientData( listNdx ) == layer ) { if( listNdx != choice ) m_SelLayerBox->SetSelection( listNdx ); @@ -695,11 +705,11 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) m_SelLayerBox = new WinEDAChoiceBox( parent, ID_TOOLBARH_PCB_SELECT_LAYER, wxPoint( -1, -1 ), -#if defined (__UNIX__) +#if defined(__UNIX__) - // Width enough for the longest - // string: "Component (Page Down)" - // Maybe that string is too long? + // Width enough for the longest + // string: "Component (Page Down)" + // Maybe that string is too long? wxSize( 230, -1 ) #else wxSize( LISTBOX_WIDTH + 30, -1 ) @@ -709,20 +719,16 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) parent->AddControl( m_SelLayerBox ); } -/* - int layer_mask = g_TabAllCopperLayerMask[g_DesignSettings.m_CopperLayerCount - 1]; - - layer_mask |= ALL_NO_CU_LAYERS; -*/ int layer_mask = g_DesignSettings.GetEnabledLayers(); - unsigned length = 0; + unsigned length = 0; m_SelLayerBox->Clear(); - for( int layer=0, listNdx=0; layer <= EDGE_N; layer++ ) + for( int layer = 0, listNdx = 0; layer <= EDGE_N; layer++ ) { // List to append hotkeys in layer box selection - static const int HK_SwitchLayer[EDGE_N + 1] = { + static const int HK_SwitchLayer[EDGE_N + 1] = + { HK_SWITCH_LAYER_TO_COPPER, HK_SWITCH_LAYER_TO_INNER1, HK_SWITCH_LAYER_TO_INNER2, @@ -746,10 +752,13 @@ WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) wxString msg = GetBoard()->GetLayerName( layer ); msg = AddHotkeyName( msg, s_Board_Editor_Hokeys_Descr, HK_SwitchLayer[layer] ); + + /* we are using tabs in AddHotkeyName message. + * this is not handled by m_SelLayerBox. + * so we replace them by 3 spaces + */ + msg.Replace( wxT( "\t"), wxT( " " ) ); m_SelLayerBox->Append( msg ); - - //D(printf("appending layername=%s, ndx=%d, layer=%d\n", CONV_TO_UTF8(msg), listNdx, layer );) - m_SelLayerBox->SetClientData( listNdx, (void*) layer ); length = MAX( length, msg.Len() ); listNdx++;