Commit ca5fd179 authored by CHARRAS's avatar CHARRAS

ratsnest.cpp translated, onrightclick() bug solved.

parent 3cd47555
......@@ -4,6 +4,15 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
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>
================================================================================
......
No preview for this file type
......@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kicad\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"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n"
......@@ -111,7 +111,6 @@ msgstr "Ajouter Pastilles"
#: pcbnew/modedit.cpp:316
#: pcbnew/menubarpcb.cpp:209
#: pcbnew/tool_modedit.cpp:133
#: pcbnew/globaleditpad.cpp:96
#: pcbnew/menubarmodedit.cpp:45
msgid "Pad Settings"
msgstr "Caract pads"
......@@ -127,7 +126,7 @@ msgid "Place anchor"
msgstr "Place Ancre"
#: pcbnew/modedit.cpp:344
#: pcbnew/edit.cpp:457
#: pcbnew/edit.cpp:459
#: eeschema/schedit.cpp:454
#: eeschema/libframe.cpp:578
msgid "Delete item"
......@@ -470,13 +469,11 @@ msgstr "Outils de per
#: pcbnew/gendrill.cpp:171
#: pcbnew/dialog_general_options.cpp:271
#: eeschema/options.cpp:185
#: gerbview/options.cpp:184
msgid "millimeters"
msgstr "millimetres"
#: pcbnew/gendrill.cpp:171
#: eeschema/options.cpp:185
#: eeschema/dialog_options.cpp:246
msgid "inches"
msgstr "Pouces"
......@@ -637,9 +634,9 @@ msgstr "Outils"
#: pcbnew/gendrill.cpp:411
#: pcbnew/gendrill.cpp:1098
#: pcbnew/gendrill.cpp:1674
#: pcbnew/class_pad.cpp:930
#: pcbnew/class_track.cpp:771
#: pcbnew/class_track.cpp:776
#: pcbnew/class_pad.cpp:974
#: pcbnew/class_track.cpp:791
#: pcbnew/class_track.cpp:796
msgid "Drill"
msgstr "Perage"
......@@ -700,102 +697,58 @@ msgstr "Valeur incorrecte pour diametre de per
msgid "Incorrect value for pad offset"
msgstr "Valeur incorrecte pour offset du pad"
#: pcbnew/pcbpiste.cpp:62
#: pcbnew/swap_layers.cpp:59
msgid "Swap Layers:"
msgstr "Permutte couches"
#: pcbnew/edit.cpp:169
#: pcbnew/editmod.cpp:45
msgid "Module Editor"
msgstr "Ouvrir Editeur de modules"
#: pcbnew/pcbpiste.cpp:77
#: pcbnew/pcbpiste.cpp:135
#: pcbnew/swap_layers.cpp:75
#: pcbnew/swap_layers.cpp:129
#: pcbnew/swap_layers.cpp:162
msgid "No Change"
msgstr "Garder"
#: pcbnew/edit.cpp:249
msgid "Add Tracks"
msgstr "Addition de pistes"
#: pcbnew/pcbpiste.cpp:81
#: pcbnew/swap_layers.cpp:80
#: gerbview/select_layers_to_pcb.cpp:134
msgid "Layers"
msgstr "Couches"
#: pcbnew/edit.cpp:258
msgid "Add Zones"
msgstr "Addition de Zones"
#: pcbnew/pcbpiste.cpp:89
#: pcbnew/cotation.cpp:109
#: pcbnew/muonde.cpp:352
#: 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/edit.cpp:260
msgid "Warning: Display Zone is OFF!!!"
msgstr "Attention: Affichage zones dsactiv !!!"
#: pcbnew/pcbpiste.cpp:96
#: pcbnew/cotation.cpp:105
#: pcbnew/muonde.cpp:348
#: 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/edit.cpp:267
msgid "Add Layer Alignment Target"
msgstr "Ajouter Mire de superposition"
#: pcbnew/pcbpiste.cpp:103
#: pcbnew/swap_layers.cpp:93
#: gerbview/select_layers_to_pcb.cpp:156
msgid "Deselect"
msgstr "Deselection"
#: pcbnew/edit.cpp:271
msgid "Adjust Zero"
msgstr "Ajuster Zro"
#: pcbnew/pcbpiste.cpp:110
#: pcbnew/dialog_netlist.cpp:162
msgid "Select"
msgstr "Slection"
#: pcbnew/edit.cpp:277
msgid "Add Graphic"
msgstr "Addition lments graphiques"
#: pcbnew/pcbpiste.cpp:259
#: pcbnew/surbrill.cpp:35
msgid "Filter for net names:"
msgstr "Filtre pour nets:"
#: pcbnew/edit.cpp:281
#: 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/pcbpiste.cpp:263
#: pcbnew/surbrill.cpp:39
msgid "List Nets"
msgstr "Liste quipots"
#: pcbnew/edit.cpp:285
msgid "Add Modules"
msgstr "Addition de Modules"
#: 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/affiche.cpp:63
......@@ -807,419 +760,110 @@ msgstr "Vias"
msgid "Tracks"
msgstr "Pistes"
#: 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/router.cpp:60
msgid "Unable to create temporary file "
msgstr "Impossible de crer le fichier temporaire "
#: pcbnew/tool_pcb.cpp:241
msgid "Open existing Board"
msgstr "Ouvrir C.I. existant"
#: pcbnew/router.cpp:65
msgid "Create temporary file "
msgstr "Creation fichier temporaire "
#: pcbnew/tool_pcb.cpp:242
msgid "Save Board"
msgstr "Sauver Circuit Imprim"
#: pcbnew/router.cpp:566
msgid "Unable to find data file "
msgstr "Impossible de trouver le fichier de donnes "
#: 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/router.cpp:572
msgid "Reading autorouter data file "
msgstr "Lecture fichier donnes de l'autorouteur"
#: pcbnew/tool_pcb.cpp:250
msgid "Open Module Editor"
msgstr "Ouvrir Editeur de modules"
#: pcbnew/class_pcb_text.cpp:163
#: gerbview/affiche.cpp:29
msgid "COTATION"
msgstr "COTATION"
#: 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/class_pcb_text.cpp:165
#: gerbview/affiche.cpp:32
msgid "PCB Text"
msgstr "Texte Pcb"
#: 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/class_pcb_text.cpp:167
#: pcbnew/class_pad.cpp:951
#: pcbnew/classpcb.cpp:197
#: pcbnew/class_text_mod.cpp:347
#: 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
#: eeschema/tool_sch.cpp:87
#: gerbview/tool_gerber.cpp:255
msgid "Paste"
msgstr "Copie des lments sauvegards"
#: 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/tool_pcb.cpp:262
#: gerbview/tool_gerber.cpp:262
msgid "Undelete"
msgstr "Annulation du dernier effacement"
#: pcbnew/class_pcb_text.cpp:173
#: pcbnew/dialog_display_options.cpp:273
#: pcbnew/class_text_mod.cpp:341
#: eeschema/dialog_options.cpp:265
#: gerbview/affiche.cpp:43
msgid "No"
msgstr "Non"
#: pcbnew/tool_pcb.cpp:265
msgid "Print Board"
msgstr "Imprimer C.I."
#: pcbnew/class_pcb_text.cpp:175
#: pcbnew/dialog_display_options.cpp:272
#: pcbnew/class_text_mod.cpp:343
#: eeschema/dialog_options.cpp:264
#: gerbview/affiche.cpp:45
msgid "Yes"
msgstr "Oui"
#: pcbnew/tool_pcb.cpp:267
msgid "Plot (HPGL, PostScript, or GERBER format)"
msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER"
#: pcbnew/class_pcb_text.cpp:178
#: pcbnew/class_pad.cpp:993
#: 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/tool_modedit.cpp:115
#: eeschema/tool_lib.cpp:170
#: eeschema/tool_sch.cpp:108
#: gerbview/tool_gerber.cpp:272
msgid "zoom +"
msgstr "zoom +"
#: pcbnew/class_pcb_text.cpp:181
#: pcbnew/dialog_edit_mod_text.cpp:204
#: pcbnew/cotation.cpp:129
#: pcbnew/mirepcb.cpp:113
#: pcbnew/classpcb.cpp:202
#: pcbnew/class_text_mod.cpp:364
#: 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/tool_modedit.cpp:119
#: eeschema/tool_lib.cpp:174
#: eeschema/tool_sch.cpp:112
#: gerbview/tool_gerber.cpp:279
msgid "zoom -"
msgstr "zoom -"
#: pcbnew/class_pcb_text.cpp:184
#: pcbnew/class_pad.cpp:964
#: pcbnew/class_text_mod.cpp:367
#: gerbview/affiche.cpp:55
msgid "H Size"
msgstr "Taille H"
#: 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/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/class_pcb_text.cpp:187
#: pcbnew/class_pad.cpp:968
#: pcbnew/class_text_mod.cpp:370
#: gerbview/affiche.cpp:58
msgid "V Size"
msgstr "Taille V"
#: pcbnew/edgemod.cpp:204
msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure"
......@@ -1238,7 +882,7 @@ msgid "Footprint name:"
msgstr "Nom Module: "
#: pcbnew/modules.cpp:281
#: pcbnew/onrightclick.cpp:650
#: pcbnew/onrightclick.cpp:688
msgid "Delete Module"
msgstr "Supprimer Module"
......@@ -1392,7 +1036,6 @@ msgid "Pad options:"
msgstr "Options pads"
#: pcbnew/zones.cpp:192
#: eeschema/options.cpp:194
#: eeschema/dialog_options.cpp:257
msgid "Any"
msgstr "Tout"
......@@ -1438,12 +1081,11 @@ msgid "No Net"
msgstr "No Net"
#: pcbnew/zones.cpp:916
#: pcbnew/class_track.cpp:714
#: pcbnew/class_track.cpp:734
msgid "NetName"
msgstr "NetName"
#: pcbnew/zones.cpp:984
#: pcbnew/mirepcb.cpp:103
msgid "Ok"
msgstr "Ok"
......@@ -1605,10 +1247,98 @@ msgstr "Fichiers Doc des Modules"
msgid "library files:"
msgstr "Fichiers Librairies"
#: pcbnew/reglage.cpp:279
#: pcbnew/dialog_setup_libs.cpp:390
msgid "Library exists! No Change"
msgstr "Librairie existante! Pas de changement"
#: pcbnew/reglage.cpp:279
#: pcbnew/dialog_setup_libs.cpp:390
msgid "Library exists! No Change"
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/class_board_item.cpp:67
......@@ -1633,9 +1363,9 @@ msgid "Keep"
msgstr "Garder"
#: pcbnew/dialog_netlist.cpp:141
#: pcbnew/onrightclick.cpp:575
#: pcbnew/onrightclick.cpp:682
#: pcbnew/onrightclick.cpp:779
#: pcbnew/onrightclick.cpp:613
#: pcbnew/onrightclick.cpp:720
#: pcbnew/onrightclick.cpp:817
#: eeschema/edit_component_in_lib.cpp:239
#: eeschema/edit_component_in_lib.cpp:320
#: cvpcb/dialog_cvpcb_config.cpp:166
......@@ -1643,171 +1373,449 @@ msgstr "Garder"
msgid "Delete"
msgstr "Supprimer"
#: pcbnew/dialog_netlist.cpp:143
msgid "Bad Tracks Deletion:"
msgstr "Supp. pistes err.:"
#: pcbnew/dialog_netlist.cpp:143
msgid "Bad Tracks Deletion:"
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
msgid "Change"
msgstr "Changer"
#: pcbnew/tool_pcb.cpp:332
msgid "Drc OFF"
msgstr "Drc DESACTIVEE"
#: pcbnew/dialog_netlist.cpp:150
msgid "Exchange Module:"
msgstr "Echange module:"
#: 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/dialog_netlist.cpp:153
msgid "Display Warnings"
msgstr "Affiche warnings"
#: 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/dialog_netlist.cpp:166
msgid "Read"
msgstr "Lire"
#: 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/dialog_netlist.cpp:170
msgid "Module Test"
msgstr "Test Modules"
#: 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/dialog_netlist.cpp:174
msgid "Compile"
msgstr "Compile"
#: 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/pcbframe.cpp:261
msgid "Board modified, Save before exit ?"
msgstr "Circuit Imprim modifie, Sauver avant de quitter ?"
#: pcbnew/tool_pcb.cpp:349
msgid "Show General Ratsnest"
msgstr "Monter le chevelu gnral"
#: pcbnew/pcbframe.cpp:262
#: eeschema/schframe.cpp:183
#: cvpcb/cvframe.cpp:169
#: common/confirm.cpp:109
msgid "Confirmation"
msgstr "Confirmation"
#: pcbnew/tool_pcb.cpp:352
msgid "Show Module Ratsnest when moving"
msgstr "Monter le chevelu du module pendant dplacement"
#: pcbnew/pcbframe.cpp:362
msgid "DRC Off (Disable !!!), Currently: DRC is active"
msgstr "DRC off (dsactive !!!), actuellement DRC active"
#: pcbnew/tool_pcb.cpp:357
msgid "Enable Auto Del Track"
msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/pcbframe.cpp:363
msgid "DRC On (Currently: DRC is inactive !!!)"
msgstr "DRC On (Actuellement, DRC dsactive !!!)"
#: pcbnew/tool_pcb.cpp:366
#: pcbnew/tool_modedit.cpp:238
msgid "Show Pads Sketch"
msgstr "Afficher pastilles en contour"
#: pcbnew/pcbframe.cpp:374
msgid "Polar Coords not show"
msgstr "Coord Polaires non affiches"
#: pcbnew/tool_pcb.cpp:370
msgid "Show Tracks Sketch"
msgstr "Afficher pistes en contour"
#: pcbnew/pcbframe.cpp:375
msgid "Display Polar Coords"
msgstr "Affichage coord Polaires"
#: 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/pcbframe.cpp:380
#: eeschema/schframe.cpp:261
msgid "Grid not show"
msgstr "Grille non montre"
#: pcbnew/tool_pcb.cpp:412
msgid "Net highlight"
msgstr "Surbrillance des quipotentielles"
#: pcbnew/pcbframe.cpp:380
#: eeschema/schframe.cpp:261
msgid "Show Grid"
msgstr "Afficher grille"
#: pcbnew/tool_pcb.cpp:416
msgid "Display local ratsnest (pad or module)"
msgstr "Afficher le chevelu local (pastilles ou modules)"
#: pcbnew/pcbframe.cpp:389
msgid "General ratsnest not show"
msgstr "Chevelu gnral non affich"
#: pcbnew/tool_pcb.cpp:421
msgid "Add modules"
msgstr "Addition de Modules"
#: pcbnew/pcbframe.cpp:389
msgid "Show General ratsnest"
msgstr "Afficher le chevelu gnral"
#: pcbnew/tool_pcb.cpp:425
msgid "Add tracks and vias"
msgstr "Ajouter pistes et vias"
#: pcbnew/pcbframe.cpp:395
msgid "Module ratsnest not show"
msgstr "Ne pas montrer le chevelu du module pendant dplacement"
#: pcbnew/tool_pcb.cpp:429
msgid "Add zones"
msgstr "Addition de Zones"
#: pcbnew/pcbframe.cpp:396
msgid "Show Module ratsnest"
msgstr "Montrer le chevelu du module"
#: 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/pcbframe.cpp:403
msgid "Disable Auto Delete old Track"
msgstr "Ne pas Autoriser l'effacement automatique des pistes"
#: pcbnew/tool_pcb.cpp:438
#: pcbnew/tool_modedit.cpp:172
msgid "Add graphic circle"
msgstr "Addition de graphiques (Cercle)"
#: pcbnew/pcbframe.cpp:404
msgid "Enable Auto Delete old Track"
msgstr "Autoriser l'effacement automatique des pistes"
#: pcbnew/tool_pcb.cpp:442
#: pcbnew/tool_modedit.cpp:176
msgid "Add graphic arc"
msgstr "Addition de graphiques (Arc de Cercle)"
#: pcbnew/pcbframe.cpp:411
msgid "Do not Show Zones"
msgstr "Ne pas monter Zones"
#: pcbnew/tool_pcb.cpp:446
msgid "Add text"
msgstr "Ajout de Texte"
#: pcbnew/pcbframe.cpp:417
msgid "Show Pads Sketch mode"
msgstr "Afficher pastilles en contour"
#: pcbnew/tool_pcb.cpp:451
msgid "Add dimension"
msgstr "Ajout des cotes"
#: pcbnew/pcbframe.cpp:418
msgid "Show pads filled mode"
msgstr "Afficher pastilles en mode plein"
#: pcbnew/tool_pcb.cpp:455
#: gerbview/tool_gerber.cpp:376
msgid "Add layer alignment target"
msgstr "Ajouter Mire de superposition"
#: pcbnew/pcbframe.cpp:424
msgid "Show Tracks Sketch mode"
msgstr "Afficher pistes en contour"
#: 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/pcbframe.cpp:425
msgid "Show Tracks filled mode"
msgstr "Afficher pistes en mode plein"
#: pcbnew/tool_pcb.cpp:465
msgid "Offset adjust for drill and place files"
msgstr "Ajuste offset pour fichier de perage et placement"
#: pcbnew/pcbframe.cpp:431
msgid "Normal Contrast Mode Display"
msgstr "Mode d'affichage Contraste normal"
#: 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/pcbframe.cpp:442
#: pcbnew/class_board_item.cpp:127
#: pcbnew/class_track.cpp:688
msgid "Track"
msgstr "Piste"
#: 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/pcbframe.cpp:474
#: pcbnew/class_board_item.cpp:154
msgid "Via"
msgstr "Via"
#: 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/class_pad.cpp:732
msgid "Unknown Pad shape"
msgstr "Forme pad inconnue"
#: 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/class_pad.cpp:818
#: 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/tool_pcb.cpp:517
msgid "Create a polynomial shape for microwave applications"
msgstr "Creation de formes polynomiales (pour applications micro-ondes)"
#: pcbnew/class_pad.cpp:821
msgid "RefP"
msgstr "RefP"
#: pcbnew/tool_pcb.cpp:567
#: pcbnew/tool_modedit.cpp:285
#: eeschema/plotps.cpp:169
#: share/zoom.cpp:368
msgid "Auto"
msgstr "Auto"
#: pcbnew/class_pad.cpp:824
#: pcbnew/class_board_item.cpp:35
msgid "Net"
msgstr "Net"
#: pcbnew/tool_pcb.cpp:571
msgid "Zoom "
msgstr "Zoom "
#: pcbnew/class_pad.cpp:938
msgid "Drill X / Y"
msgstr "Perage X/Y"
#: pcbnew/tool_pcb.cpp:585
#: pcbnew/set_color.h:335
#: gerbview/set_color.h:246
msgid "Grid"
msgstr "Grille"
#: pcbnew/class_pad.cpp:953
msgid "X Pos"
msgstr "X Pos"
#: pcbnew/tool_pcb.cpp:601
#: pcbnew/tool_modedit.cpp:314
msgid "User Grid"
msgstr "Grille perso"
#: pcbnew/class_pad.cpp:957
msgid "Y pos"
msgstr "Y pos"
#: pcbnew/tool_pcb.cpp:676
msgid "+/- to switch"
msgstr "+/- pour commuter"
#: pcbnew/hotkeys.cpp:435
#, c-format
msgid "Footprint %s found, but locked"
msgstr "Module %s trouv, mais verrouill"
#: pcbnew/mirepcb.cpp:78
msgid "Target Properties"
msgstr "Proprits de la mire"
#: pcbnew/mirepcb.cpp:118
msgid "shape +"
msgstr "Forme +"
#: pcbnew/mirepcb.cpp:118
msgid "shape X"
msgstr "Forme X"
#: pcbnew/hotkeys.cpp:598
msgid "Delete module?"
msgstr "Effacer Module?"
#: pcbnew/mirepcb.cpp:120
msgid "Target Shape:"
msgstr "Forme Mire:"
#: pcbnew/dialog_initpcb.cpp:105
msgid "Items to delete"
......@@ -2011,44 +2019,10 @@ msgid "Display other items:"
msgstr "Afficher autres lments"
#: pcbnew/dialog_display_options.cpp:275
#: eeschema/options.cpp:204
#: eeschema/dialog_options.cpp:267
msgid "Show page limits"
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
msgid "unable to create file "
msgstr "Impossible de crer fichier "
......@@ -2098,21 +2072,18 @@ msgid "Complex shape"
msgstr "Formr complexe"
#: pcbnew/muonde.cpp:356
#, fuzzy
msgid "Read Shape Descr File..."
msgstr "Lire fichier de description de forme"
msgstr "Lire fichier de description de forme..."
#: pcbnew/muonde.cpp:360
msgid "Symmetrical"
msgstr "Symtrique"
#: pcbnew/muonde.cpp:360
#, fuzzy
msgid "Mirrored"
msgstr "Miroir"
#: pcbnew/muonde.cpp:362
#, fuzzy
msgid "Shape Option"
msgstr "Option Forme"
......@@ -2148,22 +2119,6 @@ msgstr "Gap (mm):"
msgid "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
msgid "Delete NET ?"
msgstr "Supprimer Net ?"
......@@ -2427,6 +2382,15 @@ msgstr "Grille perso dim X"
msgid "User Grid Size 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
msgid "Pad Num :"
msgstr "Num Pad :"
......@@ -2439,7 +2403,7 @@ msgstr "NetName Pad:"
#: pcbnew/dialog_pad_edit.cpp:196
#: pcbnew/classpcb.cpp:186
#: pcbnew/class_board_item.cpp:100
#: pcbnew/class_track.cpp:725
#: pcbnew/class_track.cpp:745
msgid "Circle"
msgstr "Cercle"
......@@ -2489,7 +2453,7 @@ msgid "Pad Shape:"
msgstr "Forme Pad:"
#: pcbnew/dialog_pad_edit.cpp:205
#: pcbnew/class_track.cpp:727
#: pcbnew/class_track.cpp:747
msgid "Standard"
msgstr "Standard"
......@@ -2570,35 +2534,9 @@ msgstr "couche E.C.O.2"
msgid "Draft layer"
msgstr "Couche dessin"
#: pcbnew/classpcb.cpp:181
#: pcbnew/classpcb.cpp:313
#: pcbnew/class_text_mod.cpp:337
#: 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/controle.cpp:172
msgid "Selection Clarification"
msgstr "Clarification de la Slection"
#: pcbnew/pcbcfg.cpp:68
#: eeschema/eeconfig.cpp:58
......@@ -2652,6 +2590,69 @@ msgstr "Librairie: "
msgid "Modules (%d items)"
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
msgid "Recovery file "
msgstr "Fichier de secours "
......@@ -2924,10 +2925,6 @@ msgstr "Valeur"
msgid "Text"
msgstr "Texte"
#: pcbnew/controle.cpp:174
msgid "Selection Clarification"
msgstr "Clarification de la Slection"
#: pcbnew/drc.cpp:80
msgid "Look for active routes\n"
msgstr "Recherche des chevelus actifs\n"
......@@ -3001,7 +2998,7 @@ msgid "Tst Zones\n"
msgstr "Test Zones\n"
#: 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"
msgstr "%d Err Drc %d %s (net %s) et PAD %s (%s) net %s @ %d,%d\n"
......@@ -3028,10 +3025,13 @@ msgstr "Propri
msgid "Position"
msgstr "Position"
#: pcbnew/editmod.cpp:45
#: pcbnew/edit.cpp:167
msgid "Module Editor"
msgstr "Ouvrir Editeur de modules"
#: pcbnew/surbrill.cpp:35
msgid "Filter for net names:"
msgstr "Filtre pour nets:"
#: pcbnew/surbrill.cpp:39
msgid "List Nets"
msgstr "Liste quipots"
#: pcbnew/editmod.cpp:144
msgid "Text is REFERENCE!"
......@@ -3359,175 +3359,76 @@ msgid "&About"
msgstr "&Infos logiciel"
#: pcbnew/menubarpcb.cpp:272
#: pcbnew/menubarmodedit.cpp:64
#: eeschema/menubar.cpp:183
#: cvpcb/tool_cvpcb.cpp:163
#: kicad/buildmnu.cpp:203
#: gerbview/tool_gerber.cpp:153
msgid "About this 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/menubarmodedit.cpp:64
#: eeschema/menubar.cpp:183
#: cvpcb/tool_cvpcb.cpp:163
#: kicad/buildmnu.cpp:203
#: gerbview/tool_gerber.cpp:153
msgid "About this application"
msgstr "Au sujet de cette application"
#: pcbnew/set_color.cpp:716
msgid "Exit"
msgstr "Quitter"
#: pcbnew/menubarpcb.cpp:280
#: pcbnew/menubarmodedit.cpp:72
msgid "3D Display"
msgstr "3D Visu"
#: pcbnew/edit.cpp:247
msgid "Add Tracks"
msgstr "Addition de pistes"
#: pcbnew/menubarpcb.cpp:280
#: pcbnew/menubarmodedit.cpp:72
msgid "Show Board in 3D Mode"
msgstr "Visualisation en 3D"
#: pcbnew/edit.cpp:258
msgid "Warning: Display Zone is OFF!!!"
msgstr "Attention: Affichage zones dsactiv !!!"
#: 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/edit.cpp:265
msgid "Add Mire"
msgstr "Ajouter Mires de superposition"
#: 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/edit.cpp:269
msgid "Adjust Zero"
msgstr "Ajuster Zro"
#: pcbnew/menubarpcb.cpp:286
#: pcbnew/menubarmodedit.cpp:76
msgid "&Dimensions"
msgstr "&Dimensions"
#: pcbnew/edit.cpp:275
msgid "Add Graphic"
msgstr "Addition lments graphiques"
#: pcbnew/menubarpcb.cpp:287
#: gerbview/tool_gerber.cpp:157
msgid "&Miscellaneous"
msgstr "&Divers"
#: pcbnew/edit.cpp:283
msgid "Add Modules"
msgstr "Addition de Modules"
#: pcbnew/menubarpcb.cpp:288
msgid "P&ostprocess"
msgstr "P&ostprocesseurs"
#: pcbnew/edit.cpp:295
msgid "Net Highlight"
msgstr "Surbrillance des quipotentielles"
#: pcbnew/menubarpcb.cpp:289
#: pcbnew/menubarmodedit.cpp:77
msgid "&3D Display"
msgstr "&3D Visu"
#: pcbnew/edit.cpp:299
msgid "Local Ratsnest"
msgstr "Monter le chevelu gnral"
#: 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/sel_layer.cpp:92
msgid "Select Layer:"
msgstr "Selection couche:"
#: pcbnew/sel_layer.cpp:137
#, fuzzy
msgid "(Deselect)"
msgstr "Deselection"
msgstr "(Deselection)"
#: pcbnew/sel_layer.cpp:238
msgid "Less than two copper layers are being used."
......@@ -3551,7 +3452,7 @@ msgstr "Couche Inf."
#: pcbnew/sel_layer.cpp:351
msgid "The Top Layer and Bottom Layer must differ"
msgstr ""
msgstr "Les couches dessus et dessous doivent diffrer"
#: pcbnew/automove.cpp:212
msgid "Move Modules ?"
......@@ -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 ?"
msgstr "Ok pour orientation module %d degrs ?"
#: pcbnew/class_board_item.cpp:40
#: eeschema/component_class.cpp:56
msgid "Footprint"
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/basepcbframe.cpp:119
msgid "3D Frame already opened"
msgstr "Fenetre 3D dj ouverte"
#: pcbnew/class_board_item.cpp:194
msgid "Edge Zone"
msgstr "Contour Zone"
#: pcbnew/basepcbframe.cpp:122
msgid "3D Viewer"
msgstr "Visu 3D"
#: pcbnew/modedit_onclick.cpp:206
#: pcbnew/onrightclick.cpp:148
#: pcbnew/onrightclick.cpp:151
#: eeschema/libedit_onrightclick.cpp:73
#: eeschema/onrightclick.cpp:125
#: gerbview/onrightclick.cpp:42
......@@ -3641,7 +3484,7 @@ msgid "End Tool"
msgstr "Fin Outil"
#: pcbnew/modedit_onclick.cpp:216
#: pcbnew/onrightclick.cpp:457
#: pcbnew/onrightclick.cpp:495
#: eeschema/libedit_onrightclick.cpp:252
#: eeschema/onrightclick.cpp:581
#: gerbview/onrightclick.cpp:51
......@@ -3649,13 +3492,13 @@ msgid "Cancel Block"
msgstr "Annuler Bloc"
#: pcbnew/modedit_onclick.cpp:218
#: pcbnew/onrightclick.cpp:459
#: pcbnew/onrightclick.cpp:497
#: gerbview/onrightclick.cpp:52
msgid "Zoom Block (Midd butt drag)"
msgstr "Zoom Bloc (drag+bouton milieu)"
#: pcbnew/modedit_onclick.cpp:221
#: pcbnew/onrightclick.cpp:462
#: pcbnew/onrightclick.cpp:500
#: eeschema/libedit_onrightclick.cpp:260
#: eeschema/onrightclick.cpp:589
#: gerbview/onrightclick.cpp:54
......@@ -3663,7 +3506,7 @@ msgid "Place Block"
msgstr "Place Bloc"
#: pcbnew/modedit_onclick.cpp:223
#: pcbnew/onrightclick.cpp:464
#: pcbnew/onrightclick.cpp:502
#: eeschema/libedit_onrightclick.cpp:266
#: eeschema/onrightclick.cpp:598
msgid "Copy Block (shift + drag mouse)"
......@@ -3674,18 +3517,18 @@ msgid "Mirror Block (alt + drag mouse)"
msgstr "Bloc Miroir (alt + drag mouse)"
#: pcbnew/modedit_onclick.cpp:227
#: pcbnew/onrightclick.cpp:468
#: pcbnew/onrightclick.cpp:506
msgid "Rotate Block (ctrl + drag mouse)"
msgstr "Rotation Bloc (ctrl + drag mouse)"
#: pcbnew/modedit_onclick.cpp:229
#: pcbnew/onrightclick.cpp:470
#: pcbnew/onrightclick.cpp:508
msgid "Delete Block (shift+ctrl + drag mouse)"
msgstr "Effacement Bloc (shift+ctrl + drag mouse)"
#: pcbnew/modedit_onclick.cpp:251
#: pcbnew/onrightclick.cpp:676
#: pcbnew/onrightclick.cpp:773
#: pcbnew/onrightclick.cpp:714
#: pcbnew/onrightclick.cpp:811
msgid "Rotate"
msgstr "Rotation"
......@@ -3715,17 +3558,17 @@ msgid "Move Pad"
msgstr "Dplace Pad"
#: pcbnew/modedit_onclick.cpp:273
#: pcbnew/onrightclick.cpp:715
#: pcbnew/onrightclick.cpp:753
msgid "Edit Pad"
msgstr "Edit Pad"
#: pcbnew/modedit_onclick.cpp:275
#: pcbnew/onrightclick.cpp:719
#: pcbnew/onrightclick.cpp:757
msgid "New Pad Settings"
msgstr "Nouvelles Caract. Pads"
#: pcbnew/modedit_onclick.cpp:277
#: pcbnew/onrightclick.cpp:721
#: pcbnew/onrightclick.cpp:759
msgid "Export Pad Settings"
msgstr "Exporte Caract. Pads"
......@@ -3734,7 +3577,7 @@ msgid "delete Pad"
msgstr "Supprimer Pad"
#: pcbnew/modedit_onclick.cpp:284
#: pcbnew/onrightclick.cpp:726
#: pcbnew/onrightclick.cpp:764
msgid "Global Pad Settings"
msgstr "Edition Globale des pads"
......@@ -3767,9 +3610,9 @@ msgid "Place edge"
msgstr "Place contour"
#: pcbnew/modedit_onclick.cpp:316
#: pcbnew/onrightclick.cpp:644
#: pcbnew/onrightclick.cpp:678
#: pcbnew/onrightclick.cpp:775
#: pcbnew/onrightclick.cpp:682
#: pcbnew/onrightclick.cpp:716
#: pcbnew/onrightclick.cpp:813
#: eeschema/onrightclick.cpp:312
msgid "Edit"
msgstr "Editer"
......@@ -3798,6 +3641,26 @@ msgstr "Effacement contour"
msgid "Set Width"
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
#: eeschema/eestatus.cpp:139
#: eeschema/dialog_eeschema_config.cpp:211
......@@ -3949,29 +3812,35 @@ msgstr "Largeur Texte Module"
msgid "GenCAD file:"
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
#: gerbview/select_layers_to_pcb.cpp:152
#, fuzzy
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
msgid "Deselect this layer to restore its No Change state"
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
msgid "Module properties"
msgstr "Proprits du Module"
......@@ -4129,53 +3998,71 @@ msgstr "R
msgid "Delete [%s]"
msgstr "Supprimer [%s]"
#: pcbnew/globaleditpad.cpp:79
msgid "Pads Global Edit"
msgstr "Pads: Edition globale"
#: pcbnew/class_board_item.cpp:40
#: eeschema/component_class.cpp:56
msgid "Footprint"
msgstr "Module"
#: pcbnew/globaleditpad.cpp:101
msgid "Change Module"
msgstr "Change module"
#: pcbnew/class_board_item.cpp:45
msgid "Pad"
msgstr "Pad"
#: pcbnew/globaleditpad.cpp:106
msgid "Change Id Modules"
msgstr "Change Modules ident."
#: 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/globaleditpad.cpp:117
msgid "Pad Filter :"
msgstr "Filtre Pad :"
#: pcbnew/class_board_item.cpp:50
msgid "Pcb Graphic"
msgstr "Pcb Graphic"
#: pcbnew/globaleditpad.cpp:119
msgid "Shape Filter"
msgstr "Filtre sur forme"
#: 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:197
msgid " on "
msgstr " sur "
#: pcbnew/globaleditpad.cpp:123
msgid "Layer Filter"
msgstr "Filtre sur couche"
#: pcbnew/class_board_item.cpp:54
msgid "Pcb Text"
msgstr "Texte Pcb"
#: pcbnew/globaleditpad.cpp:127
msgid "Orient Filter"
msgstr "Filtre Orientation"
#: pcbnew/class_board_item.cpp:85
msgid "Graphic"
msgstr "Graphique"
#: pcbnew/globaleditpad.cpp:132
msgid "Change Items :"
msgstr "Elments changer:"
#: pcbnew/class_board_item.cpp:97
msgid "Arc"
msgstr "Arc"
#: pcbnew/globaleditpad.cpp:134
msgid "Change Size"
msgstr "Change Taille"
#: pcbnew/class_board_item.cpp:137
#: pcbnew/class_track.cpp:712
msgid "Zone"
msgstr "Zone"
#: pcbnew/globaleditpad.cpp:138
msgid "Change Shape"
msgstr "Change Forme"
#: pcbnew/class_board_item.cpp:158
msgid "Blind"
msgstr "Enterre"
#: pcbnew/globaleditpad.cpp:142
msgid "Change Drill"
msgstr "Change Perage"
#: pcbnew/class_board_item.cpp:160
msgid "Buried"
msgstr "Borgne"
#: pcbnew/class_board_item.cpp:186
msgid "Dimension"
msgstr "Dimension"
#: pcbnew/globaleditpad.cpp:146
msgid "Change Orient"
msgstr "Change Orientation"
#: pcbnew/class_board_item.cpp:190
msgid "Target"
msgstr "Mire"
#: pcbnew/class_board_item.cpp:197
msgid "Edge Zone"
msgstr "Contour Zone"
#: pcbnew/class_edge_mod.cpp:283
msgid "Seg"
......@@ -4226,6 +4113,19 @@ msgstr "Pin localis
msgid "Module Editor: module modified!, Continue ?"
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
msgid "No Modules for Automated Placement"
msgstr "Pas de Module pour placement Automatis"
......@@ -4242,379 +4142,435 @@ msgstr "Fichier placement cot
msgid "Module count"
msgstr "Nb Modules"
#: pcbnew/basepcbframe.cpp:119
msgid "3D Frame already opened"
msgstr "Fenetre 3D dj ouverte"
#: pcbnew/basepcbframe.cpp:122
msgid "3D Viewer"
msgstr "Visu 3D"
#: pcbnew/onrightclick.cpp:80
#: pcbnew/onrightclick.cpp:83
#, c-format
msgid "Track %.1f"
msgstr "Piste %.1f"
#: pcbnew/onrightclick.cpp:82
#: pcbnew/onrightclick.cpp:85
#, c-format
msgid "Track %.3f"
msgstr "Piste %.3f"
#: pcbnew/onrightclick.cpp:98
#: pcbnew/onrightclick.cpp:101
#, c-format
msgid "Via %.1f"
msgstr "Via %.1f"
#: pcbnew/onrightclick.cpp:100
#: pcbnew/onrightclick.cpp:103
#, c-format
msgid "Via %.3f"
msgstr "Via %.3f"
#: pcbnew/onrightclick.cpp:197
#: pcbnew/onrightclick.cpp:235
msgid "Lock Module"
msgstr "Verrouiller Modules"
#: pcbnew/onrightclick.cpp:205
#: pcbnew/onrightclick.cpp:243
msgid "Unlock Module"
msgstr "Dverrouiller Modules"
#: pcbnew/onrightclick.cpp:213
#: pcbnew/onrightclick.cpp:251
msgid "Auto place Module"
msgstr "Auto place Module"
#: pcbnew/onrightclick.cpp:219
#: pcbnew/onrightclick.cpp:257
msgid "Autoroute"
msgstr "Autoroute"
#: pcbnew/onrightclick.cpp:235
#: pcbnew/onrightclick.cpp:273
msgid "Move Drawing"
msgstr "Dplace Trac"
#: pcbnew/onrightclick.cpp:240
#: pcbnew/onrightclick.cpp:278
msgid "End Drawing"
msgstr "Fin trac"
#: pcbnew/onrightclick.cpp:242
#: pcbnew/onrightclick.cpp:280
msgid "Edit Drawing"
msgstr "Edit Trac"
#: pcbnew/onrightclick.cpp:243
#: pcbnew/onrightclick.cpp:281
msgid "Delete Drawing"
msgstr "Supprimer Trac"
#: pcbnew/onrightclick.cpp:250
#: pcbnew/onrightclick.cpp:288
msgid "End edge zone"
msgstr "Fin contour Zone"
#: pcbnew/onrightclick.cpp:253
#: pcbnew/onrightclick.cpp:291
msgid "Delete edge zone"
msgstr "Supprimer Contour Zone"
#: pcbnew/onrightclick.cpp:268
#: pcbnew/onrightclick.cpp:306
msgid "Edit Zone"
msgstr "Editer Zone"
#: pcbnew/onrightclick.cpp:270
#: pcbnew/onrightclick.cpp:308
msgid "Delete Zone"
msgstr "Supprimer Zone"
#: pcbnew/onrightclick.cpp:275
#: pcbnew/onrightclick.cpp:313
msgid "Delete Marker"
msgstr "Effacer Marqueur"
#: pcbnew/onrightclick.cpp:282
msgid "Edit Cotation"
msgstr "Editer Cotation"
#: pcbnew/onrightclick.cpp:320
msgid "Edit Dimension"
msgstr "Edit Cote"
#: pcbnew/onrightclick.cpp:285
msgid "Delete Cotation"
msgstr "Supprimer Cotation"
#: pcbnew/onrightclick.cpp:323
msgid "Delete Dimension"
msgstr "Suppression Cote"
#: pcbnew/onrightclick.cpp:292
msgid "Move Mire"
msgstr "Dplace Mire"
#: pcbnew/onrightclick.cpp:330
msgid "Move Target"
msgstr "Dplacer Mire"
#: pcbnew/onrightclick.cpp:295
msgid "Edit Mire"
msgstr "Edit Mire"
#: pcbnew/onrightclick.cpp:333
msgid "Edit Target"
msgstr "Editer Mire"
#: pcbnew/onrightclick.cpp:297
msgid "Delete Mire"
#: pcbnew/onrightclick.cpp:335
msgid "Delete Target"
msgstr "Supprimer Mire"
#: pcbnew/onrightclick.cpp:324
#: pcbnew/onrightclick.cpp:362
msgid "Get and Move Footprint"
msgstr "Sel et Dpl.t module"
#: pcbnew/onrightclick.cpp:336
#: pcbnew/onrightclick.cpp:374
msgid "Fill zone"
msgstr "Remplir zone"
#: pcbnew/onrightclick.cpp:344
#: pcbnew/onrightclick.cpp:382
msgid "Select Net"
msgstr "Slection Net"
#: pcbnew/onrightclick.cpp:349
#: pcbnew/onrightclick.cpp:387
msgid "Delete Zone Limit"
msgstr "Supprimer Limite de Zone"
#: pcbnew/onrightclick.cpp:354
#: pcbnew/onrightclick.cpp:365
#: pcbnew/onrightclick.cpp:378
#: pcbnew/onrightclick.cpp:439
#: pcbnew/onrightclick.cpp:392
#: pcbnew/onrightclick.cpp:403
#: pcbnew/onrightclick.cpp:416
#: pcbnew/onrightclick.cpp:477
msgid "Select Working Layer"
msgstr "Slection de la couche de travail"
#: pcbnew/onrightclick.cpp:363
#: pcbnew/onrightclick.cpp:436
#: pcbnew/onrightclick.cpp:401
#: pcbnew/onrightclick.cpp:474
msgid "Select Track Width"
msgstr "Slection Epais. Piste"
#: pcbnew/onrightclick.cpp:367
#: pcbnew/onrightclick.cpp:405
msgid "Select layer pair for vias"
msgstr "Selection couple de couches pour Vias"
#: pcbnew/onrightclick.cpp:384
#: pcbnew/onrightclick.cpp:422
msgid "Footprint documentation"
msgstr "Documentation des modules"
#: pcbnew/onrightclick.cpp:394
#: pcbnew/onrightclick.cpp:432
msgid "Glob Move and Place"
msgstr "Move et Place Globaux"
#: pcbnew/onrightclick.cpp:396
#: pcbnew/onrightclick.cpp:434
msgid "Unlock All Modules"
msgstr "Dverrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:398
#: pcbnew/onrightclick.cpp:436
msgid "Lock All Modules"
msgstr "Verrouiller tous les Modules"
#: pcbnew/onrightclick.cpp:401
#: pcbnew/onrightclick.cpp:439
msgid "Move All Modules"
msgstr "Dplace tous les Modules"
#: pcbnew/onrightclick.cpp:402
#: pcbnew/onrightclick.cpp:440
msgid "Move New Modules"
msgstr "Dplace nouveaux Modules"
#: pcbnew/onrightclick.cpp:404
#: pcbnew/onrightclick.cpp:442
msgid "Autoplace All Modules"
msgstr "Autoplace Tous Modules"
#: pcbnew/onrightclick.cpp:405
#: pcbnew/onrightclick.cpp:443
msgid "Autoplace New Modules"
msgstr "AutoPlace nouveaux Modules"
#: pcbnew/onrightclick.cpp:406
#: pcbnew/onrightclick.cpp:444
msgid "Autoplace Next Module"
msgstr "Autoplace Module suivant"
#: pcbnew/onrightclick.cpp:409
#: pcbnew/onrightclick.cpp:447
msgid "Orient All Modules"
msgstr "Oriente Tous Modules"
#: pcbnew/onrightclick.cpp:416
#: pcbnew/onrightclick.cpp:454
msgid "Global Autoroute"
msgstr "Autoroutage global"
#: pcbnew/onrightclick.cpp:418
#: pcbnew/onrightclick.cpp:456
msgid "Select layer pair"
msgstr "Selection couple de couches"
#: pcbnew/onrightclick.cpp:420
#: pcbnew/onrightclick.cpp:458
msgid "Autoroute All Modules"
msgstr "Autoroute Tous Modules"
#: pcbnew/onrightclick.cpp:422
#: pcbnew/onrightclick.cpp:460
msgid "Reset Unrouted"
msgstr "Rinit Non routs"
#: pcbnew/onrightclick.cpp:427
#: pcbnew/onrightclick.cpp:465
msgid "Global AutoRouter"
msgstr "Autorouteur Global"
#: pcbnew/onrightclick.cpp:429
#: pcbnew/onrightclick.cpp:467
msgid "Read Global AutoRouter Data"
msgstr "Lire Donnes de L'autorouteur global"
#: pcbnew/onrightclick.cpp:466
#: pcbnew/onrightclick.cpp:504
msgid "Flip Block (alt + drag mouse)"
msgstr "Inversion Bloc (alt + drag mouse)"
#: pcbnew/onrightclick.cpp:489
#: pcbnew/onrightclick.cpp:527
msgid "Drag Via"
msgstr "Drag Via"
#: pcbnew/onrightclick.cpp:493
#: pcbnew/onrightclick.cpp:531
msgid "Edit Via"
msgstr "Edit Via"
#: pcbnew/onrightclick.cpp:495
#: pcbnew/onrightclick.cpp:533
msgid "Set via hole to Default"
msgstr "Ajuste perage via dfaut"
#: pcbnew/onrightclick.cpp:497
#: pcbnew/onrightclick.cpp:535
msgid "Set via hole to alt value"
msgstr "Ajuste perage via valeur alternative"
#: pcbnew/onrightclick.cpp:499
#: pcbnew/onrightclick.cpp:537
msgid "Set the via hole alt value"
msgstr "Ajuste la valeur alt. perage via"
#: pcbnew/onrightclick.cpp:501
#: pcbnew/onrightclick.cpp:539
msgid "Export Via hole to alt value"
msgstr "Exporte perage via valeur alt."
#: pcbnew/onrightclick.cpp:503
#: pcbnew/onrightclick.cpp:541
msgid "Export via hole to others id vias"
msgstr "Exporte perage via aux autres semblables."
#: pcbnew/onrightclick.cpp:505
#: pcbnew/onrightclick.cpp:543
msgid "Set ALL via holes to default"
msgstr "Ajuste perage TOUTES vias au dfaut"
#: pcbnew/onrightclick.cpp:518
#: pcbnew/onrightclick.cpp:556
msgid "Move Node"
msgstr "Dplace Noeud"
#: pcbnew/onrightclick.cpp:523
#: pcbnew/onrightclick.cpp:561
msgid "Drag Segments, keep slope"
msgstr "Drag Segments, garder direction"
#: pcbnew/onrightclick.cpp:525
#: pcbnew/onrightclick.cpp:563
msgid "Drag Segment"
msgstr "Drag Segment"
#: pcbnew/onrightclick.cpp:528
#: pcbnew/onrightclick.cpp:566
msgid "Move Segment"
msgstr "Dplace Segment"
#: pcbnew/onrightclick.cpp:531
#: pcbnew/onrightclick.cpp:569
msgid "Break Track"
msgstr "Briser piste"
#: pcbnew/onrightclick.cpp:538
#: pcbnew/onrightclick.cpp:576
msgid "Place Node"
msgstr "Place noeud"
#: pcbnew/onrightclick.cpp:545
#: pcbnew/onrightclick.cpp:583
msgid "End Track"
msgstr "Terminer Piste"
#: pcbnew/onrightclick.cpp:548
#: pcbnew/onrightclick.cpp:586
msgid "Place Via"
msgstr "Place Via"
#: pcbnew/onrightclick.cpp:555
#: pcbnew/onrightclick.cpp:593
msgid "Change Width"
msgstr "Change Largeur"
#: pcbnew/onrightclick.cpp:557
#: pcbnew/onrightclick.cpp:595
msgid "Edit Segment"
msgstr "Edit Segment"
#: pcbnew/onrightclick.cpp:561
#: pcbnew/onrightclick.cpp:599
msgid "Edit Track"
msgstr "Editer Piste"
#: pcbnew/onrightclick.cpp:563
#: pcbnew/onrightclick.cpp:601
msgid "Edit Net"
msgstr "Edit Net"
#: pcbnew/onrightclick.cpp:565
#: pcbnew/onrightclick.cpp:603
msgid "Edit ALL Tracks and Vias"
msgstr "Editer TOUTES Pistes et Vias"
#: pcbnew/onrightclick.cpp:567
#: pcbnew/onrightclick.cpp:605
msgid "Edit ALL Vias (no track)"
msgstr "Editer TOUTES Vias (pas les pistes)"
#: pcbnew/onrightclick.cpp:569
#: pcbnew/onrightclick.cpp:607
msgid "Edit ALL Tracks (no via)"
msgstr "Editer TOUTES Pistes (pas les vias)"
#: pcbnew/onrightclick.cpp:576
#: pcbnew/onrightclick.cpp:614
msgid "Delete Segment"
msgstr "SupprimerSegment"
#: pcbnew/onrightclick.cpp:581
#: pcbnew/onrightclick.cpp:619
msgid "Delete Track"
msgstr "Effacer Piste"
#: pcbnew/onrightclick.cpp:585
#: pcbnew/onrightclick.cpp:623
msgid "Delete Net"
msgstr "Supprimer Net"
#: pcbnew/onrightclick.cpp:590
#: pcbnew/onrightclick.cpp:628
msgid "Set Flags"
msgstr "Ajust. Flags"
#: pcbnew/onrightclick.cpp:591
#: pcbnew/onrightclick.cpp:629
msgid "Locked: Yes"
msgstr "Verrou: Oui"
#: pcbnew/onrightclick.cpp:592
#: pcbnew/onrightclick.cpp:630
msgid "Locked: No"
msgstr "Verrou: Non"
#: pcbnew/onrightclick.cpp:602
#: pcbnew/onrightclick.cpp:640
msgid "Track Locked: Yes"
msgstr "Piste verrouille: Oui"
#: pcbnew/onrightclick.cpp:603
#: pcbnew/onrightclick.cpp:641
msgid "Track Locked: No"
msgstr "Piste verrouille: Non"
#: pcbnew/onrightclick.cpp:605
#: pcbnew/onrightclick.cpp:643
msgid "Net Locked: Yes"
msgstr "Net verrouill: Oui"
#: pcbnew/onrightclick.cpp:606
#: pcbnew/onrightclick.cpp:644
msgid "Net Locked: No"
msgstr "Net verrouill: Non"
#: pcbnew/onrightclick.cpp:628
#: pcbnew/onrightclick.cpp:673
#: pcbnew/onrightclick.cpp:666
#: pcbnew/onrightclick.cpp:711
#: pcbnew/onrightclick.cpp:770
#: pcbnew/onrightclick.cpp:749
#: pcbnew/onrightclick.cpp:808
msgid "Move"
msgstr "Move"
#: pcbnew/onrightclick.cpp:631
#: pcbnew/onrightclick.cpp:713
#: pcbnew/onrightclick.cpp:669
#: pcbnew/onrightclick.cpp:751
msgid "Drag"
msgstr "Drag"
#: pcbnew/onrightclick.cpp:635
#: pcbnew/onrightclick.cpp:673
msgid "Rotate +"
msgstr "Rotation +"
#: pcbnew/onrightclick.cpp:639
#: pcbnew/onrightclick.cpp:677
#: eeschema/onrightclick.cpp:300
msgid "Rotate -"
msgstr "Rotation -"
#: pcbnew/onrightclick.cpp:640
#: pcbnew/onrightclick.cpp:678
msgid "Flip"
msgstr "Change ct"
#: pcbnew/onrightclick.cpp:730
#: pcbnew/onrightclick.cpp:768
msgid "delete"
msgstr "Effacer"
#: pcbnew/onrightclick.cpp:737
#: pcbnew/onrightclick.cpp:775
msgid "Autoroute Pad"
msgstr "Autoroute Pad"
#: pcbnew/onrightclick.cpp:738
#: pcbnew/onrightclick.cpp:776
msgid "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
msgid "Sizes and Widths"
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
msgid "Nodes"
msgstr "Nodes"
......@@ -4722,18 +4678,6 @@ msgstr "Larg. piste: %s Diam Vias : %s"
msgid "Drc error, cancelled"
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
msgid "Static"
msgstr "Static"
......@@ -4769,7 +4713,6 @@ msgid "Display Polar Coord"
msgstr "Affichage coord Polaires"
#: pcbnew/dialog_general_options.cpp:273
#: eeschema/options.cpp:187
#: eeschema/dialog_options.cpp:248
#: gerbview/options.cpp:185
msgid "Units"
......@@ -4834,7 +4777,6 @@ msgid "Segments 45 Only"
msgstr "Segments 45 seulement"
#: pcbnew/dialog_general_options.cpp:341
#: eeschema/options.cpp:124
#: eeschema/dialog_options.cpp:239
msgid "Auto PAN"
msgstr "Auto PAN"
......@@ -5268,120 +5210,98 @@ msgstr "Un fichier %s existe, Le charger ?"
msgid "Ok to cleanup this sheet"
msgstr "Ok pour nettoyer cette feuille"
#: eeschema/options.cpp:96
#: eeschema/eelayer.cpp:282
msgid "EESchema Preferences"
msgstr "EESchema Prfrences"
#: 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/options.cpp:119
#: eeschema/dialog_options.cpp:212
msgid "Show grid"
msgstr "Afficher grille"
#: eeschema/options.cpp:130
#: eeschema/dialog_options.cpp:217
msgid "Normal (50 mils)"
msgstr "Normal (50 mils)"
#: eeschema/options.cpp:131
#: eeschema/dialog_options.cpp:218
msgid "Small (25 mils)"
msgstr "Petit (25 mils)"
#: eeschema/options.cpp:132
#: eeschema/dialog_options.cpp:219
msgid "Very small (10 mils)"
msgstr "Trs petit (10 mils)"
#: eeschema/options.cpp:133
#: eeschema/dialog_options.cpp:220
msgid "Special (5 mils)"
msgstr "Special (5 mils)"
#: eeschema/options.cpp:134
#: eeschema/dialog_options.cpp:221
msgid "Special (2 mils)"
msgstr "Special (2 mils)"
#: eeschema/options.cpp:135
#: eeschema/dialog_options.cpp:222
msgid "Special (1 mil)"
msgstr "Special (1 mil)"
#: eeschema/options.cpp:138
#: eeschema/dialog_options.cpp:224
msgid "Grid Size"
msgstr "Dim Grille"
#: eeschema/options.cpp:177
#: eeschema/dialog_options.cpp:230
msgid "Show alls"
msgstr "Tout Afficher"
#: eeschema/options.cpp:179
#: eeschema/dialog_options.cpp:232
msgid "Show pins"
msgstr "Monter Pins"
#: eeschema/options.cpp:194
#: eeschema/dialog_options.cpp:245
msgid "millimeter"
msgstr "millimetre"
#: eeschema/dialog_options.cpp:256
msgid "Horiz/Vertical"
msgstr "Horiz/Vertical"
#: eeschema/options.cpp:196
#: eeschema/dialog_options.cpp:259
msgid "Wires - Bus orient"
msgstr "Fils-Bus Orient"
#: eeschema/options.cpp:211
msgid "Delta Step"
msgstr "Incrment"
#: eeschema/dialog_options.cpp:284
msgid "Auto increment params"
msgstr "Auto increment params"
#: eeschema/options.cpp:216
#: eeschema/dialog_options.cpp:300
msgid "Delta 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/plotps.cpp:227
msgid "Default Line Width"
......@@ -6394,6 +6314,10 @@ msgstr "ERC Warning"
msgid "Erc Error"
msgstr "ERC Erreur"
#: eeschema/eelayer.cpp:282
msgid "EESchema Preferences"
msgstr "EESchema Prfrences"
#: eeschema/eelayer.cpp:367
msgid "White Background"
msgstr "Fond Blanc"
......@@ -8212,11 +8136,6 @@ msgstr "&Pad plein"
msgid "Save Cfg..."
msgstr "Sauver config..."
#: cvpcb/dialog_display_options.cpp:199
#: gerbview/set_color.cpp:255
msgid "Apply"
msgstr "Appliquer"
#: cvpcb/tool_cvpcb.cpp:35
msgid "Open Netlist"
msgstr "Lire Netliste"
......@@ -8785,8 +8704,7 @@ msgstr "Effacer Zones ?"
msgid "Delete Layer %d"
msgstr "Effacer Couche %d"
#: gerbview/set_color.cpp:149
#, fuzzy
#: gerbview/set_color.cpp:151
msgid "GerbView Layer Colors:"
msgstr "Gerbview: Couleur des couches"
......@@ -9215,6 +9133,10 @@ msgstr "Ne peut trouver le visualisateur Pdf %s"
msgid "Colors"
msgstr "Couleurs"
#: common/confirm.cpp:97
msgid "Infos:"
msgstr "Infos:"
#: common/common.cpp:48
msgid " (\"):"
msgstr " (\"):"
......@@ -9335,10 +9257,6 @@ msgstr "Contour Pcb"
msgid "--- "
msgstr "--- "
#: common/confirm.cpp:97
msgid "Infos:"
msgstr "Infos:"
#: common/block_commande.cpp:56
msgid "Block Move"
msgstr "Move Bloc"
......@@ -9891,6 +9809,54 @@ msgstr "Options g
msgid "TextMod properties"
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
msgid "Fill Zones Options"
msgstr "Options de remplissage de Zone"
......
......@@ -28,6 +28,7 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
wxString text;
const BOARD_ITEM* item = this;
EQUIPOT* net;
D_PAD * pad;
switch( item->Type() )
{
......@@ -42,8 +43,17 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
break;
case TYPEPAD:
text << _( "Pad" ) << wxT( " " ) << ( (D_PAD*) item )->ReturnStringPadName() << _( " of " )
<< ( (MODULE*) GetParent() )->GetReference();
pad = (D_PAD *) this;
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;
case TYPEDRAWSEGMENT:
......
......@@ -888,7 +888,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
pos += 4;
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;
#if 0
Line.Printf( wxT( "%d.%d " ), m_logical_connexion, m_physical_connexion );
......
......@@ -173,27 +173,26 @@ 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 );
/* If not editing a track, and there is no selected item or the right click
happened at a position other than where the selection was made.
We cannot call PcbGeneralLocateAndDisplay() when dragging a track because
editrack.cpp's void Exit_Editrack( WinEDA_DrawPanel* Panel, wxDC* DC )
uses GetCurItem(), thinking it is an aborted track, yet after calling
PcbGeneralLocateAndDisplay(), GetCurItem() is any arbitrary BOARD_ITEM,
not the aborted track.
*/
if( ShowNewTrackWhenMovingCursor != DrawPanel->ManageCurseur
&& ( !item || cursorPos != selectPos ) )
{
DrawPanel->m_AbortRequest = false;
item = PcbGeneralLocateAndDisplay();
if( DrawPanel->m_AbortRequest )
{
DrawPanel->CursorOn( &dc );
return false;
}
// SetCurItem( item ); no, PcbGeneralLocateAndDisplay() does this
}
/* We can reselect an other item only if there are no item being edited
* because ALL moving functions use GetCurItem(),
* therefore GetCurItem() must return the same item during moving.
* We know an item is moving if ( item && (item->m_Flags != 0)) is true
* and after calling PcbGeneralLocateAndDisplay(), GetCurItem() is any arbitrary BOARD_ITEM,
* not the current editen item.
*/
if ( ! item || (item->m_Flags == 0) )
{
if( !item || cursorPos != selectPos ) // Filter
{
DrawPanel->m_AbortRequest = false;
item = PcbGeneralLocateAndDisplay();
if( DrawPanel->m_AbortRequest )
{
DrawPanel->CursorOn( &dc );
return false;
}
}
}
#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 ****/
/* traitement du Chevelu (Rastnest) */
/************************************/
/* Fichier RATSNEST.CPP */
/***********************/
/**** ratsnest.cpp ****/
/* Ratsnets functions */
/***********************/
#include "fctsys.h"
#include "gr_basic.h"
......@@ -14,39 +12,110 @@
#include "protos.h"
/* variables locales */
CHEVELU* g_pt_chevelu;
CHEVELU* local_liste_chevelu; // adresse de base du buffer des chevelus locaux
int nb_local_chevelu; // nbr de links du module en deplacement
int nb_pads_ref; // nbr de nodes du module en deplacement
int nb_pads_externes; // nbr de pads connectes au module en deplacement
bool DisplayRastnestInProgress; // autorise affichage chevelu en cours de calcul
// de celui-ci
/* exported variables */
CHEVELU* g_pt_chevelu;
CHEVELU* local_liste_chevelu; // Buffer address for local ratsnest
// (ratnest relative to one footprint while moving it
int nb_local_chevelu; // link count (active ratnest count) for the footprint beeing moved
/* local variables */
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 )
/******************************************************************************/
/*
* Génère le chevelu complet de la carte.
* Doit etre appelé APRES le calcul de connectivité
* Doit etre appelé apres changement de structure de la carte (modif
* de pads, de nets, de modules).
*
* Si display_status_pcb : affichage des résultats en bas d'ecran
* Create the entire board ratsnesr.
* Msut be called AFTER the connectivity computation
* Must be called after a board change (changes for
* pads, footprints or a read netlist ).
*
* if display_status_pcb != 0 : Display the computation results
*/
{
wxString msg;
DisplayRastnestInProgress = TRUE;
/* construction de la liste des coordonnées des pastilles */
m_Pcb->m_Status_Pcb = 0; /* réinit total du calcul */
/* Create the sorted pad list */
m_Pcb->m_Status_Pcb = 0; /* we want a full ratnest computation, from the scratch */
build_liste_pads();
MsgPanel->EraseMsgBox(); /* effacement du bas d'ecran */
MsgPanel->EraseMsgBox();
msg.Printf( wxT( " %d" ), m_Pcb->m_NbPads );
Affiche_1_Parametre( this, 1, wxT( "pads" ), msg, RED );
......@@ -54,15 +123,25 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb )
Affiche_1_Parametre( this, 8, wxT( "Nets" ), msg, CYAN );
reattribution_reference_piste( display_status_pcb );
Build_Board_Ratsnest( DC ); /* calcul du chevelu general */
test_connexions( DC ); /* determine les blocks de pads connectés par
* les pistes existantes */
Tst_Ratsnest( DC, 0 ); /* calcul du chevelu actif */
/* 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 );
/* Compute the pad connections due to the existing tracks (physical connections)*/
test_connexions( DC );
// Reaffichage des chevelus actifs
/* 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 );
// Redraw the active ratsnest ( if enabled )
if( g_Show_Ratsnest )
DrawGeneralRatsnest( DC, 0 );
......@@ -74,11 +153,14 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb )
/*****************************************************************/
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_compare = (LISTE_PAD*) o2;
LISTE_PAD* pt_compare = (LISTE_PAD*) o2;
return (*pt_ref)->GetNet() - (*pt_compare)->GetNet();
}
......@@ -86,11 +168,14 @@ static int tri_par_net( 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* compare = (CHEVELU*) o2;
return ref->dist - compare->dist;
}
......@@ -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 )
/*****************************************************************************/
/*
* Routine utilisee par Build_Board_Ratsnest()
* Routine generant le chevelu entre 2 blocks ( supposes du meme net )
* la recherche est faite entre les pads du block 1 et les autres blocks
* le block n ( n > 1 ) est alors connecte au block 1 par leur 2 pads
* les plus proches.
* Entree :
* pt_chain_pad = adresse de debut de recherche
* pt_limite = adresse de fin de recherche (borne non comprise)
* Sortie:
* liste des chevelus ( structures)
* mise a jour de g_pt_chevelu a la 1ere case libre
* Retourne:
* nombre de blocks non connectes entre eux
/**
* Function used by Build_Board_Ratsnest()
* This function creates a rastsnet between two blocks ( which fit the same net )
* A block is a group of pads already linked (by a previous ratsnest computation, or tracks)
* The search is made between the pads in block 1 (the reference block) and other blocks
* the block n ( n > 1 ) it connected to block 1 by their 2 nearest pads.
* When the block is found, it is merged with the block 1
* the D_PAD member m_logical_connexion handles the block number
* @param pt_liste_pad = starting address (within the pad list) for search
* @param pt_limite = ending address (within the pad list) for search
* return in global variables:
* ratsnest list in buffer
* g_pt_chevelu updated to the first free memory location
* @return blocks not connected count
*/
{
int dist_min, current_dist;
......@@ -123,39 +208,43 @@ static int gen_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
LISTE_PAD* pt_liste_pad_block1 = NULL;
LISTE_PAD* pt_start_liste;
pt_liste_pad_tmp = NULL;
pt_liste_pad_tmp = NULL;
dist_min = 0x7FFFFFFF;
pt_start_liste = pt_liste_pad;
pt_start_liste = pt_liste_pad;
if( DC )
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++ )
{
D_PAD* ref_pad = *pt_liste_pad;
/* search a pad which is in the block 1 */
if( ref_pad->m_logical_connexion != 1 )
continue;
/* pad is found, search its nearest neighbour in other blocks */
for( pt_liste_pad_aux = pt_start_liste; ; pt_liste_pad_aux++ )
{
D_PAD* curr_pad = *pt_liste_pad_aux;
if( pt_liste_pad_aux >= pt_limite )
break;
if( curr_pad->m_logical_connexion == 1 )
if( curr_pad->m_logical_connexion == 1 ) // not in an other block
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 ) +
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;
dist_min = current_dist;
pt_liste_pad_tmp = pt_liste_pad_aux;
......@@ -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++ )
{
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,
pt_liste_pad = pt_liste_pad_block1;
/* Create the new ratsnet */
(*nblinks)++;
g_pt_chevelu->SetNet( (*pt_liste_pad)->GetNet() );
g_pt_chevelu->status = CH_ACTIF | CH_VISIBLE;
......@@ -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 )
/*****************************************************************************/
/*
* Routine utilisee par Build_Board_Ratsnest()
* Routine generant le chevelu entre 2 pads ( supposes du meme net )
* la routine connecte 1 pad non deja connecte a un autre et crée donc un certqins nombre
* de blocks de pads liées par un chevelu
* Ces blocks sont donc constitués de 2 pads.
*
* Entree :
* pt_chain_pad = adresse de debut de recherche
* pt_limite = adresse de fin de recherche (borne non comprise)
* current_num_block = numero du dernier block de pads (constitué par les connexions
* de pistes existantes
*
* Sortie:
* liste des chevelus ( structures)
* mise a jour de g_pt_chevelu a la 1ere case libre
*
* Retourne:
* nombre de blocks crees (paquets de pads)
/**
* Function used by Build_Board_Ratsnest()
* this is the first pass of the lee algorithm
* This function creates the link (ratsnest) between 2 pads ( fitting the same net )
* the function search for a first not connected pad
* 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.
*
* @param pt_liste_pad = starting address in the pad buffer
* @param pt_limite = ending address
* @param current_num_block = Last existing block number de pads
* These block are created by the existing tracks analysis
*
* output:
* Ratsnest list
* g_pt_chevelu updated to the first free memory address
*
* @return:
* last block number used
*/
{
int dist_min, current_dist;
......@@ -236,24 +334,24 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
for( ; pt_liste_pad < pt_limite; pt_liste_pad++ )
{
ref_pad = *pt_liste_pad;
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;
for( pt_liste_pad_aux = pt_start_liste; ; pt_liste_pad_aux++ )
{
if( pt_liste_pad_aux >= pt_limite )
break;
if( pt_liste_pad_aux == pt_liste_pad )
continue;
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 ) +
abs( pad->m_Pos.y - ref_pad->m_Pos.y );
......@@ -268,20 +366,21 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
{
pad = *pt_liste_pad_tmp;
/* 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 number
* 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) )
{
current_num_block++;
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
{
ref_pad->m_logical_connexion = pad->m_logical_connexion;
}
(*nblinks)++;
g_pt_chevelu->SetNet( ref_pad->GetNet() );
g_pt_chevelu->status = CH_ACTIF | CH_VISIBLE;
......@@ -309,31 +408,30 @@ static int gen_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
/***********************************************************/
/* Routine de calcul du chevelu complet du circuit (algorithme de LEE )
* les connexions physiques (pistes) ne sont pas ici prises en compte
* Il s'agit donc du chevelu de base qui ne depend que de la disposition des pads.
*
* - etablit la liste complete des pads si nécessaire
* les pads utiles (cad appartenant a un net ) sont appeles
* nodes (noeuds)
* 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
* a - etablir le ratsnest entre 1 pad non "connecte" et son plus proche
* voisin. Ceci cree des "blocks" ou sous graphes non connectes entre
* eux
* b - "connecter" (par un chevelu) entre eux ces blocks en prenant le 1er block et
* en le connectant a son plus proche voisin par les 2 pads les plus
* proches (Iteration jusqu'a ce qu'il n'y ait plus qu'un seul block).
*
* les chevelus calculés montrent les connexions "logiques"
*
* Entree = adr du buffer de classement (usuellement buf_work)
* met a jour :
* nb_nodes = nombre de pads connectes a un net ( pads "utiles")
* nb_links = nombre min de liens :
* il y a n-1 liens par equipotentielle comportant n pads.
*
/** Function to compute the full ratsnest (using the LEE algorithm )
* In the functions tracks are not considered
* This is only the "basic" ratsnest depending only on pads.
*
* - Create the sorted pad list (if necessary)
* The active pads (i.e included in a net ) are called nodes
* This pad list is sorted by net codes
*
* - Compute the ratsnest (LEE algorithm ):
* a - Create the ratsnest between a not connected pad and its nearest
* neighbour. Blocks of pads are created
* b - Create the ratsnest between blocks:
* Test the pads of the 1st block and create a link (ratsnest)
* with the nearest pad found in an other block.
* Thi other block is merged with the first block.
* until only one block is left.
*
* A ratnest can be seen as a logical connection.
*
* Update :
* nb_nodes = Active pads count for the board
* nb_links = link count for the board (logical connection count)
* (there are n-1 links for an equipotent which have n active pads) .
*
*/
{
LISTE_PAD* pt_liste_pad, * pt_start_liste, * pt_end_liste, * pt_liste_pad_limite;
......@@ -349,7 +447,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
if( m_Pcb->m_NbPads == 0 )
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 )
recalcule_pad_net_code();
......@@ -360,27 +458,27 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
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 );
/* Allocation memoire du buffer des chevelus: il y a nb_nodes - 1 chevelu
* au maximum ( 1 node = 1 pad connecte ).
* on alloue donc un buffer pour nb_nodes chevelus... (+ une petite marge)
* le nombre reel de chevelus est nb_links
/* Allocate memory for buffer ratsnest: there are nb_nodes - 1 ratsnest
* maximum ( 1 node = 1 active pad ).
* Meory is allocated for nb_nodes ratsnests... (+ a bit more, just in case)
* The real ratsnests count nb_links < nb_nodes
*/
if( m_Pcb->m_Ratsnest )
MyFree( m_Pcb->m_Ratsnest );
m_Pcb->m_Ratsnest = NULL;
if( m_Pcb->m_NbNodes == 0 )
return; /* pas de connexions utiles */
return; /* pas de connexions utiles */
m_Pcb->m_Ratsnest = (CHEVELU*) MyZMalloc( (m_Pcb->m_NbNodes + 10 ) * sizeof(CHEVELU) );
if( m_Pcb->m_Ratsnest == NULL )
return;
/* calcul du chevelu */
/* Ratsnest computation */
DisplayRastnestInProgress = TRUE;
g_pt_chevelu = m_Pcb->m_Ratsnest;
pt_liste_pad = pt_start_liste = m_Pcb->m_Pads;
......@@ -393,13 +491,13 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
{
pt_deb_liste_ch = g_pt_chevelu;
pad = *pt_liste_pad;
/* saut des pads non connectes */
/* Skip the not connected pads */
if( pad->GetNet() == 0 )
{
pt_liste_pad++; pt_start_liste = pt_liste_pad;
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;
nbpads = 0;
for( pt_end_liste = pt_liste_pad + 1; ; pt_end_liste++ )
......@@ -416,7 +514,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
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 );
if( equipot == NULL )
DisplayError( this, wxT( "Gen ratsnest err: NULL equipot" ) );
......@@ -429,11 +527,11 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
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,
pt_end_liste, num_block, &noconn );
/* b - connexion des blocks formes precedemment (Iteration) */
/* b - blocks connection (Iteration) */
while( ii > 1 )
{
ii = gen_rats_block_to_block( DrawPanel, DC, pt_liste_pad,
......@@ -443,7 +541,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
if( equipot )
{
equipot->m_RatsnestEnd = g_pt_chevelu;
/* classement des chevelus par longueur croissante */
/* sort by lenght */
qsort( equipot->m_RatsnestStart,
equipot->m_RatsnestEnd - equipot->m_RatsnestStart,
sizeof(CHEVELU),
......@@ -459,7 +557,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC )
m_Pcb->m_Status_Pcb |= LISTE_CHEVELU_OK;
adr_lowmem = buf_work;
// Effacement du chevelu calcule
// erase the ratsnest displayed on screen if needed
CHEVELU* Chevelu = (CHEVELU*) m_Pcb->m_Ratsnest;
GRSetDrawMode( DC, GR_XOR );
for( ii = m_Pcb->GetNumRatsnests(); ii > 0; ii--, Chevelu++ )
......@@ -479,7 +577,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( 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 )
......@@ -491,10 +589,10 @@ void WinEDA_BasePcbFrame::ReCompile_Ratsnest_After_Changes( wxDC* DC )
void WinEDA_BasePcbFrame::DrawGeneralRatsnest( wxDC* DC, int net_code )
/*********************************************************************/
/*
* Affiche le chevelu general du circuit
* Affiche les chevelus dont le bit CH_VISIBLE du status du chevelu est a 1
* Si net_code > 0, affichage des seuls chevelus de net_code correspondant
/**
* Displays the general ratsnest
* Only ratsnets with the status bit CH_VISIBLE is set are displayed
* @param netcode if > 0, Display only the ratsnest relative to the correponding net_code
*/
{
int ii;
......@@ -516,7 +614,7 @@ void WinEDA_BasePcbFrame::DrawGeneralRatsnest( wxDC* DC, int net_code )
{
if( ( Chevelu->status & (CH_VISIBLE | CH_ACTIF) ) != (CH_VISIBLE | CH_ACTIF) )
continue;
if( (net_code <= 0) || (net_code == Chevelu->GetNet()) )
{
GRLine( &DrawPanel->m_ClipBox, DC,
......@@ -534,37 +632,37 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
CHEVELU* start_rat_list, CHEVELU* end_rat_list )
/*****************************************************************************/
/*
* Routine utilisee par Tst_Ratsnest()
* Routine tres proche de gen_rats_block_to_block(..)
* Routine testant le chevelu entre 2 blocks ( supposes du meme net )
* la recherche est faite entre les pads du block 1 et les autres blocks
* le block n ( n > 1 ) est alors connecte au block 1 par le chevelu le plus court
* A la différence de gen_rats_block_to_block(..),
* l'analyse n'est pas faite pads a pads mais a travers la liste générale des chevelus.
* La routine active alors le chevelu le plus court reliant le block 1 au block n
* (etablissement d'une connexion "logique")
*
* Entree :
* pt_chain_pad = adresse de debut de zone pad utile
* pt_limite = adresse de fin de zone (borne non comprise)
* Sortie:
* Membre .state du chevelu sélectionné
* Retourne:
* nombre de blocks non connectes entre eux
/**
* Function used by Tst_Ratsnest()
* Function like gen_rats_block_to_block(..)
* Function testing the ratsnest between 2 blocks ( same net )
* The search is made between pads in block 1 and the others blocks
* The block n ( n > 1 ) is merged with block 1 by the smallest ratsnest
* Différence between gen_rats_block_to_block(..):
* The analysis is not made pads to pads but uses the general ratsnest list.
* The function activate the smallest ratsnest between block 1 and the block n
* (activate a logical connexion)
*
* @param pt_liste_pad_start = adresse de debut de zone pad utile
* pt_liste_pad_end = adresse de fin de zone pad
* start_rat_list = adresse de debut de zone ratsnest utile
* end_rat_list = adresse de fin de zone ratsnest
* output:
* .state member of the ratsnests
* @return blocks not connected count
*/
{
int current_num_block, min_block;
LISTE_PAD* pt_liste_pad;
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;
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;
if( min_chevelu == NULL )
min_chevelu = chevelu;
else if( min_chevelu->dist > chevelu->dist )
......@@ -574,14 +672,17 @@ static int tst_rats_block_to_block( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
if( min_chevelu == NULL )
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;
current_num_block = min_chevelu->pad_start->m_logical_connexion;
min_block = min_chevelu->pad_end->m_logical_connexion;
if( 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++ )
{
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,
CHEVELU* start_rat_list, CHEVELU* end_rat_list )
/**********************************************************************/
/*
* Routine utilisee par Tst_Ratsnest_general()
* Routine Activant le chevelu entre 2 pads ( supposes du meme net )
* la routine connecte 1 pad non deja connecte a un autre et active donc
* un certain nombre de blocks de pads liées par un chevelu
* Ces blocks sont donc constitués de 2 pads.
*
* Entree :
* pt_chain_pad = adresse de debut de zone pad
* pt_limite = adresse de fin de recherche (borne non comprise)
* current_num_block = numero du dernier block de pads (constitué par les connexions
* de pistes existantes
*
* Sortie:
* liste des chevelus ( structures)
* mise a jour du membre .state du chevelu activé
*
* Retourne:
* nombre de blocks crees (paquets de pads)
/**
* Function used by Tst_Ratsnest_general()
* The general ratsnest list must exists
* Activates the ratsnest between 2 pads ( supposes du meme net )
* The function links 1 pad not already connected an other pad and activate
* some blocks linked by a ratsnest
* Its test only the existing ratsnest and activate some ratsnest (status bit CH_ACTIF set)
*
* @param start_rat_list = starting address for the ratnest list
* @param end_rat_list = ending address for the ratnest list
* @param current_num_block = last block number (computed from the track analysis)
*
* output:
* ratsnest list (status member set)
* and pad list (m_logical_connexion set)
*
* @return new block number
*/
{
D_PAD* pad_start, * pad_end;
......@@ -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++ )
{
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) )
{
current_num_block++;
......@@ -637,7 +736,7 @@ static int tst_rats_pad_to_pad( WinEDA_DrawPanel* DrawPanel, wxDC* DC,
pad_end->m_logical_connexion = current_num_block;
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 )
{
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,
void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode )
/*******************************************************************/
/* calcul du chevelu actif
* Le chevelu général doit etre calculé
* Determite les chevelus ACTIFS dans la liste générale des chevelus
/* Compute the active ratsnest
* The general ratsnest list must exists
* Compute the ACTIVE ratsnests in the general ratsnest list
*/
{
LISTE_PAD* pt_liste_pad;
......@@ -678,7 +777,7 @@ void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode )
equipot = m_Pcb->FindNet( net_code );
if( equipot == NULL )
break;
if( ref_netcode && (net_code != ref_netcode) )
continue;
......@@ -696,11 +795,11 @@ void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode )
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,
equipot->m_RatsnestStart, equipot->m_RatsnestEnd );
/* b - connexion des blocks formes precedemment (Iteration) */
/* b - test connexion between blocks (Iteration) */
while( ii > 1 )
{
ii = tst_rats_block_to_block( DrawPanel, DC,
......@@ -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 )
/**************************************************************************/
/* 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;
DrawGeneralRatsnest( DC, 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()
/*****************************************************/
/*
* Calcule et met a jour les net_codes des PADS et des equipotentielles
* met a jour le buffer des equipotentielles
* A utiliser apres edition de nets sur un pad ou lecture d'une netliste
* positionne a 1 le bit NET_CODE_OK du status_pcb;
/**
* Compute and update the net_codes for PADS et and equipots (.m_NetCode member)
* net_codes are >= 1 (net_code = 0 means not connected)
* Update the equipotents buffer
* 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;
......@@ -750,7 +855,7 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
EDA_BaseStruct* PtStruct;
EQUIPOT** BufPtEquipot;
/* construction de la liste des adr des PADS */
/* Build the PAD list */
build_liste_pads();
/* calcul des net_codes des pads */
......@@ -758,45 +863,47 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
m_Pcb->m_NbNodes = 0;
m_Pcb->m_NbNets = 0;
/* search for differents netnames, and create a netcode for each netname */
pad_courant = m_Pcb->m_Pads;
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 );
continue;
}
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;
while( pad_ref < pad_courant )
{
if( (*pad_ref)->m_Netname == (*pad_courant)->m_Netname )
break; // sont du meme met
break; // sont du meme met
pad_ref++;
}
/* si pad_ref = pad_courant: nouveau net sinon, deja net deja traite */
if( pad_ref == pad_courant )
/* 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: 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 );
}
else
else // Use the current net_code for pad_courant
(*pad_courant)->SetNet( (*pad_ref)->GetNet() );
}
/* Construction ou correction de la liste des equipotentielles,
* et construction d'un tableau d'adressage des equipots*/
BufPtEquipot = (EQUIPOT**) MyMalloc( sizeof(EQUIPOT *) * (m_Pcb->m_NbNets + 1) );
/* Build or update the equipotent list: we reuse the old list */
BufPtEquipot = (EQUIPOT**) MyMalloc( sizeof(EQUIPOT*) * (m_Pcb->m_NbNets + 1) );
pt_equipot = m_Pcb->m_Equipots;
PtStruct = (EDA_BaseStruct*) m_Pcb;
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 );
......@@ -813,7 +920,8 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
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_Netname.Empty();
......@@ -822,19 +930,19 @@ void WinEDA_BasePcbFrame::recalcule_pad_net_code()
pt_equipot = (EQUIPOT*) pt_equipot->Pnext;
}
/* Effacement des equipots inutiles */
/* Delete the unused equipots in the old list */
while( pt_equipot )
{
PtStruct = pt_equipot->Pnext;
pt_equipot ->DeleteStructure();
pt_equipot->DeleteStructure();
pt_equipot = (EQUIPOT*) PtStruct;
}
pad_courant = m_Pcb->m_Pads;
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-- )
{
jj = (*pad_courant)->GetNet();
......@@ -856,29 +964,14 @@ void WinEDA_BasePcbFrame::build_liste_pads()
/***********************************************/
/*
* construction de la liste ( sous forme d'une liste de stucture )
* des caract utiles des pads du PCB pour autoroutage,DRC .. )
* parametres:
* adresse du buffer de classement = buf_work
* retourne:
* 1ere adresse disponible si OK
* NULL si trop de pastilles
*
*
* 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)
* Create the pad list
* initialise:
* m_Pcb->m_Pads (list of pads)
* m_Pcb->m_NbPads = pad count
* m_Pcb->m_NbNodes = node count
* set m_Pcb->m_Status_Pcb = LISTE_PAD_OK;
* 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
*/
{
LISTE_PAD* pt_liste_pad;
......@@ -888,16 +981,16 @@ void WinEDA_BasePcbFrame::build_liste_pads()
if( m_Pcb->m_Status_Pcb & LISTE_PAD_OK )
return;
/* construction de la liste des pointeurs sur les structures D_PAD */
/* delete the old list */
if( m_Pcb->m_Pads )
{
MyFree( m_Pcb->m_Pads );
m_Pcb->m_Pads = NULL;
}
/* Calcul du nombre de pads */
/* Set the pad count */
m_Pcb->m_NbPads = 0;
Module = m_Pcb->m_Modules;
Module = m_Pcb->m_Modules;
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
{
PtPad = (D_PAD*) Module->m_Pads;
......@@ -908,12 +1001,12 @@ void WinEDA_BasePcbFrame::build_liste_pads()
if( m_Pcb->m_NbPads == 0 )
return;
/* Allocation memoire du buffer */
pt_liste_pad = m_Pcb->m_Pads
= (D_PAD**) MyZMalloc( (m_Pcb->m_NbPads + 1) * sizeof(D_PAD *) );
/* Allocate memory for the pad list */
pt_liste_pad = m_Pcb->m_Pads
= (D_PAD**) MyZMalloc( (m_Pcb->m_NbPads + 1) * sizeof(D_PAD*) );
m_Pcb->m_NbNodes = 0;
/* Initialisation du buffer et des variables de travail */
/* Clear variables used in rastnest computation */
Module = m_Pcb->m_Modules;
for( ; Module != NULL; Module = (MODULE*) Module->Pnext )
{
......@@ -922,25 +1015,25 @@ void WinEDA_BasePcbFrame::build_liste_pads()
{
*pt_liste_pad = PtPad;
PtPad->m_logical_connexion = 0;
PtPad->m_Parent = Module;
PtPad->m_Parent = Module; // Just in case
if( PtPad->GetNet() )
m_Pcb->m_NbNodes++;
pt_liste_pad++;
}
}
*pt_liste_pad = NULL; // fin de liste
*pt_liste_pad = NULL; // set end of list
adr_lowmem = buf_work;
if( m_Pcb->m_Ratsnest )
{
MyFree( m_Pcb->m_Ratsnest );
m_Pcb->m_Ratsnest = NULL;
m_Pcb->m_Ratsnest = NULL;
}
m_Pcb->m_Status_Pcb = LISTE_PAD_OK;
}
......@@ -949,19 +1042,19 @@ void WinEDA_BasePcbFrame::build_liste_pads()
char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
/*****************************************************************************/
/*
* construction de la liste en mode de calcul rapide pour affichage
* en temps reel lors des deplacements du chevelu d'un module.
*
* parametres d'appel:
* Module = pointeur sur module dont le ratsnest est a calculer
*
* retourne: adresse memoire disponible
* Le chevelu calcule comporte 2 parties
* - un chevelu interne relatif aux pads du module appartenant a un
* 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
/**
* Build a rastenest relative to one footprint. This is a simplified computation
* 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.
*
* the general buffer adr_lowmem is used to store the local footprint ratnest (to do: better to allocate memory)
* The ratsnest has 2 sections:
* - An "internal" ratsnet relative to pads of this footprint which are in the same net.
* this ratsnest section is computed once.
* - An "external" rastnest connecting a pad of this footprint to an other pad (in an other footprint)
* The ratsnest section must be computed for each new position
*/
{
LISTE_PAD* pt_liste_pad;
......@@ -974,31 +1067,33 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
LISTE_PAD* pt_end_liste;
int ii, jj;
CHEVELU* local_chevelu;
static CHEVELU* pt_fin_int_chevelu; // pointeur sur la fin de la liste
// des chevelus internes au module
static int nb_int_chevelu; // nombre e chevelus internes
static CHEVELU* pt_fin_int_chevelu; // End list for "internal" ratsnest
static int nb_int_chevelu; // "internal" ratsnest count
int current_net_code;
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 )
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 )
goto calcul_chevelu_ext;
/* calcul du chevelu "interne", c.a.d. liant les seuls pads du module */
pt_liste_pad = (LISTE_PAD*) adr_lowmem;
nb_pads_ref = 0;
/* Compute the "internal" ratsnest, i.e the links beteween the curent footprint pads */
pt_liste_pad = (LISTE_PAD*) adr_lowmem;
nb_pads_ref = 0;
pad_ref = Module->m_Pads;
for( ; pad_ref != NULL; pad_ref = (D_PAD*) pad_ref->Pnext )
{
if( pad_ref->GetNet() == 0 )
continue;
*pt_liste_pad = pad_ref;
pad_ref->m_logical_connexion = 0;
pad_ref->m_physical_connexion = 0;
......@@ -1006,15 +1101,15 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
}
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;
pt_liste_ref = (LISTE_PAD*) adr_lowmem;
nb_pads_externes = 0;
pt_liste_ref = (LISTE_PAD*) adr_lowmem;
nb_pads_externes = 0;
current_net_code = 0;
for( ii = 0; ii < nb_pads_ref; ii++ )
{
......@@ -1029,10 +1124,10 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
pad_externe = *pt_liste_generale; pt_liste_generale++;
if( pad_externe->GetNet() != current_net_code )
continue;
if( pad_externe->m_Parent == Module )
continue;
pad_externe->m_logical_connexion = 0;
pad_externe->m_physical_connexion = 0;
*pt_liste_pad = pad_externe; pt_liste_pad++;
......@@ -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 */
qsort( pt_liste_ref + nb_pads_ref, nb_pads_externes, sizeof(D_PAD *),
/* Sort the pad list by net_code */
qsort( pt_liste_ref + nb_pads_ref, nb_pads_externes, sizeof(D_PAD*),
tri_par_net );
/* calcul du chevelu interne au module:
* Ce calcul est identique au calcul du chevelu general, mais il est
* restreint aux seuls pads du module courant */
/* Compute the internal ratsnet:
* this is the same as general ratsnest, but considers onluy tje currant footprint pads
* 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
nb_local_chevelu = 0;
pt_liste_ref = (LISTE_PAD*) adr_lowmem;
......@@ -1058,23 +1154,23 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
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++ )
{
if( pt_end_liste >= pt_liste_pad_limite )
break;
if( (*pt_end_liste)->GetNet() != current_net_code )
break;
}
/* fin de liste trouvee : */
/* a - connexion des pads entre eux */
/* End of list found: */
/* 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,
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 )
{
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 )
pt_fin_int_chevelu = local_chevelu = g_pt_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;
while( g_pt_chevelu < pt_fin_int_chevelu )
{
......@@ -1098,21 +1194,21 @@ char* WinEDA_BasePcbFrame::build_ratsnest_module( wxDC* DC, MODULE* Module )
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:
/* Cette partie est executee a chaque deplacement du module: on calcule
* pour chaque pad du module courant la + courte distance a un pad externe.
* Pour chaque groupe de pad du module courant appartenant a un meme net,
* on ne garde qu'un seul chevelu: le plus court.
/* This section search:
* for each current module pad the nearest neighbour external pad (of course for the same net code).
* For each current footprint cluster of pad (pads having the same net code),
* we keep the smaller ratsnest.
*/
local_chevelu = pt_fin_int_chevelu;
nb_local_chevelu = nb_int_chevelu;
pt_liste_ref = (LISTE_PAD*) adr_lowmem;
pad_ref = *pt_liste_ref;
current_net_code = pad_ref->GetNet();
local_chevelu->dist = 0x7FFFFFFF;
local_chevelu->status = 0;
......@@ -1121,9 +1217,8 @@ calcul_chevelu_ext:
{
pad_ref = *(pt_liste_ref + ii);
if( pad_ref->GetNet() != current_net_code )
{
/* un nouveau chevelu est cree (si necessaire) pour
* chaque nouveau net */
{
/* if needed a new ratsenest for each new net */
if( increment )
{
nb_local_chevelu++; local_chevelu++;
......@@ -1140,17 +1235,17 @@ calcul_chevelu_ext:
for( jj = nb_pads_externes; jj > 0; jj-- )
{
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() )
continue;
if( pad_externe->GetNet() > pad_ref->GetNet() )
if( pad_externe->GetNet() > pad_ref->GetNet() ) // remember pads are sorted by net code
break;
distance = abs( pad_externe->m_Pos.x - pad_pos_X ) +
abs( pad_externe->m_Pos.y - pad_pos_Y );
if( distance < local_chevelu->dist )
{
local_chevelu->pad_start = pad_ref;
......@@ -1165,16 +1260,16 @@ calcul_chevelu_ext:
if( increment ) // fin de balayage : le ratsnest courant doit etre memorise
{
nb_local_chevelu++;
nb_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) );
return (char*) (local_chevelu + 1); /* la struct pointee par
* local_chevelu est utilisee
* pour des calculs temporaires */
return (char*) (local_chevelu + 1); /* the struct pointed by local_chevelu is used
in temporary computations, so we skip it
*/
}
......@@ -1183,8 +1278,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC )
/**********************************************************/
/*
* affiche le chevelu d'un module calcule en mode rapide.
* retourne: rien
* Display the rastnest of a moving footprint, computed by build_ratsnest_module()
*/
{
CHEVELU* local_chevelu;
......@@ -1227,11 +1321,11 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC )
/* int * WinEDA_BasePcbFrame::build_ratsnest_pad(D_PAD * pad_ref, const wxPoint & refpos) */
/*********************************************************************************************/
/*
/**
* 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
* sur ce pad.
*
*
* parametres d'appel:
* pad_ref ( si null : mise a 0 du nombre de chevelus )
* ox, oy = coord de l'extremite de la piste en trace
......@@ -1241,27 +1335,27 @@ void WinEDA_BasePcbFrame::trace_ratsnest_module( wxDC* DC )
* 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 )
{
int* ref = (int*) o1;
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 oy = *org++;
int lengthref, lengthcmp;
lengthref = abs( *ref - ox );
ref++;
lengthref += abs( *ref - oy ); // = longueur entre point origine et pad ref
lengthcmp = abs( *compare - ox );
lengthref += abs( *ref - oy ); // = distance between ref coordinate and pad ref
lengthcmp = abs( *compare - ox );
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;
}
......@@ -1279,7 +1373,7 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref,
D_PAD* pad_ref = NULL;
if( ( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK) == 0 )
|| ( (m_Pcb->m_Status_Pcb & LISTE_PAD_OK) == 0 ) )
|| ( (m_Pcb->m_Status_Pcb & LISTE_PAD_OK) == 0 ) )
{
nb_local_chevelu = 0;
return NULL;
......@@ -1330,10 +1424,10 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref,
D_PAD* pad = *padlist;
if( pad->GetNet() != current_net_code )
continue;
if( pad == pad_ref )
continue;
if( !pad->m_physical_connexion || (pad->m_physical_connexion != conn_number) )
{
*pt_coord = pad->m_Pos.x; pt_coord++;
......@@ -1341,7 +1435,8 @@ int* WinEDA_BasePcbFrame::build_ratsnest_pad( EDA_BaseStruct* ref,
nb_local_chevelu++;
}
}
} /* Fin Init */
} /* end if Init */
else if( nb_local_chevelu )
{
*pt_coord = refpos.x;
......@@ -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;
......@@ -1368,15 +1463,15 @@ void WinEDA_BasePcbFrame::trace_ratsnest_pad( wxDC* DC )
if( (m_Pcb->m_Status_Pcb & LISTE_CHEVELU_OK) == 0 )
return;
if( nb_local_chevelu == 0 )
return;
if( local_liste_chevelu == NULL )
return;
pt_coord = (int*) local_liste_chevelu;
refX = *pt_coord++;
refY = *pt_coord++;
......@@ -1385,7 +1480,7 @@ void WinEDA_BasePcbFrame::trace_ratsnest_pad( wxDC* DC )
{
if( ii >= g_MaxLinksShowed )
break;
GRLine( &DrawPanel->m_ClipBox, DC, refX, refY, *pt_coord, *(pt_coord + 1),
0, YELLOW );
pt_coord += 2;
......
/***********************************************/
/* 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