diff --git a/include/wxPcbStruct.h b/include/wxPcbStruct.h index 39f516b989..10bf7e695a 100644 --- a/include/wxPcbStruct.h +++ b/include/wxPcbStruct.h @@ -218,9 +218,8 @@ public: MODULE* module, int angle, bool incremental ); - void Place_Module( MODULE* module, wxDC* DC ); - void InstallExchangeModuleFrame( MODULE* ExchangeModuleModule, - wxDC* DC, const wxPoint& pos ); + void Place_Module( MODULE* module, wxDC* DC, bool aDoNotRecreateRatsnest = false ); + void InstallExchangeModuleFrame( MODULE* ExchangeModuleModule ); // Graphic items edition: void InstallGraphicItemPropertiesDialog( DRAWSEGMENT* aItem, wxDC* aDC ); diff --git a/internat/fr/kicad.mo b/internat/fr/kicad.mo index fbae68be7d..1387822f3c 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 4b607b33c9..22eb64457e 100644 --- a/internat/fr/kicad.po +++ b/internat/fr/kicad.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: kicad\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-06-18 20:32+0100\n" -"PO-Revision-Date: 2009-06-18 20:35+0100\n" +"POT-Creation-Date: 2009-06-20 14:32+0100\n" +"PO-Revision-Date: 2009-06-20 16:11+0100\n" "Last-Translator: \n" "Language-Team: kicad team \n" "MIME-Version: 1.0\n" @@ -83,28 +83,28 @@ msgstr "Change modules <%s> -> <%s> (val = %s)?" msgid "Change modules <%s> -> <%s> ?" msgstr "Change modules <%s> -> <%s> ?" -#: pcbnew/xchgmod.cpp:418 +#: pcbnew/xchgmod.cpp:411 msgid "Change ALL modules ?" msgstr "Change TOUS les modules ?" -#: pcbnew/xchgmod.cpp:480 +#: pcbnew/xchgmod.cpp:467 #, c-format msgid "Change module %s (%s) " msgstr "Change module %s (%s) " -#: pcbnew/xchgmod.cpp:628 +#: pcbnew/xchgmod.cpp:618 msgid "No Modules!" msgstr "Pas de Modules!" -#: pcbnew/xchgmod.cpp:635 +#: pcbnew/xchgmod.cpp:625 msgid "Component files (." msgstr "Fichiers de composant (." -#: pcbnew/xchgmod.cpp:638 +#: pcbnew/xchgmod.cpp:628 msgid "Save Component Files" msgstr "Sauver Fichier Composant" -#: pcbnew/xchgmod.cpp:650 +#: pcbnew/xchgmod.cpp:640 msgid "Unable to create file " msgstr "Impossible de créer le fichier " @@ -366,6 +366,7 @@ msgid "Layer" msgstr "Couche" #: pcbnew/class_pcb_text.cpp:242 +#: pcbnew/cotation.cpp:109 msgid "Mirror" msgstr "Miroir" @@ -382,6 +383,7 @@ msgid "Orient" msgstr "Orient" #: pcbnew/class_pcb_text.cpp:252 +#: pcbnew/cotation.cpp:125 msgid "Width" msgstr "Epaisseur" @@ -393,7 +395,7 @@ msgstr "Taille H" msgid "V Size" msgstr "Taille V" -#: pcbnew/pcbnew.cpp:108 +#: pcbnew/pcbnew.cpp:107 msgid "Pcbnew is already running, Continue?" msgstr "Pcbnew est en cours d'exécution. Continuer ?" @@ -402,19 +404,14 @@ msgid "Dimension properties" msgstr "Propriétés des Cotes" #: pcbnew/cotation.cpp:103 -#: pcbnew/muonde.cpp:865 -#: pcbnew/dialog_gendrill.cpp:291 msgid "OK" msgstr "OK" #: pcbnew/cotation.cpp:106 -#: pcbnew/muonde.cpp:868 -#: pcbnew/dialog_gendrill.cpp:295 msgid "Cancel" msgstr "Annuler" #: pcbnew/cotation.cpp:109 -#: pcbnew/muonde.cpp:874 msgid "Normal" msgstr "Normal" @@ -423,7 +420,6 @@ msgid "Display" msgstr "Affichage" #: pcbnew/cotation.cpp:121 -#: pcbnew/muonde.cpp:881 msgid "Size" msgstr "Taille " @@ -611,101 +607,14 @@ msgstr "Fichiers rapport de perçage (.rpt)*.rpt" msgid "Save Drill Report File" msgstr "Sauver Fichier Rapport de Perçage" -#: pcbnew/pcbframe.cpp:304 -msgid "Board modified, Save before exit ?" -msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" +#: pcbnew/hotkeys.cpp:477 +#, c-format +msgid "Footprint %s found, but locked" +msgstr "Module %s trouvé, mais verrouillé" -#: pcbnew/pcbframe.cpp:305 -msgid "Confirmation" -msgstr "Confirmation" - -#: pcbnew/pcbframe.cpp:410 -msgid "DRC Off (Disable !!!), Currently: DRC is active" -msgstr "DRC off (désactivée !!!), actuellement DRC active" - -#: pcbnew/pcbframe.cpp:411 -msgid "DRC On (Currently: DRC is inactive !!!)" -msgstr "DRC On (Actuellement, DRC désactivée !!!)" - -#: pcbnew/pcbframe.cpp:422 -msgid "Polar Coords not show" -msgstr "Coord Polaires non affichées" - -#: pcbnew/pcbframe.cpp:423 -msgid "Display Polar Coords" -msgstr "Affichage coord Polaires" - -#: pcbnew/pcbframe.cpp:428 -msgid "Grid not show" -msgstr "Grille non montrée" - -#: pcbnew/pcbframe.cpp:428 -msgid "Show Grid" -msgstr "Afficher grille" - -#: pcbnew/pcbframe.cpp:437 -msgid "Hide General ratsnest" -msgstr "Ne pas afficher le chevelu général" - -#: pcbnew/pcbframe.cpp:438 -msgid "Show General ratsnest" -msgstr "Afficher le chevelu général" - -#: pcbnew/pcbframe.cpp:444 -msgid "Hide Module ratsnest" -msgstr "Ne pas montrer le chevelu du module" - -#: pcbnew/pcbframe.cpp:445 -msgid "Show Module ratsnest" -msgstr "Montrer le chevelu du module" - -#: pcbnew/pcbframe.cpp:452 -msgid "Disable Auto Delete old Track" -msgstr "Ne pas Autoriser l'effacement automatique des pistes" - -#: pcbnew/pcbframe.cpp:453 -msgid "Enable Auto Delete old Track" -msgstr "Autoriser l'effacement automatique des pistes" - -#: pcbnew/pcbframe.cpp:460 -msgid "Show Pads Sketch mode" -msgstr "Afficher pastilles en contour" - -#: pcbnew/pcbframe.cpp:461 -msgid "Show pads filled mode" -msgstr "Afficher pastilles en mode plein" - -#: pcbnew/pcbframe.cpp:467 -msgid "Show Tracks Sketch mode" -msgstr "Afficher pistes en contour" - -#: pcbnew/pcbframe.cpp:468 -msgid "Show Tracks filled mode" -msgstr "Afficher pistes en mode plein" - -#: pcbnew/pcbframe.cpp:474 -msgid "Normal Contrast Mode Display" -msgstr "Mode d'affichage Contraste normal" - -#: pcbnew/pcbframe.cpp:475 -msgid "Hight Contrast Mode Display" -msgstr "Mode d'affichage Haut Contraste" - -#: pcbnew/pcbframe.cpp:488 -msgid "Track" -msgstr "Piste" - -#: pcbnew/pcbframe.cpp:520 -msgid "Via" -msgstr "Via" - -#: pcbnew/pcbframe.cpp:592 -msgid "3D Frame already opened" -msgstr "Fenêtre 3D déjà ouverte" - -#: pcbnew/pcbframe.cpp:596 -msgid "3D Viewer" -msgstr "Visu 3D" +#: pcbnew/hotkeys.cpp:639 +msgid "Delete module?" +msgstr "Effacer Module?" #: pcbnew/editmod.cpp:43 msgid "Module Editor" @@ -768,9 +677,33 @@ msgstr "Place Ancre" msgid "Delete item" msgstr "Suppression d'éléments" -#: pcbnew/ioascii.cpp:174 -msgid "Error: Unexpected end of file !" -msgstr "Erreur: Fin de fichier inattendue !" +#: pcbnew/initpcb.cpp:133 +msgid "Current Board will be lost ?" +msgstr "Le C.I. courant sera perdu ?" + +#: pcbnew/initpcb.cpp:187 +msgid "Delete Zones ?" +msgstr "Effacer Zones ?" + +#: pcbnew/initpcb.cpp:208 +msgid "Delete Board edges ?" +msgstr "Effacement contour PCB" + +#: pcbnew/initpcb.cpp:213 +msgid "Delete draw items?" +msgstr "Suppression éléments graphiques?" + +#: pcbnew/initpcb.cpp:255 +msgid "Delete Tracks?" +msgstr "Effacer Pistes ?" + +#: pcbnew/initpcb.cpp:278 +msgid "Delete Modules?" +msgstr "Effacement des Modules?" + +#: pcbnew/initpcb.cpp:300 +msgid "Delete Pcb Texts" +msgstr "Effacer Textes Pcb" #: pcbnew/class_drc_item.cpp:39 msgid "Unconnected pads" @@ -1045,14 +978,269 @@ msgstr "Micro Vias:" msgid "Buried Vias:" msgstr "Via Enterrées:" -#: pcbnew/hotkeys.cpp:471 -#, c-format -msgid "Footprint %s found, but locked" -msgstr "Module %s trouvé, mais verrouillé" +#: pcbnew/tool_pcb.cpp:30 +msgid "" +"Show active layer selections\n" +"and select layer pair for route and place via" +msgstr "" +"Affiche sélections couche active\n" +"et sélection paire de couches pour routage et placement via" -#: pcbnew/hotkeys.cpp:643 -msgid "Delete module?" -msgstr "Effacer Module?" +#: pcbnew/tool_pcb.cpp:204 +msgid "New board" +msgstr "Nouveau Circuit Imprimé" + +#: pcbnew/tool_pcb.cpp:206 +msgid "Open existing board" +msgstr "Ouvrir C.I. existant" + +#: pcbnew/tool_pcb.cpp:208 +msgid "Save board" +msgstr "Sauver Circuit Imprimé" + +#: pcbnew/tool_pcb.cpp:212 +msgid "Page settings (size, texts)" +msgstr "Ajustage de la feuille de dessin (dimensions, textes)" + +#: pcbnew/tool_pcb.cpp:217 +msgid "Open module editor" +msgstr "Ouvrir Editeur de modules" + +#: pcbnew/tool_pcb.cpp:221 +msgid "Cut selected item" +msgstr "Suppression des éléments sélectionnés" + +#: pcbnew/tool_pcb.cpp:225 +msgid "Copy selected item" +msgstr "Copie des éléments sélectionnés" + +#: pcbnew/tool_pcb.cpp:228 +msgid "Paste" +msgstr "Copie des éléments sauvegardés" + +#: pcbnew/tool_pcb.cpp:232 +msgid "Undelete" +msgstr "Annulation du dernier effacement" + +#: pcbnew/tool_pcb.cpp:236 +msgid "Print board" +msgstr "Imprimer C.I." + +#: pcbnew/tool_pcb.cpp:238 +msgid "Plot (HPGL, PostScript, or GERBER format)" +msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER" + +#: pcbnew/tool_pcb.cpp:241 +msgid "Zoom in" +msgstr "Zoom +" + +#: pcbnew/tool_pcb.cpp:246 +msgid "Zoom out" +msgstr "Zoom -" + +#: pcbnew/tool_pcb.cpp:251 +msgid "Redraw view" +msgstr "Redessin de l'écran" + +#: pcbnew/tool_pcb.cpp:258 +msgid "Zoom auto" +msgstr "Zoom Automatique" + +#: pcbnew/tool_pcb.cpp:261 +msgid "Find components and texts" +msgstr "Recherche de composants et textes" + +#: pcbnew/tool_pcb.cpp:269 +msgid "Read netlist" +msgstr "Lire Netliste" + +#: pcbnew/tool_pcb.cpp:271 +msgid "Pcb Design Rules Check" +msgstr "Contrôle des règles de conception" + +#: pcbnew/tool_pcb.cpp:283 +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:287 +msgid "Mode Track and Autorouting" +msgstr "Mode Pistes et Autoroutage" + +#: pcbnew/tool_pcb.cpp:293 +msgid "Fast access to theWeb Based FreeROUTE advanced router" +msgstr "Acces rapide au routeur avancé FreeROUTE sur le Web" + +#: pcbnew/tool_pcb.cpp:320 +msgid "Drc OFF" +msgstr "Drc DESACTIVEE" + +#: pcbnew/tool_pcb.cpp:323 +msgid "Display Grid OFF" +msgstr "Suppression de l'affichage de la grille" + +#: pcbnew/tool_pcb.cpp:326 +msgid "Display Polar Coord ON" +msgstr "Activer affichage coord Polaires" + +#: pcbnew/tool_pcb.cpp:329 +msgid "Units in inches" +msgstr "Unités en pouces" + +#: pcbnew/tool_pcb.cpp:332 +msgid "Units in millimeters" +msgstr "Unités en millimètres" + +#: pcbnew/tool_pcb.cpp:335 +msgid "Change Cursor Shape" +msgstr "Sélection de la forme du curseur" + +#: pcbnew/tool_pcb.cpp:340 +msgid "Show General Ratsnest" +msgstr "Montrer le chevelu général" + +#: pcbnew/tool_pcb.cpp:343 +msgid "Show Module Ratsnest when moving" +msgstr "Montrer le chevelu du module pendant déplacement" + +#: pcbnew/tool_pcb.cpp:349 +msgid "Enable Auto Del Track" +msgstr "Autoriser l'effacement automatique des pistes" + +#: pcbnew/tool_pcb.cpp:354 +msgid "Show filled areas in zones" +msgstr "Afficher les surfaces remplies dans les zones" + +#: pcbnew/tool_pcb.cpp:357 +msgid "Do not show filled areas in zones" +msgstr "Ne pas afficher les surfaces remplies dans les zones" + +#: pcbnew/tool_pcb.cpp:360 +msgid "Show outlines of filled areas only in zones" +msgstr "Afficher uniquement les contours des surfaces remplies dans les zones" + +#: pcbnew/tool_pcb.cpp:365 +msgid "Show Pads Sketch" +msgstr "Afficher pastilles en contour" + +#: pcbnew/tool_pcb.cpp:369 +msgid "Show Tracks Sketch" +msgstr "Afficher Pistes en Contour" + +#: pcbnew/tool_pcb.cpp:374 +msgid "High Contrast Mode Display" +msgstr "Mode d'affichage Haut Contraste" + +#: pcbnew/tool_pcb.cpp:381 +msgid "Show Invisible Text" +msgstr "Montrer textes invisibles" + +#: pcbnew/tool_pcb.cpp:392 +msgid "" +"Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n" +" This is a experimental feature (under development)" +msgstr "" +"Affiche/supprime le toolbar vertical auxiliaire (outils pour applications micro-ondes)\n" +"C'est un outil expérimental (en cours de développement)" + +#: pcbnew/tool_pcb.cpp:422 +msgid "Net highlight" +msgstr "Surbrillance des équipotentielles" + +#: pcbnew/tool_pcb.cpp:427 +msgid "Display local ratsnest (pad or module)" +msgstr "Afficher le chevelu local (pastilles ou modules)" + +#: pcbnew/tool_pcb.cpp:433 +msgid "Add modules" +msgstr "Addition de Modules" + +#: pcbnew/tool_pcb.cpp:437 +msgid "Add tracks and vias" +msgstr "Ajouter pistes et vias" + +#: pcbnew/tool_pcb.cpp:441 +msgid "Add zones" +msgstr "Addition de Zones" + +#: pcbnew/tool_pcb.cpp:446 +msgid "Add graphic line or polygon" +msgstr "Addition de lignes ou polygones graphiques" + +#: pcbnew/tool_pcb.cpp:450 +msgid "Add graphic circle" +msgstr "Addition de graphiques (Cercle)" + +#: pcbnew/tool_pcb.cpp:454 +msgid "Add graphic arc" +msgstr "Addition de graphiques (Arc de Cercle)" + +#: pcbnew/tool_pcb.cpp:458 +msgid "Add text" +msgstr "Ajout de Texte" + +#: pcbnew/tool_pcb.cpp:463 +msgid "Add dimension" +msgstr "Ajout des cotes" + +#: pcbnew/tool_pcb.cpp:467 +msgid "Add layer alignment target" +msgstr "Ajouter Mire de superposition" + +#: pcbnew/tool_pcb.cpp:472 +msgid "Delete items" +msgstr "Suppression d'éléments" + +#: pcbnew/tool_pcb.cpp:477 +msgid "Offset adjust for drill and place files" +msgstr "Ajuste offset pour fichier de perçage et placement" + +#: pcbnew/tool_pcb.cpp:503 +msgid "Create line of specified length for microwave applications" +msgstr "Création de lignes de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:507 +msgid "Create gap of specified length for microwave applications" +msgstr "Création de gaps de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:513 +msgid "Create stub of specified length for microwave applications" +msgstr "Création de stub de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:517 +msgid "Create stub (arc) of specified length for microwave applications" +msgstr "Création de stub (arc) de longueur spécifiée (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:522 +msgid "Create a polynomial shape for microwave applications" +msgstr "Création de formes polynomiales (pour applications micro-ondes)" + +#: pcbnew/tool_pcb.cpp:569 +msgid "" +"Auto track width: when starting on an existing track use its width\n" +"otherwise, use current width setting" +msgstr "" +"Largeur de piste automatique: si on démarre sur une piste existante, utiliser sa largeur\n" +" sinon utiliser la largeur courante" + +#: pcbnew/tool_pcb.cpp:594 +msgid "Auto" +msgstr "Auto" + +#: pcbnew/tool_pcb.cpp:598 +msgid "Zoom " +msgstr "Zoom " + +#: pcbnew/tool_pcb.cpp:618 +msgid "Grid" +msgstr "Grille" + +#: pcbnew/tool_pcb.cpp:636 +msgid "User Grid" +msgstr "Grille perso" + +#: pcbnew/tool_pcb.cpp:751 +msgid "+/- to switch" +msgstr "+/- pour commuter" #: pcbnew/deltrack.cpp:141 msgid "Delete NET ?" @@ -1310,6 +1498,19 @@ msgstr "Déplacer Bloc" msgid "Copy Block" msgstr "Copie Bloc" +#: pcbnew/pcbcfg.cpp:73 +msgid "Read Project File" +msgstr "Lire Fichier Projet" + +#: pcbnew/pcbcfg.cpp:83 +#, c-format +msgid "File %s not found" +msgstr "Fichier %s non trouvé" + +#: pcbnew/pcbcfg.cpp:226 +msgid "Save Project File" +msgstr "Sauver Fichier Projet" + #: pcbnew/loadcmp.cpp:105 msgid "Place module" msgstr "Place module" @@ -1363,68 +1564,6 @@ msgstr " chargé" msgid "Modules [%d items]" msgstr "Modules [%d éléments]" -#: pcbnew/files.cpp:21 -msgid "Printed circuit board" -msgstr "Circuit imprimé" - -#: pcbnew/files.cpp:85 -msgid "Recovery file " -msgstr "Fichier de secours " - -#: pcbnew/files.cpp:85 -msgid " not found" -msgstr " non trouvé" - -#: pcbnew/files.cpp:91 -msgid "Ok to load Recovery file " -msgstr "Ok pour charger le fichier de secours" - -#: pcbnew/files.cpp:152 -msgid "Board Modified: Continue ?" -msgstr "Circuit imprimé modifié, Continuer ?" - -#: pcbnew/files.cpp:172 -msgid "Open Board File:" -msgstr "Ouvrir Fichier C.I.:" - -#: pcbnew/files.cpp:199 -#, c-format -msgid "File <%s> not found" -msgstr " fichier %s non trouvé" - -#: pcbnew/files.cpp:218 -msgid "This file was created by a more recent version of PCBnew and may not load correctly. Please consider updating!" -msgstr "Ce fichier a été créé par une version plus récente de PCBnew et peut être incorrectement chargé. SVP penser à une mise à jour!" - -#: pcbnew/files.cpp:222 -msgid "This file was created by an older version of PCBnew. It will be stored in the new file format when you save this file again." -msgstr "Ce fichier a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde." - -#: pcbnew/files.cpp:309 -msgid "Save Board File" -msgstr "Sauver Fichier C.I." - -#: pcbnew/files.cpp:343 -msgid "Warning: unable to create backup file " -msgstr "Attention: impossible de créer un fichier backup " - -#: pcbnew/files.cpp:360 -#: pcbnew/plothpgl.cpp:68 -msgid "Unable to create " -msgstr "Impossible de créer " - -#: pcbnew/files.cpp:379 -msgid "Backup file: " -msgstr "Fichier backup: " - -#: pcbnew/files.cpp:383 -msgid "Wrote board file: " -msgstr "Ecriture fichier CI: " - -#: pcbnew/files.cpp:385 -msgid "Failed to create " -msgstr "Impossible de créer fichier " - #: pcbnew/edgemod.cpp:205 msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure" msgstr "L'élément graphique sera sur une couche cuivre. C'est très dangereux. Etes vous sûr" @@ -1453,6 +1592,10 @@ msgstr "Filtre Equipot" msgid "List Nets" msgstr "Liste équipots" +#: pcbnew/plothpgl.cpp:68 +msgid "Unable to create " +msgstr "Impossible de créer " + #: pcbnew/plothpgl.cpp:75 msgid "File" msgstr "Fichier" @@ -1690,6 +1833,65 @@ msgstr "Segment en cours d'édition" msgid "Delete Layer " msgstr "Effacer Couche" +#: pcbnew/files.cpp:21 +msgid "Printed circuit board" +msgstr "Circuit imprimé" + +#: pcbnew/files.cpp:85 +msgid "Recovery file " +msgstr "Fichier de secours " + +#: pcbnew/files.cpp:85 +#: pcbnew/librairi.cpp:243 +msgid " not found" +msgstr " non trouvé" + +#: pcbnew/files.cpp:91 +msgid "Ok to load Recovery file " +msgstr "Ok pour charger le fichier de secours" + +#: pcbnew/files.cpp:152 +msgid "Board Modified: Continue ?" +msgstr "Circuit imprimé modifié, Continuer ?" + +#: pcbnew/files.cpp:173 +msgid "Open Board File:" +msgstr "Ouvrir Fichier C.I.:" + +#: pcbnew/files.cpp:200 +#: pcbnew/librairi.cpp:79 +#, c-format +msgid "File <%s> not found" +msgstr " fichier %s non trouvé" + +#: pcbnew/files.cpp:219 +msgid "This file was created by a more recent version of PCBnew and may not load correctly. Please consider updating!" +msgstr "Ce fichier a été créé par une version plus récente de PCBnew et peut être incorrectement chargé. SVP penser à une mise à jour!" + +#: pcbnew/files.cpp:223 +msgid "This file was created by an older version of PCBnew. It will be stored in the new file format when you save this file again." +msgstr "Ce fichier a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde." + +#: pcbnew/files.cpp:313 +msgid "Save Board File" +msgstr "Sauver Fichier C.I." + +#: pcbnew/files.cpp:347 +msgid "Warning: unable to create backup file " +msgstr "Attention: impossible de créer un fichier backup " + +#: pcbnew/files.cpp:383 +msgid "Backup file: " +msgstr "Fichier backup: " + +#: pcbnew/files.cpp:387 +msgid "Wrote board file: " +msgstr "Ecriture fichier CI: " + +#: pcbnew/files.cpp:389 +msgid "Failed to create " +msgstr "Impossible de créer fichier " + #: pcbnew/librairi.cpp:33 msgid "Kicad foot print export files (*.emp)|*.emp" msgstr "Kicad fichiers export modules (*.emp)|*.emp" @@ -2142,10 +2344,6 @@ msgstr "Pistes et Vias" msgid "Adjust size and width for tracks and vias" msgstr "Ajuster largeur des pistes et diamètre de vias" -#: pcbnew/menubarpcb.cpp:219 -msgid "Grid" -msgstr "Grille" - #: pcbnew/menubarpcb.cpp:220 msgid "Adjust User Grid" msgstr "Ajuster Grille utilisateur" @@ -2398,33 +2596,105 @@ msgstr "Valeur incorrecte pour offset du pad" msgid "Unknown netname, no change" msgstr "Net inconnu, pas de changement" -#: pcbnew/initpcb.cpp:133 -msgid "Current Board will be lost ?" -msgstr "Le C.I. courant sera perdu ?" +#: pcbnew/pcbframe.cpp:309 +msgid "Board modified, Save before exit ?" +msgstr "Circuit Imprimé modifié, Sauver avant de quitter ?" -#: pcbnew/initpcb.cpp:185 -msgid "Delete Zones ?" -msgstr "Effacer Zones ?" +#: pcbnew/pcbframe.cpp:310 +msgid "Confirmation" +msgstr "Confirmation" -#: pcbnew/initpcb.cpp:206 -msgid "Delete Board edges ?" -msgstr "Effacement contour PCB" +#: pcbnew/pcbframe.cpp:415 +msgid "DRC Off (Disable !!!), Currently: DRC is active" +msgstr "DRC off (désactivée !!!), actuellement DRC active" -#: pcbnew/initpcb.cpp:211 -msgid "Delete draw items?" -msgstr "Suppression éléments graphiques?" +#: pcbnew/pcbframe.cpp:416 +msgid "DRC On (Currently: DRC is inactive !!!)" +msgstr "DRC On (Actuellement, DRC désactivée !!!)" -#: pcbnew/initpcb.cpp:253 -msgid "Delete Tracks?" -msgstr "Effacer Pistes ?" +#: pcbnew/pcbframe.cpp:427 +msgid "Polar Coords not show" +msgstr "Coord Polaires non affichées" -#: pcbnew/initpcb.cpp:276 -msgid "Delete Modules?" -msgstr "Effacement des Modules?" +#: pcbnew/pcbframe.cpp:428 +msgid "Display Polar Coords" +msgstr "Affichage coord Polaires" -#: pcbnew/initpcb.cpp:298 -msgid "Delete Pcb Texts" -msgstr "Effacer Textes Pcb" +#: pcbnew/pcbframe.cpp:433 +msgid "Grid not show" +msgstr "Grille non montrée" + +#: pcbnew/pcbframe.cpp:433 +msgid "Show Grid" +msgstr "Afficher grille" + +#: pcbnew/pcbframe.cpp:442 +msgid "Hide General ratsnest" +msgstr "Ne pas afficher le chevelu général" + +#: pcbnew/pcbframe.cpp:443 +msgid "Show General ratsnest" +msgstr "Afficher le chevelu général" + +#: pcbnew/pcbframe.cpp:449 +msgid "Hide Module ratsnest" +msgstr "Ne pas montrer le chevelu du module" + +#: pcbnew/pcbframe.cpp:450 +msgid "Show Module ratsnest" +msgstr "Montrer le chevelu du module" + +#: pcbnew/pcbframe.cpp:457 +msgid "Disable Auto Delete old Track" +msgstr "Ne pas Autoriser l'effacement automatique des pistes" + +#: pcbnew/pcbframe.cpp:458 +msgid "Enable Auto Delete old Track" +msgstr "Autoriser l'effacement automatique des pistes" + +#: pcbnew/pcbframe.cpp:465 +msgid "Show Pads Sketch mode" +msgstr "Afficher pastilles en contour" + +#: pcbnew/pcbframe.cpp:466 +msgid "Show pads filled mode" +msgstr "Afficher pastilles en mode plein" + +#: pcbnew/pcbframe.cpp:472 +msgid "Show Tracks Sketch mode" +msgstr "Afficher pistes en contour" + +#: pcbnew/pcbframe.cpp:473 +msgid "Show Tracks filled mode" +msgstr "Afficher pistes en mode plein" + +#: pcbnew/pcbframe.cpp:479 +msgid "Normal Contrast Mode Display" +msgstr "Mode d'affichage Contraste normal" + +#: pcbnew/pcbframe.cpp:486 +msgid "Hide Invisible Text" +msgstr "Cacher textes invisibles" + +#: pcbnew/pcbframe.cpp:499 +msgid "Track" +msgstr "Piste" + +#: pcbnew/pcbframe.cpp:531 +msgid "Clearance" +msgstr "Isolation" + +#: pcbnew/pcbframe.cpp:563 +msgid "Via" +msgstr "Via" + +#: pcbnew/pcbframe.cpp:635 +msgid "3D Frame already opened" +msgstr "Fenêtre 3D déjà ouverte" + +#: pcbnew/pcbframe.cpp:639 +msgid "3D Viewer" +msgstr "Visu 3D" #: pcbnew/clean.cpp:179 msgid "Delete unconnected tracks:" @@ -2549,6 +2819,54 @@ msgstr "" "Plan de perçage: trop de diamètres différents pour tracer 1 symbole par diamètre (max 13)\n" "Le tracé utilise des cercles pour quelques valeurs " +#: pcbnew/ioascii.cpp:174 +msgid "Error: Unexpected end of file !" +msgstr "Erreur: Fin de fichier inattendue !" + +#: pcbnew/edit.cpp:418 +msgid "Add Tracks" +msgstr "Addition de Pistes" + +#: pcbnew/edit.cpp:427 +msgid "Add Zones" +msgstr "Addition de Zones" + +#: pcbnew/edit.cpp:429 +msgid "Warning: Display Zone is OFF!!!" +msgstr "Attention: Affichage zones désactivé !!!" + +#: pcbnew/edit.cpp:435 +msgid "Add Layer Alignment Target" +msgstr "Ajouter Mire de superposition" + +#: pcbnew/edit.cpp:439 +msgid "Adjust Zero" +msgstr "Ajuster Zéro" + +#: pcbnew/edit.cpp:445 +msgid "Add Graphic" +msgstr "Addition éléments graphiques" + +#: pcbnew/edit.cpp:449 +msgid "Add Text" +msgstr "Ajout de Texte" + +#: pcbnew/edit.cpp:453 +msgid "Add Modules" +msgstr "Addition de Modules" + +#: pcbnew/edit.cpp:457 +msgid "Add Dimension" +msgstr "Ajout de cotes" + +#: pcbnew/edit.cpp:465 +msgid "Net Highlight" +msgstr "Surbrillance des équipotentielles" + +#: pcbnew/edit.cpp:469 +msgid "Local Ratsnest" +msgstr "Montrer le chevelu général" + #: pcbnew/class_zone.cpp:871 #: pcbnew/class_board_item.cpp:134 msgid "Zone Outline" @@ -2667,63 +2985,6 @@ msgstr "Créer Fichier " msgid " error" msgstr " erreur" -#: pcbnew/edit.cpp:262 -msgid "Add Tracks" -msgstr "Addition de Pistes" - -#: pcbnew/edit.cpp:271 -msgid "Add Zones" -msgstr "Addition de Zones" - -#: pcbnew/edit.cpp:273 -msgid "Warning: Display Zone is OFF!!!" -msgstr "Attention: Affichage zones désactivé !!!" - -#: pcbnew/edit.cpp:279 -msgid "Add Layer Alignment Target" -msgstr "Ajouter Mire de superposition" - -#: pcbnew/edit.cpp:283 -msgid "Adjust Zero" -msgstr "Ajuster Zéro" - -#: pcbnew/edit.cpp:289 -msgid "Add Graphic" -msgstr "Addition éléments graphiques" - -#: pcbnew/edit.cpp:293 -msgid "Add Text" -msgstr "Ajout de Texte" - -#: pcbnew/edit.cpp:297 -msgid "Add Modules" -msgstr "Addition de Modules" - -#: pcbnew/edit.cpp:301 -msgid "Add Dimension" -msgstr "Ajout de cotes" - -#: pcbnew/edit.cpp:309 -msgid "Net Highlight" -msgstr "Surbrillance des équipotentielles" - -#: pcbnew/edit.cpp:313 -msgid "Local Ratsnest" -msgstr "Montrer le chevelu général" - -#: pcbnew/pcbcfg.cpp:73 -msgid "Read Project File" -msgstr "Lire Fichier Projet" - -#: pcbnew/pcbcfg.cpp:83 -#, c-format -msgid "File %s not found" -msgstr "Fichier %s non trouvé" - -#: pcbnew/pcbcfg.cpp:223 -msgid "Save Project File" -msgstr "Sauver Fichier Projet" - #: pcbnew/class_board_item.cpp:24 msgid "Rect" msgstr "Rect" @@ -2830,11 +3091,6 @@ msgstr "dimension" msgid "Options" msgstr "Options" -#: pcbnew/dialog_drc_base.cpp:35 -#: pcbnew/dialog_track_options_base.cpp:106 -msgid "Clearance" -msgstr "Isolation" - #: pcbnew/dialog_drc_base.cpp:40 #: pcbnew/dialog_drc_base.cpp:49 #: pcbnew/dialog_drc_base.cpp:61 @@ -3145,267 +3401,6 @@ msgstr "Fichier rapport DRC (.rpt)|*.rpt" msgid "Save DRC Report File" msgstr "Sauver Fichier Rapport DRC:" -#: pcbnew/tool_pcb.cpp:30 -msgid "" -"Show active layer selections\n" -"and select layer pair for route and place via" -msgstr "" -"Affiche sélections couche active\n" -"et sélection paire de couches pour routage et placement via" - -#: pcbnew/tool_pcb.cpp:204 -msgid "New board" -msgstr "Nouveau Circuit Imprimé" - -#: pcbnew/tool_pcb.cpp:206 -msgid "Open existing board" -msgstr "Ouvrir C.I. existant" - -#: pcbnew/tool_pcb.cpp:208 -msgid "Save board" -msgstr "Sauver Circuit Imprimé" - -#: pcbnew/tool_pcb.cpp:212 -msgid "Page settings (size, texts)" -msgstr "Ajustage de la feuille de dessin (dimensions, textes)" - -#: pcbnew/tool_pcb.cpp:217 -msgid "Open module editor" -msgstr "Ouvrir Editeur de modules" - -#: pcbnew/tool_pcb.cpp:221 -msgid "Cut selected item" -msgstr "Suppression des éléments sélectionnés" - -#: pcbnew/tool_pcb.cpp:225 -msgid "Copy selected item" -msgstr "Copie des éléments sélectionnés" - -#: pcbnew/tool_pcb.cpp:228 -msgid "Paste" -msgstr "Copie des éléments sauvegardés" - -#: pcbnew/tool_pcb.cpp:232 -msgid "Undelete" -msgstr "Annulation du dernier effacement" - -#: pcbnew/tool_pcb.cpp:236 -msgid "Print board" -msgstr "Imprimer C.I." - -#: pcbnew/tool_pcb.cpp:238 -msgid "Plot (HPGL, PostScript, or GERBER format)" -msgstr "Tracer en format HPGL, POSTSCRIPT ou GERBER" - -#: pcbnew/tool_pcb.cpp:241 -msgid "Zoom in" -msgstr "Zoom +" - -#: pcbnew/tool_pcb.cpp:246 -msgid "Zoom out" -msgstr "Zoom -" - -#: pcbnew/tool_pcb.cpp:251 -msgid "Redraw view" -msgstr "Redessin de l'écran" - -#: pcbnew/tool_pcb.cpp:258 -msgid "Zoom auto" -msgstr "Zoom Automatique" - -#: pcbnew/tool_pcb.cpp:261 -msgid "Find components and texts" -msgstr "Recherche de composants et textes" - -#: pcbnew/tool_pcb.cpp:269 -msgid "Read netlist" -msgstr "Lire Netliste" - -#: pcbnew/tool_pcb.cpp:271 -msgid "Pcb Design Rules Check" -msgstr "Contrôle des règles de conception" - -#: pcbnew/tool_pcb.cpp:283 -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:287 -msgid "Mode Track and Autorouting" -msgstr "Mode Pistes et Autoroutage" - -#: pcbnew/tool_pcb.cpp:293 -msgid "Fast access to theWeb Based FreeROUTE advanced router" -msgstr "Acces rapide au routeur avancé FreeROUTE sur le Web" - -#: pcbnew/tool_pcb.cpp:320 -msgid "Drc OFF" -msgstr "Drc DESACTIVEE" - -#: pcbnew/tool_pcb.cpp:323 -msgid "Display Grid OFF" -msgstr "Suppression de l'affichage de la grille" - -#: pcbnew/tool_pcb.cpp:326 -msgid "Display Polar Coord ON" -msgstr "Activer affichage coord Polaires" - -#: pcbnew/tool_pcb.cpp:329 -msgid "Units in inches" -msgstr "Unités en pouces" - -#: pcbnew/tool_pcb.cpp:332 -msgid "Units in millimeters" -msgstr "Unités en millimètres" - -#: pcbnew/tool_pcb.cpp:335 -msgid "Change Cursor Shape" -msgstr "Sélection de la forme du curseur" - -#: pcbnew/tool_pcb.cpp:340 -msgid "Show General Ratsnest" -msgstr "Montrer le chevelu général" - -#: pcbnew/tool_pcb.cpp:343 -msgid "Show Module Ratsnest when moving" -msgstr "Montrer le chevelu du module pendant déplacement" - -#: pcbnew/tool_pcb.cpp:349 -msgid "Enable Auto Del Track" -msgstr "Autoriser l'effacement automatique des pistes" - -#: pcbnew/tool_pcb.cpp:354 -msgid "Show filled areas in zones" -msgstr "Afficher les surfaces remplies dans les zones" - -#: pcbnew/tool_pcb.cpp:357 -msgid "Do not show filled areas in zones" -msgstr "Ne pas afficher les surfaces remplies dans les zones" - -#: pcbnew/tool_pcb.cpp:360 -msgid "Show outlines of filled areas only in zones" -msgstr "Afficher uniquement les contours des surfaces remplies dans les zones" - -#: pcbnew/tool_pcb.cpp:365 -msgid "Show Pads Sketch" -msgstr "Afficher pastilles en contour" - -#: pcbnew/tool_pcb.cpp:369 -msgid "Show Tracks Sketch" -msgstr "Afficher Pistes en Contour" - -#: pcbnew/tool_pcb.cpp:384 -msgid "" -"Display/remove auxiliary vertical toolbar (tools for micro wave applications)\n" -" This is a experimental feature (under development)" -msgstr "" -"Affiche/supprime le toolbar vertical auxiliaire (outils pour applications micro-ondes)\n" -"C'est un outil expérimental (en cours de développement)" - -#: pcbnew/tool_pcb.cpp:414 -msgid "Net highlight" -msgstr "Surbrillance des équipotentielles" - -#: pcbnew/tool_pcb.cpp:419 -msgid "Display local ratsnest (pad or module)" -msgstr "Afficher le chevelu local (pastilles ou modules)" - -#: pcbnew/tool_pcb.cpp:425 -msgid "Add modules" -msgstr "Addition de Modules" - -#: pcbnew/tool_pcb.cpp:429 -msgid "Add tracks and vias" -msgstr "Ajouter pistes et vias" - -#: pcbnew/tool_pcb.cpp:433 -msgid "Add zones" -msgstr "Addition de Zones" - -#: pcbnew/tool_pcb.cpp:438 -msgid "Add graphic line or polygon" -msgstr "Addition de lignes ou polygones graphiques" - -#: pcbnew/tool_pcb.cpp:442 -msgid "Add graphic circle" -msgstr "Addition de graphiques (Cercle)" - -#: pcbnew/tool_pcb.cpp:446 -msgid "Add graphic arc" -msgstr "Addition de graphiques (Arc de Cercle)" - -#: pcbnew/tool_pcb.cpp:450 -msgid "Add text" -msgstr "Ajout de Texte" - -#: pcbnew/tool_pcb.cpp:455 -msgid "Add dimension" -msgstr "Ajout des cotes" - -#: pcbnew/tool_pcb.cpp:459 -msgid "Add layer alignment target" -msgstr "Ajouter Mire de superposition" - -#: pcbnew/tool_pcb.cpp:464 -msgid "Delete items" -msgstr "Suppression d'éléments" - -#: pcbnew/tool_pcb.cpp:469 -msgid "Offset adjust for drill and place files" -msgstr "Ajuste offset pour fichier de perçage et placement" - -#: pcbnew/tool_pcb.cpp:495 -msgid "Create line of specified length for microwave applications" -msgstr "Création de lignes de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:499 -msgid "Create gap of specified length for microwave applications" -msgstr "Création de gaps de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:505 -msgid "Create stub of specified length for microwave applications" -msgstr "Création de stub de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:509 -msgid "Create stub (arc) of specified length for microwave applications" -msgstr "Création de stub (arc) de longueur spécifiée (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:514 -msgid "Create a polynomial shape for microwave applications" -msgstr "Création de formes polynomiales (pour applications micro-ondes)" - -#: pcbnew/tool_pcb.cpp:555 -msgid "" -"Auto track width: when starting on an existing track use its width\n" -"otherwise, use current width setting" -msgstr "" -"Largeur de piste automatique: si on démarre sur une piste existante, utiliser sa largeur\n" -" sinon utiliser la largeur courante" - -#: pcbnew/tool_pcb.cpp:580 -msgid "Auto" -msgstr "Auto" - -#: pcbnew/tool_pcb.cpp:584 -msgid "Zoom " -msgstr "Zoom " - -#: pcbnew/tool_pcb.cpp:622 -msgid "User Grid" -msgstr "Grille perso" - -#: pcbnew/tool_pcb.cpp:736 -msgid "+/- to switch" -msgstr "+/- pour commuter" - -#: pcbnew/editrack-part2.cpp:32 -#, c-format -msgid "Track Width: %s Vias Size : %s" -msgstr "Larg. piste: %s Diam Vias : %s" - -#: pcbnew/editrack-part2.cpp:134 -msgid "Drc error, cancelled" -msgstr "Erreur DRC, annulation" - #: pcbnew/dialog_print_using_printer.cpp:129 msgid "Error Init Printer info" msgstr "Erreur Init info imprimante" @@ -3459,6 +3454,65 @@ msgstr "Le caractère de délimitation de ligne doit être un seul caractère ' msgid "Un-terminated delimited string" msgstr "Ligne délimitée non terminée" +#: pcbnew/specctra_import.cpp:76 +msgid "Merge Specctra Session file:" +msgstr "Fichier Specctra Session à Fusionner:" + +#: pcbnew/specctra_import.cpp:103 +msgid "BOARD may be corrupted, do not save it." +msgstr "Le PCB peut être corrompu. Ne pas le sauver" + +#: pcbnew/specctra_import.cpp:105 +msgid "Fix problem and try again." +msgstr "Fixer le problème et recommencer." + +#: pcbnew/specctra_import.cpp:129 +msgid "Session file imported and merged OK." +msgstr "Fichier Session importé et fusionné correctement." + +#: pcbnew/specctra_import.cpp:204 +#: pcbnew/specctra_import.cpp:312 +#, c-format +msgid "Session file uses invalid layer id \"%s\"" +msgstr "Le Fichier Session utilise une couche invalide n° \"%s\"" + +#: pcbnew/specctra_import.cpp:254 +msgid "Session via padstack has no shapes" +msgstr "Dans le fichier Session une via n'a pas de forme" + +#: pcbnew/specctra_import.cpp:261 +#: pcbnew/specctra_import.cpp:279 +#: pcbnew/specctra_import.cpp:303 +#, c-format +msgid "Unsupported via shape: \"%s\"" +msgstr "Forme via non supportée: \"%s\"" + +#: pcbnew/specctra_import.cpp:360 +msgid "Session file is missing the \"session\" section" +msgstr "Manque dans le Fichier Session file la section \"session\"" + +#: pcbnew/specctra_import.cpp:363 +msgid "Session file is missing the \"placement\" section" +msgstr "Manque dans le Fichier Session file la section \"placement\"" + +#: pcbnew/specctra_import.cpp:366 +msgid "Session file is missing the \"routes\" section" +msgstr "Manque dans le Fichier Session file la section \"routes\"" + +#: pcbnew/specctra_import.cpp:369 +msgid "Session file is missing the \"library_out\" section" +msgstr "Manque dans le Fichier Session file la section \"library_out\"" + +#: pcbnew/specctra_import.cpp:395 +#, c-format +msgid "Session file has 'reference' to non-existent component \"%s\"" +msgstr "Le fichier Session a une 'reference' à un composant non existant \"%s\"" + +#: pcbnew/specctra_import.cpp:539 +#, c-format +msgid "A wire_via references a missing padstack \"%s\"" +msgstr "Une piste ou via a une référence vers un pad \"%s\" manquant" + #: pcbnew/modedit_onclick.cpp:198 msgid "End Tool" msgstr "Fin Outil" @@ -4228,65 +4282,6 @@ msgstr "Autoroute Pad" msgid "Autoroute Net" msgstr "Autoroute Net" -#: pcbnew/specctra_import.cpp:76 -msgid "Merge Specctra Session file:" -msgstr "Fichier Specctra Session à Fusionner:" - -#: pcbnew/specctra_import.cpp:103 -msgid "BOARD may be corrupted, do not save it." -msgstr "Le PCB peut être corrompu. Ne pas le sauver" - -#: pcbnew/specctra_import.cpp:105 -msgid "Fix problem and try again." -msgstr "Fixer le problème et recommencer." - -#: pcbnew/specctra_import.cpp:128 -msgid "Session file imported and merged OK." -msgstr "Fichier Session importé et fusionné correctement." - -#: pcbnew/specctra_import.cpp:203 -#: pcbnew/specctra_import.cpp:311 -#, c-format -msgid "Session file uses invalid layer id \"%s\"" -msgstr "Le Fichier Session utilise une couche invalide n° \"%s\"" - -#: pcbnew/specctra_import.cpp:253 -msgid "Session via padstack has no shapes" -msgstr "Dans le fichier Session une via n'a pas de forme" - -#: pcbnew/specctra_import.cpp:260 -#: pcbnew/specctra_import.cpp:278 -#: pcbnew/specctra_import.cpp:302 -#, c-format -msgid "Unsupported via shape: \"%s\"" -msgstr "Forme via non supportée: \"%s\"" - -#: pcbnew/specctra_import.cpp:359 -msgid "Session file is missing the \"session\" section" -msgstr "Manque dans le Fichier Session file la section \"session\"" - -#: pcbnew/specctra_import.cpp:362 -msgid "Session file is missing the \"placement\" section" -msgstr "Manque dans le Fichier Session file la section \"placement\"" - -#: pcbnew/specctra_import.cpp:365 -msgid "Session file is missing the \"routes\" section" -msgstr "Manque dans le Fichier Session file la section \"routes\"" - -#: pcbnew/specctra_import.cpp:368 -msgid "Session file is missing the \"library_out\" section" -msgstr "Manque dans le Fichier Session file la section \"library_out\"" - -#: pcbnew/specctra_import.cpp:394 -#, c-format -msgid "Session file has 'reference' to non-existent component \"%s\"" -msgstr "Le fichier Session a une 'reference' à un composant non existant \"%s\"" - -#: pcbnew/specctra_import.cpp:538 -#, c-format -msgid "A wire_via references a missing padstack \"%s\"" -msgstr "Une piste ou via a une référence vers un pad \"%s\" manquant" - #: pcbnew/dialog_copper_zones_base.cpp:32 msgid "Zone Setup:" msgstr "Options Zone:" @@ -5679,6 +5674,15 @@ msgstr "" "Chemins (chemins système et chemins utilisateurs) utilisés pour chercher et charger les fichiers libriries et documentation des composants.\n" "Triés par ordre de priorité décroissante." +#: pcbnew/editrack-part2.cpp:32 +#, c-format +msgid "Track Width: %s Vias Size : %s" +msgstr "Larg. piste: %s Diam Vias : %s" + +#: pcbnew/editrack-part2.cpp:135 +msgid "Drc error, cancelled" +msgstr "Erreur DRC, annulation" + #: eeschema/dialog_erc.cpp:159 #: eeschema/dialog_erc.cpp:186 msgid "Erc File Report:" @@ -6447,10 +6451,6 @@ msgstr "Ancre" msgid "Export" msgstr "Exporter" -#: eeschema/eeconfig.cpp:288 -msgid "Save Project Settings" -msgstr "Sauver Optionsr Projet" - #: eeschema/annotate.cpp:278 #, c-format msgid "%d Duplicate Time stamps replaced" @@ -7377,17 +7377,14 @@ msgid "Right" msgstr "Droite" #: eeschema/plotps.cpp:177 -#: eeschema/plothpgl.cpp:210 msgid "Page Size A4" msgstr "Feuille A4" #: eeschema/plotps.cpp:178 -#: eeschema/plothpgl.cpp:215 msgid "Page Size A" msgstr "Feuille A" #: eeschema/plotps.cpp:179 -#: eeschema/plothpgl.cpp:220 msgid "Plot page size:" msgstr "Format de la feuille:" @@ -7408,12 +7405,10 @@ msgid "Print Sheet Ref" msgstr "Imprimer cartouche" #: eeschema/plotps.cpp:205 -#: eeschema/plothpgl.cpp:270 msgid "&Plot Page" msgstr "&Tracer Page" #: eeschema/plotps.cpp:209 -#: eeschema/plothpgl.cpp:274 msgid "Plot A&LL" msgstr "&Tout Tracer" @@ -8155,6 +8150,10 @@ msgstr "la position Y du point %d de la polyligne n'est pas définie" msgid "text only had %d parameters of the required 8" msgstr "le texte a seulement %d paramètres sur les 8 requis" +#: eeschema/eeconfig.cpp:289 +msgid "Save Project Settings" +msgstr "Sauver Optionsr Projet" + #: eeschema/dialog_options.cpp:140 #: eeschema/dialog_options.cpp:287 msgid "Delta Step X" @@ -10154,14 +10153,6 @@ msgstr "Ext. Fichiers Gerber" msgid "D code File Ext:" msgstr "Ext. Fichiers DCodes:" -#: gerbview/gerbview_config.cpp:26 -msgid "GerbView project files (.cnf)|*.cnf" -msgstr "Fichiers projet GerbView (.cnf)|*.cnf" - -#: gerbview/gerbview_config.cpp:140 -msgid "Save GerbView Project File" -msgstr "Sauver Fichier Projet Gerbview" - #: gerbview/select_layers_to_pcb.cpp:220 #: gerbview/tool_gerber.cpp:244 msgid "Layer " @@ -10392,6 +10383,14 @@ msgstr "Afficher Polygones en Mode Contour" msgid "Show dcode number" msgstr "Afficher le n° de DCode" +#: gerbview/gerbview_config.cpp:26 +msgid "GerbView project files (.cnf)|*.cnf" +msgstr "Fichiers projet GerbView (.cnf)|*.cnf" + +#: gerbview/gerbview_config.cpp:142 +msgid "Save GerbView Project File" +msgstr "Sauver Fichier Projet Gerbview" + #: gerbview/set_color.cpp:271 msgid "Switch on all of the Gerber layers" msgstr "Affiche toutes les couches Gerber" @@ -10600,35 +10599,6 @@ msgstr "Contour Pcb" msgid "BAD INDEX" msgstr "BAD INDEX" -#: common/gestfich.cpp:444 -#, c-format -msgid "Command <%s> could not found" -msgstr "Commande <%s> non trouvée" - -#: common/gestfich.cpp:544 -msgid "No default editor found, you must choose it" -msgstr "Pas d'éditeur par défaut trouvé, vous devez en choisir un" - -#: common/gestfich.cpp:550 -msgid "Prefered Editor:" -msgstr "Editeur préféré:" - -#: common/gestfich.cpp:646 -msgid "Problem while running the PDF viewer" -msgstr "Problème en lançant le Visualisateur PDF" - -#: common/gestfich.cpp:647 -msgid "" -"\n" -" command is " -msgstr "" -"\n" -" la commande est " - -#: common/gestfich.cpp:653 -msgid "Unable to find a PDF viewer for" -msgstr "Impossible de trouver un visualisateur PDF pour" - #: common/edaappl.cpp:95 msgid "Default" msgstr "Défaut" @@ -10750,6 +10720,35 @@ msgstr "Inversion Bloc" msgid "Block Mirror" msgstr "Bloc Miroir" +#: common/gestfich.cpp:445 +#, c-format +msgid "Command <%s> could not found" +msgstr "Commande <%s> non trouvée" + +#: common/gestfich.cpp:545 +msgid "No default editor found, you must choose it" +msgstr "Pas d'éditeur par défaut trouvé, vous devez en choisir un" + +#: common/gestfich.cpp:551 +msgid "Prefered Editor:" +msgstr "Editeur préféré:" + +#: common/gestfich.cpp:647 +msgid "Problem while running the PDF viewer" +msgstr "Problème en lançant le Visualisateur PDF" + +#: common/gestfich.cpp:648 +msgid "" +"\n" +" command is " +msgstr "" +"\n" +" la commande est " + +#: common/gestfich.cpp:654 +msgid "Unable to find a PDF viewer for" +msgstr "Impossible de trouver un visualisateur PDF pour" + #: common/hotkeys_basic.cpp:321 msgid "" "Current hotkey list:\n" @@ -10834,14 +10833,6 @@ msgstr "Emplacement des Fichiers des Hotkeys" msgid "Select hotkey config file location (home directory or kicad tree)" msgstr "Sélection emplacement des fichiers de config. des hotkeys(\"home\" ou répertoire kicad)" -#: common/drawframe.cpp:301 -msgid "Inch" -msgstr "Pouce" - -#: common/drawframe.cpp:309 -msgid "??" -msgstr "??" - #: common/basicframe.cpp:219 msgid " file <" msgstr " Fichier <" @@ -10872,6 +10863,14 @@ msgstr "Via Aveugle/Enterrée" msgid "Kicad footprint library files (*.mod)|*.mod" msgstr "Fichiers Modules Kicad (*.mod)|*.mod" +#: common/drawframe.cpp:302 +msgid "Inch" +msgstr "Pouce" + +#: common/drawframe.cpp:310 +msgid "??" +msgstr "??" + #: 3d-viewer/3d_aux.cpp:206 msgid "Vertex " msgstr "Vertex " diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index 2d06707b1c..a2597aeb05 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -38,7 +38,8 @@ set(PCBNEW_SRCS dialog_drc.cpp dialog_edit_module_text.cpp dialog_edit_module_text_base.cpp -# dialog_edit_module.cpp + dialog_edit_module.cpp + dialog_exchange_modules_base.cpp dialog_freeroute_exchange.cpp # dialog_gendrill.cpp dialog_general_options.cpp diff --git a/pcbnew/class_netinfo.h b/pcbnew/class_netinfo.h index 961688c72d..b49adce972 100644 --- a/pcbnew/class_netinfo.h +++ b/pcbnew/class_netinfo.h @@ -68,9 +68,8 @@ class NETINFO_LIST { private: BOARD* m_Parent; - -// boost::ptr_vector m_NetBuffer; // nets buffer list (name, design constraints .. std::vector m_NetBuffer; // nets buffer list (name, design constraints .. + public: std::vector m_PadsFullList; // Entry for a sorted pad list (used in ratsnest calculations) @@ -115,17 +114,19 @@ public: return m_PadsFullList.size(); } + /** Function GetPad * @return the pad idx from m_PadsFullList */ - D_PAD* GetPad( unsigned aIdx) + D_PAD* GetPad( unsigned aIdx ) { - if (aIdx < m_PadsFullList.size() ) + if( aIdx < m_PadsFullList.size() ) return m_PadsFullList[aIdx]; else return NULL; } + private: /** Function Build_Pads_Full_List @@ -156,10 +157,12 @@ public: int m_NbNodes; // Pads count for this net int m_NbLink; // Ratsnets count for this net int m_NbNoconn; // Ratsnets remaining to route count - int m_ForceWidth; // specific width (O = default width) + int m_ForceWidth; // specific width (0 = default width) std::vector m_ListPad; // List of pads connected to this net - unsigned m_RatsnestStart; // debut de liste ratsnests du net (included) - unsigned m_RatsnestEnd; // fin de liste ratsnests du net (excluded) + unsigned m_RatsnestStartIdx; /* Starting point of ratsnests of this net (included) + * in a general buffer of ratsnest (a vector buffer) + */ + unsigned m_RatsnestEndIdx; // Ending point of ratsnests of this net (excluded) in this buffer NETINFO_ITEM( BOARD_ITEM* aParent ); ~NETINFO_ITEM(); diff --git a/pcbnew/class_netinfo_item.cpp b/pcbnew/class_netinfo_item.cpp index 3455f39426..c0b2a99c71 100644 --- a/pcbnew/class_netinfo_item.cpp +++ b/pcbnew/class_netinfo_item.cpp @@ -19,8 +19,8 @@ NETINFO_ITEM::NETINFO_ITEM( BOARD_ITEM* aParent ) SetNet( 0 ); m_NbNodes = m_NbLink = m_NbNoconn = 0; m_ForceWidth = 0; - m_RatsnestStart = 0; // debut de liste ratsnests du net - m_RatsnestEnd = 0; // fin de liste ratsnests du net + m_RatsnestStartIdx = 0; // Starting point of ratsnests of this net in a general buffer of ratsnest + m_RatsnestEndIdx = 0; // Ending point of ratsnests of this net } diff --git a/pcbnew/class_netinfolist.cpp b/pcbnew/class_netinfolist.cpp index 36f3b4b04e..4e1b32cf64 100644 --- a/pcbnew/class_netinfolist.cpp +++ b/pcbnew/class_netinfolist.cpp @@ -86,7 +86,8 @@ void NETINFO_LIST::BuildListOfNets() DeleteData(); // Remove all nets info and free memory - // Create and add the "unconnected net" + // Create and add the "unconnected net", always existing, + // used to handle pads and tracks that are not member of a "real" net net_item = new NETINFO_ITEM( m_Parent ); AppendNet( net_item ); diff --git a/pcbnew/dialog_edit_module.cpp b/pcbnew/dialog_edit_module.cpp index a8874f779d..bf1bdf0651 100644 --- a/pcbnew/dialog_edit_module.cpp +++ b/pcbnew/dialog_edit_module.cpp @@ -4,10 +4,18 @@ /* include in modedit.cpp */ /************************************************/ +#include "fctsys.h" +#include "common.h" +#include "class_drawpanel.h" #include "confirm.h" +#include "pcbnew.h" #include "appl_wxstruct.h" +#include "gestfich.h" +#include "3d_struct.h" +#include "3d_viewer.h" #include "dialog_edit_module.h" -#include + +extern bool GoToEditor; /**************************************/ /* class WinEDA_ModulePropertiesFrame */ @@ -652,8 +660,7 @@ void WinEDA_ModulePropertiesFrame::GotoModuleEditor( wxCommandEvent& event ) void WinEDA_ModulePropertiesFrame::ExchangeModule( wxCommandEvent& event ) /**********************************************************************/ { - m_Parent->InstallExchangeModuleFrame( m_CurrentModule, - m_DC, wxPoint( -1, -1 ) ); + m_Parent->InstallExchangeModuleFrame( m_CurrentModule ); // Attention: si il y a eu echange, m_CurrentModule a été delete! m_Parent->SetCurItem( NULL ); diff --git a/pcbnew/dialog_exchange_modules_base.cpp b/pcbnew/dialog_exchange_modules_base.cpp new file mode 100644 index 0000000000..f2edaf82d9 --- /dev/null +++ b/pcbnew/dialog_exchange_modules_base.cpp @@ -0,0 +1,97 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Apr 16 2008) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "dialog_exchange_modules_base.h" + +/////////////////////////////////////////////////////////////////////////// + +DIALOG_EXCHANGE_MODULE_BASE::DIALOG_EXCHANGE_MODULE_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bMainSizer; + bMainSizer = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bUpperSizer; + bUpperSizer = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bLeftSizer; + bLeftSizer = new wxBoxSizer( wxVERTICAL ); + + m_staticText6 = new wxStaticText( this, wxID_ANY, _("Current Module"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText6->Wrap( -1 ); + bLeftSizer->Add( m_staticText6, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OldModule = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + bLeftSizer->Add( m_OldModule, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_staticText7 = new wxStaticText( this, wxID_ANY, _("Current Value"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText7->Wrap( -1 ); + bLeftSizer->Add( m_staticText7, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_OldValue = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY ); + bLeftSizer->Add( m_OldValue, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_staticText8 = new wxStaticText( this, wxID_ANY, _("New Module"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText8->Wrap( -1 ); + bLeftSizer->Add( m_staticText8, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_NewModule = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bLeftSizer->Add( m_NewModule, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + bUpperSizer->Add( bLeftSizer, 1, 0, 5 ); + + wxBoxSizer* bMiddleSizer; + bMiddleSizer = new wxBoxSizer( wxVERTICAL ); + + wxString m_SelectionChoices[] = { _("Change module"), _("Change same modules"), _("Ch. same module+value"), _("Change all") }; + int m_SelectionNChoices = sizeof( m_SelectionChoices ) / sizeof( wxString ); + m_Selection = new wxRadioBox( this, ID_SELECTION_CLICKED, _("wxRadioBox"), wxDefaultPosition, wxDefaultSize, m_SelectionNChoices, m_SelectionChoices, 1, wxRA_SPECIFY_COLS ); + m_Selection->SetSelection( 0 ); + bMiddleSizer->Add( m_Selection, 0, wxALL, 5 ); + + bUpperSizer->Add( bMiddleSizer, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + wxBoxSizer* bRightSizer; + bRightSizer = new wxBoxSizer( wxVERTICAL ); + + m_OKbutton = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 ); + bRightSizer->Add( m_OKbutton, 0, wxALL, 5 ); + + m_Quitbutton = new wxButton( this, wxID_CANCEL, _("Quit"), wxDefaultPosition, wxDefaultSize, 0 ); + bRightSizer->Add( m_Quitbutton, 0, wxALL, 5 ); + + m_Browsebutton = new wxButton( this, wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 ); + bRightSizer->Add( m_Browsebutton, 0, wxALL, 5 ); + + bUpperSizer->Add( bRightSizer, 0, wxALIGN_CENTER_VERTICAL, 5 ); + + bMainSizer->Add( bUpperSizer, 0, wxEXPAND, 5 ); + + m_WinMessages = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY ); + m_WinMessages->SetMinSize( wxSize( 450,300 ) ); + + bMainSizer->Add( m_WinMessages, 1, wxALL|wxEXPAND, 5 ); + + this->SetSizer( bMainSizer ); + this->Layout(); + + // Connect Events + m_Selection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::OnSelectionClicked ), NULL, this ); + m_OKbutton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::OnOkClick ), NULL, this ); + m_Quitbutton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::OnQuit ), NULL, this ); + m_Browsebutton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::BrowseAndSelectFootprint ), NULL, this ); +} + +DIALOG_EXCHANGE_MODULE_BASE::~DIALOG_EXCHANGE_MODULE_BASE() +{ + // Disconnect Events + m_Selection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::OnSelectionClicked ), NULL, this ); + m_OKbutton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::OnOkClick ), NULL, this ); + m_Quitbutton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::OnQuit ), NULL, this ); + m_Browsebutton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_EXCHANGE_MODULE_BASE::BrowseAndSelectFootprint ), NULL, this ); +} diff --git a/pcbnew/dialog_exchange_modules_base.fbp b/pcbnew/dialog_exchange_modules_base.fbp new file mode 100644 index 0000000000..ab66f236f1 --- /dev/null +++ b/pcbnew/dialog_exchange_modules_base.fbp @@ -0,0 +1,708 @@ + + + + + + C++ + 1 + UTF-8 + connect + dialog_exchange_modules_base + 1000 + none + 1 + dialog_exchange_modules_base + + . + + 1 + 0 + 0 + + + + + 1 + + + + 0 + wxID_ANY + + + DIALOG_EXCHANGE_MODULE_BASE + + 416,469 + wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER + + Exchange Modules + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bMainSizer + wxVERTICAL + none + + 5 + wxEXPAND + 0 + + + bUpperSizer + wxHORIZONTAL + none + + 5 + + 1 + + + bLeftSizer + wxVERTICAL + none + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Current Module + + + m_staticText6 + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OldModule + protected + + + wxTE_READONLY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + Current Value + + + m_staticText7 + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_OldValue + protected + + + wxTE_READONLY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + + + 0 + wxID_ANY + New Module + + + m_staticText8 + protected + + + + + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + + + 0 + wxID_ANY + + 0 + + m_NewModule + protected + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + + bMiddleSizer + wxVERTICAL + none + + 5 + wxALL + 0 + + + "Change module" "Change same modules" "Ch. same module+value" "Change all" + + 1 + + + 0 + ID_SELECTION_CLICKED + wxRadioBox + 1 + + + m_Selection + protected + + 0 + + wxRA_SPECIFY_COLS + + + + + + + + + + + + + + + + + + + + + + + OnSelectionClicked + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL + 0 + + + bRightSizer + wxVERTICAL + none + + 5 + wxALL + 0 + + + + 0 + 1 + + + 0 + wxID_OK + OK + + + m_OKbutton + protected + + + + + + + + + OnOkClick + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + 0 + 1 + + + 0 + wxID_CANCEL + Quit + + + m_Quitbutton + protected + + + + + + + + + OnQuit + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + 0 + 1 + + + 0 + wxID_ANY + Browse + + + m_Browsebutton + protected + + + + + + + + + BrowseAndSelectFootprint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 1 + + + + 1 + + + 0 + wxID_ANY + + 0 + 450,300 + m_WinMessages + protected + + + wxTE_MULTILINE|wxTE_READONLY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pcbnew/dialog_exchange_modules_base.h b/pcbnew/dialog_exchange_modules_base.h new file mode 100644 index 0000000000..13e147a735 --- /dev/null +++ b/pcbnew/dialog_exchange_modules_base.h @@ -0,0 +1,62 @@ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Apr 16 2008) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#ifndef __dialog_exchange_modules_base__ +#define __dialog_exchange_modules_base__ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +#define ID_SELECTION_CLICKED 1000 + +/////////////////////////////////////////////////////////////////////////////// +/// Class DIALOG_EXCHANGE_MODULE_BASE +/////////////////////////////////////////////////////////////////////////////// +class DIALOG_EXCHANGE_MODULE_BASE : public wxDialog +{ + private: + + protected: + wxStaticText* m_staticText6; + wxTextCtrl* m_OldModule; + wxStaticText* m_staticText7; + wxTextCtrl* m_OldValue; + wxStaticText* m_staticText8; + wxTextCtrl* m_NewModule; + wxRadioBox* m_Selection; + wxButton* m_OKbutton; + wxButton* m_Quitbutton; + wxButton* m_Browsebutton; + wxTextCtrl* m_WinMessages; + + // Virtual event handlers, overide them in your derived class + virtual void OnSelectionClicked( wxCommandEvent& event ){ event.Skip(); } + virtual void OnOkClick( wxCommandEvent& event ){ event.Skip(); } + virtual void OnQuit( wxCommandEvent& event ){ event.Skip(); } + virtual void BrowseAndSelectFootprint( wxCommandEvent& event ){ event.Skip(); } + + + public: + DIALOG_EXCHANGE_MODULE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Exchange Modules"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 416,469 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + ~DIALOG_EXCHANGE_MODULE_BASE(); + +}; + +#endif //__dialog_exchange_modules_base__ diff --git a/pcbnew/editmod.cpp b/pcbnew/editmod.cpp index 9a1f4ac366..d7f110b2ae 100644 --- a/pcbnew/editmod.cpp +++ b/pcbnew/editmod.cpp @@ -15,14 +15,12 @@ #include "3d_struct.h" #include "3d_viewer.h" +#include "dialog_edit_module.h" + #include "protos.h" -/* Variables locales: */ bool GoToEditor = FALSE; -/* class WinEDA_ModulePropertiesFrame */ -#include "dialog_edit_module.cpp" - /*******************************************************************/ void WinEDA_BasePcbFrame::InstallModuleOptionsFrame( MODULE* Module, wxDC * DC ) /*******************************************************************/ diff --git a/pcbnew/files.cpp b/pcbnew/files.cpp index 0cd53f6f32..47f7b3c3d4 100644 --- a/pcbnew/files.cpp +++ b/pcbnew/files.cpp @@ -265,8 +265,11 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, bool Append ) /* Rebuild the new pad list (for drc and ratsnet control ...) */ GetBoard()->m_Status_Pcb = 0; + // Display the loaded board: DrawPanel->Refresh( true); - + wxSafeYield(); // Needed if we want to see the board now. + + // Compile rastnest and displays net info Compile_Ratsnest( NULL, true ); GetBoard()->DisplayInfo( this ); diff --git a/pcbnew/modules.cpp b/pcbnew/modules.cpp index 03635a1445..4946557fa6 100644 --- a/pcbnew/modules.cpp +++ b/pcbnew/modules.cpp @@ -642,7 +642,7 @@ int ChangeSideNumLayer( int oldlayer ) /*****************************************************************/ -void WinEDA_BasePcbFrame::Place_Module( MODULE* module, wxDC* DC ) +void WinEDA_BasePcbFrame::Place_Module( MODULE* module, wxDC* DC, bool aDoNotRecreateRatsnest ) /*****************************************************************/ /* Place a l'endroit pointe par la souris le module deja existant selectionne @@ -688,8 +688,8 @@ void WinEDA_BasePcbFrame::Place_Module( MODULE* module, wxDC* DC ) EraseDragListe(); } - /* affichage chevelu general si necessaire */ - Compile_Ratsnest( DC, true ); + if( !aDoNotRecreateRatsnest ) + Compile_Ratsnest( DC, true ); module->DisplayInfo( this ); diff --git a/pcbnew/ratsnest.cpp b/pcbnew/ratsnest.cpp index f68646a233..aaa5678117 100644 --- a/pcbnew/ratsnest.cpp +++ b/pcbnew/ratsnest.cpp @@ -13,6 +13,7 @@ #include "protos.h" +#define DBG_BUID_NETINFO /* local variables */ static std::vector s_localPadBuffer; // for local ratsnest calculations when moving a footprint: buffer of pads to consider @@ -107,7 +108,10 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb ) GetBoard()->m_Status_Pcb = 0; /* we want a full ratnest computation, from the scratch */ - MsgPanel->EraseMsgBox(); + MsgPanel->EraseMsgBox(); +#ifdef DBG_BUID_NETINFO + wxSafeYield(); +#endif // Rebuild the full pads and net info list @@ -124,6 +128,9 @@ void WinEDA_BasePcbFrame::Compile_Ratsnest( wxDC* DC, bool display_status_pcb ) msg.Printf( wxT( " %d" ), m_Pcb->m_NetInfo->GetNetsCount() ); Affiche_1_Parametre( this, 8, wxT( "Nets" ), msg, CYAN ); } +#ifdef DBG_BUID_NETINFO + wxSafeYield(); +#endif /* Compute the full ratsnest * which can be see like all the possible links or logical connections. @@ -449,7 +456,7 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) DisplayError(this,wxT("Build_Board_Ratsnest() error: net not found") ); return; } - net->m_RatsnestStart = m_Pcb->GetRatsnestsCount(); + net->m_RatsnestStartIdx = m_Pcb->GetRatsnestsCount(); int num_block = 0; for( unsigned ii = 0; ii < net->m_ListPad.size(); ii++ ) @@ -473,14 +480,14 @@ void WinEDA_BasePcbFrame::Build_Board_Ratsnest( wxDC* DC ) icnt = gen_rats_block_to_block( DrawPanel, m_Pcb->m_FullRatsnest, pstart, pend ); } - net->m_RatsnestEnd = m_Pcb->GetRatsnestsCount(); + net->m_RatsnestEndIdx = m_Pcb->GetRatsnestsCount(); /* sort by lenght */ - if( (net->m_RatsnestEnd - net->m_RatsnestStart) > 1 ) + if( (net->m_RatsnestEndIdx - net->m_RatsnestStartIdx) > 1 ) { RATSNEST_ITEM* rats = &m_Pcb->m_FullRatsnest[0]; - qsort( rats + net->m_RatsnestStart, - net->m_RatsnestEnd - net->m_RatsnestStart, + qsort( rats + net->m_RatsnestStartIdx, + net->m_RatsnestEndIdx - net->m_RatsnestStartIdx, sizeof(RATSNEST_ITEM), sort_by_length ); } } @@ -555,7 +562,7 @@ static int tst_rats_block_to_block( NETINFO_ITEM* net, vector& aR /* Search a link from a block to an other block */ min_rats = NULL; - for( unsigned ii = net->m_RatsnestStart; ii < net->m_RatsnestEnd; ii++ ) + for( unsigned ii = net->m_RatsnestStartIdx; ii < net->m_RatsnestEndIdx; ii++ ) { rats = &aRatsnestBuffer[ii]; if( rats->m_PadStart->GetSubRatsnest() == rats->m_PadEnd->GetSubRatsnest() ) // Same block @@ -691,14 +698,14 @@ void WinEDA_BasePcbFrame::Tst_Ratsnest( wxDC* DC, int ref_netcode ) num_block = MAX( num_block, subnet ); } - for( unsigned ii = net->m_RatsnestStart; ii < net->m_RatsnestEnd; ii++ ) + for( unsigned ii = net->m_RatsnestStartIdx; ii < net->m_RatsnestEndIdx; ii++ ) { m_Pcb->m_FullRatsnest[ii].m_Status &= ~CH_ACTIF; } /* a - tst connection between pads */ rats = &m_Pcb->m_FullRatsnest[0]; - int icnt = tst_rats_pad_to_pad( num_block, rats + net->m_RatsnestStart, rats + net->m_RatsnestEnd ); + int icnt = tst_rats_pad_to_pad( num_block, rats + net->m_RatsnestStartIdx, rats + net->m_RatsnestEndIdx ); /* b - test connexion between blocks (Iteration) */ while( icnt > 1 ) diff --git a/pcbnew/xchgmod.cpp b/pcbnew/xchgmod.cpp index 16fb8524e5..8e7ae3e17d 100644 --- a/pcbnew/xchgmod.cpp +++ b/pcbnew/xchgmod.cpp @@ -5,196 +5,136 @@ /* Fichier xchmod.cpp */ #include "fctsys.h" -#include "gr_basic.h" #include "common.h" +#include "class_drawpanel.h" #include "confirm.h" #include "kicad_string.h" -#include "gestfich.h" #include "pcbnew.h" -#include "autorout.h" -#include "protos.h" +#include "dialog_exchange_modules_base.h" -/* variables locales */ - -enum id_ExchangeModule { - ID_EXEC_EXCHANGE_MODULE = 1900, - ID_EXEC_EXCHANGE_ID_MODULES, - ID_EXEC_EXCHANGE_ID_MODULE_AND_VALUE, - ID_EXEC_EXCHANGE_ALL_MODULES, - ID_CLOSE_EXCHANGE_MODULE, - ID_BROWSE_LIB_MODULES -}; +// Local variables: +int s_SelectionMode = 0; // Remember the last exchange option, when exit dialog. /************************************/ -/* class WinEDA_ExchangeModuleFrame */ +/* class DIALOG_EXCHANGE_MODULE */ /************************************/ -class WinEDA_ExchangeModuleFrame : public wxDialog +class DIALOG_EXCHANGE_MODULE : public DIALOG_EXCHANGE_MODULE_BASE { private: WinEDA_BasePcbFrame* m_Parent; - wxDC* m_DC; MODULE* m_CurrentModule; - WinEDA_EnterText* m_OldModule; - WinEDA_EnterText* m_OldValue; - WinEDA_EnterText* m_NewModule; - wxTextCtrl* m_WinMsg; public: // Constructor and destructor - WinEDA_ExchangeModuleFrame( WinEDA_BasePcbFrame* parent, - MODULE* Module, wxDC* DC, const wxPoint& pos ); - ~WinEDA_ExchangeModuleFrame() - { - } - + DIALOG_EXCHANGE_MODULE( WinEDA_BasePcbFrame* aParent, MODULE* aModule ); + ~DIALOG_EXCHANGE_MODULE() { }; private: + void OnSelectionClicked( wxCommandEvent& event ); + void OnOkClick( wxCommandEvent& event ); void OnQuit( wxCommandEvent& event ); - void Change_Module( wxCommandEvent& event ); - void Change_ModuleId( wxCommandEvent& event ); - void Change_ModuleAll( wxCommandEvent& event ); + void BrowseAndSelectFootprint( wxCommandEvent& event ); + void Init(); + + void Change_Module(); + void Change_ModuleId( bool aUseValue ); + void Change_ModuleAll(); int Maj_ListeCmp( const wxString& reference, const wxString& old_name, const wxString& new_name, bool ShowError ); MODULE* Change_1_Module( MODULE* Module, const wxString& new_module, bool ShowError ); - void Sel_NewMod_By_Liste( wxCommandEvent& event ); - - - DECLARE_EVENT_TABLE() }; -BEGIN_EVENT_TABLE( WinEDA_ExchangeModuleFrame, wxDialog ) - EVT_BUTTON( ID_EXEC_EXCHANGE_MODULE, - WinEDA_ExchangeModuleFrame::Change_Module ) - EVT_BUTTON( ID_EXEC_EXCHANGE_ID_MODULES, - WinEDA_ExchangeModuleFrame::Change_ModuleId ) - EVT_BUTTON( ID_EXEC_EXCHANGE_ID_MODULE_AND_VALUE, - WinEDA_ExchangeModuleFrame::Change_ModuleId ) - EVT_BUTTON( ID_EXEC_EXCHANGE_ALL_MODULES, - WinEDA_ExchangeModuleFrame::Change_ModuleAll ) - EVT_BUTTON( ID_CLOSE_EXCHANGE_MODULE, - WinEDA_ExchangeModuleFrame::OnQuit ) - EVT_BUTTON( ID_BROWSE_LIB_MODULES, - WinEDA_ExchangeModuleFrame::Sel_NewMod_By_Liste ) -END_EVENT_TABLE() - -WinEDA_ExchangeModuleFrame::WinEDA_ExchangeModuleFrame( - WinEDA_BasePcbFrame* parent, - MODULE* Module, - wxDC* DC, - const wxPoint& - framepos ) : - wxDialog( parent, -1, _( "Exchange Modules" ), framepos, wxSize( 360, 460 ), - DIALOG_STYLE ) +DIALOG_EXCHANGE_MODULE::DIALOG_EXCHANGE_MODULE( WinEDA_BasePcbFrame* parent, MODULE* Module ) : + DIALOG_EXCHANGE_MODULE_BASE( parent ) { - wxButton* Button; - m_Parent = parent; - m_DC = DC; - Centre(); - m_CurrentModule = Module; - - wxBoxSizer* MainBoxSizer = new wxBoxSizer( wxVERTICAL ); - - SetSizer( MainBoxSizer ); - wxBoxSizer* UpperBoxSizer = new wxBoxSizer( wxHORIZONTAL ); - - MainBoxSizer->Add( UpperBoxSizer, 0, wxGROW | wxALL, 5 ); - wxBoxSizer* LeftBoxSizer = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* RightBoxSizer = new wxBoxSizer( wxVERTICAL ); - - UpperBoxSizer->Add( LeftBoxSizer, 0, wxGROW | wxALL, 5 ); - UpperBoxSizer->Add( RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); - - /* Creation des boutons de commande */ - Button = new wxButton( this, ID_EXEC_EXCHANGE_MODULE, - _( "Change module" ) ); - - RightBoxSizer->Add( Button, 0, wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); - - Button = new wxButton( this, ID_EXEC_EXCHANGE_ID_MODULES, - _( "Change same modules" ) ); - - RightBoxSizer->Add( Button, 0, wxGROW | wxLEFT | wxRIGHT, 5 ); - - Button = new wxButton( this, ID_EXEC_EXCHANGE_ID_MODULE_AND_VALUE, - _( "Ch. same module+value" ) ); - - RightBoxSizer->Add( Button, 0, wxGROW | wxLEFT | wxRIGHT, 5 ); - - Button = new wxButton( this, ID_EXEC_EXCHANGE_ALL_MODULES, - _( "Change all" ) ); - - RightBoxSizer->Add( Button, 0, wxGROW | wxLEFT | wxRIGHT, 5 ); - - Button = new wxButton( this, ID_BROWSE_LIB_MODULES, - _( "Browse Libs modules" ) ); - - RightBoxSizer->Add( Button, 0, wxGROW | wxLEFT | wxRIGHT, 5 ); - - Button = new wxButton( this, ID_CLOSE_EXCHANGE_MODULE, - _( "Close" ) ); - - RightBoxSizer->Add( Button, 0, wxGROW | wxLEFT | wxRIGHT | wxBOTTOM, 5 ); - - m_OldModule = new WinEDA_EnterText( this, _( "Current Module" ), - m_CurrentModule ? - m_CurrentModule->m_LibRef.GetData() : - wxEmptyString, - LeftBoxSizer, wxSize( 150, -1 ) ); - - m_OldModule->Enable( FALSE ); - - m_OldValue = new WinEDA_EnterText( this, _( "Current Value" ), - m_CurrentModule ? - m_CurrentModule->m_Value->m_Text.GetData() : - wxEmptyString, - LeftBoxSizer, wxSize( 150, -1 ) ); - - m_OldValue->Enable( FALSE ); - - m_NewModule = new WinEDA_EnterText( this, _( "New Module" ), - m_OldModule->GetValue(), - LeftBoxSizer, wxSize( 150, -1 ) ); - - m_WinMsg = new wxTextCtrl( this, -1, wxEmptyString, wxDefaultPosition, - wxSize( 340, 230 ), - wxTE_READONLY | wxTE_MULTILINE ); - - MainBoxSizer->Add( m_WinMsg, 0, wxGROW | wxALL, 5 ); - + Init(); GetSizer()->Fit( this ); GetSizer()->SetSizeHints( this ); } -void WinEDA_BasePcbFrame::InstallExchangeModuleFrame( MODULE* Module, - wxDC* DC, - const wxPoint& pos ) +void WinEDA_BasePcbFrame::InstallExchangeModuleFrame( MODULE* Module ) { - WinEDA_ExchangeModuleFrame* frame = - new WinEDA_ExchangeModuleFrame( this, Module, DC, pos ); + DIALOG_EXCHANGE_MODULE dialog( this, Module ); - frame->ShowModal(); - frame->Destroy(); + dialog.ShowModal(); } -void WinEDA_ExchangeModuleFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ) +void DIALOG_EXCHANGE_MODULE::OnQuit( wxCommandEvent& WXUNUSED(event) ) { + s_SelectionMode = m_Selection->GetSelection(); Close( true ); // true is to force the frame to close } +void DIALOG_EXCHANGE_MODULE::Init() +{ + SetFocus(); + + m_OldModule->AppendText( m_CurrentModule->m_LibRef ); + m_NewModule->AppendText( m_CurrentModule->m_LibRef ); + m_OldValue->AppendText( m_CurrentModule->m_Value->m_Text ); + m_Selection->SetSelection( s_SelectionMode ); + + // Enable/disable widgets: + wxCommandEvent event; + OnSelectionClicked( event ); +} + + +void DIALOG_EXCHANGE_MODULE::OnOkClick( wxCommandEvent& event ) +{ + s_SelectionMode = m_Selection->GetSelection(); + switch( m_Selection->GetSelection() ) + { + case 0: + Change_Module(); + break; + + case 1: + Change_ModuleId( false ); + break; + + case 2: + Change_ModuleId( true ); + break; + + case 3: + Change_ModuleAll(); + break; + } +} + + +void DIALOG_EXCHANGE_MODULE::OnSelectionClicked( wxCommandEvent& event ) +{ + switch( m_Selection->GetSelection() ) + { + case 0: + case 1: + case 2: + m_NewModule->Enable( true ); + break; + + case 3: + m_NewModule->Enable( false ); + break; + } +} + + /************************************************************************/ + /* * Met a jour le fichier name.CMP (s'il existe) apres un echange de module * (par la commande changeMod), si les modules sont geres par ce fichier @@ -203,10 +143,10 @@ void WinEDA_ExchangeModuleFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ) * trouve. * Retoure 1 si erreur */ -int WinEDA_ExchangeModuleFrame::Maj_ListeCmp( const wxString& reference, - const wxString& old_name, - const wxString& new_name, - bool ShowError ) +int DIALOG_EXCHANGE_MODULE::Maj_ListeCmp( const wxString& reference, + const wxString& old_name, + const wxString& new_name, + bool ShowError ) { wxFileName fn; wxFileName tmpFileName; @@ -228,7 +168,7 @@ int WinEDA_ExchangeModuleFrame::Maj_ListeCmp( const wxString& reference, if( ShowError ) { msg.Printf( _( "file %s not found" ), fn.GetFullPath().c_str() ); - m_WinMsg->WriteText( msg ); + m_WinMessages->AppendText( msg ); } return 1; } @@ -242,15 +182,15 @@ int WinEDA_ExchangeModuleFrame::Maj_ListeCmp( const wxString& reference, if( ShowError ) { msg.Printf( _( "Unable to create file %s" ), - tmpFileName.GetFullPath().c_str() ); - m_WinMsg->WriteText( msg ); + tmpFileName.GetFullPath().c_str() ); + m_WinMessages->AppendText( msg ); } return 1; } fgets( Line, sizeof(Line), FichCmp ); fprintf( NewFile, "Cmp-Mod V01 Genere par PcbNew le %s\n", - DateAndTime( Line ) ); + DateAndTime( Line ) ); bool start_descr = FALSE; while( fgets( Line, sizeof(Line), FichCmp ) != NULL ) @@ -267,7 +207,7 @@ int WinEDA_ExchangeModuleFrame::Maj_ListeCmp( const wxString& reference, } if( (strnicmp( Line, "Begin", 5 ) == 0) - || (strnicmp( Line, "End", 3 ) == 0) ) + || (strnicmp( Line, "End", 3 ) == 0) ) { start_descr = FALSE; } @@ -277,7 +217,7 @@ int WinEDA_ExchangeModuleFrame::Maj_ListeCmp( const wxString& reference, sprintf( Line + 8, " = %s;\n", CONV_TO_UTF8( new_name ) ); msg = wxT( " * in <" ) + fn.GetFullPath() + wxT( ">.\n" ); - m_WinMsg->WriteText( msg ); + m_WinMessages->AppendText( msg ); start_descr = FALSE; } @@ -300,7 +240,7 @@ int WinEDA_ExchangeModuleFrame::Maj_ListeCmp( const wxString& reference, * - memes textes valeur et ref * - memes netnames pour pads de meme nom */ -void WinEDA_ExchangeModuleFrame::Change_Module( wxCommandEvent& event ) +void DIALOG_EXCHANGE_MODULE::Change_Module() { wxString newmodulename = m_NewModule->GetValue(); @@ -309,7 +249,8 @@ void WinEDA_ExchangeModuleFrame::Change_Module( wxCommandEvent& event ) if( Change_1_Module( m_CurrentModule, newmodulename, TRUE ) ) { - m_Parent->Compile_Ratsnest( m_DC, true ); + m_Parent->Compile_Ratsnest( NULL, true ); + m_Parent->DrawPanel->Refresh(); } } @@ -325,7 +266,7 @@ void WinEDA_ExchangeModuleFrame::Change_Module( wxCommandEvent& event ) * Attention: m_CurrentModule ne pointe plus sur le module de reference * puisque celui ci a ete change!! */ -void WinEDA_ExchangeModuleFrame::Change_ModuleId( wxCommandEvent& event ) +void DIALOG_EXCHANGE_MODULE::Change_ModuleId( bool aUseValue ) { wxString msg; MODULE* Module, * PtBack; @@ -341,19 +282,19 @@ void WinEDA_ExchangeModuleFrame::Change_ModuleId( wxCommandEvent& event ) return; lib_reference = m_CurrentModule->m_LibRef; - if( event.GetId() == ID_EXEC_EXCHANGE_ID_MODULE_AND_VALUE ) + if( aUseValue ) { check_module_value = TRUE; value = m_CurrentModule->m_Value->m_Text; msg.Printf( _( "Change modules <%s> -> <%s> (val = %s)?" ), - m_CurrentModule->m_LibRef.GetData(), - newmodulename.GetData(), - m_CurrentModule->m_Value->m_Text.GetData() ); + m_CurrentModule->m_LibRef.GetData(), + newmodulename.GetData(), + m_CurrentModule->m_Value->m_Text.GetData() ); } else { msg.Printf( _( "Change modules <%s> -> <%s> ?" ), - lib_reference.GetData(), newmodulename.GetData() ); + lib_reference.GetData(), newmodulename.GetData() ); } if( !IsOK( this, msg ) ) @@ -363,17 +304,10 @@ void WinEDA_ExchangeModuleFrame::Change_ModuleId( wxCommandEvent& event ) * Change_1_Module() modifie le dernier module de la liste */ - Module = m_Parent->GetBoard()->m_Modules; - for( ; Module != NULL; Module = Module->Next() ) - { - if( Module->Next() == NULL ) - break; - } - - /* Ici Module pointe le dernier module de la liste */ - for( ; - Module && ( (BOARD*) Module != m_Parent->GetBoard() ); - Module = PtBack ) + /* note: for the first module in chain (the last here), Module->Back() points the board or is NULL + */ + Module = m_Parent->GetBoard()->m_Modules.GetLast(); + for( ; Module && ( Module->Type() == TYPE_MODULE ); Module = PtBack ) { MODULE* module; PtBack = Module->Back(); @@ -393,7 +327,8 @@ void WinEDA_ExchangeModuleFrame::Change_ModuleId( wxCommandEvent& event ) if( change ) { - m_Parent->Compile_Ratsnest( m_DC, true ); + m_Parent->Compile_Ratsnest( NULL, true ); + m_Parent->DrawPanel->Refresh(); } } @@ -406,7 +341,7 @@ void WinEDA_ExchangeModuleFrame::Change_ModuleId( wxCommandEvent& event ) * - memes textes valeur et ref * - memes netnames pour pads de meme nom */ -void WinEDA_ExchangeModuleFrame::Change_ModuleAll( wxCommandEvent& event ) +void DIALOG_EXCHANGE_MODULE::Change_ModuleAll() { MODULE* Module, * PtBack; bool change = FALSE; @@ -422,17 +357,10 @@ void WinEDA_ExchangeModuleFrame::Change_ModuleAll( wxCommandEvent& event ) * Change_1_Module() modifie le dernier module de la liste */ - Module = m_Parent->GetBoard()->m_Modules; - for( ; Module != NULL; Module = Module->Next() ) - { - if( Module->Next() == NULL ) - break; - } - - /* Ici Module pointe le dernier module de la liste */ - for( ; - Module && ( (BOARD*) Module != m_Parent->GetBoard() ); - Module = PtBack ) + /* note: for the first module in chain (the last here), Module->Back() points the board or is NULL + */ + Module = m_Parent->GetBoard()->m_Modules.GetLast(); + for( ; Module && ( Module->Type() == TYPE_MODULE ); Module = PtBack ) { PtBack = Module->Back(); if( Change_1_Module( Module, Module->m_LibRef.GetData(), ShowErr ) ) @@ -443,7 +371,8 @@ void WinEDA_ExchangeModuleFrame::Change_ModuleAll( wxCommandEvent& event ) if( change ) { - m_Parent->Compile_Ratsnest( m_DC, true ); + m_Parent->Compile_Ratsnest( NULL, true ); + m_Parent->DrawPanel->Refresh(); } } @@ -458,10 +387,11 @@ void WinEDA_ExchangeModuleFrame::Change_ModuleAll( wxCommandEvent& event ) * Retourne : * 0 si pas de changement ( si le nouveau module n'est pas en libr) * 1 si OK + * Ratsnest *must be recalculated* after modules changes */ -MODULE* WinEDA_ExchangeModuleFrame::Change_1_Module( MODULE* Module, - const wxString& new_module, - bool ShowError ) +MODULE* DIALOG_EXCHANGE_MODULE::Change_1_Module( MODULE* Module, + const wxString& new_module, + bool ShowError ) { wxString namecmp, oldnamecmp; MODULE* NewModule; @@ -479,7 +409,7 @@ MODULE* WinEDA_ExchangeModuleFrame::Change_1_Module( MODULE* Module, /* Chargement du module */ Line.Printf( _( "Change module %s (%s) " ), Module->m_Reference->m_Text.GetData(), oldnamecmp.GetData() ); - m_WinMsg->WriteText( Line ); + m_WinMessages->AppendText( Line ); namecmp.Trim( TRUE ); namecmp.Trim( FALSE ); @@ -488,24 +418,16 @@ MODULE* WinEDA_ExchangeModuleFrame::Change_1_Module( MODULE* Module, ShowError ); if( NewModule == NULL ) /* Nouveau module NON trouve, reaffichage de l'ancien */ { - m_WinMsg->WriteText( wxT( "No\n" ) ); + m_WinMessages->AppendText( wxT( "No\n" ) ); return NULL; } if( Module == m_CurrentModule ) m_CurrentModule = NewModule; - m_WinMsg->WriteText( wxT( "Ok\n" ) ); - - /* Effacement a l'ecran de l'ancien module */ - if ( m_DC ) - Module->Draw( m_Parent->DrawPanel, m_DC, GR_XOR ); + m_WinMessages->AppendText( wxT( "Ok\n" ) ); m_Parent->Exchange_Module( this, Module, NewModule ); - /* Affichage du nouveau module */ - if ( m_DC ) - NewModule->Draw( m_Parent->DrawPanel, m_DC, GR_OR ); - Maj_ListeCmp( NewModule->m_Reference->m_Text, oldnamecmp, namecmp, @@ -527,12 +449,11 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff, wxPoint oldpos; /* memorisation temporaire pos curseur */ D_PAD* pad, * old_pad; - if( (OldModule->Type() != TYPE_MODULE) || (NewModule->Type() != TYPE_MODULE) ) { DisplayError( winaff, - wxT( "WinEDA_BasePcbFrame::Exchange_Module() StuctType error" ) ); + wxT( "WinEDA_BasePcbFrame::Exchange_Module() StuctType error" ) ); } NewModule->SetParent( GetBoard() ); @@ -540,7 +461,11 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff, GetBoard()->m_Status_Pcb = 0; oldpos = GetScreen()->m_Curseur; GetScreen()->m_Curseur = OldModule->m_Pos; - Place_Module( NewModule, NULL ); + + /* place module without ratsnets refresh: this will be made later + * when all modules are on board + */ + Place_Module( NewModule, NULL, true ); GetScreen()->m_Curseur = oldpos; /* Changement eventuel de couche */ @@ -573,7 +498,7 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff, for( ; old_pad != NULL; old_pad = old_pad->Next() ) { if( strnicmp( pad->m_Padname, old_pad->m_Padname, - sizeof(pad->m_Padname) ) == 0 ) + sizeof(pad->m_Padname) ) == 0 ) { pad->SetNetname( old_pad->GetNetname() ); pad->SetNet( old_pad->GetNet() ); @@ -595,7 +520,7 @@ MODULE* WinEDA_BasePcbFrame::Exchange_Module( wxWindow* winaff, /* * affiche la liste des modules en librairie et selectione 1 nom */ -void WinEDA_ExchangeModuleFrame::Sel_NewMod_By_Liste( wxCommandEvent& event ) +void DIALOG_EXCHANGE_MODULE::BrowseAndSelectFootprint( wxCommandEvent& event ) { wxString newname; @@ -654,7 +579,7 @@ void WinEDA_PcbFrame::RecreateCmpFileFromBoard( wxCommandEvent& aEvent ) fgets( Line, sizeof(Line), FichCmp ); fprintf( FichCmp, "Cmp-Mod V01 Genere par PcbNew le %s\n", - DateAndTime( Line ) ); + DateAndTime( Line ) ); for( ; Module != NULL; Module = Module->Next() ) { @@ -668,7 +593,7 @@ void WinEDA_PcbFrame::RecreateCmpFileFromBoard( wxCommandEvent& aEvent ) !Module->m_Value->m_Text.IsEmpty() ? CONV_TO_UTF8( Module->m_Value->m_Text ) : "[NoVal]" ); fprintf( FichCmp, "IdModule = %s;\n", - CONV_TO_UTF8( Module->m_LibRef ) ); + CONV_TO_UTF8( Module->m_LibRef ) ); fprintf( FichCmp, "EndCmp\n" ); }