Commit e7c9ae2b authored by charras's avatar charras

First work about net classes. This is a work in progress and a moving target

parent ff58b0a8
...@@ -4,6 +4,13 @@ KiCad ChangeLog 2009 ...@@ -4,6 +4,13 @@ KiCad ChangeLog 2009
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2009-july-18 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
++pcbnew
First work about net classes. This is a work in progress and a moving target.
Manual routing and DRC do not used yet this feature
2009-Jul-13 UPDATE Dick Hollenbeck <dick@softplc.com> 2009-Jul-13 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================ ================================================================================
++pcbnew ++pcbnew
......
...@@ -61,6 +61,7 @@ set(PCB_COMMON_SRCS ...@@ -61,6 +61,7 @@ set(PCB_COMMON_SRCS
../pcbnew/class_drawsegment.cpp ../pcbnew/class_drawsegment.cpp
../pcbnew/class_drc_item.cpp ../pcbnew/class_drc_item.cpp
../pcbnew/class_edge_mod.cpp ../pcbnew/class_edge_mod.cpp
../pcbnew/class_netclass.cpp
../pcbnew/class_netinfo_item.cpp ../pcbnew/class_netinfo_item.cpp
../pcbnew/class_netinfolist.cpp ../pcbnew/class_netinfolist.cpp
../pcbnew/class_marker.cpp ../pcbnew/class_marker.cpp
......
...@@ -728,7 +728,7 @@ enum main_id { ...@@ -728,7 +728,7 @@ enum main_id {
ID_PCB_USER_GRID_SETUP, ID_PCB_USER_GRID_SETUP,
ID_PCB_DISPLAY_FOOTPRINT_DOC, ID_PCB_DISPLAY_FOOTPRINT_DOC,
ID_PCB_GEN_BOM_FILE_FROM_BOARD, ID_PCB_GEN_BOM_FILE_FROM_BOARD,
ID_PCBUNUSED3, ID_MENU_PCB_SHOW_DESIGN_RULES_DIALOG,
ID_PCBUNUSED4, ID_PCBUNUSED4,
ID_PCBUNUSED5, ID_PCBUNUSED5,
ID_PCBUNUSED6, ID_PCBUNUSED6,
......
...@@ -431,6 +431,11 @@ public: ...@@ -431,6 +431,11 @@ public:
void Show3D_Frame( wxCommandEvent& event ); void Show3D_Frame( wxCommandEvent& event );
void GeneralControle( wxDC* DC, wxPoint Mouse ); void GeneralControle( wxDC* DC, wxPoint Mouse );
/** function ShowDesignRulesEditor
* Display the Design Rules Editor.
*/
void ShowDesignRulesEditor( wxCommandEvent& event );
/** /**
* Function UpdateToolbarLayerInfo * Function UpdateToolbarLayerInfo
* updates the currently selected layer in the layer listbox and * updates the currently selected layer in the layer listbox and
......
No preview for this file type
...@@ -2,8 +2,8 @@ msgid "" ...@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-09 08:02+0100\n" "POT-Creation-Date: 2009-07-17 20:36+0100\n"
"PO-Revision-Date: 2009-07-09 08:06+0100\n" "PO-Revision-Date: 2009-07-17 20:53+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
...@@ -25,12 +25,12 @@ msgstr "" ...@@ -25,12 +25,12 @@ msgstr ""
#: pcbnew/xchgmod.cpp:172 #: pcbnew/xchgmod.cpp:172
#, c-format #, c-format
msgid "file %s not found" msgid "file %s not found"
msgstr " fichier %s non trouvé" msgstr "fichier %s non trouvé"
#: pcbnew/xchgmod.cpp:186 #: pcbnew/xchgmod.cpp:186
#, c-format #, c-format
msgid "Unable to create file %s" msgid "Unable to create file %s"
msgstr "Impossible de créer fichier <%s>" msgstr "Impossible de créerle fichier <%s>"
#: pcbnew/xchgmod.cpp:291 #: pcbnew/xchgmod.cpp:291
#, c-format #, c-format
...@@ -427,7 +427,7 @@ msgid "Delete module?" ...@@ -427,7 +427,7 @@ msgid "Delete module?"
msgstr "Effacer Module?" msgstr "Effacer Module?"
#: pcbnew/editmod.cpp:41 #: pcbnew/editmod.cpp:41
#: pcbnew/edit.cpp:339 #: pcbnew/edit.cpp:340
msgid "Module Editor" msgid "Module Editor"
msgstr "Ouvrir Editeur de modules" msgstr "Ouvrir Editeur de modules"
...@@ -485,7 +485,7 @@ msgid "Place anchor" ...@@ -485,7 +485,7 @@ msgid "Place anchor"
msgstr "Place Ancre" msgstr "Place Ancre"
#: pcbnew/modedit.cpp:439 #: pcbnew/modedit.cpp:439
#: pcbnew/edit.cpp:772 #: pcbnew/edit.cpp:773
msgid "Delete item" msgid "Delete item"
msgstr "Suppression d'éléments" msgstr "Suppression d'éléments"
...@@ -897,7 +897,7 @@ msgstr "Grille" ...@@ -897,7 +897,7 @@ msgstr "Grille"
msgid "User Grid" msgid "User Grid"
msgstr "Grille perso" msgstr "Grille perso"
#: pcbnew/tool_pcb.cpp:751 #: pcbnew/tool_pcb.cpp:748
msgid "+/- to switch" msgid "+/- to switch"
msgstr "+/- pour commuter" msgstr "+/- pour commuter"
...@@ -934,47 +934,47 @@ msgstr "" ...@@ -934,47 +934,47 @@ msgstr ""
"Plan de perçage: trop de diamètres différents pour tracer 1 symbole par diamètre (max 13)\n" "Plan de perçage: trop de diamètres différents pour tracer 1 symbole par diamètre (max 13)\n"
"Le tracé utilise des cercles pour quelques valeurs " "Le tracé utilise des cercles pour quelques valeurs "
#: pcbnew/edit.cpp:418 #: pcbnew/edit.cpp:419
msgid "Add Tracks" msgid "Add Tracks"
msgstr "Addition de Pistes" msgstr "Addition de Pistes"
#: pcbnew/edit.cpp:427 #: pcbnew/edit.cpp:428
msgid "Add Zones" msgid "Add Zones"
msgstr "Addition de Zones" msgstr "Addition de Zones"
#: pcbnew/edit.cpp:429 #: pcbnew/edit.cpp:430
msgid "Warning: Display Zone is OFF!!!" msgid "Warning: Display Zone is OFF!!!"
msgstr "Attention: Affichage zones désactivé !!!" msgstr "Attention: Affichage zones désactivé !!!"
#: pcbnew/edit.cpp:435 #: pcbnew/edit.cpp:436
msgid "Add Layer Alignment Target" msgid "Add Layer Alignment Target"
msgstr "Ajouter Mire de superposition" msgstr "Ajouter Mire de superposition"
#: pcbnew/edit.cpp:439 #: pcbnew/edit.cpp:440
msgid "Adjust Zero" msgid "Adjust Zero"
msgstr "Ajuster Zéro" msgstr "Ajuster Zéro"
#: pcbnew/edit.cpp:445 #: pcbnew/edit.cpp:446
msgid "Add Graphic" msgid "Add Graphic"
msgstr "Addition éléments graphiques" msgstr "Addition éléments graphiques"
#: pcbnew/edit.cpp:449 #: pcbnew/edit.cpp:450
msgid "Add Text" msgid "Add Text"
msgstr "Ajout de Texte" msgstr "Ajout de Texte"
#: pcbnew/edit.cpp:453 #: pcbnew/edit.cpp:454
msgid "Add Modules" msgid "Add Modules"
msgstr "Addition de Modules" msgstr "Addition de Modules"
#: pcbnew/edit.cpp:457 #: pcbnew/edit.cpp:458
msgid "Add Dimension" msgid "Add Dimension"
msgstr "Ajout de cotes" msgstr "Ajout de cotes"
#: pcbnew/edit.cpp:465 #: pcbnew/edit.cpp:466
msgid "Net Highlight" msgid "Net Highlight"
msgstr "Surbrillance des équipotentielles" msgstr "Surbrillance des équipotentielles"
#: pcbnew/edit.cpp:469 #: pcbnew/edit.cpp:470
msgid "Local Ratsnest" msgid "Local Ratsnest"
msgstr "Montrer le chevelu général" msgstr "Montrer le chevelu général"
...@@ -2126,151 +2126,163 @@ msgstr "&Lire Préférences" ...@@ -2126,151 +2126,163 @@ msgstr "&Lire Préférences"
msgid "Read application preferences" msgid "Read application preferences"
msgstr "Lire les préférences de l'application" msgstr "Lire les préférences de l'application"
#: pcbnew/menubarpcb.cpp:214 #: pcbnew/menubarpcb.cpp:211
msgid "Design Rules"
msgstr "Rrègles de Conception"
#: pcbnew/menubarpcb.cpp:211
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:221
msgid "Tracks and Vias" msgid "Tracks and Vias"
msgstr "Pistes et Vias" msgstr "Pistes et Vias"
#: pcbnew/menubarpcb.cpp:215 #: pcbnew/menubarpcb.cpp:222
msgid "Adjust size and width for tracks and vias" msgid "Adjust size and width for tracks and vias"
msgstr "Ajuster largeur des pistes et diamètre de vias" msgstr "Ajuster largeur des pistes et diamètre de vias"
#: pcbnew/menubarpcb.cpp:220 #: pcbnew/menubarpcb.cpp:227
msgid "Adjust User Grid" msgid "Adjust User Grid"
msgstr "Ajuster Grille utilisateur" msgstr "Ajuster Grille utilisateur"
#: pcbnew/menubarpcb.cpp:225 #: pcbnew/menubarpcb.cpp:232
msgid "Texts and Drawings" msgid "Texts and Drawings"
msgstr "Textes et Tracés" msgstr "Textes et Tracés"
#: pcbnew/menubarpcb.cpp:226 #: pcbnew/menubarpcb.cpp:233
msgid "Adjust width for texts and drawings" msgid "Adjust width for texts and drawings"
msgstr "Ajuster dims pour textes et graphiques" msgstr "Ajuster dims pour textes et graphiques"
#: pcbnew/menubarpcb.cpp:231 #: pcbnew/menubarpcb.cpp:238
msgid "Adjust size,shape,layers... for pads" msgid "Adjust size,shape,layers... for pads"
msgstr "Ajuster taille, forme, couches... pour pads" msgstr "Ajuster taille, forme, couches... pour pads"
#: pcbnew/menubarpcb.cpp:236 #: pcbnew/menubarpcb.cpp:243
msgid "&Save Setup" msgid "&Save Setup"
msgstr "&Sauver Options" msgstr "&Sauver Options"
#: pcbnew/menubarpcb.cpp:237 #: pcbnew/menubarpcb.cpp:244
msgid "Save options in current directory" msgid "Save options in current directory"
msgstr "Sauver les options en répertoire de travail" msgstr "Sauver les options en répertoire de travail"
#: pcbnew/menubarpcb.cpp:246 #: pcbnew/menubarpcb.cpp:253
msgid "Generate &Modules Position" msgid "Generate &Modules Position"
msgstr "Créer &Modules Position" msgstr "Créer &Modules Position"
#: pcbnew/menubarpcb.cpp:247 #: pcbnew/menubarpcb.cpp:254
msgid "Generate modules position file" msgid "Generate modules position file"
msgstr "Gen fichier Position des Modules" msgstr "Gen fichier Position des Modules"
#: pcbnew/menubarpcb.cpp:252 #: pcbnew/menubarpcb.cpp:259
msgid "Create &Drill File" msgid "Create &Drill File"
msgstr "Créer &Fichier de Perçage" msgstr "Créer &Fichier de Perçage"
#: pcbnew/menubarpcb.cpp:253 #: pcbnew/menubarpcb.cpp:260
msgid "Generate excellon2 drill file" msgid "Generate excellon2 drill file"
msgstr "Créer Fichier de perçage Excellon2" msgstr "Créer Fichier de perçage Excellon2"
#: pcbnew/menubarpcb.cpp:258 #: pcbnew/menubarpcb.cpp:265
msgid "Create &Component File" msgid "Create &Component File"
msgstr "Créer &Fichier Cmp" msgstr "Créer &Fichier Cmp"
#: pcbnew/menubarpcb.cpp:259 #: pcbnew/menubarpcb.cpp:266
msgid "Recreate .cmp file for CvPcb" msgid "Recreate .cmp file for CvPcb"
msgstr "Recréer le fichier .cmp pour CvPcb" msgstr "Recréer le fichier .cmp pour CvPcb"
#: pcbnew/menubarpcb.cpp:264 #: pcbnew/menubarpcb.cpp:271
msgid "Create &BOM File" msgid "Create &BOM File"
msgstr "Créer Fichier Liste du &Matériel" msgstr "Créer Fichier Liste du &Matériel"
#: pcbnew/menubarpcb.cpp:265 #: pcbnew/menubarpcb.cpp:272
msgid "Recreate .csv file for CvPcb" msgid "Recreate .csv file for CvPcb"
msgstr "Recréer le fichier .csv pour CvPcb" msgstr "Recréer le fichier .csv pour CvPcb"
#: pcbnew/menubarpcb.cpp:274 #: pcbnew/menubarpcb.cpp:281
msgid "Global &Deletions" msgid "Global &Deletions"
msgstr "Effacements &Généraux" msgstr "Effacements &Généraux"
#: pcbnew/menubarpcb.cpp:275 #: pcbnew/menubarpcb.cpp:282
msgid "Delete tracks, modules, texts... on board" msgid "Delete tracks, modules, texts... on board"
msgstr "Effacer pistes, modules, textes... sur le C.I." msgstr "Effacer pistes, modules, textes... sur le C.I."
#: pcbnew/menubarpcb.cpp:280 #: pcbnew/menubarpcb.cpp:287
msgid "&List Nets" msgid "&List Nets"
msgstr "Liste Equipots" msgstr "Liste Equipots"
#: pcbnew/menubarpcb.cpp:281 #: pcbnew/menubarpcb.cpp:288
msgid "List nets (names and id)" msgid "List nets (names and id)"
msgstr "Lister équipotentielles (noms et numéros d'identification)" msgstr "Lister équipotentielles (noms et numéros d'identification)"
#: pcbnew/menubarpcb.cpp:286 #: pcbnew/menubarpcb.cpp:293
msgid "&Track Operations" msgid "&Track Operations"
msgstr "Opéra&tions sur Pistes" msgstr "Opéra&tions sur Pistes"
#: pcbnew/menubarpcb.cpp:287 #: pcbnew/menubarpcb.cpp:294
msgid "Clean stubs, vias, delete break points, or connect dangling tracks to pads and vias" msgid "Clean stubs, vias, delete break points, or connect dangling tracks to pads and vias"
msgstr "Nettoyer bouts de pistes, vias, points inutiles, ou connecter extrémités de pistes mal connectées au centre de pads ou vias" msgstr "Nettoyer bouts de pistes, vias, points inutiles, ou connecter extrémités de pistes mal connectées au centre de pads ou vias"
#: pcbnew/menubarpcb.cpp:292 #: pcbnew/menubarpcb.cpp:299
msgid "&Swap Layers" msgid "&Swap Layers"
msgstr "&Permutte Couches" msgstr "&Permutte Couches"
#: pcbnew/menubarpcb.cpp:293 #: pcbnew/menubarpcb.cpp:300
msgid "Swap tracks on copper layers or drawings on others layers" msgid "Swap tracks on copper layers or drawings on others layers"
msgstr "Permutation de couches" msgstr "Permutation de couches"
#: pcbnew/menubarpcb.cpp:301 #: pcbnew/menubarpcb.cpp:308
msgid "&Contents" msgid "&Contents"
msgstr "&Contenu" msgstr "&Contenu"
#: pcbnew/menubarpcb.cpp:302 #: pcbnew/menubarpcb.cpp:309
msgid "Open the PCBNEW manual" msgid "Open the PCBNEW manual"
msgstr "Ouvrir la Documentation de PCBNEW" msgstr "Ouvrir la Documentation de PCBNEW"
#: pcbnew/menubarpcb.cpp:306 #: pcbnew/menubarpcb.cpp:313
msgid "&About PCBNEW" msgid "&About PCBNEW"
msgstr "&Au Sujet de PCBNEW" msgstr "&Au Sujet de PCBNEW"
#: pcbnew/menubarpcb.cpp:307 #: pcbnew/menubarpcb.cpp:314
msgid "About PCBNEW printed circuit board designer" msgid "About PCBNEW printed circuit board designer"
msgstr "Au Sujet de PCBNEW outil de conception de C.I." msgstr "Au Sujet de PCBNEW outil de conception de C.I."
#: pcbnew/menubarpcb.cpp:316 #: pcbnew/menubarpcb.cpp:323
msgid "3D Display" msgid "3D Display"
msgstr "3D Visu" msgstr "3D Visu"
#: pcbnew/menubarpcb.cpp:316 #: pcbnew/menubarpcb.cpp:323
msgid "Show board in 3D viewer" msgid "Show board in 3D viewer"
msgstr "Visualisation du circuit en 3D" msgstr "Visualisation du circuit en 3D"
#: pcbnew/menubarpcb.cpp:320 #: pcbnew/menubarpcb.cpp:327
msgid "&File" msgid "&File"
msgstr "&Fichiers" msgstr "&Fichiers"
#: pcbnew/menubarpcb.cpp:321 #: pcbnew/menubarpcb.cpp:328
msgid "&Preferences" msgid "&Preferences"
msgstr "&Préférences" msgstr "&Préférences"
#: pcbnew/menubarpcb.cpp:322 #: pcbnew/menubarpcb.cpp:329
msgid "&Design Rules"
msgstr "&Règles de Conception"
#: pcbnew/menubarpcb.cpp:330
msgid "&Dimensions" msgid "&Dimensions"
msgstr "&Dimensions" msgstr "&Dimensions"
#: pcbnew/menubarpcb.cpp:323 #: pcbnew/menubarpcb.cpp:331
msgid "&Miscellaneous" msgid "&Miscellaneous"
msgstr "&Divers" msgstr "&Divers"
#: pcbnew/menubarpcb.cpp:324 #: pcbnew/menubarpcb.cpp:332
msgid "P&ostprocess" msgid "P&ostprocess"
msgstr "P&ostprocesseurs" msgstr "P&ostprocesseurs"
#: pcbnew/menubarpcb.cpp:325 #: pcbnew/menubarpcb.cpp:333
msgid "&3D Display" msgid "&3D Display"
msgstr "&3D Visu" msgstr "&3D Visu"
#: pcbnew/menubarpcb.cpp:326 #: pcbnew/menubarpcb.cpp:334
msgid "&Help" msgid "&Help"
msgstr "&Aide" msgstr "&Aide"
...@@ -2377,105 +2389,105 @@ msgstr "Valeur incorrecte pour offset du pad" ...@@ -2377,105 +2389,105 @@ msgstr "Valeur incorrecte pour offset du pad"
msgid "Unknown netname, no change" msgid "Unknown netname, no change"
msgstr "Net inconnu, pas de changement" msgstr "Net inconnu, pas de changement"
#: pcbnew/pcbframe.cpp:309 #: pcbnew/pcbframe.cpp:314
msgid "Board modified, Save before exit ?" msgid "Board modified, Save before exit ?"
msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?"
#: pcbnew/pcbframe.cpp:310 #: pcbnew/pcbframe.cpp:315
msgid "Confirmation" msgid "Confirmation"
msgstr "Confirmation" msgstr "Confirmation"
#: pcbnew/pcbframe.cpp:415 #: pcbnew/pcbframe.cpp:420
msgid "DRC Off (Disable !!!), Currently: DRC is active" msgid "DRC Off (Disable !!!), Currently: DRC is active"
msgstr "DRC off (désactivée !!!), actuellement DRC active" msgstr "DRC off (désactivée !!!), actuellement DRC active"
#: pcbnew/pcbframe.cpp:416 #: pcbnew/pcbframe.cpp:421
msgid "DRC On (Currently: DRC is inactive !!!)" msgid "DRC On (Currently: DRC is inactive !!!)"
msgstr "DRC On (Actuellement, DRC désactivée !!!)" msgstr "DRC On (Actuellement, DRC désactivée !!!)"
#: pcbnew/pcbframe.cpp:427 #: pcbnew/pcbframe.cpp:432
msgid "Polar Coords not show" msgid "Polar Coords not show"
msgstr "Coord Polaires non affichées" msgstr "Coord Polaires non affichées"
#: pcbnew/pcbframe.cpp:428 #: pcbnew/pcbframe.cpp:433
msgid "Display Polar Coords" msgid "Display Polar Coords"
msgstr "Affichage coord Polaires" msgstr "Affichage coord Polaires"
#: pcbnew/pcbframe.cpp:433 #: pcbnew/pcbframe.cpp:438
msgid "Grid not show" msgid "Grid not show"
msgstr "Grille non montrée" msgstr "Grille non montrée"
#: pcbnew/pcbframe.cpp:433 #: pcbnew/pcbframe.cpp:438
msgid "Show Grid" msgid "Show Grid"
msgstr "Afficher grille" msgstr "Afficher grille"
#: pcbnew/pcbframe.cpp:442 #: pcbnew/pcbframe.cpp:447
msgid "Hide General ratsnest" msgid "Hide General ratsnest"
msgstr "Ne pas afficher le chevelu général" msgstr "Ne pas afficher le chevelu général"
#: pcbnew/pcbframe.cpp:443 #: pcbnew/pcbframe.cpp:448
msgid "Show General ratsnest" msgid "Show General ratsnest"
msgstr "Afficher le chevelu général" msgstr "Afficher le chevelu général"
#: pcbnew/pcbframe.cpp:449 #: pcbnew/pcbframe.cpp:454
msgid "Hide Module ratsnest" msgid "Hide Module ratsnest"
msgstr "Ne pas montrer le chevelu du module" msgstr "Ne pas montrer le chevelu du module"
#: pcbnew/pcbframe.cpp:450 #: pcbnew/pcbframe.cpp:455
msgid "Show Module ratsnest" msgid "Show Module ratsnest"
msgstr "Montrer le chevelu du module" msgstr "Montrer le chevelu du module"
#: pcbnew/pcbframe.cpp:457 #: pcbnew/pcbframe.cpp:462
msgid "Disable Auto Delete old Track" msgid "Disable Auto Delete old Track"
msgstr "Ne pas Autoriser l'effacement automatique des pistes" msgstr "Ne pas Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:458 #: pcbnew/pcbframe.cpp:463
msgid "Enable Auto Delete old Track" msgid "Enable Auto Delete old Track"
msgstr "Autoriser l'effacement automatique des pistes" msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:465 #: pcbnew/pcbframe.cpp:470
msgid "Show Pads Sketch mode" msgid "Show Pads Sketch mode"
msgstr "Afficher pastilles en contour" msgstr "Afficher pastilles en contour"
#: pcbnew/pcbframe.cpp:466 #: pcbnew/pcbframe.cpp:471
msgid "Show pads filled mode" msgid "Show pads filled mode"
msgstr "Afficher pastilles en mode plein" msgstr "Afficher pastilles en mode plein"
#: pcbnew/pcbframe.cpp:472 #: pcbnew/pcbframe.cpp:477
msgid "Show Tracks Sketch mode" msgid "Show Tracks Sketch mode"
msgstr "Afficher pistes en contour" msgstr "Afficher pistes en contour"
#: pcbnew/pcbframe.cpp:473 #: pcbnew/pcbframe.cpp:478
msgid "Show Tracks filled mode" msgid "Show Tracks filled mode"
msgstr "Afficher pistes en mode plein" msgstr "Afficher pistes en mode plein"
#: pcbnew/pcbframe.cpp:479 #: pcbnew/pcbframe.cpp:484
msgid "Normal Contrast Mode Display" msgid "Normal Contrast Mode Display"
msgstr "Mode d'affichage Contraste normal" msgstr "Mode d'affichage Contraste normal"
#: pcbnew/pcbframe.cpp:486 #: pcbnew/pcbframe.cpp:491
msgid "Hide Invisible Text" msgid "Hide Invisible Text"
msgstr "Cacher textes invisibles" msgstr "Cacher textes invisibles"
#: pcbnew/pcbframe.cpp:499 #: pcbnew/pcbframe.cpp:504
msgid "Track" msgid "Track"
msgstr "Piste" msgstr "Piste"
#: pcbnew/pcbframe.cpp:531 #: pcbnew/pcbframe.cpp:536
#: pcbnew/dialog_drc_base.cpp:35 #: pcbnew/dialog_drc_base.cpp:35
#: pcbnew/dialog_track_options_base.cpp:106 #: pcbnew/dialog_track_options_base.cpp:106
msgid "Clearance" msgid "Clearance"
msgstr "Isolation" msgstr "Isolation"
#: pcbnew/pcbframe.cpp:563 #: pcbnew/pcbframe.cpp:568
msgid "Via" msgid "Via"
msgstr "Via" msgstr "Via"
#: pcbnew/pcbframe.cpp:635 #: pcbnew/pcbframe.cpp:640
msgid "3D Frame already opened" msgid "3D Frame already opened"
msgstr "Fenêtre 3D déjà ouverte" msgstr "Fenêtre 3D déjà ouverte"
#: pcbnew/pcbframe.cpp:639 #: pcbnew/pcbframe.cpp:644
msgid "3D Viewer" msgid "3D Viewer"
msgstr "Visu 3D" msgstr "Visu 3D"
...@@ -2812,6 +2824,33 @@ msgstr "Pas de couche sélectionnée" ...@@ -2812,6 +2824,33 @@ msgstr "Pas de couche sélectionnée"
msgid "Error: Unexpected end of file !" msgid "Error: Unexpected end of file !"
msgstr "Erreur: Fin de fichier inattendue !" msgstr "Erreur: Fin de fichier inattendue !"
#: pcbnew/specctra.cpp:133
#: pcbnew/specctra.cpp:140
msgid "Expecting"
msgstr "Attendu"
#: pcbnew/specctra.cpp:147
#: pcbnew/specctra.cpp:154
msgid "Unexpected"
msgstr "Inattendu"
#: pcbnew/specctra.cpp:324
#: pcbnew/specctra.cpp:354
#: pcbnew/specctra.cpp:3569
#: pcbnew/specctra.cpp:3594
#, c-format
msgid "Unable to open file \"%s\""
msgstr "Ne peut pas ouvrirle fichier \"%s\""
#: pcbnew/specctra.cpp:3512
#, c-format
msgid "System file error writing to file \"%s\""
msgstr "Erreur système sur écriture fichier \"%s\""
#: pcbnew/specctra.cpp:3689
msgid "Error writing to STRINGFORMATTER"
msgstr "Erreur d'écriture à STRINGFORMATTER"
#: pcbnew/class_zone.cpp:871 #: pcbnew/class_zone.cpp:871
msgid "Zone Outline" msgid "Zone Outline"
msgstr "Contour de Zone" msgstr "Contour de Zone"
...@@ -2860,33 +2899,6 @@ msgstr "Lignes de Hachure" ...@@ -2860,33 +2899,6 @@ msgstr "Lignes de Hachure"
msgid "Corners in DrawList" msgid "Corners in DrawList"
msgstr "Sommets en Liste de dessin" msgstr "Sommets en Liste de dessin"
#: pcbnew/specctra.cpp:133
#: pcbnew/specctra.cpp:140
msgid "Expecting"
msgstr "Attendu"
#: pcbnew/specctra.cpp:147
#: pcbnew/specctra.cpp:154
msgid "Unexpected"
msgstr "Inattendu"
#: pcbnew/specctra.cpp:324
#: pcbnew/specctra.cpp:354
#: pcbnew/specctra.cpp:3526
#: pcbnew/specctra.cpp:3551
#, c-format
msgid "Unable to open file \"%s\""
msgstr "Ne peut pas ouvrirle fichier \"%s\""
#: pcbnew/specctra.cpp:3469
#, c-format
msgid "System file error writing to file \"%s\""
msgstr "Erreur système sur écriture fichier \"%s\""
#: pcbnew/specctra.cpp:3646
msgid "Error writing to STRINGFORMATTER"
msgstr "Erreur d'écriture à STRINGFORMATTER"
#: pcbnew/sel_layer.cpp:93 #: pcbnew/sel_layer.cpp:93
msgid "Select Layer:" msgid "Select Layer:"
msgstr "Sélection couche:" msgstr "Sélection couche:"
...@@ -3675,468 +3687,476 @@ msgid "Layer selection:" ...@@ -3675,468 +3687,476 @@ msgid "Layer selection:"
msgstr "Sélection couche:" msgstr "Sélection couche:"
#: pcbnew/onrightclick.cpp:42 #: pcbnew/onrightclick.cpp:42
msgid "New Width/Size"
msgstr "Nouvelle Largeur/Taille"
#: pcbnew/onrightclick.cpp:45
msgid "Auto Width" msgid "Auto Width"
msgstr "Epaisseur Automatique" msgstr "Epaisseur Automatique"
#: pcbnew/onrightclick.cpp:44 #: pcbnew/onrightclick.cpp:47
msgid "Use the track width when starting on a track, otherwise the current track width" msgid "Use the track width when starting on a track, otherwise the current track width"
msgstr "Si on démarre sur une piste existante, utiliser sa largeur, sinon utiliser la largeur courante" msgstr "Si on démarre sur une piste existante, utiliser sa largeur, sinon utiliser la largeur courante"
#: pcbnew/onrightclick.cpp:58 #: pcbnew/onrightclick.cpp:61
#, c-format #, c-format
msgid "Track %.1f" msgid "Track %.1f"
msgstr "Piste %.1f" msgstr "Piste %.1f"
#: pcbnew/onrightclick.cpp:60 #: pcbnew/onrightclick.cpp:63
#, c-format #, c-format
msgid "Track %.3f" msgid "Track %.3f"
msgstr "Piste %.3f" msgstr "Piste %.3f"
#: pcbnew/onrightclick.cpp:78 #: pcbnew/onrightclick.cpp:81
#, c-format #, c-format
msgid "Via %.1f" msgid "Via %.1f"
msgstr "Via %.1f" msgstr "Via %.1f"
#: pcbnew/onrightclick.cpp:80 #: pcbnew/onrightclick.cpp:83
#, c-format #, c-format
msgid "Via %.3f" msgid "Via %.3f"
msgstr "Via %.3f" msgstr "Via %.3f"
#: pcbnew/onrightclick.cpp:196 #: pcbnew/onrightclick.cpp:199
msgid "Lock Module" msgid "Lock Module"
msgstr "Verrouiller Module" msgstr "Verrouiller Module"
#: pcbnew/onrightclick.cpp:204 #: pcbnew/onrightclick.cpp:207
msgid "Unlock Module" msgid "Unlock Module"
msgstr "Déverrouiller Module" msgstr "Déverrouiller Module"
#: pcbnew/onrightclick.cpp:212 #: pcbnew/onrightclick.cpp:215
msgid "Auto Place Module" msgid "Auto Place Module"
msgstr "Auto Place Module" msgstr "Auto Place Module"
#: pcbnew/onrightclick.cpp:218 #: pcbnew/onrightclick.cpp:221
msgid "Autoroute" msgid "Autoroute"
msgstr "Autoroute" msgstr "Autoroute"
#: pcbnew/onrightclick.cpp:234 #: pcbnew/onrightclick.cpp:237
msgid "Move Drawing" msgid "Move Drawing"
msgstr "Déplace Tracé" msgstr "Déplace Tracé"
#: pcbnew/onrightclick.cpp:239 #: pcbnew/onrightclick.cpp:242
msgid "End Drawing" msgid "End Drawing"
msgstr "Fin tracé" msgstr "Fin tracé"
#: pcbnew/onrightclick.cpp:242 #: pcbnew/onrightclick.cpp:245
msgid "Edit Drawing" msgid "Edit Drawing"
msgstr "Edit Tracé" msgstr "Edit Tracé"
#: pcbnew/onrightclick.cpp:244 #: pcbnew/onrightclick.cpp:247
msgid "Delete Drawing" msgid "Delete Drawing"
msgstr "Supprimer Tracé" msgstr "Supprimer Tracé"
#: pcbnew/onrightclick.cpp:249 #: pcbnew/onrightclick.cpp:252
msgid "Delete Zone Filling" msgid "Delete Zone Filling"
msgstr "Supprimer Remplissage de Zone" msgstr "Supprimer Remplissage de Zone"
#: pcbnew/onrightclick.cpp:256 #: pcbnew/onrightclick.cpp:259
msgid "Close Zone Outline" msgid "Close Zone Outline"
msgstr "Fermer Contour de Zone" msgstr "Fermer Contour de Zone"
#: pcbnew/onrightclick.cpp:258 #: pcbnew/onrightclick.cpp:261
msgid "Delete Last Corner" msgid "Delete Last Corner"
msgstr "Supprimer Dernier Sommet" msgstr "Supprimer Dernier Sommet"
#: pcbnew/onrightclick.cpp:276 #: pcbnew/onrightclick.cpp:285
msgid "Delete Marker"
msgstr "Effacer Marqueur"
#: pcbnew/onrightclick.cpp:283
msgid "Edit Dimension" msgid "Edit Dimension"
msgstr "Edit Cote" msgstr "Edit Cote"
#: pcbnew/onrightclick.cpp:286 #: pcbnew/onrightclick.cpp:288
msgid "Delete Dimension" msgid "Delete Dimension"
msgstr "Suppression Cote" msgstr "Suppression Cote"
#: pcbnew/onrightclick.cpp:293 #: pcbnew/onrightclick.cpp:295
msgid "Move Target" msgid "Move Target"
msgstr "Déplacer Mire" msgstr "Déplacer Mire"
#: pcbnew/onrightclick.cpp:296 #: pcbnew/onrightclick.cpp:298
msgid "Edit Target" msgid "Edit Target"
msgstr "Editer Mire" msgstr "Editer Mire"
#: pcbnew/onrightclick.cpp:298 #: pcbnew/onrightclick.cpp:300
msgid "Delete Target" msgid "Delete Target"
msgstr "Supprimer Mire" msgstr "Supprimer Mire"
#: pcbnew/onrightclick.cpp:329 #: pcbnew/onrightclick.cpp:331
msgid "Get and Move Footprint" msgid "Get and Move Footprint"
msgstr "Sel. et Dépl. module" msgstr "Sel. et Dépl. module"
#: pcbnew/onrightclick.cpp:343 #: pcbnew/onrightclick.cpp:345
msgid "Fill or Refill All Zones" msgid "Fill or Refill All Zones"
msgstr "Remplir ou Re-remplir Toutes les Zones" msgstr "Remplir ou Re-remplir Toutes les Zones"
#: pcbnew/onrightclick.cpp:345 #: pcbnew/onrightclick.cpp:347
msgid "Remove Filled Areas in All Zones" msgid "Remove Filled Areas in All Zones"
msgstr "Supprimer le Remplissage de toutes les Zones" msgstr "Supprimer le Remplissage de toutes les Zones"
#: pcbnew/onrightclick.cpp:350 #: pcbnew/onrightclick.cpp:352
#: pcbnew/onrightclick.cpp:359 #: pcbnew/onrightclick.cpp:361
#: pcbnew/onrightclick.cpp:371 #: pcbnew/onrightclick.cpp:373
#: pcbnew/onrightclick.cpp:432 #: pcbnew/onrightclick.cpp:434
msgid "Select Working Layer" msgid "Select Working Layer"
msgstr "Sélection de la couche de travail" msgstr "Sélection de la couche de travail"
#: pcbnew/onrightclick.cpp:357 #: pcbnew/onrightclick.cpp:359
#: pcbnew/onrightclick.cpp:429 #: pcbnew/onrightclick.cpp:431
msgid "Select Track Width" msgid "Select Track Width"
msgstr "Sélection Epais. Piste" msgstr "Sélection Epais. Piste"
#: pcbnew/onrightclick.cpp:361 #: pcbnew/onrightclick.cpp:363
msgid "Select Layer Pair for Vias" msgid "Select Layer Pair for Vias"
msgstr "Sélection Couple de Couches pour Vias" msgstr "Sélection Couple de Couches pour Vias"
#: pcbnew/onrightclick.cpp:377 #: pcbnew/onrightclick.cpp:379
msgid "Footprint Documentation" msgid "Footprint Documentation"
msgstr "Documentation des Modules" msgstr "Documentation des Modules"
#: pcbnew/onrightclick.cpp:387 #: pcbnew/onrightclick.cpp:389
msgid "Glob Move and Place" msgid "Glob Move and Place"
msgstr "Move et Place Globaux" msgstr "Move et Place Globaux"
#: pcbnew/onrightclick.cpp:389 #: pcbnew/onrightclick.cpp:391
msgid "Unlock All Modules" msgid "Unlock All Modules"
msgstr "Déverrouiller tous les Modules" msgstr "Déverrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:391 #: pcbnew/onrightclick.cpp:393
msgid "Lock All Modules" msgid "Lock All Modules"
msgstr "Verrouiller tous les Modules" msgstr "Verrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:394 #: pcbnew/onrightclick.cpp:396
msgid "Move All Modules" msgid "Move All Modules"
msgstr "Déplace tous les Modules" msgstr "Déplace tous les Modules"
#: pcbnew/onrightclick.cpp:395 #: pcbnew/onrightclick.cpp:397
msgid "Move New Modules" msgid "Move New Modules"
msgstr "Déplace nouveaux Modules" msgstr "Déplace nouveaux Modules"
#: pcbnew/onrightclick.cpp:397 #: pcbnew/onrightclick.cpp:399
msgid "Autoplace All Modules" msgid "Autoplace All Modules"
msgstr "Autoplace Tous Modules" msgstr "Autoplace Tous Modules"
#: pcbnew/onrightclick.cpp:398 #: pcbnew/onrightclick.cpp:400
msgid "Autoplace New Modules" msgid "Autoplace New Modules"
msgstr "AutoPlace nouveaux Modules" msgstr "AutoPlace nouveaux Modules"
#: pcbnew/onrightclick.cpp:399 #: pcbnew/onrightclick.cpp:401
msgid "Autoplace Next Module" msgid "Autoplace Next Module"
msgstr "Autoplace Module suivant" msgstr "Autoplace Module suivant"
#: pcbnew/onrightclick.cpp:402 #: pcbnew/onrightclick.cpp:404
msgid "Orient All Modules" msgid "Orient All Modules"
msgstr "Oriente Tous Modules" msgstr "Oriente Tous Modules"
#: pcbnew/onrightclick.cpp:409 #: pcbnew/onrightclick.cpp:411
msgid "Global Autoroute" msgid "Global Autoroute"
msgstr "Autoroutage global" msgstr "Autoroutage global"
#: pcbnew/onrightclick.cpp:411 #: pcbnew/onrightclick.cpp:413
msgid "Select Layer Pair" msgid "Select Layer Pair"
msgstr "Sélection Paire de Couches" msgstr "Sélection Paire de Couches"
#: pcbnew/onrightclick.cpp:413 #: pcbnew/onrightclick.cpp:415
msgid "Autoroute All Modules" msgid "Autoroute All Modules"
msgstr "Autoroute Tous Modules" msgstr "Autoroute Tous Modules"
#: pcbnew/onrightclick.cpp:415 #: pcbnew/onrightclick.cpp:417
msgid "Reset Unrouted" msgid "Reset Unrouted"
msgstr "Réinit non Routés" msgstr "Réinit non Routés"
#: pcbnew/onrightclick.cpp:420 #: pcbnew/onrightclick.cpp:422
msgid "Global AutoRouter" msgid "Global AutoRouter"
msgstr "Autorouteur Global" msgstr "Autorouteur Global"
#: pcbnew/onrightclick.cpp:422 #: pcbnew/onrightclick.cpp:424
msgid "Read Global AutoRouter Data" msgid "Read Global AutoRouter Data"
msgstr "Lire Données de L'autorouteur global" msgstr "Lire Données de L'autorouteur global"
#: pcbnew/onrightclick.cpp:452 #: pcbnew/onrightclick.cpp:454
msgid "Zoom Block" msgid "Zoom Block"
msgstr "Zoom Bloc" msgstr "Zoom Bloc"
#: pcbnew/onrightclick.cpp:459 #: pcbnew/onrightclick.cpp:461
msgid "Flip Block" msgid "Flip Block"
msgstr "Retourner Bloc" msgstr "Retourner Bloc"
#: pcbnew/onrightclick.cpp:482 #: pcbnew/onrightclick.cpp:484
msgid "Drag Via" msgid "Drag Via"
msgstr "Drag Via" msgstr "Drag Via"
#: pcbnew/onrightclick.cpp:486 #: pcbnew/onrightclick.cpp:488
msgid "Edit Via Drill" msgid "Edit Via Drill"
msgstr "Editer Perçage Via" msgstr "Editer Perçage Via"
#: pcbnew/onrightclick.cpp:488 #: pcbnew/onrightclick.cpp:490
msgid "Set Via Hole to Default" msgid "Set Via Hole to Default"
msgstr "Ajuste Perçage Via à Défaut" msgstr "Ajuste Perçage Via à Défaut"
#: pcbnew/onrightclick.cpp:489 #: pcbnew/onrightclick.cpp:491
msgid "Set via hole to a specific value. This specific value is currently" msgid "Set via hole to a specific value. This specific value is currently"
msgstr "Ajuster diamètre perçage via à une valeur sécifique. Cette valeur spécifique est actuellement" msgstr "Ajuster diamètre perçage via à une valeur sécifique. Cette valeur spécifique est actuellement"
#: pcbnew/onrightclick.cpp:492 #: pcbnew/onrightclick.cpp:494
msgid "Set Via Hole to Specific Value" msgid "Set Via Hole to Specific Value"
msgstr "Ajuste Perçage Via à Valeur Spécifique" msgstr "Ajuste Perçage Via à Valeur Spécifique"
#: pcbnew/onrightclick.cpp:494 #: pcbnew/onrightclick.cpp:496
msgid "Set a specific via hole value. This value is currently" msgid "Set a specific via hole value. This value is currently"
msgstr "Ajuste une valeur spécifique de perçage de la via. Cette valeur est actuellement" msgstr "Ajuste une valeur spécifique de perçage de la via. Cette valeur est actuellement"
#: pcbnew/onrightclick.cpp:497 #: pcbnew/onrightclick.cpp:499
msgid "Change the Current Specific Drill Value" msgid "Change the Current Specific Drill Value"
msgstr "Changer la Valeur du Perçage Spécifique Courant" msgstr "Changer la Valeur du Perçage Spécifique Courant"
#: pcbnew/onrightclick.cpp:499 #: pcbnew/onrightclick.cpp:501
msgid "Use this Via Hole as Specific Value" msgid "Use this Via Hole as Specific Value"
msgstr "Utiliser ce Perçage de Via comme Valeur Spécifique" msgstr "Utiliser ce Perçage de Via comme Valeur Spécifique"
#: pcbnew/onrightclick.cpp:501 #: pcbnew/onrightclick.cpp:503
msgid "Export this Via Hole to Others id Vias" msgid "Export this Via Hole to Others id Vias"
msgstr "Exporte ce Perçage Via aux Autres Semblables." msgstr "Exporte ce Perçage Via aux Autres Semblables."
#: pcbnew/onrightclick.cpp:503 #: pcbnew/onrightclick.cpp:505
msgid "Set ALL Via Holes to Default" msgid "Set ALL Via Holes to Default"
msgstr "Ajuste Perçage TOUTES Vias à Défaut" msgstr "Ajuste Perçage TOUTES Vias à Défaut"
#: pcbnew/onrightclick.cpp:516 #: pcbnew/onrightclick.cpp:518
msgid "Move Node" msgid "Move Node"
msgstr "Déplace Noeud" msgstr "Déplace Noeud"
#: pcbnew/onrightclick.cpp:521 #: pcbnew/onrightclick.cpp:523
msgid "Drag Segments, Keep Slope" msgid "Drag Segments, Keep Slope"
msgstr "Drag Segments, Garder Direction" msgstr "Drag Segments, Garder Direction"
#: pcbnew/onrightclick.cpp:523 #: pcbnew/onrightclick.cpp:525
msgid "Drag Segment" msgid "Drag Segment"
msgstr "Drag Segment" msgstr "Drag Segment"
#: pcbnew/onrightclick.cpp:526 #: pcbnew/onrightclick.cpp:528
msgid "Move Segment" msgid "Move Segment"
msgstr "Déplace Segment" msgstr "Déplace Segment"
#: pcbnew/onrightclick.cpp:529 #: pcbnew/onrightclick.cpp:531
msgid "Break Track" msgid "Break Track"
msgstr "Briser Piste" msgstr "Briser Piste"
#: pcbnew/onrightclick.cpp:536 #: pcbnew/onrightclick.cpp:538
msgid "Place Node" msgid "Place Node"
msgstr "Place noeud" msgstr "Place noeud"
#: pcbnew/onrightclick.cpp:543 #: pcbnew/onrightclick.cpp:545
msgid "End Track" msgid "End Track"
msgstr "Terminer Piste" msgstr "Terminer Piste"
#: pcbnew/onrightclick.cpp:546 #: pcbnew/onrightclick.cpp:548
msgid "Place Via" msgid "Place Via"
msgstr "Place Via" msgstr "Place Via"
#: pcbnew/onrightclick.cpp:553 #: pcbnew/onrightclick.cpp:555
msgid "Place Micro Via" msgid "Place Micro Via"
msgstr "Place Micro Via" msgstr "Place Micro Via"
#: pcbnew/onrightclick.cpp:565 #: pcbnew/onrightclick.cpp:567
msgid "Change Width" msgid "Change Width"
msgstr "Change Largeur" msgstr "Change Largeur"
#: pcbnew/onrightclick.cpp:567 #: pcbnew/onrightclick.cpp:569
msgid "Change Via Size" msgid "Change Via Size"
msgstr "Change Taille Via" msgstr "Change Taille Via"
#: pcbnew/onrightclick.cpp:567 #: pcbnew/onrightclick.cpp:569
msgid "Change Segment Width" msgid "Change Segment Width"
msgstr "Change Largeur Segment" msgstr "Change Largeur Segment"
#: pcbnew/onrightclick.cpp:570 #: pcbnew/onrightclick.cpp:572
msgid "Change Track Width" msgid "Change Track Width"
msgstr "Change Largeur Piste" msgstr "Change Largeur Piste"
#: pcbnew/onrightclick.cpp:572 #: pcbnew/onrightclick.cpp:574
msgid "Change Net" msgid "Change Net"
msgstr "Change Net" msgstr "Change Net"
#: pcbnew/onrightclick.cpp:574 #: pcbnew/onrightclick.cpp:576
msgid "Change ALL Tracks and Vias" msgid "Change ALL Tracks and Vias"
msgstr "Changer TOUTES Pistes et Vias" msgstr "Changer TOUTES Pistes et Vias"
#: pcbnew/onrightclick.cpp:576 #: pcbnew/onrightclick.cpp:578
msgid "Change ALL Vias (No Track)" msgid "Change ALL Vias (No Track)"
msgstr "Changer TOUTES Vias (Pas les Pistes)" msgstr "Changer TOUTES Vias (Pas les Pistes)"
#: pcbnew/onrightclick.cpp:578 #: pcbnew/onrightclick.cpp:580
msgid "Change ALL Tracks (No Via)" msgid "Change ALL Tracks (No Via)"
msgstr "Changer TOUTES Pistes (Pas les Vias)" msgstr "Changer TOUTES Pistes (Pas les Vias)"
#: pcbnew/onrightclick.cpp:584 #: pcbnew/onrightclick.cpp:586
#: pcbnew/onrightclick.cpp:771 #: pcbnew/onrightclick.cpp:773
#: pcbnew/onrightclick.cpp:826 #: pcbnew/onrightclick.cpp:828
#: pcbnew/onrightclick.cpp:875 #: pcbnew/onrightclick.cpp:877
msgid "Delete" msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: pcbnew/onrightclick.cpp:586 #: pcbnew/onrightclick.cpp:588
msgid "Delete Via" msgid "Delete Via"
msgstr "Suppression Via" msgstr "Suppression Via"
#: pcbnew/onrightclick.cpp:586 #: pcbnew/onrightclick.cpp:588
msgid "Delete Segment" msgid "Delete Segment"
msgstr "Supprimer Segment" msgstr "Supprimer Segment"
#: pcbnew/onrightclick.cpp:593 #: pcbnew/onrightclick.cpp:595
msgid "Delete Track" msgid "Delete Track"
msgstr "Effacer Piste" msgstr "Effacer Piste"
#: pcbnew/onrightclick.cpp:597 #: pcbnew/onrightclick.cpp:599
msgid "Delete Net" msgid "Delete Net"
msgstr "Supprimer Net" msgstr "Supprimer Net"
#: pcbnew/onrightclick.cpp:602 #: pcbnew/onrightclick.cpp:604
msgid "Set Flags" msgid "Set Flags"
msgstr "Ajust. Flags" msgstr "Ajust. Flags"
#: pcbnew/onrightclick.cpp:603 #: pcbnew/onrightclick.cpp:605
msgid "Locked: Yes" msgid "Locked: Yes"
msgstr "Verrou: Oui" msgstr "Verrou: Oui"
#: pcbnew/onrightclick.cpp:604 #: pcbnew/onrightclick.cpp:606
msgid "Locked: No" msgid "Locked: No"
msgstr "Verrou: Non" msgstr "Verrou: Non"
#: pcbnew/onrightclick.cpp:614 #: pcbnew/onrightclick.cpp:616
msgid "Track Locked: Yes" msgid "Track Locked: Yes"
msgstr "Piste Verrouillée: Oui" msgstr "Piste Verrouillée: Oui"
#: pcbnew/onrightclick.cpp:615 #: pcbnew/onrightclick.cpp:617
msgid "Track Locked: No" msgid "Track Locked: No"
msgstr "Piste Verrouillée: Non" msgstr "Piste Verrouillée: Non"
#: pcbnew/onrightclick.cpp:617 #: pcbnew/onrightclick.cpp:619
msgid "Net Locked: Yes" msgid "Net Locked: Yes"
msgstr "Net Verrouillé: Oui" msgstr "Net Verrouillé: Oui"
#: pcbnew/onrightclick.cpp:618 #: pcbnew/onrightclick.cpp:620
msgid "Net Locked: No" msgid "Net Locked: No"
msgstr "Net Verrouillé: Non" msgstr "Net Verrouillé: Non"
#: pcbnew/onrightclick.cpp:633 #: pcbnew/onrightclick.cpp:635
msgid "Place Edge Outline" msgid "Place Edge Outline"
msgstr "Place Segment de Contour" msgstr "Place Segment de Contour"
#: pcbnew/onrightclick.cpp:639 #: pcbnew/onrightclick.cpp:641
msgid "Place Corner" msgid "Place Corner"
msgstr "Place Sommet" msgstr "Place Sommet"
#: pcbnew/onrightclick.cpp:642 #: pcbnew/onrightclick.cpp:644
msgid "Place Zone" msgid "Place Zone"
msgstr "Place Zone" msgstr "Place Zone"
#: pcbnew/onrightclick.cpp:649 #: pcbnew/onrightclick.cpp:651
msgid "Zones" msgid "Zones"
msgstr "Zones" msgstr "Zones"
#: pcbnew/onrightclick.cpp:654 #: pcbnew/onrightclick.cpp:656
msgid "Move Corner" msgid "Move Corner"
msgstr "Déplace Sommet" msgstr "Déplace Sommet"
#: pcbnew/onrightclick.cpp:656 #: pcbnew/onrightclick.cpp:658
msgid "Delete Corner" msgid "Delete Corner"
msgstr "Supprimer Sommet" msgstr "Supprimer Sommet"
#: pcbnew/onrightclick.cpp:661 #: pcbnew/onrightclick.cpp:663
msgid "Create Corner" msgid "Create Corner"
msgstr "Créer Sommet" msgstr "Créer Sommet"
#: pcbnew/onrightclick.cpp:663 #: pcbnew/onrightclick.cpp:665
msgid "Drag Outline Segment" msgid "Drag Outline Segment"
msgstr "Drag Segment Contour" msgstr "Drag Segment Contour"
#: pcbnew/onrightclick.cpp:668 #: pcbnew/onrightclick.cpp:670
msgid "Add Similar Zone" msgid "Add Similar Zone"
msgstr "Addition d'une Zone Semblable" msgstr "Addition d'une Zone Semblable"
#: pcbnew/onrightclick.cpp:671 #: pcbnew/onrightclick.cpp:673
msgid "Add Cutout Area" msgid "Add Cutout Area"
msgstr "Addition d'une Zone Interdite" msgstr "Addition d'une Zone Interdite"
#: pcbnew/onrightclick.cpp:675 #: pcbnew/onrightclick.cpp:677
msgid "Fill Zone" msgid "Fill Zone"
msgstr "Remplir Zone" msgstr "Remplir Zone"
#: pcbnew/onrightclick.cpp:680 #: pcbnew/onrightclick.cpp:682
msgid "Remove Filled Areas in Zone" msgid "Remove Filled Areas in Zone"
msgstr "Supprimer le Remplissage de la Zone" msgstr "Supprimer le Remplissage de la Zone"
#: pcbnew/onrightclick.cpp:684 #: pcbnew/onrightclick.cpp:686
msgid "Move Zone" msgid "Move Zone"
msgstr "Déplace Zone" msgstr "Déplace Zone"
#: pcbnew/onrightclick.cpp:687 #: pcbnew/onrightclick.cpp:689
msgid "Edit Zone Params" msgid "Edit Zone Params"
msgstr "Editer Paramètres de la Zone" msgstr "Editer Paramètres de la Zone"
#: pcbnew/onrightclick.cpp:692 #: pcbnew/onrightclick.cpp:694
msgid "Delete Cutout" msgid "Delete Cutout"
msgstr "Supprimer Zone Interdite" msgstr "Supprimer Zone Interdite"
#: pcbnew/onrightclick.cpp:695 #: pcbnew/onrightclick.cpp:697
msgid "Delete Zone Outline" msgid "Delete Zone Outline"
msgstr "Supprimer Contour de Zone" msgstr "Supprimer Contour de Zone"
#: pcbnew/onrightclick.cpp:717 #: pcbnew/onrightclick.cpp:719
#: pcbnew/onrightclick.cpp:762 #: pcbnew/onrightclick.cpp:764
#: pcbnew/onrightclick.cpp:800 #: pcbnew/onrightclick.cpp:802
#: pcbnew/onrightclick.cpp:866 #: pcbnew/onrightclick.cpp:868
msgid "Move" msgid "Move"
msgstr "Déplacer" msgstr "Déplacer"
#: pcbnew/onrightclick.cpp:720 #: pcbnew/onrightclick.cpp:722
#: pcbnew/onrightclick.cpp:802 #: pcbnew/onrightclick.cpp:804
msgid "Drag" msgid "Drag"
msgstr "Drag" msgstr "Drag"
#: pcbnew/onrightclick.cpp:724 #: pcbnew/onrightclick.cpp:726
msgid "Rotate +" msgid "Rotate +"
msgstr "Rotation +" msgstr "Rotation +"
#: pcbnew/onrightclick.cpp:728 #: pcbnew/onrightclick.cpp:730
msgid "Rotate -" msgid "Rotate -"
msgstr "Rotation -" msgstr "Rotation -"
#: pcbnew/onrightclick.cpp:729 #: pcbnew/onrightclick.cpp:731
msgid "Flip" msgid "Flip"
msgstr "Change côté" msgstr "Change côté"
#: pcbnew/onrightclick.cpp:809 #: pcbnew/onrightclick.cpp:811
msgid "Copy current pad settings to this pad" msgid "Copy current pad settings to this pad"
msgstr "Copier les réglages courants pour ce pad" msgstr "Copier les réglages courants pour ce pad"
#: pcbnew/onrightclick.cpp:813 #: pcbnew/onrightclick.cpp:815
msgid "Copy this pad settings to current pad settings" msgid "Copy this pad settings to current pad settings"
msgstr "Copier les caractéristiques de ce pad vers les caractéristiques courantes" msgstr "Copier les caractéristiques de ce pad vers les caractéristiques courantes"
#: pcbnew/onrightclick.cpp:821 #: pcbnew/onrightclick.cpp:823
msgid "Copy this pad settings to all pads in this footprint (or similar footprints)" msgid "Copy this pad settings to all pads in this footprint (or similar footprints)"
msgstr "Copier les caractéristiques de ce pad vers tous les autres pads de ce module( ou modules similaires)" msgstr "Copier les caractéristiques de ce pad vers tous les autres pads de ce module( ou modules similaires)"
#: pcbnew/onrightclick.cpp:833 #: pcbnew/onrightclick.cpp:835
msgid "Autoroute Pad" msgid "Autoroute Pad"
msgstr "Autoroute Pad" msgstr "Autoroute Pad"
#: pcbnew/onrightclick.cpp:834 #: pcbnew/onrightclick.cpp:836
msgid "Autoroute Net" msgid "Autoroute Net"
msgstr "Autoroute Net" msgstr "Autoroute Net"
#: pcbnew/onrightclick.cpp:884
msgid "Delete Marker"
msgstr "Effacer Marqueur"
#: pcbnew/onrightclick.cpp:885
msgid "Marker Error Info"
msgstr "Info de Marqueurd'Erreur"
#: pcbnew/dialog_copper_zones_base.cpp:32 #: pcbnew/dialog_copper_zones_base.cpp:32
msgid "Zone Setup:" msgid "Zone Setup:"
msgstr "Options Zone:" msgstr "Options Zone:"
...@@ -5158,23 +5178,23 @@ msgstr "(Specifique)" ...@@ -5158,23 +5178,23 @@ msgstr "(Specifique)"
msgid "(Default)" msgid "(Default)"
msgstr "(Défaut)" msgstr "(Défaut)"
#: pcbnew/class_board.cpp:532 #: pcbnew/class_board.cpp:537
msgid "Nodes" msgid "Nodes"
msgstr "Nodes" msgstr "Nodes"
#: pcbnew/class_board.cpp:535 #: pcbnew/class_board.cpp:540
msgid "Nets" msgid "Nets"
msgstr "Nets" msgstr "Nets"
#: pcbnew/class_board.cpp:543 #: pcbnew/class_board.cpp:548
msgid "Links" msgid "Links"
msgstr "Liens" msgstr "Liens"
#: pcbnew/class_board.cpp:546 #: pcbnew/class_board.cpp:551
msgid "Connect" msgid "Connect"
msgstr "Connect" msgstr "Connect"
#: pcbnew/class_board.cpp:549 #: pcbnew/class_board.cpp:554
msgid "NoConn" msgid "NoConn"
msgstr "Non Conn" msgstr "Non Conn"
...@@ -5519,6 +5539,7 @@ msgstr "" ...@@ -5519,6 +5539,7 @@ msgstr ""
#: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:36 #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:36
#: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:83 #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:83
#: pcbnew/dialog_design_rules_base.cpp:134
msgid "Add" msgid "Add"
msgstr "Ajouter" msgstr "Ajouter"
...@@ -5537,6 +5558,7 @@ msgstr "Ajouter une nouvelle librairie avant la librairie sélectionnée, et la ...@@ -5537,6 +5558,7 @@ msgstr "Ajouter une nouvelle librairie avant la librairie sélectionnée, et la
#: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:46 #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:46
#: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:89 #: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:89
#: pcbnew/dialog_design_rules_base.cpp:137
msgid "Remove" msgid "Remove"
msgstr "Enlever" msgstr "Enlever"
...@@ -5670,6 +5692,126 @@ msgstr "Mire" ...@@ -5670,6 +5692,126 @@ msgstr "Mire"
msgid "size" msgid "size"
msgstr "dimension" msgstr "dimension"
#: pcbnew/dialog_design_rules_base.cpp:26
msgid "Layers Count"
msgstr "Nombre de Couches"
#: pcbnew/dialog_design_rules_base.cpp:46
msgid "Active"
msgstr "Active"
#: pcbnew/dialog_design_rules_base.cpp:47
msgid "Status"
msgstr "Status"
#: pcbnew/dialog_design_rules_base.cpp:48
msgid "Name"
msgstr "Nom"
#: pcbnew/dialog_design_rules_base.cpp:56
msgid "Inner 14"
msgstr "Interne 14"
#: pcbnew/dialog_design_rules_base.cpp:57
msgid "Inner 13"
msgstr "Interne 13"
#: pcbnew/dialog_design_rules_base.cpp:58
msgid "Inner 12"
msgstr "Interne 12"
#: pcbnew/dialog_design_rules_base.cpp:59
msgid "Inner 11"
msgstr "Interne 11"
#: pcbnew/dialog_design_rules_base.cpp:60
msgid "Inner 10"
msgstr "Interne 10"
#: pcbnew/dialog_design_rules_base.cpp:61
msgid "Inner 9"
msgstr "Interne 9"
#: pcbnew/dialog_design_rules_base.cpp:62
msgid "Inner 8"
msgstr "Interne 8"
#: pcbnew/dialog_design_rules_base.cpp:63
msgid "Inner 7"
msgstr "Interne 7"
#: pcbnew/dialog_design_rules_base.cpp:64
msgid "Inner 6"
msgstr "Interne 6"
#: pcbnew/dialog_design_rules_base.cpp:65
msgid "Inner 5"
msgstr "Interne 5"
#: pcbnew/dialog_design_rules_base.cpp:66
msgid "Inner 4"
msgstr "Interne 4"
#: pcbnew/dialog_design_rules_base.cpp:67
msgid "Inner 3"
msgstr "Interne 3"
#: pcbnew/dialog_design_rules_base.cpp:68
msgid "Inner 2"
msgstr "Interne 2"
#: pcbnew/dialog_design_rules_base.cpp:69
msgid "Inner 1"
msgstr "Interne 1"
#: pcbnew/dialog_design_rules_base.cpp:82
msgid "Layers"
msgstr "Couches"
#: pcbnew/dialog_design_rules_base.cpp:88
msgid "Net classes:"
msgstr "Classes d'Equipotentielles:"
#: pcbnew/dialog_design_rules_base.cpp:108
msgid "Track size"
msgstr "Largeur piste"
#: pcbnew/dialog_design_rules_base.cpp:109
msgid "Vias size"
msgstr "Diamètre via"
#: pcbnew/dialog_design_rules_base.cpp:111
msgid "Track Min Size"
msgstr "Taille Min Piste"
#: pcbnew/dialog_design_rules_base.cpp:119
msgid "Default"
msgstr "Défaut"
#: pcbnew/dialog_design_rules_base.cpp:120
msgid "Special"
msgstr "Special"
#: pcbnew/dialog_design_rules_base.cpp:163
msgid "<<<"
msgstr "<<<"
#: pcbnew/dialog_design_rules_base.cpp:166
msgid ">>>"
msgstr ">>>"
#: pcbnew/dialog_design_rules_base.cpp:172
msgid "<< Select All"
msgstr "<< Selectionner Tout"
#: pcbnew/dialog_design_rules_base.cpp:175
msgid "Select All >>"
msgstr "Selectionner Tout >>"
#: pcbnew/dialog_design_rules_base.cpp:209
msgid "Net Classes"
msgstr "Classes d'Equipots."
#: pcbnew/editrack-part2.cpp:32 #: pcbnew/editrack-part2.cpp:32
#, c-format #, c-format
msgid "Track Width: %s Vias Size : %s" msgid "Track Width: %s Vias Size : %s"
...@@ -5707,6 +5849,10 @@ msgstr "Change tous" ...@@ -5707,6 +5849,10 @@ msgstr "Change tous"
msgid "Browse Libs modules" msgid "Browse Libs modules"
msgstr "Liste modules" msgstr "Liste modules"
#: pcbnew/dialog_design_rules.cpp:319
msgid "New Net Class Name:"
msgstr "Nouveau Nom de Classe d'Equipotentielle:"
#: eeschema/libedit.cpp:35 #: eeschema/libedit.cpp:35
msgid " Part: " msgid " Part: "
msgstr "Composant " msgstr "Composant "
...@@ -6012,42 +6158,30 @@ msgstr "Impossible de trouver le composant " ...@@ -6012,42 +6158,30 @@ msgstr "Impossible de trouver le composant "
msgid " in library" msgid " in library"
msgstr " en librairie" msgstr " en librairie"
#: eeschema/netlist.cpp:202 #: eeschema/netlist.cpp:93
msgid "List" msgid "List"
msgstr "Liste" msgstr "Liste"
#: eeschema/netlist.cpp:220 #: eeschema/netlist.cpp:111
msgid "No component"
msgstr "Pas de composants"
#: eeschema/netlist.cpp:241
msgid "NbItems" msgid "NbItems"
msgstr "NbItems" msgstr "NbItems"
#: eeschema/netlist.cpp:345 #: eeschema/netlist.cpp:219
#: eeschema/netlist.cpp:387 #: eeschema/netlist.cpp:263
#: eeschema/netlist.cpp:410 #: eeschema/netlist.cpp:284
#: eeschema/netlist.cpp:427
msgid "Done" msgid "Done"
msgstr "Fini" msgstr "Fini"
#: eeschema/netlist.cpp:351 #: eeschema/netlist.cpp:225
msgid "Labels" msgid "Labels"
msgstr "Labels" msgstr "Labels"
#: eeschema/netlist.cpp:391 #: eeschema/netlist.cpp:267
msgid "Hierar." msgid "Hierar."
msgstr "Hiérar." msgstr "Hiérar."
#: eeschema/netlist.cpp:414
msgid "Sorting Nets"
msgstr "Tri des Nets"
#: eeschema/netlist.cpp:839
msgid "Bad Bus Label: "
msgstr "Mauvais label de Bus: "
#: eeschema/selpart.cpp:39 #: eeschema/selpart.cpp:39
#: eeschema/find.cpp:649
msgid "No libraries are loaded" msgid "No libraries are loaded"
msgstr "Pas de librairies chargées" msgstr "Pas de librairies chargées"
...@@ -6251,8 +6385,8 @@ msgstr "" ...@@ -6251,8 +6385,8 @@ msgstr ""
msgid "Error creating " msgid "Error creating "
msgstr "Erreur en création de " msgstr "Erreur en création de "
#: eeschema/netform.cpp:63 #: eeschema/netform.cpp:62
#: eeschema/netform.cpp:282 #: eeschema/netform.cpp:269
msgid "Failed to create file " msgid "Failed to create file "
msgstr "Impossible de créer le fichier " msgstr "Impossible de créer le fichier "
...@@ -6574,62 +6708,61 @@ msgstr "Pin de Feuille de Hiérarchie" ...@@ -6574,62 +6708,61 @@ msgstr "Pin de Feuille de Hiérarchie"
msgid "No New Hierarchal Label found" msgid "No New Hierarchal Label found"
msgstr "Pas de nouveau Label Hiérarchique trouvé" msgstr "Pas de nouveau Label Hiérarchique trouvé"
#: eeschema/erc.cpp:193 #: eeschema/erc.cpp:200
msgid "Annotation Required!"
msgstr "Numérotation requise!"
#: eeschema/erc.cpp:247
msgid "Duplicate Sheet name" msgid "Duplicate Sheet name"
msgstr "Nom de feuille en double" msgstr "Nom de feuille en double"
#: eeschema/erc.cpp:353 #: eeschema/erc.cpp:239
msgid "Annotation Required!"
msgstr "Numérotation requise!"
#: eeschema/erc.cpp:363
msgid "ERC File" msgid "ERC File"
msgstr "Fichier ERC" msgstr "Fichier ERC"
#: eeschema/erc.cpp:354 #: eeschema/erc.cpp:364
msgid "Electronic rule check file (.erc)|*.erc" msgid "Electronic rule check file (.erc)|*.erc"
msgstr "Fichier Contrôle des règles électroniques (.erc)|*.erc" msgstr "Fichier Contrôle des règles électroniques (.erc)|*.erc"
#: eeschema/erc.cpp:406 #: eeschema/erc.cpp:417
#, c-format #, c-format
msgid "HLabel %s not connected to SheetLabel" msgid "HLabel %s not connected to SheetLabel"
msgstr "HLabel %s non connecté à SheetLabel" msgstr "HLabel %s non connecté à SheetLabel"
#: eeschema/erc.cpp:410 #: eeschema/erc.cpp:421
#, c-format #, c-format
msgid "SheetLabel %s not connected to HLabel" msgid "SheetLabel %s not connected to HLabel"
msgstr "SheetLabel %s non connecté à HLabel" msgstr "SheetLabel %s non connecté à HLabel"
#: eeschema/erc.cpp:432 #: eeschema/erc.cpp:443
#, c-format #, c-format
msgid "Cmp %s, Pin %s (%s) Unconnected" msgid "Cmp %s, Pin %s (%s) Unconnected"
msgstr "Cmp %s, Pin %s (%s) Non connectée" msgstr "Cmp %s, Pin %s (%s) Non connectée"
#: eeschema/erc.cpp:447 #: eeschema/erc.cpp:459
#, c-format #, c-format
msgid "Cmp %s, Pin %s (%s) not driven (Net %d)" msgid "Cmp %s, Pin %s (%s) not driven (Net %d)"
msgstr "Cmp %s, Pin %s (%s) non pilotée (Net %d)" msgstr "Cmp %s, Pin %s (%s) non pilotée (Net %d)"
#: eeschema/erc.cpp:460 #: eeschema/erc.cpp:472
msgid "More than 1 Pin connected to UnConnect symbol" msgid "More than 1 Pin connected to UnConnect symbol"
msgstr "Plus de 1 Pin connectée à un symbole de non connexion" msgstr "Plus de 1 Pin connectée à un symbole de non connexion"
#: eeschema/erc.cpp:486 #: eeschema/erc.cpp:498
#, fuzzy, c-format #, c-format
msgid "Cmp %s, Pin %s (%s) connected to " msgid "Cmp %s, Pin %s (%s) connected to "
msgstr "Cmp %s, Pin %s (%s) Non connectée" msgstr "Cmp %s, Pin %s (%s) connectée à "
#: eeschema/erc.cpp:492 #: eeschema/erc.cpp:504
#, fuzzy, c-format #, c-format
msgid "Cmp %s, Pin %s (%s) (net %d)" msgid "Cmp %s, Pin %s (%s) (net %d)"
msgstr "Cmp %s, Pin %s (%s) Non connectée" msgstr "Cmp %s, Pin %s (%s) (net %d)"
#: eeschema/erc.cpp:609 #: eeschema/erc.cpp:648
#, fuzzy
msgid "ERC report" msgid "ERC report"
msgstr "Créer Rapport d'erreur" msgstr "Rapport d'erreur"
#: eeschema/erc.cpp:619 #: eeschema/erc.cpp:658
msgid "" msgid ""
"\n" "\n"
"***** Sheet / (Root) \n" "***** Sheet / (Root) \n"
...@@ -6637,7 +6770,7 @@ msgstr "" ...@@ -6637,7 +6770,7 @@ msgstr ""
"\n" "\n"
"***** Feuille/ ( Racine)\n" "***** Feuille/ ( Racine)\n"
#: eeschema/erc.cpp:624 #: eeschema/erc.cpp:663
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
...@@ -6646,7 +6779,7 @@ msgstr "" ...@@ -6646,7 +6779,7 @@ msgstr ""
"\n" "\n"
"***** Feuille %s\n" "***** Feuille %s\n"
#: eeschema/erc.cpp:643 #: eeschema/erc.cpp:682
#, c-format #, c-format
msgid "" msgid ""
"\n" "\n"
...@@ -6954,10 +7087,6 @@ msgstr "Miroir Bloc ||" ...@@ -6954,10 +7087,6 @@ msgstr "Miroir Bloc ||"
msgid "Copy to Clipboard" msgid "Copy to Clipboard"
msgstr "Copie dans Presse papier" msgstr "Copie dans Presse papier"
#: eeschema/onrightclick.cpp:643
msgid "About this Marker"
msgstr ""
#: eeschema/edit_label.cpp:48 #: eeschema/edit_label.cpp:48
msgid "Empty Text!" msgid "Empty Text!"
msgstr "Texte vide" msgstr "Texte vide"
...@@ -7309,61 +7438,61 @@ msgstr "Les parts sont verrouillées" ...@@ -7309,61 +7438,61 @@ msgstr "Les parts sont verrouillées"
msgid "Fields" msgid "Fields"
msgstr "Champs" msgstr "Champs"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:95 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:97
msgid "Add a new custom field" msgid "Add a new custom field"
msgstr "Ajouter un nouveau champ utilisateur" msgstr "Ajouter un nouveau champ utilisateur"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:100 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:102
msgid "Delete one of the optional fields" msgid "Delete one of the optional fields"
msgstr "Supprimer un des champs optionnels." msgstr "Supprimer un des champs optionnels."
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:104 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:106
msgid "Move Up" msgid "Move Up"
msgstr "Vers le haut ^" msgstr "Vers le haut ^"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:105 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:107
msgid "Move the selected optional fields up one position" msgid "Move the selected optional fields up one position"
msgstr "Déplacer le champ optionnel sélectionné de une position vers le haut" msgstr "Déplacer le champ optionnel sélectionné de une position vers le haut"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:115 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:117
msgid "Visibility" msgid "Visibility"
msgstr "Visibilité" msgstr "Visibilité"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:120 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:122
msgid "Show" msgid "Show"
msgstr "Visible" msgstr "Visible"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:122 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:124
msgid "Check if you want this field visible" msgid "Check if you want this field visible"
msgstr "Activer si vous voulez avoir ce champ visible" msgstr "Activer si vous voulez avoir ce champ visible"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:128 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:130
msgid "Check if you want this field's text rotated 90 degrees" msgid "Check if you want this field's text rotated 90 degrees"
msgstr "Activer si vous voulez avoir le texte de ce champ tourné à 90°" msgstr "Activer si vous voulez avoir le texte de ce champ tourné à 90°"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:134 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:136
#: eeschema/dialog_edit_label_base.cpp:43 #: eeschema/dialog_edit_label_base.cpp:43
msgid "Bold" msgid "Bold"
msgstr "Gras" msgstr "Gras"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:134 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:136
#: eeschema/dialog_edit_label_base.cpp:43 #: eeschema/dialog_edit_label_base.cpp:43
msgid "Bold Italic" msgid "Bold Italic"
msgstr "Gras Italique" msgstr "Gras Italique"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:136 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:138
msgid "Style:" msgid "Style:"
msgstr "Style:" msgstr "Style:"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:138 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:140
msgid "The style of the currently selected field's text in the schemati" msgid "The style of the currently selected field's text in the schemati"
msgstr "Le style du texte du champ actuellement sélectionné" msgstr "Le style du texte du champ actuellement sélectionné"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:147 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:149
msgid "Field Name" msgid "Field Name"
msgstr "Nom Champ" msgstr "Nom Champ"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:152 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:154
msgid "" msgid ""
"The name of the currently selected field\n" "The name of the currently selected field\n"
"Some fixed fields names are not editable" "Some fixed fields names are not editable"
...@@ -7371,43 +7500,43 @@ msgstr "" ...@@ -7371,43 +7500,43 @@ msgstr ""
"Le nom du champ actuellement sélectionné.\n" "Le nom du champ actuellement sélectionné.\n"
"Quelques noms de champs fixés ne sont pas modifiables." "Quelques noms de champs fixés ne sont pas modifiables."
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:161 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:163
msgid "Field Value" msgid "Field Value"
msgstr "Texte Champ" msgstr "Texte Champ"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:166 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:168
msgid "The text (or value) of the currently selected field" msgid "The text (or value) of the currently selected field"
msgstr "Le texte (ou la valeur) du champ actuellement sélectionné" msgstr "Le texte (ou la valeur) du champ actuellement sélectionné"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:175 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:177
msgid "Size(\")" msgid "Size(\")"
msgstr "Taille(\")" msgstr "Taille(\")"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:180 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:182
msgid "The size of the currently selected field's text in the schematic" msgid "The size of the currently selected field's text in the schematic"
msgstr "La taille du texte du champ actuellement sélectionné" msgstr "La taille du texte du champ actuellement sélectionné"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:192 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:194
msgid "PosX(\")" msgid "PosX(\")"
msgstr "PosX" msgstr "PosX"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:197 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:199
msgid "The X coordinate of the text relative to the component" msgid "The X coordinate of the text relative to the component"
msgstr "La position X du texte relativement au composant" msgstr "La position X du texte relativement au composant"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:206 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:208
msgid "PosY(\")" msgid "PosY(\")"
msgstr "PosY" msgstr "PosY"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:211 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:213
msgid "The Y coordinate of the text relative to the component" msgid "The Y coordinate of the text relative to the component"
msgstr "La position Y du texte relativement au composant" msgstr "La position Y du texte relativement au composant"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:222 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:224
msgid "Reset to Library Defaults" msgid "Reset to Library Defaults"
msgstr "Remettre aux Valeurs par Défaut en Librairie" msgstr "Remettre aux Valeurs par Défaut en Librairie"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:223 #: eeschema/dialog_edit_component_in_schematic_fbp.cpp:225
msgid "" msgid ""
"Set position and style of fields and component orientation to default lib value.\n" "Set position and style of fields and component orientation to default lib value.\n"
"Fields texts are not modified." "Fields texts are not modified."
...@@ -7541,11 +7670,6 @@ msgstr "Cette feuille utilise des données partagées dans une hiérarchie compl ...@@ -7541,11 +7670,6 @@ msgstr "Cette feuille utilise des données partagées dans une hiérarchie compl
msgid "Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)" msgid "Do we convert it in a simple hierarchical sheet (otherwise delete current sheet data)"
msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement supprimer les données courantes)" msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement supprimer les données courantes)"
#: eeschema/class_drawsheet.cpp:703
#: eeschema/dialog_create_component.cpp:147
msgid "Name"
msgstr "Nom"
#: eeschema/class_drawsheet.cpp:704 #: eeschema/class_drawsheet.cpp:704
msgid "FileName" msgid "FileName"
msgstr "Nom Fichier" msgstr "Nom Fichier"
...@@ -8128,93 +8252,93 @@ msgstr "Incrément Label:" ...@@ -8128,93 +8252,93 @@ msgstr "Incrément Label:"
msgid "Default Label Size" msgid "Default Label Size"
msgstr "Taille Label par défaut" msgstr "Taille Label par défaut"
#: eeschema/netlist_control.cpp:131 #: eeschema/netlist_control.cpp:129
#: eeschema/netlist_control.cpp:255 #: eeschema/netlist_control.cpp:253
msgid "Default format" msgid "Default format"
msgstr "Format par défaut" msgstr "Format par défaut"
#: eeschema/netlist_control.cpp:142 #: eeschema/netlist_control.cpp:140
msgid "&Browse Plugin" msgid "&Browse Plugin"
msgstr "&Examen Plugins" msgstr "&Examen Plugins"
#: eeschema/netlist_control.cpp:144 #: eeschema/netlist_control.cpp:142
msgid "&Netlist" msgid "&Netlist"
msgstr "&Netliste" msgstr "&Netliste"
#: eeschema/netlist_control.cpp:157 #: eeschema/netlist_control.cpp:155
msgid "&Ok" msgid "&Ok"
msgstr "&Ok" msgstr "&Ok"
#: eeschema/netlist_control.cpp:162 #: eeschema/netlist_control.cpp:160
msgid "&Delete" msgid "&Delete"
msgstr "&Supprimer" msgstr "&Supprimer"
#: eeschema/netlist_control.cpp:171 #: eeschema/netlist_control.cpp:169
#: eeschema/netlist_control.cpp:275 #: eeschema/netlist_control.cpp:273
msgid "Netlist" msgid "Netlist"
msgstr "Netliste" msgstr "Netliste"
#: eeschema/netlist_control.cpp:259 #: eeschema/netlist_control.cpp:257
msgid "Use Net Names" msgid "Use Net Names"
msgstr "Utiliser nom de net" msgstr "Utiliser nom de net"
#: eeschema/netlist_control.cpp:259 #: eeschema/netlist_control.cpp:257
msgid "Use Net Numbers" msgid "Use Net Numbers"
msgstr "Utiliser numéro de net" msgstr "Utiliser numéro de net"
#: eeschema/netlist_control.cpp:260 #: eeschema/netlist_control.cpp:258
msgid "Netlist Options:" msgid "Netlist Options:"
msgstr "Options de Netliste:" msgstr "Options de Netliste:"
#: eeschema/netlist_control.cpp:269 #: eeschema/netlist_control.cpp:267
msgid "Simulator command:" msgid "Simulator command:"
msgstr "Simulateur commande:" msgstr "Simulateur commande:"
#: eeschema/netlist_control.cpp:278 #: eeschema/netlist_control.cpp:276
msgid "&Run Simulator" msgid "&Run Simulator"
msgstr "&Simulateur" msgstr "&Simulateur"
#: eeschema/netlist_control.cpp:316 #: eeschema/netlist_control.cpp:314
msgid "Add Plugin" msgid "Add Plugin"
msgstr "Ajouter Plugin" msgstr "Ajouter Plugin"
#: eeschema/netlist_control.cpp:336 #: eeschema/netlist_control.cpp:334
msgid "Netlist command:" msgid "Netlist command:"
msgstr "Commande netliste:" msgstr "Commande netliste:"
#: eeschema/netlist_control.cpp:342 #: eeschema/netlist_control.cpp:340
msgid "Title:" msgid "Title:"
msgstr "Titre:" msgstr "Titre:"
#: eeschema/netlist_control.cpp:360 #: eeschema/netlist_control.cpp:358
msgid "Plugin files:" msgid "Plugin files:"
msgstr "Fichiers Plugins:" msgstr "Fichiers Plugins:"
#: eeschema/netlist_control.cpp:383 #: eeschema/netlist_control.cpp:381
msgid "Do not forget to choose a title for this netlist control page" msgid "Do not forget to choose a title for this netlist control page"
msgstr "Ne pas oublier de choisir un titre pour cette page de contrôle de netliste" msgstr "Ne pas oublier de choisir un titre pour cette page de contrôle de netliste"
#: eeschema/netlist_control.cpp:463 #: eeschema/netlist_control.cpp:461
msgid "SPICE netlist file (.cir)|*.cir" msgid "SPICE netlist file (.cir)|*.cir"
msgstr "Fichier netliste SPICE (.cir)|*.cir" msgstr "Fichier netliste SPICE (.cir)|*.cir"
#: eeschema/netlist_control.cpp:468 #: eeschema/netlist_control.cpp:466
msgid "CadStar netlist file (.frp)|*.frp" msgid "CadStar netlist file (.frp)|*.frp"
msgstr "Fichier netliste CadStar (.frp)|*.frp" msgstr "Fichier netliste CadStar (.frp)|*.frp"
#: eeschema/netlist_control.cpp:479 #: eeschema/netlist_control.cpp:477
msgid "Save Netlist Files" msgid "Save Netlist Files"
msgstr "Sauver Fichiers Netlistes" msgstr "Sauver Fichiers Netlistes"
#: eeschema/netlist_control.cpp:491 #: eeschema/netlist_control.cpp:489
msgid "Must be Annotated, Continue ?" msgid "Must be Annotated, Continue ?"
msgstr "Annotation nécessaire, continuer?" msgstr "Annotation nécessaire, continuer?"
#: eeschema/netlist_control.cpp:654 #: eeschema/netlist_control.cpp:651
msgid "Error. You must provide a command String" msgid "Error. You must provide a command String"
msgstr "Erreur. Vous devez entrer une ligne de commande" msgstr "Erreur. Vous devez entrer une ligne de commande"
#: eeschema/netlist_control.cpp:659 #: eeschema/netlist_control.cpp:656
msgid "Error. You must provide a Title" msgid "Error. You must provide a Title"
msgstr "Erreur. Vous devez entrer un titre" msgstr "Erreur. Vous devez entrer un titre"
...@@ -8260,12 +8384,10 @@ msgid "Options :" ...@@ -8260,12 +8384,10 @@ msgid "Options :"
msgstr "Options :" msgstr "Options :"
#: eeschema/dialog_cmp_graphic_properties.cpp:154 #: eeschema/dialog_cmp_graphic_properties.cpp:154
#: eeschema/pinedit-dialog.cpp:180
msgid "Common to Units" msgid "Common to Units"
msgstr "Commun aux Unités" msgstr "Commun aux Unités"
#: eeschema/dialog_cmp_graphic_properties.cpp:158 #: eeschema/dialog_cmp_graphic_properties.cpp:158
#: eeschema/pinedit-dialog.cpp:184
msgid "Common to convert" msgid "Common to convert"
msgstr "Commun à converti" msgstr "Commun à converti"
...@@ -8484,43 +8606,43 @@ msgid "Text Shape:" ...@@ -8484,43 +8606,43 @@ msgid "Text Shape:"
msgstr "Aspect Texte:" msgstr "Aspect Texte:"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:82 #: eeschema/dialog_bodygraphictext_properties_base.cpp:82
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:54 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
msgid "Align left" msgid "Align left"
msgstr "Alignement à gauche" msgstr "Alignement à gauche"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:82 #: eeschema/dialog_bodygraphictext_properties_base.cpp:82
#: eeschema/dialog_bodygraphictext_properties_base.cpp:88 #: eeschema/dialog_bodygraphictext_properties_base.cpp:88
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:54 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:67 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
msgid "Align center" msgid "Align center"
msgstr "Alignement au centre" msgstr "Alignement au centre"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:82 #: eeschema/dialog_bodygraphictext_properties_base.cpp:82
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:54 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
msgid "Align right" msgid "Align right"
msgstr "Alignement à droite" msgstr "Alignement à droite"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:84 #: eeschema/dialog_bodygraphictext_properties_base.cpp:84
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:58
msgid "Horiz. Justify" msgid "Horiz. Justify"
msgstr "Justification Horiz." msgstr "Justification Horiz."
#: eeschema/dialog_bodygraphictext_properties_base.cpp:88 #: eeschema/dialog_bodygraphictext_properties_base.cpp:88
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:67 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
msgid "Align bottom" msgid "Align bottom"
msgstr "Alignement en bas" msgstr "Alignement en bas"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:88 #: eeschema/dialog_bodygraphictext_properties_base.cpp:88
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:67 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
msgid "Align top" msgid "Align top"
msgstr "Alignement au sommet" msgstr "Alignement au sommet"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:90 #: eeschema/dialog_bodygraphictext_properties_base.cpp:90
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:71
msgid "Vert. Justify" msgid "Vert. Justify"
msgstr "Vert. Justifié" msgstr "Vert. Justifié"
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:143 #: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:145
msgid "The vertical height of the currently selected field's text in the schematic" msgid "The vertical height of the currently selected field's text in the schematic"
msgstr "La taille du texte du champ actuellement sélectionné" msgstr "La taille du texte du champ actuellement sélectionné"
...@@ -8919,57 +9041,13 @@ msgstr "Valeur Composant" ...@@ -8919,57 +9041,13 @@ msgstr "Valeur Composant"
msgid "Component footprint" msgid "Component footprint"
msgstr "Module du Composant" msgstr "Module du Composant"
#: eeschema/eelibs_read_libraryfiles.cpp:67
#, c-format
msgid "Library <%s> not found"
msgstr "Librairie %s non trouvée"
#: eeschema/eelibs_read_libraryfiles.cpp:161
msgid " error!"
msgstr " erreur!"
#: eeschema/eelibs_read_libraryfiles.cpp:169
msgid ""
"The following libraries could not be found:\n"
"\n"
msgstr ""
"The following libraries could not be found:\n"
"\n"
#: eeschema/eelibs_read_libraryfiles.cpp:171
msgid "Load error!"
msgstr "Erreur de chargement!"
#: eeschema/eelibs_read_libraryfiles.cpp:301
#: eeschema/eelibs_read_libraryfiles.cpp:308
msgid "File <"
msgstr "Fichier <"
#: eeschema/eelibs_read_libraryfiles.cpp:301
msgid "> is empty!"
msgstr "> est vide"
#: eeschema/eelibs_read_libraryfiles.cpp:309
msgid "> is NOT EESCHEMA library!"
msgstr "> n'est PAS une librairie EESCHEMA !"
#: eeschema/eelibs_read_libraryfiles.cpp:326
msgid "Library <"
msgstr "Librairie <"
#: eeschema/eelibs_read_libraryfiles.cpp:327
msgid "> header read error"
msgstr "> erreur lecture entête"
#: eeschema/class_drc_erc_item.cpp:39 #: eeschema/class_drc_erc_item.cpp:39
#, fuzzy
msgid "ERC err unspecified" msgid "ERC err unspecified"
msgstr "Non specifié" msgstr "Erreur ERC non specifiée"
#: eeschema/class_drc_erc_item.cpp:41 #: eeschema/class_drc_erc_item.cpp:41
#, fuzzy
msgid "Duplicate sheet names within a given sheet" msgid "Duplicate sheet names within a given sheet"
msgstr "Nom de feuille en double" msgstr "Nom de feuille en double dans une feuile donnée"
#: eeschema/class_drc_erc_item.cpp:43 #: eeschema/class_drc_erc_item.cpp:43
msgid "Pin not connected (and no connect symbol found on this pin)" msgid "Pin not connected (and no connect symbol found on this pin)"
...@@ -8988,9 +9066,8 @@ msgid "Confict problem between pins. Severity: error" ...@@ -8988,9 +9066,8 @@ msgid "Confict problem between pins. Severity: error"
msgstr "Problème de conflit entre pins. Sévérité: erreur" msgstr "Problème de conflit entre pins. Sévérité: erreur"
#: eeschema/class_drc_erc_item.cpp:51 #: eeschema/class_drc_erc_item.cpp:51
#, fuzzy
msgid "Mismatch between hierarchical labels and pins sheets" msgid "Mismatch between hierarchical labels and pins sheets"
msgstr "Addition de pins de hiérarchie dans les feuilles symboles de hiérarchie" msgstr "Différence entre labels de hiérarchieet pins de hiérarchie"
#: eeschema/class_drc_erc_item.cpp:53 #: eeschema/class_drc_erc_item.cpp:53
msgid "A no connect symbol is connected to more than 1 pin" msgid "A no connect symbol is connected to more than 1 pin"
...@@ -9012,28 +9089,28 @@ msgstr "Pas de nom de composant!" ...@@ -9012,28 +9089,28 @@ msgstr "Pas de nom de composant!"
msgid "Component [%s] not found!" msgid "Component [%s] not found!"
msgstr "Composant [%s] non trouvé!" msgstr "Composant [%s] non trouvé!"
#: eeschema/load_one_schematic_file.cpp:71 #: eeschema/load_one_schematic_file.cpp:70
msgid "Failed to open " msgid "Failed to open "
msgstr "Erreur ouverture " msgstr "Erreur ouverture "
#: eeschema/load_one_schematic_file.cpp:76 #: eeschema/load_one_schematic_file.cpp:75
msgid "Loading " msgid "Loading "
msgstr "Chargement " msgstr "Chargement "
#: eeschema/load_one_schematic_file.cpp:83 #: eeschema/load_one_schematic_file.cpp:82
#: eeschema/load_one_schematic_file.cpp:114 #: eeschema/load_one_schematic_file.cpp:113
msgid " is NOT an EESchema file!" msgid " is NOT an EESchema file!"
msgstr " n'est PAS un fichier EESchema!" msgstr " n'est PAS un fichier EESchema!"
#: eeschema/load_one_schematic_file.cpp:94 #: eeschema/load_one_schematic_file.cpp:93
msgid " was created by a more recent version of EESchema and may not load correctly. Please consider updating!" msgid " was created by a more recent version of EESchema and may not load correctly. Please consider updating!"
msgstr " a été créé par une version plus récente de Eeschema et peut ne pas être chargé correctement. SVP mettez à jour Eeschema!" msgstr " a été créé par une version plus récente de Eeschema et peut ne pas être chargé correctement. SVP mettez à jour Eeschema!"
#: eeschema/load_one_schematic_file.cpp:103 #: eeschema/load_one_schematic_file.cpp:102
msgid " was created by an older version of EESchema. It will be stored in the new file format when you save this file again." msgid " was created by an older version of EESchema. It will be stored in the new file format when you save this file again."
msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde." msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde."
#: eeschema/load_one_schematic_file.cpp:415 #: eeschema/load_one_schematic_file.cpp:380
msgid "Done Loading " msgid "Done Loading "
msgstr "Chargement terminé" msgstr "Chargement terminé"
...@@ -9170,14 +9247,12 @@ msgid "&Del Markers" ...@@ -9170,14 +9247,12 @@ msgid "&Del Markers"
msgstr "&Supprimer Marqueurs" msgstr "&Supprimer Marqueurs"
#: eeschema/dialog_erc_base.cpp:101 #: eeschema/dialog_erc_base.cpp:101
#, fuzzy
msgid "Create ERC report" msgid "Create ERC report"
msgstr "Créer Rapport d'erreur" msgstr "Créer Rapport d'erreur"
#: eeschema/dialog_erc_base.cpp:108 #: eeschema/dialog_erc_base.cpp:108
#, fuzzy
msgid "Markers:" msgid "Markers:"
msgstr "Marqueur" msgstr "Marqueurs:"
#: eeschema/dialog_erc_base.cpp:120 #: eeschema/dialog_erc_base.cpp:120
msgid "ERC" msgid "ERC"
...@@ -9187,6 +9262,40 @@ msgstr "ERC" ...@@ -9187,6 +9262,40 @@ msgstr "ERC"
msgid "Reset" msgid "Reset"
msgstr "Défaut" msgstr "Défaut"
#: eeschema/eelibs_read_libraryfiles.cpp:69
#, c-format
msgid "Library <%s> not found"
msgstr "Librairie %s non trouvée"
#: eeschema/eelibs_read_libraryfiles.cpp:163
msgid " error!"
msgstr " erreur!"
#: eeschema/eelibs_read_libraryfiles.cpp:172
msgid "The following libraries could not be found:"
msgstr "Les librairies suivantes n'ont pas pu être trouvées:"
#: eeschema/eelibs_read_libraryfiles.cpp:305
#: eeschema/eelibs_read_libraryfiles.cpp:312
msgid "File <"
msgstr "Fichier <"
#: eeschema/eelibs_read_libraryfiles.cpp:305
msgid "> is empty!"
msgstr "> est vide"
#: eeschema/eelibs_read_libraryfiles.cpp:313
msgid "> is NOT EESCHEMA library!"
msgstr "> n'est PAS une librairie EESCHEMA !"
#: eeschema/eelibs_read_libraryfiles.cpp:330
msgid "Library <"
msgstr "Librairie <"
#: eeschema/eelibs_read_libraryfiles.cpp:331
msgid "> header read error"
msgstr "> erreur lecture entête"
#: eeschema/component_wizard/dialog_component_setup.cpp:137 #: eeschema/component_wizard/dialog_component_setup.cpp:137
msgid "Quick KICAD Library Component Builder" msgid "Quick KICAD Library Component Builder"
msgstr "" msgstr ""
...@@ -9502,52 +9611,16 @@ msgstr "Modules (Tous): %d" ...@@ -9502,52 +9611,16 @@ msgstr "Modules (Tous): %d"
msgid "Footprints (filtered): %d" msgid "Footprints (filtered): %d"
msgstr "Modules (filtrés): %d" msgstr "Modules (filtrés): %d"
#: cvpcb/listlib.cpp:63
msgid "No PCB foot print libraries are listed in the current project file."
msgstr "Aucune librairie de modules PCB listée dans le fichier projet courant."
#: cvpcb/listlib.cpp:64
msgid "Project File Error"
msgstr "Erreur en Fichier Projet"
#: cvpcb/listlib.cpp:80
#: cvpcb/loadcmp.cpp:50 #: cvpcb/loadcmp.cpp:50
#, c-format #, c-format
msgid "PCB foot print library file <%s> could not be found in the default search paths." msgid "PCB foot print library file <%s> could not be found in the default search paths."
msgstr "Le fichier librairie de modules PCB <%s> n'a pas pu être trouvé dans les chemins de recherche par défaut." msgstr "Le fichier librairie de modules PCB <%s> n'a pas pu être trouvé dans les chemins de recherche par défaut."
#: cvpcb/listlib.cpp:91
#: cvpcb/loadcmp.cpp:61 #: cvpcb/loadcmp.cpp:61
#, c-format #, c-format
msgid "Could not open PCB foot print library file <%s>." msgid "Could not open PCB foot print library file <%s>."
msgstr "Ne peut ouvrir le fichier librairie de modules PCB <%s>." msgstr "Ne peut ouvrir le fichier librairie de modules PCB <%s>."
#: cvpcb/listlib.cpp:101
#, c-format
msgid "<%s> is not a valid Kicad PCB foot print library"
msgstr "<%s> n'est pas un fichier librairie module Kicad PCB valide."
#: cvpcb/listlib.cpp:133
#, c-format
msgid "Unexpected end of file occurred while parsing PCB foot print library <%s>."
msgstr "Fin de fichier inattendue lors de l'analyse de la librairie de modules PCB <%s>."
#: cvpcb/listlib.cpp:147
msgid ""
"The following mdc files could not be found:\n"
"\n"
msgstr ""
"The following fichiers mdc could not be found:\n"
"\n"
#: cvpcb/listlib.cpp:155
msgid ""
"The following mdc files are invalid:\n"
"\n"
msgstr ""
"The fichiers mdcsuivants sont invalides:\n"
"\n"
#: cvpcb/loadcmp.cpp:74 #: cvpcb/loadcmp.cpp:74
#, c-format #, c-format
msgid "<%s> is not a valid Kicad PCB foot print library." msgid "<%s> is not a valid Kicad PCB foot print library."
...@@ -9558,6 +9631,34 @@ msgstr "<%s> in'est pas un fichier de module PCB Kicad valide." ...@@ -9558,6 +9631,34 @@ msgstr "<%s> in'est pas un fichier de module PCB Kicad valide."
msgid "Module %s not found" msgid "Module %s not found"
msgstr "Module %s non trouvé" msgstr "Module %s non trouvé"
#: cvpcb/listlib.cpp:62
msgid "No PCB foot print libraries are listed in the current project file."
msgstr "Aucune librairie de modules PCB listée dans le fichier projet courant."
#: cvpcb/listlib.cpp:63
msgid "Project File Error"
msgstr "Erreur en Fichier Projet"
#: cvpcb/listlib.cpp:88
msgid " (file cannot be opened)"
msgstr "(le fichier n'a pas pu être ouvert)"
#: cvpcb/listlib.cpp:96
msgid " (Not a Kicad file)"
msgstr "(N'est pas un fichier Kicad)"
#: cvpcb/listlib.cpp:126
msgid " (Unexpected end of file)"
msgstr "(Fin de fichier inattendue)"
#: cvpcb/listlib.cpp:141
msgid "Some files could not be found!"
msgstr "Certains fichiers n'ont pas pu être trouvés!"
#: cvpcb/listlib.cpp:150
msgid "Some files are invalid!"
msgstr "Certains fichiers sont invalides!"
#: cvpcb/autosel.cpp:93 #: cvpcb/autosel.cpp:93
#, c-format #, c-format
msgid "Footprint alias library file <%s> could not be found in the default search paths." msgid "Footprint alias library file <%s> could not be found in the default search paths."
...@@ -9620,7 +9721,6 @@ msgid "1:1 zoom" ...@@ -9620,7 +9721,6 @@ msgid "1:1 zoom"
msgstr "1:1 zoom" msgstr "1:1 zoom"
#: cvpcb/readschematicnetlist.cpp:114 #: cvpcb/readschematicnetlist.cpp:114
#: kicad/prjconfig.cpp:94
msgid "> not found" msgid "> not found"
msgstr "> non trouvé" msgstr "> non trouvé"
...@@ -10713,10 +10813,6 @@ msgstr "Contour Pcb" ...@@ -10713,10 +10813,6 @@ msgstr "Contour Pcb"
msgid "BAD INDEX" msgid "BAD INDEX"
msgstr "BAD INDEX" msgstr "BAD INDEX"
#: common/edaappl.cpp:95
msgid "Default"
msgstr "Défaut"
#: common/edaappl.cpp:112 #: common/edaappl.cpp:112
msgid "French" msgid "French"
msgstr "Français" msgstr "Français"
...@@ -10985,6 +11081,10 @@ msgstr "Via Aveugle/Enterrée" ...@@ -10985,6 +11081,10 @@ msgstr "Via Aveugle/Enterrée"
msgid "Kicad footprint library files (*.mod)|*.mod" msgid "Kicad footprint library files (*.mod)|*.mod"
msgstr "Fichiers Modules Kicad (*.mod)|*.mod" msgstr "Fichiers Modules Kicad (*.mod)|*.mod"
#: common/class_marker_base.cpp:183
msgid "Marker Info"
msgstr "Info Marqueur"
#: common/drawframe.cpp:302 #: common/drawframe.cpp:302
msgid "Inch" msgid "Inch"
msgstr "Pouce" msgstr "Pouce"
...@@ -10993,63 +11093,67 @@ msgstr "Pouce" ...@@ -10993,63 +11093,67 @@ msgstr "Pouce"
msgid "??" msgid "??"
msgstr "??" msgstr "??"
#: common/dialog_load_error.cpp:5
msgid "Load Error!"
msgstr "Erreur de Chargement!"
#: 3d-viewer/3d_aux.cpp:206 #: 3d-viewer/3d_aux.cpp:206
msgid "Vertex " msgid "Vertex "
msgstr "Vertex " msgstr "Vertex "
#: 3d-viewer/3d_canvas.cpp:323 #: 3d-viewer/3d_canvas.cpp:330
msgid "Zoom +" msgid "Zoom +"
msgstr "Zoom +" msgstr "Zoom +"
#: 3d-viewer/3d_canvas.cpp:328 #: 3d-viewer/3d_canvas.cpp:335
msgid "Zoom -" msgid "Zoom -"
msgstr "Zoom -" msgstr "Zoom -"
#: 3d-viewer/3d_canvas.cpp:334 #: 3d-viewer/3d_canvas.cpp:341
msgid "Top View" msgid "Top View"
msgstr "Vue de dessus" msgstr "Vue de dessus"
#: 3d-viewer/3d_canvas.cpp:339 #: 3d-viewer/3d_canvas.cpp:346
msgid "Bottom View" msgid "Bottom View"
msgstr "Vue de dessous" msgstr "Vue de dessous"
#: 3d-viewer/3d_canvas.cpp:345 #: 3d-viewer/3d_canvas.cpp:352
msgid "Right View" msgid "Right View"
msgstr "Vue à Droite" msgstr "Vue à Droite"
#: 3d-viewer/3d_canvas.cpp:350 #: 3d-viewer/3d_canvas.cpp:357
msgid "Left View" msgid "Left View"
msgstr "Vue à Gauche" msgstr "Vue à Gauche"
#: 3d-viewer/3d_canvas.cpp:357 #: 3d-viewer/3d_canvas.cpp:364
msgid "Front View" msgid "Front View"
msgstr "Vue de face" msgstr "Vue de face"
#: 3d-viewer/3d_canvas.cpp:362 #: 3d-viewer/3d_canvas.cpp:369
msgid "Back View" msgid "Back View"
msgstr "Vue arrière" msgstr "Vue arrière"
#: 3d-viewer/3d_canvas.cpp:368 #: 3d-viewer/3d_canvas.cpp:375
#: 3d-viewer/3d_toolbar.cpp:85 #: 3d-viewer/3d_toolbar.cpp:85
msgid "Move left <-" msgid "Move left <-"
msgstr "Vers la gauche <-" msgstr "Vers la gauche <-"
#: 3d-viewer/3d_canvas.cpp:373 #: 3d-viewer/3d_canvas.cpp:380
#: 3d-viewer/3d_toolbar.cpp:88 #: 3d-viewer/3d_toolbar.cpp:88
msgid "Move right ->" msgid "Move right ->"
msgstr "Vers la droite ->" msgstr "Vers la droite ->"
#: 3d-viewer/3d_canvas.cpp:378 #: 3d-viewer/3d_canvas.cpp:385
#: 3d-viewer/3d_toolbar.cpp:91 #: 3d-viewer/3d_toolbar.cpp:91
msgid "Move Up ^" msgid "Move Up ^"
msgstr "Vers le haut ^" msgstr "Vers le haut ^"
#: 3d-viewer/3d_canvas.cpp:383 #: 3d-viewer/3d_canvas.cpp:390
#: 3d-viewer/3d_toolbar.cpp:94 #: 3d-viewer/3d_toolbar.cpp:94
msgid "Move Down" msgid "Move Down"
msgstr "Vers le bas" msgstr "Vers le bas"
#: 3d-viewer/3d_canvas.cpp:616 #: 3d-viewer/3d_canvas.cpp:624
msgid "3D Image filename:" msgid "3D Image filename:"
msgstr "Nom fichier Image 3D:" msgstr "Nom fichier Image 3D:"
...@@ -11278,6 +11382,10 @@ msgstr "Créer Fichier SVG" ...@@ -11278,6 +11382,10 @@ msgstr "Créer Fichier SVG"
msgid "Fill Zones Options" msgid "Fill Zones Options"
msgstr "Options de Remplissage de Zone" msgstr "Options de Remplissage de Zone"
#: pcbnew/dialog_design_rules_base.h:94
msgid "Design Rules Editor"
msgstr "Editeur deRègles de Conception"
#: pcbnew/dialog_non_copper_zones_properties_base.h:59 #: pcbnew/dialog_non_copper_zones_properties_base.h:59
msgid "Non Copper Zones Properties" msgid "Non Copper Zones Properties"
msgstr "Propriétés des Zones sur couches non cuivre" msgstr "Propriétés des Zones sur couches non cuivre"
...@@ -11650,6 +11758,25 @@ msgstr "DCodes id." ...@@ -11650,6 +11758,25 @@ msgstr "DCodes id."
msgid "Page Settings" msgid "Page Settings"
msgstr "Ajustage opt Page" msgstr "Ajustage opt Page"
#~ msgid "No component"
#~ msgstr "Pas de composants"
#~ msgid "Sorting Nets"
#~ msgstr "Tri des Nets"
#~ msgid "Bad Bus Label: "
#~ msgstr "Mauvais label de Bus: "
#~ msgid "<%s> is not a valid Kicad PCB foot print library"
#~ msgstr "<%s> n'est pas un fichier librairie module Kicad PCB valide."
#~ msgid ""
#~ "Unexpected end of file occurred while parsing PCB foot print library <%s>."
#~ msgstr ""
#~ "Fin de fichier inattendue lors de l'analyse de la librairie de modules "
#~ "PCB <%s>."
#~ msgid ""
#~ "The following mdc files could not be found:\n"
#~ "\n"
#~ msgstr ""
#~ "The following fichiers mdc could not be found:\n"
#~ "\n"
#~ msgid "sheet %s (loc X=%f, Y=%f): %s\n" #~ msgid "sheet %s (loc X=%f, Y=%f): %s\n"
#~ msgstr "feuille %s (pos X=%f, Y=%f): %s\n" #~ msgstr "feuille %s (pos X=%f, Y=%f): %s\n"
#~ msgid "ERC finished, no error\n" #~ msgid "ERC finished, no error\n"
......
...@@ -32,6 +32,8 @@ set(PCBNEW_SRCS ...@@ -32,6 +32,8 @@ set(PCBNEW_SRCS
deltrack.cpp deltrack.cpp
dialog_copper_zones.cpp dialog_copper_zones.cpp
dialog_copper_zones_base.cpp dialog_copper_zones_base.cpp
dialog_design_rules.cpp
dialog_design_rules_base.cpp
dialog_display_options.cpp dialog_display_options.cpp
dialog_display_options_base.cpp dialog_display_options_base.cpp
dialog_drc_base.cpp dialog_drc_base.cpp
......
...@@ -36,6 +36,11 @@ BOARD::BOARD( EDA_BaseStruct* parent, WinEDA_BasePcbFrame* frame ) : ...@@ -36,6 +36,11 @@ BOARD::BOARD( EDA_BaseStruct* parent, WinEDA_BasePcbFrame* frame ) :
m_Layer[layer].m_Name = ReturnPcbLayerName( layer, true ); m_Layer[layer].m_Name = ReturnPcbLayerName( layer, true );
m_Layer[layer].m_Type = LT_SIGNAL; m_Layer[layer].m_Type = LT_SIGNAL;
} }
// Add the default Netclass to list
m_NetClassesList.m_Parent = this;
NETCLASS * default_netclass = new NETCLASS(this);
m_NetClassesList.AddNetclass( default_netclass );
} }
...@@ -929,6 +934,9 @@ bool BOARD::Save( FILE* aFile ) const ...@@ -929,6 +934,9 @@ bool BOARD::Save( FILE* aFile ) const
bool rc = false; bool rc = false;
BOARD_ITEM* item; BOARD_ITEM* item;
// save the netclasses
m_NetClassesList.Save( aFile );
// save the nets // save the nets
for( unsigned ii = 0; ii < m_NetInfo->GetNetsCount(); ii++ ) for( unsigned ii = 0; ii < m_NetInfo->GetNetsCount(); ii++ )
if( !m_NetInfo->GetNetItem( ii )->Save( aFile ) ) if( !m_NetInfo->GetNetItem( ii )->Save( aFile ) )
......
...@@ -22,7 +22,7 @@ enum LAYER_T { ...@@ -22,7 +22,7 @@ enum LAYER_T {
LT_SIGNAL, LT_SIGNAL,
LT_POWER, LT_POWER,
LT_MIXED, LT_MIXED,
LT_JUMPER, LT_JUMPER
}; };
...@@ -97,7 +97,8 @@ public: ...@@ -97,7 +97,8 @@ public:
std::vector<RATSNEST_ITEM> m_LocalRatsnest; /* Rastnest list relative to a given footprint std::vector<RATSNEST_ITEM> m_LocalRatsnest; /* Rastnest list relative to a given footprint
* (used while moving a footprint) */ * (used while moving a footprint) */
ZONE_CONTAINER* m_CurrentZoneContour; // zone contour currently in progress NETCLASS_LIST m_NetClassesList; // List of current netclasses. There is always the default netclass
ZONE_CONTAINER* m_CurrentZoneContour; // zone contour currently in progress
BOARD( EDA_BaseStruct* aParent, WinEDA_BasePcbFrame* frame ); BOARD( EDA_BaseStruct* aParent, WinEDA_BasePcbFrame* frame );
~BOARD(); ~BOARD();
...@@ -335,6 +336,17 @@ public: ...@@ -335,6 +336,17 @@ public:
*/ */
int ReturnSortedNetnamesList( wxArrayString& aNames, bool aSortbyPadsCount ); int ReturnSortedNetnamesList( wxArrayString& aNames, bool aSortbyPadsCount );
/**
* Function TransfertDesignRulesToNets
* Copy Netclass parameters to each net, corresponding to its net class
* Must be called after a Design Rules edition, or after reading a netlist (or editing the list of nets)
* Also this function remove the non existing nets in netclasses and add net nets in default netclass
* (this happens after reading a netlist)
* @param none
* @return none
*/
void TransfertDesignRulesToNets( );
/** /**
* Function Save * Function Save
* writes the data structures for this object out to a FILE in "*.brd" format. * writes the data structures for this object out to a FILE in "*.brd" format.
......
/*************************************/
/* class to handle Net Classes */
/**************************************/
#include "fctsys.h"
#include "common.h"
#include "kicad_string.h"
#include "pcbnew.h"
NET_DESIGN_PARAMS::NET_DESIGN_PARAMS()
{
m_TracksWidth = 170; // "Default" value for tracks thickness used to route this net
m_TracksMinWidth = 150; // Minimum value for tracks thickness (used in DRC)
m_ViasSize = 550; // "Default" value for vias sizes used to route this net
m_ViasMinSize = 400; // Minimum value for vias sizes (used in DRC)
m_Clearance = 140; // "Default" clearance when routing
m_MinClearance = 110; // Minimum value for clearance (used in DRC)
}
/* A NETCLASS handles a list of nets and the parameters used to route or test (in DRC) these nets
* This is mainly used in autotouters like Freeroute, but this can be also used in manual routing
*/
NETCLASS::NETCLASS( BOARD* aParent, const wxString& aName )
{
m_Parent = aParent;
m_Name = aName; // Name of the net class
}
NETCLASS::~NETCLASS()
{
}
NETCLASS_LIST::NETCLASS_LIST( BOARD* aParent )
{
m_Parent = aParent;
std::vector <NETCLASS*> m_Netclass_List;
}
NETCLASS_LIST::~NETCLASS_LIST()
{
ClearList();
}
void NETCLASS_LIST::ClearList()
{
// the NETCLASS_LIST is owner of its items, so delete them
for( unsigned ii = 0; ii < m_Netclass_List.size(); ii++ )
delete m_Netclass_List[ii];
m_Netclass_List.clear();
}
/** Function AddNetclass()
* @param aNetclass = a pointer to the netclass to add
* @return true if Ok, false if cannot be added (mainly because a netclass with the same name exists)
*/
bool NETCLASS_LIST::AddNetclass( NETCLASS* aNetclass )
{
// Test for an existing netclass:
for( unsigned ii = 0; ii < m_Netclass_List.size(); ii++ )
{
if( m_Netclass_List[ii]->m_Name.CmpNoCase( aNetclass->m_Name ) == 0 )
return false; // this netclass already exists
}
m_Netclass_List.push_back( aNetclass );
return true;
}
/**
* Function TransfertDesignRulesToNets
* Copy Netclass parameters to each net, corresponding to its net class
* Must be called after a Design Rules edition, or after reading a netlist (or editing the list of nets)
* Also this function remove the non existing nets in netclasses and add net nets in default netclass
* (this happens after reading a netlist)
* @param none
* @return none
*/
void BOARD::TransfertDesignRulesToNets()
{
// Clear .m_Flag member of nets (used to detect not in netclass list nets)
for( unsigned ii = 1; ; ii++ )
{
NETINFO_ITEM* net = FindNet( ii );
if( net == NULL )
break;
net->m_Flag = 0;
}
for( unsigned ii = 0; ii < m_NetClassesList.m_Netclass_List.size(); ii++ )
{
//Transfert rules and netclass name to nets:
NETCLASS* netclass = m_NetClassesList.m_Netclass_List[ii];
for( unsigned jj = 0; jj < netclass->GetMembersCount(); jj++ )
{
wxString netname = netclass->GetMemberName( jj );
NETINFO_ITEM* net = FindNet( netname );
if( net == NULL ) // This net does not exists: remove it
{
netclass->m_MembersNetNames.RemoveAt( jj );
jj--;
}
else
{
net->SetClass( *netclass );
net->m_Flag = 1;
}
}
}
// Now, set nets that do not have yet a netclass to default netclass
NETCLASS* defaultnetclass = m_NetClassesList.m_Netclass_List[0];
for( unsigned ii = 1; ; ii++ )
{
NETINFO_ITEM* net = FindNet( ii );
if( net == NULL )
break;
if( net->m_Flag == 0 )
{
net->SetClass( *defaultnetclass );
defaultnetclass->AddMember( net->GetNetname() );
}
}
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool NETCLASS_LIST::Save( FILE* aFile ) const
{
bool success = true;
for( unsigned ii = 0; ii < m_Netclass_List.size(); ii++ )
{
success = m_Netclass_List[ii]->Save( aFile );
if( !success )
break;
}
return success;
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool NETCLASS::Save( FILE* aFile ) const
{
bool success = true;
fprintf( aFile, "$NETCLASS\n" );
fprintf( aFile, "Name \"%s\"\n", CONV_TO_UTF8( m_Name ) );
// Write parameters
success = m_NetParams.Save( aFile );
// Write members list:
for( unsigned ii = 0; ii < GetMembersCount(); ii++ )
fprintf( aFile, "AddNet \"%s\"\n", CONV_TO_UTF8( GetMemberName( ii ) ) );
fprintf( aFile, "$EndNETCLASS\n" );
return success;
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool NET_DESIGN_PARAMS::Save( FILE* aFile ) const
{
bool success = true;
fprintf( aFile, "$PARAMS_START\n" );
fprintf( aFile, "TracksWidth %d\n", m_TracksWidth );
fprintf( aFile, "TracksMinWidth %d\n", m_TracksMinWidth );
fprintf( aFile, "ViasSize %d\n", m_ViasSize );
fprintf( aFile, "ViasMinSize %d\n", m_ViasMinSize );
fprintf( aFile, "Clearance %d\n", m_Clearance );
fprintf( aFile, "MinClearance %d\n", m_MinClearance );
fprintf( aFile, "$PARAMS_END\n" );
return success;
}
/**
* Function ReadDescr
* reads the data structures for this object from a FILE in "*.brd" format.
* @param aFile The FILE to read to.
* @return bool - true if success reading else false.
*/
bool NET_DESIGN_PARAMS::ReadDescr( FILE* aFile, int* aLineNum )
{
bool success = true;
char Line[1024];
while( GetLine( aFile, Line, aLineNum, 1024 ) != NULL )
{
if( strnicmp( Line, "$PARAMS_END", 11 ) == 0 )
return success;
if( strnicmp( Line, "TracksWidth", 11 ) == 0 )
{
m_TracksWidth = atoi( Line + 11 );
continue;
}
if( strnicmp( Line, "TracksMinWidth", 14 ) == 0 )
{
m_TracksMinWidth = atoi( Line + 14 );
continue;
}
if( strnicmp( Line, "ViasSize", 8 ) == 0 )
{
m_ViasSize = atoi( Line + 8 );
continue;
}
if( strnicmp( Line, "ViasMinSize", 11 ) == 0 )
{
m_ViasMinSize = atoi( Line + 11 );
continue;
}
if( strnicmp( Line, "Clearance", 9 ) == 0 )
{
m_Clearance = atoi( Line + 9 );
continue;
}
if( strnicmp( Line, "MinClearance", 12 ) == 0 )
{
m_MinClearance = atoi( Line + 12 );
continue;
}
}
return success;
}
/**
* Function ReadDescr
* reads the data structures for this object from a FILE in "*.brd" format.
* @param aFile The FILE to read to.
* @return bool - true if success reading else false.
*/
bool NETCLASS::ReadDescr( FILE* aFile, int* aLineNum )
{
bool success = true;
char Line[1024];
char Buffer[1024];
while( GetLine( aFile, Line, aLineNum, 1024 ) != NULL )
{
if( strnicmp( Line, "$endNETCLASS", 6 ) == 0 )
return success;
if( strnicmp( Line, "$PARAMS_START", 13 ) == 0 )
{
m_NetParams.ReadDescr( aFile, aLineNum );
continue;
}
if( strnicmp( Line, "Name", 4 ) == 0 )
{
ReadDelimitedText( Buffer, Line + 4, sizeof(Buffer) );
m_Name = CONV_FROM_UTF8( Buffer );
}
if( strnicmp( Line, "AddNet", 6 ) == 0 )
{
ReadDelimitedText( Buffer, Line + 6, sizeof(Buffer) );
wxString netname = CONV_FROM_UTF8( Buffer );
AddMember( netname );
}
}
return success;
}
/*************************************/
/* class to Net Classes */
/**************************************/
#ifndef CLASS_NETCLASS_H
#define CLASS_NETCLASS_H
/* this small class NET_DESIGN_PARAMS handles netclass parameters.
* This is a separate class because these parameters are also duplicated
* (for calculation time consideration) in each NETINFO_ITEM when making tests DRC and routing
*/
class NET_DESIGN_PARAMS
{
public:
int m_TracksWidth; // "Default" value for tracks thickness used to route this net
int m_TracksMinWidth; // Minimum value for tracks thickness (used in DRC)
int m_ViasSize; // "Default" value for vias sizes used to route this net
int m_ViasMinSize; // Minimum value for vias sizes (used in DRC)
int m_Clearance; // "Default" clearance when routing
int m_MinClearance; // Minimum value for clearance (used in DRC)
public:
NET_DESIGN_PARAMS();
~NET_DESIGN_PARAMS() {}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool Save( FILE* aFile ) const;
/**
* Function ReadDescr
* reads the data structures for this object from a FILE in "*.brd" format.
* @param aFile The FILE to read to.
* @return bool - true if success reading else false.
*/
bool ReadDescr( FILE* aFile, int* aLineNum );
};
/**
* @info A NETCLASS handles a list of nets and the parameters used to route or test these nets
*/
class NETCLASS
{
public:
BOARD* m_Parent;
wxString m_Name; // Name of the net class
wxArrayString m_MembersNetNames; // List of nets members of this class
NET_DESIGN_PARAMS m_NetParams; // values of net classes parameters
public:
NETCLASS( BOARD* aParent, const wxString& aName = wxT( "default" ) );
~NETCLASS();
/** Function GetMembersCount
*@return the number of nets using this rule
*/
unsigned GetMembersCount() const
{
return m_MembersNetNames.GetCount();
}
void ClearMembersList()
{
m_MembersNetNames.Clear();
}
void AddMember( const wxString& aNetname )
{
m_MembersNetNames.Add( aNetname );
}
wxString GetMemberName( unsigned aIdx ) const
{
if( aIdx < GetMembersCount() )
return m_MembersNetNames[aIdx];
else
return wxEmptyString;
}
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool Save( FILE* aFile ) const;
/**
* Function ReadDescr
* reads the data structures for this object from a FILE in "*.brd" format.
* @param aFile The FILE to read to.
* @return bool - true if success reading else false.
*/
bool ReadDescr( FILE* aFile, int* aLineNum );
};
/* This NETCLASS_LIST handles the list of NETCLASS for the board
* Note: the NETCLASS_LIST is owner of all NETCLASS in list
*/
class NETCLASS_LIST
{
public:
BOARD* m_Parent;
std::vector <NETCLASS*> m_Netclass_List;
public:
NETCLASS_LIST( BOARD* aParent = NULL );
~NETCLASS_LIST();
void ClearList();
/** Function GetNetClassCount()
* @return the number of existing netclasses
*/
unsigned GetNetClassCount()
{
return m_Netclass_List.size();
}
/** Function GetNetClass()
* @param aIdx = the index in netclass list
* @return a NETCLASS* pointer on the netclass
*/
NETCLASS* GetNetClass( unsigned aIdx )
{
if( GetNetClassCount() && aIdx < GetNetClassCount() )
return m_Netclass_List[aIdx];
else
return NULL;
}
/** Function AddNetclass()
* @param aNetclass = a pointer to the netclass to add
* @return true if Ok, false if cannot be added (mainly because a netclass with the same name exists)
*/
bool AddNetclass( NETCLASS* aNetclass );
/**
* Function Save
* writes the data structures for this object out to a FILE in "*.brd" format.
* @param aFile The FILE to write to.
* @return bool - true if success writing else false.
*/
bool Save( FILE* aFile ) const;
};
#endif // #ifndef CLASS_NETCLASS_H
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#ifndef __CLASSES_NETINFO__ #ifndef __CLASSES_NETINFO__
#define __CLASSES_NETINFO__ #define __CLASSES_NETINFO__
#include "class_netclass.h"
// Forward declaration: // Forward declaration:
class NETINFO_ITEM; class NETINFO_ITEM;
...@@ -147,17 +149,21 @@ private: ...@@ -147,17 +149,21 @@ private:
class NETINFO_ITEM class NETINFO_ITEM
{ {
private: private:
int m_NetCode; // this is a number equivalent to the net name int m_NetCode; // this is a number equivalent to the net name
// Used for fast comparisons in rastnest and DRC computations. // Used for fast comparisons in rastnest and DRC computations.
wxString m_Netname; // Full net name like /mysheet/mysubsheet/vout used by eeschema wxString m_Netname; // Full net name like /mysheet/mysubsheet/vout used by eeschema
wxString m_ShortNetname; // short net name, like vout from /mysheet/mysubsheet/vout wxString m_ShortNetname; // short net name, like vout from /mysheet/mysubsheet/vout
wxString m_NetClassName; /* Net Class name. if void this is equivalent to "default" (the first
* item of the net classes list
*/
NET_DESIGN_PARAMS m_NetParams; // values of net classes parameters
public: public:
int m_NbNodes; // Pads count for this net int m_NbNodes; // Pads count for this net
int m_NbLink; // Ratsnets count for this net int m_NbLink; // Ratsnets count for this net
int m_NbNoconn; // Ratsnets remaining to route count int m_NbNoconn; // Ratsnets remaining to route count
int m_ForceWidth; // specific width (0 = default width) int m_Flag; // used in some calculations. Had no special meaning
std::vector <D_PAD*> m_ListPad; // List of pads connected to this net std::vector <D_PAD*> m_ListPad; // List of pads connected to this net
unsigned m_RatsnestStartIdx; /* Starting point of ratsnests of this net (included) unsigned m_RatsnestStartIdx; /* Starting point of ratsnests of this net (included)
* in a general buffer of ratsnest (a vector<RATSNEST_ITEM*> buffer) * in a general buffer of ratsnest (a vector<RATSNEST_ITEM*> buffer)
...@@ -168,7 +174,86 @@ public: ...@@ -168,7 +174,86 @@ public:
~NETINFO_ITEM(); ~NETINFO_ITEM();
/* Readind and writing data on files */ /** Functions SetClassParameters
* copy the class parameters in the locale buffer m_NetParams
*/
void SetClassParameters(const NET_DESIGN_PARAMS& aParams )
{
m_NetParams = aParams;
}
/** Functions SetClass
* copy the class Name and class parmeters
*/
void SetClass(const NETCLASS& aNetclass )
{
m_NetParams = aNetclass.m_NetParams;
m_NetClassName = aNetclass.m_Name;
}
/** Functions GetClassName
* @return the class Name
*/
wxString GetClassName( ) const
{
return m_NetClassName;
}
/** function GetTracksWidth()
* @return the "default" value for tracks thickness used to route this net
*/
int GetTracksWidth()
{
return m_NetParams.m_TracksWidth;
}
/** Function GetTracksMinWidth()
* @return the Minimum value for tracks thickness (used in DRC)
*/
int GetTracksMinWidth()
{
return m_NetParams.m_TracksMinWidth = 150;
}
/** Function
* @return the "Default" value for vias sizes used to route this net
*/
int GetViasSize()
{
return m_NetParams.m_ViasSize;
}
/** Function GetViasMinSize()
* @return the Minimum value for vias sizes (used in DRC)
*/
int GetViasMinSize()
{
return m_NetParams.m_ViasMinSize;
}
/** Function GetClearance()
* @return the "Default" clearance when routing
*/
int GetClearance()
{
return m_NetParams.m_Clearance;
}
/** Function GetMinClearance()
* @return the Minimum value for clearance (used in DRC)
*/
int GetMinClearance()
{
return m_NetParams.m_MinClearance;
}
/* Reading and writing data on files */
int ReadDescr( FILE* File, int* LineNum ); int ReadDescr( FILE* File, int* LineNum );
/** /**
......
...@@ -17,8 +17,10 @@ ...@@ -17,8 +17,10 @@
NETINFO_ITEM::NETINFO_ITEM( BOARD_ITEM* aParent ) NETINFO_ITEM::NETINFO_ITEM( BOARD_ITEM* aParent )
{ {
SetNet( 0 ); SetNet( 0 );
m_NbNodes = m_NbLink = m_NbNoconn = 0; m_NbNodes = 0;
m_ForceWidth = 0; m_NbLink = 0;
m_NbNoconn = 0;
m_Flag = 0;
m_RatsnestStartIdx = 0; // Starting point of ratsnests of this net in a general buffer of ratsnest m_RatsnestStartIdx = 0; // Starting point of ratsnests of this net in a general buffer of ratsnest
m_RatsnestEndIdx = 0; // Ending point of ratsnests of this net m_RatsnestEndIdx = 0; // Ending point of ratsnests of this net
} }
...@@ -58,10 +60,10 @@ int NETINFO_ITEM:: ReadDescr( FILE* File, int* LineNum ) ...@@ -58,10 +60,10 @@ int NETINFO_ITEM:: ReadDescr( FILE* File, int* LineNum )
continue; continue;
} }
if( strncmp( Line, "Lw", 2 ) == 0 ) /* Texte */ if( strncmp( Line, "NetClass", 8 ) == 0 ) /* Net Class */
{ {
sscanf( Line + 2, " %d", &tmp ); ReadDelimitedText( Ltmp, Line + 8, sizeof(Ltmp) );
m_ForceWidth = tmp; m_NetClassName = CONV_FROM_UTF8( Ltmp );
continue; continue;
} }
} }
...@@ -70,9 +72,9 @@ int NETINFO_ITEM:: ReadDescr( FILE* File, int* LineNum ) ...@@ -70,9 +72,9 @@ int NETINFO_ITEM:: ReadDescr( FILE* File, int* LineNum )
} }
/**************************************/ /*******************************************/
bool NETINFO_ITEM::Save( FILE* aFile ) const bool NETINFO_ITEM::Save( FILE* aFile ) const
/**************************************/ /*******************************************/
/** Note: the old name of class NETINFO_ITEM was EQUIPOT /** Note: the old name of class NETINFO_ITEM was EQUIPOT
* so in Save (and read) functions, for compatibility, we use EQUIPOT as keyword * so in Save (and read) functions, for compatibility, we use EQUIPOT as keyword
...@@ -84,8 +86,7 @@ bool NETINFO_ITEM::Save( FILE* aFile ) const ...@@ -84,8 +86,7 @@ bool NETINFO_ITEM::Save( FILE* aFile ) const
fprintf( aFile, "Na %d \"%s\"\n", GetNet(), CONV_TO_UTF8( m_Netname ) ); fprintf( aFile, "Na %d \"%s\"\n", GetNet(), CONV_TO_UTF8( m_Netname ) );
fprintf( aFile, "St %s\n", "~" ); fprintf( aFile, "St %s\n", "~" );
if( m_ForceWidth ) fprintf( aFile, "NetClass \"%s\"\n", CONV_TO_UTF8(m_NetClassName) );
fprintf( aFile, "Lw %d\n", m_ForceWidth );
if( fprintf( aFile, "$EndEQUIPOT\n" ) != sizeof("$EndEQUIPOT\n") - 1 ) if( fprintf( aFile, "$EndEQUIPOT\n" ) != sizeof("$EndEQUIPOT\n") - 1 )
goto out; goto out;
......
...@@ -125,6 +125,7 @@ void NETINFO_LIST::BuildListOfNets() ...@@ -125,6 +125,7 @@ void NETINFO_LIST::BuildListOfNets()
} }
m_Parent->m_NbNodes = nodes_count; m_Parent->m_NbNodes = nodes_count;
m_Parent->TransfertDesignRulesToNets( );
m_Parent->m_Status_Pcb |= NET_CODES_OK; m_Parent->m_Status_Pcb |= NET_CODES_OK;
......
/////////////////////////////////////////////////////////////////////////////
// Name: dialog_design_rules.cpp
// Author: jean-pierre Charras
/////////////////////////////////////////////////////////////////////////////
/* functions relatives to the design rules editor
*/
#include "fctsys.h"
#include "common.h"
#include "class_drawpanel.h"
#include "confirm.h"
#include "pcbnew.h"
#include "id.h"
#include "dialog_design_rules.h"
#include "wx/generic/gridctrl.h"
// Fields Positions on layer grid
#define LAYERS_GRID_ROUTABLE_POSITION 0
#define LAYERS_GRID_STATUS_POSITION 1
#define LAYERS_GRID_NAME_POSITION 2
// Fields Positions on rules grid
#define RULE_GRID_TRACKSIZE_POSITION 0
#define RULE_GRID_VIASIZE_POSITION 1
#define RULE_GRID_CLEARANCE_POSITION 2
#define RULE_GRID_MINTRACKSIZE_POSITION 3
#define RULE_GRID_MINVIASIZE_POSITION 4
/***********************************************************************************/
DIALOG_DESIGN_RULES::DIALOG_DESIGN_RULES( WinEDA_PcbFrame* parent ) :
DIALOG_DESIGN_RULES_BASE( parent )
/***********************************************************************************/
{
m_Parent = parent;
Init();
SetAutoLayout( true );
GetSizer()->Fit( this );
GetSizer()->SetSizeHints( this );
}
/********************************************************************/
void DIALOG_DESIGN_RULES::Init()
/********************************************************************/
{
SetFocus();
// Initialize the layers grid:
m_ActivesLayersCount = g_DesignSettings.m_CopperLayerCount;
m_Pcb = m_Parent->GetBoard();
m_Changes = 0;
m_LayersCountSelection->SetSelection( m_ActivesLayersCount / 2 );
// Initialize the Routable column
SetRoutableLayerStatus();
// Initialize the Status column (layers attribute)
LAYER_T typelist[4] = { LT_SIGNAL, LT_POWER, LT_MIXED, LT_JUMPER };
for( int ii = 0; ii < 4; ii++ )
{
m_LayersType[ii] = typelist[ii];
m_LayersTypeName[ii] = CONV_FROM_UTF8( LAYER::ShowType( typelist[ii] ) );
}
for( int ii = 0; ii < m_gridLayersProperties->GetNumberRows(); ii++ )
{
m_gridLayersProperties->SetCellEditor( ii, LAYERS_GRID_STATUS_POSITION,
new wxGridCellChoiceEditor( WXSIZEOF(
m_LayersTypeName ),
m_LayersTypeName ) );
int select = LT_SIGNAL;
for( int jj = 0; jj < 4; jj++ )
{
int layer = LAYER_CMP_N - ii;
if( m_Pcb->GetLayerType( layer ) == m_LayersType[jj] )
{
select = m_LayersType[jj];
break;
}
}
m_gridLayersProperties->SetCellValue( ii, LAYERS_GRID_STATUS_POSITION,
m_LayersTypeName[select] );
m_gridLayersProperties->SetCellOverflow( ii, LAYERS_GRID_STATUS_POSITION, false );
}
// Initialize the Name column
for( int ii = 0; ii < m_gridLayersProperties->GetNumberRows(); ii++ )
{
wxString layer_name = m_Pcb->GetLayerName( LAYER_CMP_N - ii );
m_gridLayersProperties->SetCellValue( ii, LAYERS_GRID_NAME_POSITION, layer_name );
}
// Initialize the Rules List
InitRulesList();
/* Initialize the list of nets buffers
(note the netcode 0 is not a real net, so it is not loaded)
*/
for ( unsigned ii = 1; ; ii ++ )
{
NETINFO_ITEM* net = m_Pcb->FindNet( ii );
if( net == NULL )
break;
m_StockNets.push_back(net);
// search the index in rules list for this net
int rules_idx = 0;
for (int jj = 0; jj < m_gridNetClassesProperties->GetNumberRows(); jj++ )
{
if( m_gridNetClassesProperties->GetRowLabelValue(jj).CmpNoCase(net->GetClassName()) == 0 )
{
rules_idx = jj;
break;
}
}
m_NetsLinkToClasses.push_back(rules_idx); // All nets are set to default net class
}
InitializeRulesSelectionBoxes();
}
/** Function FillListBoxWithNetsNames
* populates the aListBox with net names members of the aNetclassIndex net class
* the "Client Data pointer" is used to store the index of nets in ne nets lists
*/
void DIALOG_DESIGN_RULES::FillListBoxWithNetsNames(wxListBox* aListBox, int aNetclassIndex)
{
aListBox->Clear();
unsigned idx = 0;
for(unsigned ii = 0; ii < m_StockNets.size(); ii++ )
{
if (aNetclassIndex == m_NetsLinkToClasses[ii] )
{
aListBox->Append( m_StockNets[ii]->GetNetname() );
// Store the index of this net
aListBox->SetClientData(idx, (void *) ii);
idx++;
}
}
}
/* Initialize the combno boxes by the list of existing net classes
*/
void DIALOG_DESIGN_RULES::InitializeRulesSelectionBoxes()
{
m_CBoxRightSelection->Clear();
m_CBoxLeftSelection->Clear();
for (int ii = 0; ii < m_gridNetClassesProperties->GetNumberRows(); ii++ )
{
m_CBoxRightSelection->Append(m_gridNetClassesProperties->GetRowLabelValue(ii));
m_CBoxLeftSelection->Append(m_gridNetClassesProperties->GetRowLabelValue(ii));
}
m_CBoxRightSelection->Select(0);
m_CBoxLeftSelection->Select(0);
m_buttonRightToLeft->Enable(false);
m_buttonLeftToRight->Enable(false);;
FillListBoxWithNetsNames(m_listBoxLeftNetSelect, m_CBoxLeftSelection->GetCurrentSelection() );
FillListBoxWithNetsNames(m_listBoxRightNetSelect, m_CBoxRightSelection->GetCurrentSelection() );
}
/* Initialize the Routable column, and the R/W property of some cells
*/
void DIALOG_DESIGN_RULES::SetRoutableLayerStatus()
{
m_gridLayersProperties->SetColFormatBool( LAYERS_GRID_ROUTABLE_POSITION );
for( int ii = 0; ii < m_gridLayersProperties->GetNumberRows(); ii++ )
{
int layer = LAYER_CMP_N - ii;
wxString value = layer < (m_ActivesLayersCount - 1) ? wxT( "1" ) : wxT( "0" );
if( m_ActivesLayersCount > 1 && layer == LAYER_CMP_N )
value = wxT( "1" );
if( layer == COPPER_LAYER_N )
value = wxT( "1" );
m_gridLayersProperties->SetCellValue( ii, LAYERS_GRID_ROUTABLE_POSITION, value );
m_gridLayersProperties->SetReadOnly( ii, LAYERS_GRID_ROUTABLE_POSITION );
// Set to Read Only cell for non existing copper layers:
m_gridLayersProperties->SetReadOnly( ii, LAYERS_GRID_STATUS_POSITION, value != wxT( "1" ) );
m_gridLayersProperties->SetReadOnly( ii, LAYERS_GRID_NAME_POSITION, value != wxT( "1" ) );
}
}
/* Initialize the rules list from board
*/
void DIALOG_DESIGN_RULES::InitRulesList()
{
for( int ii = 0; ; ii++ )
{
const NETCLASS * netclass = m_Pcb->m_NetClassesList.GetNetClass(ii);
if ( netclass == NULL )
break;
// Creates one entry if needed
if (ii >= m_gridNetClassesProperties->GetNumberRows() )
m_gridNetClassesProperties->AppendRows( );
// Init name
m_gridNetClassesProperties->SetRowLabelValue(ii, netclass->m_Name);
// Init data
wxString msg;
msg = ReturnStringFromValue( g_UnitMetric,
netclass->m_NetParams.m_TracksWidth,
m_Parent->m_InternalUnits, false );
m_gridNetClassesProperties->SetCellValue(ii, RULE_GRID_TRACKSIZE_POSITION, msg);
msg = ReturnStringFromValue( g_UnitMetric,
netclass->m_NetParams.m_ViasSize,
m_Parent->m_InternalUnits, false );
m_gridNetClassesProperties->SetCellValue(ii, RULE_GRID_VIASIZE_POSITION, msg);
msg = ReturnStringFromValue( g_UnitMetric,
netclass->m_NetParams.m_Clearance,
m_Parent->m_InternalUnits, false );
m_gridNetClassesProperties->SetCellValue(ii, RULE_GRID_CLEARANCE_POSITION, msg);
msg = ReturnStringFromValue( g_UnitMetric,
netclass->m_NetParams.m_TracksMinWidth,
m_Parent->m_InternalUnits, false );
m_gridNetClassesProperties->SetCellValue(ii, RULE_GRID_MINTRACKSIZE_POSITION, msg);
msg = ReturnStringFromValue( g_UnitMetric,
netclass->m_NetParams.m_ViasMinSize,
m_Parent->m_InternalUnits, false );
m_gridNetClassesProperties->SetCellValue(ii, RULE_GRID_MINVIASIZE_POSITION, msg);
}
}
/* Copy the rules list to board
*/
void DIALOG_DESIGN_RULES::CopyRulesListToBoard()
{
m_Pcb->m_NetClassesList.ClearList();
for( int ii = 0; ii < m_gridNetClassesProperties->GetNumberRows(); ii++ )
{
NETCLASS * netclass = new NETCLASS(m_Pcb,
m_gridNetClassesProperties->GetRowLabelValue(ii) );
m_Pcb->m_NetClassesList.AddNetclass(netclass);
// Init data
netclass->m_NetParams.m_TracksWidth =
ReturnValueFromString( g_UnitMetric,
m_gridNetClassesProperties->GetCellValue(ii, RULE_GRID_TRACKSIZE_POSITION),
m_Parent->m_InternalUnits );
netclass->m_NetParams.m_ViasSize =
ReturnValueFromString( g_UnitMetric,
m_gridNetClassesProperties->GetCellValue(ii, RULE_GRID_VIASIZE_POSITION),
m_Parent->m_InternalUnits );
netclass->m_NetParams.m_Clearance =
ReturnValueFromString( g_UnitMetric,
m_gridNetClassesProperties->GetCellValue(ii, RULE_GRID_CLEARANCE_POSITION),
m_Parent->m_InternalUnits );
netclass->m_NetParams.m_TracksMinWidth =
ReturnValueFromString( g_UnitMetric,
m_gridNetClassesProperties->GetCellValue(ii, RULE_GRID_MINTRACKSIZE_POSITION),
m_Parent->m_InternalUnits );
netclass->m_NetParams.m_ViasMinSize =
ReturnValueFromString( g_UnitMetric,
m_gridNetClassesProperties->GetCellValue(ii, RULE_GRID_MINVIASIZE_POSITION),
m_Parent->m_InternalUnits );
// Copy the list of nets associated to this netclass:
for(unsigned idx = 0; idx < m_StockNets.size(); idx++ )
{
if( m_NetsLinkToClasses[idx] == ii )
netclass->AddMember(m_StockNets[idx]->GetNetname());
}
}
m_Pcb->TransfertDesignRulesToNets( );
}
/*****************************************************************/
void DIALOG_DESIGN_RULES::OnCancelButtonClick( wxCommandEvent& event )
/*****************************************************************/
{
EndModal( 0 );
}
/**************************************************************************/
void DIALOG_DESIGN_RULES::OnOkButtonClick( wxCommandEvent& event )
/**************************************************************************/
{
g_DesignSettings.m_CopperLayerCount = m_ActivesLayersCount;
// Initialize the new layer name
for( int ii = 0; ii < m_gridLayersProperties->GetNumberRows(); ii++ )
{
wxString layer_name = m_gridLayersProperties->GetCellValue( ii, LAYERS_GRID_NAME_POSITION );
if( layer_name != m_Pcb->GetLayerName( LAYER_CMP_N - ii ) )
{
m_Pcb->SetLayerName( LAYER_CMP_N - ii, layer_name );
}
}
// Initialize the layer type
for( int ii = 0; ii < m_gridLayersProperties->GetNumberRows(); ii++ )
{
wxString txt = m_gridLayersProperties->GetCellValue( ii, LAYERS_GRID_STATUS_POSITION );
int layer = LAYER_CMP_N - ii;
for( int jj = 0; jj < 3; jj++ )
{
if( m_LayersTypeName[jj] == txt )
{
m_Pcb->SetLayerType( layer, m_LayersType[jj] );
break;
}
}
}
CopyRulesListToBoard();
EndModal( 1 );
}
/**************************************************************************/
void DIALOG_DESIGN_RULES::OnLayerCountClick( wxCommandEvent& event )
/**************************************************************************/
{
m_ActivesLayersCount = m_LayersCountSelection->GetSelection() * 2;
if( m_ActivesLayersCount <= 0 )
m_ActivesLayersCount = 1;
// Reinit the routable layers status
SetRoutableLayerStatus();
}
/**************************************************************************/
void DIALOG_DESIGN_RULES::OnAddNetclassClick( wxCommandEvent& event )
/**************************************************************************/
{
wxString class_name;
if( Get_Message( _("New Net Class Name:"),
wxEmptyString,
class_name,
this ) )
return;
// The name must dot exists:
for( int ii = 0; ii < m_gridNetClassesProperties->GetNumberRows(); ii++ )
{
wxString value;
value = m_gridNetClassesProperties->GetRowLabelValue(ii);
if( class_name.CmpNoCase( value) == 0 ) // Already exists!
{
DisplayError(this, _("This NetClass is alerady existing, cannot add it") );
return;
}
}
m_gridNetClassesProperties->AppendRows( );
m_gridNetClassesProperties->SetRowLabelValue(
m_gridNetClassesProperties->GetNumberRows()-1,
class_name);
// Copy values of the previous class:
int irow = m_gridNetClassesProperties->GetNumberRows()-1;
for( int icol = 0; icol < m_gridNetClassesProperties->GetNumberCols(); icol++ )
{
wxString value;
value = m_gridNetClassesProperties->GetCellValue(irow-1, icol);
m_gridNetClassesProperties->SetCellValue(irow, icol, value);
}
InitializeRulesSelectionBoxes();
}
/**************************************************************************/
void DIALOG_DESIGN_RULES::OnRemoveNetclassClick( wxCommandEvent& event )
/**************************************************************************/
{
wxArrayInt select = m_gridNetClassesProperties->GetSelectedRows();
for( int ii = select.GetCount()-1; ii >= 0; ii-- )
{
if( select[ii] != 0 ) // Do not remove the default class
{
m_gridNetClassesProperties->DeleteRows(select[ii]);
// reset the net class to default for nets member of the removed net class
for ( unsigned jj = 0; jj< m_NetsLinkToClasses.size(); jj++ )
if( m_NetsLinkToClasses[jj] == ii )
m_NetsLinkToClasses[jj] = 0; // Reset to default net class
}
}
InitializeRulesSelectionBoxes();
}
/*
* Called on the left Choice Box selection
*/
void DIALOG_DESIGN_RULES::OnLeftCBSelection( wxCommandEvent& event )
{
FillListBoxWithNetsNames(m_listBoxLeftNetSelect, m_CBoxLeftSelection->GetCurrentSelection() );
if ( m_CBoxLeftSelection->GetCurrentSelection() == m_CBoxRightSelection->GetCurrentSelection() )
{
m_buttonRightToLeft->Enable(false);
m_buttonLeftToRight->Enable(false);
}
else
{
m_buttonRightToLeft->Enable(true);
m_buttonLeftToRight->Enable(true);
}
}
/*
* Called on the Right Choice Box selection
*/
void DIALOG_DESIGN_RULES::OnRightCBSelection( wxCommandEvent& event )
{
FillListBoxWithNetsNames(m_listBoxRightNetSelect, m_CBoxRightSelection->GetCurrentSelection() );
if ( m_CBoxLeftSelection->GetCurrentSelection() == m_CBoxRightSelection->GetCurrentSelection() )
{
m_buttonRightToLeft->Enable(false);
m_buttonLeftToRight->Enable(false);;
}
else
{
m_buttonRightToLeft->Enable(true);
m_buttonLeftToRight->Enable(true);
}
}
/* Called on clicking the "<<<" or Copy Right to Left button:
* Selected items are moved from the right list to the left list
*/
void DIALOG_DESIGN_RULES::OnRightToLeftCopyButton( wxCommandEvent& event )
{
int idx_class = m_CBoxLeftSelection->GetCurrentSelection();
if ( idx_class == wxNOT_FOUND )
return;
for( unsigned ii = 0; ii < m_listBoxRightNetSelect->GetCount(); ii++ )
{
if( ! m_listBoxRightNetSelect->IsSelected(ii) )
continue;
unsigned idx = (unsigned) m_listBoxRightNetSelect->GetClientData( ii);
m_NetsLinkToClasses[idx] = idx_class;
}
FillListBoxWithNetsNames(m_listBoxLeftNetSelect, m_CBoxLeftSelection->GetCurrentSelection());
FillListBoxWithNetsNames(m_listBoxRightNetSelect, m_CBoxRightSelection->GetCurrentSelection());
}
/* Called on clicking the ">>>" or Copy Left to Right button:
* Selected items are moved from the left list to the right list
*/
void DIALOG_DESIGN_RULES::OnLeftToRightCopyButton( wxCommandEvent& event )
{
int idx_class = m_CBoxRightSelection->GetCurrentSelection();
if ( idx_class == wxNOT_FOUND )
return;
for( unsigned ii = 0; ii < m_listBoxLeftNetSelect->GetCount(); ii++ )
{
if( ! m_listBoxLeftNetSelect->IsSelected(ii) )
continue;
unsigned idx = (unsigned) m_listBoxLeftNetSelect->GetClientData(ii);
m_NetsLinkToClasses[idx] = idx_class;
}
FillListBoxWithNetsNames(m_listBoxLeftNetSelect, m_CBoxLeftSelection->GetCurrentSelection());
FillListBoxWithNetsNames(m_listBoxRightNetSelect, m_CBoxRightSelection->GetCurrentSelection());
}
/* Called on clicking the left "select all" button:
* select alls items of the left netname list lisxt box
*/
void DIALOG_DESIGN_RULES::OnLeftSelectAllButton( wxCommandEvent& event )
{
for( unsigned ii = 0; ii < m_listBoxLeftNetSelect->GetCount(); ii++ )
m_listBoxLeftNetSelect->SetSelection(ii);
}
/* Called on clicking the right "select all" button:
* select alls items of the right netname list lisxt box
*/
void DIALOG_DESIGN_RULES::OnRightSelectAllButton( wxCommandEvent& event )
{
for( unsigned ii = 0; ii < m_listBoxRightNetSelect->GetCount(); ii++ )
m_listBoxRightNetSelect->SetSelection(ii);
}
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_DESIGN_RULES
///////////////////////////////////////////////////////////////////////////////
#ifndef __dialog_design_rules_h_
#define __dialog_design_rules_h_
#include "dialog_design_rules_base.h"
class DIALOG_DESIGN_RULES : public DIALOG_DESIGN_RULES_BASE
{
private:
WinEDA_PcbFrame * m_Parent;
int m_ActivesLayersCount;
BOARD * m_Pcb;
int m_Changes;
LAYER_T m_LayersType[4];
wxString m_LayersTypeName[4];
std::vector<NETINFO_ITEM*> m_StockNets; // full list of nets on board
std::vector<int> m_NetsLinkToClasses; // index to affect each net to an existing net class
private:
void OnLayerCountClick( wxCommandEvent& event );
void OnLayerGridLeftClick( wxGridEvent& event ){ event.Skip(); }
void OnLayerGridRighttClick( wxGridEvent& event ){ event.Skip(); }
void OnNetClassesGridLeftClick( wxGridEvent& event ){ event.Skip(); }
void OnNetClassesGridRightClick( wxGridEvent& event ){ event.Skip(); }
void OnCancelButtonClick( wxCommandEvent& event );
void OnOkButtonClick( wxCommandEvent& event );
void OnAddNetclassClick( wxCommandEvent& event );
void OnRemoveNetclassClick( wxCommandEvent& event );
void OnLeftCBSelection( wxCommandEvent& event );
void OnRightCBSelection( wxCommandEvent& event );
void OnRightToLeftCopyButton( wxCommandEvent& event );
void OnLeftToRightCopyButton( wxCommandEvent& event );
void OnLeftSelectAllButton( wxCommandEvent& event );
void OnRightSelectAllButton( wxCommandEvent& event );
void Init();
void InitRulesList();
void InitializeRulesSelectionBoxes();
void CopyRulesListToBoard();
void SetRoutableLayerStatus( );
void FillListBoxWithNetsNames(wxListBox* aListBox, int aNetclassIndex);
public:
DIALOG_DESIGN_RULES( WinEDA_PcbFrame* parent );
~DIALOG_DESIGN_RULES( ) { };
};
#endif //__dialog_design_rules_h_
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_design_rules_base.h"
///////////////////////////////////////////////////////////////////////////
DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxSize( 600,450 ), wxDefaultSize );
wxBoxSizer* bMainSizer;
bMainSizer = new wxBoxSizer( wxVERTICAL );
m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
m_panelLayers = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* bMainSizerLayers;
bMainSizerLayers = new wxBoxSizer( wxHORIZONTAL );
wxString m_LayersCountSelectionChoices[] = { _("1"), _("2"), _("4"), _("6"), _("8"), _("10"), _("12"), _("14"), _("16") };
int m_LayersCountSelectionNChoices = sizeof( m_LayersCountSelectionChoices ) / sizeof( wxString );
m_LayersCountSelection = new wxRadioBox( m_panelLayers, ID_LAYERS_COUNT_SELECTION, _("Layers Count"), wxDefaultPosition, wxDefaultSize, m_LayersCountSelectionNChoices, m_LayersCountSelectionChoices, 1, wxRA_SPECIFY_COLS );
m_LayersCountSelection->SetSelection( 1 );
bMainSizerLayers->Add( m_LayersCountSelection, 0, wxALL, 5 );
m_gridLayersProperties = new wxGrid( m_panelLayers, ID_LAYERS_PROPERTIES, wxDefaultPosition, wxDefaultSize, 0 );
// Grid
m_gridLayersProperties->CreateGrid( 16, 3 );
m_gridLayersProperties->EnableEditing( true );
m_gridLayersProperties->EnableGridLines( true );
m_gridLayersProperties->EnableDragGridSize( false );
m_gridLayersProperties->SetMargins( 0, 0 );
// Columns
m_gridLayersProperties->SetColSize( 0, 100 );
m_gridLayersProperties->SetColSize( 1, 100 );
m_gridLayersProperties->SetColSize( 2, 150 );
m_gridLayersProperties->EnableDragColMove( false );
m_gridLayersProperties->EnableDragColSize( true );
m_gridLayersProperties->SetColLabelSize( 30 );
m_gridLayersProperties->SetColLabelValue( 0, _("Active") );
m_gridLayersProperties->SetColLabelValue( 1, _("Status") );
m_gridLayersProperties->SetColLabelValue( 2, _("Name") );
m_gridLayersProperties->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
// Rows
m_gridLayersProperties->AutoSizeRows();
m_gridLayersProperties->EnableDragRowSize( true );
m_gridLayersProperties->SetRowLabelSize( 80 );
m_gridLayersProperties->SetRowLabelValue( 0, _("Top Layer") );
m_gridLayersProperties->SetRowLabelValue( 1, _("Inner 14") );
m_gridLayersProperties->SetRowLabelValue( 2, _("Inner 13") );
m_gridLayersProperties->SetRowLabelValue( 3, _("Inner 12") );
m_gridLayersProperties->SetRowLabelValue( 4, _("Inner 11") );
m_gridLayersProperties->SetRowLabelValue( 5, _("Inner 10") );
m_gridLayersProperties->SetRowLabelValue( 6, _("Inner 9") );
m_gridLayersProperties->SetRowLabelValue( 7, _("Inner 8") );
m_gridLayersProperties->SetRowLabelValue( 8, _("Inner 7") );
m_gridLayersProperties->SetRowLabelValue( 9, _("Inner 6") );
m_gridLayersProperties->SetRowLabelValue( 10, _("Inner 5") );
m_gridLayersProperties->SetRowLabelValue( 11, _("Inner 4") );
m_gridLayersProperties->SetRowLabelValue( 12, _("Inner 3") );
m_gridLayersProperties->SetRowLabelValue( 13, _("Inner 2") );
m_gridLayersProperties->SetRowLabelValue( 14, _("Inner 1") );
m_gridLayersProperties->SetRowLabelValue( 15, _("Bottom Layer") );
m_gridLayersProperties->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
// Label Appearance
// Cell Defaults
m_gridLayersProperties->SetDefaultCellAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
bMainSizerLayers->Add( m_gridLayersProperties, 1, wxALL|wxEXPAND, 5 );
m_panelLayers->SetSizer( bMainSizerLayers );
m_panelLayers->Layout();
bMainSizerLayers->Fit( m_panelLayers );
m_notebook->AddPage( m_panelLayers, _("Layers"), true );
m_panelNetClasses = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* bmainSizerNclasses;
bmainSizerNclasses = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* sbSizer1;
sbSizer1 = new wxStaticBoxSizer( new wxStaticBox( m_panelNetClasses, wxID_ANY, _("Net classes:") ), wxHORIZONTAL );
m_gridNetClassesProperties = new wxGrid( m_panelNetClasses, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
// Grid
m_gridNetClassesProperties->CreateGrid( 1, 5 );
m_gridNetClassesProperties->EnableEditing( true );
m_gridNetClassesProperties->EnableGridLines( true );
m_gridNetClassesProperties->EnableDragGridSize( false );
m_gridNetClassesProperties->SetMargins( 0, 0 );
// Columns
m_gridNetClassesProperties->SetColSize( 0, 100 );
m_gridNetClassesProperties->SetColSize( 1, 100 );
m_gridNetClassesProperties->SetColSize( 2, 100 );
m_gridNetClassesProperties->SetColSize( 3, 100 );
m_gridNetClassesProperties->SetColSize( 4, 100 );
m_gridNetClassesProperties->EnableDragColMove( false );
m_gridNetClassesProperties->EnableDragColSize( true );
m_gridNetClassesProperties->SetColLabelSize( 30 );
m_gridNetClassesProperties->SetColLabelValue( 0, _("Track size") );
m_gridNetClassesProperties->SetColLabelValue( 1, _("Vias size") );
m_gridNetClassesProperties->SetColLabelValue( 2, _("Clearance") );
m_gridNetClassesProperties->SetColLabelValue( 3, _("Track Min Size") );
m_gridNetClassesProperties->SetColLabelValue( 4, _("Via Min Size") );
m_gridNetClassesProperties->SetColLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
// Rows
m_gridNetClassesProperties->AutoSizeRows();
m_gridNetClassesProperties->EnableDragRowSize( true );
m_gridNetClassesProperties->SetRowLabelSize( 80 );
m_gridNetClassesProperties->SetRowLabelValue( 0, _("Default") );
m_gridNetClassesProperties->SetRowLabelValue( 1, _("Special") );
m_gridNetClassesProperties->SetRowLabelAlignment( wxALIGN_CENTRE, wxALIGN_CENTRE );
// Label Appearance
// Cell Defaults
m_gridNetClassesProperties->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
m_gridNetClassesProperties->SetMinSize( wxSize( -1,100 ) );
sbSizer1->Add( m_gridNetClassesProperties, 1, wxALL|wxEXPAND, 5 );
wxBoxSizer* bSizerButtons;
bSizerButtons = new wxBoxSizer( wxVERTICAL );
m_buttonADD = new wxButton( m_panelNetClasses, wxID_ADD_NETCLASS, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerButtons->Add( m_buttonADD, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
m_buttonRemove = new wxButton( m_panelNetClasses, wxID_REMOVE_NETCLASS, _("Remove"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerButtons->Add( m_buttonRemove, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
sbSizer1->Add( bSizerButtons, 0, wxALIGN_CENTER_VERTICAL, 5 );
bmainSizerNclasses->Add( sbSizer1, 1, wxEXPAND, 5 );
wxBoxSizer* bSizerNetSelect;
bSizerNetSelect = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bLeftSizerNetSelect;
bLeftSizerNetSelect = new wxBoxSizer( wxVERTICAL );
wxArrayString m_CBoxLeftSelectionChoices;
m_CBoxLeftSelection = new wxChoice( m_panelNetClasses, ID_LEFT_CHOICE_CLICK, wxDefaultPosition, wxDefaultSize, m_CBoxLeftSelectionChoices, 0 );
m_CBoxLeftSelection->SetSelection( 0 );
bLeftSizerNetSelect->Add( m_CBoxLeftSelection, 0, wxALL|wxEXPAND, 5 );
m_listBoxLeftNetSelect = new wxListBox( m_panelNetClasses, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_EXTENDED|wxLB_MULTIPLE );
bLeftSizerNetSelect->Add( m_listBoxLeftNetSelect, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bSizerNetSelect->Add( bLeftSizerNetSelect, 1, wxEXPAND, 5 );
wxBoxSizer* bmiddleSizerNetSelect;
bmiddleSizerNetSelect = new wxBoxSizer( wxVERTICAL );
m_buttonRightToLeft = new wxButton( m_panelNetClasses, ID_LEFT_TO_RIGHT_COPY, _("<<<"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizerNetSelect->Add( m_buttonRightToLeft, 0, wxALIGN_CENTER_HORIZONTAL|wxRIGHT|wxLEFT, 5 );
m_buttonLeftToRight = new wxButton( m_panelNetClasses, ID_RIGHT_TO_LEFT_COPY, _(">>>"), wxDefaultPosition, wxDefaultSize, 0 );
bmiddleSizerNetSelect->Add( m_buttonLeftToRight, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizerButtonsSelecAll;
bSizerButtonsSelecAll = new wxBoxSizer( wxHORIZONTAL );
m_buttonLeftSelAll = new wxButton( m_panelNetClasses, wxID_ANY, _("<< Select All"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerButtonsSelecAll->Add( m_buttonLeftSelAll, 0, wxTOP|wxBOTTOM, 5 );
m_buttonRightSelAll = new wxButton( m_panelNetClasses, wxID_ANY, _("Select All >>"), wxDefaultPosition, wxDefaultSize, 0 );
bSizerButtonsSelecAll->Add( m_buttonRightSelAll, 0, wxALIGN_RIGHT|wxALIGN_BOTTOM|wxTOP|wxBOTTOM, 5 );
bmiddleSizerNetSelect->Add( bSizerButtonsSelecAll, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
bSizerNetSelect->Add( bmiddleSizerNetSelect, 0, wxALIGN_CENTER_VERTICAL, 5 );
wxBoxSizer* bLeftSizerNetSelect1;
bLeftSizerNetSelect1 = new wxBoxSizer( wxVERTICAL );
wxArrayString m_CBoxRightSelectionChoices;
m_CBoxRightSelection = new wxChoice( m_panelNetClasses, ID_RIGHT_CHOICE_CLICK, wxDefaultPosition, wxDefaultSize, m_CBoxRightSelectionChoices, 0 );
m_CBoxRightSelection->SetSelection( 0 );
bLeftSizerNetSelect1->Add( m_CBoxRightSelection, 0, wxALL|wxEXPAND, 5 );
m_listBoxRightNetSelect = new wxListBox( m_panelNetClasses, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, wxLB_EXTENDED|wxLB_MULTIPLE );
bLeftSizerNetSelect1->Add( m_listBoxRightNetSelect, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
bSizerNetSelect->Add( bLeftSizerNetSelect1, 1, wxEXPAND, 5 );
bmainSizerNclasses->Add( bSizerNetSelect, 1, wxEXPAND, 5 );
m_staticTextMsg = new wxStaticText( m_panelNetClasses, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextMsg->Wrap( -1 );
bmainSizerNclasses->Add( m_staticTextMsg, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_MessagesList = new wxHtmlWindow( m_panelNetClasses, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO|wxSUNKEN_BORDER );
m_MessagesList->SetMinSize( wxSize( -1,100 ) );
bmainSizerNclasses->Add( m_MessagesList, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 );
m_panelNetClasses->SetSizer( bmainSizerNclasses );
m_panelNetClasses->Layout();
bmainSizerNclasses->Fit( m_panelNetClasses );
m_notebook->AddPage( m_panelNetClasses, _("Net Classes"), false );
bMainSizer->Add( m_notebook, 1, wxALL|wxEXPAND, 5 );
m_sdbSizer1 = new wxStdDialogButtonSizer();
m_sdbSizer1OK = new wxButton( this, wxID_OK );
m_sdbSizer1->AddButton( m_sdbSizer1OK );
m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
m_sdbSizer1->Realize();
bMainSizer->Add( m_sdbSizer1, 0, wxALIGN_RIGHT, 5 );
this->SetSizer( bMainSizer );
this->Layout();
// Connect Events
m_LayersCountSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLayerCountClick ), NULL, this );
m_gridLayersProperties->Connect( wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnLayerGridLeftClick ), NULL, this );
m_gridLayersProperties->Connect( wxEVT_GRID_CELL_RIGHT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnLayerGridRighttClick ), NULL, this );
m_gridNetClassesProperties->Connect( wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnNetClassesGridLeftClick ), NULL, this );
m_gridNetClassesProperties->Connect( wxEVT_GRID_CELL_RIGHT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnNetClassesGridRightClick ), NULL, this );
m_buttonADD->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnAddNetclassClick ), NULL, this );
m_buttonRemove->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRemoveNetclassClick ), NULL, this );
m_CBoxLeftSelection->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftCBSelection ), NULL, this );
m_buttonRightToLeft->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightToLeftCopyButton ), NULL, this );
m_buttonLeftToRight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftToRightCopyButton ), NULL, this );
m_buttonLeftSelAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftSelectAllButton ), NULL, this );
m_buttonRightSelAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightSelectAllButton ), NULL, this );
m_CBoxRightSelection->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightCBSelection ), NULL, this );
m_sdbSizer1Cancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnCancelButtonClick ), NULL, this );
m_sdbSizer1OK->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnOkButtonClick ), NULL, this );
}
DIALOG_DESIGN_RULES_BASE::~DIALOG_DESIGN_RULES_BASE()
{
// Disconnect Events
m_LayersCountSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLayerCountClick ), NULL, this );
m_gridLayersProperties->Disconnect( wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnLayerGridLeftClick ), NULL, this );
m_gridLayersProperties->Disconnect( wxEVT_GRID_CELL_RIGHT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnLayerGridRighttClick ), NULL, this );
m_gridNetClassesProperties->Disconnect( wxEVT_GRID_CELL_LEFT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnNetClassesGridLeftClick ), NULL, this );
m_gridNetClassesProperties->Disconnect( wxEVT_GRID_CELL_RIGHT_CLICK, wxGridEventHandler( DIALOG_DESIGN_RULES_BASE::OnNetClassesGridRightClick ), NULL, this );
m_buttonADD->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnAddNetclassClick ), NULL, this );
m_buttonRemove->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRemoveNetclassClick ), NULL, this );
m_CBoxLeftSelection->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftCBSelection ), NULL, this );
m_buttonRightToLeft->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightToLeftCopyButton ), NULL, this );
m_buttonLeftToRight->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftToRightCopyButton ), NULL, this );
m_buttonLeftSelAll->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftSelectAllButton ), NULL, this );
m_buttonRightSelAll->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightSelectAllButton ), NULL, this );
m_CBoxRightSelection->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightCBSelection ), NULL, this );
m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnCancelButtonClick ), NULL, this );
m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnOkButtonClick ), NULL, this );
}
This source diff could not be displayed because it is too large. You can view the blob instead.
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __dialog_design_rules_base__
#define __dialog_design_rules_base__
#include <wx/intl.h>
#include <wx/string.h>
#include <wx/radiobox.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/grid.h>
#include <wx/sizer.h>
#include <wx/panel.h>
#include <wx/bitmap.h>
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/button.h>
#include <wx/statbox.h>
#include <wx/choice.h>
#include <wx/listbox.h>
#include <wx/stattext.h>
#include <wx/html/htmlwin.h>
#include <wx/notebook.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
#define ID_LAYERS_COUNT_SELECTION 1000
#define ID_LAYERS_PROPERTIES 1001
#define wxID_ADD_NETCLASS 1002
#define wxID_REMOVE_NETCLASS 1003
#define ID_LEFT_CHOICE_CLICK 1004
#define ID_LEFT_TO_RIGHT_COPY 1005
#define ID_RIGHT_TO_LEFT_COPY 1006
#define ID_RIGHT_CHOICE_CLICK 1007
///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_DESIGN_RULES_BASE
///////////////////////////////////////////////////////////////////////////////
class DIALOG_DESIGN_RULES_BASE : public wxDialog
{
private:
protected:
wxNotebook* m_notebook;
wxPanel* m_panelLayers;
wxRadioBox* m_LayersCountSelection;
wxGrid* m_gridLayersProperties;
wxPanel* m_panelNetClasses;
wxGrid* m_gridNetClassesProperties;
wxButton* m_buttonADD;
wxButton* m_buttonRemove;
wxChoice* m_CBoxLeftSelection;
wxListBox* m_listBoxLeftNetSelect;
wxButton* m_buttonRightToLeft;
wxButton* m_buttonLeftToRight;
wxButton* m_buttonLeftSelAll;
wxButton* m_buttonRightSelAll;
wxChoice* m_CBoxRightSelection;
wxListBox* m_listBoxRightNetSelect;
wxStaticText* m_staticTextMsg;
wxHtmlWindow* m_MessagesList;
wxStdDialogButtonSizer* m_sdbSizer1;
wxButton* m_sdbSizer1OK;
wxButton* m_sdbSizer1Cancel;
// Virtual event handlers, overide them in your derived class
virtual void OnLayerCountClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnLayerGridLeftClick( wxGridEvent& event ){ event.Skip(); }
virtual void OnLayerGridRighttClick( wxGridEvent& event ){ event.Skip(); }
virtual void OnNetClassesGridLeftClick( wxGridEvent& event ){ event.Skip(); }
virtual void OnNetClassesGridRightClick( wxGridEvent& event ){ event.Skip(); }
virtual void OnAddNetclassClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnRemoveNetclassClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnLeftCBSelection( wxCommandEvent& event ){ event.Skip(); }
virtual void OnRightToLeftCopyButton( wxCommandEvent& event ){ event.Skip(); }
virtual void OnLeftToRightCopyButton( wxCommandEvent& event ){ event.Skip(); }
virtual void OnLeftSelectAllButton( wxCommandEvent& event ){ event.Skip(); }
virtual void OnRightSelectAllButton( wxCommandEvent& event ){ event.Skip(); }
virtual void OnRightCBSelection( wxCommandEvent& event ){ event.Skip(); }
virtual void OnCancelButtonClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnOkButtonClick( wxCommandEvent& event ){ event.Skip(); }
public:
DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Design Rules Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 684,486 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_DESIGN_RULES_BASE();
};
#endif //__dialog_design_rules_base__
...@@ -410,7 +410,7 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum ) ...@@ -410,7 +410,7 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum )
g_DesignSettings.m_ViasMinSize = atoi( data ); g_DesignSettings.m_ViasMinSize = atoi( data );
continue; continue;
} }
if( stricmp( Line, "MicroViaSize" ) == 0 ) if( stricmp( Line, "MicroViaSize" ) == 0 )
{ {
g_DesignSettings.m_CurrentMicroViaSize = atoi( data ); g_DesignSettings.m_CurrentMicroViaSize = atoi( data );
...@@ -776,7 +776,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append ) ...@@ -776,7 +776,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
/** ReadPcbFile /** ReadPcbFile
* Read a board file <file>.brd * Read a board file <file>.brd
* @param Append if 0: a previoulsy loaded boar is delete before loadin the file. * @param Append if 0: a previoulsy loaded board is deleted before loading the file.
* else all items of the board file are added to the existing board * else all items of the board file are added to the existing board
*/ */
{ {
...@@ -790,6 +790,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append ) ...@@ -790,6 +790,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
NbDraw = NbTrack = NbZone = NbMod = NbNets = -1; NbDraw = NbTrack = NbZone = NbMod = NbNets = -1;
GetBoard()->m_Status_Pcb = 0; GetBoard()->m_Status_Pcb = 0;
GetBoard()->m_NetClassesList.ClearList();
while( GetLine( File, Line, &LineNum ) != NULL ) while( GetLine( File, Line, &LineNum ) != NULL )
{ {
...@@ -831,6 +832,15 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append ) ...@@ -831,6 +832,15 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
continue; continue;
} }
if( strnicmp( Line, "$NETCLASS", 8 ) == 0 )
{
NETCLASS* netclass = new NETCLASS( GetBoard() );
netclass->ReadDescr( File, &LineNum );
if( ! GetBoard()->m_NetClassesList.AddNetclass( netclass ) )
delete netclass;
continue;
}
if( strnicmp( Line, "$CZONE_OUTLINE", 7 ) == 0 ) if( strnicmp( Line, "$CZONE_OUTLINE", 7 ) == 0 )
{ {
ZONE_CONTAINER * zone_descr = new ZONE_CONTAINER(GetBoard()); ZONE_CONTAINER * zone_descr = new ZONE_CONTAINER(GetBoard());
...@@ -913,6 +923,15 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append ) ...@@ -913,6 +923,15 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
BestZoom(); BestZoom();
// One netclass *must* exists (the default netclass)
if( GetBoard()->m_NetClassesList.GetNetClassCount() == 0 )
{
NETCLASS* ncdefault = new NETCLASS(GetBoard());
GetBoard()->m_NetClassesList.AddNetclass( ncdefault );
}
GetBoard()->TransfertDesignRulesToNets( );
GetBoard()->m_Status_Pcb = 0; GetBoard()->m_Status_Pcb = 0;
return 1; return 1;
} }
......
...@@ -205,6 +205,13 @@ void WinEDA_PcbFrame::ReCreateMenuBar() ...@@ -205,6 +205,13 @@ void WinEDA_PcbFrame::ReCreateMenuBar()
configmenu->AppendSeparator(); configmenu->AppendSeparator();
AddHotkeyConfigMenu( configmenu ); AddHotkeyConfigMenu( configmenu );
// Add acces to the Design Rules Dialog:
wxMenu* designRulesMenu = new wxMenu;
item = new wxMenuItem( designRulesMenu, ID_MENU_PCB_SHOW_DESIGN_RULES_DIALOG,
_( "Design Rules" ), _( "Open the design rules dialog editor" ) );
item->SetBitmap( hammer_xpm );
designRulesMenu->Append( item );
///////////////////////////// /////////////////////////////
// Ajustage de dimensions: // // Ajustage de dimensions: //
///////////////////////////// /////////////////////////////
...@@ -319,6 +326,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar() ...@@ -319,6 +326,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar()
menuBar->Append( filesMenu, _( "&File" ) ); menuBar->Append( filesMenu, _( "&File" ) );
menuBar->Append( configmenu, _( "&Preferences" ) ); menuBar->Append( configmenu, _( "&Preferences" ) );
menuBar->Append( designRulesMenu, _( "&Design Rules" ) );
menuBar->Append( sizes_menu, _( "&Dimensions" ) ); menuBar->Append( sizes_menu, _( "&Dimensions" ) );
menuBar->Append( miscellaneous_menu, _( "&Miscellaneous" ) ); menuBar->Append( miscellaneous_menu, _( "&Miscellaneous" ) );
menuBar->Append( postprocess_menu, _( "P&ostprocess" ) ); menuBar->Append( postprocess_menu, _( "P&ostprocess" ) );
......
...@@ -38,6 +38,9 @@ static wxMenu* Append_Track_Width_List() ...@@ -38,6 +38,9 @@ static wxMenu* Append_Track_Width_List()
trackwidth_menu = new wxMenu; trackwidth_menu = new wxMenu;
ADD_MENUITEM( trackwidth_menu, ID_PCB_TRACK_SIZE_SETUP,
_( "New Width/Size" ), showtrack_xpm );
trackwidth_menu->Append( ID_POPUP_PCB_SELECT_AUTO_WIDTH, trackwidth_menu->Append( ID_POPUP_PCB_SELECT_AUTO_WIDTH,
_( "Auto Width" ), _( "Auto Width" ),
_( _(
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
#include "3d_viewer.h" #include "3d_viewer.h"
#include "kbool/include/kbool/booleng.h" #include "kbool/include/kbool/booleng.h"
#include "dialog_design_rules.h"
// Keys used in read/write config // Keys used in read/write config
#define PCB_CURR_GRID wxT( "PcbCurrGrid" ) #define PCB_CURR_GRID wxT( "PcbCurrGrid" )
#define PCB_MAGNETIC_PADS_OPT wxT( "PcbMagPadOpt" ) #define PCB_MAGNETIC_PADS_OPT wxT( "PcbMagPadOpt" )
...@@ -116,6 +118,9 @@ BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame ) ...@@ -116,6 +118,9 @@ BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame )
// Menu 3D Frame // Menu 3D Frame
EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_PcbFrame::Show3D_Frame ) EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, WinEDA_PcbFrame::Show3D_Frame )
// Menu Get Design Rules Editor
EVT_MENU( ID_MENU_PCB_SHOW_DESIGN_RULES_DIALOG, WinEDA_PcbFrame::ShowDesignRulesEditor )
// Horizontal toolbar // Horizontal toolbar
EVT_TOOL( ID_TO_LIBRARY, WinEDA_PcbFrame::Process_Special_Functions ) EVT_TOOL( ID_TO_LIBRARY, WinEDA_PcbFrame::Process_Special_Functions )
EVT_TOOL( ID_SHEET_SET, WinEDA_DrawFrame::Process_PageSettings ) EVT_TOOL( ID_SHEET_SET, WinEDA_DrawFrame::Process_PageSettings )
...@@ -639,3 +644,17 @@ void WinEDA_PcbFrame::Show3D_Frame( wxCommandEvent& event ) ...@@ -639,3 +644,17 @@ void WinEDA_PcbFrame::Show3D_Frame( wxCommandEvent& event )
m_Draw3DFrame = new WinEDA3D_DrawFrame( this, _( "3D Viewer" ) ); m_Draw3DFrame = new WinEDA3D_DrawFrame( this, _( "3D Viewer" ) );
m_Draw3DFrame->Show( TRUE ); m_Draw3DFrame->Show( TRUE );
} }
/**
* Display the Design Rules Editor.
*/
void WinEDA_PcbFrame::ShowDesignRulesEditor( wxCommandEvent& event )
{
DIALOG_DESIGN_RULES dR_editor( this );
int change = dR_editor.ShowModal( );
if ( change )
{
ReCreateLayerBox( NULL );
GetScreen()->SetModify();
}
}
...@@ -678,9 +678,6 @@ void WinEDA_PcbFrame::UpdateToolbarLayerInfo() ...@@ -678,9 +678,6 @@ void WinEDA_PcbFrame::UpdateToolbarLayerInfo()
WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent ) WinEDAChoiceBox* WinEDA_PcbFrame::ReCreateLayerBox( WinEDA_Toolbar* parent )
/**************************************************************************/ /**************************************************************************/
{ {
// wxASSERT("ReCreateLayerBox"==""); // get a stack trace, who is calling me and from where
D(printf("ReCreateLayerBox\n");)
if( m_SelLayerBox == NULL ) if( m_SelLayerBox == NULL )
{ {
if( parent == NULL ) if( parent == NULL )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment