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
Please add newer entries at the top, list the date and your name with
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>
================================================================================
++pcbnew
......
......@@ -61,6 +61,7 @@ set(PCB_COMMON_SRCS
../pcbnew/class_drawsegment.cpp
../pcbnew/class_drc_item.cpp
../pcbnew/class_edge_mod.cpp
../pcbnew/class_netclass.cpp
../pcbnew/class_netinfo_item.cpp
../pcbnew/class_netinfolist.cpp
../pcbnew/class_marker.cpp
......
......@@ -728,7 +728,7 @@ enum main_id {
ID_PCB_USER_GRID_SETUP,
ID_PCB_DISPLAY_FOOTPRINT_DOC,
ID_PCB_GEN_BOM_FILE_FROM_BOARD,
ID_PCBUNUSED3,
ID_MENU_PCB_SHOW_DESIGN_RULES_DIALOG,
ID_PCBUNUSED4,
ID_PCBUNUSED5,
ID_PCBUNUSED6,
......
......@@ -431,6 +431,11 @@ public:
void Show3D_Frame( wxCommandEvent& event );
void GeneralControle( wxDC* DC, wxPoint Mouse );
/** function ShowDesignRulesEditor
* Display the Design Rules Editor.
*/
void ShowDesignRulesEditor( wxCommandEvent& event );
/**
* Function UpdateToolbarLayerInfo
* updates the currently selected layer in the layer listbox and
......
No preview for this file type
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-07-09 08:02+0100\n"
"PO-Revision-Date: 2009-07-09 08:06+0100\n"
"POT-Creation-Date: 2009-07-17 20:36+0100\n"
"PO-Revision-Date: 2009-07-17 20:53+0100\n"
"Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n"
......@@ -25,12 +25,12 @@ msgstr ""
#: pcbnew/xchgmod.cpp:172
#, c-format
msgid "file %s not found"
msgstr " fichier %s non trouvé"
msgstr "fichier %s non trouvé"
#: pcbnew/xchgmod.cpp:186
#, c-format
msgid "Unable to create file %s"
msgstr "Impossible de créer fichier <%s>"
msgstr "Impossible de créerle fichier <%s>"
#: pcbnew/xchgmod.cpp:291
#, c-format
......@@ -427,7 +427,7 @@ msgid "Delete module?"
msgstr "Effacer Module?"
#: pcbnew/editmod.cpp:41
#: pcbnew/edit.cpp:339
#: pcbnew/edit.cpp:340
msgid "Module Editor"
msgstr "Ouvrir Editeur de modules"
......@@ -485,7 +485,7 @@ msgid "Place anchor"
msgstr "Place Ancre"
#: pcbnew/modedit.cpp:439
#: pcbnew/edit.cpp:772
#: pcbnew/edit.cpp:773
msgid "Delete item"
msgstr "Suppression d'éléments"
......@@ -897,7 +897,7 @@ msgstr "Grille"
msgid "User Grid"
msgstr "Grille perso"
#: pcbnew/tool_pcb.cpp:751
#: pcbnew/tool_pcb.cpp:748
msgid "+/- to switch"
msgstr "+/- pour commuter"
......@@ -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"
"Le tracé utilise des cercles pour quelques valeurs "
#: pcbnew/edit.cpp:418
#: pcbnew/edit.cpp:419
msgid "Add Tracks"
msgstr "Addition de Pistes"
#: pcbnew/edit.cpp:427
#: pcbnew/edit.cpp:428
msgid "Add Zones"
msgstr "Addition de Zones"
#: pcbnew/edit.cpp:429
#: pcbnew/edit.cpp:430
msgid "Warning: Display Zone is OFF!!!"
msgstr "Attention: Affichage zones désactivé !!!"
#: pcbnew/edit.cpp:435
#: pcbnew/edit.cpp:436
msgid "Add Layer Alignment Target"
msgstr "Ajouter Mire de superposition"
#: pcbnew/edit.cpp:439
#: pcbnew/edit.cpp:440
msgid "Adjust Zero"
msgstr "Ajuster Zéro"
#: pcbnew/edit.cpp:445
#: pcbnew/edit.cpp:446
msgid "Add Graphic"
msgstr "Addition éléments graphiques"
#: pcbnew/edit.cpp:449
#: pcbnew/edit.cpp:450
msgid "Add Text"
msgstr "Ajout de Texte"
#: pcbnew/edit.cpp:453
#: pcbnew/edit.cpp:454
msgid "Add Modules"
msgstr "Addition de Modules"
#: pcbnew/edit.cpp:457
#: pcbnew/edit.cpp:458
msgid "Add Dimension"
msgstr "Ajout de cotes"
#: pcbnew/edit.cpp:465
#: pcbnew/edit.cpp:466
msgid "Net Highlight"
msgstr "Surbrillance des équipotentielles"
#: pcbnew/edit.cpp:469
#: pcbnew/edit.cpp:470
msgid "Local Ratsnest"
msgstr "Montrer le chevelu général"
......@@ -2126,151 +2126,163 @@ msgstr "&Lire Préférences"
msgid "Read application preferences"
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"
msgstr "Pistes et Vias"
#: pcbnew/menubarpcb.cpp:215
#: pcbnew/menubarpcb.cpp:222
msgid "Adjust size and width for tracks and vias"
msgstr "Ajuster largeur des pistes et diamètre de vias"
#: pcbnew/menubarpcb.cpp:220
#: pcbnew/menubarpcb.cpp:227
msgid "Adjust User Grid"
msgstr "Ajuster Grille utilisateur"
#: pcbnew/menubarpcb.cpp:225
#: pcbnew/menubarpcb.cpp:232
msgid "Texts and Drawings"
msgstr "Textes et Tracés"
#: pcbnew/menubarpcb.cpp:226
#: pcbnew/menubarpcb.cpp:233
msgid "Adjust width for texts and drawings"
msgstr "Ajuster dims pour textes et graphiques"
#: pcbnew/menubarpcb.cpp:231
#: pcbnew/menubarpcb.cpp:238
msgid "Adjust size,shape,layers... for pads"
msgstr "Ajuster taille, forme, couches... pour pads"
#: pcbnew/menubarpcb.cpp:236
#: pcbnew/menubarpcb.cpp:243
msgid "&Save Setup"
msgstr "&Sauver Options"
#: pcbnew/menubarpcb.cpp:237
#: pcbnew/menubarpcb.cpp:244
msgid "Save options in current directory"
msgstr "Sauver les options en répertoire de travail"
#: pcbnew/menubarpcb.cpp:246
#: pcbnew/menubarpcb.cpp:253
msgid "Generate &Modules Position"
msgstr "Créer &Modules Position"
#: pcbnew/menubarpcb.cpp:247
#: pcbnew/menubarpcb.cpp:254
msgid "Generate modules position file"
msgstr "Gen fichier Position des Modules"
#: pcbnew/menubarpcb.cpp:252
#: pcbnew/menubarpcb.cpp:259
msgid "Create &Drill File"
msgstr "Créer &Fichier de Perçage"
#: pcbnew/menubarpcb.cpp:253
#: pcbnew/menubarpcb.cpp:260
msgid "Generate excellon2 drill file"
msgstr "Créer Fichier de perçage Excellon2"
#: pcbnew/menubarpcb.cpp:258
#: pcbnew/menubarpcb.cpp:265
msgid "Create &Component File"
msgstr "Créer &Fichier Cmp"
#: pcbnew/menubarpcb.cpp:259
#: pcbnew/menubarpcb.cpp:266
msgid "Recreate .cmp file for CvPcb"
msgstr "Recréer le fichier .cmp pour CvPcb"
#: pcbnew/menubarpcb.cpp:264
#: pcbnew/menubarpcb.cpp:271
msgid "Create &BOM File"
msgstr "Créer Fichier Liste du &Matériel"
#: pcbnew/menubarpcb.cpp:265
#: pcbnew/menubarpcb.cpp:272
msgid "Recreate .csv file for CvPcb"
msgstr "Recréer le fichier .csv pour CvPcb"
#: pcbnew/menubarpcb.cpp:274
#: pcbnew/menubarpcb.cpp:281
msgid "Global &Deletions"
msgstr "Effacements &Généraux"
#: pcbnew/menubarpcb.cpp:275
#: pcbnew/menubarpcb.cpp:282
msgid "Delete tracks, modules, texts... on board"
msgstr "Effacer pistes, modules, textes... sur le C.I."
#: pcbnew/menubarpcb.cpp:280
#: pcbnew/menubarpcb.cpp:287
msgid "&List Nets"
msgstr "Liste Equipots"
#: pcbnew/menubarpcb.cpp:281
#: pcbnew/menubarpcb.cpp:288
msgid "List nets (names and id)"
msgstr "Lister équipotentielles (noms et numéros d'identification)"
#: pcbnew/menubarpcb.cpp:286
#: pcbnew/menubarpcb.cpp:293
msgid "&Track Operations"
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"
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"
msgstr "&Permutte Couches"
#: pcbnew/menubarpcb.cpp:293
#: pcbnew/menubarpcb.cpp:300
msgid "Swap tracks on copper layers or drawings on others layers"
msgstr "Permutation de couches"
#: pcbnew/menubarpcb.cpp:301
#: pcbnew/menubarpcb.cpp:308
msgid "&Contents"
msgstr "&Contenu"
#: pcbnew/menubarpcb.cpp:302
#: pcbnew/menubarpcb.cpp:309
msgid "Open the PCBNEW manual"
msgstr "Ouvrir la Documentation de PCBNEW"
#: pcbnew/menubarpcb.cpp:306
#: pcbnew/menubarpcb.cpp:313
msgid "&About PCBNEW"
msgstr "&Au Sujet de PCBNEW"
#: pcbnew/menubarpcb.cpp:307
#: pcbnew/menubarpcb.cpp:314
msgid "About PCBNEW printed circuit board designer"
msgstr "Au Sujet de PCBNEW outil de conception de C.I."
#: pcbnew/menubarpcb.cpp:316
#: pcbnew/menubarpcb.cpp:323
msgid "3D Display"
msgstr "3D Visu"
#: pcbnew/menubarpcb.cpp:316
#: pcbnew/menubarpcb.cpp:323
msgid "Show board in 3D viewer"
msgstr "Visualisation du circuit en 3D"
#: pcbnew/menubarpcb.cpp:320
#: pcbnew/menubarpcb.cpp:327
msgid "&File"
msgstr "&Fichiers"
#: pcbnew/menubarpcb.cpp:321
#: pcbnew/menubarpcb.cpp:328
msgid "&Preferences"
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"
msgstr "&Dimensions"
#: pcbnew/menubarpcb.cpp:323
#: pcbnew/menubarpcb.cpp:331
msgid "&Miscellaneous"
msgstr "&Divers"
#: pcbnew/menubarpcb.cpp:324
#: pcbnew/menubarpcb.cpp:332
msgid "P&ostprocess"
msgstr "P&ostprocesseurs"
#: pcbnew/menubarpcb.cpp:325
#: pcbnew/menubarpcb.cpp:333
msgid "&3D Display"
msgstr "&3D Visu"
#: pcbnew/menubarpcb.cpp:326
#: pcbnew/menubarpcb.cpp:334
msgid "&Help"
msgstr "&Aide"
......@@ -2377,105 +2389,105 @@ msgstr "Valeur incorrecte pour offset du pad"
msgid "Unknown netname, no change"
msgstr "Net inconnu, pas de changement"
#: pcbnew/pcbframe.cpp:309
#: pcbnew/pcbframe.cpp:314
msgid "Board modified, Save before exit ?"
msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?"
#: pcbnew/pcbframe.cpp:310
#: pcbnew/pcbframe.cpp:315
msgid "Confirmation"
msgstr "Confirmation"
#: pcbnew/pcbframe.cpp:415
#: pcbnew/pcbframe.cpp:420
msgid "DRC Off (Disable !!!), Currently: DRC is 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 !!!)"
msgstr "DRC On (Actuellement, DRC désactivée !!!)"
#: pcbnew/pcbframe.cpp:427
#: pcbnew/pcbframe.cpp:432
msgid "Polar Coords not show"
msgstr "Coord Polaires non affichées"
#: pcbnew/pcbframe.cpp:428
#: pcbnew/pcbframe.cpp:433
msgid "Display Polar Coords"
msgstr "Affichage coord Polaires"
#: pcbnew/pcbframe.cpp:433
#: pcbnew/pcbframe.cpp:438
msgid "Grid not show"
msgstr "Grille non montrée"
#: pcbnew/pcbframe.cpp:433
#: pcbnew/pcbframe.cpp:438
msgid "Show Grid"
msgstr "Afficher grille"
#: pcbnew/pcbframe.cpp:442
#: pcbnew/pcbframe.cpp:447
msgid "Hide General ratsnest"
msgstr "Ne pas afficher le chevelu général"
#: pcbnew/pcbframe.cpp:443
#: pcbnew/pcbframe.cpp:448
msgid "Show General ratsnest"
msgstr "Afficher le chevelu général"
#: pcbnew/pcbframe.cpp:449
#: pcbnew/pcbframe.cpp:454
msgid "Hide Module ratsnest"
msgstr "Ne pas montrer le chevelu du module"
#: pcbnew/pcbframe.cpp:450
#: pcbnew/pcbframe.cpp:455
msgid "Show Module ratsnest"
msgstr "Montrer le chevelu du module"
#: pcbnew/pcbframe.cpp:457
#: pcbnew/pcbframe.cpp:462
msgid "Disable Auto Delete old Track"
msgstr "Ne pas Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:458
#: pcbnew/pcbframe.cpp:463
msgid "Enable Auto Delete old Track"
msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:465
#: pcbnew/pcbframe.cpp:470
msgid "Show Pads Sketch mode"
msgstr "Afficher pastilles en contour"
#: pcbnew/pcbframe.cpp:466
#: pcbnew/pcbframe.cpp:471
msgid "Show pads filled mode"
msgstr "Afficher pastilles en mode plein"
#: pcbnew/pcbframe.cpp:472
#: pcbnew/pcbframe.cpp:477
msgid "Show Tracks Sketch mode"
msgstr "Afficher pistes en contour"
#: pcbnew/pcbframe.cpp:473
#: pcbnew/pcbframe.cpp:478
msgid "Show Tracks filled mode"
msgstr "Afficher pistes en mode plein"
#: pcbnew/pcbframe.cpp:479
#: pcbnew/pcbframe.cpp:484
msgid "Normal Contrast Mode Display"
msgstr "Mode d'affichage Contraste normal"
#: pcbnew/pcbframe.cpp:486
#: pcbnew/pcbframe.cpp:491
msgid "Hide Invisible Text"
msgstr "Cacher textes invisibles"
#: pcbnew/pcbframe.cpp:499
#: pcbnew/pcbframe.cpp:504
msgid "Track"
msgstr "Piste"
#: pcbnew/pcbframe.cpp:531
#: pcbnew/pcbframe.cpp:536
#: pcbnew/dialog_drc_base.cpp:35
#: pcbnew/dialog_track_options_base.cpp:106
msgid "Clearance"
msgstr "Isolation"
#: pcbnew/pcbframe.cpp:563
#: pcbnew/pcbframe.cpp:568
msgid "Via"
msgstr "Via"
#: pcbnew/pcbframe.cpp:635
#: pcbnew/pcbframe.cpp:640
msgid "3D Frame already opened"
msgstr "Fenêtre 3D déjà ouverte"
#: pcbnew/pcbframe.cpp:639
#: pcbnew/pcbframe.cpp:644
msgid "3D Viewer"
msgstr "Visu 3D"
......@@ -2812,6 +2824,33 @@ msgstr "Pas de couche sélectionnée"
msgid "Error: Unexpected end of file !"
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
msgid "Zone Outline"
msgstr "Contour de Zone"
......@@ -2860,33 +2899,6 @@ msgstr "Lignes de Hachure"
msgid "Corners in DrawList"
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
msgid "Select Layer:"
msgstr "Sélection couche:"
......@@ -3675,468 +3687,476 @@ msgid "Layer selection:"
msgstr "Sélection couche:"
#: pcbnew/onrightclick.cpp:42
msgid "New Width/Size"
msgstr "Nouvelle Largeur/Taille"
#: pcbnew/onrightclick.cpp:45
msgid "Auto Width"
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"
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
msgid "Track %.1f"
msgstr "Piste %.1f"
#: pcbnew/onrightclick.cpp:60
#: pcbnew/onrightclick.cpp:63
#, c-format
msgid "Track %.3f"
msgstr "Piste %.3f"
#: pcbnew/onrightclick.cpp:78
#: pcbnew/onrightclick.cpp:81
#, c-format
msgid "Via %.1f"
msgstr "Via %.1f"
#: pcbnew/onrightclick.cpp:80
#: pcbnew/onrightclick.cpp:83
#, c-format
msgid "Via %.3f"
msgstr "Via %.3f"
#: pcbnew/onrightclick.cpp:196
#: pcbnew/onrightclick.cpp:199
msgid "Lock Module"
msgstr "Verrouiller Module"
#: pcbnew/onrightclick.cpp:204
#: pcbnew/onrightclick.cpp:207
msgid "Unlock Module"
msgstr "Déverrouiller Module"
#: pcbnew/onrightclick.cpp:212
#: pcbnew/onrightclick.cpp:215
msgid "Auto Place Module"
msgstr "Auto Place Module"
#: pcbnew/onrightclick.cpp:218
#: pcbnew/onrightclick.cpp:221
msgid "Autoroute"
msgstr "Autoroute"
#: pcbnew/onrightclick.cpp:234
#: pcbnew/onrightclick.cpp:237
msgid "Move Drawing"
msgstr "Déplace Tracé"
#: pcbnew/onrightclick.cpp:239
#: pcbnew/onrightclick.cpp:242
msgid "End Drawing"
msgstr "Fin tracé"
#: pcbnew/onrightclick.cpp:242
#: pcbnew/onrightclick.cpp:245
msgid "Edit Drawing"
msgstr "Edit Tracé"
#: pcbnew/onrightclick.cpp:244
#: pcbnew/onrightclick.cpp:247
msgid "Delete Drawing"
msgstr "Supprimer Tracé"
#: pcbnew/onrightclick.cpp:249
#: pcbnew/onrightclick.cpp:252
msgid "Delete Zone Filling"
msgstr "Supprimer Remplissage de Zone"
#: pcbnew/onrightclick.cpp:256
#: pcbnew/onrightclick.cpp:259
msgid "Close Zone Outline"
msgstr "Fermer Contour de Zone"
#: pcbnew/onrightclick.cpp:258
#: pcbnew/onrightclick.cpp:261
msgid "Delete Last Corner"
msgstr "Supprimer Dernier Sommet"
#: pcbnew/onrightclick.cpp:276
msgid "Delete Marker"
msgstr "Effacer Marqueur"
#: pcbnew/onrightclick.cpp:283
#: pcbnew/onrightclick.cpp:285
msgid "Edit Dimension"
msgstr "Edit Cote"
#: pcbnew/onrightclick.cpp:286
#: pcbnew/onrightclick.cpp:288
msgid "Delete Dimension"
msgstr "Suppression Cote"
#: pcbnew/onrightclick.cpp:293
#: pcbnew/onrightclick.cpp:295
msgid "Move Target"
msgstr "Déplacer Mire"
#: pcbnew/onrightclick.cpp:296
#: pcbnew/onrightclick.cpp:298
msgid "Edit Target"
msgstr "Editer Mire"
#: pcbnew/onrightclick.cpp:298
#: pcbnew/onrightclick.cpp:300
msgid "Delete Target"
msgstr "Supprimer Mire"
#: pcbnew/onrightclick.cpp:329
#: pcbnew/onrightclick.cpp:331
msgid "Get and Move Footprint"
msgstr "Sel. et Dépl. module"
#: pcbnew/onrightclick.cpp:343
#: pcbnew/onrightclick.cpp:345
msgid "Fill or Refill All Zones"
msgstr "Remplir ou Re-remplir Toutes les Zones"
#: pcbnew/onrightclick.cpp:345
#: pcbnew/onrightclick.cpp:347
msgid "Remove Filled Areas in All Zones"
msgstr "Supprimer le Remplissage de toutes les Zones"
#: pcbnew/onrightclick.cpp:350
#: pcbnew/onrightclick.cpp:359
#: pcbnew/onrightclick.cpp:371
#: pcbnew/onrightclick.cpp:432
#: pcbnew/onrightclick.cpp:352
#: pcbnew/onrightclick.cpp:361
#: pcbnew/onrightclick.cpp:373
#: pcbnew/onrightclick.cpp:434
msgid "Select Working Layer"
msgstr "Sélection de la couche de travail"
#: pcbnew/onrightclick.cpp:357
#: pcbnew/onrightclick.cpp:429
#: pcbnew/onrightclick.cpp:359
#: pcbnew/onrightclick.cpp:431
msgid "Select Track Width"
msgstr "Sélection Epais. Piste"
#: pcbnew/onrightclick.cpp:361
#: pcbnew/onrightclick.cpp:363
msgid "Select Layer Pair for Vias"
msgstr "Sélection Couple de Couches pour Vias"
#: pcbnew/onrightclick.cpp:377
#: pcbnew/onrightclick.cpp:379
msgid "Footprint Documentation"
msgstr "Documentation des Modules"
#: pcbnew/onrightclick.cpp:387
#: pcbnew/onrightclick.cpp:389
msgid "Glob Move and Place"
msgstr "Move et Place Globaux"
#: pcbnew/onrightclick.cpp:389
#: pcbnew/onrightclick.cpp:391
msgid "Unlock All Modules"
msgstr "Déverrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:391
#: pcbnew/onrightclick.cpp:393
msgid "Lock All Modules"
msgstr "Verrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:394
#: pcbnew/onrightclick.cpp:396
msgid "Move All Modules"
msgstr "Déplace tous les Modules"
#: pcbnew/onrightclick.cpp:395
#: pcbnew/onrightclick.cpp:397
msgid "Move New Modules"
msgstr "Déplace nouveaux Modules"
#: pcbnew/onrightclick.cpp:397
#: pcbnew/onrightclick.cpp:399
msgid "Autoplace All Modules"
msgstr "Autoplace Tous Modules"
#: pcbnew/onrightclick.cpp:398
#: pcbnew/onrightclick.cpp:400
msgid "Autoplace New Modules"
msgstr "AutoPlace nouveaux Modules"
#: pcbnew/onrightclick.cpp:399
#: pcbnew/onrightclick.cpp:401
msgid "Autoplace Next Module"
msgstr "Autoplace Module suivant"
#: pcbnew/onrightclick.cpp:402
#: pcbnew/onrightclick.cpp:404
msgid "Orient All Modules"
msgstr "Oriente Tous Modules"
#: pcbnew/onrightclick.cpp:409
#: pcbnew/onrightclick.cpp:411
msgid "Global Autoroute"
msgstr "Autoroutage global"
#: pcbnew/onrightclick.cpp:411
#: pcbnew/onrightclick.cpp:413
msgid "Select Layer Pair"
msgstr "Sélection Paire de Couches"
#: pcbnew/onrightclick.cpp:413
#: pcbnew/onrightclick.cpp:415
msgid "Autoroute All Modules"
msgstr "Autoroute Tous Modules"
#: pcbnew/onrightclick.cpp:415
#: pcbnew/onrightclick.cpp:417
msgid "Reset Unrouted"
msgstr "Réinit non Routés"
#: pcbnew/onrightclick.cpp:420
#: pcbnew/onrightclick.cpp:422
msgid "Global AutoRouter"
msgstr "Autorouteur Global"
#: pcbnew/onrightclick.cpp:422
#: pcbnew/onrightclick.cpp:424
msgid "Read Global AutoRouter Data"
msgstr "Lire Données de L'autorouteur global"
#: pcbnew/onrightclick.cpp:452
#: pcbnew/onrightclick.cpp:454
msgid "Zoom Block"
msgstr "Zoom Bloc"
#: pcbnew/onrightclick.cpp:459
#: pcbnew/onrightclick.cpp:461
msgid "Flip Block"
msgstr "Retourner Bloc"
#: pcbnew/onrightclick.cpp:482
#: pcbnew/onrightclick.cpp:484
msgid "Drag Via"
msgstr "Drag Via"
#: pcbnew/onrightclick.cpp:486
#: pcbnew/onrightclick.cpp:488
msgid "Edit Via Drill"
msgstr "Editer Perçage Via"
#: pcbnew/onrightclick.cpp:488
#: pcbnew/onrightclick.cpp:490
msgid "Set Via Hole to Default"
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"
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"
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"
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"
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"
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"
msgstr "Exporte ce Perçage Via aux Autres Semblables."
#: pcbnew/onrightclick.cpp:503
#: pcbnew/onrightclick.cpp:505
msgid "Set ALL Via Holes to Default"
msgstr "Ajuste Perçage TOUTES Vias à Défaut"
#: pcbnew/onrightclick.cpp:516
#: pcbnew/onrightclick.cpp:518
msgid "Move Node"
msgstr "Déplace Noeud"
#: pcbnew/onrightclick.cpp:521
#: pcbnew/onrightclick.cpp:523
msgid "Drag Segments, Keep Slope"
msgstr "Drag Segments, Garder Direction"
#: pcbnew/onrightclick.cpp:523
#: pcbnew/onrightclick.cpp:525
msgid "Drag Segment"
msgstr "Drag Segment"
#: pcbnew/onrightclick.cpp:526
#: pcbnew/onrightclick.cpp:528
msgid "Move Segment"
msgstr "Déplace Segment"
#: pcbnew/onrightclick.cpp:529
#: pcbnew/onrightclick.cpp:531
msgid "Break Track"
msgstr "Briser Piste"
#: pcbnew/onrightclick.cpp:536
#: pcbnew/onrightclick.cpp:538
msgid "Place Node"
msgstr "Place noeud"
#: pcbnew/onrightclick.cpp:543
#: pcbnew/onrightclick.cpp:545
msgid "End Track"
msgstr "Terminer Piste"
#: pcbnew/onrightclick.cpp:546
#: pcbnew/onrightclick.cpp:548
msgid "Place Via"
msgstr "Place Via"
#: pcbnew/onrightclick.cpp:553
#: pcbnew/onrightclick.cpp:555
msgid "Place Micro Via"
msgstr "Place Micro Via"
#: pcbnew/onrightclick.cpp:565
#: pcbnew/onrightclick.cpp:567
msgid "Change Width"
msgstr "Change Largeur"
#: pcbnew/onrightclick.cpp:567
#: pcbnew/onrightclick.cpp:569
msgid "Change Via Size"
msgstr "Change Taille Via"
#: pcbnew/onrightclick.cpp:567
#: pcbnew/onrightclick.cpp:569
msgid "Change Segment Width"
msgstr "Change Largeur Segment"
#: pcbnew/onrightclick.cpp:570
#: pcbnew/onrightclick.cpp:572
msgid "Change Track Width"
msgstr "Change Largeur Piste"
#: pcbnew/onrightclick.cpp:572
#: pcbnew/onrightclick.cpp:574
msgid "Change Net"
msgstr "Change Net"
#: pcbnew/onrightclick.cpp:574
#: pcbnew/onrightclick.cpp:576
msgid "Change ALL Tracks and Vias"
msgstr "Changer TOUTES Pistes et Vias"
#: pcbnew/onrightclick.cpp:576
#: pcbnew/onrightclick.cpp:578
msgid "Change ALL Vias (No Track)"
msgstr "Changer TOUTES Vias (Pas les Pistes)"
#: pcbnew/onrightclick.cpp:578
#: pcbnew/onrightclick.cpp:580
msgid "Change ALL Tracks (No Via)"
msgstr "Changer TOUTES Pistes (Pas les Vias)"
#: pcbnew/onrightclick.cpp:584
#: pcbnew/onrightclick.cpp:771
#: pcbnew/onrightclick.cpp:826
#: pcbnew/onrightclick.cpp:875
#: pcbnew/onrightclick.cpp:586
#: pcbnew/onrightclick.cpp:773
#: pcbnew/onrightclick.cpp:828
#: pcbnew/onrightclick.cpp:877
msgid "Delete"
msgstr "Supprimer"
#: pcbnew/onrightclick.cpp:586
#: pcbnew/onrightclick.cpp:588
msgid "Delete Via"
msgstr "Suppression Via"
#: pcbnew/onrightclick.cpp:586
#: pcbnew/onrightclick.cpp:588
msgid "Delete Segment"
msgstr "Supprimer Segment"
#: pcbnew/onrightclick.cpp:593
#: pcbnew/onrightclick.cpp:595
msgid "Delete Track"
msgstr "Effacer Piste"
#: pcbnew/onrightclick.cpp:597
#: pcbnew/onrightclick.cpp:599
msgid "Delete Net"
msgstr "Supprimer Net"
#: pcbnew/onrightclick.cpp:602
#: pcbnew/onrightclick.cpp:604
msgid "Set Flags"
msgstr "Ajust. Flags"
#: pcbnew/onrightclick.cpp:603
#: pcbnew/onrightclick.cpp:605
msgid "Locked: Yes"
msgstr "Verrou: Oui"
#: pcbnew/onrightclick.cpp:604
#: pcbnew/onrightclick.cpp:606
msgid "Locked: No"
msgstr "Verrou: Non"
#: pcbnew/onrightclick.cpp:614
#: pcbnew/onrightclick.cpp:616
msgid "Track Locked: Yes"
msgstr "Piste Verrouillée: Oui"
#: pcbnew/onrightclick.cpp:615
#: pcbnew/onrightclick.cpp:617
msgid "Track Locked: No"
msgstr "Piste Verrouillée: Non"
#: pcbnew/onrightclick.cpp:617
#: pcbnew/onrightclick.cpp:619
msgid "Net Locked: Yes"
msgstr "Net Verrouillé: Oui"
#: pcbnew/onrightclick.cpp:618
#: pcbnew/onrightclick.cpp:620
msgid "Net Locked: No"
msgstr "Net Verrouillé: Non"
#: pcbnew/onrightclick.cpp:633
#: pcbnew/onrightclick.cpp:635
msgid "Place Edge Outline"
msgstr "Place Segment de Contour"
#: pcbnew/onrightclick.cpp:639
#: pcbnew/onrightclick.cpp:641
msgid "Place Corner"
msgstr "Place Sommet"
#: pcbnew/onrightclick.cpp:642
#: pcbnew/onrightclick.cpp:644
msgid "Place Zone"
msgstr "Place Zone"
#: pcbnew/onrightclick.cpp:649
#: pcbnew/onrightclick.cpp:651
msgid "Zones"
msgstr "Zones"
#: pcbnew/onrightclick.cpp:654
#: pcbnew/onrightclick.cpp:656
msgid "Move Corner"
msgstr "Déplace Sommet"
#: pcbnew/onrightclick.cpp:656
#: pcbnew/onrightclick.cpp:658
msgid "Delete Corner"
msgstr "Supprimer Sommet"
#: pcbnew/onrightclick.cpp:661
#: pcbnew/onrightclick.cpp:663
msgid "Create Corner"
msgstr "Créer Sommet"
#: pcbnew/onrightclick.cpp:663
#: pcbnew/onrightclick.cpp:665
msgid "Drag Outline Segment"
msgstr "Drag Segment Contour"
#: pcbnew/onrightclick.cpp:668
#: pcbnew/onrightclick.cpp:670
msgid "Add Similar Zone"
msgstr "Addition d'une Zone Semblable"
#: pcbnew/onrightclick.cpp:671
#: pcbnew/onrightclick.cpp:673
msgid "Add Cutout Area"
msgstr "Addition d'une Zone Interdite"
#: pcbnew/onrightclick.cpp:675
#: pcbnew/onrightclick.cpp:677
msgid "Fill Zone"
msgstr "Remplir Zone"
#: pcbnew/onrightclick.cpp:680
#: pcbnew/onrightclick.cpp:682
msgid "Remove Filled Areas in Zone"
msgstr "Supprimer le Remplissage de la Zone"
#: pcbnew/onrightclick.cpp:684
#: pcbnew/onrightclick.cpp:686
msgid "Move Zone"
msgstr "Déplace Zone"
#: pcbnew/onrightclick.cpp:687
#: pcbnew/onrightclick.cpp:689
msgid "Edit Zone Params"
msgstr "Editer Paramètres de la Zone"
#: pcbnew/onrightclick.cpp:692
#: pcbnew/onrightclick.cpp:694
msgid "Delete Cutout"
msgstr "Supprimer Zone Interdite"
#: pcbnew/onrightclick.cpp:695
#: pcbnew/onrightclick.cpp:697
msgid "Delete Zone Outline"
msgstr "Supprimer Contour de Zone"
#: pcbnew/onrightclick.cpp:717
#: pcbnew/onrightclick.cpp:762
#: pcbnew/onrightclick.cpp:800
#: pcbnew/onrightclick.cpp:866
#: pcbnew/onrightclick.cpp:719
#: pcbnew/onrightclick.cpp:764
#: pcbnew/onrightclick.cpp:802
#: pcbnew/onrightclick.cpp:868
msgid "Move"
msgstr "Déplacer"
#: pcbnew/onrightclick.cpp:720
#: pcbnew/onrightclick.cpp:802
#: pcbnew/onrightclick.cpp:722
#: pcbnew/onrightclick.cpp:804
msgid "Drag"
msgstr "Drag"
#: pcbnew/onrightclick.cpp:724
#: pcbnew/onrightclick.cpp:726
msgid "Rotate +"
msgstr "Rotation +"
#: pcbnew/onrightclick.cpp:728
#: pcbnew/onrightclick.cpp:730
msgid "Rotate -"
msgstr "Rotation -"
#: pcbnew/onrightclick.cpp:729
#: pcbnew/onrightclick.cpp:731
msgid "Flip"
msgstr "Change côté"
#: pcbnew/onrightclick.cpp:809
#: pcbnew/onrightclick.cpp:811
msgid "Copy current pad settings to this 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"
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)"
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"
msgstr "Autoroute Pad"
#: pcbnew/onrightclick.cpp:834
#: pcbnew/onrightclick.cpp:836
msgid "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
msgid "Zone Setup:"
msgstr "Options Zone:"
......@@ -5158,23 +5178,23 @@ msgstr "(Specifique)"
msgid "(Default)"
msgstr "(Défaut)"
#: pcbnew/class_board.cpp:532
#: pcbnew/class_board.cpp:537
msgid "Nodes"
msgstr "Nodes"
#: pcbnew/class_board.cpp:535
#: pcbnew/class_board.cpp:540
msgid "Nets"
msgstr "Nets"
#: pcbnew/class_board.cpp:543
#: pcbnew/class_board.cpp:548
msgid "Links"
msgstr "Liens"
#: pcbnew/class_board.cpp:546
#: pcbnew/class_board.cpp:551
msgid "Connect"
msgstr "Connect"
#: pcbnew/class_board.cpp:549
#: pcbnew/class_board.cpp:554
msgid "NoConn"
msgstr "Non Conn"
......@@ -5519,6 +5539,7 @@ msgstr ""
#: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:36
#: pcbnew/dialog_pcbnew_config_libs_and_paths_fbp.cpp:83
#: pcbnew/dialog_design_rules_base.cpp:134
msgid "Add"
msgstr "Ajouter"
......@@ -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:89
#: pcbnew/dialog_design_rules_base.cpp:137
msgid "Remove"
msgstr "Enlever"
......@@ -5670,6 +5692,126 @@ msgstr "Mire"
msgid "size"
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
#, c-format
msgid "Track Width: %s Vias Size : %s"
......@@ -5707,6 +5849,10 @@ msgstr "Change tous"
msgid "Browse Libs 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
msgid " Part: "
msgstr "Composant "
......@@ -6012,42 +6158,30 @@ msgstr "Impossible de trouver le composant "
msgid " in library"
msgstr " en librairie"
#: eeschema/netlist.cpp:202
#: eeschema/netlist.cpp:93
msgid "List"
msgstr "Liste"
#: eeschema/netlist.cpp:220
msgid "No component"
msgstr "Pas de composants"
#: eeschema/netlist.cpp:241
#: eeschema/netlist.cpp:111
msgid "NbItems"
msgstr "NbItems"
#: eeschema/netlist.cpp:345
#: eeschema/netlist.cpp:387
#: eeschema/netlist.cpp:410
#: eeschema/netlist.cpp:427
#: eeschema/netlist.cpp:219
#: eeschema/netlist.cpp:263
#: eeschema/netlist.cpp:284
msgid "Done"
msgstr "Fini"
#: eeschema/netlist.cpp:351
#: eeschema/netlist.cpp:225
msgid "Labels"
msgstr "Labels"
#: eeschema/netlist.cpp:391
#: eeschema/netlist.cpp:267
msgid "Hierar."
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/find.cpp:649
msgid "No libraries are loaded"
msgstr "Pas de librairies chargées"
......@@ -6251,8 +6385,8 @@ msgstr ""
msgid "Error creating "
msgstr "Erreur en création de "
#: eeschema/netform.cpp:63
#: eeschema/netform.cpp:282
#: eeschema/netform.cpp:62
#: eeschema/netform.cpp:269
msgid "Failed to create file "
msgstr "Impossible de créer le fichier "
......@@ -6574,62 +6708,61 @@ msgstr "Pin de Feuille de Hiérarchie"
msgid "No New Hierarchal Label found"
msgstr "Pas de nouveau Label Hiérarchique trouvé"
#: eeschema/erc.cpp:193
msgid "Annotation Required!"
msgstr "Numérotation requise!"
#: eeschema/erc.cpp:247
#: eeschema/erc.cpp:200
msgid "Duplicate Sheet name"
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"
msgstr "Fichier ERC"
#: eeschema/erc.cpp:354
#: eeschema/erc.cpp:364
msgid "Electronic rule check file (.erc)|*.erc"
msgstr "Fichier Contrôle des règles électroniques (.erc)|*.erc"
#: eeschema/erc.cpp:406
#: eeschema/erc.cpp:417
#, c-format
msgid "HLabel %s not connected to SheetLabel"
msgstr "HLabel %s non connecté à SheetLabel"
#: eeschema/erc.cpp:410
#: eeschema/erc.cpp:421
#, c-format
msgid "SheetLabel %s not connected to HLabel"
msgstr "SheetLabel %s non connecté à HLabel"
#: eeschema/erc.cpp:432
#: eeschema/erc.cpp:443
#, c-format
msgid "Cmp %s, Pin %s (%s) Unconnected"
msgstr "Cmp %s, Pin %s (%s) Non connectée"
#: eeschema/erc.cpp:447
#: eeschema/erc.cpp:459
#, c-format
msgid "Cmp %s, Pin %s (%s) not driven (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"
msgstr "Plus de 1 Pin connectée à un symbole de non connexion"
#: eeschema/erc.cpp:486
#, fuzzy, c-format
#: eeschema/erc.cpp:498
#, c-format
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
#, fuzzy, c-format
#: eeschema/erc.cpp:504
#, c-format
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
#, fuzzy
#: eeschema/erc.cpp:648
msgid "ERC report"
msgstr "Créer Rapport d'erreur"
msgstr "Rapport d'erreur"
#: eeschema/erc.cpp:619
#: eeschema/erc.cpp:658
msgid ""
"\n"
"***** Sheet / (Root) \n"
......@@ -6637,7 +6770,7 @@ msgstr ""
"\n"
"***** Feuille/ ( Racine)\n"
#: eeschema/erc.cpp:624
#: eeschema/erc.cpp:663
#, c-format
msgid ""
"\n"
......@@ -6646,7 +6779,7 @@ msgstr ""
"\n"
"***** Feuille %s\n"
#: eeschema/erc.cpp:643
#: eeschema/erc.cpp:682
#, c-format
msgid ""
"\n"
......@@ -6954,10 +7087,6 @@ msgstr "Miroir Bloc ||"
msgid "Copy to Clipboard"
msgstr "Copie dans Presse papier"
#: eeschema/onrightclick.cpp:643
msgid "About this Marker"
msgstr ""
#: eeschema/edit_label.cpp:48
msgid "Empty Text!"
msgstr "Texte vide"
......@@ -7309,61 +7438,61 @@ msgstr "Les parts sont verrouillées"
msgid "Fields"
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"
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"
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"
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"
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"
msgstr "Visibilité"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:120
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:122
msgid "Show"
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"
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"
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
msgid "Bold"
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
msgid "Bold Italic"
msgstr "Gras Italique"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:136
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:138
msgid "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"
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"
msgstr "Nom Champ"
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:152
#: eeschema/dialog_edit_component_in_schematic_fbp.cpp:154
msgid ""
"The name of the currently selected field\n"
"Some fixed fields names are not editable"
......@@ -7371,43 +7500,43 @@ msgstr ""
"Le nom du champ actuellement sélectionné.\n"
"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"
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"
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(\")"
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"
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(\")"
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"
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(\")"
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"
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"
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 ""
"Set position and style of fields and component orientation to default lib value.\n"
"Fields texts are not modified."
......@@ -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)"
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
msgid "FileName"
msgstr "Nom Fichier"
......@@ -8128,93 +8252,93 @@ msgstr "Incrément Label:"
msgid "Default Label Size"
msgstr "Taille Label par défaut"
#: eeschema/netlist_control.cpp:131
#: eeschema/netlist_control.cpp:255
#: eeschema/netlist_control.cpp:129
#: eeschema/netlist_control.cpp:253
msgid "Default format"
msgstr "Format par défaut"
#: eeschema/netlist_control.cpp:142
#: eeschema/netlist_control.cpp:140
msgid "&Browse Plugin"
msgstr "&Examen Plugins"
#: eeschema/netlist_control.cpp:144
#: eeschema/netlist_control.cpp:142
msgid "&Netlist"
msgstr "&Netliste"
#: eeschema/netlist_control.cpp:157
#: eeschema/netlist_control.cpp:155
msgid "&Ok"
msgstr "&Ok"
#: eeschema/netlist_control.cpp:162
#: eeschema/netlist_control.cpp:160
msgid "&Delete"
msgstr "&Supprimer"
#: eeschema/netlist_control.cpp:171
#: eeschema/netlist_control.cpp:275
#: eeschema/netlist_control.cpp:169
#: eeschema/netlist_control.cpp:273
msgid "Netlist"
msgstr "Netliste"
#: eeschema/netlist_control.cpp:259
#: eeschema/netlist_control.cpp:257
msgid "Use Net Names"
msgstr "Utiliser nom de net"
#: eeschema/netlist_control.cpp:259
#: eeschema/netlist_control.cpp:257
msgid "Use Net Numbers"
msgstr "Utiliser numéro de net"
#: eeschema/netlist_control.cpp:260
#: eeschema/netlist_control.cpp:258
msgid "Netlist Options:"
msgstr "Options de Netliste:"
#: eeschema/netlist_control.cpp:269
#: eeschema/netlist_control.cpp:267
msgid "Simulator command:"
msgstr "Simulateur commande:"
#: eeschema/netlist_control.cpp:278
#: eeschema/netlist_control.cpp:276
msgid "&Run Simulator"
msgstr "&Simulateur"
#: eeschema/netlist_control.cpp:316
#: eeschema/netlist_control.cpp:314
msgid "Add Plugin"
msgstr "Ajouter Plugin"
#: eeschema/netlist_control.cpp:336
#: eeschema/netlist_control.cpp:334
msgid "Netlist command:"
msgstr "Commande netliste:"
#: eeschema/netlist_control.cpp:342
#: eeschema/netlist_control.cpp:340
msgid "Title:"
msgstr "Titre:"
#: eeschema/netlist_control.cpp:360
#: eeschema/netlist_control.cpp:358
msgid "Plugin files:"
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"
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"
msgstr "Fichier netliste SPICE (.cir)|*.cir"
#: eeschema/netlist_control.cpp:468
#: eeschema/netlist_control.cpp:466
msgid "CadStar netlist file (.frp)|*.frp"
msgstr "Fichier netliste CadStar (.frp)|*.frp"
#: eeschema/netlist_control.cpp:479
#: eeschema/netlist_control.cpp:477
msgid "Save Netlist Files"
msgstr "Sauver Fichiers Netlistes"
#: eeschema/netlist_control.cpp:491
#: eeschema/netlist_control.cpp:489
msgid "Must be Annotated, Continue ?"
msgstr "Annotation nécessaire, continuer?"
#: eeschema/netlist_control.cpp:654
#: eeschema/netlist_control.cpp:651
msgid "Error. You must provide a command String"
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"
msgstr "Erreur. Vous devez entrer un titre"
......@@ -8260,12 +8384,10 @@ msgid "Options :"
msgstr "Options :"
#: eeschema/dialog_cmp_graphic_properties.cpp:154
#: eeschema/pinedit-dialog.cpp:180
msgid "Common to Units"
msgstr "Commun aux Unités"
#: eeschema/dialog_cmp_graphic_properties.cpp:158
#: eeschema/pinedit-dialog.cpp:184
msgid "Common to convert"
msgstr "Commun à converti"
......@@ -8484,43 +8606,43 @@ msgid "Text Shape:"
msgstr "Aspect Texte:"
#: 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"
msgstr "Alignement à gauche"
#: eeschema/dialog_bodygraphictext_properties_base.cpp:82
#: eeschema/dialog_bodygraphictext_properties_base.cpp:88
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:54
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:67
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:56
#: eeschema/dialog_edit_libentry_fields_in_lib_base.cpp:69
msgid "Align center"
msgstr "Alignement au centre"
#: 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"
msgstr "Alignement à droite"
#: 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"
msgstr "Justification Horiz."
#: 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"
msgstr "Alignement en bas"
#: 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"
msgstr "Alignement au sommet"
#: 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"
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"
msgstr "La taille du texte du champ actuellement sélectionné"
......@@ -8919,57 +9041,13 @@ msgstr "Valeur Composant"
msgid "Component footprint"
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
#, fuzzy
msgid "ERC err unspecified"
msgstr "Non specifié"
msgstr "Erreur ERC non specifiée"
#: eeschema/class_drc_erc_item.cpp:41
#, fuzzy
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
msgid "Pin not connected (and no connect symbol found on this pin)"
......@@ -8988,9 +9066,8 @@ msgid "Confict problem between pins. Severity: error"
msgstr "Problème de conflit entre pins. Sévérité: erreur"
#: eeschema/class_drc_erc_item.cpp:51
#, fuzzy
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
msgid "A no connect symbol is connected to more than 1 pin"
......@@ -9012,28 +9089,28 @@ msgstr "Pas de nom de composant!"
msgid "Component [%s] not found!"
msgstr "Composant [%s] non trouvé!"
#: eeschema/load_one_schematic_file.cpp:71
#: eeschema/load_one_schematic_file.cpp:70
msgid "Failed to open "
msgstr "Erreur ouverture "
#: eeschema/load_one_schematic_file.cpp:76
#: eeschema/load_one_schematic_file.cpp:75
msgid "Loading "
msgstr "Chargement "
#: eeschema/load_one_schematic_file.cpp:83
#: eeschema/load_one_schematic_file.cpp:114
#: eeschema/load_one_schematic_file.cpp:82
#: eeschema/load_one_schematic_file.cpp:113
msgid " is NOT an EESchema file!"
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!"
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."
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 "
msgstr "Chargement terminé"
......@@ -9170,14 +9247,12 @@ msgid "&Del Markers"
msgstr "&Supprimer Marqueurs"
#: eeschema/dialog_erc_base.cpp:101
#, fuzzy
msgid "Create ERC report"
msgstr "Créer Rapport d'erreur"
#: eeschema/dialog_erc_base.cpp:108
#, fuzzy
msgid "Markers:"
msgstr "Marqueur"
msgstr "Marqueurs:"
#: eeschema/dialog_erc_base.cpp:120
msgid "ERC"
......@@ -9187,6 +9262,40 @@ msgstr "ERC"
msgid "Reset"
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
msgid "Quick KICAD Library Component Builder"
msgstr ""
......@@ -9502,52 +9611,16 @@ msgstr "Modules (Tous): %d"
msgid "Footprints (filtered): %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
#, c-format
msgid "PCB foot print library file <%s> could not be found in the default search paths."
msgstr "Le fichier librairie de modules PCB <%s> n'a pas pu être trouvé dans les chemins de recherche par défaut."
#: cvpcb/listlib.cpp:91
#: cvpcb/loadcmp.cpp:61
#, c-format
msgid "Could not open PCB foot print library file <%s>."
msgstr "Ne peut ouvrir le fichier librairie de modules PCB <%s>."
#: 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
#, c-format
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."
msgid "Module %s not found"
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
#, c-format
msgid "Footprint alias library file <%s> could not be found in the default search paths."
......@@ -9620,7 +9721,6 @@ msgid "1:1 zoom"
msgstr "1:1 zoom"
#: cvpcb/readschematicnetlist.cpp:114
#: kicad/prjconfig.cpp:94
msgid "> not found"
msgstr "> non trouvé"
......@@ -10713,10 +10813,6 @@ msgstr "Contour Pcb"
msgid "BAD INDEX"
msgstr "BAD INDEX"
#: common/edaappl.cpp:95
msgid "Default"
msgstr "Défaut"
#: common/edaappl.cpp:112
msgid "French"
msgstr "Français"
......@@ -10985,6 +11081,10 @@ msgstr "Via Aveugle/Enterrée"
msgid "Kicad footprint library files (*.mod)|*.mod"
msgstr "Fichiers Modules Kicad (*.mod)|*.mod"
#: common/class_marker_base.cpp:183
msgid "Marker Info"
msgstr "Info Marqueur"
#: common/drawframe.cpp:302
msgid "Inch"
msgstr "Pouce"
......@@ -10993,63 +11093,67 @@ msgstr "Pouce"
msgid "??"
msgstr "??"
#: common/dialog_load_error.cpp:5
msgid "Load Error!"
msgstr "Erreur de Chargement!"
#: 3d-viewer/3d_aux.cpp:206
msgid "Vertex "
msgstr "Vertex "
#: 3d-viewer/3d_canvas.cpp:323
#: 3d-viewer/3d_canvas.cpp:330
msgid "Zoom +"
msgstr "Zoom +"
#: 3d-viewer/3d_canvas.cpp:328
#: 3d-viewer/3d_canvas.cpp:335
msgid "Zoom -"
msgstr "Zoom -"
#: 3d-viewer/3d_canvas.cpp:334
#: 3d-viewer/3d_canvas.cpp:341
msgid "Top View"
msgstr "Vue de dessus"
#: 3d-viewer/3d_canvas.cpp:339
#: 3d-viewer/3d_canvas.cpp:346
msgid "Bottom View"
msgstr "Vue de dessous"
#: 3d-viewer/3d_canvas.cpp:345
#: 3d-viewer/3d_canvas.cpp:352
msgid "Right View"
msgstr "Vue à Droite"
#: 3d-viewer/3d_canvas.cpp:350
#: 3d-viewer/3d_canvas.cpp:357
msgid "Left View"
msgstr "Vue à Gauche"
#: 3d-viewer/3d_canvas.cpp:357
#: 3d-viewer/3d_canvas.cpp:364
msgid "Front View"
msgstr "Vue de face"
#: 3d-viewer/3d_canvas.cpp:362
#: 3d-viewer/3d_canvas.cpp:369
msgid "Back View"
msgstr "Vue arrière"
#: 3d-viewer/3d_canvas.cpp:368
#: 3d-viewer/3d_canvas.cpp:375
#: 3d-viewer/3d_toolbar.cpp:85
msgid "Move left <-"
msgstr "Vers la gauche <-"
#: 3d-viewer/3d_canvas.cpp:373
#: 3d-viewer/3d_canvas.cpp:380
#: 3d-viewer/3d_toolbar.cpp:88
msgid "Move right ->"
msgstr "Vers la droite ->"
#: 3d-viewer/3d_canvas.cpp:378
#: 3d-viewer/3d_canvas.cpp:385
#: 3d-viewer/3d_toolbar.cpp:91
msgid "Move Up ^"
msgstr "Vers le haut ^"
#: 3d-viewer/3d_canvas.cpp:383
#: 3d-viewer/3d_canvas.cpp:390
#: 3d-viewer/3d_toolbar.cpp:94
msgid "Move Down"
msgstr "Vers le bas"
#: 3d-viewer/3d_canvas.cpp:616
#: 3d-viewer/3d_canvas.cpp:624
msgid "3D Image filename:"
msgstr "Nom fichier Image 3D:"
......@@ -11278,6 +11382,10 @@ msgstr "Créer Fichier SVG"
msgid "Fill Zones Options"
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
msgid "Non Copper Zones Properties"
msgstr "Propriétés des Zones sur couches non cuivre"
......@@ -11650,6 +11758,25 @@ msgstr "DCodes id."
msgid "Page Settings"
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"
#~ msgstr "feuille %s (pos X=%f, Y=%f): %s\n"
#~ msgid "ERC finished, no error\n"
......
......@@ -32,6 +32,8 @@ set(PCBNEW_SRCS
deltrack.cpp
dialog_copper_zones.cpp
dialog_copper_zones_base.cpp
dialog_design_rules.cpp
dialog_design_rules_base.cpp
dialog_display_options.cpp
dialog_display_options_base.cpp
dialog_drc_base.cpp
......
......@@ -36,6 +36,11 @@ BOARD::BOARD( EDA_BaseStruct* parent, WinEDA_BasePcbFrame* frame ) :
m_Layer[layer].m_Name = ReturnPcbLayerName( layer, true );
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
bool rc = false;
BOARD_ITEM* item;
// save the netclasses
m_NetClassesList.Save( aFile );
// save the nets
for( unsigned ii = 0; ii < m_NetInfo->GetNetsCount(); ii++ )
if( !m_NetInfo->GetNetItem( ii )->Save( aFile ) )
......
......@@ -22,7 +22,7 @@ enum LAYER_T {
LT_SIGNAL,
LT_POWER,
LT_MIXED,
LT_JUMPER,
LT_JUMPER
};
......@@ -97,7 +97,8 @@ public:
std::vector<RATSNEST_ITEM> m_LocalRatsnest; /* Rastnest list relative to a given 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();
......@@ -335,6 +336,17 @@ public:
*/
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
* 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 @@
#ifndef __CLASSES_NETINFO__
#define __CLASSES_NETINFO__
#include "class_netclass.h"
// Forward declaration:
class NETINFO_ITEM;
......@@ -147,17 +149,21 @@ private:
class NETINFO_ITEM
{
private:
int m_NetCode; // this is a number equivalent to the net name
// Used for fast comparisons in rastnest and DRC computations.
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
int m_NetCode; // this is a number equivalent to the net name
// Used for fast comparisons in rastnest and DRC computations.
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_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:
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_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
unsigned m_RatsnestStartIdx; /* Starting point of ratsnests of this net (included)
* in a general buffer of ratsnest (a vector<RATSNEST_ITEM*> buffer)
......@@ -168,7 +174,86 @@ public:
~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 );
/**
......
......@@ -17,8 +17,10 @@
NETINFO_ITEM::NETINFO_ITEM( BOARD_ITEM* aParent )
{
SetNet( 0 );
m_NbNodes = m_NbLink = m_NbNoconn = 0;
m_ForceWidth = 0;
m_NbNodes = 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_RatsnestEndIdx = 0; // Ending point of ratsnests of this net
}
......@@ -58,10 +60,10 @@ int NETINFO_ITEM:: ReadDescr( FILE* File, int* LineNum )
continue;
}
if( strncmp( Line, "Lw", 2 ) == 0 ) /* Texte */
if( strncmp( Line, "NetClass", 8 ) == 0 ) /* Net Class */
{
sscanf( Line + 2, " %d", &tmp );
m_ForceWidth = tmp;
ReadDelimitedText( Ltmp, Line + 8, sizeof(Ltmp) );
m_NetClassName = CONV_FROM_UTF8( Ltmp );
continue;
}
}
......@@ -70,9 +72,9 @@ int NETINFO_ITEM:: ReadDescr( FILE* File, int* LineNum )
}
/**************************************/
/*******************************************/
bool NETINFO_ITEM::Save( FILE* aFile ) const
/**************************************/
/*******************************************/
/** Note: the old name of class NETINFO_ITEM was EQUIPOT
* so in Save (and read) functions, for compatibility, we use EQUIPOT as keyword
......@@ -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, "St %s\n", "~" );
if( m_ForceWidth )
fprintf( aFile, "Lw %d\n", m_ForceWidth );
fprintf( aFile, "NetClass \"%s\"\n", CONV_TO_UTF8(m_NetClassName) );
if( fprintf( aFile, "$EndEQUIPOT\n" ) != sizeof("$EndEQUIPOT\n") - 1 )
goto out;
......
......@@ -125,6 +125,7 @@ void NETINFO_LIST::BuildListOfNets()
}
m_Parent->m_NbNodes = nodes_count;
m_Parent->TransfertDesignRulesToNets( );
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 )
g_DesignSettings.m_ViasMinSize = atoi( data );
continue;
}
if( stricmp( Line, "MicroViaSize" ) == 0 )
{
g_DesignSettings.m_CurrentMicroViaSize = atoi( data );
......@@ -776,7 +776,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
/** ReadPcbFile
* 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
*/
{
......@@ -790,6 +790,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
NbDraw = NbTrack = NbZone = NbMod = NbNets = -1;
GetBoard()->m_Status_Pcb = 0;
GetBoard()->m_NetClassesList.ClearList();
while( GetLine( File, Line, &LineNum ) != NULL )
{
......@@ -831,6 +832,15 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
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 )
{
ZONE_CONTAINER * zone_descr = new ZONE_CONTAINER(GetBoard());
......@@ -913,6 +923,15 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
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;
return 1;
}
......
......@@ -205,6 +205,13 @@ void WinEDA_PcbFrame::ReCreateMenuBar()
configmenu->AppendSeparator();
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: //
/////////////////////////////
......@@ -319,6 +326,7 @@ void WinEDA_PcbFrame::ReCreateMenuBar()
menuBar->Append( filesMenu, _( "&File" ) );
menuBar->Append( configmenu, _( "&Preferences" ) );
menuBar->Append( designRulesMenu, _( "&Design Rules" ) );
menuBar->Append( sizes_menu, _( "&Dimensions" ) );
menuBar->Append( miscellaneous_menu, _( "&Miscellaneous" ) );
menuBar->Append( postprocess_menu, _( "P&ostprocess" ) );
......
......@@ -38,6 +38,9 @@ static wxMenu* Append_Track_Width_List()
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,
_( "Auto Width" ),
_(
......
......@@ -16,6 +16,8 @@
#include "3d_viewer.h"
#include "kbool/include/kbool/booleng.h"
#include "dialog_design_rules.h"
// Keys used in read/write config
#define PCB_CURR_GRID wxT( "PcbCurrGrid" )
#define PCB_MAGNETIC_PADS_OPT wxT( "PcbMagPadOpt" )
......@@ -116,6 +118,9 @@ BEGIN_EVENT_TABLE( WinEDA_PcbFrame, WinEDA_BasePcbFrame )
// Menu 3D 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
EVT_TOOL( ID_TO_LIBRARY, WinEDA_PcbFrame::Process_Special_Functions )
EVT_TOOL( ID_SHEET_SET, WinEDA_DrawFrame::Process_PageSettings )
......@@ -639,3 +644,17 @@ void WinEDA_PcbFrame::Show3D_Frame( wxCommandEvent& event )
m_Draw3DFrame = new WinEDA3D_DrawFrame( this, _( "3D Viewer" ) );
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()
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( 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