Commit ca5fd179 authored by CHARRAS's avatar CHARRAS

ratsnest.cpp translated, onrightclick() bug solved.

parent 3cd47555
...@@ -4,6 +4,15 @@ Started 2007-June-11 ...@@ -4,6 +4,15 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2007-Oct-13 UPDATE Dick Hollenbeck <dick@softplc.com>
================================================================================
+ pcbnew:
ratsnest.cpp translated into english.
Many infos on the LEE algorithm used here added.
todo (by myself): connect.cpp translation.
onrightclick() bug (created by last change) solved: one could reselect an item,
while moving a previously selected item (pcbnew crashes).
2007-Oct-13 UPDATE Geoff Harland <gharlandau@yahoo.com.au> 2007-Oct-13 UPDATE Geoff Harland <gharlandau@yahoo.com.au>
================================================================================ ================================================================================
......
No preview for this file type
...@@ -2,7 +2,7 @@ msgid "" ...@@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2007-10-08 07:56+0100\n" "PO-Revision-Date: 2007-10-12 09:04+0100\n"
"Last-Translator: jp charras <jean-pierre.charras@inpg.fr>\n" "Last-Translator: jp charras <jean-pierre.charras@inpg.fr>\n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
...@@ -111,7 +111,6 @@ msgstr "Ajouter Pastilles" ...@@ -111,7 +111,6 @@ msgstr "Ajouter Pastilles"
#: pcbnew/modedit.cpp:316 #: pcbnew/modedit.cpp:316
#: pcbnew/menubarpcb.cpp:209 #: pcbnew/menubarpcb.cpp:209
#: pcbnew/tool_modedit.cpp:133 #: pcbnew/tool_modedit.cpp:133
#: pcbnew/globaleditpad.cpp:96
#: pcbnew/menubarmodedit.cpp:45 #: pcbnew/menubarmodedit.cpp:45
msgid "Pad Settings" msgid "Pad Settings"
msgstr "Caract pads" msgstr "Caract pads"
...@@ -127,7 +126,7 @@ msgid "Place anchor" ...@@ -127,7 +126,7 @@ msgid "Place anchor"
msgstr "Place Ancre" msgstr "Place Ancre"
#: pcbnew/modedit.cpp:344 #: pcbnew/modedit.cpp:344
#: pcbnew/edit.cpp:457 #: pcbnew/edit.cpp:459
#: eeschema/schedit.cpp:454 #: eeschema/schedit.cpp:454
#: eeschema/libframe.cpp:578 #: eeschema/libframe.cpp:578
msgid "Delete item" msgid "Delete item"
...@@ -470,13 +469,11 @@ msgstr "Outils de per ...@@ -470,13 +469,11 @@ msgstr "Outils de per
#: pcbnew/gendrill.cpp:171 #: pcbnew/gendrill.cpp:171
#: pcbnew/dialog_general_options.cpp:271 #: pcbnew/dialog_general_options.cpp:271
#: eeschema/options.cpp:185
#: gerbview/options.cpp:184 #: gerbview/options.cpp:184
msgid "millimeters" msgid "millimeters"
msgstr "millimetres" msgstr "millimetres"
#: pcbnew/gendrill.cpp:171 #: pcbnew/gendrill.cpp:171
#: eeschema/options.cpp:185
#: eeschema/dialog_options.cpp:246 #: eeschema/dialog_options.cpp:246
msgid "inches" msgid "inches"
msgstr "Pouces" msgstr "Pouces"
...@@ -637,9 +634,9 @@ msgstr "Outils" ...@@ -637,9 +634,9 @@ msgstr "Outils"
#: pcbnew/gendrill.cpp:411 #: pcbnew/gendrill.cpp:411
#: pcbnew/gendrill.cpp:1098 #: pcbnew/gendrill.cpp:1098
#: pcbnew/gendrill.cpp:1674 #: pcbnew/gendrill.cpp:1674
#: pcbnew/class_pad.cpp:930 #: pcbnew/class_pad.cpp:974
#: pcbnew/class_track.cpp:771 #: pcbnew/class_track.cpp:791
#: pcbnew/class_track.cpp:776 #: pcbnew/class_track.cpp:796
msgid "Drill" msgid "Drill"
msgstr "Perage" msgstr "Perage"
...@@ -700,102 +697,58 @@ msgstr "Valeur incorrecte pour diametre de per ...@@ -700,102 +697,58 @@ msgstr "Valeur incorrecte pour diametre de per
msgid "Incorrect value for pad offset" msgid "Incorrect value for pad offset"
msgstr "Valeur incorrecte pour offset du pad" msgstr "Valeur incorrecte pour offset du pad"
#: pcbnew/pcbpiste.cpp:62 #: pcbnew/edit.cpp:169
#: pcbnew/swap_layers.cpp:59 #: pcbnew/editmod.cpp:45
msgid "Swap Layers:" msgid "Module Editor"
msgstr "Permutte couches" msgstr "Ouvrir Editeur de modules"
#: pcbnew/pcbpiste.cpp:77 #: pcbnew/edit.cpp:249
#: pcbnew/pcbpiste.cpp:135 msgid "Add Tracks"
#: pcbnew/swap_layers.cpp:75 msgstr "Addition de pistes"
#: pcbnew/swap_layers.cpp:129
#: pcbnew/swap_layers.cpp:162
msgid "No Change"
msgstr "Garder"
#: pcbnew/pcbpiste.cpp:81 #: pcbnew/edit.cpp:258
#: pcbnew/swap_layers.cpp:80 msgid "Add Zones"
#: gerbview/select_layers_to_pcb.cpp:134 msgstr "Addition de Zones"
msgid "Layers"
msgstr "Couches"
#: pcbnew/pcbpiste.cpp:89 #: pcbnew/edit.cpp:260
#: pcbnew/cotation.cpp:109 msgid "Warning: Display Zone is OFF!!!"
#: pcbnew/muonde.cpp:352 msgstr "Attention: Affichage zones dsactiv !!!"
#: pcbnew/mirepcb.cpp:107
#: pcbnew/block.cpp:153
#: pcbnew/pcbtexte.cpp:116
#: pcbnew/sel_layer.cpp:162
#: pcbnew/sel_layer.cpp:313
#: pcbnew/modedit_onclick.cpp:202
#: pcbnew/modedit_onclick.cpp:234
#: pcbnew/swap_layers.cpp:103
#: pcbnew/dialog_edit_module.cpp:121
#: pcbnew/globaleditpad.cpp:111
#: pcbnew/onrightclick.cpp:143
#: pcbnew/onrightclick.cpp:157
#: eeschema/options.cpp:114
#: eeschema/sheetlab.cpp:97
#: eeschema/libedit_onrightclick.cpp:68
#: eeschema/libedit_onrightclick.cpp:83
#: eeschema/onrightclick.cpp:121
#: eeschema/onrightclick.cpp:133
#: cvpcb/dialog_display_options.cpp:194
#: gerbview/set_color.cpp:251
#: gerbview/options.cpp:167
#: gerbview/options.cpp:296
#: gerbview/reglage.cpp:120
#: gerbview/onrightclick.cpp:40
#: gerbview/onrightclick.cpp:59
#: gerbview/select_layers_to_pcb.cpp:171
#: common/selcolor.cpp:147
#: common/displlst.cpp:103
#: common/get_component_dialog.cpp:121
msgid "Cancel"
msgstr "Annuler"
#: pcbnew/pcbpiste.cpp:96 #: pcbnew/edit.cpp:267
#: pcbnew/cotation.cpp:105 msgid "Add Layer Alignment Target"
#: pcbnew/muonde.cpp:348 msgstr "Ajouter Mire de superposition"
#: pcbnew/block.cpp:156
#: pcbnew/pcbtexte.cpp:111
#: pcbnew/sel_layer.cpp:158
#: pcbnew/sel_layer.cpp:309
#: pcbnew/swap_layers.cpp:98
#: pcbnew/dialog_edit_module.cpp:117
#: eeschema/options.cpp:110
#: eeschema/sheetlab.cpp:93
#: cvpcb/dialog_display_options.cpp:189
#: gerbview/set_color.cpp:247
#: gerbview/options.cpp:163
#: gerbview/options.cpp:292
#: gerbview/reglage.cpp:116
#: gerbview/select_layers_to_pcb.cpp:167
#: common/displlst.cpp:99
#: common/get_component_dialog.cpp:112
msgid "OK"
msgstr "OK"
#: pcbnew/pcbpiste.cpp:103 #: pcbnew/edit.cpp:271
#: pcbnew/swap_layers.cpp:93 msgid "Adjust Zero"
#: gerbview/select_layers_to_pcb.cpp:156 msgstr "Ajuster Zro"
msgid "Deselect"
msgstr "Deselection"
#: pcbnew/pcbpiste.cpp:110 #: pcbnew/edit.cpp:277
#: pcbnew/dialog_netlist.cpp:162 msgid "Add Graphic"
msgid "Select" msgstr "Addition lments graphiques"
msgstr "Slection"
#: pcbnew/pcbpiste.cpp:259 #: pcbnew/edit.cpp:281
#: pcbnew/surbrill.cpp:35 #: pcbnew/tool_modedit.cpp:180
msgid "Filter for net names:" #: eeschema/schedit.cpp:314
msgstr "Filtre pour nets:" #: eeschema/libframe.cpp:502
#: gerbview/tool_gerber.cpp:383
msgid "Add Text"
msgstr "Ajout de Texte"
#: pcbnew/pcbpiste.cpp:263 #: pcbnew/edit.cpp:285
#: pcbnew/surbrill.cpp:39 msgid "Add Modules"
msgid "List Nets" msgstr "Addition de Modules"
msgstr "Liste quipots"
#: pcbnew/edit.cpp:289
msgid "Add Cotation"
msgstr "Addition de Cotations"
#: pcbnew/edit.cpp:297
msgid "Net Highlight"
msgstr "Surbrillance des quipotentielles"
#: pcbnew/edit.cpp:301
msgid "Local Ratsnest"
msgstr "Monter le chevelu gnral"
#: pcbnew/plotps.cpp:361 #: pcbnew/plotps.cpp:361
#: pcbnew/affiche.cpp:63 #: pcbnew/affiche.cpp:63
...@@ -807,419 +760,110 @@ msgstr "Vias" ...@@ -807,419 +760,110 @@ msgstr "Vias"
msgid "Tracks" msgid "Tracks"
msgstr "Pistes" msgstr "Pistes"
#: pcbnew/tool_pcb.cpp:51 #: pcbnew/router.cpp:60
msgid "" msgid "Unable to create temporary file "
"Show active layer selections\n" msgstr "Impossible de crer le fichier temporaire "
"and select layer pair for route and place via"
msgstr ""
"Affiche selections couche active\n"
"et selection paire de couches pour routage and placement via"
#: pcbnew/tool_pcb.cpp:239
msgid "New Board"
msgstr "Nouveau Circuit Imprim"
#: pcbnew/tool_pcb.cpp:241 #: pcbnew/router.cpp:65
msgid "Open existing Board" msgid "Create temporary file "
msgstr "Ouvrir C.I. existant" msgstr "Creation fichier temporaire "
#: pcbnew/tool_pcb.cpp:242 #: pcbnew/router.cpp:566
msgid "Save Board" msgid "Unable to find data file "
msgstr "Sauver Circuit Imprim" msgstr "Impossible de trouver le fichier de donnes "
#: pcbnew/tool_pcb.cpp:246 #: pcbnew/router.cpp:572
#: eeschema/tool_sch.cpp:65 msgid "Reading autorouter data file "
#: gerbview/tool_gerber.cpp:233 msgstr "Lecture fichier donnes de l'autorouteur"
msgid "page settings (size, texts)"
msgstr "Ajustage de la feuille de dessin (dimensions, textes)"
#: pcbnew/tool_pcb.cpp:250 #: pcbnew/class_pcb_text.cpp:163
msgid "Open Module Editor" #: gerbview/affiche.cpp:29
msgstr "Ouvrir Editeur de modules" msgid "COTATION"
msgstr "COTATION"
#: pcbnew/tool_pcb.cpp:253 #: pcbnew/class_pcb_text.cpp:165
#: eeschema/tool_sch.cpp:81 #: gerbview/affiche.cpp:32
#: gerbview/tool_gerber.cpp:244 msgid "PCB Text"
msgid "Cut selected item" msgstr "Texte Pcb"
msgstr "Suppression des lments slectionns"
#: pcbnew/tool_pcb.cpp:257 #: pcbnew/class_pcb_text.cpp:167
#: eeschema/tool_sch.cpp:84 #: pcbnew/class_pad.cpp:951
#: gerbview/tool_gerber.cpp:249 #: pcbnew/classpcb.cpp:197
msgid "Copy selected item" #: pcbnew/class_text_mod.cpp:347
msgstr "Copie des lments slectionns" #: pcbnew/class_text_mod.cpp:351
#: pcbnew/sel_layer.cpp:145
#: pcbnew/dialog_edit_module.cpp:234
#: pcbnew/class_track.cpp:775
#: pcbnew/class_module.cpp:1116
#: gerbview/affiche.cpp:109
msgid "Layer"
msgstr "Couche"
#: pcbnew/tool_pcb.cpp:259 #: pcbnew/class_pcb_text.cpp:171
#: eeschema/tool_sch.cpp:87 #: pcbnew/cotation.cpp:113
#: gerbview/tool_gerber.cpp:255 #: pcbnew/class_text_mod.cpp:358
msgid "Paste" #: pcbnew/pcbtexte.cpp:176
msgstr "Copie des lments sauvegards" #: pcbnew/modedit_onclick.cpp:253
#: gerbview/affiche.cpp:40
#: share/dialog_print.cpp:178
msgid "Mirror"
msgstr "Miroir"
#: pcbnew/tool_pcb.cpp:262 #: pcbnew/class_pcb_text.cpp:173
#: gerbview/tool_gerber.cpp:262 #: pcbnew/dialog_display_options.cpp:273
msgid "Undelete" #: pcbnew/class_text_mod.cpp:341
msgstr "Annulation du dernier effacement" #: eeschema/dialog_options.cpp:265
#: gerbview/affiche.cpp:43
msgid "No"
msgstr "Non"
#: pcbnew/tool_pcb.cpp:265 #: pcbnew/class_pcb_text.cpp:175
msgid "Print Board" #: pcbnew/dialog_display_options.cpp:272
msgstr "Imprimer C.I." #: pcbnew/class_text_mod.cpp:343
#: eeschema/dialog_options.cpp:264
#: gerbview/affiche.cpp:45
msgid "Yes"
msgstr "Oui"
#: pcbnew/tool_pcb.cpp:267 #: pcbnew/class_pcb_text.cpp:178
msgid "Plot (HPGL, PostScript, or GERBER format)" #: pcbnew/class_pad.cpp:993
msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER" #: pcbnew/class_text_mod.cpp:361
#: pcbnew/dialog_edit_module.cpp:245
#: pcbnew/class_module.cpp:1139
#: eeschema/affiche.cpp:117
#: gerbview/affiche.cpp:49
msgid "Orient"
msgstr "Orient"
#: pcbnew/tool_pcb.cpp:270 #: pcbnew/class_pcb_text.cpp:181
#: pcbnew/tool_modedit.cpp:115 #: pcbnew/dialog_edit_mod_text.cpp:204
#: eeschema/tool_lib.cpp:170 #: pcbnew/cotation.cpp:129
#: eeschema/tool_sch.cpp:108 #: pcbnew/mirepcb.cpp:113
#: gerbview/tool_gerber.cpp:272 #: pcbnew/classpcb.cpp:202
msgid "zoom +" #: pcbnew/class_text_mod.cpp:364
msgstr "zoom +" #: pcbnew/pcbtexte.cpp:130
#: pcbnew/class_edge_mod.cpp:297
#: pcbnew/class_track.cpp:799
#: eeschema/affiche.cpp:188
#: eeschema/dialog_cmp_graphic_properties.cpp:188
#: gerbview/affiche.cpp:52
#: gerbview/affiche.cpp:113
msgid "Width"
msgstr "Epaisseur"
#: pcbnew/tool_pcb.cpp:274 #: pcbnew/class_pcb_text.cpp:184
#: pcbnew/tool_modedit.cpp:119 #: pcbnew/class_pad.cpp:964
#: eeschema/tool_lib.cpp:174 #: pcbnew/class_text_mod.cpp:367
#: eeschema/tool_sch.cpp:112 #: gerbview/affiche.cpp:55
#: gerbview/tool_gerber.cpp:279 msgid "H Size"
msgid "zoom -" msgstr "Taille H"
msgstr "zoom -"
#: pcbnew/tool_pcb.cpp:278 #: pcbnew/class_pcb_text.cpp:187
#: pcbnew/tool_modedit.cpp:123 #: pcbnew/class_pad.cpp:968
#: eeschema/tool_lib.cpp:178 #: pcbnew/class_text_mod.cpp:370
#: eeschema/tool_sch.cpp:116 #: gerbview/affiche.cpp:58
#: gerbview/tool_gerber.cpp:286 msgid "V Size"
msgid "redraw" msgstr "Taille V"
msgstr "Redessin"
#: pcbnew/tool_pcb.cpp:283
#: pcbnew/tool_modedit.cpp:128
#: eeschema/tool_lib.cpp:184
#: eeschema/tool_sch.cpp:121
#: gerbview/tool_gerber.cpp:297
#: 3d-viewer/3d_toolbar.cpp:53
msgid "auto zoom"
msgstr "Zoom automatique"
#: pcbnew/tool_pcb.cpp:286
#: eeschema/tool_sch.cpp:125
msgid "Find components and texts"
msgstr "Recherche de composants et textes"
#: pcbnew/tool_pcb.cpp:292
msgid "Read Netlist"
msgstr "Lire Netliste"
#: pcbnew/tool_pcb.cpp:294
msgid "Pcb Design Rules Check"
msgstr "Controle des rgles de conception"
#: pcbnew/tool_pcb.cpp:305
msgid "Mode Module: Manual and Automatic Move or Place for modules"
msgstr "Mode Module: Dplacements ou Placement Manuel ou Automatique des modules"
#: pcbnew/tool_pcb.cpp:308
msgid "Mode Track and Autorouting"
msgstr "Mode Pistes and Autoroutage"
#: pcbnew/tool_pcb.cpp:332
msgid "Drc OFF"
msgstr "Drc DESACTIVEE"
#: pcbnew/tool_pcb.cpp:334
#: pcbnew/tool_modedit.cpp:212
#: eeschema/tool_sch.cpp:257
#: gerbview/tool_gerber.cpp:412
msgid "Display Grid OFF"
msgstr "Suppression de l'affichage de la grille"
#: pcbnew/tool_pcb.cpp:337
#: pcbnew/tool_modedit.cpp:216
#: gerbview/tool_gerber.cpp:418
msgid "Display Polar Coord ON"
msgstr "Activer affichage coord Polaires"
#: pcbnew/tool_pcb.cpp:339
#: pcbnew/tool_modedit.cpp:220
#: eeschema/tool_sch.cpp:261
#: gerbview/tool_gerber.cpp:422
msgid "Units = Inch"
msgstr "Units = pouce"
#: pcbnew/tool_pcb.cpp:341
#: pcbnew/tool_modedit.cpp:224
#: eeschema/tool_sch.cpp:265
#: gerbview/tool_gerber.cpp:426
msgid "Units = mm"
msgstr "Units = mm"
#: pcbnew/tool_pcb.cpp:344
#: pcbnew/tool_modedit.cpp:230
#: eeschema/tool_sch.cpp:269
#: gerbview/tool_gerber.cpp:432
msgid "Change Cursor Shape"
msgstr "Slection de la forme du curseur"
#: pcbnew/tool_pcb.cpp:349
msgid "Show General Ratsnest"
msgstr "Monter le chevelu gnral"
#: pcbnew/tool_pcb.cpp:352
msgid "Show Module Ratsnest when moving"
msgstr "Monter le chevelu du module pendant dplacement"
#: pcbnew/tool_pcb.cpp:357
msgid "Enable Auto Del Track"
msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/tool_pcb.cpp:361
#: pcbnew/pcbframe.cpp:411
#: pcbnew/set_color.cpp:389
msgid "Show Zones"
msgstr "Monter Zones"
#: pcbnew/tool_pcb.cpp:366
#: pcbnew/tool_modedit.cpp:238
msgid "Show Pads Sketch"
msgstr "Afficher pastilles en contour"
#: pcbnew/tool_pcb.cpp:370
msgid "Show Tracks Sketch"
msgstr "Afficher pistes en contour"
#: pcbnew/tool_pcb.cpp:374
#: pcbnew/pcbframe.cpp:432
msgid "Hight Contrast Mode Display"
msgstr "Mode d'affichage Haut Contraste"
#: pcbnew/tool_pcb.cpp:383
msgid ""
"Display auxiliary vertical toolbar (tools for micro wave applications)\n"
" This is a very experimental feature (under development)"
msgstr ""
"Affiche toolbar vertical auxiliaire (outils pour applications micro-ondes)\n"
"C'est un outil exprimental (en cours de dveloppement)"
#: pcbnew/tool_pcb.cpp:412
msgid "Net highlight"
msgstr "Surbrillance des quipotentielles"
#: pcbnew/tool_pcb.cpp:416
msgid "Display local ratsnest (pad or module)"
msgstr "Afficher le chevelu local (pastilles ou modules)"
#: pcbnew/tool_pcb.cpp:421
msgid "Add modules"
msgstr "Addition de Modules"
#: pcbnew/tool_pcb.cpp:425
msgid "Add Tracks an vias"
msgstr "Ajouter pistes et vias"
#: pcbnew/tool_pcb.cpp:429
#: pcbnew/edit.cpp:256
msgid "Add Zones"
msgstr "Addition de Zones"
#: pcbnew/tool_pcb.cpp:434
#: pcbnew/tool_modedit.cpp:168
#: eeschema/tool_sch.cpp:226
msgid "Add graphic line or polygon"
msgstr "Addition de lignes ou polygones graphiques"
#: pcbnew/tool_pcb.cpp:438
#: pcbnew/tool_modedit.cpp:172
msgid "Add graphic circle"
msgstr "Addition de graphiques (Cercle)"
#: pcbnew/tool_pcb.cpp:442
#: pcbnew/tool_modedit.cpp:176
msgid "Add graphic arc"
msgstr "Addition de graphiques (Arc de Cercle)"
#: pcbnew/tool_pcb.cpp:446
#: pcbnew/edit.cpp:279
#: pcbnew/tool_modedit.cpp:180
#: eeschema/schedit.cpp:314
#: eeschema/libframe.cpp:502
#: gerbview/tool_gerber.cpp:383
msgid "Add Text"
msgstr "Ajout de Texte"
#: pcbnew/tool_pcb.cpp:451
#: pcbnew/edit.cpp:287
msgid "Add Cotation"
msgstr "Addition de Cotations"
#: pcbnew/tool_pcb.cpp:455
#: gerbview/tool_gerber.cpp:376
msgid "Add Mires"
msgstr "Addition de Mires de superposition"
#: pcbnew/tool_pcb.cpp:460
#: pcbnew/tool_modedit.cpp:190
#: eeschema/tool_lib.cpp:93
#: eeschema/tool_sch.cpp:235
#: gerbview/tool_gerber.cpp:391
msgid "Delete items"
msgstr "Suppression d'lments"
#: pcbnew/tool_pcb.cpp:465
msgid "Offset adjust for drill and place files"
msgstr "Ajuste offset pour fichier de perage et placement"
#: pcbnew/tool_pcb.cpp:490
msgid "Create line of specified length for microwave applications"
msgstr "Creation de lignes de longueur spcifie (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:496
msgid "Create gap of specified length for microwave applications"
msgstr "Creation de gaps de longueur spcifie (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:504
msgid "Create stub of specified length for microwave applications"
msgstr "Creation de stub de longueur spcifie (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:510
msgid "Create stub (arc) of specified length for microwave applications"
msgstr "Creation de stub (arc) de longueur spcifie (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:517
msgid "Create a polynomial shape for microwave applications"
msgstr "Creation de formes polynomiales (pour applications micro-ondes)"
#: pcbnew/tool_pcb.cpp:567
#: pcbnew/tool_modedit.cpp:285
#: eeschema/plotps.cpp:169
#: share/zoom.cpp:368
msgid "Auto"
msgstr "Auto"
#: pcbnew/tool_pcb.cpp:571
msgid "Zoom "
msgstr "Zoom "
#: pcbnew/tool_pcb.cpp:585
#: pcbnew/set_color.cpp:380
#: gerbview/set_color.h:246
msgid "Grid"
msgstr "Grille"
#: pcbnew/tool_pcb.cpp:601
#: pcbnew/tool_modedit.cpp:314
msgid "User Grid"
msgstr "Grille perso"
#: pcbnew/tool_pcb.cpp:676
msgid "+/- to switch"
msgstr "+/- pour commuter"
#: pcbnew/router.cpp:60
msgid "Unable to create temporary file "
msgstr "Impossible de crer le fichier temporaire "
#: pcbnew/router.cpp:65
msgid "Create temporary file "
msgstr "Creation fichier temporaire "
#: pcbnew/router.cpp:566
msgid "Unable to find data file "
msgstr "Impossible de trouver le fichier de donnes "
#: pcbnew/router.cpp:572
msgid "Reading autorouter data file "
msgstr "Lecture fichier donnes de l'autorouteur"
#: pcbnew/class_pcb_text.cpp:163
#: gerbview/affiche.cpp:29
msgid "COTATION"
msgstr "COTATION"
#: pcbnew/class_pcb_text.cpp:165
#: gerbview/affiche.cpp:32
msgid "PCB Text"
msgstr "Texte Pcb"
#: pcbnew/class_pcb_text.cpp:167
#: pcbnew/class_pad.cpp:907
#: pcbnew/classpcb.cpp:197
#: pcbnew/class_text_mod.cpp:347
#: pcbnew/class_text_mod.cpp:351
#: pcbnew/sel_layer.cpp:145
#: pcbnew/class_track.cpp:755
#: pcbnew/dialog_edit_module.cpp:234
#: pcbnew/class_module.cpp:1116
#: gerbview/affiche.cpp:109
msgid "Layer"
msgstr "Couche"
#: pcbnew/class_pcb_text.cpp:171
#: pcbnew/cotation.cpp:113
#: pcbnew/class_text_mod.cpp:358
#: pcbnew/pcbtexte.cpp:176
#: pcbnew/modedit_onclick.cpp:253
#: gerbview/affiche.cpp:40
#: share/dialog_print.cpp:178
msgid "Mirror"
msgstr "Miroir"
#: pcbnew/class_pcb_text.cpp:173
#: pcbnew/dialog_display_options.cpp:273
#: pcbnew/class_text_mod.cpp:341
#: eeschema/options.cpp:202
#: eeschema/dialog_options.cpp:265
#: gerbview/affiche.cpp:43
msgid "No"
msgstr "Non"
#: pcbnew/class_pcb_text.cpp:175
#: pcbnew/dialog_display_options.cpp:272
#: pcbnew/class_text_mod.cpp:343
#: eeschema/options.cpp:202
#: eeschema/dialog_options.cpp:264
#: gerbview/affiche.cpp:45
msgid "Yes"
msgstr "Oui"
#: pcbnew/class_pcb_text.cpp:178
#: pcbnew/class_pad.cpp:949
#: pcbnew/class_text_mod.cpp:361
#: pcbnew/dialog_edit_module.cpp:245
#: pcbnew/class_module.cpp:1139
#: eeschema/affiche.cpp:117
#: gerbview/affiche.cpp:49
msgid "Orient"
msgstr "Orient"
#: pcbnew/class_pcb_text.cpp:181
#: pcbnew/dialog_edit_mod_text.cpp:204
#: pcbnew/cotation.cpp:129
#: pcbnew/mirepcb.cpp:117
#: pcbnew/classpcb.cpp:202
#: pcbnew/class_text_mod.cpp:364
#: pcbnew/pcbtexte.cpp:130
#: pcbnew/class_track.cpp:779
#: pcbnew/class_edge_mod.cpp:297
#: eeschema/affiche.cpp:188
#: eeschema/dialog_cmp_graphic_properties.cpp:188
#: gerbview/affiche.cpp:52
#: gerbview/affiche.cpp:113
msgid "Width"
msgstr "Epaisseur"
#: pcbnew/class_pcb_text.cpp:184
#: pcbnew/class_pad.cpp:920
#: pcbnew/class_text_mod.cpp:367
#: gerbview/affiche.cpp:55
msgid "H Size"
msgstr "Taille H"
#: pcbnew/class_pcb_text.cpp:187
#: pcbnew/class_pad.cpp:924
#: pcbnew/class_text_mod.cpp:370
#: gerbview/affiche.cpp:58
msgid "V Size"
msgstr "Taille V"
#: pcbnew/edgemod.cpp:204 #: pcbnew/edgemod.cpp:204
msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure" msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure"
...@@ -1238,7 +882,7 @@ msgid "Footprint name:" ...@@ -1238,7 +882,7 @@ msgid "Footprint name:"
msgstr "Nom Module: " msgstr "Nom Module: "
#: pcbnew/modules.cpp:281 #: pcbnew/modules.cpp:281
#: pcbnew/onrightclick.cpp:650 #: pcbnew/onrightclick.cpp:688
msgid "Delete Module" msgid "Delete Module"
msgstr "Supprimer Module" msgstr "Supprimer Module"
...@@ -1392,7 +1036,6 @@ msgid "Pad options:" ...@@ -1392,7 +1036,6 @@ msgid "Pad options:"
msgstr "Options pads" msgstr "Options pads"
#: pcbnew/zones.cpp:192 #: pcbnew/zones.cpp:192
#: eeschema/options.cpp:194
#: eeschema/dialog_options.cpp:257 #: eeschema/dialog_options.cpp:257
msgid "Any" msgid "Any"
msgstr "Tout" msgstr "Tout"
...@@ -1438,12 +1081,11 @@ msgid "No Net" ...@@ -1438,12 +1081,11 @@ msgid "No Net"
msgstr "No Net" msgstr "No Net"
#: pcbnew/zones.cpp:916 #: pcbnew/zones.cpp:916
#: pcbnew/class_track.cpp:714 #: pcbnew/class_track.cpp:734
msgid "NetName" msgid "NetName"
msgstr "NetName" msgstr "NetName"
#: pcbnew/zones.cpp:984 #: pcbnew/zones.cpp:984
#: pcbnew/mirepcb.cpp:103
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
...@@ -1605,10 +1247,98 @@ msgstr "Fichiers Doc des Modules" ...@@ -1605,10 +1247,98 @@ msgstr "Fichiers Doc des Modules"
msgid "library files:" msgid "library files:"
msgstr "Fichiers Librairies" msgstr "Fichiers Librairies"
#: pcbnew/reglage.cpp:279 #: pcbnew/reglage.cpp:279
#: pcbnew/dialog_setup_libs.cpp:390 #: pcbnew/dialog_setup_libs.cpp:390
msgid "Library exists! No Change" msgid "Library exists! No Change"
msgstr "Librairie existante! Pas de changement" msgstr "Librairie existante! Pas de changement"
#: pcbnew/cotation.cpp:85
msgid "Dimension properties"
msgstr "Proprits des Cotes"
#: pcbnew/cotation.cpp:105
#: pcbnew/mirepcb.cpp:99
#: pcbnew/muonde.cpp:348
#: pcbnew/block.cpp:156
#: pcbnew/pcbtexte.cpp:111
#: pcbnew/sel_layer.cpp:158
#: pcbnew/sel_layer.cpp:309
#: pcbnew/set_color.cpp:275
#: pcbnew/swap_layers.cpp:98
#: pcbnew/dialog_edit_module.cpp:117
#: eeschema/sheetlab.cpp:93
#: cvpcb/dialog_display_options.cpp:189
#: gerbview/set_color.cpp:249
#: gerbview/options.cpp:163
#: gerbview/options.cpp:292
#: gerbview/reglage.cpp:116
#: gerbview/select_layers_to_pcb.cpp:167
#: common/displlst.cpp:99
#: common/get_component_dialog.cpp:112
msgid "OK"
msgstr "OK"
#: pcbnew/cotation.cpp:109
#: pcbnew/mirepcb.cpp:103
#: pcbnew/muonde.cpp:352
#: pcbnew/block.cpp:153
#: pcbnew/pcbtexte.cpp:116
#: pcbnew/sel_layer.cpp:162
#: pcbnew/sel_layer.cpp:313
#: pcbnew/modedit_onclick.cpp:202
#: pcbnew/modedit_onclick.cpp:234
#: pcbnew/set_color.cpp:280
#: pcbnew/swap_layers.cpp:103
#: pcbnew/dialog_edit_module.cpp:121
#: pcbnew/onrightclick.cpp:146
#: pcbnew/onrightclick.cpp:160
#: pcbnew/globaleditpad.cpp:108
#: eeschema/sheetlab.cpp:97
#: eeschema/libedit_onrightclick.cpp:68
#: eeschema/libedit_onrightclick.cpp:83
#: eeschema/onrightclick.cpp:121
#: eeschema/onrightclick.cpp:133
#: cvpcb/dialog_display_options.cpp:194
#: gerbview/set_color.cpp:253
#: gerbview/options.cpp:167
#: gerbview/options.cpp:296
#: gerbview/reglage.cpp:120
#: gerbview/onrightclick.cpp:40
#: gerbview/onrightclick.cpp:59
#: gerbview/select_layers_to_pcb.cpp:171
#: common/selcolor.cpp:147
#: common/displlst.cpp:103
#: common/get_component_dialog.cpp:121
msgid "Cancel"
msgstr "Annuler"
#: pcbnew/cotation.cpp:113
#: pcbnew/muonde.cpp:360
#: pcbnew/pcbtexte.cpp:176
#: pcbnew/dialog_edit_module.cpp:242
#: pcbnew/dialog_edit_module.cpp:288
#: eeschema/dialog_options.cpp:229
#: eeschema/dialog_edit_component_in_schematic.cpp:182
#: eeschema/onrightclick.cpp:305
msgid "Normal"
msgstr "Normal"
#: pcbnew/cotation.cpp:125
#: pcbnew/mirepcb.cpp:108
#: pcbnew/muonde.cpp:367
#: pcbnew/pcbtexte.cpp:126
#: eeschema/sheet.cpp:189
#: eeschema/sheet.cpp:200
#: eeschema/pinedit-dialog.cpp:273
#: eeschema/pinedit-dialog.cpp:279
#: common/wxwineda.cpp:91
msgid "Size"
msgstr "Taille "
#: pcbnew/cotation.cpp:133
#: gerbview/affiche.cpp:37
msgid "Layer:"
msgstr "Couche:"
#: pcbnew/dialog_netlist.cpp:133 #: pcbnew/dialog_netlist.cpp:133
#: pcbnew/class_board_item.cpp:67 #: pcbnew/class_board_item.cpp:67
...@@ -1633,9 +1363,9 @@ msgid "Keep" ...@@ -1633,9 +1363,9 @@ msgid "Keep"
msgstr "Garder" msgstr "Garder"
#: pcbnew/dialog_netlist.cpp:141 #: pcbnew/dialog_netlist.cpp:141
#: pcbnew/onrightclick.cpp:575 #: pcbnew/onrightclick.cpp:613
#: pcbnew/onrightclick.cpp:682 #: pcbnew/onrightclick.cpp:720
#: pcbnew/onrightclick.cpp:779 #: pcbnew/onrightclick.cpp:817
#: eeschema/edit_component_in_lib.cpp:239 #: eeschema/edit_component_in_lib.cpp:239
#: eeschema/edit_component_in_lib.cpp:320 #: eeschema/edit_component_in_lib.cpp:320
#: cvpcb/dialog_cvpcb_config.cpp:166 #: cvpcb/dialog_cvpcb_config.cpp:166
...@@ -1643,171 +1373,449 @@ msgstr "Garder" ...@@ -1643,171 +1373,449 @@ msgstr "Garder"
msgid "Delete" msgid "Delete"
msgstr "Supprimer" msgstr "Supprimer"
#: pcbnew/dialog_netlist.cpp:143 #: pcbnew/dialog_netlist.cpp:143
msgid "Bad Tracks Deletion:" msgid "Bad Tracks Deletion:"
msgstr "Supp. pistes err.:" msgstr "Supp. pistes err.:"
#: pcbnew/dialog_netlist.cpp:148
msgid "Change"
msgstr "Changer"
#: pcbnew/dialog_netlist.cpp:150
msgid "Exchange Module:"
msgstr "Echange module:"
#: pcbnew/dialog_netlist.cpp:153
msgid "Display Warnings"
msgstr "Affiche warnings"
#: pcbnew/dialog_netlist.cpp:162
msgid "Select"
msgstr "Slection"
#: pcbnew/dialog_netlist.cpp:166
msgid "Read"
msgstr "Lire"
#: pcbnew/dialog_netlist.cpp:170
msgid "Module Test"
msgstr "Test Modules"
#: pcbnew/dialog_netlist.cpp:174
msgid "Compile"
msgstr "Compile"
#: pcbnew/pcbframe.cpp:261
msgid "Board modified, Save before exit ?"
msgstr "Circuit Imprim modifie, Sauver avant de quitter ?"
#: pcbnew/pcbframe.cpp:262
#: eeschema/schframe.cpp:183
#: cvpcb/cvframe.cpp:169
#: common/confirm.cpp:109
msgid "Confirmation"
msgstr "Confirmation"
#: pcbnew/pcbframe.cpp:362
msgid "DRC Off (Disable !!!), Currently: DRC is active"
msgstr "DRC off (dsactive !!!), actuellement DRC active"
#: pcbnew/pcbframe.cpp:363
msgid "DRC On (Currently: DRC is inactive !!!)"
msgstr "DRC On (Actuellement, DRC dsactive !!!)"
#: pcbnew/pcbframe.cpp:374
msgid "Polar Coords not show"
msgstr "Coord Polaires non affiches"
#: pcbnew/pcbframe.cpp:375
msgid "Display Polar Coords"
msgstr "Affichage coord Polaires"
#: pcbnew/pcbframe.cpp:380
#: eeschema/schframe.cpp:261
msgid "Grid not show"
msgstr "Grille non montre"
#: pcbnew/pcbframe.cpp:380
#: eeschema/schframe.cpp:261
msgid "Show Grid"
msgstr "Afficher grille"
#: pcbnew/pcbframe.cpp:389
msgid "General ratsnest not show"
msgstr "Chevelu gnral non affich"
#: pcbnew/pcbframe.cpp:389
msgid "Show General ratsnest"
msgstr "Afficher le chevelu gnral"
#: pcbnew/pcbframe.cpp:395
msgid "Module ratsnest not show"
msgstr "Ne pas montrer le chevelu du module pendant dplacement"
#: pcbnew/pcbframe.cpp:396
msgid "Show Module ratsnest"
msgstr "Montrer le chevelu du module"
#: pcbnew/pcbframe.cpp:403
msgid "Disable Auto Delete old Track"
msgstr "Ne pas Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:404
msgid "Enable Auto Delete old Track"
msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:411
msgid "Do not Show Zones"
msgstr "Ne pas monter Zones"
#: pcbnew/pcbframe.cpp:411
#: pcbnew/tool_pcb.cpp:361
#: pcbnew/set_color.h:344
msgid "Show Zones"
msgstr "Monter Zones"
#: pcbnew/pcbframe.cpp:417
msgid "Show Pads Sketch mode"
msgstr "Afficher pastilles en contour"
#: pcbnew/pcbframe.cpp:418
msgid "Show pads filled mode"
msgstr "Afficher pastilles en mode plein"
#: pcbnew/pcbframe.cpp:424
msgid "Show Tracks Sketch mode"
msgstr "Afficher pistes en contour"
#: pcbnew/pcbframe.cpp:425
msgid "Show Tracks filled mode"
msgstr "Afficher pistes en mode plein"
#: pcbnew/pcbframe.cpp:431
msgid "Normal Contrast Mode Display"
msgstr "Mode d'affichage Contraste normal"
#: pcbnew/pcbframe.cpp:432
#: pcbnew/tool_pcb.cpp:374
msgid "Hight Contrast Mode Display"
msgstr "Mode d'affichage Haut Contraste"
#: pcbnew/pcbframe.cpp:442
#: pcbnew/class_board_item.cpp:127
#: pcbnew/class_track.cpp:708
msgid "Track"
msgstr "Piste"
#: pcbnew/pcbframe.cpp:474
#: pcbnew/class_board_item.cpp:154
msgid "Via"
msgstr "Via"
#: pcbnew/tool_pcb.cpp:51
msgid ""
"Show active layer selections\n"
"and select layer pair for route and place via"
msgstr ""
"Affiche selections couche active\n"
"et selection paire de couches pour routage and placement via"
#: pcbnew/tool_pcb.cpp:239
msgid "New Board"
msgstr "Nouveau Circuit Imprim"
#: pcbnew/tool_pcb.cpp:241
msgid "Open existing Board"
msgstr "Ouvrir C.I. existant"
#: pcbnew/tool_pcb.cpp:242
msgid "Save Board"
msgstr "Sauver Circuit Imprim"
#: pcbnew/tool_pcb.cpp:246
#: eeschema/tool_sch.cpp:65
#: gerbview/tool_gerber.cpp:233
msgid "page settings (size, texts)"
msgstr "Ajustage de la feuille de dessin (dimensions, textes)"
#: pcbnew/tool_pcb.cpp:250
msgid "Open Module Editor"
msgstr "Ouvrir Editeur de modules"
#: pcbnew/tool_pcb.cpp:253
#: eeschema/tool_sch.cpp:81
#: gerbview/tool_gerber.cpp:244
msgid "Cut selected item"
msgstr "Suppression des lments slectionns"
#: pcbnew/tool_pcb.cpp:257
#: eeschema/tool_sch.cpp:84
#: gerbview/tool_gerber.cpp:249
msgid "Copy selected item"
msgstr "Copie des lments slectionns"
#: pcbnew/tool_pcb.cpp:259
#: eeschema/tool_sch.cpp:87
#: gerbview/tool_gerber.cpp:255
msgid "Paste"
msgstr "Copie des lments sauvegards"
#: pcbnew/tool_pcb.cpp:262
#: gerbview/tool_gerber.cpp:262
msgid "Undelete"
msgstr "Annulation du dernier effacement"
#: pcbnew/tool_pcb.cpp:265
msgid "Print Board"
msgstr "Imprimer C.I."
#: pcbnew/tool_pcb.cpp:267
msgid "Plot (HPGL, PostScript, or GERBER format)"
msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER"
#: pcbnew/tool_pcb.cpp:270
#: pcbnew/tool_modedit.cpp:115
#: eeschema/tool_lib.cpp:170
#: eeschema/tool_sch.cpp:108
#: gerbview/tool_gerber.cpp:272
msgid "zoom +"
msgstr "zoom +"
#: pcbnew/tool_pcb.cpp:274
#: pcbnew/tool_modedit.cpp:119
#: eeschema/tool_lib.cpp:174
#: eeschema/tool_sch.cpp:112
#: gerbview/tool_gerber.cpp:279
msgid "zoom -"
msgstr "zoom -"
#: pcbnew/tool_pcb.cpp:278
#: pcbnew/tool_modedit.cpp:123
#: eeschema/tool_lib.cpp:178
#: eeschema/tool_sch.cpp:116
#: gerbview/tool_gerber.cpp:286
msgid "redraw"
msgstr "Redessin"
#: pcbnew/tool_pcb.cpp:283
#: pcbnew/tool_modedit.cpp:128
#: eeschema/tool_lib.cpp:184
#: eeschema/tool_sch.cpp:121
#: gerbview/tool_gerber.cpp:297
#: 3d-viewer/3d_toolbar.cpp:53
msgid "auto zoom"
msgstr "Zoom automatique"
#: pcbnew/tool_pcb.cpp:286
#: eeschema/tool_sch.cpp:125
msgid "Find components and texts"
msgstr "Recherche de composants et textes"
#: pcbnew/tool_pcb.cpp:292
msgid "Read Netlist"
msgstr "Lire Netliste"
#: pcbnew/tool_pcb.cpp:294
msgid "Pcb Design Rules Check"
msgstr "Controle des rgles de conception"
#: pcbnew/tool_pcb.cpp:305
msgid "Mode Module: Manual and Automatic Move or Place for modules"
msgstr "Mode Module: Dplacements ou Placement Manuel ou Automatique des modules"
#: pcbnew/tool_pcb.cpp:308
msgid "Mode Track and Autorouting"
msgstr "Mode Pistes and Autoroutage"
#: pcbnew/dialog_netlist.cpp:148 #: pcbnew/tool_pcb.cpp:332
msgid "Change" msgid "Drc OFF"
msgstr "Changer" msgstr "Drc DESACTIVEE"
#: pcbnew/dialog_netlist.cpp:150 #: pcbnew/tool_pcb.cpp:334
msgid "Exchange Module:" #: pcbnew/tool_modedit.cpp:212
msgstr "Echange module:" #: eeschema/tool_sch.cpp:257
#: gerbview/tool_gerber.cpp:412
msgid "Display Grid OFF"
msgstr "Suppression de l'affichage de la grille"
#: pcbnew/dialog_netlist.cpp:153 #: pcbnew/tool_pcb.cpp:337
msgid "Display Warnings" #: pcbnew/tool_modedit.cpp:216
msgstr "Affiche warnings" #: gerbview/tool_gerber.cpp:418
msgid "Display Polar Coord ON"
msgstr "Activer affichage coord Polaires"
#: pcbnew/dialog_netlist.cpp:166 #: pcbnew/tool_pcb.cpp:339
msgid "Read" #: pcbnew/tool_modedit.cpp:220
msgstr "Lire" #: eeschema/tool_sch.cpp:261
#: gerbview/tool_gerber.cpp:422
msgid "Units = Inch"
msgstr "Units = pouce"
#: pcbnew/dialog_netlist.cpp:170 #: pcbnew/tool_pcb.cpp:341
msgid "Module Test" #: pcbnew/tool_modedit.cpp:224
msgstr "Test Modules" #: eeschema/tool_sch.cpp:265
#: gerbview/tool_gerber.cpp:426
msgid "Units = mm"
msgstr "Units = mm"
#: pcbnew/dialog_netlist.cpp:174 #: pcbnew/tool_pcb.cpp:344
msgid "Compile" #: pcbnew/tool_modedit.cpp:230
msgstr "Compile" #: eeschema/tool_sch.cpp:269
#: gerbview/tool_gerber.cpp:432
msgid "Change Cursor Shape"
msgstr "Slection de la forme du curseur"
#: pcbnew/pcbframe.cpp:261 #: pcbnew/tool_pcb.cpp:349
msgid "Board modified, Save before exit ?" msgid "Show General Ratsnest"
msgstr "Circuit Imprim modifie, Sauver avant de quitter ?" msgstr "Monter le chevelu gnral"
#: pcbnew/pcbframe.cpp:262 #: pcbnew/tool_pcb.cpp:352
#: eeschema/schframe.cpp:183 msgid "Show Module Ratsnest when moving"
#: cvpcb/cvframe.cpp:169 msgstr "Monter le chevelu du module pendant dplacement"
#: common/confirm.cpp:109
msgid "Confirmation"
msgstr "Confirmation"
#: pcbnew/pcbframe.cpp:362 #: pcbnew/tool_pcb.cpp:357
msgid "DRC Off (Disable !!!), Currently: DRC is active" msgid "Enable Auto Del Track"
msgstr "DRC off (dsactive !!!), actuellement DRC active" msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:363 #: pcbnew/tool_pcb.cpp:366
msgid "DRC On (Currently: DRC is inactive !!!)" #: pcbnew/tool_modedit.cpp:238
msgstr "DRC On (Actuellement, DRC dsactive !!!)" msgid "Show Pads Sketch"
msgstr "Afficher pastilles en contour"
#: pcbnew/pcbframe.cpp:374 #: pcbnew/tool_pcb.cpp:370
msgid "Polar Coords not show" msgid "Show Tracks Sketch"
msgstr "Coord Polaires non affiches" msgstr "Afficher pistes en contour"
#: pcbnew/pcbframe.cpp:375 #: pcbnew/tool_pcb.cpp:383
msgid "Display Polar Coords" msgid ""
msgstr "Affichage coord Polaires" "Display auxiliary vertical toolbar (tools for micro wave applications)\n"
" This is a very experimental feature (under development)"
msgstr ""
"Affiche toolbar vertical auxiliaire (outils pour applications micro-ondes)\n"
"C'est un outil exprimental (en cours de dveloppement)"
#: pcbnew/pcbframe.cpp:380 #: pcbnew/tool_pcb.cpp:412
#: eeschema/schframe.cpp:261 msgid "Net highlight"
msgid "Grid not show" msgstr "Surbrillance des quipotentielles"
msgstr "Grille non montre"
#: pcbnew/pcbframe.cpp:380 #: pcbnew/tool_pcb.cpp:416
#: eeschema/schframe.cpp:261 msgid "Display local ratsnest (pad or module)"
msgid "Show Grid" msgstr "Afficher le chevelu local (pastilles ou modules)"
msgstr "Afficher grille"
#: pcbnew/pcbframe.cpp:389 #: pcbnew/tool_pcb.cpp:421
msgid "General ratsnest not show" msgid "Add modules"
msgstr "Chevelu gnral non affich" msgstr "Addition de Modules"
#: pcbnew/pcbframe.cpp:389 #: pcbnew/tool_pcb.cpp:425
msgid "Show General ratsnest" msgid "Add tracks and vias"
msgstr "Afficher le chevelu gnral" msgstr "Ajouter pistes et vias"
#: pcbnew/pcbframe.cpp:395 #: pcbnew/tool_pcb.cpp:429
msgid "Module ratsnest not show" msgid "Add zones"
msgstr "Ne pas montrer le chevelu du module pendant dplacement" msgstr "Addition de Zones"
#: pcbnew/pcbframe.cpp:396 #: pcbnew/tool_pcb.cpp:434
msgid "Show Module ratsnest" #: pcbnew/tool_modedit.cpp:168
msgstr "Montrer le chevelu du module" #: eeschema/tool_sch.cpp:226
msgid "Add graphic line or polygon"
msgstr "Addition de lignes ou polygones graphiques"
#: pcbnew/pcbframe.cpp:403 #: pcbnew/tool_pcb.cpp:438
msgid "Disable Auto Delete old Track" #: pcbnew/tool_modedit.cpp:172
msgstr "Ne pas Autoriser l'effacement automatique des pistes" msgid "Add graphic circle"
msgstr "Addition de graphiques (Cercle)"
#: pcbnew/pcbframe.cpp:404 #: pcbnew/tool_pcb.cpp:442
msgid "Enable Auto Delete old Track" #: pcbnew/tool_modedit.cpp:176
msgstr "Autoriser l'effacement automatique des pistes" msgid "Add graphic arc"
msgstr "Addition de graphiques (Arc de Cercle)"
#: pcbnew/pcbframe.cpp:411 #: pcbnew/tool_pcb.cpp:446
msgid "Do not Show Zones" msgid "Add text"
msgstr "Ne pas monter Zones" msgstr "Ajout de Texte"
#: pcbnew/pcbframe.cpp:417 #: pcbnew/tool_pcb.cpp:451
msgid "Show Pads Sketch mode" msgid "Add dimension"
msgstr "Afficher pastilles en contour" msgstr "Ajout des cotes"
#: pcbnew/pcbframe.cpp:418 #: pcbnew/tool_pcb.cpp:455
msgid "Show pads filled mode" #: gerbview/tool_gerber.cpp:376
msgstr "Afficher pastilles en mode plein" msgid "Add layer alignment target"
msgstr "Ajouter Mire de superposition"
#: pcbnew/pcbframe.cpp:424 #: pcbnew/tool_pcb.cpp:460
msgid "Show Tracks Sketch mode" #: pcbnew/tool_modedit.cpp:190
msgstr "Afficher pistes en contour" #: eeschema/tool_lib.cpp:93
#: eeschema/tool_sch.cpp:235
#: gerbview/tool_gerber.cpp:391
msgid "Delete items"
msgstr "Suppression d'lments"
#: pcbnew/pcbframe.cpp:425 #: pcbnew/tool_pcb.cpp:465
msgid "Show Tracks filled mode" msgid "Offset adjust for drill and place files"
msgstr "Afficher pistes en mode plein" msgstr "Ajuste offset pour fichier de perage et placement"
#: pcbnew/pcbframe.cpp:431 #: pcbnew/tool_pcb.cpp:490
msgid "Normal Contrast Mode Display" msgid "Create line of specified length for microwave applications"
msgstr "Mode d'affichage Contraste normal" msgstr "Creation de lignes de longueur spcifie (pour applications micro-ondes)"
#: pcbnew/pcbframe.cpp:442 #: pcbnew/tool_pcb.cpp:496
#: pcbnew/class_board_item.cpp:127 msgid "Create gap of specified length for microwave applications"
#: pcbnew/class_track.cpp:688 msgstr "Creation de gaps de longueur spcifie (pour applications micro-ondes)"
msgid "Track"
msgstr "Piste"
#: pcbnew/pcbframe.cpp:474 #: pcbnew/tool_pcb.cpp:504
#: pcbnew/class_board_item.cpp:154 msgid "Create stub of specified length for microwave applications"
msgid "Via" msgstr "Creation de stub de longueur spcifie (pour applications micro-ondes)"
msgstr "Via"
#: pcbnew/class_pad.cpp:732 #: pcbnew/tool_pcb.cpp:510
msgid "Unknown Pad shape" msgid "Create stub (arc) of specified length for microwave applications"
msgstr "Forme pad inconnue" msgstr "Creation de stub (arc) de longueur spcifie (pour applications micro-ondes)"
#: pcbnew/class_pad.cpp:818 #: pcbnew/tool_pcb.cpp:517
#: pcbnew/class_text_mod.cpp:328 msgid "Create a polynomial shape for microwave applications"
#: pcbnew/class_edge_mod.cpp:285 msgstr "Creation de formes polynomiales (pour applications micro-ondes)"
#: pcbnew/class_module.cpp:1142
#: cvpcb/setvisu.cpp:30
msgid "Module"
msgstr "Module"
#: pcbnew/class_pad.cpp:821 #: pcbnew/tool_pcb.cpp:567
msgid "RefP" #: pcbnew/tool_modedit.cpp:285
msgstr "RefP" #: eeschema/plotps.cpp:169
#: share/zoom.cpp:368
msgid "Auto"
msgstr "Auto"
#: pcbnew/class_pad.cpp:824 #: pcbnew/tool_pcb.cpp:571
#: pcbnew/class_board_item.cpp:35 msgid "Zoom "
msgid "Net" msgstr "Zoom "
msgstr "Net"
#: pcbnew/class_pad.cpp:938 #: pcbnew/tool_pcb.cpp:585
msgid "Drill X / Y" #: pcbnew/set_color.h:335
msgstr "Perage X/Y" #: gerbview/set_color.h:246
msgid "Grid"
msgstr "Grille"
#: pcbnew/class_pad.cpp:953 #: pcbnew/tool_pcb.cpp:601
msgid "X Pos" #: pcbnew/tool_modedit.cpp:314
msgstr "X Pos" msgid "User Grid"
msgstr "Grille perso"
#: pcbnew/class_pad.cpp:957 #: pcbnew/tool_pcb.cpp:676
msgid "Y pos" msgid "+/- to switch"
msgstr "Y pos" msgstr "+/- pour commuter"
#: pcbnew/hotkeys.cpp:435 #: pcbnew/mirepcb.cpp:78
#, c-format msgid "Target Properties"
msgid "Footprint %s found, but locked" msgstr "Proprits de la mire"
msgstr "Module %s trouv, mais verrouill"
#: pcbnew/mirepcb.cpp:118
msgid "shape +"
msgstr "Forme +"
#: pcbnew/mirepcb.cpp:118
msgid "shape X"
msgstr "Forme X"
#: pcbnew/hotkeys.cpp:598 #: pcbnew/mirepcb.cpp:120
msgid "Delete module?" msgid "Target Shape:"
msgstr "Effacer Module?" msgstr "Forme Mire:"
#: pcbnew/dialog_initpcb.cpp:105 #: pcbnew/dialog_initpcb.cpp:105
msgid "Items to delete" msgid "Items to delete"
...@@ -2011,44 +2019,10 @@ msgid "Display other items:" ...@@ -2011,44 +2019,10 @@ msgid "Display other items:"
msgstr "Afficher autres lments" msgstr "Afficher autres lments"
#: pcbnew/dialog_display_options.cpp:275 #: pcbnew/dialog_display_options.cpp:275
#: eeschema/options.cpp:204
#: eeschema/dialog_options.cpp:267 #: eeschema/dialog_options.cpp:267
msgid "Show page limits" msgid "Show page limits"
msgstr " Afficher limites de page" msgstr " Afficher limites de page"
#: pcbnew/cotation.cpp:85
msgid "Cotation properties"
msgstr "Proprits des Cotations"
#: pcbnew/cotation.cpp:113
#: pcbnew/muonde.cpp:360
#: pcbnew/pcbtexte.cpp:176
#: pcbnew/dialog_edit_module.cpp:242
#: pcbnew/dialog_edit_module.cpp:288
#: eeschema/options.cpp:177
#: eeschema/dialog_options.cpp:229
#: eeschema/dialog_edit_component_in_schematic.cpp:182
#: eeschema/onrightclick.cpp:305
msgid "Normal"
msgstr "Normal"
#: pcbnew/cotation.cpp:125
#: pcbnew/muonde.cpp:367
#: pcbnew/mirepcb.cpp:112
#: pcbnew/pcbtexte.cpp:126
#: eeschema/sheet.cpp:189
#: eeschema/sheet.cpp:200
#: eeschema/pinedit-dialog.cpp:273
#: eeschema/pinedit-dialog.cpp:279
#: common/wxwineda.cpp:91
msgid "Size"
msgstr "Taille "
#: pcbnew/cotation.cpp:133
#: gerbview/affiche.cpp:37
msgid "Layer:"
msgstr "Couche:"
#: pcbnew/plotgerb.cpp:72 #: pcbnew/plotgerb.cpp:72
msgid "unable to create file " msgid "unable to create file "
msgstr "Impossible de crer fichier " msgstr "Impossible de crer fichier "
...@@ -2098,21 +2072,18 @@ msgid "Complex shape" ...@@ -2098,21 +2072,18 @@ msgid "Complex shape"
msgstr "Formr complexe" msgstr "Formr complexe"
#: pcbnew/muonde.cpp:356 #: pcbnew/muonde.cpp:356
#, fuzzy
msgid "Read Shape Descr File..." msgid "Read Shape Descr File..."
msgstr "Lire fichier de description de forme" msgstr "Lire fichier de description de forme..."
#: pcbnew/muonde.cpp:360 #: pcbnew/muonde.cpp:360
msgid "Symmetrical" msgid "Symmetrical"
msgstr "Symtrique" msgstr "Symtrique"
#: pcbnew/muonde.cpp:360 #: pcbnew/muonde.cpp:360
#, fuzzy
msgid "Mirrored" msgid "Mirrored"
msgstr "Miroir" msgstr "Miroir"
#: pcbnew/muonde.cpp:362 #: pcbnew/muonde.cpp:362
#, fuzzy
msgid "Shape Option" msgid "Shape Option"
msgstr "Option Forme" msgstr "Option Forme"
...@@ -2148,22 +2119,6 @@ msgstr "Gap (mm):" ...@@ -2148,22 +2119,6 @@ msgstr "Gap (mm):"
msgid "Gap (inch):" msgid "Gap (inch):"
msgstr "Gap (inch):" msgstr "Gap (inch):"
#: pcbnew/mirepcb.cpp:82
msgid "Mire properties"
msgstr "Proprits des Mires"
#: pcbnew/mirepcb.cpp:122
msgid "shape +"
msgstr "Forme +"
#: pcbnew/mirepcb.cpp:122
msgid "shape X"
msgstr "Forme X"
#: pcbnew/mirepcb.cpp:124
msgid "Mire Shape:"
msgstr "Forme Mire:"
#: pcbnew/deltrack.cpp:153 #: pcbnew/deltrack.cpp:153
msgid "Delete NET ?" msgid "Delete NET ?"
msgstr "Supprimer Net ?" msgstr "Supprimer Net ?"
...@@ -2427,6 +2382,15 @@ msgstr "Grille perso dim X" ...@@ -2427,6 +2382,15 @@ msgstr "Grille perso dim X"
msgid "User Grid Size Y" msgid "User Grid Size Y"
msgstr "Grille perso dim Y" msgstr "Grille perso dim Y"
#: pcbnew/hotkeys.cpp:434
#, c-format
msgid "Footprint %s found, but locked"
msgstr "Module %s trouv, mais verrouill"
#: pcbnew/hotkeys.cpp:597
msgid "Delete module?"
msgstr "Effacer Module?"
#: pcbnew/dialog_pad_edit.cpp:157 #: pcbnew/dialog_pad_edit.cpp:157
msgid "Pad Num :" msgid "Pad Num :"
msgstr "Num Pad :" msgstr "Num Pad :"
...@@ -2439,7 +2403,7 @@ msgstr "NetName Pad:" ...@@ -2439,7 +2403,7 @@ msgstr "NetName Pad:"
#: pcbnew/dialog_pad_edit.cpp:196 #: pcbnew/dialog_pad_edit.cpp:196
#: pcbnew/classpcb.cpp:186 #: pcbnew/classpcb.cpp:186
#: pcbnew/class_board_item.cpp:100 #: pcbnew/class_board_item.cpp:100
#: pcbnew/class_track.cpp:725 #: pcbnew/class_track.cpp:745
msgid "Circle" msgid "Circle"
msgstr "Cercle" msgstr "Cercle"
...@@ -2489,7 +2453,7 @@ msgid "Pad Shape:" ...@@ -2489,7 +2453,7 @@ msgid "Pad Shape:"
msgstr "Forme Pad:" msgstr "Forme Pad:"
#: pcbnew/dialog_pad_edit.cpp:205 #: pcbnew/dialog_pad_edit.cpp:205
#: pcbnew/class_track.cpp:727 #: pcbnew/class_track.cpp:747
msgid "Standard" msgid "Standard"
msgstr "Standard" msgstr "Standard"
...@@ -2570,35 +2534,9 @@ msgstr "couche E.C.O.2" ...@@ -2570,35 +2534,9 @@ msgstr "couche E.C.O.2"
msgid "Draft layer" msgid "Draft layer"
msgstr "Couche dessin" msgstr "Couche dessin"
#: pcbnew/classpcb.cpp:181 #: pcbnew/controle.cpp:172
#: pcbnew/classpcb.cpp:313 msgid "Selection Clarification"
#: pcbnew/class_text_mod.cpp:337 msgstr "Clarification de la Slection"
#: pcbnew/class_track.cpp:699
#: gerbview/affiche.cpp:93
msgid "Type"
msgstr "Type"
#: pcbnew/classpcb.cpp:183
msgid "Shape"
msgstr "Forme"
#: pcbnew/classpcb.cpp:190
msgid " Arc "
msgstr " Arc "
#: pcbnew/classpcb.cpp:195
#: pcbnew/class_track.cpp:723
msgid "Segment"
msgstr "Segment"
#: pcbnew/classpcb.cpp:313
#: pcbnew/class_board_item.cpp:182
msgid "Marker"
msgstr "Marqueur"
#: pcbnew/classpcb.cpp:316
msgid "Marker Error Text"
msgstr "Texte du Marqueur d'erreurs"
#: pcbnew/pcbcfg.cpp:68 #: pcbnew/pcbcfg.cpp:68
#: eeschema/eeconfig.cpp:58 #: eeschema/eeconfig.cpp:58
...@@ -2652,6 +2590,69 @@ msgstr "Librairie: " ...@@ -2652,6 +2590,69 @@ msgstr "Librairie: "
msgid "Modules (%d items)" msgid "Modules (%d items)"
msgstr "Modules (%d lments)" msgstr "Modules (%d lments)"
#: pcbnew/class_pad.cpp:776
msgid "Unknown Pad shape"
msgstr "Forme pad inconnue"
#: pcbnew/class_pad.cpp:862
#: pcbnew/class_text_mod.cpp:328
#: pcbnew/class_edge_mod.cpp:285
#: pcbnew/class_module.cpp:1142
#: cvpcb/setvisu.cpp:30
msgid "Module"
msgstr "Module"
#: pcbnew/class_pad.cpp:865
msgid "RefP"
msgstr "RefP"
#: pcbnew/class_pad.cpp:868
#: pcbnew/class_board_item.cpp:35
msgid "Net"
msgstr "Net"
#: pcbnew/class_pad.cpp:982
msgid "Drill X / Y"
msgstr "Perage X/Y"
#: pcbnew/class_pad.cpp:997
msgid "X Pos"
msgstr "X Pos"
#: pcbnew/class_pad.cpp:1001
msgid "Y pos"
msgstr "Y pos"
#: pcbnew/classpcb.cpp:181
#: pcbnew/classpcb.cpp:313
#: pcbnew/class_text_mod.cpp:337
#: pcbnew/class_track.cpp:719
#: gerbview/affiche.cpp:93
msgid "Type"
msgstr "Type"
#: pcbnew/classpcb.cpp:183
msgid "Shape"
msgstr "Forme"
#: pcbnew/classpcb.cpp:190
msgid " Arc "
msgstr " Arc "
#: pcbnew/classpcb.cpp:195
#: pcbnew/class_track.cpp:743
msgid "Segment"
msgstr "Segment"
#: pcbnew/classpcb.cpp:313
#: pcbnew/class_board_item.cpp:182
msgid "Marker"
msgstr "Marqueur"
#: pcbnew/classpcb.cpp:316
msgid "Marker Error Text"
msgstr "Texte du Marqueur d'erreurs"
#: pcbnew/files.cpp:57 #: pcbnew/files.cpp:57
msgid "Recovery file " msgid "Recovery file "
msgstr "Fichier de secours " msgstr "Fichier de secours "
...@@ -2924,10 +2925,6 @@ msgstr "Valeur" ...@@ -2924,10 +2925,6 @@ msgstr "Valeur"
msgid "Text" msgid "Text"
msgstr "Texte" msgstr "Texte"
#: pcbnew/controle.cpp:174
msgid "Selection Clarification"
msgstr "Clarification de la Slection"
#: pcbnew/drc.cpp:80 #: pcbnew/drc.cpp:80
msgid "Look for active routes\n" msgid "Look for active routes\n"
msgstr "Recherche des chevelus actifs\n" msgstr "Recherche des chevelus actifs\n"
...@@ -3001,7 +2998,7 @@ msgid "Tst Zones\n" ...@@ -3001,7 +2998,7 @@ msgid "Tst Zones\n"
msgstr "Test Zones\n" msgstr "Test Zones\n"
#: pcbnew/drc.cpp:1367 #: pcbnew/drc.cpp:1367
#, fuzzy, c-format #, c-format
msgid "%d Drc Err %d %s (net %s) and PAD %s (%s) net %s @ %d,%d\n" msgid "%d Drc Err %d %s (net %s) and PAD %s (%s) net %s @ %d,%d\n"
msgstr "%d Err Drc %d %s (net %s) et PAD %s (%s) net %s @ %d,%d\n" msgstr "%d Err Drc %d %s (net %s) et PAD %s (%s) net %s @ %d,%d\n"
...@@ -3028,10 +3025,13 @@ msgstr "Propri ...@@ -3028,10 +3025,13 @@ msgstr "Propri
msgid "Position" msgid "Position"
msgstr "Position" msgstr "Position"
#: pcbnew/editmod.cpp:45 #: pcbnew/surbrill.cpp:35
#: pcbnew/edit.cpp:167 msgid "Filter for net names:"
msgid "Module Editor" msgstr "Filtre pour nets:"
msgstr "Ouvrir Editeur de modules"
#: pcbnew/surbrill.cpp:39
msgid "List Nets"
msgstr "Liste quipots"
#: pcbnew/editmod.cpp:144 #: pcbnew/editmod.cpp:144
msgid "Text is REFERENCE!" msgid "Text is REFERENCE!"
...@@ -3359,175 +3359,76 @@ msgid "&About" ...@@ -3359,175 +3359,76 @@ msgid "&About"
msgstr "&Infos logiciel" msgstr "&Infos logiciel"
#: pcbnew/menubarpcb.cpp:272 #: pcbnew/menubarpcb.cpp:272
#: pcbnew/menubarmodedit.cpp:64 #: pcbnew/menubarmodedit.cpp:64
#: eeschema/menubar.cpp:183 #: eeschema/menubar.cpp:183
#: cvpcb/tool_cvpcb.cpp:163 #: cvpcb/tool_cvpcb.cpp:163
#: kicad/buildmnu.cpp:203 #: kicad/buildmnu.cpp:203
#: gerbview/tool_gerber.cpp:153 #: gerbview/tool_gerber.cpp:153
msgid "About this application" msgid "About this application"
msgstr "Au sujet de cette application" msgstr "Au sujet de cette application"
#: pcbnew/menubarpcb.cpp:280
#: pcbnew/menubarmodedit.cpp:72
msgid "3D Display"
msgstr "3D Visu"
#: pcbnew/menubarpcb.cpp:280
#: pcbnew/menubarmodedit.cpp:72
msgid "Show Board in 3D Mode"
msgstr "Visualisation en 3D"
#: pcbnew/menubarpcb.cpp:284
#: eeschema/menubar.cpp:188
#: cvpcb/tool_cvpcb.cpp:167
#: gerbview/tool_gerber.cpp:155
#: 3d-viewer/3d_toolbar.cpp:111
msgid "&File"
msgstr "&Fichiers"
#: pcbnew/menubarpcb.cpp:285
#: eeschema/menubar.cpp:190
#: cvpcb/tool_cvpcb.cpp:168
#: kicad/buildmnu.cpp:210
#: gerbview/tool_gerber.cpp:156
#: 3d-viewer/3d_toolbar.cpp:119
msgid "&Preferences"
msgstr "&Prfrences"
#: pcbnew/menubarpcb.cpp:286
#: pcbnew/menubarmodedit.cpp:76
msgid "&Dimensions"
msgstr "&Dimensions"
#: pcbnew/menubarpcb.cpp:287
#: gerbview/tool_gerber.cpp:157
msgid "&Miscellaneous"
msgstr "&Divers"
#: pcbnew/menubarpcb.cpp:288
msgid "P&ostprocess"
msgstr "P&ostprocesseurs"
#: pcbnew/menubarpcb.cpp:289
#: pcbnew/menubarmodedit.cpp:77
msgid "&3D Display"
msgstr "&3D Visu"
#: pcbnew/menubarpcb.cpp:290
#: pcbnew/menubarmodedit.cpp:78
#: eeschema/menubar.cpp:191
#: cvpcb/tool_cvpcb.cpp:169
#: kicad/buildmnu.cpp:211
#: gerbview/tool_gerber.cpp:160
msgid "&Help"
msgstr "&Aide"
#: pcbnew/set_color.cpp:50
msgid "Copper Layers"
msgstr "Couches Cuivre."
#: pcbnew/set_color.cpp:184
msgid "Tech Layers"
msgstr "Couches Tech."
#: pcbnew/set_color.cpp:323
msgid "Ratsnest"
msgstr "Chevelu"
#: pcbnew/set_color.cpp:332
msgid "Pad Cu"
msgstr "Pad Cu"
#: pcbnew/set_color.cpp:340
msgid "Pad Cmp"
msgstr "Pad Cmp"
#: pcbnew/set_color.cpp:348
msgid "Text Module Cu"
msgstr "Texte Module Cu"
#: pcbnew/set_color.cpp:356
msgid "Text Module Cmp"
msgstr "Texte Module Cmp"
#: pcbnew/set_color.cpp:364
msgid "Text Module invisible"
msgstr "Texte Module invisible"
#: pcbnew/set_color.cpp:372
msgid "Anchors"
msgstr "Ancres"
#: pcbnew/set_color.cpp:398
msgid "Show Noconnect"
msgstr "Montrer Non Conn"
#: pcbnew/set_color.cpp:407
msgid "Show Modules Cmp"
msgstr "Afficher Modules Cmp"
#: pcbnew/set_color.cpp:416
msgid "Show Modules Cu"
msgstr "Afficher Modules Cu"
#: pcbnew/set_color.cpp:577
msgid "Colors:"
msgstr "Couleurs:"
#: pcbnew/set_color.cpp:704
#: gerbview/set_color.cpp:234
msgid "Show All"
msgstr "Tout Afficher"
#: pcbnew/set_color.cpp:710
#: gerbview/set_color.cpp:239
msgid "Show None"
msgstr "Rien Afficher"
#: pcbnew/set_color.cpp:716 #: pcbnew/menubarpcb.cpp:280
msgid "Exit" #: pcbnew/menubarmodedit.cpp:72
msgstr "Quitter" msgid "3D Display"
msgstr "3D Visu"
#: pcbnew/edit.cpp:247 #: pcbnew/menubarpcb.cpp:280
msgid "Add Tracks" #: pcbnew/menubarmodedit.cpp:72
msgstr "Addition de pistes" msgid "Show Board in 3D Mode"
msgstr "Visualisation en 3D"
#: pcbnew/edit.cpp:258 #: pcbnew/menubarpcb.cpp:284
msgid "Warning: Display Zone is OFF!!!" #: eeschema/menubar.cpp:188
msgstr "Attention: Affichage zones dsactiv !!!" #: cvpcb/tool_cvpcb.cpp:167
#: gerbview/tool_gerber.cpp:155
#: 3d-viewer/3d_toolbar.cpp:111
msgid "&File"
msgstr "&Fichiers"
#: pcbnew/edit.cpp:265 #: pcbnew/menubarpcb.cpp:285
msgid "Add Mire" #: eeschema/menubar.cpp:190
msgstr "Ajouter Mires de superposition" #: cvpcb/tool_cvpcb.cpp:168
#: kicad/buildmnu.cpp:210
#: gerbview/tool_gerber.cpp:156
#: 3d-viewer/3d_toolbar.cpp:119
msgid "&Preferences"
msgstr "&Prfrences"
#: pcbnew/edit.cpp:269 #: pcbnew/menubarpcb.cpp:286
msgid "Adjust Zero" #: pcbnew/menubarmodedit.cpp:76
msgstr "Ajuster Zro" msgid "&Dimensions"
msgstr "&Dimensions"
#: pcbnew/edit.cpp:275 #: pcbnew/menubarpcb.cpp:287
msgid "Add Graphic" #: gerbview/tool_gerber.cpp:157
msgstr "Addition lments graphiques" msgid "&Miscellaneous"
msgstr "&Divers"
#: pcbnew/edit.cpp:283 #: pcbnew/menubarpcb.cpp:288
msgid "Add Modules" msgid "P&ostprocess"
msgstr "Addition de Modules" msgstr "P&ostprocesseurs"
#: pcbnew/edit.cpp:295 #: pcbnew/menubarpcb.cpp:289
msgid "Net Highlight" #: pcbnew/menubarmodedit.cpp:77
msgstr "Surbrillance des quipotentielles" msgid "&3D Display"
msgstr "&3D Visu"
#: pcbnew/edit.cpp:299 #: pcbnew/menubarpcb.cpp:290
msgid "Local Ratsnest" #: pcbnew/menubarmodedit.cpp:78
msgstr "Monter le chevelu gnral" #: eeschema/menubar.cpp:191
#: cvpcb/tool_cvpcb.cpp:169
#: kicad/buildmnu.cpp:211
#: gerbview/tool_gerber.cpp:160
msgid "&Help"
msgstr "&Aide"
#: pcbnew/sel_layer.cpp:92 #: pcbnew/sel_layer.cpp:92
msgid "Select Layer:" msgid "Select Layer:"
msgstr "Selection couche:" msgstr "Selection couche:"
#: pcbnew/sel_layer.cpp:137 #: pcbnew/sel_layer.cpp:137
#, fuzzy
msgid "(Deselect)" msgid "(Deselect)"
msgstr "Deselection" msgstr "(Deselection)"
#: pcbnew/sel_layer.cpp:238 #: pcbnew/sel_layer.cpp:238
msgid "Less than two copper layers are being used." msgid "Less than two copper layers are being used."
...@@ -3551,7 +3452,7 @@ msgstr "Couche Inf." ...@@ -3551,7 +3452,7 @@ msgstr "Couche Inf."
#: pcbnew/sel_layer.cpp:351 #: pcbnew/sel_layer.cpp:351
msgid "The Top Layer and Bottom Layer must differ" msgid "The Top Layer and Bottom Layer must differ"
msgstr "" msgstr "Les couches dessus et dessous doivent diffrer"
#: pcbnew/automove.cpp:212 #: pcbnew/automove.cpp:212
msgid "Move Modules ?" msgid "Move Modules ?"
...@@ -3566,74 +3467,16 @@ msgstr "Autoplace modules: pas de contours sur pcb, impossible de placer les mod ...@@ -3566,74 +3467,16 @@ msgstr "Autoplace modules: pas de contours sur pcb, impossible de placer les mod
msgid "Ok to set module orientation to %d degrees ?" msgid "Ok to set module orientation to %d degrees ?"
msgstr "Ok pour orientation module %d degrs ?" msgstr "Ok pour orientation module %d degrs ?"
#: pcbnew/class_board_item.cpp:40 #: pcbnew/basepcbframe.cpp:119
#: eeschema/component_class.cpp:56 msgid "3D Frame already opened"
msgid "Footprint" msgstr "Fenetre 3D dj ouverte"
msgstr "Module"
#: pcbnew/class_board_item.cpp:45
msgid "Pad"
msgstr "Pad"
#: pcbnew/class_board_item.cpp:45
#: pcbnew/class_board_item.cpp:71
#: pcbnew/class_board_item.cpp:77
#: pcbnew/class_board_item.cpp:122
msgid " of "
msgstr " de "
#: pcbnew/class_board_item.cpp:50
msgid "Pcb Graphic"
msgstr "Pcb Graphic"
#: pcbnew/class_board_item.cpp:50
#: pcbnew/class_board_item.cpp:59
#: pcbnew/class_board_item.cpp:133
#: pcbnew/class_board_item.cpp:148
#: pcbnew/class_board_item.cpp:175
#: pcbnew/class_board_item.cpp:194
msgid " on "
msgstr " sur "
#: pcbnew/class_board_item.cpp:54
msgid "Pcb Text"
msgstr "Texte Pcb"
#: pcbnew/class_board_item.cpp:85
msgid "Graphic"
msgstr "Graphique"
#: pcbnew/class_board_item.cpp:97
msgid "Arc"
msgstr "Arc"
#: pcbnew/class_board_item.cpp:137
#: pcbnew/class_track.cpp:692
msgid "Zone"
msgstr "Zone"
#: pcbnew/class_board_item.cpp:158
msgid "Blind"
msgstr "Enterre"
#: pcbnew/class_board_item.cpp:160
msgid "Buried"
msgstr "Borgne"
#: pcbnew/class_board_item.cpp:186
msgid "Dimension"
msgstr "Dimension"
#: pcbnew/class_board_item.cpp:190
msgid "Mire"
msgstr "Mire"
#: pcbnew/class_board_item.cpp:194 #: pcbnew/basepcbframe.cpp:122
msgid "Edge Zone" msgid "3D Viewer"
msgstr "Contour Zone" msgstr "Visu 3D"
#: pcbnew/modedit_onclick.cpp:206 #: pcbnew/modedit_onclick.cpp:206
#: pcbnew/onrightclick.cpp:148 #: pcbnew/onrightclick.cpp:151
#: eeschema/libedit_onrightclick.cpp:73 #: eeschema/libedit_onrightclick.cpp:73
#: eeschema/onrightclick.cpp:125 #: eeschema/onrightclick.cpp:125
#: gerbview/onrightclick.cpp:42 #: gerbview/onrightclick.cpp:42
...@@ -3641,7 +3484,7 @@ msgid "End Tool" ...@@ -3641,7 +3484,7 @@ msgid "End Tool"
msgstr "Fin Outil" msgstr "Fin Outil"
#: pcbnew/modedit_onclick.cpp:216 #: pcbnew/modedit_onclick.cpp:216
#: pcbnew/onrightclick.cpp:457 #: pcbnew/onrightclick.cpp:495
#: eeschema/libedit_onrightclick.cpp:252 #: eeschema/libedit_onrightclick.cpp:252
#: eeschema/onrightclick.cpp:581 #: eeschema/onrightclick.cpp:581
#: gerbview/onrightclick.cpp:51 #: gerbview/onrightclick.cpp:51
...@@ -3649,13 +3492,13 @@ msgid "Cancel Block" ...@@ -3649,13 +3492,13 @@ msgid "Cancel Block"
msgstr "Annuler Bloc" msgstr "Annuler Bloc"
#: pcbnew/modedit_onclick.cpp:218 #: pcbnew/modedit_onclick.cpp:218
#: pcbnew/onrightclick.cpp:459 #: pcbnew/onrightclick.cpp:497
#: gerbview/onrightclick.cpp:52 #: gerbview/onrightclick.cpp:52
msgid "Zoom Block (Midd butt drag)" msgid "Zoom Block (Midd butt drag)"
msgstr "Zoom Bloc (drag+bouton milieu)" msgstr "Zoom Bloc (drag+bouton milieu)"
#: pcbnew/modedit_onclick.cpp:221 #: pcbnew/modedit_onclick.cpp:221
#: pcbnew/onrightclick.cpp:462 #: pcbnew/onrightclick.cpp:500
#: eeschema/libedit_onrightclick.cpp:260 #: eeschema/libedit_onrightclick.cpp:260
#: eeschema/onrightclick.cpp:589 #: eeschema/onrightclick.cpp:589
#: gerbview/onrightclick.cpp:54 #: gerbview/onrightclick.cpp:54
...@@ -3663,7 +3506,7 @@ msgid "Place Block" ...@@ -3663,7 +3506,7 @@ msgid "Place Block"
msgstr "Place Bloc" msgstr "Place Bloc"
#: pcbnew/modedit_onclick.cpp:223 #: pcbnew/modedit_onclick.cpp:223
#: pcbnew/onrightclick.cpp:464 #: pcbnew/onrightclick.cpp:502
#: eeschema/libedit_onrightclick.cpp:266 #: eeschema/libedit_onrightclick.cpp:266
#: eeschema/onrightclick.cpp:598 #: eeschema/onrightclick.cpp:598
msgid "Copy Block (shift + drag mouse)" msgid "Copy Block (shift + drag mouse)"
...@@ -3674,18 +3517,18 @@ msgid "Mirror Block (alt + drag mouse)" ...@@ -3674,18 +3517,18 @@ msgid "Mirror Block (alt + drag mouse)"
msgstr "Bloc Miroir (alt + drag mouse)" msgstr "Bloc Miroir (alt + drag mouse)"
#: pcbnew/modedit_onclick.cpp:227 #: pcbnew/modedit_onclick.cpp:227
#: pcbnew/onrightclick.cpp:468 #: pcbnew/onrightclick.cpp:506
msgid "Rotate Block (ctrl + drag mouse)" msgid "Rotate Block (ctrl + drag mouse)"
msgstr "Rotation Bloc (ctrl + drag mouse)" msgstr "Rotation Bloc (ctrl + drag mouse)"
#: pcbnew/modedit_onclick.cpp:229 #: pcbnew/modedit_onclick.cpp:229
#: pcbnew/onrightclick.cpp:470 #: pcbnew/onrightclick.cpp:508
msgid "Delete Block (shift+ctrl + drag mouse)" msgid "Delete Block (shift+ctrl + drag mouse)"
msgstr "Effacement Bloc (shift+ctrl + drag mouse)" msgstr "Effacement Bloc (shift+ctrl + drag mouse)"
#: pcbnew/modedit_onclick.cpp:251 #: pcbnew/modedit_onclick.cpp:251
#: pcbnew/onrightclick.cpp:676 #: pcbnew/onrightclick.cpp:714
#: pcbnew/onrightclick.cpp:773 #: pcbnew/onrightclick.cpp:811
msgid "Rotate" msgid "Rotate"
msgstr "Rotation" msgstr "Rotation"
...@@ -3715,17 +3558,17 @@ msgid "Move Pad" ...@@ -3715,17 +3558,17 @@ msgid "Move Pad"
msgstr "Dplace Pad" msgstr "Dplace Pad"
#: pcbnew/modedit_onclick.cpp:273 #: pcbnew/modedit_onclick.cpp:273
#: pcbnew/onrightclick.cpp:715 #: pcbnew/onrightclick.cpp:753
msgid "Edit Pad" msgid "Edit Pad"
msgstr "Edit Pad" msgstr "Edit Pad"
#: pcbnew/modedit_onclick.cpp:275 #: pcbnew/modedit_onclick.cpp:275
#: pcbnew/onrightclick.cpp:719 #: pcbnew/onrightclick.cpp:757
msgid "New Pad Settings" msgid "New Pad Settings"
msgstr "Nouvelles Caract. Pads" msgstr "Nouvelles Caract. Pads"
#: pcbnew/modedit_onclick.cpp:277 #: pcbnew/modedit_onclick.cpp:277
#: pcbnew/onrightclick.cpp:721 #: pcbnew/onrightclick.cpp:759
msgid "Export Pad Settings" msgid "Export Pad Settings"
msgstr "Exporte Caract. Pads" msgstr "Exporte Caract. Pads"
...@@ -3734,7 +3577,7 @@ msgid "delete Pad" ...@@ -3734,7 +3577,7 @@ msgid "delete Pad"
msgstr "Supprimer Pad" msgstr "Supprimer Pad"
#: pcbnew/modedit_onclick.cpp:284 #: pcbnew/modedit_onclick.cpp:284
#: pcbnew/onrightclick.cpp:726 #: pcbnew/onrightclick.cpp:764
msgid "Global Pad Settings" msgid "Global Pad Settings"
msgstr "Edition Globale des pads" msgstr "Edition Globale des pads"
...@@ -3767,9 +3610,9 @@ msgid "Place edge" ...@@ -3767,9 +3610,9 @@ msgid "Place edge"
msgstr "Place contour" msgstr "Place contour"
#: pcbnew/modedit_onclick.cpp:316 #: pcbnew/modedit_onclick.cpp:316
#: pcbnew/onrightclick.cpp:644 #: pcbnew/onrightclick.cpp:682
#: pcbnew/onrightclick.cpp:678 #: pcbnew/onrightclick.cpp:716
#: pcbnew/onrightclick.cpp:775 #: pcbnew/onrightclick.cpp:813
#: eeschema/onrightclick.cpp:312 #: eeschema/onrightclick.cpp:312
msgid "Edit" msgid "Edit"
msgstr "Editer" msgstr "Editer"
...@@ -3798,6 +3641,26 @@ msgstr "Effacement contour" ...@@ -3798,6 +3641,26 @@ msgstr "Effacement contour"
msgid "Set Width" msgid "Set Width"
msgstr "Ajuste Epaiss" msgstr "Ajuste Epaiss"
#: pcbnew/set_color.cpp:149
msgid "Colors:"
msgstr "Couleurs:"
#: pcbnew/set_color.cpp:264
#: gerbview/set_color.cpp:236
msgid "Show All"
msgstr "Tout Afficher"
#: pcbnew/set_color.cpp:270
#: gerbview/set_color.cpp:241
msgid "Show None"
msgstr "Rien Afficher"
#: pcbnew/set_color.cpp:285
#: cvpcb/dialog_display_options.cpp:199
#: gerbview/set_color.cpp:257
msgid "Apply"
msgstr "Appliquer"
#: pcbnew/dialog_setup_libs.cpp:191 #: pcbnew/dialog_setup_libs.cpp:191
#: eeschema/eestatus.cpp:139 #: eeschema/eestatus.cpp:139
#: eeschema/dialog_eeschema_config.cpp:211 #: eeschema/dialog_eeschema_config.cpp:211
...@@ -3949,29 +3812,35 @@ msgstr "Largeur Texte Module" ...@@ -3949,29 +3812,35 @@ msgstr "Largeur Texte Module"
msgid "GenCAD file:" msgid "GenCAD file:"
msgstr "Fichier GenCAD:" msgstr "Fichier GenCAD:"
#: pcbnew/swap_layers.cpp:59
msgid "Swap Layers:"
msgstr "Permutte couches"
#: pcbnew/swap_layers.cpp:75
#: pcbnew/swap_layers.cpp:129
#: pcbnew/swap_layers.cpp:162
msgid "No Change"
msgstr "Garder"
#: pcbnew/swap_layers.cpp:80
#: gerbview/select_layers_to_pcb.cpp:134
msgid "Layers"
msgstr "Couches"
#: pcbnew/swap_layers.cpp:88 #: pcbnew/swap_layers.cpp:88
#: gerbview/select_layers_to_pcb.cpp:152 #: gerbview/select_layers_to_pcb.cpp:152
#, fuzzy
msgid "Select..." msgid "Select..."
msgstr "Slection" msgstr "Slection..."
#: pcbnew/swap_layers.cpp:93
#: gerbview/select_layers_to_pcb.cpp:156
msgid "Deselect"
msgstr "Deselection"
#: pcbnew/swap_layers.cpp:150 #: pcbnew/swap_layers.cpp:150
msgid "Deselect this layer to restore its No Change state" msgid "Deselect this layer to restore its No Change state"
msgstr "Deselectionner cette couche pour restorer l'option Pas de Changement" msgstr "Deselectionner cette couche pour restorer l'option Pas de Changement"
#: pcbnew/class_track.cpp:719
msgid "NetCode"
msgstr "NetCode"
#: pcbnew/class_track.cpp:739
#: pcbnew/class_module.cpp:1135
msgid "Stat"
msgstr "Stat"
#: pcbnew/class_track.cpp:763
msgid "Diam"
msgstr "Diam"
#: pcbnew/dialog_edit_module.cpp:39 #: pcbnew/dialog_edit_module.cpp:39
msgid "Module properties" msgid "Module properties"
msgstr "Proprits du Module" msgstr "Proprits du Module"
...@@ -4129,53 +3998,71 @@ msgstr "R ...@@ -4129,53 +3998,71 @@ msgstr "R
msgid "Delete [%s]" msgid "Delete [%s]"
msgstr "Supprimer [%s]" msgstr "Supprimer [%s]"
#: pcbnew/globaleditpad.cpp:79 #: pcbnew/class_board_item.cpp:40
msgid "Pads Global Edit" #: eeschema/component_class.cpp:56
msgstr "Pads: Edition globale" msgid "Footprint"
msgstr "Module"
#: pcbnew/globaleditpad.cpp:101 #: pcbnew/class_board_item.cpp:45
msgid "Change Module" msgid "Pad"
msgstr "Change module" msgstr "Pad"
#: pcbnew/globaleditpad.cpp:106 #: pcbnew/class_board_item.cpp:45
msgid "Change Id Modules" #: pcbnew/class_board_item.cpp:71
msgstr "Change Modules ident." #: pcbnew/class_board_item.cpp:77
#: pcbnew/class_board_item.cpp:122
msgid " of "
msgstr " de "
#: pcbnew/globaleditpad.cpp:117 #: pcbnew/class_board_item.cpp:50
msgid "Pad Filter :" msgid "Pcb Graphic"
msgstr "Filtre Pad :" msgstr "Pcb Graphic"
#: pcbnew/globaleditpad.cpp:119 #: pcbnew/class_board_item.cpp:50
msgid "Shape Filter" #: pcbnew/class_board_item.cpp:59
msgstr "Filtre sur forme" #: pcbnew/class_board_item.cpp:133
#: pcbnew/class_board_item.cpp:148
#: pcbnew/class_board_item.cpp:175
#: pcbnew/class_board_item.cpp:197
msgid " on "
msgstr " sur "
#: pcbnew/globaleditpad.cpp:123 #: pcbnew/class_board_item.cpp:54
msgid "Layer Filter" msgid "Pcb Text"
msgstr "Filtre sur couche" msgstr "Texte Pcb"
#: pcbnew/globaleditpad.cpp:127 #: pcbnew/class_board_item.cpp:85
msgid "Orient Filter" msgid "Graphic"
msgstr "Filtre Orientation" msgstr "Graphique"
#: pcbnew/globaleditpad.cpp:132 #: pcbnew/class_board_item.cpp:97
msgid "Change Items :" msgid "Arc"
msgstr "Elments changer:" msgstr "Arc"
#: pcbnew/globaleditpad.cpp:134 #: pcbnew/class_board_item.cpp:137
msgid "Change Size" #: pcbnew/class_track.cpp:712
msgstr "Change Taille" msgid "Zone"
msgstr "Zone"
#: pcbnew/globaleditpad.cpp:138 #: pcbnew/class_board_item.cpp:158
msgid "Change Shape" msgid "Blind"
msgstr "Change Forme" msgstr "Enterre"
#: pcbnew/globaleditpad.cpp:142 #: pcbnew/class_board_item.cpp:160
msgid "Change Drill" msgid "Buried"
msgstr "Change Perage" msgstr "Borgne"
#: pcbnew/class_board_item.cpp:186
msgid "Dimension"
msgstr "Dimension"
#: pcbnew/globaleditpad.cpp:146 #: pcbnew/class_board_item.cpp:190
msgid "Change Orient" msgid "Target"
msgstr "Change Orientation" msgstr "Mire"
#: pcbnew/class_board_item.cpp:197
msgid "Edge Zone"
msgstr "Contour Zone"
#: pcbnew/class_edge_mod.cpp:283 #: pcbnew/class_edge_mod.cpp:283
msgid "Seg" msgid "Seg"
...@@ -4226,6 +4113,19 @@ msgstr "Pin localis ...@@ -4226,6 +4113,19 @@ msgstr "Pin localis
msgid "Module Editor: module modified!, Continue ?" msgid "Module Editor: module modified!, Continue ?"
msgstr "Editeur de Module: module modifi! Continuer ?" msgstr "Editeur de Module: module modifi! Continuer ?"
#: pcbnew/class_track.cpp:739
msgid "NetCode"
msgstr "NetCode"
#: pcbnew/class_track.cpp:759
#: pcbnew/class_module.cpp:1135
msgid "Stat"
msgstr "Stat"
#: pcbnew/class_track.cpp:783
msgid "Diam"
msgstr "Diam"
#: pcbnew/gen_modules_placefile.cpp:76 #: pcbnew/gen_modules_placefile.cpp:76
msgid "No Modules for Automated Placement" msgid "No Modules for Automated Placement"
msgstr "Pas de Module pour placement Automatis" msgstr "Pas de Module pour placement Automatis"
...@@ -4242,379 +4142,435 @@ msgstr "Fichier placement cot ...@@ -4242,379 +4142,435 @@ msgstr "Fichier placement cot
msgid "Module count" msgid "Module count"
msgstr "Nb Modules" msgstr "Nb Modules"
#: pcbnew/basepcbframe.cpp:119 #: pcbnew/onrightclick.cpp:83
msgid "3D Frame already opened"
msgstr "Fenetre 3D dj ouverte"
#: pcbnew/basepcbframe.cpp:122
msgid "3D Viewer"
msgstr "Visu 3D"
#: pcbnew/onrightclick.cpp:80
#, c-format #, c-format
msgid "Track %.1f" msgid "Track %.1f"
msgstr "Piste %.1f" msgstr "Piste %.1f"
#: pcbnew/onrightclick.cpp:82 #: pcbnew/onrightclick.cpp:85
#, c-format #, c-format
msgid "Track %.3f" msgid "Track %.3f"
msgstr "Piste %.3f" msgstr "Piste %.3f"
#: pcbnew/onrightclick.cpp:98 #: pcbnew/onrightclick.cpp:101
#, c-format #, c-format
msgid "Via %.1f" msgid "Via %.1f"
msgstr "Via %.1f" msgstr "Via %.1f"
#: pcbnew/onrightclick.cpp:100 #: pcbnew/onrightclick.cpp:103
#, c-format #, c-format
msgid "Via %.3f" msgid "Via %.3f"
msgstr "Via %.3f" msgstr "Via %.3f"
#: pcbnew/onrightclick.cpp:197 #: pcbnew/onrightclick.cpp:235
msgid "Lock Module" msgid "Lock Module"
msgstr "Verrouiller Modules" msgstr "Verrouiller Modules"
#: pcbnew/onrightclick.cpp:205 #: pcbnew/onrightclick.cpp:243
msgid "Unlock Module" msgid "Unlock Module"
msgstr "Dverrouiller Modules" msgstr "Dverrouiller Modules"
#: pcbnew/onrightclick.cpp:213 #: pcbnew/onrightclick.cpp:251
msgid "Auto place Module" msgid "Auto place Module"
msgstr "Auto place Module" msgstr "Auto place Module"
#: pcbnew/onrightclick.cpp:219 #: pcbnew/onrightclick.cpp:257
msgid "Autoroute" msgid "Autoroute"
msgstr "Autoroute" msgstr "Autoroute"
#: pcbnew/onrightclick.cpp:235 #: pcbnew/onrightclick.cpp:273
msgid "Move Drawing" msgid "Move Drawing"
msgstr "Dplace Trac" msgstr "Dplace Trac"
#: pcbnew/onrightclick.cpp:240 #: pcbnew/onrightclick.cpp:278
msgid "End Drawing" msgid "End Drawing"
msgstr "Fin trac" msgstr "Fin trac"
#: pcbnew/onrightclick.cpp:242 #: pcbnew/onrightclick.cpp:280
msgid "Edit Drawing" msgid "Edit Drawing"
msgstr "Edit Trac" msgstr "Edit Trac"
#: pcbnew/onrightclick.cpp:243 #: pcbnew/onrightclick.cpp:281
msgid "Delete Drawing" msgid "Delete Drawing"
msgstr "Supprimer Trac" msgstr "Supprimer Trac"
#: pcbnew/onrightclick.cpp:250 #: pcbnew/onrightclick.cpp:288
msgid "End edge zone" msgid "End edge zone"
msgstr "Fin contour Zone" msgstr "Fin contour Zone"
#: pcbnew/onrightclick.cpp:253 #: pcbnew/onrightclick.cpp:291
msgid "Delete edge zone" msgid "Delete edge zone"
msgstr "Supprimer Contour Zone" msgstr "Supprimer Contour Zone"
#: pcbnew/onrightclick.cpp:268 #: pcbnew/onrightclick.cpp:306
msgid "Edit Zone" msgid "Edit Zone"
msgstr "Editer Zone" msgstr "Editer Zone"
#: pcbnew/onrightclick.cpp:270 #: pcbnew/onrightclick.cpp:308
msgid "Delete Zone" msgid "Delete Zone"
msgstr "Supprimer Zone" msgstr "Supprimer Zone"
#: pcbnew/onrightclick.cpp:275 #: pcbnew/onrightclick.cpp:313
msgid "Delete Marker" msgid "Delete Marker"
msgstr "Effacer Marqueur" msgstr "Effacer Marqueur"
#: pcbnew/onrightclick.cpp:282 #: pcbnew/onrightclick.cpp:320
msgid "Edit Cotation" msgid "Edit Dimension"
msgstr "Editer Cotation" msgstr "Edit Cote"
#: pcbnew/onrightclick.cpp:285 #: pcbnew/onrightclick.cpp:323
msgid "Delete Cotation" msgid "Delete Dimension"
msgstr "Supprimer Cotation" msgstr "Suppression Cote"
#: pcbnew/onrightclick.cpp:292 #: pcbnew/onrightclick.cpp:330
msgid "Move Mire" msgid "Move Target"
msgstr "Dplace Mire" msgstr "Dplacer Mire"
#: pcbnew/onrightclick.cpp:295 #: pcbnew/onrightclick.cpp:333
msgid "Edit Mire" msgid "Edit Target"
msgstr "Edit Mire" msgstr "Editer Mire"
#: pcbnew/onrightclick.cpp:297 #: pcbnew/onrightclick.cpp:335
msgid "Delete Mire" msgid "Delete Target"
msgstr "Supprimer Mire" msgstr "Supprimer Mire"
#: pcbnew/onrightclick.cpp:324 #: pcbnew/onrightclick.cpp:362
msgid "Get and Move Footprint" msgid "Get and Move Footprint"
msgstr "Sel et Dpl.t module" msgstr "Sel et Dpl.t module"
#: pcbnew/onrightclick.cpp:336 #: pcbnew/onrightclick.cpp:374
msgid "Fill zone" msgid "Fill zone"
msgstr "Remplir zone" msgstr "Remplir zone"
#: pcbnew/onrightclick.cpp:344 #: pcbnew/onrightclick.cpp:382
msgid "Select Net" msgid "Select Net"
msgstr "Slection Net" msgstr "Slection Net"
#: pcbnew/onrightclick.cpp:349 #: pcbnew/onrightclick.cpp:387
msgid "Delete Zone Limit" msgid "Delete Zone Limit"
msgstr "Supprimer Limite de Zone" msgstr "Supprimer Limite de Zone"
#: pcbnew/onrightclick.cpp:354 #: pcbnew/onrightclick.cpp:392
#: pcbnew/onrightclick.cpp:365 #: pcbnew/onrightclick.cpp:403
#: pcbnew/onrightclick.cpp:378 #: pcbnew/onrightclick.cpp:416
#: pcbnew/onrightclick.cpp:439 #: pcbnew/onrightclick.cpp:477
msgid "Select Working Layer" msgid "Select Working Layer"
msgstr "Slection de la couche de travail" msgstr "Slection de la couche de travail"
#: pcbnew/onrightclick.cpp:363 #: pcbnew/onrightclick.cpp:401
#: pcbnew/onrightclick.cpp:436 #: pcbnew/onrightclick.cpp:474
msgid "Select Track Width" msgid "Select Track Width"
msgstr "Slection Epais. Piste" msgstr "Slection Epais. Piste"
#: pcbnew/onrightclick.cpp:367 #: pcbnew/onrightclick.cpp:405
msgid "Select layer pair for vias" msgid "Select layer pair for vias"
msgstr "Selection couple de couches pour Vias" msgstr "Selection couple de couches pour Vias"
#: pcbnew/onrightclick.cpp:384 #: pcbnew/onrightclick.cpp:422
msgid "Footprint documentation" msgid "Footprint documentation"
msgstr "Documentation des modules" msgstr "Documentation des modules"
#: pcbnew/onrightclick.cpp:394 #: pcbnew/onrightclick.cpp:432
msgid "Glob Move and Place" msgid "Glob Move and Place"
msgstr "Move et Place Globaux" msgstr "Move et Place Globaux"
#: pcbnew/onrightclick.cpp:396 #: pcbnew/onrightclick.cpp:434
msgid "Unlock All Modules" msgid "Unlock All Modules"
msgstr "Dverrouiller tous les Modules" msgstr "Dverrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:398 #: pcbnew/onrightclick.cpp:436
msgid "Lock All Modules" msgid "Lock All Modules"
msgstr "Verrouiller tous les Modules" msgstr "Verrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:401 #: pcbnew/onrightclick.cpp:439
msgid "Move All Modules" msgid "Move All Modules"
msgstr "Dplace tous les Modules" msgstr "Dplace tous les Modules"
#: pcbnew/onrightclick.cpp:402 #: pcbnew/onrightclick.cpp:440
msgid "Move New Modules" msgid "Move New Modules"
msgstr "Dplace nouveaux Modules" msgstr "Dplace nouveaux Modules"
#: pcbnew/onrightclick.cpp:404 #: pcbnew/onrightclick.cpp:442
msgid "Autoplace All Modules" msgid "Autoplace All Modules"
msgstr "Autoplace Tous Modules" msgstr "Autoplace Tous Modules"
#: pcbnew/onrightclick.cpp:405 #: pcbnew/onrightclick.cpp:443
msgid "Autoplace New Modules" msgid "Autoplace New Modules"
msgstr "AutoPlace nouveaux Modules" msgstr "AutoPlace nouveaux Modules"
#: pcbnew/onrightclick.cpp:406 #: pcbnew/onrightclick.cpp:444
msgid "Autoplace Next Module" msgid "Autoplace Next Module"
msgstr "Autoplace Module suivant" msgstr "Autoplace Module suivant"
#: pcbnew/onrightclick.cpp:409 #: pcbnew/onrightclick.cpp:447
msgid "Orient All Modules" msgid "Orient All Modules"
msgstr "Oriente Tous Modules" msgstr "Oriente Tous Modules"
#: pcbnew/onrightclick.cpp:416 #: pcbnew/onrightclick.cpp:454
msgid "Global Autoroute" msgid "Global Autoroute"
msgstr "Autoroutage global" msgstr "Autoroutage global"
#: pcbnew/onrightclick.cpp:418 #: pcbnew/onrightclick.cpp:456
msgid "Select layer pair" msgid "Select layer pair"
msgstr "Selection couple de couches" msgstr "Selection couple de couches"
#: pcbnew/onrightclick.cpp:420 #: pcbnew/onrightclick.cpp:458
msgid "Autoroute All Modules" msgid "Autoroute All Modules"
msgstr "Autoroute Tous Modules" msgstr "Autoroute Tous Modules"
#: pcbnew/onrightclick.cpp:422 #: pcbnew/onrightclick.cpp:460
msgid "Reset Unrouted" msgid "Reset Unrouted"
msgstr "Rinit Non routs" msgstr "Rinit Non routs"
#: pcbnew/onrightclick.cpp:427 #: pcbnew/onrightclick.cpp:465
msgid "Global AutoRouter" msgid "Global AutoRouter"
msgstr "Autorouteur Global" msgstr "Autorouteur Global"
#: pcbnew/onrightclick.cpp:429 #: pcbnew/onrightclick.cpp:467
msgid "Read Global AutoRouter Data" msgid "Read Global AutoRouter Data"
msgstr "Lire Donnes de L'autorouteur global" msgstr "Lire Donnes de L'autorouteur global"
#: pcbnew/onrightclick.cpp:466 #: pcbnew/onrightclick.cpp:504
msgid "Flip Block (alt + drag mouse)" msgid "Flip Block (alt + drag mouse)"
msgstr "Inversion Bloc (alt + drag mouse)" msgstr "Inversion Bloc (alt + drag mouse)"
#: pcbnew/onrightclick.cpp:489 #: pcbnew/onrightclick.cpp:527
msgid "Drag Via" msgid "Drag Via"
msgstr "Drag Via" msgstr "Drag Via"
#: pcbnew/onrightclick.cpp:493 #: pcbnew/onrightclick.cpp:531
msgid "Edit Via" msgid "Edit Via"
msgstr "Edit Via" msgstr "Edit Via"
#: pcbnew/onrightclick.cpp:495 #: pcbnew/onrightclick.cpp:533
msgid "Set via hole to Default" msgid "Set via hole to Default"
msgstr "Ajuste perage via dfaut" msgstr "Ajuste perage via dfaut"
#: pcbnew/onrightclick.cpp:497 #: pcbnew/onrightclick.cpp:535
msgid "Set via hole to alt value" msgid "Set via hole to alt value"
msgstr "Ajuste perage via valeur alternative" msgstr "Ajuste perage via valeur alternative"
#: pcbnew/onrightclick.cpp:499 #: pcbnew/onrightclick.cpp:537
msgid "Set the via hole alt value" msgid "Set the via hole alt value"
msgstr "Ajuste la valeur alt. perage via" msgstr "Ajuste la valeur alt. perage via"
#: pcbnew/onrightclick.cpp:501 #: pcbnew/onrightclick.cpp:539
msgid "Export Via hole to alt value" msgid "Export Via hole to alt value"
msgstr "Exporte perage via valeur alt." msgstr "Exporte perage via valeur alt."
#: pcbnew/onrightclick.cpp:503 #: pcbnew/onrightclick.cpp:541
msgid "Export via hole to others id vias" msgid "Export via hole to others id vias"
msgstr "Exporte perage via aux autres semblables." msgstr "Exporte perage via aux autres semblables."
#: pcbnew/onrightclick.cpp:505 #: pcbnew/onrightclick.cpp:543
msgid "Set ALL via holes to default" msgid "Set ALL via holes to default"
msgstr "Ajuste perage TOUTES vias au dfaut" msgstr "Ajuste perage TOUTES vias au dfaut"
#: pcbnew/onrightclick.cpp:518 #: pcbnew/onrightclick.cpp:556
msgid "Move Node" msgid "Move Node"
msgstr "Dplace Noeud" msgstr "Dplace Noeud"
#: pcbnew/onrightclick.cpp:523 #: pcbnew/onrightclick.cpp:561
msgid "Drag Segments, keep slope" msgid "Drag Segments, keep slope"
msgstr "Drag Segments, garder direction" msgstr "Drag Segments, garder direction"
#: pcbnew/onrightclick.cpp:525 #: pcbnew/onrightclick.cpp:563
msgid "Drag Segment" msgid "Drag Segment"
msgstr "Drag Segment" msgstr "Drag Segment"
#: pcbnew/onrightclick.cpp:528 #: pcbnew/onrightclick.cpp:566
msgid "Move Segment" msgid "Move Segment"
msgstr "Dplace Segment" msgstr "Dplace Segment"
#: pcbnew/onrightclick.cpp:531 #: pcbnew/onrightclick.cpp:569
msgid "Break Track" msgid "Break Track"
msgstr "Briser piste" msgstr "Briser piste"
#: pcbnew/onrightclick.cpp:538 #: pcbnew/onrightclick.cpp:576
msgid "Place Node" msgid "Place Node"
msgstr "Place noeud" msgstr "Place noeud"
#: pcbnew/onrightclick.cpp:545 #: pcbnew/onrightclick.cpp:583
msgid "End Track" msgid "End Track"
msgstr "Terminer Piste" msgstr "Terminer Piste"
#: pcbnew/onrightclick.cpp:548 #: pcbnew/onrightclick.cpp:586
msgid "Place Via" msgid "Place Via"
msgstr "Place Via" msgstr "Place Via"
#: pcbnew/onrightclick.cpp:555 #: pcbnew/onrightclick.cpp:593
msgid "Change Width" msgid "Change Width"
msgstr "Change Largeur" msgstr "Change Largeur"
#: pcbnew/onrightclick.cpp:557 #: pcbnew/onrightclick.cpp:595
msgid "Edit Segment" msgid "Edit Segment"
msgstr "Edit Segment" msgstr "Edit Segment"
#: pcbnew/onrightclick.cpp:561 #: pcbnew/onrightclick.cpp:599
msgid "Edit Track" msgid "Edit Track"
msgstr "Editer Piste" msgstr "Editer Piste"
#: pcbnew/onrightclick.cpp:563 #: pcbnew/onrightclick.cpp:601
msgid "Edit Net" msgid "Edit Net"
msgstr "Edit Net" msgstr "Edit Net"
#: pcbnew/onrightclick.cpp:565 #: pcbnew/onrightclick.cpp:603
msgid "Edit ALL Tracks and Vias" msgid "Edit ALL Tracks and Vias"
msgstr "Editer TOUTES Pistes et Vias" msgstr "Editer TOUTES Pistes et Vias"
#: pcbnew/onrightclick.cpp:567 #: pcbnew/onrightclick.cpp:605
msgid "Edit ALL Vias (no track)" msgid "Edit ALL Vias (no track)"
msgstr "Editer TOUTES Vias (pas les pistes)" msgstr "Editer TOUTES Vias (pas les pistes)"
#: pcbnew/onrightclick.cpp:569 #: pcbnew/onrightclick.cpp:607
msgid "Edit ALL Tracks (no via)" msgid "Edit ALL Tracks (no via)"
msgstr "Editer TOUTES Pistes (pas les vias)" msgstr "Editer TOUTES Pistes (pas les vias)"
#: pcbnew/onrightclick.cpp:576 #: pcbnew/onrightclick.cpp:614
msgid "Delete Segment" msgid "Delete Segment"
msgstr "SupprimerSegment" msgstr "SupprimerSegment"
#: pcbnew/onrightclick.cpp:581 #: pcbnew/onrightclick.cpp:619
msgid "Delete Track" msgid "Delete Track"
msgstr "Effacer Piste" msgstr "Effacer Piste"
#: pcbnew/onrightclick.cpp:585 #: pcbnew/onrightclick.cpp:623
msgid "Delete Net" msgid "Delete Net"
msgstr "Supprimer Net" msgstr "Supprimer Net"
#: pcbnew/onrightclick.cpp:590 #: pcbnew/onrightclick.cpp:628
msgid "Set Flags" msgid "Set Flags"
msgstr "Ajust. Flags" msgstr "Ajust. Flags"
#: pcbnew/onrightclick.cpp:591 #: pcbnew/onrightclick.cpp:629
msgid "Locked: Yes" msgid "Locked: Yes"
msgstr "Verrou: Oui" msgstr "Verrou: Oui"
#: pcbnew/onrightclick.cpp:592 #: pcbnew/onrightclick.cpp:630
msgid "Locked: No" msgid "Locked: No"
msgstr "Verrou: Non" msgstr "Verrou: Non"
#: pcbnew/onrightclick.cpp:602 #: pcbnew/onrightclick.cpp:640
msgid "Track Locked: Yes" msgid "Track Locked: Yes"
msgstr "Piste verrouille: Oui" msgstr "Piste verrouille: Oui"
#: pcbnew/onrightclick.cpp:603 #: pcbnew/onrightclick.cpp:641
msgid "Track Locked: No" msgid "Track Locked: No"
msgstr "Piste verrouille: Non" msgstr "Piste verrouille: Non"
#: pcbnew/onrightclick.cpp:605 #: pcbnew/onrightclick.cpp:643
msgid "Net Locked: Yes" msgid "Net Locked: Yes"
msgstr "Net verrouill: Oui" msgstr "Net verrouill: Oui"
#: pcbnew/onrightclick.cpp:606 #: pcbnew/onrightclick.cpp:644
msgid "Net Locked: No" msgid "Net Locked: No"
msgstr "Net verrouill: Non" msgstr "Net verrouill: Non"
#: pcbnew/onrightclick.cpp:628 #: pcbnew/onrightclick.cpp:666
#: pcbnew/onrightclick.cpp:673
#: pcbnew/onrightclick.cpp:711 #: pcbnew/onrightclick.cpp:711
#: pcbnew/onrightclick.cpp:770 #: pcbnew/onrightclick.cpp:749
#: pcbnew/onrightclick.cpp:808
msgid "Move" msgid "Move"
msgstr "Move" msgstr "Move"
#: pcbnew/onrightclick.cpp:631 #: pcbnew/onrightclick.cpp:669
#: pcbnew/onrightclick.cpp:713 #: pcbnew/onrightclick.cpp:751
msgid "Drag" msgid "Drag"
msgstr "Drag" msgstr "Drag"
#: pcbnew/onrightclick.cpp:635 #: pcbnew/onrightclick.cpp:673
msgid "Rotate +" msgid "Rotate +"
msgstr "Rotation +" msgstr "Rotation +"
#: pcbnew/onrightclick.cpp:639 #: pcbnew/onrightclick.cpp:677
#: eeschema/onrightclick.cpp:300 #: eeschema/onrightclick.cpp:300
msgid "Rotate -" msgid "Rotate -"
msgstr "Rotation -" msgstr "Rotation -"
#: pcbnew/onrightclick.cpp:640 #: pcbnew/onrightclick.cpp:678
msgid "Flip" msgid "Flip"
msgstr "Change ct" msgstr "Change ct"
#: pcbnew/onrightclick.cpp:730 #: pcbnew/onrightclick.cpp:768
msgid "delete" msgid "delete"
msgstr "Effacer" msgstr "Effacer"
#: pcbnew/onrightclick.cpp:737 #: pcbnew/onrightclick.cpp:775
msgid "Autoroute Pad" msgid "Autoroute Pad"
msgstr "Autoroute Pad" msgstr "Autoroute Pad"
#: pcbnew/onrightclick.cpp:738 #: pcbnew/onrightclick.cpp:776
msgid "Autoroute Net" msgid "Autoroute Net"
msgstr "Autoroute Net" msgstr "Autoroute Net"
#: pcbnew/onleftclick.cpp:168
msgid "Graphic not autorized on Copper layers"
msgstr "Graphique non autoris sur couches cuivre"
#: pcbnew/onleftclick.cpp:191
msgid "Tracks on Copper layers only "
msgstr "Pistes sur couches cuivre seulement"
#: pcbnew/onleftclick.cpp:267
msgid "Cotation not autorized on Copper layers"
msgstr "Cotation non autorise sur couches cuivre"
#: pcbnew/menubarmodedit.cpp:40 #: pcbnew/menubarmodedit.cpp:40
msgid "Sizes and Widths" msgid "Sizes and Widths"
msgstr "Dims. et Epaiss." msgstr "Dims. et Epaiss."
#: pcbnew/globaleditpad.cpp:76
msgid "Pads Global Edit"
msgstr "Pads: Edition globale"
#: pcbnew/globaleditpad.cpp:94
msgid "Pad Settings..."
msgstr "Caract pad ..."
#: pcbnew/globaleditpad.cpp:99
msgid "Change Module"
msgstr "Change module"
#: pcbnew/globaleditpad.cpp:104
msgid "Change Id Modules"
msgstr "Change Modules ident."
#: pcbnew/globaleditpad.cpp:114
msgid "Pad Filter :"
msgstr "Filtre Pad :"
#: pcbnew/globaleditpad.cpp:118
msgid "Shape Filter"
msgstr "Filtre sur forme"
#: pcbnew/globaleditpad.cpp:122
msgid "Layer Filter"
msgstr "Filtre sur couche"
#: pcbnew/globaleditpad.cpp:126
msgid "Orient Filter"
msgstr "Filtre Orientation"
#: pcbnew/globaleditpad.cpp:132
msgid "Change Items :"
msgstr "Elments changer:"
#: pcbnew/globaleditpad.cpp:136
msgid "Change Size"
msgstr "Change Taille"
#: pcbnew/globaleditpad.cpp:140
msgid "Change Shape"
msgstr "Change Forme"
#: pcbnew/globaleditpad.cpp:144
msgid "Change Drill"
msgstr "Change Perage"
#: pcbnew/globaleditpad.cpp:148
msgid "Change Orient"
msgstr "Change Orientation"
#: pcbnew/class_board.cpp:317 #: pcbnew/class_board.cpp:317
msgid "Nodes" msgid "Nodes"
msgstr "Nodes" msgstr "Nodes"
...@@ -4722,18 +4678,6 @@ msgstr "Larg. piste: %s Diam Vias : %s" ...@@ -4722,18 +4678,6 @@ msgstr "Larg. piste: %s Diam Vias : %s"
msgid "Drc error, cancelled" msgid "Drc error, cancelled"
msgstr "Erreur DRC, annulation" msgstr "Erreur DRC, annulation"
#: pcbnew/onleftclick.cpp:173
msgid "Graphic not autorized on Copper layers"
msgstr "Graphique non autoris sur couches cuivre"
#: pcbnew/onleftclick.cpp:196
msgid "Tracks on Copper layers only "
msgstr "Pistes sur couches cuivre seulement"
#: pcbnew/onleftclick.cpp:272
msgid "Cotation not autorized on Copper layers"
msgstr "Cotation non autorise sur couches cuivre"
#: pcbnew/cleaningoptions_dialog.cpp:146 #: pcbnew/cleaningoptions_dialog.cpp:146
msgid "Static" msgid "Static"
msgstr "Static" msgstr "Static"
...@@ -4769,7 +4713,6 @@ msgid "Display Polar Coord" ...@@ -4769,7 +4713,6 @@ msgid "Display Polar Coord"
msgstr "Affichage coord Polaires" msgstr "Affichage coord Polaires"
#: pcbnew/dialog_general_options.cpp:273 #: pcbnew/dialog_general_options.cpp:273
#: eeschema/options.cpp:187
#: eeschema/dialog_options.cpp:248 #: eeschema/dialog_options.cpp:248
#: gerbview/options.cpp:185 #: gerbview/options.cpp:185
msgid "Units" msgid "Units"
...@@ -4834,7 +4777,6 @@ msgid "Segments 45 Only" ...@@ -4834,7 +4777,6 @@ msgid "Segments 45 Only"
msgstr "Segments 45 seulement" msgstr "Segments 45 seulement"
#: pcbnew/dialog_general_options.cpp:341 #: pcbnew/dialog_general_options.cpp:341
#: eeschema/options.cpp:124
#: eeschema/dialog_options.cpp:239 #: eeschema/dialog_options.cpp:239
msgid "Auto PAN" msgid "Auto PAN"
msgstr "Auto PAN" msgstr "Auto PAN"
...@@ -5268,120 +5210,98 @@ msgstr "Un fichier %s existe, Le charger ?" ...@@ -5268,120 +5210,98 @@ msgstr "Un fichier %s existe, Le charger ?"
msgid "Ok to cleanup this sheet" msgid "Ok to cleanup this sheet"
msgstr "Ok pour nettoyer cette feuille" msgstr "Ok pour nettoyer cette feuille"
#: eeschema/options.cpp:96 #: eeschema/sheetlab.cpp:72
#: eeschema/eelayer.cpp:282 msgid "PinSheet Properties:"
msgid "EESchema Preferences" msgstr "Proprits des Pins de Hierarchie"
msgstr "EESchema Prfrences"
#: eeschema/sheetlab.cpp:106
msgid "PinSheet Shape:"
msgstr "Forme Pin de hirarchie:"
#: eeschema/sheetlab.cpp:386
msgid "No New Global Label found"
msgstr "Pas de nouveau Global Label trouv"
#: eeschema/netform.cpp:55
#: eeschema/netform.cpp:254
#: eeschema/save_schemas.cpp:94
msgid "Failed to create file "
msgstr "Impossible de crer le fichier "
#: eeschema/dialog_options.cpp:140
#: eeschema/dialog_options.cpp:288
msgid "Delta Step X"
msgstr "Incrment X"
#: eeschema/dialog_options.cpp:145
#: eeschema/dialog_options.cpp:294
msgid "Delta Step Y"
msgstr "Incrment Y"
#: eeschema/dialog_options.cpp:208
msgid "Draw Options:"
msgstr "Options de trac:"
#: eeschema/options.cpp:119
#: eeschema/dialog_options.cpp:212 #: eeschema/dialog_options.cpp:212
msgid "Show grid" msgid "Show grid"
msgstr "Afficher grille" msgstr "Afficher grille"
#: eeschema/options.cpp:130
#: eeschema/dialog_options.cpp:217 #: eeschema/dialog_options.cpp:217
msgid "Normal (50 mils)" msgid "Normal (50 mils)"
msgstr "Normal (50 mils)" msgstr "Normal (50 mils)"
#: eeschema/options.cpp:131
#: eeschema/dialog_options.cpp:218 #: eeschema/dialog_options.cpp:218
msgid "Small (25 mils)" msgid "Small (25 mils)"
msgstr "Petit (25 mils)" msgstr "Petit (25 mils)"
#: eeschema/options.cpp:132
#: eeschema/dialog_options.cpp:219 #: eeschema/dialog_options.cpp:219
msgid "Very small (10 mils)" msgid "Very small (10 mils)"
msgstr "Trs petit (10 mils)" msgstr "Trs petit (10 mils)"
#: eeschema/options.cpp:133
#: eeschema/dialog_options.cpp:220 #: eeschema/dialog_options.cpp:220
msgid "Special (5 mils)" msgid "Special (5 mils)"
msgstr "Special (5 mils)" msgstr "Special (5 mils)"
#: eeschema/options.cpp:134
#: eeschema/dialog_options.cpp:221 #: eeschema/dialog_options.cpp:221
msgid "Special (2 mils)" msgid "Special (2 mils)"
msgstr "Special (2 mils)" msgstr "Special (2 mils)"
#: eeschema/options.cpp:135
#: eeschema/dialog_options.cpp:222 #: eeschema/dialog_options.cpp:222
msgid "Special (1 mil)" msgid "Special (1 mil)"
msgstr "Special (1 mil)" msgstr "Special (1 mil)"
#: eeschema/options.cpp:138
#: eeschema/dialog_options.cpp:224 #: eeschema/dialog_options.cpp:224
msgid "Grid Size" msgid "Grid Size"
msgstr "Dim Grille" msgstr "Dim Grille"
#: eeschema/options.cpp:177
#: eeschema/dialog_options.cpp:230 #: eeschema/dialog_options.cpp:230
msgid "Show alls" msgid "Show alls"
msgstr "Tout Afficher" msgstr "Tout Afficher"
#: eeschema/options.cpp:179
#: eeschema/dialog_options.cpp:232 #: eeschema/dialog_options.cpp:232
msgid "Show pins" msgid "Show pins"
msgstr "Monter Pins" msgstr "Monter Pins"
#: eeschema/options.cpp:194 #: eeschema/dialog_options.cpp:245
msgid "millimeter"
msgstr "millimetre"
#: eeschema/dialog_options.cpp:256 #: eeschema/dialog_options.cpp:256
msgid "Horiz/Vertical" msgid "Horiz/Vertical"
msgstr "Horiz/Vertical" msgstr "Horiz/Vertical"
#: eeschema/options.cpp:196
#: eeschema/dialog_options.cpp:259 #: eeschema/dialog_options.cpp:259
msgid "Wires - Bus orient" msgid "Wires - Bus orient"
msgstr "Fils-Bus Orient" msgstr "Fils-Bus Orient"
#: eeschema/options.cpp:211 #: eeschema/dialog_options.cpp:284
msgid "Delta Step" msgid "Auto increment params"
msgstr "Incrment" msgstr "Auto increment params"
#: eeschema/options.cpp:216
#: eeschema/dialog_options.cpp:300 #: eeschema/dialog_options.cpp:300
msgid "Delta Label:" msgid "Delta Label:"
msgstr "Incrment Label:" msgstr "Incrment Label:"
#: eeschema/sheetlab.cpp:72
msgid "PinSheet Properties:"
msgstr "Proprits des Pins de Hierarchie"
#: eeschema/sheetlab.cpp:106
msgid "PinSheet Shape:"
msgstr "Forme Pin de hirarchie:"
#: eeschema/sheetlab.cpp:386
msgid "No New Global Label found"
msgstr "Pas de nouveau Global Label trouv"
#: eeschema/netform.cpp:55
#: eeschema/netform.cpp:254
#: eeschema/save_schemas.cpp:94
msgid "Failed to create file "
msgstr "Impossible de crer le fichier "
#: eeschema/dialog_options.cpp:140
#: eeschema/dialog_options.cpp:288
msgid "Delta Step X"
msgstr "Incrment X"
#: eeschema/dialog_options.cpp:145
#: eeschema/dialog_options.cpp:294
msgid "Delta Step Y"
msgstr "Incrment Y"
#: eeschema/dialog_options.cpp:208
msgid "Draw Options:"
msgstr "Options de trac:"
#: eeschema/dialog_options.cpp:245
msgid "millimeter"
msgstr "millimetre"
#: eeschema/dialog_options.cpp:284
msgid "Auto increment params"
msgstr "Auto increment params"
#: eeschema/dialog_options.cpp:308 #: eeschema/dialog_options.cpp:308
#: eeschema/plotps.cpp:227 #: eeschema/plotps.cpp:227
msgid "Default Line Width" msgid "Default Line Width"
...@@ -6394,6 +6314,10 @@ msgstr "ERC Warning" ...@@ -6394,6 +6314,10 @@ msgstr "ERC Warning"
msgid "Erc Error" msgid "Erc Error"
msgstr "ERC Erreur" msgstr "ERC Erreur"
#: eeschema/eelayer.cpp:282
msgid "EESchema Preferences"
msgstr "EESchema Prfrences"
#: eeschema/eelayer.cpp:367 #: eeschema/eelayer.cpp:367
msgid "White Background" msgid "White Background"
msgstr "Fond Blanc" msgstr "Fond Blanc"
...@@ -8212,11 +8136,6 @@ msgstr "&Pad plein" ...@@ -8212,11 +8136,6 @@ msgstr "&Pad plein"
msgid "Save Cfg..." msgid "Save Cfg..."
msgstr "Sauver config..." msgstr "Sauver config..."
#: cvpcb/dialog_display_options.cpp:199
#: gerbview/set_color.cpp:255
msgid "Apply"
msgstr "Appliquer"
#: cvpcb/tool_cvpcb.cpp:35 #: cvpcb/tool_cvpcb.cpp:35
msgid "Open Netlist" msgid "Open Netlist"
msgstr "Lire Netliste" msgstr "Lire Netliste"
...@@ -8785,8 +8704,7 @@ msgstr "Effacer Zones ?" ...@@ -8785,8 +8704,7 @@ msgstr "Effacer Zones ?"
msgid "Delete Layer %d" msgid "Delete Layer %d"
msgstr "Effacer Couche %d" msgstr "Effacer Couche %d"
#: gerbview/set_color.cpp:149 #: gerbview/set_color.cpp:151
#, fuzzy
msgid "GerbView Layer Colors:" msgid "GerbView Layer Colors:"
msgstr "Gerbview: Couleur des couches" msgstr "Gerbview: Couleur des couches"
...@@ -9215,6 +9133,10 @@ msgstr "Ne peut trouver le visualisateur Pdf %s" ...@@ -9215,6 +9133,10 @@ msgstr "Ne peut trouver le visualisateur Pdf %s"
msgid "Colors" msgid "Colors"
msgstr "Couleurs" msgstr "Couleurs"
#: common/confirm.cpp:97
msgid "Infos:"
msgstr "Infos:"
#: common/common.cpp:48 #: common/common.cpp:48
msgid " (\"):" msgid " (\"):"
msgstr " (\"):" msgstr " (\"):"
...@@ -9335,10 +9257,6 @@ msgstr "Contour Pcb" ...@@ -9335,10 +9257,6 @@ msgstr "Contour Pcb"
msgid "--- " msgid "--- "
msgstr "--- " msgstr "--- "
#: common/confirm.cpp:97
msgid "Infos:"
msgstr "Infos:"
#: common/block_commande.cpp:56 #: common/block_commande.cpp:56
msgid "Block Move" msgid "Block Move"
msgstr "Move Bloc" msgstr "Move Bloc"
...@@ -9891,6 +9809,54 @@ msgstr "Options g ...@@ -9891,6 +9809,54 @@ msgstr "Options g
msgid "TextMod properties" msgid "TextMod properties"
msgstr "Proprits du Texte sur Module" msgstr "Proprits du Texte sur Module"
#: pcbnew/set_color.h:5
msgid "Copper Layers"
msgstr "Couches Cuivre."
#: pcbnew/set_color.h:139
msgid "Tech Layers"
msgstr "Couches Tech."
#: pcbnew/set_color.h:278
msgid "Ratsnest"
msgstr "Chevelu"
#: pcbnew/set_color.h:287
msgid "Pad Cu"
msgstr "Pad Cu"
#: pcbnew/set_color.h:295
msgid "Pad Cmp"
msgstr "Pad Cmp"
#: pcbnew/set_color.h:303
msgid "Text Module Cu"
msgstr "Texte Module Cu"
#: pcbnew/set_color.h:311
msgid "Text Module Cmp"
msgstr "Texte Module Cmp"
#: pcbnew/set_color.h:319
msgid "Text Module invisible"
msgstr "Texte Module invisible"
#: pcbnew/set_color.h:327
msgid "Anchors"
msgstr "Ancres"
#: pcbnew/set_color.h:353
msgid "Show Noconnect"
msgstr "Montrer Non Conn"
#: pcbnew/set_color.h:362
msgid "Show Modules Cmp"
msgstr "Afficher Modules Cmp"
#: pcbnew/set_color.h:371
msgid "Show Modules Cu"
msgstr "Afficher Modules Cu"
#: pcbnew/zones.h:54 #: pcbnew/zones.h:54
msgid "Fill Zones Options" msgid "Fill Zones Options"
msgstr "Options de remplissage de Zone" msgstr "Options de remplissage de Zone"
......
...@@ -28,6 +28,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const ...@@ -28,6 +28,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
wxString text; wxString text;
const BOARD_ITEM* item = this; const BOARD_ITEM* item = this;
EQUIPOT* net; EQUIPOT* net;
D_PAD * pad;
switch( item->Type() ) switch( item->Type() )
{ {
...@@ -42,8 +43,17 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const ...@@ -42,8 +43,17 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
break; break;
case TYPEPAD: case TYPEPAD:
text << _( "Pad" ) << wxT( " " ) << ( (D_PAD*) item )->ReturnStringPadName() << _( " of " ) pad = (D_PAD *) this;
<< ( (MODULE*) GetParent() )->GetReference(); text << _( "Pad" ) << wxT( " \"" ) << pad->ReturnStringPadName()
<< wxT( "\" (" );
if ( (pad->m_Masque_Layer & ALL_CU_LAYERS) == ALL_CU_LAYERS )
text << _("all copper layers");
else if( (pad->m_Masque_Layer & CUIVRE_LAYER) == CUIVRE_LAYER )
text << _("copper layers");
else if( (pad->m_Masque_Layer & CMP_LAYER) == CMP_LAYER )
text << _("cmp layers");
else text << _("???");
text << _( ") of " ) << ( (MODULE*) GetParent() )->GetReference();
break; break;
case TYPEDRAWSEGMENT: case TYPEDRAWSEGMENT:
......
...@@ -888,7 +888,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame ) ...@@ -888,7 +888,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
pos += 4; pos += 4;
Affiche_1_Parametre( frame, pos, _( "Net" ), m_Netname, DARKCYAN ); Affiche_1_Parametre( frame, pos, _( "Net" ), m_Netname, DARKCYAN );
/* pour mise au point (peut etre supprim� : Affichage du numero de Net et sous net */ /* For test and debug only: display m_physical_connexion and m_logical_connexion */
pos += 10; pos += 10;
#if 0 #if 0
Line.Printf( wxT( "%d.%d " ), m_logical_connexion, m_physical_connexion ); Line.Printf( wxT( "%d.%d " ), m_logical_connexion, m_physical_connexion );
......
...@@ -173,16 +173,16 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) ...@@ -173,16 +173,16 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
// printf( "cursor=(%d, %d) select=(%d,%d)\n", cursorPos.x, cursorPos.y, selectPos.x, selectPos.y ); // printf( "cursor=(%d, %d) select=(%d,%d)\n", cursorPos.x, cursorPos.y, selectPos.x, selectPos.y );
/* If not editing a track, and there is no selected item or the right click /* We can reselect an other item only if there are no item being edited
happened at a position other than where the selection was made. * because ALL moving functions use GetCurItem(),
We cannot call PcbGeneralLocateAndDisplay() when dragging a track because * therefore GetCurItem() must return the same item during moving.
editrack.cpp's void Exit_Editrack( WinEDA_DrawPanel* Panel, wxDC* DC ) * We know an item is moving if ( item && (item->m_Flags != 0)) is true
uses GetCurItem(), thinking it is an aborted track, yet after calling * and after calling PcbGeneralLocateAndDisplay(), GetCurItem() is any arbitrary BOARD_ITEM,
PcbGeneralLocateAndDisplay(), GetCurItem() is any arbitrary BOARD_ITEM, * not the current editen item.
not the aborted track.
*/ */
if( ShowNewTrackWhenMovingCursor != DrawPanel->ManageCurseur if ( ! item || (item->m_Flags == 0) )
&& ( !item || cursorPos != selectPos ) ) {
if( !item || cursorPos != selectPos ) // Filter
{ {
DrawPanel->m_AbortRequest = false; DrawPanel->m_AbortRequest = false;
item = PcbGeneralLocateAndDisplay(); item = PcbGeneralLocateAndDisplay();
...@@ -191,8 +191,7 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu ) ...@@ -191,8 +191,7 @@ bool WinEDA_PcbFrame::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
DrawPanel->CursorOn( &dc ); DrawPanel->CursorOn( &dc );
return false; return false;
} }
}
// SetCurItem( item ); no, PcbGeneralLocateAndDisplay() does this
} }
#else #else
......
/******************************************************/
/* Fonctions diverses (swap..) relatives au pistes */
/* et fonctions de test */
/******************************************************/
/* Fichier PCBPISTE.CPP */
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "pcbnew.h"
#include "autorout.h"
#include "protos.h"
/* Variables locales */
static int New_Layer[32];
enum swap_layer_id {
ID_SWAP_LAYER_EXECUTE = 1800,
ID_SWAP_LAYER_CANCEL,
ID_SWAP_LAYER_BUTTON_SELECT,
ID_SWAP_LAYER_DESELECT,
ID_SWAP_LAYER_SELECT
};
/***********************************************/
/* classe pour la frame de selection de layers */
/***********************************************/
class WinEDA_SwapLayerFrame : public wxDialog
{
private:
WinEDA_BasePcbFrame* m_Parent;
wxRadioBox* m_LayerList;
public:
// Constructor and destructor
WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame * parent );
~WinEDA_SwapLayerFrame() { };
private:
void Sel_Layer( wxCommandEvent& event );
void Cancel( wxCommandEvent& event );
void Execute( wxCommandEvent& event );
DECLARE_EVENT_TABLE()
};
/* Table des evenements pour WinEDA_SwapLayerFrame */
BEGIN_EVENT_TABLE( WinEDA_SwapLayerFrame, wxDialog )
EVT_BUTTON( ID_SWAP_LAYER_EXECUTE, WinEDA_SwapLayerFrame::Execute )
EVT_BUTTON( ID_SWAP_LAYER_CANCEL, WinEDA_SwapLayerFrame::Cancel )
EVT_BUTTON( ID_SWAP_LAYER_DESELECT, WinEDA_SwapLayerFrame::Sel_Layer )
EVT_BUTTON( ID_SWAP_LAYER_BUTTON_SELECT, WinEDA_SwapLayerFrame::Sel_Layer )
EVT_RADIOBOX( ID_SWAP_LAYER_SELECT, WinEDA_SwapLayerFrame::Sel_Layer )
END_EVENT_TABLE()
WinEDA_SwapLayerFrame::WinEDA_SwapLayerFrame( WinEDA_BasePcbFrame* parent ) :
wxDialog( parent, -1, _( "Swap Layers:" ), wxPoint( -1, -1 ),
wxSize( 470, 450 ), DIALOG_STYLE )
{
#define START_Y 15
wxButton* Button;
int ii;
wxPoint pos;
wxString g_Layer_Name_Pair[32];
wxSize winsize;
m_Parent = parent;
SetFont( *g_DialogFont );
for( ii = 0; ii < NB_LAYERS; ii++ )
{
g_Layer_Name_Pair[ii] = ReturnPcbLayerName( ii ) + wxT( " -> " ) + _( "No Change" );
}
pos.x = 5; pos.y = START_Y;
m_LayerList = new wxRadioBox( this, ID_SWAP_LAYER_SELECT, _( "Layers" ),
pos, wxSize( -1,
-1 ), 29, g_Layer_Name_Pair, 16, wxRA_SPECIFY_ROWS );
winsize.y = m_LayerList->GetRect().GetBottom();
pos.x = m_LayerList->GetRect().GetRight() + 12;
Button = new wxButton( this, ID_SWAP_LAYER_CANCEL,
_( "Cancel" ), pos );
Button->SetForegroundColour( *wxRED );
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
pos.y += Button->GetSize().y + 5;
Button = new wxButton( this, ID_SWAP_LAYER_EXECUTE,
_( "OK" ), pos );
Button->SetForegroundColour( *wxBLUE );
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
pos.y += Button->GetSize().y + 15;
Button = new wxButton( this, ID_SWAP_LAYER_DESELECT,
_( "Deselect" ), pos );
Button->SetForegroundColour( wxColour( 0, 100, 0 ) );
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
pos.y += Button->GetSize().y + 5;
Button = new wxButton( this, ID_SWAP_LAYER_BUTTON_SELECT,
_( "Select" ), pos );
Button->SetForegroundColour( wxColour( 0, 100, 100 ) );
winsize.x = MAX( winsize.x, Button->GetRect().GetRight() );
winsize.x += 10; winsize.y += 10;
SetClientSize( winsize );
}
/***************************************************************/
void WinEDA_SwapLayerFrame::Sel_Layer( wxCommandEvent& event )
/***************************************************************/
{
int ii, jj;
ii = m_LayerList->GetSelection();
switch( event.GetId() )
{
case ID_SWAP_LAYER_DESELECT:
if( New_Layer[ii] != -1 )
{
New_Layer[ii] = -1;
m_LayerList->SetString( ii, ReturnPcbLayerName( ii ) +
+ wxT( " -> " ) + _( "No Change" ) );
}
break;
case ID_SWAP_LAYER_BUTTON_SELECT:
case ID_SWAP_LAYER_SELECT:
jj = m_Parent->SelectLayer( ii, -1, -1 );
if( (jj < 0) || (jj >= 29) )
return;
if( ii != jj )
{
New_Layer[ii] = jj;
m_LayerList->SetString( ii,
ReturnPcbLayerName( ii ) + wxT( " -> " ) +
ReturnPcbLayerName( jj ) );
}
break;
}
}
/*********************************************************/
void WinEDA_SwapLayerFrame::Cancel( wxCommandEvent& event )
/*********************************************************/
{
EndModal( -1 );
}
/*********************************************************/
void WinEDA_SwapLayerFrame::Execute( wxCommandEvent& event )
/*********************************************************/
{
EndModal( 1 );
}
/********************************************************/
void WinEDA_PcbFrame::Swap_Layers( wxCommandEvent& event )
/********************************************************/
/* Swap layers */
{
int ii, jj;
TRACK* pt_segm;
DRAWSEGMENT* pt_drawsegm;
EDA_BaseStruct* PtStruct;
/* Init default values */
for( ii = 0; ii < 32; ii++ )
New_Layer[ii] = -1;
WinEDA_SwapLayerFrame* frame = new WinEDA_SwapLayerFrame( this );
ii = frame->ShowModal(); frame->Destroy();
if( ii != 1 )
return;
/* Modifications des pistes */
pt_segm = (TRACK*) m_Pcb->m_Track;
for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
{
m_CurrentScreen->SetModify();
if( pt_segm->Type() == TYPEVIA )
{
SEGVIA* Via = (SEGVIA*) pt_segm;
if( Via->Shape() == VIA_NORMALE )
continue;
int top_layer, bottom_layer;
Via->ReturnLayerPair( &top_layer, &bottom_layer );
if( New_Layer[bottom_layer] >= 0 )
bottom_layer = New_Layer[bottom_layer];
if( New_Layer[top_layer] >= 0 )
top_layer = New_Layer[top_layer];
Via->SetLayerPair( top_layer, bottom_layer );
}
else
{
jj = pt_segm->m_Layer;
if( New_Layer[jj] >= 0 )
pt_segm->m_Layer = New_Layer[jj];
}
}
/* Modifications des zones */
pt_segm = (TRACK*) m_Pcb->m_Zone;
for( ; pt_segm != NULL; pt_segm = (TRACK*) pt_segm->Pnext )
{
m_CurrentScreen->SetModify();
jj = pt_segm->m_Layer;
if( New_Layer[jj] >= 0 )
pt_segm->m_Layer = New_Layer[jj];
}
/* Modifications des autres segments */
PtStruct = m_Pcb->m_Drawings;
for( ; PtStruct != NULL; PtStruct = PtStruct->Pnext )
{
if( PtStruct->Type() == TYPEDRAWSEGMENT )
{
m_CurrentScreen->SetModify();
pt_drawsegm = (DRAWSEGMENT*) PtStruct;
jj = pt_drawsegm->m_Layer;
if( New_Layer[jj] >= 0 )
pt_drawsegm->m_Layer = New_Layer[jj];
}
}
DrawPanel->Refresh( TRUE );
}
/*********************************************************/
void WinEDA_PcbFrame::Liste_Equipot( wxCommandEvent& event )
/*********************************************************/
{
EQUIPOT* Equipot;
wxString msg;
WinEDA_TextFrame* List;
int ii, jj;
msg = wxT( "*" );
Get_Message( _( "Filter for net names:" ), msg, this );
if( msg.IsEmpty() )
return;
List = new WinEDA_TextFrame( this, _( "List Nets" ) );
Equipot = (EQUIPOT*) m_Pcb->m_Equipots;
for( ; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Pnext )
{
wxString Line;
/* calcul adr relative du nom de la pastille reference de la piste */
if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) )
continue;
Line.Printf( wxT( "net_code = %3.3d [%.16s] " ), Equipot->m_NetCode,
Equipot->m_Netname.GetData() );
List->Append( Line );
}
ii = List->ShowModal(); List->Destroy();
if( ii < 0 )
return;
/* Recherche du numero de net rellement selectionn */
Equipot = (EQUIPOT*) m_Pcb->m_Equipots;
for( jj = 0; Equipot != NULL; Equipot = (EQUIPOT*) Equipot->Pnext )
{
/* calcul adr relative du nom de la pastille reference de la piste */
if( !WildCompareString( msg, Equipot->m_Netname, FALSE ) )
continue;
if( ii == jj )
{
ii = Equipot->m_NetCode;
break;
}
jj++;
}
wxClientDC dc( DrawPanel );
DrawPanel->PrepareGraphicContext( &dc );
if( g_HightLigt_Status )
Hight_Light( &dc );
g_HightLigth_NetCode = ii;
Hight_Light( &dc );
}
/************************************/ /***********************/
/**** editeur de PCB ****/ /**** ratsnest.cpp ****/
/* traitement du Chevelu (Rastnest) */ /* Ratsnets functions */
/************************************/ /***********************/
/* Fichier RATSNEST.CPP */
#include "fctsys.h" #include "fctsys.h"
#include "gr_basic.h" #include "gr_basic.h"
...@@ -14,38 +12,109 @@ ...@@ -14,38 +12,109 @@
#include "protos.h" #include "protos.h"
/* variables locales */ /* exported variables */
CHEVELU* g_pt_chevelu; CHEVELU* g_pt_chevelu;
CHEVELU* local_liste_chevelu; // adresse de base du buffer des chevelus locaux CHEVELU* local_liste_chevelu; // Buffer address for local ratsnest
int nb_local_chevelu; // nbr de links du module en deplacement // (ratnest relative to one footprint while moving it
int nb_pads_ref; // nbr de nodes du module en deplacement int nb_local_chevelu; // link count (active ratnest count) for the footprint beeing moved
int nb_pads_externes; // nbr de pads connectes au module en deplacement
bool DisplayRastnestInProgress; // autorise affichage chevelu en cours de calcul /* local variables */
// de celui-ci static int nb_pads_ref; // node count (node = pad with a net code) for the footprint beeing moved
static int nb_pads_externes; // Connected pads count ( pads which are
// in other footprints and connected to a pad of the footprint beeing moved
static bool DisplayRastnestInProgress; // Enable the display of the ratsnest during the ratsnest computations
/* Note about the ratsnest computation:
* Building the general ratsnest:
* I used the "lee algoritm".
* This is a 2 steps algoritm.
* the m_logical_connexion member of pads handle a "block number" or a "cluster number"
* initially, m_logical_connexion = 0 (pad not connected).
* Build_Board_Ratsnest( wxDC* DC ) Create this rastnest
* for each net:
* First:
* we create links (and therefore a logical block) between 2 pad. This is achieved by:
* search for a pad without link.
* search its nearest pad
* link these 2 pads (i.e. create a ratsnest item)
* the pads are grouped in a logical block ( a cluster).
* until no pad without link found.
* Each logical block has a number called block number,
* stored in m_logical_connexion member for each pad of the block.
* The first block has its block number = 1, the second is 2 ...
* the function to do thas is gen_rats_pad_to_pad()
*
* Secondly:
* The first pass created many logical blocks
* A block contains 2 or more pads.
* we create links between 2 block. This is achieved by:
* Test all pads in the first block, and search (for each pad)
* a neighboor in other blocks and compute the distance between pads,
* We select the pad pair which have the smallest distance.
* These 2 pads are linked (i.e. a new ratsnest item is created between thes 2 pads)
* and the 2 block are merged.
* Therefore the logical block 1 contains the initial block 1 "eats" the pads of the other block
* The computation is made until only one block is found.
* the function used is gen_rats_block_to_block()
*
*
* How existing and new tracks are handled:
* The complete rastnest (using the pad analysis) is computed.
* it is independant of the tracks and handle the "logical connections".
* It depends only on the footprints geometry (and the netlist),
* and must be computed only after a netlist read or a footprints geometry change.
* Each link (ratsnest) can only be INACTIVE (because pads are connected by a track) or ACTIVE (no tracks)
*
* After the complete rastnest is built, or when a track is added or deleted,
* we run an algorithm derived from the complete rastnest computation.
* it is much faster because it analyses only the existing rastnest and not all the pads list
* and determine only if an existing rastnest must be activated
* (no physical track exists) or not (a physical track exists)
* if a track is added or deleted only the corresponding net is tested.
*
* the m_logical_connexion member of pads is set to 0 (no blocks), and alls links are set to INACTIVE (ratsnest not show).
* Before running this fast lee algorithm, we create blocks (and their corresponding block number)
* by grouping pads connected by tracks.
* So, when tracks exists, the fast lee algorithm is started with some blocks already created.
* because the fast lee algorithm test only the ratsnest and does not search for
* nearest pads (this search was previously made) the online ratsnest can be done
* when a track is created without noticeable computing time
* First:
* for all links (in this step, all are inactive):
* search for a link which have 1 (or 2) pad having the m_logical_connexion member = 0.
* if found the link is set to ACTIVE (i.e. the ratsnest will be showed) and the pad is meged with the block
* or a new block is created ( see tst_rats_pad_to_pad() ).
* Secondly:
* blocks are tested:
* for all links we search if the 2 pads linkeds are in 2 different block.
* if yes, the link status is set to ACTIVE, and the 2 block are merged
* until only one block is found
* ( see tst_rats_block_to_block() )
*
*
*/
/******************************************************************************/ /******************************************************************************/
void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb ) void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb )
/******************************************************************************/ /******************************************************************************/
/* /*
* Génère le chevelu complet de la carte. * Create the entire board ratsnesr.
* Doit etre appelé APRES le calcul de connectivité * Msut be called AFTER the connectivity computation
* Doit etre appelé apres changement de structure de la carte (modif * Must be called after a board change (changes for
* de pads, de nets, de modules). * pads, footprints or a read netlist ).
* *
* Si display_status_pcb : affichage des résultats en bas d'ecran * if display_status_pcb != 0 : Display the computation results
*/ */
{ {
wxString msg; wxString msg;
DisplayRastnestInProgress = TRUE; DisplayRastnestInProgress = TRUE;
/* construction de la liste des coordonnées des pastilles */ /* Create the sorted pad list */
m_Pcb->m_Status_Pcb = 0; /* réinit total du calcul */ m_Pcb->m_Status_Pcb = 0; /* we want a full ratnest computation, from the scratch */
build_liste_pads(); build_liste_pads();
MsgPanel->EraseMsgBox(); /* effacement du bas d'ecran */ MsgPanel->EraseMsgBox();
msg.Printf( wxT( " %d" ), m_Pcb->m_NbPads ); msg.Printf( wxT( " %d" ), m_Pcb->m_NbPads );
Affiche_1_Parametre( this, 1, wxT( "pads" ), msg, RED ); Affiche_1_Parametre( this, 1, wxT( "pads" ), msg, RED );
...@@ -55,14 +124,24 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb ) ...@@ -55,14 +124,24 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb )
reattribution_reference_piste( display_status_pcb ); reattribution_reference_piste( display_status_pcb );
Build_Board_Ratsnest( DC ); /* calcul du chevelu general */ /* Compute the full ratsnest
* which can be see like all the possible links or logical connections.
* some of thems are active (no track connected) and others are inactive (when track connect pads)
* This full ratsnest is not modified by track editing.
* It change only when a netlist is read, or footprints are modified
*/
Build_Board_Ratsnest( DC );
test_connexions( DC ); /* determine les blocks de pads connectés par /* Compute the pad connections due to the existing tracks (physical connections)*/
* les pistes existantes */ test_connexions( DC );
Tst_Ratsnest( DC, 0 ); /* calcul du chevelu actif */ /* Compute the active ratsnest, i.e. the unconnected links
* it is faster than Build_Board_Ratsnest()
* because many optimisations and computations are already made
*/
Tst_Ratsnest( DC, 0 );
// Reaffichage des chevelus actifs // Redraw the active ratsnest ( if enabled )
if( g_Show_Ratsnest ) if( g_Show_Ratsnest )
DrawGeneralRatsnest( DC, 0 ); DrawGeneralRatsnest( DC, 0 );
...@@ -74,7 +153,10 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb ) ...@@ -74,7 +153,10 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb )
/*****************************************************************/ /*****************************************************************/
static int tri_par_net( const void* o1, const void* o2 ) static int tri_par_net( const void* o1, const void* o2 )
/****************************************************************/ /****************************************************************/
/* routine utilisee par la foncion QSORT */
/* Sort function used by QSORT
* Sort pads by net code
*/
{ {
LISTE_PAD* pt_ref = (LISTE_PAD*) o1; LISTE_PAD* pt_ref = (LISTE_PAD*) o1;
LISTE_PAD* pt_compare = (LISTE_PAD*) o2; LISTE_PAD* pt_compare = (LISTE_PAD*) o2;
...@@ -86,7 +168,10 @@ static int tri_par_net( const void* o1, const void* o2 ) ...@@ -86,7 +168,10 @@ static int tri_par_net( const void* o1, const void* o2 )
/********************************************************/ /********************************************************/
static int sort_by_length( const void* o1, const void* o2 ) static int sort_by_length( const void* o1, const void* o2 )
/********************************************************/ /********************************************************/
/* routine de tri par longueur des chevelus utilisee par la foncion QSORT */
/* Sort function used by QSORT
* Sort ratsnest by lenght
*/
{ {
CHEVELU* ref = (CHEVELU*) o1; CHEVELU* ref = (CHEVELU*) o1;
CHEVELU* compare = (CHEVELU*) o2; CHEVELU* compare = (CHEVELU*) o2;
...@@ -100,20 +185,20 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -100,20 +185,20 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
LISTE_PAD* pt_liste_pad, LISTE_PAD* pt_limite, int* nblinks ) LISTE_PAD* pt_liste_pad, LISTE_PAD* pt_limite, int* nblinks )
/*****************************************************************************/ /*****************************************************************************/
/* /**
* Routine utilisee par Build_Board_Ratsnest() * Function used by Build_Board_Ratsnest()
* Routine generant le chevelu entre 2 blocks ( supposes du meme net ) * This function creates a rastsnet between two blocks ( which fit the same net )
* la recherche est faite entre les pads du block 1 et les autres blocks * A block is a group of pads already linked (by a previous ratsnest computation, or tracks)
* le block n ( n > 1 ) est alors connecte au block 1 par leur 2 pads * The search is made between the pads in block 1 (the reference block) and other blocks
* les plus proches. * the block n ( n > 1 ) it connected to block 1 by their 2 nearest pads.
* Entree : * When the block is found, it is merged with the block 1
* pt_chain_pad = adresse de debut de recherche * the D_PAD member m_logical_connexion handles the block number
* pt_limite = adresse de fin de recherche (borne non comprise) * @param pt_liste_pad = starting address (within the pad list) for search
* Sortie: * @param pt_limite = ending address (within the pad list) for search
* liste des chevelus ( structures) * return in global variables:
* mise a jour de g_pt_chevelu a la 1ere case libre * ratsnest list in buffer
* Retourne: * g_pt_chevelu updated to the first free memory location
* nombre de blocks non connectes entre eux * @return blocks not connected count
*/ */
{ {
int dist_min, current_dist; int dist_min, current_dist;
...@@ -132,14 +217,16 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -132,14 +217,16 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
if( DC ) if( DC )
GRSetDrawMode( DC, GR_XOR ); GRSetDrawMode( DC, GR_XOR );
/* Recherche du pad le plus proche du block 1 */ /* Search the nearest pad from block 1 */
for( ; pt_liste_pad < pt_limite; pt_liste_pad++ ) for( ; pt_liste_pad < pt_limite; pt_liste_pad++ )
{ {
D_PAD* ref_pad = *pt_liste_pad; D_PAD* ref_pad = *pt_liste_pad;
/* search a pad which is in the block 1 */
if( ref_pad->m_logical_connexion != 1 ) if( ref_pad->m_logical_connexion != 1 )
continue; continue;
/* pad is found, search its nearest neighbour in other blocks */
for( pt_liste_pad_aux = pt_start_liste; ; pt_liste_pad_aux++ ) for( pt_liste_pad_aux = pt_start_liste; ; pt_liste_pad_aux++ )
{ {
D_PAD* curr_pad = *pt_liste_pad_aux; D_PAD* curr_pad = *pt_liste_pad_aux;
...@@ -147,15 +234,17 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -147,15 +234,17 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
if( pt_liste_pad_aux >= pt_limite ) if( pt_liste_pad_aux >= pt_limite )
break; break;
if( curr_pad->m_logical_connexion == 1 ) if( curr_pad->m_logical_connexion == 1 ) // not in an other block
continue; continue;
/* Comparaison des distances des pastilles (calcul simplifie) */ /* Compare distance between pads ("Manhattan" distance) */
current_dist = abs( curr_pad->m_Pos.x - ref_pad->m_Pos.x ) + current_dist = abs( curr_pad->m_Pos.x - ref_pad->m_Pos.x ) +
abs( curr_pad->m_Pos.y - ref_pad->m_Pos.y ); abs( curr_pad->m_Pos.y - ref_pad->m_Pos.y );
if( dist_min > current_dist ) if( dist_min > current_dist ) // we have found a better pad pair
{ {
// The tested block can be a good candidate for merging
// we memorise the "best" current values for merging
current_num_block = curr_pad->m_logical_connexion; current_num_block = curr_pad->m_logical_connexion;
dist_min = current_dist; dist_min = current_dist;
pt_liste_pad_tmp = pt_liste_pad_aux; pt_liste_pad_tmp = pt_liste_pad_aux;
...@@ -164,9 +253,16 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -164,9 +253,16 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
} }
} }
if( current_num_block > 1 ) /* le block n a ete connecte au bloc 1 */ /* The reference block is labelled block 1.
* if current_num_block != 1 we have found an other block, and we must merge it
* with the reference block
* The link is made by the 2 nearest pads
*/
if( current_num_block > 1 )
{ {
/* le block n est fondu avec le bloc 1 : */ /* The block n is merged with the bloc 1 :
* to do that, we set the m_logical_connexion member to 1 for all pads in block n
*/
for( pt_liste_pad = pt_start_liste; pt_liste_pad < pt_limite; pt_liste_pad++ ) for( pt_liste_pad = pt_start_liste; pt_liste_pad < pt_limite; pt_liste_pad++ )
{ {
if( (*pt_liste_pad)->m_logical_connexion == current_num_block ) if( (*pt_liste_pad)->m_logical_connexion == current_num_block )
...@@ -175,6 +271,7 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -175,6 +271,7 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
pt_liste_pad = pt_liste_pad_block1; pt_liste_pad = pt_liste_pad_block1;
/* Create the new ratsnet */
(*nblinks)++; (*nblinks)++;
g_pt_chevelu->SetNet( (*pt_liste_pad)->GetNet() ); g_pt_chevelu->SetNet( (*pt_liste_pad)->GetNet() );
g_pt_chevelu->status = CH_ACTIF | CH_VISIBLE; g_pt_chevelu->status = CH_ACTIF | CH_VISIBLE;
...@@ -201,25 +298,26 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -201,25 +298,26 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
LISTE_PAD* pt_limite, int current_num_block, int* nblinks ) LISTE_PAD* pt_limite, int current_num_block, int* nblinks )
/*****************************************************************************/ /*****************************************************************************/
/* /**
* Routine utilisee par Build_Board_Ratsnest() * Function used by Build_Board_Ratsnest()
* Routine generant le chevelu entre 2 pads ( supposes du meme net ) * this is the first pass of the lee algorithm
* la routine connecte 1 pad non deja connecte a un autre et crée donc un certqins nombre * This function creates the link (ratsnest) between 2 pads ( fitting the same net )
* de blocks de pads liées par un chevelu * the function search for a first not connected pad
* Ces blocks sont donc constitués de 2 pads. * and search its nearest neighboor
* Its creates a block if the 2 pads are not connected, or merge the unconnected pad to the existing block.
* These blocks include 2 pads and the 2 pads are linked by a ratsnest.
* *
* Entree : * @param pt_liste_pad = starting address in the pad buffer
* pt_chain_pad = adresse de debut de recherche * @param pt_limite = ending address
* pt_limite = adresse de fin de recherche (borne non comprise) * @param current_num_block = Last existing block number de pads
* current_num_block = numero du dernier block de pads (constitué par les connexions * These block are created by the existing tracks analysis
* de pistes existantes
* *
* Sortie: * output:
* liste des chevelus ( structures) * Ratsnest list
* mise a jour de g_pt_chevelu a la 1ere case libre * g_pt_chevelu updated to the first free memory address
* *
* Retourne: * @return:
* nombre de blocks crees (paquets de pads) * last block number used
*/ */
{ {
int dist_min, current_dist; int dist_min, current_dist;
...@@ -238,7 +336,7 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -238,7 +336,7 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
ref_pad = *pt_liste_pad; ref_pad = *pt_liste_pad;
if( ref_pad->m_logical_connexion ) if( ref_pad->m_logical_connexion )
continue; // Pad deja connecte continue; // Pad already connected
pt_liste_pad_tmp = NULL; pt_liste_pad_tmp = NULL;
dist_min = 0x7FFFFFFF; dist_min = 0x7FFFFFFF;
...@@ -253,7 +351,7 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -253,7 +351,7 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
pad = *pt_liste_pad_aux; pad = *pt_liste_pad_aux;
/* Comparaison des distances des pastilles (calcul simplifie) */ /* Compare distance between pads ("Manhattan" distance) */
current_dist = abs( pad->m_Pos.x - ref_pad->m_Pos.x ) + current_dist = abs( pad->m_Pos.x - ref_pad->m_Pos.x ) +
abs( pad->m_Pos.y - ref_pad->m_Pos.y ); abs( pad->m_Pos.y - ref_pad->m_Pos.y );
...@@ -268,15 +366,16 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -268,15 +366,16 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
{ {
pad = *pt_liste_pad_tmp; pad = *pt_liste_pad_tmp;
/* Mise a jour du numero de block ( ou de sous graphe ) */ /* Update the block number
/* si aucun des 2 pads n'est deja connecte : creation d'un nouveau block */ * if the 2 pads are not already created : a new block is created
*/
if( (pad->m_logical_connexion == 0) && (ref_pad->m_logical_connexion == 0) ) if( (pad->m_logical_connexion == 0) && (ref_pad->m_logical_connexion == 0) )
{ {
current_num_block++; current_num_block++;
pad->m_logical_connexion = current_num_block; pad->m_logical_connexion = current_num_block;
ref_pad->m_logical_connexion = current_num_block; ref_pad->m_logical_connexion = current_num_block;
} }
/* si 1 des 2 pads est deja connecte : mise a jour pour l'autre */ /* If a pad is already connected connected : merge the other pad in the block */
else else
{ {
ref_pad->m_logical_connexion = pad->m_logical_connexion; ref_pad->m_logical_connexion = pad->m_logical_connexion;
...@@ -309,30 +408,29 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -309,30 +408,29 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
/***********************************************************/ /***********************************************************/
/* Routine de calcul du chevelu complet du circuit (algorithme de LEE ) /** Function to compute the full ratsnest (using the LEE algorithm )
* les connexions physiques (pistes) ne sont pas ici prises en compte * In the functions tracks are not considered
* Il s'agit donc du chevelu de base qui ne depend que de la disposition des pads. * This is only the "basic" ratsnest depending only on pads.
* *
* - etablit la liste complete des pads si nécessaire * - Create the sorted pad list (if necessary)
* les pads utiles (cad appartenant a un net ) sont appeles * The active pads (i.e included in a net ) are called nodes
* nodes (noeuds) * This pad list is sorted by net codes
* et la trie par blocs de pads homogenes ( i.e. appartenant au meme net )
* *
* - puis calcule le ratsnest selon l'algorithme de LEE, consistant a * - Compute the ratsnest (LEE algorithm ):
* a - etablir le ratsnest entre 1 pad non "connecte" et son plus proche * a - Create the ratsnest between a not connected pad and its nearest
* voisin. Ceci cree des "blocks" ou sous graphes non connectes entre * neighbour. Blocks of pads are created
* eux * b - Create the ratsnest between blocks:
* b - "connecter" (par un chevelu) entre eux ces blocks en prenant le 1er block et * Test the pads of the 1st block and create a link (ratsnest)
* en le connectant a son plus proche voisin par les 2 pads les plus * with the nearest pad found in an other block.
* proches (Iteration jusqu'a ce qu'il n'y ait plus qu'un seul block). * Thi other block is merged with the first block.
* until only one block is left.
* *
* les chevelus calculés montrent les connexions "logiques" * A ratnest can be seen as a logical connection.
* *
* Entree = adr du buffer de classement (usuellement buf_work) * Update :
* met a jour : * nb_nodes = Active pads count for the board
* nb_nodes = nombre de pads connectes a un net ( pads "utiles") * nb_links = link count for the board (logical connection count)
* nb_links = nombre min de liens : * (there are n-1 links for an equipotent which have n active pads) .
* il y a n-1 liens par equipotentielle comportant n pads.
* *
*/ */
{ {
...@@ -349,7 +447,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -349,7 +447,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
if( m_Pcb->m_NbPads == 0 ) if( m_Pcb->m_NbPads == 0 )
return; return;
/* Etablissement de la liste des pads et leur net_codes si necessaire */ /* Created pad list and the net_codes if needed */
if( (m_Pcb->m_Status_Pcb & NET_CODES_OK) == 0 ) if( (m_Pcb->m_Status_Pcb & NET_CODES_OK) == 0 )
recalcule_pad_net_code(); recalcule_pad_net_code();
...@@ -360,13 +458,13 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -360,13 +458,13 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
pad->m_logical_connexion = 0; pad->m_logical_connexion = 0;
} }
/* classement des pointeurs sur pads par nets */ /* Sort the pad list by nets */
qsort( m_Pcb->m_Pads, m_Pcb->m_NbPads, sizeof(LISTE_PAD), tri_par_net ); qsort( m_Pcb->m_Pads, m_Pcb->m_NbPads, sizeof(LISTE_PAD), tri_par_net );
/* Allocation memoire du buffer des chevelus: il y a nb_nodes - 1 chevelu /* Allocate memory for buffer ratsnest: there are nb_nodes - 1 ratsnest
* au maximum ( 1 node = 1 pad connecte ). * maximum ( 1 node = 1 active pad ).
* on alloue donc un buffer pour nb_nodes chevelus... (+ une petite marge) * Meory is allocated for nb_nodes ratsnests... (+ a bit more, just in case)
* le nombre reel de chevelus est nb_links * The real ratsnests count nb_links < nb_nodes
*/ */
if( m_Pcb->m_Ratsnest ) if( m_Pcb->m_Ratsnest )
MyFree( m_Pcb->m_Ratsnest ); MyFree( m_Pcb->m_Ratsnest );
...@@ -380,7 +478,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -380,7 +478,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
return; return;
/* calcul du chevelu */ /* Ratsnest computation */
DisplayRastnestInProgress = TRUE; DisplayRastnestInProgress = TRUE;
g_pt_chevelu = m_Pcb->m_Ratsnest; g_pt_chevelu = m_Pcb->m_Ratsnest;
pt_liste_pad = pt_start_liste = m_Pcb->m_Pads; pt_liste_pad = pt_start_liste = m_Pcb->m_Pads;
...@@ -393,13 +491,13 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -393,13 +491,13 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
{ {
pt_deb_liste_ch = g_pt_chevelu; pt_deb_liste_ch = g_pt_chevelu;
pad = *pt_liste_pad; pad = *pt_liste_pad;
/* saut des pads non connectes */ /* Skip the not connected pads */
if( pad->GetNet() == 0 ) if( pad->GetNet() == 0 )
{ {
pt_liste_pad++; pt_start_liste = pt_liste_pad; pt_liste_pad++; pt_start_liste = pt_liste_pad;
continue; continue;
} }
/* Recherche de la fin de la liste des pads du net courant */ /* Search the end of pad list des pads for the current net */
num_block = pad->m_logical_connexion; num_block = pad->m_logical_connexion;
nbpads = 0; nbpads = 0;
for( pt_end_liste = pt_liste_pad + 1; ; pt_end_liste++ ) for( pt_end_liste = pt_liste_pad + 1; ; pt_end_liste++ )
...@@ -416,7 +514,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -416,7 +514,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
m_Pcb->m_NbLinks += nbpads; m_Pcb->m_NbLinks += nbpads;
/* fin de liste trouvee: calcul du chevelu du net "net_code" */ /* End of list found: Compute the ratsnest relative to the current net "net_code" */
equipot = m_Pcb->FindNet( current_net_code ); equipot = m_Pcb->FindNet( current_net_code );
if( equipot == NULL ) if( equipot == NULL )
DisplayError( this, wxT( "Gen ratsnest err: NULL equipot" ) ); DisplayError( this, wxT( "Gen ratsnest err: NULL equipot" ) );
...@@ -429,11 +527,11 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -429,11 +527,11 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
equipot->m_RatsnestStart = g_pt_chevelu; equipot->m_RatsnestStart = g_pt_chevelu;
} }
/* a - connexion des pads entre eux */ /* a - first pass : create the blocks from "not in block" pads */
ii = gen_rats_pad_to_pad( DrawPanel, DC, pt_start_liste, ii = gen_rats_pad_to_pad( DrawPanel, DC, pt_start_liste,
pt_end_liste, num_block, &noconn ); pt_end_liste, num_block, &noconn );
/* b - connexion des blocks formes precedemment (Iteration) */ /* b - blocks connection (Iteration) */
while( ii > 1 ) while( ii > 1 )
{ {
ii = gen_rats_block_to_block( DrawPanel, DC, pt_liste_pad, ii = gen_rats_block_to_block( DrawPanel, DC, pt_liste_pad,
...@@ -443,7 +541,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -443,7 +541,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
if( equipot ) if( equipot )
{ {
equipot->m_RatsnestEnd = g_pt_chevelu; equipot->m_RatsnestEnd = g_pt_chevelu;
/* classement des chevelus par longueur croissante */ /* sort by lenght */
qsort( equipot->m_RatsnestStart, qsort( equipot->m_RatsnestStart,
equipot->m_RatsnestEnd - equipot->m_RatsnestStart, equipot->m_RatsnestEnd - equipot->m_RatsnestStart,
sizeof(CHEVELU), sizeof(CHEVELU),
...@@ -459,7 +557,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -459,7 +557,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
m_Pcb->m_Status_Pcb |= LISTE_CHEVELU_OK; m_Pcb->m_Status_Pcb |= LISTE_CHEVELU_OK;
adr_lowmem = buf_work; adr_lowmem = buf_work;
// Effacement du chevelu calcule // erase the ratsnest displayed on screen if needed
CHEVELU* Chevelu = (CHEVELU*) m_Pcb->m_Ratsnest; CHEVELU* Chevelu = (CHEVELU*) m_Pcb->m_Ratsnest;
GRSetDrawMode( DC, GR_XOR ); GRSetDrawMode( DC, GR_XOR );
for( ii = m_Pcb->GetNumRatsnests(); ii > 0; ii--, Chevelu++ ) for( ii = m_Pcb->GetNumRatsnests(); ii > 0; ii--, Chevelu++ )
...@@ -479,7 +577,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) ...@@ -479,7 +577,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
void WinEDA_BasePcbFrame::ReCompile_Ratsnest_After_Changes( wxDC* DC ) void WinEDA_BasePcbFrame::ReCompile_Ratsnest_After_Changes( wxDC* DC )
/**********************************************************************/ /**********************************************************************/
/* recompile rastnest afet am module move, delete, .. /* recompile rastnest after a module move, delete, ..
*/ */
{ {
if( g_Show_Ratsnest && DC ) if( g_Show_Ratsnest && DC )
...@@ -491,10 +589,10 @@ void WinEDA_BasePcbFrame::ReCompile_Ratsnest_After_Changes( wxDC* DC ) ...@@ -491,10 +589,10 @@ void WinEDA_BasePcbFrame::ReCompile_Ratsnest_After_Changes( wxDC* DC )
void WinEDA_BasePcbFrame::DrawGeneralRatsnest( wxDC* DC, int net_code ) void WinEDA_BasePcbFrame::DrawGeneralRatsnest( wxDC* DC, int net_code )
/*********************************************************************/ /*********************************************************************/
/* /**
* Affiche le chevelu general du circuit * Displays the general ratsnest
* Affiche les chevelus dont le bit CH_VISIBLE du status du chevelu est a 1 * Only ratsnets with the status bit CH_VISIBLE is set are displayed
* Si net_code > 0, affichage des seuls chevelus de net_code correspondant * @param netcode if > 0, Display only the ratsnest relative to the correponding net_code
*/ */
{ {
int ii; int ii;
...@@ -534,35 +632,35 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -534,35 +632,35 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
CHEVELU* start_rat_list, CHEVELU* end_rat_list ) CHEVELU* start_rat_list, CHEVELU* end_rat_list )
/*****************************************************************************/ /*****************************************************************************/
/* /**
* Routine utilisee par Tst_Ratsnest() * Function used by Tst_Ratsnest()
* Routine tres proche de gen_rats_block_to_block(..) * Function like gen_rats_block_to_block(..)
* Routine testant le chevelu entre 2 blocks ( supposes du meme net ) * Function testing the ratsnest between 2 blocks ( same net )
* la recherche est faite entre les pads du block 1 et les autres blocks * The search is made between pads in block 1 and the others blocks
* le block n ( n > 1 ) est alors connecte au block 1 par le chevelu le plus court * The block n ( n > 1 ) is merged with block 1 by the smallest ratsnest
* A la différence de gen_rats_block_to_block(..), * Différence between gen_rats_block_to_block(..):
* l'analyse n'est pas faite pads a pads mais a travers la liste générale des chevelus. * The analysis is not made pads to pads but uses the general ratsnest list.
* La routine active alors le chevelu le plus court reliant le block 1 au block n * The function activate the smallest ratsnest between block 1 and the block n
* (etablissement d'une connexion "logique") * (activate a logical connexion)
* *
* Entree : * @param pt_liste_pad_start = adresse de debut de zone pad utile
* pt_chain_pad = adresse de debut de zone pad utile * pt_liste_pad_end = adresse de fin de zone pad
* pt_limite = adresse de fin de zone (borne non comprise) * start_rat_list = adresse de debut de zone ratsnest utile
* Sortie: * end_rat_list = adresse de fin de zone ratsnest
* Membre .state du chevelu sélectionné * output:
* Retourne: * .state member of the ratsnests
* nombre de blocks non connectes entre eux * @return blocks not connected count
*/ */
{ {
int current_num_block, min_block; int current_num_block, min_block;
LISTE_PAD* pt_liste_pad; LISTE_PAD* pt_liste_pad;
CHEVELU* chevelu, * min_chevelu; CHEVELU* chevelu, * min_chevelu;
/* Recherche du chevelu le plus court d'un block a un autre block */ /* Search a link from a blockto an other block */
min_chevelu = NULL; min_chevelu = NULL;
for( chevelu = start_rat_list; chevelu < end_rat_list; chevelu++ ) for( chevelu = start_rat_list; chevelu < end_rat_list; chevelu++ )
{ {
if( chevelu->pad_start->m_logical_connexion == chevelu->pad_end->m_logical_connexion ) if( chevelu->pad_start->m_logical_connexion == chevelu->pad_end->m_logical_connexion ) // Same block
continue; continue;
if( min_chevelu == NULL ) if( min_chevelu == NULL )
...@@ -574,6 +672,9 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -574,6 +672,9 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
if( min_chevelu == NULL ) if( min_chevelu == NULL )
return 1; return 1;
/* At this point we have found a link between 2 differents blocks (clusters) :
* we must set its status to ACTIVE and merge the 2 blocks
*/
min_chevelu->status |= CH_ACTIF; min_chevelu->status |= CH_ACTIF;
current_num_block = min_chevelu->pad_start->m_logical_connexion; current_num_block = min_chevelu->pad_start->m_logical_connexion;
min_block = min_chevelu->pad_end->m_logical_connexion; min_block = min_chevelu->pad_end->m_logical_connexion;
...@@ -581,7 +682,7 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -581,7 +682,7 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
if( min_block > current_num_block ) if( min_block > current_num_block )
EXCHG( min_block, current_num_block ); EXCHG( min_block, current_num_block );
/* les 2 blocks vont etre fondus */ /* Merging the 2 blocks in one cluster */
for( pt_liste_pad = pt_liste_pad_start; pt_liste_pad < pt_liste_pad_end; pt_liste_pad++ ) for( pt_liste_pad = pt_liste_pad_start; pt_liste_pad < pt_liste_pad_end; pt_liste_pad++ )
{ {
if( (*pt_liste_pad)->m_logical_connexion == current_num_block ) if( (*pt_liste_pad)->m_logical_connexion == current_num_block )
...@@ -600,25 +701,23 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -600,25 +701,23 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
CHEVELU* start_rat_list, CHEVELU* end_rat_list ) CHEVELU* start_rat_list, CHEVELU* end_rat_list )
/**********************************************************************/ /**********************************************************************/
/* /**
* Routine utilisee par Tst_Ratsnest_general() * Function used by Tst_Ratsnest_general()
* Routine Activant le chevelu entre 2 pads ( supposes du meme net ) * The general ratsnest list must exists
* la routine connecte 1 pad non deja connecte a un autre et active donc * Activates the ratsnest between 2 pads ( supposes du meme net )
* un certain nombre de blocks de pads liées par un chevelu * The function links 1 pad not already connected an other pad and activate
* Ces blocks sont donc constitués de 2 pads. * some blocks linked by a ratsnest
* Its test only the existing ratsnest and activate some ratsnest (status bit CH_ACTIF set)
* *
* Entree : * @param start_rat_list = starting address for the ratnest list
* pt_chain_pad = adresse de debut de zone pad * @param end_rat_list = ending address for the ratnest list
* pt_limite = adresse de fin de recherche (borne non comprise) * @param current_num_block = last block number (computed from the track analysis)
* current_num_block = numero du dernier block de pads (constitué par les connexions
* de pistes existantes
* *
* Sortie: * output:
* liste des chevelus ( structures) * ratsnest list (status member set)
* mise a jour du membre .state du chevelu activé * and pad list (m_logical_connexion set)
* *
* Retourne: * @return new block number
* nombre de blocks crees (paquets de pads)
*/ */
{ {
D_PAD* pad_start, * pad_end; D_PAD* pad_start, * pad_end;
...@@ -627,9 +726,9 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -627,9 +726,9 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
for( chevelu = start_rat_list; chevelu < end_rat_list; chevelu++ ) for( chevelu = start_rat_list; chevelu < end_rat_list; chevelu++ )
{ {
pad_start = chevelu->pad_start; pad_end = chevelu->pad_end; pad_start = chevelu->pad_start; pad_end = chevelu->pad_end;
/* Mise a jour du numero de block ( ou de sous graphe ) */
/* si aucun des 2 pads n'est deja connecte : creation d'un nouveau block */ /* Update the block if the 2 pads are not connected : a new block is created
*/
if( (pad_start->m_logical_connexion == 0) && (pad_end->m_logical_connexion == 0) ) if( (pad_start->m_logical_connexion == 0) && (pad_end->m_logical_connexion == 0) )
{ {
current_num_block++; current_num_block++;
...@@ -637,7 +736,7 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -637,7 +736,7 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
pad_end->m_logical_connexion = current_num_block; pad_end->m_logical_connexion = current_num_block;
chevelu->status |= CH_ACTIF; chevelu->status |= CH_ACTIF;
} }
/* si 1 des 2 pads est deja connecte : mise a jour pour l'autre */ /* If a pad is already connected : the other is merged in the current block */
else if( pad_start->m_logical_connexion == 0 ) else if( pad_start->m_logical_connexion == 0 )
{ {
pad_start->m_logical_connexion = pad_end->m_logical_connexion; pad_start->m_logical_connexion = pad_end->m_logical_connexion;
...@@ -658,9 +757,9 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC, ...@@ -658,9 +757,9 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode ) void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode )
/*******************************************************************/ /*******************************************************************/
/* calcul du chevelu actif /* Compute the active ratsnest
* Le chevelu général doit etre calculé * The general ratsnest list must exists
* Determite les chevelus ACTIFS dans la liste générale des chevelus * Compute the ACTIVE ratsnests in the general ratsnest list
*/ */
{ {
LISTE_PAD* pt_liste_pad; LISTE_PAD* pt_liste_pad;
...@@ -696,11 +795,11 @@ void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode ) ...@@ -696,11 +795,11 @@ void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode )
chevelu->status &= ~CH_ACTIF; chevelu->status &= ~CH_ACTIF;
} }
/* a - tst connexion des pads entre eux */ /* a - tst connection between pads */
ii = tst_rats_pad_to_pad( DrawPanel, DC, num_block, ii = tst_rats_pad_to_pad( DrawPanel, DC, num_block,
equipot->m_RatsnestStart, equipot->m_RatsnestEnd ); equipot->m_RatsnestStart, equipot->m_RatsnestEnd );
/* b - connexion des blocks formes precedemment (Iteration) */ /* b - test connexion between blocks (Iteration) */
while( ii > 1 ) while( ii > 1 )
{ {
ii = tst_rats_block_to_block( DrawPanel, DC, ii = tst_rats_block_to_block( DrawPanel, DC,
...@@ -722,7 +821,11 @@ void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode ) ...@@ -722,7 +821,11 @@ void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode )
/**************************************************************************/ /**************************************************************************/
int WinEDA_BasePcbFrame::Test_1_Net_Ratsnest( wxDC* DC, int ref_netcode ) int WinEDA_BasePcbFrame::Test_1_Net_Ratsnest( wxDC* DC, int ref_netcode )
/**************************************************************************/ /**************************************************************************/
/* Calcule le chevelu du net net_code */
/**
* Compute the rastnest relative to the net "net_code"
* @param ref_netcode = netcode used to compute the rastnest.
*/
{ {
DisplayRastnestInProgress = FALSE; DisplayRastnestInProgress = FALSE;
DrawGeneralRatsnest( DC, ref_netcode ); DrawGeneralRatsnest( DC, ref_netcode );
...@@ -737,11 +840,13 @@ int WinEDA_BasePcbFrame::Test_1_Net_Ratsnest( wxDC* DC, int ref_netcode ) ...@@ -737,11 +840,13 @@ int WinEDA_BasePcbFrame::Test_1_Net_Ratsnest( wxDC* DC, int ref_netcode )
void WinEDA_BasePcbFrame::recalcule_pad_net_code() void WinEDA_BasePcbFrame::recalcule_pad_net_code()
/*****************************************************/ /*****************************************************/
/* /**
* Calcule et met a jour les net_codes des PADS et des equipotentielles * Compute and update the net_codes for PADS et and equipots (.m_NetCode member)
* met a jour le buffer des equipotentielles * net_codes are >= 1 (net_code = 0 means not connected)
* A utiliser apres edition de nets sur un pad ou lecture d'une netliste * Update the equipotents buffer
* positionne a 1 le bit NET_CODE_OK du status_pcb; * Must be called after editing pads (netname, or deleting) or after read a netlist
* set to 1 flag NET_CODE_OK of m_Pcb->m_Status_Pcb;
* m_Pcb->m_NbNodes and m_Pcb->m_NbNets are updated
*/ */
{ {
LISTE_PAD* pad_ref, * pad_courant; LISTE_PAD* pad_ref, * pad_courant;
...@@ -750,7 +855,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() ...@@ -750,7 +855,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
EDA_BaseStruct* PtStruct; EDA_BaseStruct* PtStruct;
EQUIPOT** BufPtEquipot; EQUIPOT** BufPtEquipot;
/* construction de la liste des adr des PADS */ /* Build the PAD list */
build_liste_pads(); build_liste_pads();
/* calcul des net_codes des pads */ /* calcul des net_codes des pads */
...@@ -758,10 +863,11 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() ...@@ -758,10 +863,11 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
m_Pcb->m_NbNodes = 0; m_Pcb->m_NbNodes = 0;
m_Pcb->m_NbNets = 0; m_Pcb->m_NbNets = 0;
/* search for differents netnames, and create a netcode for each netname */
pad_courant = m_Pcb->m_Pads; pad_courant = m_Pcb->m_Pads;
for( ; ii > 0; pad_courant++, ii-- ) for( ; ii > 0; pad_courant++, ii-- )
{ {
if( (*pad_courant)->m_Netname.IsEmpty() ) // pad non connecte if( (*pad_courant)->m_Netname.IsEmpty() ) // pad not connected
{ {
(*pad_courant)->SetNet( 0 ); (*pad_courant)->SetNet( 0 );
continue; continue;
...@@ -769,7 +875,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() ...@@ -769,7 +875,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
m_Pcb->m_NbNodes++; m_Pcb->m_NbNodes++;
/* si le netname a deja ete rencontre: mise a jour , sinon nouveau net_code */ /* if the current netname was already found: use the current net_code , else create a new net_code */
pad_ref = m_Pcb->m_Pads; pad_ref = m_Pcb->m_Pads;
while( pad_ref < pad_courant ) while( pad_ref < pad_courant )
{ {
...@@ -779,24 +885,25 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() ...@@ -779,24 +885,25 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
pad_ref++; pad_ref++;
} }
/* si pad_ref = pad_courant: nouveau net sinon, deja net deja traite */ /* if pad_ref != pad_courant we have found 2 pads on the same net., Use the current net_code for pad_courant
if( pad_ref == pad_courant ) * if pad_ref == pad_courant: new net found (end of list reached) without other pad found on the same net:
* we must create a new net_code
*/
if( pad_ref == pad_courant ) // create a new net_code
{ {
m_Pcb->m_NbNets++; (*pad_courant)->SetNet( m_Pcb->m_NbNets ); m_Pcb->m_NbNets++; (*pad_courant)->SetNet( m_Pcb->m_NbNets );
} }
else else // Use the current net_code for pad_courant
(*pad_courant)->SetNet( (*pad_ref)->GetNet() ); (*pad_courant)->SetNet( (*pad_ref)->GetNet() );
} }
/* Construction ou correction de la liste des equipotentielles, /* Build or update the equipotent list: we reuse the old list */
* et construction d'un tableau d'adressage des equipots*/ BufPtEquipot = (EQUIPOT**) MyMalloc( sizeof(EQUIPOT*) * (m_Pcb->m_NbNets + 1) );
BufPtEquipot = (EQUIPOT**) MyMalloc( sizeof(EQUIPOT *) * (m_Pcb->m_NbNets + 1) );
pt_equipot = m_Pcb->m_Equipots; pt_equipot = m_Pcb->m_Equipots;
PtStruct = (EDA_BaseStruct*) m_Pcb; PtStruct = (EDA_BaseStruct*) m_Pcb;
for( ii = 0; ii <= m_Pcb->m_NbNets; ii++ ) for( ii = 0; ii <= m_Pcb->m_NbNets; ii++ )
{ {
if( pt_equipot == NULL ) /* Creation d'une nouvelle equipot */ if( pt_equipot == NULL ) /* Create a new equipot if no more equipot in old list */
{ {
pt_equipot = new EQUIPOT( m_Pcb ); pt_equipot = new EQUIPOT( m_Pcb );
...@@ -813,7 +920,8 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() ...@@ -813,7 +920,8 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
pt_equipot->Pnext = NULL; pt_equipot->Pnext = NULL;
} }
pt_equipot->SetNet( ii ); // Mise a jour du numero d'equipot // Set the net_code for this equipot and reset other values
pt_equipot->SetNet(ii);
pt_equipot->m_NbNodes = 0; pt_equipot->m_NbNodes = 0;
pt_equipot->m_Netname.Empty(); pt_equipot->m_Netname.Empty();
...@@ -822,19 +930,19 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code() ...@@ -822,19 +930,19 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
pt_equipot = (EQUIPOT*) pt_equipot->Pnext; pt_equipot = (EQUIPOT*) pt_equipot->Pnext;
} }
/* Effacement des equipots inutiles */ /* Delete the unused equipots in the old list */
while( pt_equipot ) while( pt_equipot )
{ {
PtStruct = pt_equipot->Pnext; PtStruct = pt_equipot->Pnext;
pt_equipot ->DeleteStructure(); pt_equipot->DeleteStructure();
pt_equipot = (EQUIPOT*) PtStruct; pt_equipot = (EQUIPOT*) PtStruct;
} }
pad_courant = m_Pcb->m_Pads; pad_courant = m_Pcb->m_Pads;
pt_equipot = m_Pcb->m_Equipots; pt_equipot = m_Pcb->m_Equipots;
/* Placement des noms de net en structure EQUIPOT */ /* Set the equpot net name and node count for each equipot in equipot list */
for( ii = m_Pcb->m_NbPads; ii > 0; pad_courant++, ii-- ) for( ii = m_Pcb->m_NbPads; ii > 0; pad_courant++, ii-- )
{ {
jj = (*pad_courant)->GetNet(); jj = (*pad_courant)->GetNet();
...@@ -856,29 +964,14 @@ void WinEDA_BasePcbFrame::build_liste_pads() ...@@ -856,29 +964,14 @@ void WinEDA_BasePcbFrame::build_liste_pads()
/***********************************************/ /***********************************************/
/* /*
* construction de la liste ( sous forme d'une liste de stucture ) * Create the pad list
* des caract utiles des pads du PCB pour autoroutage,DRC .. ) * initialise:
* parametres: * m_Pcb->m_Pads (list of pads)
* adresse du buffer de classement = buf_work * m_Pcb->m_NbPads = pad count
* retourne: * m_Pcb->m_NbNodes = node count
* 1ere adresse disponible si OK * set m_Pcb->m_Status_Pcb = LISTE_PAD_OK;
* NULL si trop de pastilles * and clear for all pad their m_logical_connexion member;
* * delete ( free memory) m_Pcb->m_Ratsnest and set m_Pcb->m_Ratsnest to NULL
*
* Parametres de routage calcules et mis a jour
* - parametre net_code:
* numero de code interne de chaque net du PCB.
* permet d'accelerer les calculs de chevelu et de connexions
* - parametre .link est mis a jour
* pour chaque pastille, il indique le nombre d'autres pastilles du meme net
* appartenant au meme module.
*
* Variables globales mise a jour:
* pointeur base_adr_liste_pad (adr de classement de la liste des pads)
* nb_pads = nombre total de pastilles du PCB
* nb_nets = nombre de nets differents
* status_pcb |= LISTE_PAD_OK (flag permettant d'eviter la reexecution inutile
* de cette routine)
*/ */
{ {
LISTE_PAD* pt_liste_pad; LISTE_PAD* pt_liste_pad;
...@@ -888,14 +981,14 @@ void WinEDA_BasePcbFrame::build_liste_pads() ...@@ -888,14 +981,14 @@ void WinEDA_BasePcbFrame::build_liste_pads()
if( m_Pcb->m_Status_Pcb & LISTE_PAD_OK ) if( m_Pcb->m_Status_Pcb & LISTE_PAD_OK )
return; return;
/* construction de la liste des pointeurs sur les structures D_PAD */ /* delete the old list */
if( m_Pcb->m_Pads ) if( m_Pcb->m_Pads )
{ {
MyFree( m_Pcb->m_Pads ); MyFree( m_Pcb->m_Pads );
m_Pcb->m_Pads = NULL; m_Pcb->m_Pads = NULL;
} }
/* Calcul du nombre de pads */ /* Set the pad count */
m_Pcb->m_NbPads = 0; m_Pcb->m_NbPads = 0;
Module = m_Pcb->m_Modules; Module = m_Pcb->m_Modules;
for( ; Module != NULL; Module = (MODULE*) Module->Pnext ) for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
...@@ -908,12 +1001,12 @@ void WinEDA_BasePcbFrame::build_liste_pads() ...@@ -908,12 +1001,12 @@ void WinEDA_BasePcbFrame::build_liste_pads()
if( m_Pcb->m_NbPads == 0 ) if( m_Pcb->m_NbPads == 0 )
return; return;
/* Allocation memoire du buffer */ /* Allocate memory for the pad list */
pt_liste_pad = m_Pcb->m_Pads pt_liste_pad = m_Pcb->m_Pads
= (D_PAD**) MyZMalloc( (m_Pcb->m_NbPads + 1) * sizeof(D_PAD *) ); = (D_PAD**) MyZMalloc( (m_Pcb->m_NbPads + 1) * sizeof(D_PAD*) );
m_Pcb->m_NbNodes = 0; m_Pcb->m_NbNodes = 0;
/* Initialisation du buffer et des variables de travail */ /* Clear variables used in rastnest computation */
Module = m_Pcb->m_Modules; Module = m_Pcb->m_Modules;
for( ; Module != NULL; Module = (MODULE*) Module->Pnext ) for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
{ {
...@@ -922,7 +1015,7 @@ void WinEDA_BasePcbFrame::build_liste_pads() ...@@ -922,7 +1015,7 @@ void WinEDA_BasePcbFrame::build_liste_pads()
{ {
*pt_liste_pad = PtPad; *pt_liste_pad = PtPad;
PtPad->m_logical_connexion = 0; PtPad->m_logical_connexion = 0;
PtPad->m_Parent = Module; PtPad->m_Parent = Module; // Just in case
if( PtPad->GetNet() ) if( PtPad->GetNet() )
m_Pcb->m_NbNodes++; m_Pcb->m_NbNodes++;
...@@ -931,7 +1024,7 @@ void WinEDA_BasePcbFrame::build_liste_pads() ...@@ -931,7 +1024,7 @@ void WinEDA_BasePcbFrame::build_liste_pads()
} }
} }
*pt_liste_pad = NULL; // fin de liste *pt_liste_pad = NULL; // set end of list
adr_lowmem = buf_work; adr_lowmem = buf_work;
...@@ -949,19 +1042,19 @@ void WinEDA_BasePcbFrame::build_liste_pads() ...@@ -949,19 +1042,19 @@ void WinEDA_BasePcbFrame::build_liste_pads()
char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
/*****************************************************************************/ /*****************************************************************************/
/* /**
* construction de la liste en mode de calcul rapide pour affichage * Build a rastenest relative to one footprint. This is a simplified computation
* en temps reel lors des deplacements du chevelu d'un module. * used only in move footprint. It is not optimal, but it is fast and sufficient
* to guide a footprint placement
* It shows the connections from a pad to the nearest conected pad
* @param Module = module to consider.
* *
* parametres d'appel: * the general buffer adr_lowmem is used to store the local footprint ratnest (to do: better to allocate memory)
* Module = pointeur sur module dont le ratsnest est a calculer * The ratsnest has 2 sections:
* * - An "internal" ratsnet relative to pads of this footprint which are in the same net.
* retourne: adresse memoire disponible * this ratsnest section is computed once.
* Le chevelu calcule comporte 2 parties * - An "external" rastnest connecting a pad of this footprint to an other pad (in an other footprint)
* - un chevelu interne relatif aux pads du module appartenant a un * The ratsnest section must be computed for each new position
* meme net. Il est calcule 1 seule fois
* - le chevelu externe reliant un pad interne a un pad externe au module
* Ce chevelu est recalcule a chaque deplacement
*/ */
{ {
LISTE_PAD* pt_liste_pad; LISTE_PAD* pt_liste_pad;
...@@ -974,22 +1067,24 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) ...@@ -974,22 +1067,24 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
LISTE_PAD* pt_end_liste; LISTE_PAD* pt_end_liste;
int ii, jj; int ii, jj;
CHEVELU* local_chevelu; CHEVELU* local_chevelu;
static CHEVELU* pt_fin_int_chevelu; // pointeur sur la fin de la liste static CHEVELU* pt_fin_int_chevelu; // End list for "internal" ratsnest
// des chevelus internes au module static int nb_int_chevelu; // "internal" ratsnest count
static int nb_int_chevelu; // nombre e chevelus internes
int current_net_code; int current_net_code;
int increment, distance; // variables de calcul de ratsnest int increment, distance; // variables de calcul de ratsnest
int pad_pos_X, pad_pos_Y; // position reelle des pads du module en mouvement int pad_pos_X, pad_pos_Y; // True pad position according to the current footprint position
if( (m_Pcb->m_Status_Pcb & LISTE_PAD_OK) == 0 ) if( (m_Pcb->m_Status_Pcb & LISTE_PAD_OK) == 0 )
build_liste_pads(); build_liste_pads();
/* construction de la liste des pads du module si necessaire */ /* Compute the "local" ratsnest if needed (when this footprint starts move)
and the list of external pads to consider, i.e pads in others footprints which are "connected" to
a pad in the current footprint
*/
if( (m_Pcb->m_Status_Pcb & CHEVELU_LOCAL_OK) != 0 ) if( (m_Pcb->m_Status_Pcb & CHEVELU_LOCAL_OK) != 0 )
goto calcul_chevelu_ext; goto calcul_chevelu_ext;
/* calcul du chevelu "interne", c.a.d. liant les seuls pads du module */ /* Compute the "internal" ratsnest, i.e the links beteween the curent footprint pads */
pt_liste_pad = (LISTE_PAD*) adr_lowmem; pt_liste_pad = (LISTE_PAD*) adr_lowmem;
nb_pads_ref = 0; nb_pads_ref = 0;
...@@ -1008,9 +1103,9 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) ...@@ -1008,9 +1103,9 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
if( nb_pads_ref == 0 ) if( nb_pads_ref == 0 )
return (char*) pt_liste_pad; /* pas de connexions! */ return (char*) pt_liste_pad; /* pas de connexions! */
qsort( adr_lowmem, nb_pads_ref, sizeof(D_PAD *), tri_par_net ); qsort( adr_lowmem, nb_pads_ref, sizeof(D_PAD*), tri_par_net );
/* construction de la liste des pads connectes aux pads de ce module */ /* Build the list of pads linked to the current ffotprint pads */
DisplayRastnestInProgress = FALSE; DisplayRastnestInProgress = FALSE;
pt_liste_ref = (LISTE_PAD*) adr_lowmem; pt_liste_ref = (LISTE_PAD*) adr_lowmem;
...@@ -1040,13 +1135,14 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) ...@@ -1040,13 +1135,14 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
} }
} }
/* tri par net_codes croissants de la liste des pads externes */ /* Sort the pad list by net_code */
qsort( pt_liste_ref + nb_pads_ref, nb_pads_externes, sizeof(D_PAD *), qsort( pt_liste_ref + nb_pads_ref, nb_pads_externes, sizeof(D_PAD*),
tri_par_net ); tri_par_net );
/* calcul du chevelu interne au module: /* Compute the internal ratsnet:
* Ce calcul est identique au calcul du chevelu general, mais il est * this is the same as general ratsnest, but considers onluy tje currant footprint pads
* restreint aux seuls pads du module courant */ * it is therefore not time consumming, and it is made onlu once
*/
local_liste_chevelu = (CHEVELU*) (pt_liste_pad); // buffer chevelu a la suite de la liste des pads local_liste_chevelu = (CHEVELU*) (pt_liste_pad); // buffer chevelu a la suite de la liste des pads
nb_local_chevelu = 0; nb_local_chevelu = 0;
pt_liste_ref = (LISTE_PAD*) adr_lowmem; pt_liste_ref = (LISTE_PAD*) adr_lowmem;
...@@ -1058,7 +1154,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) ...@@ -1058,7 +1154,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
for( ; pt_liste_pad < pt_liste_pad_limite; ) for( ; pt_liste_pad < pt_liste_pad_limite; )
{ {
/* Recherche de la fin de la liste des pads du net courant */ /* Search the end of pad list relative to the current net */
for( pt_end_liste = pt_liste_pad + 1; ; pt_end_liste++ ) for( pt_end_liste = pt_liste_pad + 1; ; pt_end_liste++ )
{ {
...@@ -1069,12 +1165,12 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) ...@@ -1069,12 +1165,12 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
break; break;
} }
/* fin de liste trouvee : */ /* End of list found: */
/* a - connexion des pads entre eux */ /* a - first step of lee algorithm : build the pad to pad link list */
ii = gen_rats_pad_to_pad( DrawPanel, DC, pt_start_liste, pt_end_liste, ii = gen_rats_pad_to_pad( DrawPanel, DC, pt_start_liste, pt_end_liste,
0, &nb_local_chevelu ); 0, &nb_local_chevelu );
/* b - connexion des blocks formes precedemment (Iteration) */ /* b - secon step of lee algorithm : build the block to block link list (Iteration) */
while( ii > 1 ) while( ii > 1 )
{ {
ii = gen_rats_block_to_block( DrawPanel, DC, pt_liste_pad, ii = gen_rats_block_to_block( DrawPanel, DC, pt_liste_pad,
...@@ -1089,7 +1185,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) ...@@ -1089,7 +1185,7 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
pt_fin_int_chevelu = local_chevelu = g_pt_chevelu; pt_fin_int_chevelu = local_chevelu = g_pt_chevelu;
nb_int_chevelu = nb_local_chevelu; nb_int_chevelu = nb_local_chevelu;
/* Mise a 1 du flag LOCAL */ /* set the ratsnets status, flag LOCAL_CHEVELU */
g_pt_chevelu = local_liste_chevelu; g_pt_chevelu = local_liste_chevelu;
while( g_pt_chevelu < pt_fin_int_chevelu ) while( g_pt_chevelu < pt_fin_int_chevelu )
{ {
...@@ -1098,15 +1194,15 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module ) ...@@ -1098,15 +1194,15 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
m_Pcb->m_Status_Pcb |= CHEVELU_LOCAL_OK; m_Pcb->m_Status_Pcb |= CHEVELU_LOCAL_OK;
///////////////////////////////////////// /*
// calcul du chevelu externe au module // This section computes the "external" ratsnest: must be done when the footprint position changes
///////////////////////////////////////// */
calcul_chevelu_ext: calcul_chevelu_ext:
/* Cette partie est executee a chaque deplacement du module: on calcule /* This section search:
* pour chaque pad du module courant la + courte distance a un pad externe. * for each current module pad the nearest neighbour external pad (of course for the same net code).
* Pour chaque groupe de pad du module courant appartenant a un meme net, * For each current footprint cluster of pad (pads having the same net code),
* on ne garde qu'un seul chevelu: le plus court. * we keep the smaller ratsnest.
*/ */
local_chevelu = pt_fin_int_chevelu; local_chevelu = pt_fin_int_chevelu;
nb_local_chevelu = nb_int_chevelu; nb_local_chevelu = nb_int_chevelu;
...@@ -1122,8 +1218,7 @@ calcul_chevelu_ext: ...@@ -1122,8 +1218,7 @@ calcul_chevelu_ext:
pad_ref = *(pt_liste_ref + ii); pad_ref = *(pt_liste_ref + ii);
if( pad_ref->GetNet() != current_net_code ) if( pad_ref->GetNet() != current_net_code )
{ {
/* un nouveau chevelu est cree (si necessaire) pour /* if needed a new ratsenest for each new net */
* chaque nouveau net */
if( increment ) if( increment )
{ {
nb_local_chevelu++; local_chevelu++; nb_local_chevelu++; local_chevelu++;
...@@ -1141,11 +1236,11 @@ calcul_chevelu_ext: ...@@ -1141,11 +1236,11 @@ calcul_chevelu_ext:
{ {
pad_externe = *pt_liste_generale; pt_liste_generale++; pad_externe = *pt_liste_generale; pt_liste_generale++;
/* les netcodes doivent etre identiques */ /* we search pads having the same net coade */
if( pad_externe->GetNet() < pad_ref->GetNet() ) if( pad_externe->GetNet() < pad_ref->GetNet() )
continue; continue;
if( pad_externe->GetNet() > pad_ref->GetNet() ) if( pad_externe->GetNet() > pad_ref->GetNet() ) // remember pads are sorted by net code
break; break;
distance = abs( pad_externe->m_Pos.x - pad_pos_X ) + distance = abs( pad_externe->m_Pos.x - pad_pos_X ) +
...@@ -1169,12 +1264,12 @@ calcul_chevelu_ext: ...@@ -1169,12 +1264,12 @@ calcul_chevelu_ext:
local_chevelu++; local_chevelu++;
} }
/* Retourne l'adr de la zone disponible */ /* return the newt free memory buffer address, in the general buffer */
adr_max = MAX( adr_max, (char*) (local_chevelu + 1) ); adr_max = MAX( adr_max, (char*) (local_chevelu + 1) );
return (char*) (local_chevelu + 1); /* la struct pointee par return (char*) (local_chevelu + 1); /* the struct pointed by local_chevelu is used
* local_chevelu est utilisee in temporary computations, so we skip it
* pour des calculs temporaires */ */
} }
...@@ -1183,8 +1278,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC ) ...@@ -1183,8 +1278,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC )
/**********************************************************/ /**********************************************************/
/* /*
* affiche le chevelu d'un module calcule en mode rapide. * Display the rastnest of a moving footprint, computed by build_ratsnest_module()
* retourne: rien
*/ */
{ {
CHEVELU* local_chevelu; CHEVELU* local_chevelu;
...@@ -1227,7 +1321,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC ) ...@@ -1227,7 +1321,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC )
/* int * WinEDA_BasePcbFrame::build_ratsnest_pad(D_PAD * pad_ref, const wxPoint & refpos) */ /* int * WinEDA_BasePcbFrame::build_ratsnest_pad(D_PAD * pad_ref, const wxPoint & refpos) */
/*********************************************************************************************/ /*********************************************************************************************/
/* /**
* construction de la liste en mode de calcul rapide pour affichage * construction de la liste en mode de calcul rapide pour affichage
* en temps reel du chevelu d'un pad lors des tracés d'une piste démarrant * en temps reel du chevelu d'un pad lors des tracés d'une piste démarrant
* sur ce pad. * sur ce pad.
...@@ -1241,13 +1335,13 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC ) ...@@ -1241,13 +1335,13 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC )
* retourne: adresse memoire disponible * retourne: adresse memoire disponible
*/ */
/* routine locale de tri par longueur de links utilisee par la fonction QSORT */ /* Used by build_ratsnest_pad(): sort function by link lenght (manathann distance)*/
static int sort_by_localnetlength( const void* o1, const void* o2 ) static int sort_by_localnetlength( const void* o1, const void* o2 )
{ {
int* ref = (int*) o1; int* ref = (int*) o1;
int* compare = (int*) o2; int* compare = (int*) o2;
int* org = (int*) adr_lowmem; int* org = (int*) adr_lowmem; // ref coordinate (todo : change for a betted code: used an external wxPoint variable)
int ox = *org++; int ox = *org++;
int oy = *org++; int oy = *org++;
int lengthref, lengthcmp; int lengthref, lengthcmp;
...@@ -1255,13 +1349,13 @@ static int sort_by_localnetlength( const void* o1, const void* o2 ) ...@@ -1255,13 +1349,13 @@ static int sort_by_localnetlength( const void* o1, const void* o2 )
lengthref = abs( *ref - ox ); lengthref = abs( *ref - ox );
ref++; ref++;
lengthref += abs( *ref - oy ); // = longueur entre point origine et pad ref lengthref += abs( *ref - oy ); // = distance between ref coordinate and pad ref
lengthcmp = abs( *compare - ox ); lengthcmp = abs( *compare - ox );
compare++; compare++;
lengthcmp += abs( *compare - oy ); // = longueur entre point origine et pad comparé lengthcmp += abs( *compare - oy ); // = distance between ref coordinate and the other pad
return lengthref - lengthcmp; return lengthref - lengthcmp;
} }
...@@ -1341,7 +1435,8 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref, ...@@ -1341,7 +1435,8 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref,
nb_local_chevelu++; nb_local_chevelu++;
} }
} }
} /* Fin Init */ } /* end if Init */
else if( nb_local_chevelu ) else if( nb_local_chevelu )
{ {
*pt_coord = refpos.x; *pt_coord = refpos.x;
...@@ -1359,7 +1454,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_pad( wxDC* DC ) ...@@ -1359,7 +1454,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_pad( wxDC* DC )
/*******************************************************/ /*******************************************************/
/* /*
* affiche le "chevelu" d'un pad lors des trace de segments de piste * Displays a "ratsnest" during track creation
*/ */
{ {
int* pt_coord; int* pt_coord;
......
/***********************************************/
/* Routines d'effacement et copie de structures*/
/***********************************************/
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "pcbnew.h"
#if 0
/* Routines Locales */
/* Variables locales */
/***********************************************/
void DeleteStructure( BOARD_ITEM* item )
/***********************************************/
/* Supprime de la liste chainee la stucture pointee par GenericStructure
et libere la memoire correspondante
*/
{
if( !item )
return;
switch( item->Type() )
{
case TYPE_NOT_INIT:
DisplayError(NULL, wxT("DeleteStruct: Type Structure Non Initialise"));
break;
case PCB_EQUIPOT_STRUCT_TYPE:
case TYPEMODULE:
case TYPEPAD:
case TYPECOTATION:
case TYPEMIRE:
case TYPEDRAWSEGMENT:
case TYPETEXTE:
case TYPETEXTEMODULE:
case TYPEEDGEMODULE:
case TYPETRACK:
case TYPEVIA:
case TYPEZONE:
case TYPEMARQUEUR:
item->UnLink();
delete item;
break;
default:
{
wxString msg;
msg.Printf( wxT(" DeleteStructure: Type %d Inattendu"), item->Type() );
DisplayError(NULL, msg);
}
}
}
#endif
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