diff --git a/change_log.txt b/change_log.txt index 69df022440..c624d81df7 100644 --- a/change_log.txt +++ b/change_log.txt @@ -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 +================================================================================ ++ 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 ================================================================================ diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index 1612fa063d..6c3d64e8ae 100644 Binary files a/internat/fr/kicad.mo and b/internat/fr/kicad.mo differ diff --git a/internat/fr/kicad.po b/internat/fr/kicad.po index 7a493bf7f7..de526e45b7 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -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 \n" "Language-Team: kicad team \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 "Perçage" @@ -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 désactivé !!!" -#: 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 Zéro" -#: pcbnew/pcbpiste.cpp:110 -#: pcbnew/dialog_netlist.cpp:162 -msgid "Select" -msgstr "Sélection" +#: pcbnew/edit.cpp:277 +msgid "Add Graphic" +msgstr "Addition éléments 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 général" #: pcbnew/plotps.cpp:361 #: pcbnew/affiche.cpp:63 @@ -807,313 +760,6 @@ 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/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 éléments sélectionnés" - -#: pcbnew/tool_pcb.cpp:257 -#: eeschema/tool_sch.cpp:84 -#: gerbview/tool_gerber.cpp:249 -msgid "Copy selected item" -msgstr "Copie des éléments sélectionnés" - -#: pcbnew/tool_pcb.cpp:259 -#: eeschema/tool_sch.cpp:87 -#: gerbview/tool_gerber.cpp:255 -msgid "Paste" -msgstr "Copie des éléments sauvegardés" - -#: 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 règles de conception" - -#: pcbnew/tool_pcb.cpp:305 -msgid "Mode Module: Manual and Automatic Move or Place for modules" -msgstr "Mode Module: Déplacements 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 "Unités = 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 "Unités = 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 "Sélection de la forme du curseur" - -#: pcbnew/tool_pcb.cpp:349 -msgid "Show General Ratsnest" -msgstr "Monter le chevelu général" - -#: pcbnew/tool_pcb.cpp:352 -msgid "Show Module Ratsnest when moving" -msgstr "Monter le chevelu du module pendant déplacement" - -#: 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 expérimental (en cours de développement)" - -#: 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'éléments" - -#: pcbnew/tool_pcb.cpp:465 -msgid "Offset adjust for drill and place files" -msgstr "Ajuste offset pour fichier de perçage et placement" - -#: pcbnew/tool_pcb.cpp:490 -msgid "Create line of specified length for microwave applications" -msgstr "Creation de lignes de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:496 -msgid "Create gap of specified length for microwave applications" -msgstr "Creation de gaps de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:504 -msgid "Create stub of specified length for microwave applications" -msgstr "Creation de stub de longueur spécifiée (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 spécifiée (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 créer le fichier temporaire " @@ -1141,13 +787,13 @@ msgid "PCB Text" msgstr "Texte Pcb" #: pcbnew/class_pcb_text.cpp:167 -#: pcbnew/class_pad.cpp:907 +#: 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/class_track.cpp:755 #: pcbnew/dialog_edit_module.cpp:234 +#: pcbnew/class_track.cpp:775 #: pcbnew/class_module.cpp:1116 #: gerbview/affiche.cpp:109 msgid "Layer" @@ -1166,7 +812,6 @@ 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" @@ -1175,14 +820,13 @@ 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_pad.cpp:993 #: pcbnew/class_text_mod.cpp:361 #: pcbnew/dialog_edit_module.cpp:245 #: pcbnew/class_module.cpp:1139 @@ -1194,12 +838,12 @@ msgstr "Orient" #: pcbnew/class_pcb_text.cpp:181 #: pcbnew/dialog_edit_mod_text.cpp:204 #: pcbnew/cotation.cpp:129 -#: pcbnew/mirepcb.cpp:117 +#: pcbnew/mirepcb.cpp:113 #: 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 +#: pcbnew/class_track.cpp:799 #: eeschema/affiche.cpp:188 #: eeschema/dialog_cmp_graphic_properties.cpp:188 #: gerbview/affiche.cpp:52 @@ -1208,14 +852,14 @@ msgid "Width" msgstr "Epaisseur" #: pcbnew/class_pcb_text.cpp:184 -#: pcbnew/class_pad.cpp:920 +#: pcbnew/class_pad.cpp:964 #: 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_pad.cpp:968 #: pcbnew/class_text_mod.cpp:370 #: gerbview/affiche.cpp:58 msgid "V Size" @@ -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" @@ -1610,6 +1252,94 @@ msgstr "Fichiers Librairies" msgid "Library exists! No Change" msgstr "Librairie existante! Pas de changement" +#: pcbnew/cotation.cpp:85 +msgid "Dimension properties" +msgstr "Propriétés 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 #: eeschema/eelayer.cpp:99 @@ -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 @@ -1659,6 +1389,10 @@ msgstr "Echange module:" msgid "Display Warnings" msgstr "Affiche warnings" +#: pcbnew/dialog_netlist.cpp:162 +msgid "Select" +msgstr "Sélection" + #: pcbnew/dialog_netlist.cpp:166 msgid "Read" msgstr "Lire" @@ -1736,6 +1470,12 @@ msgstr "Autoriser l'effacement automatique des pistes" 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" @@ -1756,9 +1496,14 @@ msgstr "Afficher pistes en mode plein" 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:688 +#: pcbnew/class_track.cpp:708 msgid "Track" msgstr "Piste" @@ -1767,47 +1512,310 @@ msgstr "Piste" msgid "Via" msgstr "Via" -#: pcbnew/class_pad.cpp:732 -msgid "Unknown Pad shape" -msgstr "Forme pad inconnue" +#: 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/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:239 +msgid "New Board" +msgstr "Nouveau Circuit Imprimé" -#: pcbnew/class_pad.cpp:821 -msgid "RefP" -msgstr "RefP" +#: pcbnew/tool_pcb.cpp:241 +msgid "Open existing Board" +msgstr "Ouvrir C.I. existant" -#: pcbnew/class_pad.cpp:824 -#: pcbnew/class_board_item.cpp:35 -msgid "Net" -msgstr "Net" +#: pcbnew/tool_pcb.cpp:242 +msgid "Save Board" +msgstr "Sauver Circuit Imprimé" -#: pcbnew/class_pad.cpp:938 -msgid "Drill X / Y" -msgstr "Perçage X/Y" +#: 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/class_pad.cpp:953 -msgid "X Pos" -msgstr "X Pos" +#: pcbnew/tool_pcb.cpp:250 +msgid "Open Module Editor" +msgstr "Ouvrir Editeur de modules" -#: pcbnew/class_pad.cpp:957 -msgid "Y pos" -msgstr "Y pos" +#: pcbnew/tool_pcb.cpp:253 +#: eeschema/tool_sch.cpp:81 +#: gerbview/tool_gerber.cpp:244 +msgid "Cut selected item" +msgstr "Suppression des éléments sélectionnés" -#: pcbnew/hotkeys.cpp:435 -#, c-format -msgid "Footprint %s found, but locked" -msgstr "Module %s trouvé, mais verrouillé" +#: pcbnew/tool_pcb.cpp:257 +#: eeschema/tool_sch.cpp:84 +#: gerbview/tool_gerber.cpp:249 +msgid "Copy selected item" +msgstr "Copie des éléments sélectionnés" -#: pcbnew/hotkeys.cpp:598 -msgid "Delete module?" -msgstr "Effacer Module?" +#: pcbnew/tool_pcb.cpp:259 +#: eeschema/tool_sch.cpp:87 +#: gerbview/tool_gerber.cpp:255 +msgid "Paste" +msgstr "Copie des éléments sauvegardés" + +#: 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 règles de conception" + +#: pcbnew/tool_pcb.cpp:305 +msgid "Mode Module: Manual and Automatic Move or Place for modules" +msgstr "Mode Module: Déplacements 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 "Unités = 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 "Unités = 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 "Sélection de la forme du curseur" + +#: pcbnew/tool_pcb.cpp:349 +msgid "Show General Ratsnest" +msgstr "Monter le chevelu général" + +#: pcbnew/tool_pcb.cpp:352 +msgid "Show Module Ratsnest when moving" +msgstr "Monter le chevelu du module pendant déplacement" + +#: pcbnew/tool_pcb.cpp:357 +msgid "Enable Auto Del Track" +msgstr "Autoriser l'effacement automatique des pistes" + +#: 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: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 expérimental (en cours de développement)" + +#: 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 and vias" +msgstr "Ajouter pistes et vias" + +#: pcbnew/tool_pcb.cpp:429 +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 +msgid "Add text" +msgstr "Ajout de Texte" + +#: pcbnew/tool_pcb.cpp:451 +msgid "Add dimension" +msgstr "Ajout des cotes" + +#: pcbnew/tool_pcb.cpp:455 +#: gerbview/tool_gerber.cpp:376 +msgid "Add layer alignment target" +msgstr "Ajouter Mire 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'éléments" + +#: pcbnew/tool_pcb.cpp:465 +msgid "Offset adjust for drill and place files" +msgstr "Ajuste offset pour fichier de perçage et placement" + +#: pcbnew/tool_pcb.cpp:490 +msgid "Create line of specified length for microwave applications" +msgstr "Creation de lignes de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:496 +msgid "Create gap of specified length for microwave applications" +msgstr "Creation de gaps de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:504 +msgid "Create stub of specified length for microwave applications" +msgstr "Creation de stub de longueur spécifiée (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 spécifiée (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.h:335 +#: 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/mirepcb.cpp:78 +msgid "Target Properties" +msgstr "Propriétés de la mire" + +#: pcbnew/mirepcb.cpp:118 +msgid "shape +" +msgstr "Forme +" + +#: pcbnew/mirepcb.cpp:118 +msgid "shape X" +msgstr "Forme X" + +#: 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 éléments" #: 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 "Propriétés 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 créer 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 "Symétrique" #: 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 "Propriétés 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 Sélection" #: pcbnew/pcbcfg.cpp:68 #: eeschema/eeconfig.cpp:58 @@ -2652,6 +2590,69 @@ msgstr "Librairie: " msgid "Modules (%d items)" msgstr "Modules (%d éléments)" +#: 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 "Perçage 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 Sélection" - #: 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!" @@ -3422,112 +3422,13 @@ msgstr "&3D Visu" msgid "&Help" msgstr "&Aide" -#: pcbnew/set_color.cpp:50 -msgid "Copper Layers" -msgstr "Couches Cuivre." - -#: pcbnew/set_color.cpp:184 -msgid "Tech Layers" -msgstr "Couches Tech." - -#: pcbnew/set_color.cpp:323 -msgid "Ratsnest" -msgstr "Chevelu" - -#: pcbnew/set_color.cpp:332 -msgid "Pad Cu" -msgstr "Pad Cu" - -#: pcbnew/set_color.cpp:340 -msgid "Pad Cmp" -msgstr "Pad Cmp" - -#: pcbnew/set_color.cpp:348 -msgid "Text Module Cu" -msgstr "Texte Module Cu" - -#: pcbnew/set_color.cpp:356 -msgid "Text Module Cmp" -msgstr "Texte Module Cmp" - -#: pcbnew/set_color.cpp:364 -msgid "Text Module invisible" -msgstr "Texte Module invisible" - -#: pcbnew/set_color.cpp:372 -msgid "Anchors" -msgstr "Ancres" - -#: pcbnew/set_color.cpp:398 -msgid "Show Noconnect" -msgstr "Montrer Non Conn" - -#: pcbnew/set_color.cpp:407 -msgid "Show Modules Cmp" -msgstr "Afficher Modules Cmp" - -#: pcbnew/set_color.cpp:416 -msgid "Show Modules Cu" -msgstr "Afficher Modules Cu" - -#: pcbnew/set_color.cpp:577 -msgid "Colors:" -msgstr "Couleurs:" - -#: pcbnew/set_color.cpp:704 -#: gerbview/set_color.cpp:234 -msgid "Show All" -msgstr "Tout Afficher" - -#: pcbnew/set_color.cpp:710 -#: gerbview/set_color.cpp:239 -msgid "Show None" -msgstr "Rien Afficher" - -#: pcbnew/set_color.cpp:716 -msgid "Exit" -msgstr "Quitter" - -#: pcbnew/edit.cpp:247 -msgid "Add Tracks" -msgstr "Addition de pistes" - -#: pcbnew/edit.cpp:258 -msgid "Warning: Display Zone is OFF!!!" -msgstr "Attention: Affichage zones désactivé !!!" - -#: pcbnew/edit.cpp:265 -msgid "Add Mire" -msgstr "Ajouter Mires de superposition" - -#: pcbnew/edit.cpp:269 -msgid "Adjust Zero" -msgstr "Ajuster Zéro" - -#: pcbnew/edit.cpp:275 -msgid "Add Graphic" -msgstr "Addition éléments graphiques" - -#: pcbnew/edit.cpp:283 -msgid "Add Modules" -msgstr "Addition de Modules" - -#: pcbnew/edit.cpp:295 -msgid "Net Highlight" -msgstr "Surbrillance des équipotentielles" - -#: pcbnew/edit.cpp:299 -msgid "Local Ratsnest" -msgstr "Monter le chevelu général" - #: 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 différer" #: 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 degrés ?" -#: pcbnew/class_board_item.cpp:40 -#: eeschema/component_class.cpp:56 -msgid "Footprint" -msgstr "Module" +#: pcbnew/basepcbframe.cpp:119 +msgid "3D Frame already opened" +msgstr "Fenetre 3D déjà ouverte" -#: 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 "Enterrée" - -#: pcbnew/class_board_item.cpp:160 -msgid "Buried" -msgstr "Borgne" - -#: pcbnew/class_board_item.cpp:186 -msgid "Dimension" -msgstr "Dimension" - -#: pcbnew/class_board_item.cpp:190 -msgid "Mire" -msgstr "Mire" - -#: pcbnew/class_board_item.cpp:194 -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 "Déplace 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 "Sélection" +msgstr "Sélection..." + +#: 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 "Propriétés 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 "Eléments à 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 "Enterrée" -#: pcbnew/globaleditpad.cpp:142 -msgid "Change Drill" -msgstr "Change Perçage" +#: pcbnew/class_board_item.cpp:160 +msgid "Buried" +msgstr "Borgne" -#: pcbnew/globaleditpad.cpp:146 -msgid "Change Orient" -msgstr "Change Orientation" +#: pcbnew/class_board_item.cpp:186 +msgid "Dimension" +msgstr "Dimension" + +#: 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 déjà 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 "Déverrouiller 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 "Déplace 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 "Déplace Mire" +#: pcbnew/onrightclick.cpp:330 +msgid "Move Target" +msgstr "Déplacer 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 Dépl.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 "Sélection 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 "Sélection 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 "Sélection 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 "Déverrouiller 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 "Déplace tous les Modules" -#: pcbnew/onrightclick.cpp:402 +#: pcbnew/onrightclick.cpp:440 msgid "Move New Modules" msgstr "Déplace 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 "Réinit Non routés" -#: 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 Données 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 perçage via à défaut" -#: pcbnew/onrightclick.cpp:497 +#: pcbnew/onrightclick.cpp:535 msgid "Set via hole to alt value" msgstr "Ajuste perçage via à valeur alternative" -#: pcbnew/onrightclick.cpp:499 +#: pcbnew/onrightclick.cpp:537 msgid "Set the via hole alt value" msgstr "Ajuste la valeur alt. perçage via" -#: pcbnew/onrightclick.cpp:501 +#: pcbnew/onrightclick.cpp:539 msgid "Export Via hole to alt value" msgstr "Exporte perçage via à valeur alt." -#: pcbnew/onrightclick.cpp:503 +#: pcbnew/onrightclick.cpp:541 msgid "Export via hole to others id vias" msgstr "Exporte perçage via aux autres semblables." -#: pcbnew/onrightclick.cpp:505 +#: pcbnew/onrightclick.cpp:543 msgid "Set ALL via holes to default" msgstr "Ajuste perçage TOUTES vias au défaut" -#: pcbnew/onrightclick.cpp:518 +#: pcbnew/onrightclick.cpp:556 msgid "Move Node" msgstr "Déplace 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 "Déplace 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 verrouillée: Oui" -#: pcbnew/onrightclick.cpp:603 +#: pcbnew/onrightclick.cpp:641 msgid "Track Locked: No" msgstr "Piste verrouillée: 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 côté" -#: 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 autorisée 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 "Eléments à 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 Perçage" + +#: 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 autorisée 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,80 +5210,6 @@ 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 Préférences" - -#: 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 "Très 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: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 "Incrément" - -#: eeschema/options.cpp:216 -#: eeschema/dialog_options.cpp:300 -msgid "Delta Label:" -msgstr "Incrément Label:" - #: eeschema/sheetlab.cpp:72 msgid "PinSheet Properties:" msgstr "Propriétés des Pins de Hierarchie" @@ -5374,14 +5242,66 @@ msgstr "Incr msgid "Draw Options:" msgstr "Options de tracé:" +#: eeschema/dialog_options.cpp:212 +msgid "Show grid" +msgstr "Afficher grille" + +#: eeschema/dialog_options.cpp:217 +msgid "Normal (50 mils)" +msgstr "Normal (50 mils)" + +#: eeschema/dialog_options.cpp:218 +msgid "Small (25 mils)" +msgstr "Petit (25 mils)" + +#: eeschema/dialog_options.cpp:219 +msgid "Very small (10 mils)" +msgstr "Très petit (10 mils)" + +#: eeschema/dialog_options.cpp:220 +msgid "Special (5 mils)" +msgstr "Special (5 mils)" + +#: eeschema/dialog_options.cpp:221 +msgid "Special (2 mils)" +msgstr "Special (2 mils)" + +#: eeschema/dialog_options.cpp:222 +msgid "Special (1 mil)" +msgstr "Special (1 mil)" + +#: eeschema/dialog_options.cpp:224 +msgid "Grid Size" +msgstr "Dim Grille" + +#: eeschema/dialog_options.cpp:230 +msgid "Show alls" +msgstr "Tout Afficher" + +#: eeschema/dialog_options.cpp:232 +msgid "Show pins" +msgstr "Monter Pins" + #: eeschema/dialog_options.cpp:245 msgid "millimeter" msgstr "millimetre" +#: eeschema/dialog_options.cpp:256 +msgid "Horiz/Vertical" +msgstr "Horiz/Vertical" + +#: eeschema/dialog_options.cpp:259 +msgid "Wires - Bus orient" +msgstr "Fils-Bus Orient" + #: eeschema/dialog_options.cpp:284 msgid "Auto increment params" msgstr "Auto increment params" +#: eeschema/dialog_options.cpp:300 +msgid "Delta Label:" +msgstr "Incrément Label:" + #: 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 Préférences" + #: 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 "Propriétés 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" diff --git a/pcbnew/class_board_item.cpp b/pcbnew/class_board_item.cpp index 8aa29f32f7..30d5d157a4 100644 --- a/pcbnew/class_board_item.cpp +++ b/pcbnew/class_board_item.cpp @@ -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: diff --git a/pcbnew/class_pad.cpp b/pcbnew/class_pad.cpp index 5b0ad76827..c6d0634dc0 100644 --- a/pcbnew/class_pad.cpp +++ b/pcbnew/class_pad.cpp @@ -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 ); diff --git a/pcbnew/onrightclick.cpp b/pcbnew/onrightclick.cpp index b51e4992eb..b0fed0eaab 100644 --- a/pcbnew/onrightclick.cpp +++ b/pcbnew/onrightclick.cpp @@ -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 diff --git a/pcbnew/pcbpiste.cpp.notused b/pcbnew/pcbpiste.cpp.notused deleted file mode 100644 index adbcb28e92..0000000000 --- a/pcbnew/pcbpiste.cpp.notused +++ /dev/null @@ -1,305 +0,0 @@ -/******************************************************/ -/* 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 ); -} diff --git a/pcbnew/ratsnest.cpp b/pcbnew/ratsnest.cpp index 76b0e1328c..6c4becb344 100644 --- a/pcbnew/ratsnest.cpp +++ b/pcbnew/ratsnest.cpp @@ -1,9 +1,7 @@ -/************************************/ -/**** 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 ); - // Reaffichage des chevelus actifs + /* Compute the pad connections due to the existing tracks (physical connections)*/ + test_connexions( DC ); + + /* 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 - pt_liste_pad_tmp = NULL; + if( ref_pad->m_logical_connexion ) + continue; // Pad already connected + + 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; diff --git a/pcbnew/struct.cpp.notused b/pcbnew/struct.cpp.notused deleted file mode 100644 index 573cf4b3b8..0000000000 --- a/pcbnew/struct.cpp.notused +++ /dev/null @@ -1,58 +0,0 @@ -/***********************************************/ -/* 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