Commit 27cf4ad0 authored by charras's avatar charras

pcbnew: addded zones in non copper areas and starting work to use polygons in...

pcbnew: addded zones in non copper areas and starting work to use polygons in zone fill algos in not copper areas
work in progress: see changelog
parent 064fcf54
...@@ -5,6 +5,18 @@ Started 2007-June-11 ...@@ -5,6 +5,18 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with
email address. email address.
2008-Sep-26 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+pcbnew:
Starting work to use polygons in zone fill algos.
Currently, use this to add zone on non copper layers (technical layers)
Only for eyes.
Plot outputs do not handle this.
Problems with holes in zones.
Also: first used of wxFormBuilder
2008-Sep-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> 2008-Sep-17 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================ ================================================================================
+pcbnew: +pcbnew:
......
...@@ -727,42 +727,41 @@ wxPoint LibDrawPin::ReturnPinEndPoint() ...@@ -727,42 +727,41 @@ wxPoint LibDrawPin::ReturnPinEndPoint()
int LibDrawPin::ReturnPinDrawOrient( int TransMat[2][2] ) int LibDrawPin::ReturnPinDrawOrient( int TransMat[2][2] )
/********************************************************/ /********************************************************/
/* Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), /** Function ReturnPinDrawOrient
* according to its orientation, * Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT),
* AND the matrix transform (rot, mirror) TransMat * according to its orientation and the matrix transform (rot, mirror) TransMat
* @param TransMat = transform matrix
*/ */
{ {
int orient; int orient;
int x1 = 0, y1 = 0; wxPoint end; // position of a end pin starting at 0,0 according to its orientation, lenght = 1
int t1, t2;
switch( m_Orient ) switch( m_Orient )
{ {
case PIN_UP: case PIN_UP:
y1 = 1; break; end.y = 1; break;
case PIN_DOWN: case PIN_DOWN:
y1 = -1; break; end.y = -1; break;
case PIN_LEFT: case PIN_LEFT:
x1 = -1; break; end.x = -1; break;
case PIN_RIGHT: case PIN_RIGHT:
x1 = 1; break; end.x = 1; break;
} }
t1 = TransMat[0][0] * x1 + TransMat[0][1] * y1; end = TransformCoordinate( TransMat, end ); // = pos of end point, accordint to the component orientation
t2 = TransMat[1][0] * x1 + TransMat[1][1] * y1;
orient = PIN_UP; orient = PIN_UP;
if( t1 == 0 ) if( end.x == 0 )
{ {
if( t2 > 0 ) if( end.y > 0 )
orient = PIN_DOWN; orient = PIN_DOWN;
} }
else else
{ {
orient = PIN_RIGHT; orient = PIN_RIGHT;
if( t1 < 0 ) if( end.x < 0 )
orient = PIN_LEFT; orient = PIN_LEFT;
} }
......
No preview for this file type
...@@ -2,8 +2,8 @@ msgid "" ...@@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-09-08 19:19+0100\n" "POT-Creation-Date: 2008-09-23 21:02+0100\n"
"PO-Revision-Date: 2008-09-08 19:21+0100\n" "PO-Revision-Date: 2008-09-23 21:02+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
...@@ -688,6 +688,33 @@ msgstr "Connecte une extrémité de piste en l'air, lorsque elle couvre un pad o ...@@ -688,6 +688,33 @@ msgstr "Connecte une extrémité de piste en l'air, lorsque elle couvre un pad o
msgid "Clean pcb" msgid "Clean pcb"
msgstr "Nettoyage PCB" msgstr "Nettoyage PCB"
#: pcbnew/plot_rtn.cpp:224
#, c-format
msgid ""
"Your BOARD has a bad layer number of %u for module\n"
" %s's \"reference\" text."
msgstr ""
"Votre PCB a un mauvais numero de couche %u pour le module\n"
" %s's \"reference\"."
#: pcbnew/plot_rtn.cpp:244
#, c-format
msgid ""
"Your BOARD has a bad layer number of %u for module\n"
" %s's \"value\" text."
msgstr ""
"Votre PCB a un mauvais numero de couche %u pour le module\n"
" %s's \"valeur\"."
#: pcbnew/plot_rtn.cpp:290
#, c-format
msgid ""
"Your BOARD has a bad layer number of %u for module\n"
" %s's \"module text\" text of %s."
msgstr ""
"Votre PCB a un mauvais numero de couche %u pour le module\n"
" %s's \"texte module\" de %s."
#: pcbnew/controle.cpp:172 #: pcbnew/controle.cpp:172
msgid "Selection Clarification" msgid "Selection Clarification"
msgstr "Clarification de la Sélection" msgstr "Clarification de la Sélection"
...@@ -697,8 +724,8 @@ msgid "Dimension properties" ...@@ -697,8 +724,8 @@ msgid "Dimension properties"
msgstr "Propriétés des Cotes" msgstr "Propriétés des Cotes"
#: pcbnew/cotation.cpp:113 #: pcbnew/cotation.cpp:113
#: pcbnew/dialog_edit_module.cpp:267 #: pcbnew/dialog_edit_module.cpp:270
#: pcbnew/dialog_edit_module.cpp:313 #: pcbnew/dialog_edit_module.cpp:316
msgid "Normal" msgid "Normal"
msgstr "Normal" msgstr "Normal"
...@@ -985,83 +1012,83 @@ msgstr "Propriétés" ...@@ -985,83 +1012,83 @@ msgstr "Propriétés"
msgid "3D settings" msgid "3D settings"
msgstr "3D Caract" msgstr "3D Caract"
#: pcbnew/dialog_edit_module.cpp:171 #: pcbnew/dialog_edit_module.cpp:184
msgid "X" msgid "X"
msgstr "X" msgstr "X"
#: pcbnew/dialog_edit_module.cpp:172 #: pcbnew/dialog_edit_module.cpp:185
msgid "Y" msgid "Y"
msgstr "Y" msgstr "Y"
#: pcbnew/dialog_edit_module.cpp:184 #: pcbnew/dialog_edit_module.cpp:187
msgid "Change module(s)" msgid "Change module(s)"
msgstr "Change module(s)" msgstr "Change module(s)"
#: pcbnew/dialog_edit_module.cpp:188 #: pcbnew/dialog_edit_module.cpp:191
msgid "Edit Module" msgid "Edit Module"
msgstr "Edit Module" msgstr "Edit Module"
#: pcbnew/dialog_edit_module.cpp:192 #: pcbnew/dialog_edit_module.cpp:195
msgid "Position" msgid "Position"
msgstr "Position" msgstr "Position"
#: pcbnew/dialog_edit_module.cpp:217 #: pcbnew/dialog_edit_module.cpp:220
msgid "Doc" msgid "Doc"
msgstr "Doc" msgstr "Doc"
#: pcbnew/dialog_edit_module.cpp:224 #: pcbnew/dialog_edit_module.cpp:227
msgid "Keywords" msgid "Keywords"
msgstr "Mots Cles" msgstr "Mots Cles"
#: pcbnew/dialog_edit_module.cpp:231 #: pcbnew/dialog_edit_module.cpp:234
msgid "Fields:" msgid "Fields:"
msgstr "Champs:" msgstr "Champs:"
#: pcbnew/dialog_edit_module.cpp:241 #: pcbnew/dialog_edit_module.cpp:244
msgid "Add Field" msgid "Add Field"
msgstr "Ajouter Champ" msgstr "Ajouter Champ"
#: pcbnew/dialog_edit_module.cpp:246 #: pcbnew/dialog_edit_module.cpp:249
msgid "Edit Field" msgid "Edit Field"
msgstr "Editer Champ" msgstr "Editer Champ"
#: pcbnew/dialog_edit_module.cpp:251 #: pcbnew/dialog_edit_module.cpp:254
msgid "Delete Field" msgid "Delete Field"
msgstr "Supprimer Champ" msgstr "Supprimer Champ"
#: pcbnew/dialog_edit_module.cpp:258 #: pcbnew/dialog_edit_module.cpp:261
msgid "Component" msgid "Component"
msgstr "Composant" msgstr "Composant"
#: pcbnew/dialog_edit_module.cpp:258 #: pcbnew/dialog_edit_module.cpp:261
msgid "Copper" msgid "Copper"
msgstr "Cuivre" msgstr "Cuivre"
#: pcbnew/dialog_edit_module.cpp:267 #: pcbnew/dialog_edit_module.cpp:270
msgid "User" msgid "User"
msgstr "User" msgstr "User"
#: pcbnew/dialog_edit_module.cpp:303 #: pcbnew/dialog_edit_module.cpp:306
msgid "Orient (0.1 deg)" msgid "Orient (0.1 deg)"
msgstr "Orient (0.1 deg)" msgstr "Orient (0.1 deg)"
#: pcbnew/dialog_edit_module.cpp:313 #: pcbnew/dialog_edit_module.cpp:316
msgid "Normal+Insert" msgid "Normal+Insert"
msgstr "Normal+Insert" msgstr "Normal+Insert"
#: pcbnew/dialog_edit_module.cpp:313 #: pcbnew/dialog_edit_module.cpp:316
msgid "Virtual" msgid "Virtual"
msgstr "Virtuel" msgstr "Virtuel"
#: pcbnew/dialog_edit_module.cpp:314 #: pcbnew/dialog_edit_module.cpp:317
msgid "Attributes" msgid "Attributes"
msgstr "Attributs" msgstr "Attributs"
#: pcbnew/dialog_edit_module.cpp:317 #: pcbnew/dialog_edit_module.cpp:320
msgid "Use this attribute for most non smd components" msgid "Use this attribute for most non smd components"
msgstr "Utiliser cet attribut pour la plupart des composants" msgstr "Utiliser cet attribut pour la plupart des composants"
#: pcbnew/dialog_edit_module.cpp:319 #: pcbnew/dialog_edit_module.cpp:322
msgid "" msgid ""
"Use this attribute for smd components.\n" "Use this attribute for smd components.\n"
"Only components with this option are put in the footprint position list file" "Only components with this option are put in the footprint position list file"
...@@ -1069,75 +1096,75 @@ msgstr "" ...@@ -1069,75 +1096,75 @@ msgstr ""
"Uiliser cet attribut pour les composants CMS.\n" "Uiliser cet attribut pour les composants CMS.\n"
"Seuls les composants avec cette option sont mis dans le fichier de position des composants" "Seuls les composants avec cette option sont mis dans le fichier de position des composants"
#: pcbnew/dialog_edit_module.cpp:321 #: pcbnew/dialog_edit_module.cpp:324
msgid "Use this attribute for \"virtual\" components drawn on board (like a old ISA PC bus connector)" msgid "Use this attribute for \"virtual\" components drawn on board (like a old ISA PC bus connector)"
msgstr "Uiliser cet attribut pour les composants \"virtuels\" directement dessinés sur le PCB (tel que les vieux connecteurs ISA de PC)" msgstr "Uiliser cet attribut pour les composants \"virtuels\" directement dessinés sur le PCB (tel que les vieux connecteurs ISA de PC)"
#: pcbnew/dialog_edit_module.cpp:345 #: pcbnew/dialog_edit_module.cpp:348
msgid "Free" msgid "Free"
msgstr "Libre" msgstr "Libre"
#: pcbnew/dialog_edit_module.cpp:345 #: pcbnew/dialog_edit_module.cpp:348
msgid "Locked" msgid "Locked"
msgstr "Verrouillé" msgstr "Verrouillé"
#: pcbnew/dialog_edit_module.cpp:347 #: pcbnew/dialog_edit_module.cpp:350
msgid "Move and Auto Place" msgid "Move and Auto Place"
msgstr "Move et Placement Automatique" msgstr "Move et Placement Automatique"
#: pcbnew/dialog_edit_module.cpp:352 #: pcbnew/dialog_edit_module.cpp:355
msgid "Enable hotkey move commands and Auto Placement" msgid "Enable hotkey move commands and Auto Placement"
msgstr "Autoriser les commandes clavier de déplacement et l'auto placement" msgstr "Autoriser les commandes clavier de déplacement et l'auto placement"
#: pcbnew/dialog_edit_module.cpp:353 #: pcbnew/dialog_edit_module.cpp:356
msgid "Disable hotkey move commands and Auto Placement" msgid "Disable hotkey move commands and Auto Placement"
msgstr "Interdire les commandes clavier de déplacement et l'auto placement" msgstr "Interdire les commandes clavier de déplacement et l'auto placement"
#: pcbnew/dialog_edit_module.cpp:357 #: pcbnew/dialog_edit_module.cpp:360
msgid "Rot 90" msgid "Rot 90"
msgstr "Rot 90" msgstr "Rot 90"
#: pcbnew/dialog_edit_module.cpp:365 #: pcbnew/dialog_edit_module.cpp:368
msgid "Rot 180" msgid "Rot 180"
msgstr "Rot 180" msgstr "Rot 180"
#: pcbnew/dialog_edit_module.cpp:402 #: pcbnew/dialog_edit_module.cpp:405
msgid "3D Shape Name" msgid "3D Shape Name"
msgstr "3D forme" msgstr "3D forme"
#: pcbnew/dialog_edit_module.cpp:419 #: pcbnew/dialog_edit_module.cpp:422
msgid "Browse" msgid "Browse"
msgstr "Examiner" msgstr "Examiner"
#: pcbnew/dialog_edit_module.cpp:423 #: pcbnew/dialog_edit_module.cpp:426
msgid "Add 3D Shape" msgid "Add 3D Shape"
msgstr "Ajout Forme 3D" msgstr "Ajout Forme 3D"
#: pcbnew/dialog_edit_module.cpp:429 #: pcbnew/dialog_edit_module.cpp:432
msgid "Remove 3D Shape" msgid "Remove 3D Shape"
msgstr "Suppr. Forme 3D:" msgstr "Suppr. Forme 3D:"
#: pcbnew/dialog_edit_module.cpp:435 #: pcbnew/dialog_edit_module.cpp:438
msgid "Shape Scale:" msgid "Shape Scale:"
msgstr "Echelle de la forme:" msgstr "Echelle de la forme:"
#: pcbnew/dialog_edit_module.cpp:442 #: pcbnew/dialog_edit_module.cpp:445
msgid "Shape Offset:" msgid "Shape Offset:"
msgstr "Offset forme:" msgstr "Offset forme:"
#: pcbnew/dialog_edit_module.cpp:451 #: pcbnew/dialog_edit_module.cpp:454
msgid "Shape Rotation:" msgid "Shape Rotation:"
msgstr "Rot de la forme" msgstr "Rot de la forme"
#: pcbnew/dialog_edit_module.cpp:491 #: pcbnew/dialog_edit_module.cpp:494
msgid "3D Shape:" msgid "3D Shape:"
msgstr "Forme 3D:" msgstr "Forme 3D:"
#: pcbnew/dialog_edit_module.cpp:802 #: pcbnew/dialog_edit_module.cpp:810
msgid "Reference or Value cannot be deleted" msgid "Reference or Value cannot be deleted"
msgstr "Référence ou Valeur ne peut etre effacée" msgstr "Référence ou Valeur ne peut etre effacée"
#: pcbnew/dialog_edit_module.cpp:806 #: pcbnew/dialog_edit_module.cpp:814
#, c-format #, c-format
msgid "Delete [%s]" msgid "Delete [%s]"
msgstr "Supprimer [%s]" msgstr "Supprimer [%s]"
...@@ -1805,17 +1832,21 @@ msgstr "Le caractère de délimitation de ligne doit être un seul caractère ' ...@@ -1805,17 +1832,21 @@ msgstr "Le caractère de délimitation de ligne doit être un seul caractère '
msgid "Un-terminated delimited string" msgid "Un-terminated delimited string"
msgstr "Ligne délimitée non terminée" msgstr "Ligne délimitée non terminée"
#: pcbnew/edgemod.cpp:204 #: pcbnew/modules.cpp:81
msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure" msgid "Footprint name:"
msgstr "L'élément graphique sera sur une couche cuivre. C'est très dangereux. Etes vous sûr" msgstr "Nom Module: "
#: pcbnew/edgemod.cpp:246 #: pcbnew/modules.cpp:81
msgid "New Width (1/10000\"):" msgid "Search Footprint"
msgstr "Novelle largeur (1/10000\"):" msgstr "Cherche Module"
#: pcbnew/edgemod.cpp:253 #: pcbnew/modules.cpp:305
msgid "Incorrect number, no change" msgid "Delete Module"
msgstr "Nombre incorrect, pas de changement" msgstr "Supprimer Module"
#: pcbnew/modules.cpp:306
msgid "Value "
msgstr "Valeur "
#: pcbnew/edit.cpp:179 #: pcbnew/edit.cpp:179
#: pcbnew/editmod.cpp:45 #: pcbnew/editmod.cpp:45
...@@ -1956,6 +1987,10 @@ msgid "GenCAD file:" ...@@ -1956,6 +1987,10 @@ msgid "GenCAD file:"
msgstr "Fichier GenCAD:" msgstr "Fichier GenCAD:"
#: pcbnew/export_gencad.cpp:83 #: pcbnew/export_gencad.cpp:83
#: pcbnew/files.cpp:352
#: pcbnew/gen_modules_placefile.cpp:128
#: pcbnew/gen_modules_placefile.cpp:139
#: pcbnew/gen_modules_placefile.cpp:292
msgid "Unable to create " msgid "Unable to create "
msgstr "Impossible de créer " msgstr "Impossible de créer "
...@@ -1964,7 +1999,6 @@ msgid "Recovery file " ...@@ -1964,7 +1999,6 @@ msgid "Recovery file "
msgstr "Fichier de secours " msgstr "Fichier de secours "
#: pcbnew/files.cpp:56 #: pcbnew/files.cpp:56
#: pcbnew/librairi.cpp:256
msgid " not found" msgid " not found"
msgstr " non trouvé" msgstr " non trouvé"
...@@ -1981,7 +2015,6 @@ msgid "Load board files:" ...@@ -1981,7 +2015,6 @@ msgid "Load board files:"
msgstr "Charger Fichiers C.I.:" msgstr "Charger Fichiers C.I.:"
#: pcbnew/files.cpp:188 #: pcbnew/files.cpp:188
#: pcbnew/librairi.cpp:77
#, c-format #, c-format
msgid "File <%s> not found" msgid "File <%s> not found"
msgstr " fichier %s non trouvé" msgstr " fichier %s non trouvé"
...@@ -2113,6 +2146,18 @@ msgstr "Fichier placement coté cuivre:" ...@@ -2113,6 +2146,18 @@ msgstr "Fichier placement coté cuivre:"
msgid "Module count" msgid "Module count"
msgstr "Nb Modules" msgstr "Nb Modules"
#: pcbnew/surbrill.cpp:37
msgid "Filter for net names:"
msgstr "Filtre pour nets:"
#: pcbnew/surbrill.cpp:37
msgid "Net Filter"
msgstr "Filtre Equipot"
#: pcbnew/surbrill.cpp:41
msgid "List Nets"
msgstr "Liste équipots"
#: pcbnew/globaleditpad.cpp:74 #: pcbnew/globaleditpad.cpp:74
msgid "Pads Global Edit" msgid "Pads Global Edit"
msgstr "Pads: Edition globale" msgstr "Pads: Edition globale"
...@@ -2206,123 +2251,97 @@ msgstr "Effacer Textes Pcb" ...@@ -2206,123 +2251,97 @@ msgstr "Effacer Textes Pcb"
msgid "Error: Unexpected end of file !" msgid "Error: Unexpected end of file !"
msgstr "Erreur: Fin de fichier inattendue !" msgstr "Erreur: Fin de fichier inattendue !"
#: pcbnew/librairi.cpp:61 #: pcbnew/muonde.cpp:149
msgid "Import Module:" msgid "Gap"
msgstr "Importer Module:" msgstr "Gap"
#: pcbnew/librairi.cpp:97
msgid "Not a module file"
msgstr "N'est pas un fichier de Modules"
#: pcbnew/librairi.cpp:179
msgid "Create lib"
msgstr "Créer lib"
#: pcbnew/librairi.cpp:179
msgid "Export Module:"
msgstr "Exporter Module:"
#: pcbnew/librairi.cpp:194
#: pcbnew/librairi.cpp:441
#, c-format
msgid "File %s exists, OK to replace ?"
msgstr "Fichier %s existant, OK pour remplacer ?"
#: pcbnew/librairi.cpp:203
#, c-format
msgid "Unable to create <%s>"
msgstr "Incapable de créer <%s>"
#: pcbnew/librairi.cpp:224 #: pcbnew/muonde.cpp:154
#, c-format msgid "Stub"
msgid "Module exported in file <%s>" msgstr "Stub"
msgstr "Module exporté en fichier <%s>"
#: pcbnew/librairi.cpp:246 #: pcbnew/muonde.cpp:160
#, c-format msgid "Arc Stub"
msgid "Ok to delete module %s in library %s" msgstr "Arc Stub"
msgstr "Ok pour effacer module %sein librairie %s"
#: pcbnew/librairi.cpp:256 #: pcbnew/muonde.cpp:175
msgid "Library " msgid " (mm):"
msgstr "Librairie " msgstr " (mm):"
#: pcbnew/librairi.cpp:267 #: pcbnew/muonde.cpp:176
msgid "Not a Library file" #: pcbnew/muonde.cpp:183
msgstr "N'est pas un fichier Librairie" #: pcbnew/muonde.cpp:199
msgid "Create microwave module"
msgstr "Créer Module MicroOnde"
#: pcbnew/librairi.cpp:296 #: pcbnew/muonde.cpp:182
#, c-format msgid " (inch):"
msgid "Module [%s] not found" msgstr " (pouce):"
msgstr "Module [%s] non trouvé"
#: pcbnew/librairi.cpp:390 #: pcbnew/muonde.cpp:189
#, c-format #: pcbnew/muonde.cpp:202
msgid "Component %s deleted in library %s" msgid "Incorrect number, abort"
msgstr "Composant %s supprimé en librairie %s" msgstr "Nombre incorrect, arret"
#: pcbnew/librairi.cpp:416 #: pcbnew/muonde.cpp:198
msgid " No modules to archive!" msgid "Angle (0.1deg):"
msgstr "Pas de Modules a archiver" msgstr "Angle (0.1deg):"
#: pcbnew/librairi.cpp:423 #: pcbnew/muonde.cpp:330
msgid "Library" msgid "Complex shape"
msgstr "Librairie" msgstr "Formr complexe"
#: pcbnew/librairi.cpp:516 #: pcbnew/muonde.cpp:356
#, c-format msgid "Read Shape Descr File..."
msgid "Library %s not found" msgstr "Lire fichier de description de forme..."
msgstr "Librairie %s non trouvée"
#: pcbnew/librairi.cpp:527 #: pcbnew/muonde.cpp:360
msgid "Name:" msgid "Symmetrical"
msgstr "Nom:" msgstr "Symétrique"
#: pcbnew/librairi.cpp:537 #: pcbnew/muonde.cpp:360
#, c-format msgid "Mirrored"
msgid "Unable to open %s" msgstr "Miroir"
msgstr "Ne peut pas ouvrir \"%s\""
#: pcbnew/librairi.cpp:547 #: pcbnew/muonde.cpp:362
#, c-format msgid "Shape Option"
msgid "File %s is not a eeschema library" msgstr "Option Forme"
msgstr "Fichier %s n'est pas une librairie eeschema"
#: pcbnew/librairi.cpp:576 #: pcbnew/muonde.cpp:428
msgid "Module exists Line " msgid "Read descr shape file"
msgstr "Module existe Ligne " msgstr "Lire fichier de description de forme"
#: pcbnew/librairi.cpp:695 #: pcbnew/muonde.cpp:444
msgid "Component " msgid "File not found"
msgstr "Composant" msgstr "fichier non trouvé"
#: pcbnew/librairi.cpp:696 #: pcbnew/muonde.cpp:548
msgid " added in " msgid "Shape has a null size!"
msgstr " ajouté dans " msgstr "La forme a une taille nulle"
#: pcbnew/librairi.cpp:696 #: pcbnew/muonde.cpp:553
msgid " replaced in " msgid "Shape has no points!"
msgstr " remplacé dans " msgstr "La forme n'a pas de points"
#: pcbnew/librairi.cpp:723 #: pcbnew/muonde.cpp:679
msgid "Module Reference:" msgid "No pad for this module"
msgstr "Référence Module" msgstr "Pas de pad dans ce module"
#: pcbnew/librairi.cpp:775 #: pcbnew/muonde.cpp:684
msgid "Active Lib:" msgid "Only one pad for this module"
msgstr "Librairie Active:" msgstr "Seulement un pad dans ce module"
#: pcbnew/librairi.cpp:786 #: pcbnew/muonde.cpp:698
msgid "Module Editor (lib: " msgid "Gap (mm):"
msgstr "Editeur de modules (lib: " msgstr "Gap (mm):"
#: pcbnew/librairi.cpp:801 #: pcbnew/muonde.cpp:698
msgid "Library exists " #: pcbnew/muonde.cpp:704
msgstr "Librairie existante " msgid "Create Microwave Gap"
msgstr "Créer Gap MicroOnde "
#: pcbnew/librairi.cpp:816 #: pcbnew/muonde.cpp:704
msgid "Create error " msgid "Gap (inch):"
msgstr "Erreur en création " msgstr "Gap (inch):"
#: pcbnew/loadcmp.cpp:103 #: pcbnew/loadcmp.cpp:103
msgid "Module name:" msgid "Module name:"
...@@ -2362,58 +2381,72 @@ msgid "Sizes and Widths" ...@@ -2362,58 +2381,72 @@ msgid "Sizes and Widths"
msgstr "Dims. et Epaiss." msgstr "Dims. et Epaiss."
#: pcbnew/menubarmodedit.cpp:41 #: pcbnew/menubarmodedit.cpp:41
#: pcbnew/menubarpcb.cpp:229
msgid "Adjust width for texts and drawings" msgid "Adjust width for texts and drawings"
msgstr "Ajuster dims pour textes et graphiques" msgstr "Ajuster dims pour textes et graphiques"
#: pcbnew/menubarmodedit.cpp:45 #: pcbnew/menubarmodedit.cpp:45
#: pcbnew/menubarpcb.cpp:233
msgid "Pad Settings" msgid "Pad Settings"
msgstr "Caract pads" msgstr "Caract pads"
#: pcbnew/menubarmodedit.cpp:46 #: pcbnew/menubarmodedit.cpp:46
#: pcbnew/menubarpcb.cpp:234
msgid "Adjust size,shape,layers... for Pads" msgid "Adjust size,shape,layers... for Pads"
msgstr "Ajuster taille, forme, couches... pour pads" msgstr "Ajuster taille, forme, couches... pour pads"
#: pcbnew/menubarmodedit.cpp:50 #: pcbnew/menubarmodedit.cpp:50
#: pcbnew/menubarpcb.cpp:223
msgid "User Grid Size" msgid "User Grid Size"
msgstr "Dim Grille utilisteur" msgstr "Dim Grille utilisteur"
#: pcbnew/menubarmodedit.cpp:51 #: pcbnew/menubarmodedit.cpp:51
#: pcbnew/menubarpcb.cpp:224
msgid "Adjust User Grid" msgid "Adjust User Grid"
msgstr "Ajuster Grille utilisateur" msgstr "Ajuster Grille utilisateur"
#: pcbnew/menubarmodedit.cpp:60 #: pcbnew/menubarmodedit.cpp:60
#: pcbnew/menubarpcb.cpp:292
msgid "&Contents" msgid "&Contents"
msgstr "&Contenu" msgstr "&Contenu"
#: pcbnew/menubarmodedit.cpp:60 #: pcbnew/menubarmodedit.cpp:60
#: pcbnew/menubarpcb.cpp:292
msgid "Open the pcbnew manual" msgid "Open the pcbnew manual"
msgstr "Ouvrir la documentation de pcbnew" msgstr "Ouvrir la documentation de pcbnew"
#: pcbnew/menubarmodedit.cpp:64 #: pcbnew/menubarmodedit.cpp:64
#: pcbnew/menubarpcb.cpp:296
msgid "&About" msgid "&About"
msgstr "&Infos logiciel" msgstr "&Infos logiciel"
#: pcbnew/menubarmodedit.cpp:64 #: pcbnew/menubarmodedit.cpp:64
#: pcbnew/menubarpcb.cpp:296
msgid "About this application" msgid "About this application"
msgstr "Au sujet de cette application" msgstr "Au sujet de cette application"
#: pcbnew/menubarmodedit.cpp:72 #: pcbnew/menubarmodedit.cpp:72
#: pcbnew/menubarpcb.cpp:304
msgid "3D Display" msgid "3D Display"
msgstr "3D Visu" msgstr "3D Visu"
#: pcbnew/menubarmodedit.cpp:72 #: pcbnew/menubarmodedit.cpp:72
#: pcbnew/menubarpcb.cpp:304
msgid "Show Board in 3D Mode" msgid "Show Board in 3D Mode"
msgstr "Visualisation en 3D" msgstr "Visualisation en 3D"
#: pcbnew/menubarmodedit.cpp:76 #: pcbnew/menubarmodedit.cpp:76
#: pcbnew/menubarpcb.cpp:310
msgid "&Dimensions" msgid "&Dimensions"
msgstr "&Dimensions" msgstr "&Dimensions"
#: pcbnew/menubarmodedit.cpp:77 #: pcbnew/menubarmodedit.cpp:77
#: pcbnew/menubarpcb.cpp:313
msgid "&3D Display" msgid "&3D Display"
msgstr "&3D Visu" msgstr "&3D Visu"
#: pcbnew/menubarmodedit.cpp:78 #: pcbnew/menubarmodedit.cpp:78
#: pcbnew/menubarpcb.cpp:314
msgid "&Help" msgid "&Help"
msgstr "&Aide" msgstr "&Aide"
...@@ -2725,42 +2758,6 @@ msgstr "Forme X" ...@@ -2725,42 +2758,6 @@ msgstr "Forme X"
msgid "Target Shape:" msgid "Target Shape:"
msgstr "Forme Mire:" msgstr "Forme Mire:"
#: pcbnew/modedit.cpp:263
msgid "Unable to find the footprint source on the main board"
msgstr "Impossible de trouver le module source sur le PCB principal"
#: pcbnew/modedit.cpp:264
msgid ""
"\n"
"Cannot update the footprint"
msgstr ""
"\n"
"Ne peut mettre à jour le module"
#: pcbnew/modedit.cpp:272
msgid "A footprint source was found on the main board"
msgstr "Un module source a été trouvé sur le PCB principal"
#: pcbnew/modedit.cpp:273
msgid ""
"\n"
"Cannot insert this footprint"
msgstr ""
"\n"
"Ne peut insérer cd module"
#: pcbnew/modedit.cpp:393
msgid "Add Pad"
msgstr "Ajouter Pastilles"
#: pcbnew/modedit.cpp:406
msgid "Add Drawing"
msgstr "Ajout d'éléments graphiques"
#: pcbnew/modedit.cpp:410
msgid "Place anchor"
msgstr "Place Ancre"
#: pcbnew/modedit_onclick.cpp:196 #: pcbnew/modedit_onclick.cpp:196
msgid "End Tool" msgid "End Tool"
msgstr "Fin Outil" msgstr "Fin Outil"
...@@ -2897,18 +2894,6 @@ msgstr "Ajuste Epaiss" ...@@ -2897,18 +2894,6 @@ msgstr "Ajuste Epaiss"
msgid "Module Editor: module modified!, Continue ?" msgid "Module Editor: module modified!, Continue ?"
msgstr "Editeur de Module: module modifié! Continuer ?" msgstr "Editeur de Module: module modifié! Continuer ?"
#: pcbnew/modules.cpp:81
msgid "Footprint name:"
msgstr "Nom Module: "
#: pcbnew/modules.cpp:305
msgid "Delete Module"
msgstr "Supprimer Module"
#: pcbnew/modules.cpp:306
msgid "Value "
msgstr "Valeur "
#: pcbnew/move-drag_pads.cpp:274 #: pcbnew/move-drag_pads.cpp:274
#, c-format #, c-format
msgid "Delete Pad (module %s %s) " msgid "Delete Pad (module %s %s) "
...@@ -2922,87 +2907,6 @@ msgstr "Impossible de drag ce segment: trop de segments connectés" ...@@ -2922,87 +2907,6 @@ msgstr "Impossible de drag ce segment: trop de segments connectés"
msgid "Unable to drag this segment: two collinear segments" msgid "Unable to drag this segment: two collinear segments"
msgstr "Impossible de drag ce segment: 2 segments alignés" msgstr "Impossible de drag ce segment: 2 segments alignés"
#: pcbnew/muonde.cpp:149
msgid "Gap"
msgstr "Gap"
#: pcbnew/muonde.cpp:154
msgid "Stub"
msgstr "Stub"
#: pcbnew/muonde.cpp:160
msgid "Arc Stub"
msgstr "Arc Stub"
#: pcbnew/muonde.cpp:175
msgid " (mm):"
msgstr " (mm):"
#: pcbnew/muonde.cpp:182
msgid " (inch):"
msgstr " (pouce):"
#: pcbnew/muonde.cpp:189
#: pcbnew/muonde.cpp:202
msgid "Incorrect number, abort"
msgstr "Nombre incorrect, arret"
#: pcbnew/muonde.cpp:198
msgid "Angle (0.1deg):"
msgstr "Angle (0.1deg):"
#: pcbnew/muonde.cpp:330
msgid "Complex shape"
msgstr "Formr complexe"
#: pcbnew/muonde.cpp:356
msgid "Read Shape Descr File..."
msgstr "Lire fichier de description de forme..."
#: pcbnew/muonde.cpp:360
msgid "Symmetrical"
msgstr "Symétrique"
#: pcbnew/muonde.cpp:360
msgid "Mirrored"
msgstr "Miroir"
#: pcbnew/muonde.cpp:362
msgid "Shape Option"
msgstr "Option Forme"
#: pcbnew/muonde.cpp:428
msgid "Read descr shape file"
msgstr "Lire fichier de description de forme"
#: pcbnew/muonde.cpp:444
msgid "File not found"
msgstr "fichier non trouvé"
#: pcbnew/muonde.cpp:548
msgid "Shape has a null size!"
msgstr "La forme a une taille nulle"
#: pcbnew/muonde.cpp:553
msgid "Shape has no points!"
msgstr "La forme n'a pas de points"
#: pcbnew/muonde.cpp:679
msgid "No pad for this module"
msgstr "Pas de pad dans ce module"
#: pcbnew/muonde.cpp:684
msgid "Only one pad for this module"
msgstr "Seulement un pad dans ce module"
#: pcbnew/muonde.cpp:698
msgid "Gap (mm):"
msgstr "Gap (mm):"
#: pcbnew/muonde.cpp:704
msgid "Gap (inch):"
msgstr "Gap (inch):"
#: pcbnew/muwave_command.cpp:52 #: pcbnew/muwave_command.cpp:52
msgid "Add Line" msgid "Add Line"
msgstr "Addition de lignes" msgstr "Addition de lignes"
...@@ -3435,6 +3339,43 @@ msgstr "Grille perso dim Y" ...@@ -3435,6 +3339,43 @@ msgstr "Grille perso dim Y"
msgid "Abort routing?" msgid "Abort routing?"
msgstr "Stopper routage?" msgstr "Stopper routage?"
#: pcbnew/modedit.cpp:268
msgid "Unable to find the footprint source on the main board"
msgstr "Impossible de trouver le module source sur le PCB principal"
#: pcbnew/modedit.cpp:269
msgid ""
"\n"
"Cannot update the footprint"
msgstr ""
"\n"
"Ne peut mettre à jour le module"
#: pcbnew/modedit.cpp:277
msgid "A footprint source was found on the main board"
msgstr "Un module source a été trouvé sur le PCB principal"
#: pcbnew/modedit.cpp:278
msgid ""
"\n"
"Cannot insert this footprint"
msgstr ""
"\n"
"Ne peut insérer cd module"
#: pcbnew/modedit.cpp:396
msgid "Add Pad"
msgstr "Ajouter Pastilles"
#: pcbnew/modedit.cpp:409
msgid "Add Drawing"
msgstr "Ajout d'éléments graphiques"
#: pcbnew/modedit.cpp:413
#: pcbnew/tool_modedit.cpp:176
msgid "Place anchor"
msgstr "Place Ancre"
#: pcbnew/specctra.cpp:133 #: pcbnew/specctra.cpp:133
#: pcbnew/specctra.cpp:140 #: pcbnew/specctra.cpp:140
msgid "Expecting" msgid "Expecting"
...@@ -3445,89 +3386,38 @@ msgstr "Attendu" ...@@ -3445,89 +3386,38 @@ msgstr "Attendu"
msgid "Unexpected" msgid "Unexpected"
msgstr "Inattendu" msgstr "Inattendu"
#: pcbnew/specctra.cpp:321 #: pcbnew/specctra.cpp:324
#: pcbnew/specctra.cpp:351 #: pcbnew/specctra.cpp:354
#: pcbnew/specctra.cpp:3524 #: pcbnew/specctra.cpp:3527
#: pcbnew/specctra.cpp:3549 #: pcbnew/specctra.cpp:3552
#, c-format #, c-format
msgid "Unable to open file \"%s\"" msgid "Unable to open file \"%s\""
msgstr "Ne peut pas ouvrirle fichier \"%s\"" msgstr "Ne peut pas ouvrirle fichier \"%s\""
#: pcbnew/specctra.cpp:3465 #: pcbnew/specctra.cpp:3468
#, c-format #, c-format
msgid "System file error writing to file \"%s\"" msgid "System file error writing to file \"%s\""
msgstr "Erreur système sur écriture fichier \"%s\"" msgstr "Erreur système sur écriture fichier \"%s\""
#: pcbnew/specctra.cpp:3644 #: pcbnew/specctra.cpp:3647
msgid "Error writing to STRINGFORMATTER" msgid "Error writing to STRINGFORMATTER"
msgstr "Error writing to STRINGFORMATTER" msgstr "Error writing to STRINGFORMATTER"
#: pcbnew/specctra_import.cpp:74 #: pcbnew/edgemod.cpp:204
msgid "Merge Specctra Session file:" msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure"
msgstr "Fichier Specctra Session à Fusionner:" msgstr "L'élément graphique sera sur une couche cuivre. C'est très dangereux. Etes vous sûr"
#: pcbnew/specctra_import.cpp:101
msgid "BOARD may be corrupted, do not save it."
msgstr "Le PCB peut être corrompu. Ne pas le sauver"
#: pcbnew/specctra_import.cpp:103
msgid "Fix problem and try again."
msgstr "Fixer le problème et recommencer."
#: pcbnew/specctra_import.cpp:117
msgid "Session file imported and merged OK."
msgstr "Fichier Session importé et fusionné correctement."
#: pcbnew/specctra_import.cpp:192
#: pcbnew/specctra_import.cpp:300
#, c-format
msgid "Session file uses invalid layer id \"%s\""
msgstr "Le Fichier Session utilise une couche invalide n° \"%s\""
#: pcbnew/specctra_import.cpp:242
msgid "Session via padstack has no shapes"
msgstr "Manque dans le Fichier Session file la section "
#: pcbnew/specctra_import.cpp:249
#: pcbnew/specctra_import.cpp:267
#: pcbnew/specctra_import.cpp:291
#, c-format
msgid "Unsupported via shape: \"%s\""
msgstr "Forme via inconnue: \"%s\""
#: pcbnew/specctra_import.cpp:348
msgid "Session file is missing the \"session\" section"
msgstr "Session file is missing the \"session\" section"
#: pcbnew/specctra_import.cpp:351
msgid "Session file is missing the \"placement\" section"
msgstr "Manque dans le Fichier Session file la section \"placement\""
#: pcbnew/specctra_import.cpp:354
msgid "Session file is missing the \"routes\" section"
msgstr "Manque dans le Fichier Session file la section \"routes\""
#: pcbnew/specctra_import.cpp:357
msgid "Session file is missing the \"library_out\" section"
msgstr "Manque dans le Fichier Session file la section \"library_out\""
#: pcbnew/specctra_import.cpp:387
#, c-format
msgid "Session file has 'reference' to non-existent component \"%s\""
msgstr "Le fichier Session a une 'reference' a un composant non existant \"%s\""
#: pcbnew/specctra_import.cpp:531 #: pcbnew/edgemod.cpp:246
#, c-format msgid "New Width (1/10000\"):"
msgid "A wire_via references a missing padstack \"%s\"" msgstr "Novelle largeur (1/10000\"):"
msgstr "Une piste ou via a une référence vers un pad \"%s\" manquant"
#: pcbnew/surbrill.cpp:37 #: pcbnew/edgemod.cpp:246
msgid "Filter for net names:" msgid "Edge Width"
msgstr "Filtre pour nets:" msgstr "Epaisseur Contour"
#: pcbnew/surbrill.cpp:41 #: pcbnew/edgemod.cpp:253
msgid "List Nets" msgid "Incorrect number, no change"
msgstr "Liste équipots" msgstr "Nombre incorrect, pas de changement"
#: pcbnew/swap_layers.cpp:70 #: pcbnew/swap_layers.cpp:70
msgid "Swap Layers:" msgid "Swap Layers:"
...@@ -3981,66 +3871,216 @@ msgstr "Pas de pads ou de points de départ pour remplir ce contour de zone" ...@@ -3981,66 +3871,216 @@ msgstr "Pas de pads ou de points de départ pour remplir ce contour de zone"
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
#: pcbnew/specctra_export.cpp:64 #: pcbnew/librairi.cpp:61
msgid "Specctra DSN file:" msgid "Import Module:"
msgstr "Fichier Specctra DSN" msgstr "Importer Module:"
#: pcbnew/specctra_export.cpp:122
msgid "BOARD exported OK."
msgstr "PCB exporté Ok."
#: pcbnew/specctra_export.cpp:127 #: pcbnew/librairi.cpp:97
msgid "Unable to export, please fix and try again." msgid "Not a module file"
msgstr "Impossible d'exporter, fixer le problème et recommencer" msgstr "N'est pas un fichier de Modules"
#: pcbnew/specctra_export.cpp:805 #: pcbnew/librairi.cpp:179
#, c-format msgid "Create lib"
msgid "Unsupported DRAWSEGMENT type %s" msgstr "Créer lib"
msgstr "DRAWSEGMENT type %s non supporté"
#: pcbnew/specctra_export.cpp:840 #: pcbnew/librairi.cpp:179
msgid "Unable to find the next segment with an endpoint of " msgid "Export Module:"
msgstr "Impossible de trouver le segment suivant avec une extrémité à " msgstr "Exporter Module:"
#: pcbnew/specctra_export.cpp:843 #: pcbnew/librairi.cpp:194
msgid "Edit Edges_Pcb segments, making them contiguous." #: pcbnew/librairi.cpp:441
msgstr "Modifier les segments du contour PCB pour les rendre contigus." #, c-format
msgid "File %s exists, OK to replace ?"
msgstr "Fichier %s existant, OK pour remplacer ?"
#: pcbnew/specctra_export.cpp:895 #: pcbnew/librairi.cpp:203
#, c-format #, c-format
msgid "Component with value of \"%s\" has empty reference id." msgid "Unable to create <%s>"
msgstr "Le composant avec valeur \"%s\" a une référence vide." msgstr "Incapable de créer <%s>"
#: pcbnew/specctra_export.cpp:903 #: pcbnew/librairi.cpp:224
#, c-format #, c-format
msgid "Multiple components have identical reference IDs of \"%s\"." msgid "Module exported in file <%s>"
msgstr "Multiple composants ont une reference identique \"%s\"." msgstr "Module exporté en fichier <%s>"
#: pcbnew/pcbnew.cpp:43 #: pcbnew/librairi.cpp:246
msgid "Pcbnew is already running, Continue?" #, c-format
msgstr "Pcbnew est est cours d'exécution. Continuer ?" msgid "Ok to delete module %s in library %s"
msgstr "Ok pour effacer module %sein librairie %s"
#: pcbnew/onrightclick.cpp:41 #: pcbnew/librairi.cpp:256
msgid "Auto Width" msgid "Library "
msgstr "Epaisseur Automatique" msgstr "Librairie "
#: pcbnew/onrightclick.cpp:43 #: pcbnew/librairi.cpp:267
msgid "Use the track width when starting on a track, otherwise the current track width" msgid "Not a Library file"
msgstr "Si on démarre sur une piste existante, utiliser sa largeur, sinon utiliser la largeur courante" msgstr "N'est pas un fichier Librairie"
#: pcbnew/onrightclick.cpp:57 #: pcbnew/librairi.cpp:296
#, c-format #, c-format
msgid "Track %.1f" msgid "Module [%s] not found"
msgstr "Piste %.1f" msgstr "Module [%s] non trouvé"
#: pcbnew/onrightclick.cpp:59 #: pcbnew/librairi.cpp:390
#, c-format #, c-format
msgid "Track %.3f" msgid "Component %s deleted in library %s"
msgstr "Piste %.3f" msgstr "Composant %s supprimé en librairie %s"
#: pcbnew/onrightclick.cpp:77 #: pcbnew/librairi.cpp:416
#, c-format msgid " No modules to archive!"
msgid "Via %.1f" msgstr "Pas de Modules a archiver"
#: pcbnew/librairi.cpp:423
msgid "Library"
msgstr "Librairie"
#: pcbnew/librairi.cpp:516
#, c-format
msgid "Library %s not found"
msgstr "Librairie %s non trouvée"
#: pcbnew/librairi.cpp:527
msgid "Name:"
msgstr "Nom:"
#: pcbnew/librairi.cpp:527
msgid "Save module"
msgstr "Sauver Module"
#: pcbnew/librairi.cpp:537
#, c-format
msgid "Unable to open %s"
msgstr "Ne peut pas ouvrir \"%s\""
#: pcbnew/librairi.cpp:547
#, c-format
msgid "File %s is not a eeschema library"
msgstr "Fichier %s n'est pas une librairie eeschema"
#: pcbnew/librairi.cpp:576
msgid "Module exists Line "
msgstr "Module existe Ligne "
#: pcbnew/librairi.cpp:695
msgid "Component "
msgstr "Composant"
#: pcbnew/librairi.cpp:696
msgid " added in "
msgstr " ajouté dans "
#: pcbnew/librairi.cpp:696
msgid " replaced in "
msgstr " remplacé dans "
#: pcbnew/librairi.cpp:723
msgid "Module Reference:"
msgstr "Référence Module"
#: pcbnew/librairi.cpp:723
msgid "Create module"
msgstr "Créer Module"
#: pcbnew/librairi.cpp:775
msgid "Active Lib:"
msgstr "Librairie Active:"
#: pcbnew/librairi.cpp:786
msgid "Module Editor (lib: "
msgstr "Editeur de modules (lib: "
#: pcbnew/librairi.cpp:801
msgid "Library exists "
msgstr "Librairie existante "
#: pcbnew/librairi.cpp:816
msgid "Create error "
msgstr "Erreur en création "
#: pcbnew/specctra_import.cpp:73
msgid "Merge Specctra Session file:"
msgstr "Fichier Specctra Session à Fusionner:"
#: pcbnew/specctra_import.cpp:100
msgid "BOARD may be corrupted, do not save it."
msgstr "Le PCB peut être corrompu. Ne pas le sauver"
#: pcbnew/specctra_import.cpp:102
msgid "Fix problem and try again."
msgstr "Fixer le problème et recommencer."
#: pcbnew/specctra_import.cpp:116
msgid "Session file imported and merged OK."
msgstr "Fichier Session importé et fusionné correctement."
#: pcbnew/specctra_import.cpp:191
#: pcbnew/specctra_import.cpp:299
#, c-format
msgid "Session file uses invalid layer id \"%s\""
msgstr "Le Fichier Session utilise une couche invalide n° \"%s\""
#: pcbnew/specctra_import.cpp:241
msgid "Session via padstack has no shapes"
msgstr "Manque dans le Fichier Session file la section "
#: pcbnew/specctra_import.cpp:248
#: pcbnew/specctra_import.cpp:266
#: pcbnew/specctra_import.cpp:290
#, c-format
msgid "Unsupported via shape: \"%s\""
msgstr "Forme via inconnue: \"%s\""
#: pcbnew/specctra_import.cpp:347
msgid "Session file is missing the \"session\" section"
msgstr "Session file is missing the \"session\" section"
#: pcbnew/specctra_import.cpp:350
msgid "Session file is missing the \"placement\" section"
msgstr "Manque dans le Fichier Session file la section \"placement\""
#: pcbnew/specctra_import.cpp:353
msgid "Session file is missing the \"routes\" section"
msgstr "Manque dans le Fichier Session file la section \"routes\""
#: pcbnew/specctra_import.cpp:356
msgid "Session file is missing the \"library_out\" section"
msgstr "Manque dans le Fichier Session file la section \"library_out\""
#: pcbnew/specctra_import.cpp:386
#, c-format
msgid "Session file has 'reference' to non-existent component \"%s\""
msgstr "Le fichier Session a une 'reference' a un composant non existant \"%s\""
#: pcbnew/specctra_import.cpp:530
#, 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/pcbnew.cpp:43
msgid "Pcbnew is already running, Continue?"
msgstr "Pcbnew est est cours d'exécution. Continuer ?"
#: pcbnew/onrightclick.cpp:41
msgid "Auto Width"
msgstr "Epaisseur Automatique"
#: pcbnew/onrightclick.cpp:43
msgid "Use the track width when starting on a track, otherwise the current track width"
msgstr "Si on démarre sur une piste existante, utiliser sa largeur, sinon utiliser la largeur courante"
#: pcbnew/onrightclick.cpp:57
#, c-format
msgid "Track %.1f"
msgstr "Piste %.1f"
#: pcbnew/onrightclick.cpp:59
#, c-format
msgid "Track %.3f"
msgstr "Piste %.3f"
#: pcbnew/onrightclick.cpp:77
#, c-format
msgid "Via %.1f"
msgstr "Via %.1f" msgstr "Via %.1f"
#: pcbnew/onrightclick.cpp:79 #: pcbnew/onrightclick.cpp:79
...@@ -4460,6 +4500,41 @@ msgstr "Autoroute Pad" ...@@ -4460,6 +4500,41 @@ msgstr "Autoroute Pad"
msgid "Autoroute Net" msgid "Autoroute Net"
msgstr "Autoroute Net" msgstr "Autoroute Net"
#: pcbnew/specctra_export.cpp:64
msgid "Specctra DSN file:"
msgstr "Fichier Specctra DSN"
#: pcbnew/specctra_export.cpp:122
msgid "BOARD exported OK."
msgstr "PCB exporté Ok."
#: pcbnew/specctra_export.cpp:127
msgid "Unable to export, please fix and try again."
msgstr "Impossible d'exporter, fixer le problème et recommencer"
#: pcbnew/specctra_export.cpp:805
#, c-format
msgid "Unsupported DRAWSEGMENT type %s"
msgstr "DRAWSEGMENT type %s non supporté"
#: pcbnew/specctra_export.cpp:840
msgid "Unable to find the next segment with an endpoint of "
msgstr "Impossible de trouver le segment suivant avec une extrémité à "
#: pcbnew/specctra_export.cpp:843
msgid "Edit Edges_Pcb segments, making them contiguous."
msgstr "Modifier les segments du contour PCB pour les rendre contigus."
#: pcbnew/specctra_export.cpp:895
#, c-format
msgid "Component with value of \"%s\" has empty reference id."
msgstr "Le composant avec valeur \"%s\" a une référence vide."
#: pcbnew/specctra_export.cpp:903
#, c-format
msgid "Multiple components have identical reference IDs of \"%s\"."
msgstr "Multiple composants ont une reference identique \"%s\"."
#: pcbnew/dialog_pad_edit.cpp:157 #: pcbnew/dialog_pad_edit.cpp:157
msgid "Pad Num :" msgid "Pad Num :"
msgstr "Num Pad :" msgstr "Num Pad :"
...@@ -4569,33 +4644,6 @@ msgstr "couche E.C.O.2" ...@@ -4569,33 +4644,6 @@ msgstr "couche E.C.O.2"
msgid "Draft layer" msgid "Draft layer"
msgstr "Couche dessin" msgstr "Couche dessin"
#: pcbnew/plot_rtn.cpp:224
#, c-format
msgid ""
"Your BOARD has a bad layer number of %u for module\n"
" %s's \"reference\" text."
msgstr ""
"Votre PCB a un mauvais numero de couche %u pour le module\n"
" %s's \"reference\"."
#: pcbnew/plot_rtn.cpp:244
#, c-format
msgid ""
"Your BOARD has a bad layer number of %u for module\n"
" %s's \"value\" text."
msgstr ""
"Votre PCB a un mauvais numero de couche %u pour le module\n"
" %s's \"valeur\"."
#: pcbnew/plot_rtn.cpp:290
#, c-format
msgid ""
"Your BOARD has a bad layer number of %u for module\n"
" %s's \"module text\" text of %s."
msgstr ""
"Votre PCB a un mauvais numero de couche %u pour le module\n"
" %s's \"texte module\" de %s."
#: pcbnew/dialog_gendrill.cpp:166 #: pcbnew/dialog_gendrill.cpp:166
msgid "Millimeters" msgid "Millimeters"
msgstr "Millimetres" msgstr "Millimetres"
...@@ -5041,19 +5089,19 @@ msgstr "" ...@@ -5041,19 +5089,19 @@ msgstr ""
"\n" "\n"
"Cette opération supprimera l'annotation existante et ne peut être annulée." "Cette opération supprimera l'annotation existante et ne peut être annulée."
#: eeschema/backanno.cpp:136 #: eeschema/backanno.cpp:134
msgid "Load Stuff File" msgid "Load Stuff File"
msgstr "Charger Fichier d'échange" msgstr "Charger Fichier d'échange"
#: eeschema/backanno.cpp:157 #: eeschema/backanno.cpp:155
msgid "Set the Footprint Field to Visible ?" msgid "Set the Footprint Field to Visible ?"
msgstr "Rendre le Champ Module Visible" msgstr "Rendre le Champ Module Visible"
#: eeschema/backanno.cpp:158 #: eeschema/backanno.cpp:156
msgid "Field Display Option" msgid "Field Display Option"
msgstr "Options d'affichage du Champ" msgstr "Options d'affichage du Champ"
#: eeschema/backanno.cpp:171 #: eeschema/backanno.cpp:169
#, c-format #, c-format
msgid "Failed to open Stuff File <%s>" msgid "Failed to open Stuff File <%s>"
msgstr "Ne peut pas ouvrir fichier d'échange <%s>" msgstr "Ne peut pas ouvrir fichier d'échange <%s>"
...@@ -5170,12 +5218,11 @@ msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement sup ...@@ -5170,12 +5218,11 @@ msgstr "Doit on la convertir en une feuille de hiérarchie simple (autrement sup
msgid "%8.8lX/" msgid "%8.8lX/"
msgstr "%8.8lX/" msgstr "%8.8lX/"
#: eeschema/component_class.cpp:75 #: eeschema/component_class.cpp:72
msgid "Sheet" msgid "Sheet"
msgstr "Feuille" msgstr "Feuille"
#: eeschema/component_class.cpp:316 #: eeschema/component_class.cpp:313
#: eeschema/dialog_create_component.cpp:171
msgid "U" msgid "U"
msgstr "U" msgstr "U"
...@@ -5321,10 +5368,13 @@ msgid "As Convert" ...@@ -5321,10 +5368,13 @@ msgid "As Convert"
msgstr "A une forme \"convertie\"" msgstr "A une forme \"convertie\""
#: eeschema/dialog_create_component.cpp:187 #: eeschema/dialog_create_component.cpp:187
#: eeschema/dialog_edit_component_in_lib.cpp:161
msgid "Power Symbol" msgid "Power Symbol"
msgstr "Symbole Alimentation" msgstr "Symbole Alimentation"
#: eeschema/dialog_create_component.cpp:191 #: eeschema/dialog_create_component.cpp:191
#: eeschema/dialog_edit_component_in_lib.cpp:165
#: eeschema/dialog_edit_component_in_schematic.cpp:188
msgid "Parts are locked" msgid "Parts are locked"
msgstr "Les parts sont verrouillées" msgstr "Les parts sont verrouillées"
...@@ -5453,6 +5503,7 @@ msgid "Pin Name Inside" ...@@ -5453,6 +5503,7 @@ msgid "Pin Name Inside"
msgstr "Nom de pin a l'intérieur" msgstr "Nom de pin a l'intérieur"
#: eeschema/dialog_create_component.cpp:262 #: eeschema/dialog_create_component.cpp:262
#: eeschema/dialog_edit_component_in_lib.cpp:155
msgid "Skew:" msgid "Skew:"
msgstr "Décalage:" msgstr "Décalage:"
...@@ -5489,7 +5540,6 @@ msgid "Browse DocFiles" ...@@ -5489,7 +5540,6 @@ msgid "Browse DocFiles"
msgstr "Examen Fichiers de Doc" msgstr "Examen Fichiers de Doc"
#: eeschema/dialog_edit_component_in_lib.cpp:210 #: eeschema/dialog_edit_component_in_lib.cpp:210
#: eeschema/edit_component_in_lib.cpp:216
msgid "Alias" msgid "Alias"
msgstr "Alias" msgstr "Alias"
...@@ -5631,17 +5681,14 @@ msgid "Chip Name:" ...@@ -5631,17 +5681,14 @@ msgid "Chip Name:"
msgstr "Nom en librairie" msgstr "Nom en librairie"
#: eeschema/dialog_edit_component_in_schematic.cpp:212 #: eeschema/dialog_edit_component_in_schematic.cpp:212
#: eeschema/edit_component_in_lib.cpp:497
msgid "Show Text" msgid "Show Text"
msgstr "Texte visible" msgstr "Texte visible"
#: eeschema/dialog_edit_component_in_schematic.cpp:216 #: eeschema/dialog_edit_component_in_schematic.cpp:216
#: eeschema/edit_component_in_lib.cpp:502
msgid "Vertical" msgid "Vertical"
msgstr "Vertical" msgstr "Vertical"
#: eeschema/dialog_edit_component_in_schematic.cpp:226 #: eeschema/dialog_edit_component_in_schematic.cpp:226
#: eeschema/edit_component_in_lib.cpp:484
msgid "Fields" msgid "Fields"
msgstr "Champs" msgstr "Champs"
...@@ -5919,220 +5966,360 @@ msgstr "Epaiss. ligne par défaut" ...@@ -5919,220 +5966,360 @@ msgstr "Epaiss. ligne par défaut"
msgid "Default Label Size" msgid "Default Label Size"
msgstr "Taille Label par défaut:" msgstr "Taille Label par défaut:"
#: eeschema/edit_component_in_lib.cpp:168 #: eeschema/menubar.cpp:41
msgid "Lib Component Properties" msgid "&New"
msgstr "Propriétés du composant librairie" msgstr "&Nouveau"
#: eeschema/edit_component_in_lib.cpp:172 #: eeschema/menubar.cpp:42
msgid "Properties for " msgid "New schematic"
msgstr "Propriétés pour " msgstr "Nouvelle schématique"
#: eeschema/edit_component_in_lib.cpp:177 #: eeschema/menubar.cpp:47
msgid "(alias of " msgid "&Open"
msgstr "(alias de " msgstr "&Ouvrir "
#: eeschema/edit_component_in_lib.cpp:245 #: eeschema/menubar.cpp:48
#: eeschema/edit_component_in_lib.cpp:328 msgid "Open a schematic"
msgid "Delete All" msgstr "Ouvrir un Projet schématique"
msgstr "Tout Supprimer"
#: eeschema/edit_component_in_lib.cpp:281 #: eeschema/menubar.cpp:54
msgid "Footprint Filter" msgid "&Save"
msgstr "Filtrage Modules" msgstr "&Sauver"
#: eeschema/edit_component_in_lib.cpp:293 #: eeschema/menubar.cpp:55
msgid "Footprints" msgid "Save schematic project"
msgstr "Modules" msgstr "Sauver le Projet schématique"
#: eeschema/edit_component_in_lib.cpp:407 #: eeschema/menubar.cpp:61
msgid "Show Pin Num" msgid "Save &Current sheet"
msgstr "Montre Numéro de Pin" msgstr "Sauver &Feuille active"
#: eeschema/edit_component_in_lib.cpp:476 #: eeschema/menubar.cpp:62
msgid "Left justify" msgid "Save current sheet only"
msgstr "Justifié à gauche" msgstr "Sauver la feuille active uniquement"
#: eeschema/edit_component_in_lib.cpp:476 #: eeschema/menubar.cpp:67
#: eeschema/edit_component_in_lib.cpp:478 msgid "Save Current sheet &as.."
msgid "Center" msgstr "Sauver la feuille &active sous.."
msgstr "Centrer"
#: eeschema/edit_component_in_lib.cpp:476 #: eeschema/menubar.cpp:68
msgid "Right justify" msgid "Save current sheet as.."
msgstr "Justifié à droite" msgstr "Sauver la feuille active sous un autre nom"
#: eeschema/edit_component_in_lib.cpp:478
msgid "Bottom justify"
msgstr "Justifié en bas"
#: eeschema/edit_component_in_lib.cpp:478 #: eeschema/menubar.cpp:82
msgid "Top justify" msgid "Plot PostScript"
msgstr "Justifié en haut" msgstr "Tracé Postscript"
#: eeschema/edit_component_in_lib.cpp:508 #: eeschema/menubar.cpp:82
#: eeschema/edit_component_in_schematic.cpp:205 msgid "Plotting in PostScript format"
msgid "Field Name:" msgstr "Générer un tracé en format Postscript"
msgstr "Nom Champ"
#: eeschema/edit_component_in_lib.cpp:518 #: eeschema/menubar.cpp:87
#: eeschema/edit_component_in_schematic.cpp:215 msgid "Plot HPGL"
msgid "Field Text:" msgstr "Tracé HPGL"
msgstr "Texte du Champ:"
#: eeschema/edit_component_in_lib.cpp:524 #: eeschema/menubar.cpp:87
#: eeschema/edit_component_in_schematic.cpp:223 msgid "Plotting in HPGL format"
msgid "Pos" msgstr "Générer un tracé en format HPGL"
msgstr "Pos"
#: eeschema/edit_component_in_lib.cpp:529 #: eeschema/menubar.cpp:92
msgid "Hor Justify" msgid "Plot SVG"
msgstr "Justifié horiz" msgstr "Tracé SVG"
#: eeschema/edit_component_in_lib.cpp:536 #: eeschema/menubar.cpp:92
msgid "Vert Justify" msgid "Plotting in SVG format"
msgstr "Justifié Vert." msgstr "Générer un tracé en format SVG"
#: eeschema/edit_component_in_lib.cpp:551 #: eeschema/menubar.cpp:99
msgid "Chip Name" msgid "Plot to Clipboard"
msgstr "Nom en librairie" msgstr "Tracé dans Presse papier"
#: eeschema/edit_component_in_lib.cpp:554 #: eeschema/menubar.cpp:99
#: eeschema/edit_component_in_schematic.cpp:199 msgid "Export drawings to clipboard"
msgid "Field to edit" msgstr " Export du dessin dans le presse-papier"
msgstr "Champ à éditer"
#: eeschema/edit_component_in_lib.cpp:890 #: eeschema/menubar.cpp:106
msgid "Ok to Delete Alias LIST" msgid "Plot HPGL, PostScript, SVG"
msgstr "Ok pour effacer la LISTE des Alias" msgstr "Tracer en format HPGL, POSTSCRIPT ou SVG"
#: eeschema/edit_component_in_lib.cpp:915 #: eeschema/menubar.cpp:109
msgid "New alias:" msgid "Quit Eeschema"
msgstr "Noveau alias" msgstr "Quitter Eeschema"
#: eeschema/edit_component_in_lib.cpp:923 #: eeschema/menubar.cpp:127
msgid "This is the Root Part" msgid "&Undo\t"
msgstr "Ceci est le composant racine" msgstr "&Undo\t"
#: eeschema/edit_component_in_lib.cpp:932 #: eeschema/menubar.cpp:135
#: eeschema/edit_component_in_lib.cpp:1200 msgid "&Redo\t"
msgid "Already in use" msgstr "&Redo\t"
msgstr "Déja en usage"
#: eeschema/edit_component_in_lib.cpp:957 #: eeschema/menubar.cpp:154
msgid " is Current Selected Alias!" msgid "Find"
msgstr " est l' Alias actuellement sélectionné!" msgstr "Chercher"
#: eeschema/edit_component_in_lib.cpp:1010 #: eeschema/menubar.cpp:162
msgid "Delete units" msgid "BackAnno"
msgstr "Supprimer unité" msgstr "Rétro Annotation"
#: eeschema/edit_component_in_lib.cpp:1080 #: eeschema/menubar.cpp:162
msgid "Create pins for Convert items" msgid "Back Annotated Footprint Fields"
msgstr "Créér les pins des unitées converties" msgstr "Rétroannotation des Champs Modules"
#: eeschema/edit_component_in_lib.cpp:1084 #: eeschema/menubar.cpp:169
msgid "Part as \"De Morgan\" anymore" #: eeschema/menubar.cpp:172
msgstr "Le composant a une représentation convertie" msgid "Zoom in"
msgstr "Zoom +"
#: eeschema/edit_component_in_lib.cpp:1109 #: eeschema/menubar.cpp:177
msgid "Delete Convert items" #: eeschema/menubar.cpp:180
msgstr "Suppression des éléments convertis" msgid "Zoom out"
msgstr "Zoom -"
#: eeschema/edit_component_in_lib.cpp:1144 #: eeschema/menubar.cpp:186
msgid "Doc Files" #: eeschema/menubar.cpp:196
msgstr "Fichiers de Doc" msgid "Zoom auto"
msgstr "Zoom Automatique"
#: eeschema/edit_component_in_lib.cpp:1167 #: eeschema/menubar.cpp:206
msgid "Ok to Delete FootprintFilter LIST" msgid "&Component"
msgstr "Ok pour effacer la LISTE des filtres de modules" msgstr "&Composant"
#: eeschema/edit_component_in_lib.cpp:1189 #: eeschema/menubar.cpp:206
msgid "New FootprintFilter:" msgid "Place the component"
msgstr "Nouveau Filtre de Modules:" msgstr "Placer le Composant"
#: eeschema/edit_component_in_schematic.cpp:330 #: eeschema/menubar.cpp:212
msgid "No Component Name!" msgid "&Power port"
msgstr "Pas de nom de composant!" msgstr "Power Symbole"
#: eeschema/edit_component_in_schematic.cpp:336 #: eeschema/menubar.cpp:212
#, c-format msgid "Place the power port"
msgid "Component [%s] not found!" msgstr "Placer le Symbole Power"
msgstr "Composant [%s] non trouvé!"
#: eeschema/edit_component_in_schematic.cpp:457 #: eeschema/menubar.cpp:218
msgid "No Field to move" msgid "&Wire"
msgstr "Pas de champ a déplacer" msgstr "&Fil"
#: eeschema/edit_component_in_schematic.cpp:520 #: eeschema/menubar.cpp:218
msgid "No Field To Edit" msgid "Place the wire"
msgstr "Pas de champ a éditer" msgstr "Place fil"
#: eeschema/edit_component_in_schematic.cpp:534 #: eeschema/menubar.cpp:226
msgid "" msgid "&Bus"
"Part is a POWER, value cannot be modified!\n" msgstr "&Bus"
"You must create a new power"
msgstr ""
"Composant type ALIMENTATION!\n"
"valeur non modifiable, Vous devez créer un nouveau composant alimentation "
#: eeschema/edit_component_in_schematic.cpp:581 #: eeschema/menubar.cpp:227
msgid "Reference needed !, No change" msgid "Place a bus"
msgstr "Référence NECESSAIRE: changement refusé" msgstr "Placer un Bus"
#: eeschema/edit_component_in_schematic.cpp:585 #: eeschema/menubar.cpp:236
msgid "Value needed !, No change" msgid "W&ire to bus entry"
msgstr "Valeur NECESSAIRE: changement refusé" msgstr "Entrées de bus (type fil vers bus)"
#: eeschema/edit_label.cpp:49 #: eeschema/menubar.cpp:237
msgid "Empty Text!" msgid "Place a wire to bus entry"
msgstr "Texte vide" msgstr "Placer une Entrée de Bus (type fil vers bus)"
#: eeschema/eeconfig.cpp:73 #: eeschema/menubar.cpp:246
msgid "File " msgid "B&us to bus entry"
msgstr "Fichier " msgstr "Entrées de bus (type bus vers bus)"
#: eeschema/eeconfig.cpp:73 #: eeschema/menubar.cpp:247
msgid "not found" msgid "Place a bus to bus entry"
msgstr " non trouvé" msgstr "Placer une Entrée de Bus (type bus vers bus)"
#: eeschema/eelayer.cpp:233 #: eeschema/menubar.cpp:256
msgid "White" msgid "No connect flag"
msgstr "Blanc" msgstr "Symbole de Non Connexion"
#: eeschema/eelayer.cpp:234 #: eeschema/menubar.cpp:257
msgid "Black" msgid "Place a no connect flag"
msgstr "Noir" msgstr "Placer un Symbole de Non Connexion"
#: eeschema/eelayer.cpp:235 #: eeschema/menubar.cpp:266
msgid "Background Color:" msgid "Net name"
msgstr "Couleur du Fond:" msgstr "Net Name"
#: eeschema/eelibs_read_libraryfiles.cpp:115 #: eeschema/menubar.cpp:267
msgid "Start loading schematic libs" msgid "Place a net name"
msgstr "Demarre chargement des librairies schématiques" msgstr "Placer un Nom de Net"
#: eeschema/eelibs_read_libraryfiles.cpp:302 #: eeschema/menubar.cpp:274
#: eeschema/eelibs_read_libraryfiles.cpp:309 msgid "Global label"
msgid "File <" msgstr "Label Global"
msgstr "Fichier <"
#: eeschema/eelibs_read_libraryfiles.cpp:302 #: eeschema/menubar.cpp:275
msgid "> is empty!" msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy"
msgstr "> est vide" msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hierarchie"
#: eeschema/eelibs_read_libraryfiles.cpp:309 #: eeschema/menubar.cpp:284
msgid "> is NOT EESCHEMA library!" msgid "Junction"
msgstr "> nest PAS une librairie EESCHEMA !" msgstr "Jonction"
#: eeschema/eelibs_read_libraryfiles.cpp:328 #: eeschema/menubar.cpp:285
msgid "Library <" msgid "Place a junction"
msgstr "Librairie <" msgstr "Placer une Jonction"
#: eeschema/eelibs_read_libraryfiles.cpp:328 #: eeschema/menubar.cpp:296
msgid "> header read error" msgid "Hierarchical label"
msgstr "> erreur lecture entête" msgstr "Label Hiérarchique"
#: eeschema/eeschema.cpp:54 #: eeschema/menubar.cpp:297
msgid "Place a hierarchical label. This label will be seen as a pin sheet in the sheet symbol"
msgstr "Placer un label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole"
#: eeschema/menubar.cpp:306
msgid "Hierarchical sheet"
msgstr "Feuille Hiérrachique"
#: eeschema/menubar.cpp:307
msgid "Create a hierarchical sheet"
msgstr "Créer une Feuille Hiérachique"
#: eeschema/menubar.cpp:316
msgid "Import Hierarchical Label"
msgstr "Importer Label Hiérarchique"
#: eeschema/menubar.cpp:317
msgid "Place a pin sheet created by importing a hierarchical label from sheet"
msgstr "Placer une pin hiérarchique créée par importation d'un label hiérarchique de la feuille"
#: eeschema/menubar.cpp:326
msgid "Add Hierarchical Pin to Sheet"
msgstr "Ajouter Pins de Hierarchie dans feuille"
#: eeschema/menubar.cpp:327
msgid "Place a hierarchical pin to sheet"
msgstr "Addition de pins de hierarchie dans les feuilles symboles de hierarchie"
#: eeschema/menubar.cpp:338
msgid "Graphic line or poligon"
msgstr "Ligne ou polygone graphique"
#: eeschema/menubar.cpp:339
msgid "Place the graphic line or poligon"
msgstr "Placer des lignes ou polygones graphiques"
#: eeschema/menubar.cpp:348
msgid "Graphic text (comment)"
msgstr "Ttextes graphiques (commentaires)"
#: eeschema/menubar.cpp:349
msgid "Place the graphic text (comment)"
msgstr "Placer le textes graphique (commentaire)"
#: eeschema/menubar.cpp:365
msgid "Setting colors..."
msgstr "Choisir les couleurs d'affichage..."
#: eeschema/menubar.cpp:371
msgid "&Options"
msgstr "&Options"
#: eeschema/menubar.cpp:372
msgid "Select general options..."
msgstr "Sélection options générales..."
#: eeschema/menubar.cpp:397
msgid "Open the eeschema manual"
msgstr "Ouvrir la documentation de eeschema"
#: eeschema/menubar.cpp:408
msgid "&Edit"
msgstr "&Editer"
#: eeschema/menubar.cpp:409
msgid "&View"
msgstr "&Voir"
#: eeschema/menubar.cpp:410
msgid "&Place"
msgstr "&Placer"
#: eeschema/libfield.cpp:206
msgid "Edit field"
msgstr "Editer Champ"
#: eeschema/libfield.cpp:221
msgid "No new text: no change"
msgstr "Pas de nouveau texte: pas de changements"
#: eeschema/sheetlab.cpp:73
msgid "PinSheet Properties:"
msgstr "Propriétés des Pins de Hierarchie"
#: eeschema/sheetlab.cpp:107
msgid "PinSheet Shape:"
msgstr "Forme Pin de hiérarchie:"
#: eeschema/sheetlab.cpp:328
msgid "PinSheet"
msgstr "Pin de Feuille de Hiérarchie"
#: eeschema/sheetlab.cpp:388
msgid "No New Hierarchal Label found"
msgstr "Pas de nouvea Label Hiérarchique trouvé"
#: eeschema/viewlib_frame.cpp:53
msgid "Library browser"
msgstr "Visualisateur des librairies"
#: eeschema/edit_label.cpp:49
msgid "Empty Text!"
msgstr "Texte vide"
#: eeschema/eeconfig.cpp:73
msgid "File "
msgstr "Fichier "
#: eeschema/eeconfig.cpp:73
msgid "not found"
msgstr " non trouvé"
#: eeschema/eelayer.cpp:233
msgid "White"
msgstr "Blanc"
#: eeschema/eelayer.cpp:234
msgid "Black"
msgstr "Noir"
#: eeschema/eelayer.cpp:235
msgid "Background Color:"
msgstr "Couleur du Fond:"
#: eeschema/symbdraw.cpp:789
#, c-format
msgid "Arc %.1f deg"
msgstr "Arc %.1f deg"
#: eeschema/eelibs_read_libraryfiles.cpp:115
msgid "Start loading schematic libs"
msgstr "Demarre chargement des librairies schématiques"
#: eeschema/eelibs_read_libraryfiles.cpp:302
#: eeschema/eelibs_read_libraryfiles.cpp:309
msgid "File <"
msgstr "Fichier <"
#: eeschema/eelibs_read_libraryfiles.cpp:302
msgid "> is empty!"
msgstr "> est vide"
#: eeschema/eelibs_read_libraryfiles.cpp:309
msgid "> is NOT EESCHEMA library!"
msgstr "> nest PAS une librairie EESCHEMA !"
#: eeschema/eelibs_read_libraryfiles.cpp:328
msgid "Library <"
msgstr "Librairie <"
#: eeschema/eelibs_read_libraryfiles.cpp:328
msgid "> header read error"
msgstr "> erreur lecture entête"
#: eeschema/eeschema.cpp:54
msgid "Eeschema is already running, Continue?" msgid "Eeschema is already running, Continue?"
msgstr "Eeschema est est cours d'exécution. Continuer ?" msgstr "Eeschema est est cours d'exécution. Continuer ?"
...@@ -6288,687 +6475,412 @@ msgid " in lib " ...@@ -6288,687 +6475,412 @@ msgid " in lib "
msgstr " en libr. " msgstr " en libr. "
#: eeschema/find.cpp:693 #: eeschema/find.cpp:693
msgid " found only in cache" msgid " found only in cache"
msgstr "trouvé seulement en cache" msgstr "trouvé seulement en cache"
#: eeschema/find.cpp:696
msgid ""
"\n"
"Explore All Libraries?"
msgstr ""
"\n"
"Explorer toutes les Librairies?"
#: eeschema/find.cpp:702
msgid "Nothing found"
msgstr " Rien trouvé"
#: eeschema/getpart.cpp:106
#, c-format
msgid "component selection (%d items loaded):"
msgstr "Sélection Composant (%d items chargés):"
#: eeschema/getpart.cpp:171
msgid "Failed to find part "
msgstr "Impossible de trouver le composant "
#: eeschema/getpart.cpp:171
msgid " in library"
msgstr " en librairie"
#: eeschema/hierarch.cpp:122
msgid "Navigator"
msgstr "Navigateur"
#: eeschema/hierarch.cpp:133
msgid "Root"
msgstr "Racine"
#: eeschema/hotkeys.cpp:249
msgid "Add Component"
msgstr "Ajout Composant"
#: eeschema/hotkeys.cpp:271
msgid "Add Wire"
msgstr "Ajouter Fils"
#: eeschema/libarch.cpp:78
msgid "Failed to create archive lib file "
msgstr "Impossible de créer le fichier librairie archive "
#: eeschema/libarch.cpp:85
msgid "Failed to create doc lib file "
msgstr "Impossible de créer le fichier lib document"
#: eeschema/libedit.cpp:38
msgid " Part: "
msgstr "Composant "
#: eeschema/libedit.cpp:52
msgid " Convert"
msgstr " Convert"
#: eeschema/libedit.cpp:53
msgid " Normal"
msgstr " Normal"
#: eeschema/libedit.cpp:56
msgid " (Power Symbol)"
msgstr " (Symbole Alimentation)"
#: eeschema/libedit.cpp:90
msgid ""
"Current Part not saved.\n"
"Continue?"
msgstr ""
"Composant courant non sauvé.\n"
"Continuer ?"
#: eeschema/libedit.cpp:112
#: eeschema/libedit.cpp:389
msgid "Component \""
msgstr "Composant \""
#: eeschema/libedit.cpp:112
msgid "\" not found."
msgstr "\" non trouvé"
#: eeschema/libedit.cpp:234
msgid "Modify Library File \""
msgstr "Ok pour modifier le fichier Librairie \""
#: eeschema/libedit.cpp:234
msgid "\"?"
msgstr "\"?"
#: eeschema/libedit.cpp:243
msgid "Error while saving Library File \""
msgstr "Erreur en sauvant le fichier Librairie \""
#: eeschema/libedit.cpp:243
#: eeschema/libedit.cpp:390
msgid "\"."
msgstr "\"."
#: eeschema/libedit.cpp:249
msgid "Library File \""
msgstr "Fichier Librairie \""
#: eeschema/libedit.cpp:251
msgid "Document File \""
msgstr "Fichier de Doc \""
#: eeschema/libedit.cpp:304
msgid "No Active Library"
msgstr "Pas de Librairie Active"
#: eeschema/libedit.cpp:320
#, c-format
msgid "Select Component (%d items)"
msgstr "Selection composant (%d items)"
#: eeschema/libedit.cpp:343
msgid "Component not found"
msgstr "Composant non trouvé"
#: eeschema/libedit.cpp:347
msgid "Delete component \""
msgstr "Suppression Composant \""
#: eeschema/libedit.cpp:348
msgid "\" from library \""
msgstr "\" de la librairie \""
#: eeschema/libedit.cpp:372
msgid "Clear old component from screen (changes will be lost)?"
msgstr "Supprimer l'ancien composant de l'écran (les changements seront perdus)?"
#: eeschema/libedit.cpp:390
msgid "\" exists in library \""
msgstr "\" existe en librairie \""
#: eeschema/libedit.cpp:557
msgid "No component to Save."
msgstr "Pas de composant à sauver"
#: eeschema/libedit.cpp:564
msgid "No Library specified."
msgstr "Pas de Librairie spécifiée."
#: eeschema/libedit.cpp:575
#, c-format
msgid "Component \"%s\" exists. Change it?"
msgstr "Le composant \" %s\" existe, Le changer ?"
#: eeschema/libedit.cpp:614
#, c-format
msgid "Component %s saved in %s"
msgstr "Composant %s sauvé en %s"
#: eeschema/libedit_onrightclick.cpp:77
msgid "Move Arc "
msgstr "Déplacer arc"
#: eeschema/libedit_onrightclick.cpp:81
msgid "Arc Options"
msgstr "Options pour l'Arc"
#: eeschema/libedit_onrightclick.cpp:84
msgid "Delete Arc "
msgstr "Effacer Arc"
#: eeschema/libedit_onrightclick.cpp:92
msgid "Move Circle "
msgstr "Déplacer Cercle"
#: eeschema/libedit_onrightclick.cpp:96
msgid "Circle Options"
msgstr "Options pour le Cercle"
#: eeschema/libedit_onrightclick.cpp:99
msgid "Delete Circle "
msgstr "Supprimer Cercle"
#: eeschema/libedit_onrightclick.cpp:107
msgid "Move Rect "
msgstr "Déplacer Rect"
#: eeschema/libedit_onrightclick.cpp:111
msgid "Rect Options"
msgstr "Options pour le Rectangle"
#: eeschema/libedit_onrightclick.cpp:114
msgid "Delete Rect "
msgstr "Supprimer Rect"
#: eeschema/libedit_onrightclick.cpp:122
msgid "Move Text "
msgstr "Déplacer Texte"
#: eeschema/libedit_onrightclick.cpp:126
msgid "Text Editor"
msgstr "Editeur de Texte"
#: eeschema/libedit_onrightclick.cpp:128
msgid "Rotate Text"
msgstr "Rot. Texte"
#: eeschema/libedit_onrightclick.cpp:131
msgid "Delete Text "
msgstr "Supprimer Texte"
#: eeschema/libedit_onrightclick.cpp:139
msgid "Move Line "
msgstr "Déplacer Ligne"
#: eeschema/libedit_onrightclick.cpp:145
msgid "Line End"
msgstr "Fin ligne"
#: eeschema/libedit_onrightclick.cpp:148
msgid "Line Options"
msgstr "Options pour Ligne"
#: eeschema/libedit_onrightclick.cpp:151
msgid "Delete Line "
msgstr "Efface Ligne"
#: eeschema/libedit_onrightclick.cpp:158
msgid "Delete Segment "
msgstr "Supprimer Segment"
#: eeschema/libedit_onrightclick.cpp:168
msgid "Move Field "
msgstr "Déplace Champ"
#: eeschema/libedit_onrightclick.cpp:172
msgid "Field Rotate"
msgstr "Rotation Champ"
#: eeschema/libedit_onrightclick.cpp:174
msgid "Field Edit"
msgstr "Edition du champ"
#: eeschema/libedit_onrightclick.cpp:199
msgid "Move Pin"
msgstr "Déplace pin"
#: eeschema/libedit_onrightclick.cpp:202
msgid "Edit Pin "
msgstr "Editer Pin"
#: eeschema/libedit_onrightclick.cpp:207
msgid "Delete Pin "
msgstr "Supprimer Pin"
#: eeschema/libedit_onrightclick.cpp:212
msgid "Global"
msgstr "Global"
#: eeschema/libedit_onrightclick.cpp:214
msgid "Pin Size to selected pins"
msgstr "Change taille pins sélectionnées"
#: eeschema/libedit_onrightclick.cpp:214
msgid "Pin Size to others"
msgstr "Change taille autres pins"
#: eeschema/libedit_onrightclick.cpp:217
msgid "Pin Name Size to selected pin"
msgstr "Change taille Nom pin sélectionnées"
#: eeschema/libedit_onrightclick.cpp:217
msgid "Pin Name Size to others"
msgstr "Change taille Nom pin autres pins"
#: eeschema/libedit_onrightclick.cpp:220
msgid "Pin Num Size to selected pin"
msgstr "Change taille Num pins sélectionnées"
#: eeschema/libedit_onrightclick.cpp:220
msgid "Pin Num Size to others"
msgstr "Change taille Num pin autres pins"
#: eeschema/libedit_onrightclick.cpp:242
msgid "Select items"
msgstr "Sélection des éléments"
#: eeschema/libedit_onrightclick.cpp:245
msgid "Mirror Block (ctrl + drag mouse)"
msgstr "Bloc Miroir (ctrl + drag mouse)"
#: eeschema/libedit_onrightclick.cpp:247
msgid "Del. Block (shift+ctrl + drag mouse)"
msgstr "Effacement Bloc (shift+ctrl + drag mouse)"
#: eeschema/libfield.cpp:221
msgid "No new text: no change"
msgstr "Pas de nouveau texte: pas de changements"
#: eeschema/libframe.cpp:102 #: eeschema/find.cpp:696
msgid "" msgid ""
"Component was modified!\n" "\n"
"Discard changes?" "Explore All Libraries?"
msgstr "" msgstr ""
"Le composant a été modifié\n" "\n"
"Perdre les changements" "Explorer toutes les Librairies?"
#: eeschema/libframe.cpp:115 #: eeschema/find.cpp:702
msgid "Nothing found"
msgstr " Rien trouvé"
#: eeschema/getpart.cpp:106
#, c-format #, c-format
msgid "" msgid "component selection (%d items loaded):"
"Library \"%s\" was modified!\n" msgstr "Sélection Composant (%d items chargés):"
"Discard changes?"
msgstr ""
"Librairie \"%s\" modifiée!\n"
"Perdre les changements ?"
#: eeschema/libframe.cpp:342 #: eeschema/getpart.cpp:171
msgid "Include last component changes?" msgid "Failed to find part "
msgstr "Inclure les dernieres modifs du composant" msgstr "Impossible de trouver le composant "
#: eeschema/libframe.cpp:405 #: eeschema/getpart.cpp:171
msgid " Pins Test OK!" msgid " in library"
msgstr " Test Pins OK!" msgstr " en librairie"
#: eeschema/libframe.cpp:479 #: eeschema/hierarch.cpp:122
msgid "Add Pin" msgid "Navigator"
msgstr "Addition de \"pins\"" msgstr "Navigateur"
#: eeschema/libframe.cpp:483 #: eeschema/hierarch.cpp:133
msgid "Set Pin Options" msgid "Root"
msgstr "Choix Options des Pins" msgstr "Racine"
#: eeschema/libframe.cpp:505 #: eeschema/hotkeys.cpp:249
msgid "Add Rectangle" msgid "Add Component"
msgstr "Addition de rectangles" msgstr "Ajout Composant"
#: eeschema/libframe.cpp:509 #: eeschema/hotkeys.cpp:271
msgid "Add Circle" msgid "Add Wire"
msgstr "Addition de cercle" msgstr "Ajouter Fils"
#: eeschema/libframe.cpp:513 #: eeschema/libarch.cpp:78
msgid "Add Arc" msgid "Failed to create archive lib file "
msgstr "Addition d' arc" msgstr "Impossible de créer le fichier librairie archive "
#: eeschema/libframe.cpp:521 #: eeschema/libarch.cpp:85
msgid "Anchor" msgid "Failed to create doc lib file "
msgstr "Ancre" msgstr "Impossible de créer le fichier lib document"
#: eeschema/libframe.cpp:531 #: eeschema/libedit.cpp:38
msgid "Export" msgid " Part: "
msgstr "Exporter" msgstr "Composant "
#: eeschema/lib_export.cpp:39 #: eeschema/libedit.cpp:52
msgid "Import component:" msgid " Convert"
msgstr "Importer composant:" msgstr " Convert"
#: eeschema/lib_export.cpp:73 #: eeschema/libedit.cpp:53
msgid "File is empty" msgid " Normal"
msgstr "Fichier vide" msgstr " Normal"
#: eeschema/lib_export.cpp:95 #: eeschema/libedit.cpp:56
msgid "No Part to Save" msgid " (Power Symbol)"
msgstr "Pas de composant à sauver" msgstr " (Symbole Alimentation)"
#: eeschema/lib_export.cpp:107 #: eeschema/libedit.cpp:90
msgid "New Library" msgid ""
msgstr "Nouvelle Librairie" "Current Part not saved.\n"
"Continue?"
msgstr ""
"Composant courant non sauvé.\n"
"Continuer ?"
#: eeschema/lib_export.cpp:107 #: eeschema/libedit.cpp:112
msgid "Export component:" #: eeschema/libedit.cpp:388
msgstr "Exporter composant:" msgid "Component \""
msgstr "Composant \""
#: eeschema/lib_export.cpp:144 #: eeschema/libedit.cpp:112
msgid "0k" msgid "\" not found."
msgstr "Ok" msgstr "\" non trouvé"
#: eeschema/lib_export.cpp:146 #: eeschema/libedit.cpp:233
msgid "" msgid "Modify Library File \""
"Note: this new library will be available only if it is loaded by eeschema.\n" msgstr "Ok pour modifier le fichier Librairie \""
"Modify eeschema config if you want use it."
msgstr ""
"Note: cette nouvelle librairie sera disponible seulement si elle est chargée par eeschema\n"
"Modifier la config de eeschema si vous voulez l'utiliser"
#: eeschema/lib_export.cpp:149 #: eeschema/libedit.cpp:233
msgid "Error while create " msgid "\"?"
msgstr "Erreur en création de " msgstr "\"?"
#: eeschema/load_one_schematic_file.cpp:104 #: eeschema/libedit.cpp:242
msgid "Failed to open " msgid "Error while saving Library File \""
msgstr "Erreur ouverture " msgstr "Erreur en sauvant le fichier Librairie \""
#: eeschema/load_one_schematic_file.cpp:109 #: eeschema/libedit.cpp:242
msgid "Loading " #: eeschema/libedit.cpp:389
msgstr "Chargement " msgid "\"."
msgstr "\"."
#: eeschema/load_one_schematic_file.cpp:116 #: eeschema/libedit.cpp:248
#: eeschema/load_one_schematic_file.cpp:141 msgid "Library File \""
msgid " is NOT an EESchema file!" msgstr "Fichier Librairie \""
msgstr " n'est PAS un fichier EESchema!"
#: eeschema/load_one_schematic_file.cpp:126 #: eeschema/libedit.cpp:250
msgid " was created by a more recent version of EESchema and may not load correctly. Please consider updating!" msgid "Document File \""
msgstr " a été créé par une version plus récente de Eeschema et peut ne pas être chargé correctement. SVP mettez a jour Eeschema!" msgstr "Fichier de Doc \""
#: eeschema/load_one_schematic_file.cpp:133 #: eeschema/libedit.cpp:303
msgid " was created by an older version of EESchema. It will be stored in the new file format when you save this file again." msgid "No Active Library"
msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde." msgstr "Pas de Librairie Active"
#: eeschema/load_one_schematic_file.cpp:484 #: eeschema/libedit.cpp:319
msgid "Done Loading " #, c-format
msgstr "Chargement terminé" msgid "Select Component (%d items)"
msgstr "Selection composant (%d items)"
#: eeschema/menubar.cpp:41 #: eeschema/libedit.cpp:342
msgid "&New" msgid "Component not found"
msgstr "&Nouveau" msgstr "Composant non trouvé"
#: eeschema/menubar.cpp:42 #: eeschema/libedit.cpp:346
msgid "New schematic" msgid "Delete component \""
msgstr "Nouvelle schématique" msgstr "Suppression Composant \""
#: eeschema/menubar.cpp:47 #: eeschema/libedit.cpp:347
msgid "&Open" msgid "\" from library \""
msgstr "&Ouvrir " msgstr "\" de la librairie \""
#: eeschema/menubar.cpp:48 #: eeschema/libedit.cpp:371
msgid "Open a schematic" msgid "Clear old component from screen (changes will be lost)?"
msgstr "Ouvrir un Projet schématique" msgstr "Supprimer l'ancien composant de l'écran (les changements seront perdus)?"
#: eeschema/menubar.cpp:54 #: eeschema/libedit.cpp:389
msgid "&Save" msgid "\" exists in library \""
msgstr "&Sauver" msgstr "\" existe en librairie \""
#: eeschema/menubar.cpp:55 #: eeschema/libedit.cpp:556
msgid "Save schematic project" msgid "No component to Save."
msgstr "Sauver le Projet schématique" msgstr "Pas de composant à sauver"
#: eeschema/menubar.cpp:61 #: eeschema/libedit.cpp:563
msgid "Save &Current sheet" msgid "No Library specified."
msgstr "Sauver &Feuille active" msgstr "Pas de Librairie spécifiée."
#: eeschema/menubar.cpp:62 #: eeschema/libedit.cpp:574
msgid "Save current sheet only" #, c-format
msgstr "Sauver la feuille active uniquement" msgid "Component \"%s\" exists. Change it?"
msgstr "Le composant \" %s\" existe, Le changer ?"
#: eeschema/menubar.cpp:67 #: eeschema/libedit.cpp:613
msgid "Save Current sheet &as.." #, c-format
msgstr "Sauver la feuille &active sous.." msgid "Component %s saved in %s"
msgstr "Composant %s sauvé en %s"
#: eeschema/menubar.cpp:68 #: eeschema/libedit_onrightclick.cpp:77
msgid "Save current sheet as.." msgid "Move Arc "
msgstr "Sauver la feuille active sous un autre nom" msgstr "Déplacer arc"
#: eeschema/menubar.cpp:82 #: eeschema/libedit_onrightclick.cpp:81
msgid "Plot PostScript" msgid "Arc Options"
msgstr "Tracé Postscript" msgstr "Options pour l'Arc"
#: eeschema/menubar.cpp:82 #: eeschema/libedit_onrightclick.cpp:84
msgid "Plotting in PostScript format" msgid "Delete Arc "
msgstr "Générer un tracé en format Postscript" msgstr "Effacer Arc"
#: eeschema/menubar.cpp:87 #: eeschema/libedit_onrightclick.cpp:92
msgid "Plot HPGL" msgid "Move Circle "
msgstr "Tracé HPGL" msgstr "Déplacer Cercle"
#: eeschema/menubar.cpp:87 #: eeschema/libedit_onrightclick.cpp:96
msgid "Plotting in HPGL format" msgid "Circle Options"
msgstr "Générer un tracé en format HPGL" msgstr "Options pour le Cercle"
#: eeschema/menubar.cpp:92 #: eeschema/libedit_onrightclick.cpp:99
msgid "Plot SVG" msgid "Delete Circle "
msgstr "Tracé SVG" msgstr "Supprimer Cercle"
#: eeschema/menubar.cpp:92 #: eeschema/libedit_onrightclick.cpp:107
msgid "Plotting in SVG format" msgid "Move Rect "
msgstr "Générer un tracé en format SVG" msgstr "Déplacer Rect"
#: eeschema/libedit_onrightclick.cpp:111
msgid "Rect Options"
msgstr "Options pour le Rectangle"
#: eeschema/menubar.cpp:99 #: eeschema/libedit_onrightclick.cpp:114
msgid "Plot to Clipboard" msgid "Delete Rect "
msgstr "Tracé dans Presse papier" msgstr "Supprimer Rect"
#: eeschema/menubar.cpp:99 #: eeschema/libedit_onrightclick.cpp:122
msgid "Export drawings to clipboard" msgid "Move Text "
msgstr " Export du dessin dans le presse-papier" msgstr "Déplacer Texte"
#: eeschema/menubar.cpp:106 #: eeschema/libedit_onrightclick.cpp:126
msgid "Plot HPGL, PostScript, SVG" msgid "Text Editor"
msgstr "Tracer en format HPGL, POSTSCRIPT ou SVG" msgstr "Editeur de Texte"
#: eeschema/menubar.cpp:109 #: eeschema/libedit_onrightclick.cpp:128
msgid "Quit Eeschema" msgid "Rotate Text"
msgstr "Quitter Eeschema" msgstr "Rot. Texte"
#: eeschema/menubar.cpp:127 #: eeschema/libedit_onrightclick.cpp:131
msgid "&Undo\t" msgid "Delete Text "
msgstr "&Undo\t" msgstr "Supprimer Texte"
#: eeschema/menubar.cpp:135 #: eeschema/libedit_onrightclick.cpp:139
msgid "&Redo\t" msgid "Move Line "
msgstr "&Redo\t" msgstr "Déplacer Ligne"
#: eeschema/menubar.cpp:154 #: eeschema/libedit_onrightclick.cpp:145
msgid "Find" msgid "Line End"
msgstr "Chercher" msgstr "Fin ligne"
#: eeschema/menubar.cpp:162 #: eeschema/libedit_onrightclick.cpp:148
msgid "BackAnno" msgid "Line Options"
msgstr "Rétro Annotation" msgstr "Options pour Ligne"
#: eeschema/menubar.cpp:162 #: eeschema/libedit_onrightclick.cpp:151
msgid "Back Annotated Footprint Fields" msgid "Delete Line "
msgstr "Rétroannotation des Champs Modules" msgstr "Efface Ligne"
#: eeschema/menubar.cpp:169 #: eeschema/libedit_onrightclick.cpp:158
#: eeschema/menubar.cpp:172 msgid "Delete Segment "
msgid "Zoom in" msgstr "Supprimer Segment"
msgstr "Zoom +"
#: eeschema/menubar.cpp:177 #: eeschema/libedit_onrightclick.cpp:168
#: eeschema/menubar.cpp:180 msgid "Move Field "
msgid "Zoom out" msgstr "Déplace Champ"
msgstr "Zoom -"
#: eeschema/menubar.cpp:186 #: eeschema/libedit_onrightclick.cpp:172
#: eeschema/menubar.cpp:196 msgid "Field Rotate"
msgid "Zoom auto" msgstr "Rotation Champ"
msgstr "Zoom Automatique"
#: eeschema/menubar.cpp:206 #: eeschema/libedit_onrightclick.cpp:174
msgid "&Component" msgid "Field Edit"
msgstr "&Composant" msgstr "Edition du champ"
#: eeschema/menubar.cpp:206 #: eeschema/libedit_onrightclick.cpp:199
msgid "Place the component" msgid "Move Pin"
msgstr "Placer le Composant" msgstr "Déplace pin"
#: eeschema/menubar.cpp:212 #: eeschema/libedit_onrightclick.cpp:202
msgid "&Power port" msgid "Edit Pin "
msgstr "Power Symbole" msgstr "Editer Pin"
#: eeschema/menubar.cpp:212 #: eeschema/libedit_onrightclick.cpp:207
msgid "Place the power port" msgid "Delete Pin "
msgstr "Placer le Symbole Power" msgstr "Supprimer Pin"
#: eeschema/menubar.cpp:218 #: eeschema/libedit_onrightclick.cpp:212
msgid "&Wire" msgid "Global"
msgstr "&Fil" msgstr "Global"
#: eeschema/menubar.cpp:218 #: eeschema/libedit_onrightclick.cpp:214
msgid "Place the wire" msgid "Pin Size to selected pins"
msgstr "Place fil" msgstr "Change taille pins sélectionnées"
#: eeschema/menubar.cpp:226 #: eeschema/libedit_onrightclick.cpp:214
msgid "&Bus" msgid "Pin Size to others"
msgstr "&Bus" msgstr "Change taille autres pins"
#: eeschema/menubar.cpp:227 #: eeschema/libedit_onrightclick.cpp:217
msgid "Place a bus" msgid "Pin Name Size to selected pin"
msgstr "Placer un Bus" msgstr "Change taille Nom pin sélectionnées"
#: eeschema/menubar.cpp:236 #: eeschema/libedit_onrightclick.cpp:217
msgid "W&ire to bus entry" msgid "Pin Name Size to others"
msgstr "Entrées de bus (type fil vers bus)" msgstr "Change taille Nom pin autres pins"
#: eeschema/menubar.cpp:237 #: eeschema/libedit_onrightclick.cpp:220
msgid "Place a wire to bus entry" msgid "Pin Num Size to selected pin"
msgstr "Placer une Entrée de Bus (type fil vers bus)" msgstr "Change taille Num pins sélectionnées"
#: eeschema/menubar.cpp:246 #: eeschema/libedit_onrightclick.cpp:220
msgid "B&us to bus entry" msgid "Pin Num Size to others"
msgstr "Entrées de bus (type bus vers bus)" msgstr "Change taille Num pin autres pins"
#: eeschema/menubar.cpp:247 #: eeschema/libedit_onrightclick.cpp:242
msgid "Place a bus to bus entry" msgid "Select items"
msgstr "Placer une Entrée de Bus (type bus vers bus)" msgstr "Sélection des éléments"
#: eeschema/menubar.cpp:256 #: eeschema/libedit_onrightclick.cpp:245
msgid "No connect flag" msgid "Mirror Block (ctrl + drag mouse)"
msgstr "Symbole de Non Connexion" msgstr "Bloc Miroir (ctrl + drag mouse)"
#: eeschema/menubar.cpp:257 #: eeschema/libedit_onrightclick.cpp:247
msgid "Place a no connect flag" msgid "Del. Block (shift+ctrl + drag mouse)"
msgstr "Placer un Symbole de Non Connexion" msgstr "Effacement Bloc (shift+ctrl + drag mouse)"
#: eeschema/menubar.cpp:266 #: eeschema/libframe.cpp:102
msgid "Net name" msgid ""
msgstr "Net Name" "Component was modified!\n"
"Discard changes?"
msgstr ""
"Le composant a été modifié\n"
"Perdre les changements"
#: eeschema/menubar.cpp:267 #: eeschema/libframe.cpp:115
msgid "Place a net name" #, c-format
msgstr "Placer un Nom de Net" msgid ""
"Library \"%s\" was modified!\n"
"Discard changes?"
msgstr ""
"Librairie \"%s\" modifiée!\n"
"Perdre les changements ?"
#: eeschema/menubar.cpp:274 #: eeschema/libframe.cpp:342
msgid "Global label" msgid "Include last component changes?"
msgstr "Label Global" msgstr "Inclure les dernieres modifs du composant"
#: eeschema/menubar.cpp:275 #: eeschema/libframe.cpp:405
msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy" msgid " Pins Test OK!"
msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hierarchie" msgstr " Test Pins OK!"
#: eeschema/menubar.cpp:284 #: eeschema/libframe.cpp:479
msgid "Junction" msgid "Add Pin"
msgstr "Jonction" msgstr "Addition de \"pins\""
#: eeschema/menubar.cpp:285 #: eeschema/libframe.cpp:483
msgid "Place a junction" msgid "Set Pin Options"
msgstr "Placer une Jonction" msgstr "Choix Options des Pins"
#: eeschema/menubar.cpp:296 #: eeschema/libframe.cpp:505
msgid "Hierarchical label" msgid "Add Rectangle"
msgstr "Label Hiérarchique" msgstr "Addition de rectangles"
#: eeschema/menubar.cpp:297 #: eeschema/libframe.cpp:509
msgid "Place a hierarchical label. This label will be seen as a pin sheet in the sheet symbol" msgid "Add Circle"
msgstr "Placer un label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole" msgstr "Addition de cercle"
#: eeschema/menubar.cpp:306 #: eeschema/libframe.cpp:513
msgid "Hierarchical sheet" msgid "Add Arc"
msgstr "Feuille Hiérrachique" msgstr "Addition d' arc"
#: eeschema/menubar.cpp:307 #: eeschema/libframe.cpp:521
msgid "Create a hierarchical sheet" msgid "Anchor"
msgstr "Créer une Feuille Hiérachique" msgstr "Ancre"
#: eeschema/menubar.cpp:316 #: eeschema/libframe.cpp:531
msgid "Import Hierarchical Label" msgid "Export"
msgstr "Importer Label Hiérarchique" msgstr "Exporter"
#: eeschema/menubar.cpp:317 #: eeschema/lib_export.cpp:39
msgid "Place a pin sheet created by importing a hierarchical label from sheet" msgid "Import component:"
msgstr "Placer une pin hiérarchique créée par importation d'un label hiérarchique de la feuille" msgstr "Importer composant:"
#: eeschema/menubar.cpp:326 #: eeschema/lib_export.cpp:73
msgid "Add Hierarchical Pin to Sheet" msgid "File is empty"
msgstr "Ajouter Pins de Hierarchie dans feuille" msgstr "Fichier vide"
#: eeschema/menubar.cpp:327 #: eeschema/lib_export.cpp:94
msgid "Place a hierarchical pin to sheet" msgid "No Part to Save"
msgstr "Addition de pins de hierarchie dans les feuilles symboles de hierarchie" msgstr "Pas de composant à sauver"
#: eeschema/menubar.cpp:338 #: eeschema/lib_export.cpp:106
msgid "Graphic line or poligon" msgid "New Library"
msgstr "Ligne ou polygone graphique" msgstr "Nouvelle Librairie"
#: eeschema/menubar.cpp:339 #: eeschema/lib_export.cpp:106
msgid "Place the graphic line or poligon" msgid "Export component:"
msgstr "Placer des lignes ou polygones graphiques" msgstr "Exporter composant:"
#: eeschema/menubar.cpp:348 #: eeschema/lib_export.cpp:143
msgid "Graphic text (comment)" msgid "0k"
msgstr "Ttextes graphiques (commentaires)" msgstr "Ok"
#: eeschema/menubar.cpp:349 #: eeschema/lib_export.cpp:145
msgid "Place the graphic text (comment)" msgid ""
msgstr "Placer le textes graphique (commentaire)" "Note: this new library will be available only if it is loaded by eeschema.\n"
"Modify eeschema config if you want use it."
msgstr ""
"Note: cette nouvelle librairie sera disponible seulement si elle est chargée par eeschema\n"
"Modifier la config de eeschema si vous voulez l'utiliser"
#: eeschema/menubar.cpp:365 #: eeschema/lib_export.cpp:148
msgid "Setting colors..." msgid "Error while create "
msgstr "Choisir les couleurs d'affichage..." msgstr "Erreur en création de "
#: eeschema/menubar.cpp:371 #: eeschema/load_one_schematic_file.cpp:104
msgid "&Options" msgid "Failed to open "
msgstr "&Options" msgstr "Erreur ouverture "
#: eeschema/menubar.cpp:372 #: eeschema/load_one_schematic_file.cpp:109
msgid "Select general options..." msgid "Loading "
msgstr "Sélection options générales..." msgstr "Chargement "
#: eeschema/menubar.cpp:397 #: eeschema/load_one_schematic_file.cpp:116
msgid "Open the eeschema manual" #: eeschema/load_one_schematic_file.cpp:141
msgstr "Ouvrir la documentation de eeschema" msgid " is NOT an EESchema file!"
msgstr " n'est PAS un fichier EESchema!"
#: eeschema/menubar.cpp:408 #: eeschema/load_one_schematic_file.cpp:126
msgid "&Edit" msgid " was created by a more recent version of EESchema and may not load correctly. Please consider updating!"
msgstr "&Editer" msgstr " a été créé par une version plus récente de Eeschema et peut ne pas être chargé correctement. SVP mettez a jour Eeschema!"
#: eeschema/menubar.cpp:409 #: eeschema/load_one_schematic_file.cpp:133
msgid "&View" msgid " was created by an older version of EESchema. It will be stored in the new file format when you save this file again."
msgstr "&Voir" msgstr " a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde."
#: eeschema/menubar.cpp:410 #: eeschema/load_one_schematic_file.cpp:484
msgid "&Place" msgid "Done Loading "
msgstr "&Placer" msgstr "Chargement terminé"
#: eeschema/plothpgl.cpp:222 #: eeschema/plothpgl.cpp:222
msgid "Sheet Size" msgid "Sheet Size"
...@@ -7472,21 +7384,21 @@ msgstr "low out" ...@@ -7472,21 +7384,21 @@ msgstr "low out"
msgid "Occupied by other pin. Continue?" msgid "Occupied by other pin. Continue?"
msgstr "Occupé une autre pin, Continuer ?" msgstr "Occupé une autre pin, Continuer ?"
#: eeschema/pinedit.cpp:1005 #: eeschema/pinedit.cpp:1004
#, c-format #, c-format
msgid "Duplicate Pin %4.4s (Pin %s loc %d, %d, and Pin %s loc %d, %d)" msgid "Duplicate Pin %4.4s (Pin %s loc %d, %d, and Pin %s loc %d, %d)"
msgstr "Pin dupliquée %4.4s (Pin %s loc %d, %d, etPin %s loc %d, %d)" msgstr "Pin dupliquée %4.4s (Pin %s loc %d, %d, etPin %s loc %d, %d)"
#: eeschema/pinedit.cpp:1011 #: eeschema/pinedit.cpp:1010
#, c-format #, c-format
msgid " Part %d" msgid " Part %d"
msgstr "Composant %d" msgstr "Composant %d"
#: eeschema/pinedit.cpp:1017 #: eeschema/pinedit.cpp:1016
msgid " Convert" msgid " Convert"
msgstr " Convert" msgstr " Convert"
#: eeschema/pinedit.cpp:1019 #: eeschema/pinedit.cpp:1018
msgid " Normal" msgid " Normal"
msgstr " Normal" msgstr " Normal"
...@@ -7600,23 +7512,6 @@ msgstr "Cette opération changera l'annotation actuelle et ne pourra être annul ...@@ -7600,23 +7512,6 @@ msgstr "Cette opération changera l'annotation actuelle et ne pourra être annul
msgid "Ok to continue renaming?" msgid "Ok to continue renaming?"
msgstr "Ok pour continuer le changement de nom?" msgstr "Ok pour continuer le changement de nom?"
#: eeschema/sheetlab.cpp:73
msgid "PinSheet Properties:"
msgstr "Propriétés des Pins de Hierarchie"
#: eeschema/sheetlab.cpp:107
msgid "PinSheet Shape:"
msgstr "Forme Pin de hiérarchie:"
#: eeschema/sheetlab.cpp:388
msgid "No New Hierarchal Label found"
msgstr "Pas de nouvea Label Hiérarchique trouvé"
#: eeschema/symbdraw.cpp:790
#, c-format
msgid "Arc %.1f deg"
msgstr "Arc %.1f deg"
#: eeschema/symbedit.cpp:52 #: eeschema/symbedit.cpp:52
msgid "Import symbol drawings:" msgid "Import symbol drawings:"
msgstr "Importer les symboles:" msgstr "Importer les symboles:"
...@@ -7634,11 +7529,11 @@ msgstr "Warning: plus de 1élément dans le fichier symbole" ...@@ -7634,11 +7529,11 @@ msgstr "Warning: plus de 1élément dans le fichier symbole"
msgid "Symbol File is void" msgid "Symbol File is void"
msgstr "Fichier Symbole vide" msgstr "Fichier Symbole vide"
#: eeschema/symbedit.cpp:151 #: eeschema/symbedit.cpp:150
msgid "Export symbol drawings:" msgid "Export symbol drawings:"
msgstr "Exporter le symbole" msgstr "Exporter le symbole"
#: eeschema/symbedit.cpp:171 #: eeschema/symbedit.cpp:170
#, c-format #, c-format
msgid "Save Symbol in [%s]" msgid "Save Symbol in [%s]"
msgstr "Symbole sauvé en [%s]" msgstr "Symbole sauvé en [%s]"
...@@ -7825,125 +7720,305 @@ msgstr "Placer des entrées de bus (type fil vers bus)" ...@@ -7825,125 +7720,305 @@ msgstr "Placer des entrées de bus (type fil vers bus)"
msgid "Place the bus to bus entry" msgid "Place the bus to bus entry"
msgstr "Placer des entrées de bus (type bus vers bus)" msgstr "Placer des entrées de bus (type bus vers bus)"
#: eeschema/tool_sch.cpp:182 #: eeschema/tool_sch.cpp:182
msgid "Place the no connect flag" msgid "Place the no connect flag"
msgstr "Placer le symbole de non connexion" msgstr "Placer le symbole de non connexion"
#: eeschema/tool_sch.cpp:186
msgid "Place the net name"
msgstr "Placer le nom de net"
#: eeschema/tool_sch.cpp:190
msgid ""
"Place the global label.\n"
"Warning: all global labels with the same name are connected in whole hierarchy"
msgstr ""
"Placer le label global.\n"
"Attention: tous les labels globaux de même nom sont connecté dans toute la hiérarchie"
#: eeschema/tool_sch.cpp:195
msgid "Place the junction"
msgstr "Placer la Jonction"
#: eeschema/tool_sch.cpp:200
msgid "Place the hierarchical label. This label will be seen as a pin sheet in the sheet symbol"
msgstr "Placer le label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole"
#: eeschema/tool_sch.cpp:205
msgid "Place the hierarchical sheet"
msgstr "Placer la Feuille Hiérachique"
#: eeschema/tool_sch.cpp:209
msgid "Place the pin sheet (imported hierarchical label from sheet)"
msgstr "Placer la pin hiérarchique ( Importer un label hiérarchique vers la feuille)"
#: eeschema/tool_sch.cpp:214
msgid "Place the hierachical pin to sheet"
msgstr "Place une pin de hierarchie dans la feuille"
#: eeschema/tool_sch.cpp:219
msgid "Place the graphic line or polygon"
msgstr "Placer la ligne ou le polygones graphique"
#: eeschema/tool_sch.cpp:267
msgid "Show Hidden Pins"
msgstr "Force affichage des pins invisibles"
#: eeschema/tool_sch.cpp:272
msgid "HV orientation for Wires and Bus"
msgstr "Force direction H, V et X pour les fils et bus"
#: eeschema/tool_viewlib.cpp:49
msgid "Select library to browse"
msgstr "Sélection de la librairie a examiner"
#: eeschema/tool_viewlib.cpp:53
msgid "Select part to browse"
msgstr "Sélectionner composant à visualiser"
#: eeschema/tool_viewlib.cpp:58
msgid "Display previous part"
msgstr "Afficher composant précédent"
#: eeschema/tool_viewlib.cpp:62
msgid "Display next part"
msgstr "Afficher composant suivant"
#: eeschema/tool_viewlib.cpp:67
msgid "zoom + (F1)"
msgstr "zoom + (F1)"
#: eeschema/tool_viewlib.cpp:71
msgid "zoom - (F2)"
msgstr "zoom - (F2)"
#: eeschema/tool_viewlib.cpp:75
msgid "redraw (F3)"
msgstr "Redessin (F3)"
#: eeschema/tool_viewlib.cpp:79
msgid "best zoom"
msgstr "Meilleur Zoom"
#: eeschema/tool_viewlib.cpp:84
msgid "Show as \"De Morgan\" normal part"
msgstr "Afficher sous représentation normale"
#: eeschema/tool_viewlib.cpp:88
msgid "Show as \"De Morgan\" convert part"
msgstr "Afficher sous présentation \" De Morgan\""
#: eeschema/tool_viewlib.cpp:98
msgid "View component documents"
msgstr "Voir documents des composants"
#: eeschema/tool_viewlib.cpp:106
msgid "Export to schematic"
msgstr "Exportervers schematique"
#: eeschema/viewlibs.cpp:118
msgid "Browse library: "
msgstr "Examen librairie: "
#: eeschema/viewlibs.cpp:307
#, c-format
msgid "Current Part: <%s> (is Alias of <%s>)"
msgstr "Cmp courant: <%s> (est Alias de <%s>)"
#: eeschema/viewlibs.cpp:313
#, c-format
msgid "Error: Root Part <%s> not found"
msgstr "Erreur: Root Part <%s> non trouvé"
#: eeschema/viewlibs.cpp:332
#, c-format
msgid "Current Part: <%s>"
msgstr "Cmp Courant: <%s>"
#: eeschema/edit_component_in_lib.cpp:168
msgid "Lib Component Properties"
msgstr "Propriétés du composant librairie"
#: eeschema/edit_component_in_lib.cpp:172
msgid "Properties for "
msgstr "Propriétés pour "
#: eeschema/edit_component_in_lib.cpp:177
msgid "(alias of "
msgstr "(alias de "
#: eeschema/edit_component_in_lib.cpp:245
#: eeschema/edit_component_in_lib.cpp:328
msgid "Delete All"
msgstr "Tout Supprimer"
#: eeschema/edit_component_in_lib.cpp:281
#: eeschema/edit_component_in_lib.cpp:1189
msgid "Footprint Filter"
msgstr "Filtrage Modules"
#: eeschema/edit_component_in_lib.cpp:293
msgid "Footprints"
msgstr "Modules"
#: eeschema/edit_component_in_lib.cpp:407
msgid "Show Pin Num"
msgstr "Montre Numéro de Pin"
#: eeschema/edit_component_in_lib.cpp:476
msgid "Left justify"
msgstr "Justifié à gauche"
#: eeschema/edit_component_in_lib.cpp:476
#: eeschema/edit_component_in_lib.cpp:478
msgid "Center"
msgstr "Centrer"
#: eeschema/edit_component_in_lib.cpp:476
msgid "Right justify"
msgstr "Justifié à droite"
#: eeschema/edit_component_in_lib.cpp:478
msgid "Bottom justify"
msgstr "Justifié en bas"
#: eeschema/edit_component_in_lib.cpp:478
msgid "Top justify"
msgstr "Justifié en haut"
#: eeschema/edit_component_in_lib.cpp:508
#: eeschema/edit_component_in_schematic.cpp:205
msgid "Field Name:"
msgstr "Nom Champ"
#: eeschema/edit_component_in_lib.cpp:518
#: eeschema/edit_component_in_schematic.cpp:215
msgid "Field Text:"
msgstr "Texte du Champ:"
#: eeschema/edit_component_in_lib.cpp:524
#: eeschema/edit_component_in_schematic.cpp:223
msgid "Pos"
msgstr "Pos"
#: eeschema/edit_component_in_lib.cpp:529
msgid "Hor Justify"
msgstr "Justifié horiz"
#: eeschema/tool_sch.cpp:186 #: eeschema/edit_component_in_lib.cpp:536
msgid "Place the net name" msgid "Vert Justify"
msgstr "Placer le nom de net" msgstr "Justifié Vert."
#: eeschema/tool_sch.cpp:190 #: eeschema/edit_component_in_lib.cpp:551
msgid "" msgid "Chip Name"
"Place the global label.\n" msgstr "Nom en librairie"
"Warning: all global labels with the same name are connected in whole hierarchy"
msgstr ""
"Placer le label global.\n"
"Attention: tous les labels globaux de même nom sont connecté dans toute la hiérarchie"
#: eeschema/tool_sch.cpp:195 #: eeschema/edit_component_in_lib.cpp:554
msgid "Place the junction" #: eeschema/edit_component_in_schematic.cpp:199
msgstr "Placer la Jonction" msgid "Field to edit"
msgstr "Champ à éditer"
#: eeschema/tool_sch.cpp:200 #: eeschema/edit_component_in_lib.cpp:890
msgid "Place the hierarchical label. This label will be seen as a pin sheet in the sheet symbol" msgid "Ok to Delete Alias LIST"
msgstr "Placer le label hiérachique. Ce label sera vu comme une pin dans la feuille mère symbole" msgstr "Ok pour effacer la LISTE des Alias"
#: eeschema/tool_sch.cpp:205 #: eeschema/edit_component_in_lib.cpp:915
msgid "Place the hierarchical sheet" msgid "New alias:"
msgstr "Placer la Feuille Hiérachique" msgstr "Noveau alias"
#: eeschema/tool_sch.cpp:209 #: eeschema/edit_component_in_lib.cpp:915
msgid "Place the pin sheet (imported hierarchical label from sheet)" msgid "Component Alias"
msgstr "Placer la pin hiérarchique ( Importer un label hiérarchique vers la feuille)" msgstr "Alias de Composant"
#: eeschema/tool_sch.cpp:214 #: eeschema/edit_component_in_lib.cpp:923
msgid "Place the hierachical pin to sheet" msgid "This is the Root Part"
msgstr "Place une pin de hierarchie dans la feuille" msgstr "Ceci est le composant racine"
#: eeschema/tool_sch.cpp:219 #: eeschema/edit_component_in_lib.cpp:932
msgid "Place the graphic line or polygon" #: eeschema/edit_component_in_lib.cpp:1200
msgstr "Placer la ligne ou le polygones graphique" msgid "Already in use"
msgstr "Déja en usage"
#: eeschema/tool_sch.cpp:267 #: eeschema/edit_component_in_lib.cpp:957
#: eeschema/schframe.cpp:421 msgid " is Current Selected Alias!"
msgid "Show Hidden Pins" msgstr " est l' Alias actuellement sélectionné!"
msgstr "Force affichage des pins invisibles"
#: eeschema/tool_sch.cpp:272 #: eeschema/edit_component_in_lib.cpp:1010
msgid "HV orientation for Wires and Bus" msgid "Delete units"
msgstr "Force direction H, V et X pour les fils et bus" msgstr "Supprimer unité"
#: eeschema/tool_viewlib.cpp:49 #: eeschema/edit_component_in_lib.cpp:1080
msgid "Select library to browse" msgid "Create pins for Convert items"
msgstr "Sélection de la librairie a examiner" msgstr "Créér les pins des unitées converties"
#: eeschema/tool_viewlib.cpp:53 #: eeschema/edit_component_in_lib.cpp:1084
msgid "Select part to browse" msgid "Part as \"De Morgan\" anymore"
msgstr "Sélectionner composant à visualiser" msgstr "Le composant a une représentation convertie"
#: eeschema/tool_viewlib.cpp:58 #: eeschema/edit_component_in_lib.cpp:1109
msgid "Display previous part" msgid "Delete Convert items"
msgstr "Afficher composant précédent" msgstr "Suppression des éléments convertis"
#: eeschema/tool_viewlib.cpp:62 #: eeschema/edit_component_in_lib.cpp:1144
msgid "Display next part" msgid "Doc Files"
msgstr "Afficher composant suivant" msgstr "Fichiers de Doc"
#: eeschema/tool_viewlib.cpp:67 #: eeschema/edit_component_in_lib.cpp:1167
msgid "zoom + (F1)" msgid "Ok to Delete FootprintFilter LIST"
msgstr "zoom + (F1)" msgstr "Ok pour effacer la LISTE des filtres de modules"
#: eeschema/tool_viewlib.cpp:71 #: eeschema/edit_component_in_lib.cpp:1189
msgid "zoom - (F2)" msgid "New FootprintFilter:"
msgstr "zoom - (F2)" msgstr "Nouveau Filtre de Modules:"
#: eeschema/tool_viewlib.cpp:75 #: eeschema/edit_component_in_schematic.cpp:330
msgid "redraw (F3)" msgid "No Component Name!"
msgstr "Redessin (F3)" msgstr "Pas de nom de composant!"
#: eeschema/tool_viewlib.cpp:79 #: eeschema/edit_component_in_schematic.cpp:336
msgid "best zoom" #, c-format
msgstr "Meilleur Zoom" msgid "Component [%s] not found!"
msgstr "Composant [%s] non trouvé!"
#: eeschema/tool_viewlib.cpp:84 #: eeschema/edit_component_in_schematic.cpp:457
msgid "Show as \"De Morgan\" normal part" msgid "No Field to move"
msgstr "Afficher sous représentation normale" msgstr "Pas de champ a déplacer"
#: eeschema/tool_viewlib.cpp:88 #: eeschema/edit_component_in_schematic.cpp:520
msgid "Show as \"De Morgan\" convert part" msgid "No Field To Edit"
msgstr "Afficher sous présentation \" De Morgan\"" msgstr "Pas de champ a éditer"
#: eeschema/tool_viewlib.cpp:98 #: eeschema/edit_component_in_schematic.cpp:534
msgid "View component documents" msgid ""
msgstr "Voir documents des composants" "Part is a POWER, value cannot be modified!\n"
"You must create a new power"
msgstr ""
"Composant type ALIMENTATION!\n"
"valeur non modifiable, Vous devez créer un nouveau composant alimentation "
#: eeschema/tool_viewlib.cpp:106 #: eeschema/edit_component_in_schematic.cpp:558
msgid "Export to schematic" msgid "Component field text"
msgstr "Exportervers schematique" msgstr "Champ de Composant"
#: eeschema/viewlibs.cpp:118 #: eeschema/edit_component_in_schematic.cpp:581
msgid "Browse library: " msgid "Reference needed !, No change"
msgstr "Examen librairie: " msgstr "Référence NECESSAIRE: changement refusé"
#: eeschema/viewlibs.cpp:307 #: eeschema/edit_component_in_schematic.cpp:585
#, c-format msgid "Value needed !, No change"
msgid "Current Part: <%s> (is Alias of <%s>)" msgstr "Valeur NECESSAIRE: changement refusé"
msgstr "Cmp courant: <%s> (est Alias de <%s>)"
#: eeschema/viewlibs.cpp:313 #: eeschema/edit_component_in_schematic.cpp:758
#, c-format msgid "Component Reference"
msgid "Error: Root Part <%s> not found" msgstr "Référence du Composant"
msgstr "Erreur: Root Part <%s> non trouvé"
#: eeschema/viewlibs.cpp:332 #: eeschema/edit_component_in_schematic.cpp:796
#, c-format msgid "Component Value"
msgid "Current Part: <%s>" msgstr "Valeur du Composant"
msgstr "Cmp Courant: <%s>"
#: eeschema/viewlib_frame.cpp:53 #: eeschema/edit_component_in_schematic.cpp:835
msgid "Library browser" msgid "Component Footprint"
msgstr "Visualisateur des librairies" msgstr "Module du Composant"
#: eeschema/pinedit-dialog.cpp:160 #: eeschema/pinedit-dialog.cpp:160
msgid "Pin Name :" msgid "Pin Name :"
...@@ -8028,23 +8103,23 @@ msgstr "Hiérar." ...@@ -8028,23 +8103,23 @@ msgstr "Hiérar."
msgid "Sorting Nets" msgid "Sorting Nets"
msgstr "Tri des Nets" msgstr "Tri des Nets"
#: eeschema/netlist.cpp:852 #: eeschema/netlist.cpp:836
msgid "Bad Bus Label: " msgid "Bad Bus Label: "
msgstr "Mauvais label de Bus: " msgstr "Mauvais label de Bus: "
#: eeschema/schframe.cpp:309 #: eeschema/schframe.cpp:308
msgid "Schematic modified, Save before exit ?" msgid "Schematic modified, Save before exit ?"
msgstr "Schematique modifiée, Sauver avant de quitter ?" msgstr "Schematique modifiée, Sauver avant de quitter ?"
#: eeschema/schframe.cpp:421 #: eeschema/schframe.cpp:418
msgid "No show Hidden Pins" msgid "No show Hidden Pins"
msgstr "N'affichage pas les pins invisibles" msgstr "N'affichage pas les pins invisibles"
#: eeschema/schframe.cpp:425 #: eeschema/schframe.cpp:422
msgid "Draw lines at any direction" msgid "Draw lines at any direction"
msgstr "Tracer traits de direction quelconque" msgstr "Tracer traits de direction quelconque"
#: eeschema/schframe.cpp:426 #: eeschema/schframe.cpp:423
msgid "Draw lines H, V or 45 deg only" msgid "Draw lines H, V or 45 deg only"
msgstr "Tracer traits H, V ou 45 deg seulement" msgstr "Tracer traits H, V ou 45 deg seulement"
...@@ -8729,6 +8804,48 @@ msgstr "Supprimer Fichier" ...@@ -8729,6 +8804,48 @@ msgstr "Supprimer Fichier"
msgid "no kicad files found in this directory" msgid "no kicad files found in this directory"
msgstr "Pas de fichier Kicad tropuvés dans ce répertoire" msgstr "Pas de fichier Kicad tropuvés dans ce répertoire"
#: kicad/commandframe.cpp:58
msgid "EESchema (Schematic editor)"
msgstr "EESchema (Editeur de Schématique)"
#: kicad/commandframe.cpp:62
msgid "CVpcb (Components to modules)"
msgstr "CVpcb ( Association Composants/ Modules)"
#: kicad/commandframe.cpp:66
msgid "PCBnew (PCB editor)"
msgstr "PCBnew (Editeur de circuits imprimés)"
#: kicad/commandframe.cpp:70
msgid "GerbView (Gerber viewer)"
msgstr "GerbView (Visualisateur Gerber)"
#: kicad/commandframe.cpp:78
msgid "Run Python Script"
msgstr "Exécuter le Script Python"
#: kicad/mainframe.cpp:102
#, c-format
msgid ""
"Ready\n"
"Working dir: %s\n"
msgstr ""
"Pret\n"
"Répertoire de travail: %s\n"
#: kicad/mainframe.cpp:338
msgid "Execute Python Script:"
msgstr "Executer le Script Python:"
#: kicad/mainframe.cpp:361
msgid "Load file:"
msgstr "Charger Fichiers:"
#: kicad/kicad.cpp:215
#: kicad/treeprj_frame.cpp:432
msgid "noname"
msgstr "noname"
#: kicad/treeprj_frame.cpp:94 #: kicad/treeprj_frame.cpp:94
msgid "&Run" msgid "&Run"
msgstr "Exécute&r" msgstr "Exécute&r"
...@@ -8822,50 +8939,13 @@ msgstr "Créer un nouveau Fichier" ...@@ -8822,50 +8939,13 @@ msgstr "Créer un nouveau Fichier"
msgid "Create New Directory" msgid "Create New Directory"
msgstr "Créer un nouveau Répertoire" msgstr "Créer un nouveau Répertoire"
#: kicad/treeprj_frame.cpp:432
msgid "noname"
msgstr "noname"
#: kicad/treeprj_frame.cpp:878 #: kicad/treeprj_frame.cpp:878
msgid "Change File Name: " msgid "Change Filename: "
msgstr "ChangerNom Fichier: " msgstr "Changer Nom Fichier: "
#: kicad/commandframe.cpp:58
msgid "EESchema (Schematic editor)"
msgstr "EESchema (Editeur de Schématique)"
#: kicad/commandframe.cpp:62
msgid "CVpcb (Components to modules)"
msgstr "CVpcb ( Association Composants/ Modules)"
#: kicad/commandframe.cpp:66
msgid "PCBnew (PCB editor)"
msgstr "PCBnew (Editeur de circuits imprimés)"
#: kicad/commandframe.cpp:70
msgid "GerbView (Gerber viewer)"
msgstr "GerbView (Visualisateur Gerber)"
#: kicad/commandframe.cpp:78
msgid "Run Python Script"
msgstr "Exécuter le Script Python"
#: kicad/mainframe.cpp:102
#, c-format
msgid ""
"Ready\n"
"Working dir: %s\n"
msgstr ""
"Pret\n"
"Répertoire de travail: %s\n"
#: kicad/mainframe.cpp:338
msgid "Execute Python Script:"
msgstr "Executer le Script Python:"
#: kicad/mainframe.cpp:361 #: kicad/treeprj_frame.cpp:879
msgid "Load file:" msgid "Change Filename"
msgstr "Charger Fichiers:" msgstr "Changer Nom Fichier"
#: gerbview/affiche.cpp:34 #: gerbview/affiche.cpp:34
msgid "Layer " msgid "Layer "
...@@ -9592,7 +9672,7 @@ msgstr "Catalan" ...@@ -9592,7 +9672,7 @@ msgstr "Catalan"
msgid "Dutch" msgid "Dutch"
msgstr "Hollandais" msgstr "Hollandais"
#: common/edaappl.cpp:603 #: common/edaappl.cpp:604
msgid "Language" msgid "Language"
msgstr "Langage" msgstr "Langage"
...@@ -10061,6 +10141,11 @@ msgstr "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>" ...@@ -10061,6 +10141,11 @@ msgstr "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>"
msgid "Length(inch):" msgid "Length(inch):"
msgstr "Longueur (pouces):" msgstr "Longueur (pouces):"
#: pcbnew/gen_self.h:217
#: pcbnew/gen_self.h:223
msgid "Lenght"
msgstr "Longueur"
#: pcbnew/gen_self.h:223 #: pcbnew/gen_self.h:223
msgid "Length(mm):" msgid "Length(mm):"
msgstr "Long. (mm):" msgstr "Long. (mm):"
...@@ -10150,10 +10235,6 @@ msgstr "Génération Fichiers de Perçagee" ...@@ -10150,10 +10235,6 @@ msgstr "Génération Fichiers de Perçagee"
msgid "EESchema Annotation" msgid "EESchema Annotation"
msgstr "Annotation des composants" msgstr "Annotation des composants"
#: eeschema/dialog_backanno.h:37
msgid "EESchema Back Annotate"
msgstr "Eeschema Retro Annotation"
#: eeschema/dialog_build_BOM.h:61 #: eeschema/dialog_build_BOM.h:61
msgid "List of Material" msgid "List of Material"
msgstr "Liste du Matériel" msgstr "Liste du Matériel"
...@@ -10454,8 +10535,8 @@ msgstr "Imprimer" ...@@ -10454,8 +10535,8 @@ msgstr "Imprimer"
msgid "Create SVG file" msgid "Create SVG file"
msgstr "Créer Fichier SVG" msgstr "Créer Fichier SVG"
#~ msgid "Lengh" #~ msgid "EESchema Back Annotate"
#~ msgstr "Long." #~ msgstr "Eeschema Retro Annotation"
#~ msgid "MyComponent" #~ msgid "MyComponent"
#~ msgstr "MyComponent" #~ msgstr "MyComponent"
...@@ -51,6 +51,8 @@ set(PCBNEW_SRCS ...@@ -51,6 +51,8 @@ set(PCBNEW_SRCS
# dialog_graphic_items_options.cpp # dialog_graphic_items_options.cpp
# dialog_initpcb.cpp # dialog_initpcb.cpp
# dialog_netlist.cpp # dialog_netlist.cpp
zones_non_copper_type_functions.cpp
dialog_non_copper_zones_properties.cpp
# dialog_pad_edit.cpp # dialog_pad_edit.cpp
dialog_setup_libs.cpp dialog_setup_libs.cpp
dialog_orient_footprints.cpp dialog_orient_footprints.cpp
......
...@@ -1063,6 +1063,24 @@ void BOARD::RedrawAreasOutlines(WinEDA_DrawPanel* panel, wxDC * aDC, int aDrawMo ...@@ -1063,6 +1063,24 @@ void BOARD::RedrawAreasOutlines(WinEDA_DrawPanel* panel, wxDC * aDC, int aDrawMo
} }
} }
/***********************************************************************************************/
void BOARD::RedrawFilledAreas(WinEDA_DrawPanel* panel, wxDC * aDC, int aDrawMode, int aLayer)
/***********************************************************************************************/
/**
* Function RedrawFilledAreas
* Redraw all areas outlines on layer aLayer ( redraw all if aLayer < 0 )
*/
{
if ( ! aDC ) return;
for( int ii = 0; ii < GetAreaCount(); ii++ )
{
ZONE_CONTAINER* edge_zone = GetArea(ii);
if( (aLayer < 0) || (aLayer == edge_zone->GetLayer()) )
edge_zone->DrawFilledArea( panel, aDC, aDrawMode );
}
}
#if defined(DEBUG) #if defined(DEBUG)
......
...@@ -366,6 +366,12 @@ public: ...@@ -366,6 +366,12 @@ public:
*/ */
void RedrawAreasOutlines(WinEDA_DrawPanel* panel, wxDC * aDC, int aDrawMode, int aLayer); void RedrawAreasOutlines(WinEDA_DrawPanel* panel, wxDC * aDC, int aDrawMode, int aLayer);
/**
* Function RedrawFilledAreas
* Redraw all filled areas on layer aLayer ( redraw all if aLayer < 0 )
*/
void RedrawFilledAreas(WinEDA_DrawPanel* panel, wxDC * aDC, int aDrawMode, int aLayer);
/** /**
* Function SetAreasNetCodesFromNetNames * Function SetAreasNetCodesFromNetNames
* Set the .m_NetCode member of all copper areas, according to the area Net Name * Set the .m_NetCode member of all copper areas, according to the area Net Name
......
...@@ -149,7 +149,11 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const ...@@ -149,7 +149,11 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
TimeStampText.Printf( wxT( "(%8.8X)" ), item->m_TimeStamp ); TimeStampText.Printf( wxT( "(%8.8X)" ), item->m_TimeStamp );
text << TimeStampText; text << TimeStampText;
} }
if( ((ZONE_CONTAINER*) item)->GetNet() >= 0 ) if ( !((ZONE_CONTAINER*) item)->IsOnCopperLayer() )
{
text << wxT( " [" ) << _("Not on copper layer") << wxT( "]" );
}
else if( ((ZONE_CONTAINER*) item)->GetNet() >= 0 )
{ {
net = aPcb->FindNet( ( (ZONE_CONTAINER*) item )->GetNet() ); net = aPcb->FindNet( ( (ZONE_CONTAINER*) item )->GetNet() );
if( net ) if( net )
......
...@@ -84,8 +84,8 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const ...@@ -84,8 +84,8 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
// Save the outline main info // Save the outline main info
ret = fprintf( aFile, "ZInfo %8.8lX %d \"%s\"\n", ret = fprintf( aFile, "ZInfo %8.8lX %d \"%s\"\n",
m_TimeStamp, m_NetCode, m_TimeStamp, m_NetCode,
CONV_TO_UTF8( m_Netname ) ); CONV_TO_UTF8( m_Netname ) );
if( ret < 3 ) if( ret < 3 )
return false; return false;
...@@ -122,9 +122,11 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const ...@@ -122,9 +122,11 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
case PAD_IN_ZONE: case PAD_IN_ZONE:
padoption = 'I'; padoption = 'I';
break; break;
case THERMAL_PAD: case THERMAL_PAD:
padoption = 'T'; padoption = 'T';
break; break;
case PAD_NOT_IN_ZONE: case PAD_NOT_IN_ZONE:
padoption = 'X'; padoption = 'X';
break; break;
...@@ -138,8 +140,8 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const ...@@ -138,8 +140,8 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
for( item_pos = 0; item_pos < corners_count; item_pos++ ) for( item_pos = 0; item_pos < corners_count; item_pos++ )
{ {
ret = fprintf( aFile, "ZCorner %d %d %d\n", ret = fprintf( aFile, "ZCorner %d %d %d\n",
m_Poly->corner[item_pos].x, m_Poly->corner[item_pos].y, m_Poly->corner[item_pos].x, m_Poly->corner[item_pos].y,
m_Poly->corner[item_pos].end_contour ); m_Poly->corner[item_pos].end_contour );
if( ret < 3 ) if( ret < 3 )
return false; return false;
} }
...@@ -157,7 +159,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum ) ...@@ -157,7 +159,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
/** Function ReadDescr /** Function ReadDescr
* @param aFile = opened file * @param aFile = opened file
* @param aLineNum = pointer on a line number counter (can be NULL or missing) * @param aLineNum = pointer on a line number counter (can be NULL or missing)
* @return 0 if ok or NULL * @return 1 if ok or 0
*/ */
{ {
char Line[1024], * text; char Line[1024], * text;
...@@ -182,7 +184,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum ) ...@@ -182,7 +184,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
if( !has_corner ) if( !has_corner )
m_Poly->Start( m_Layer, x, y, outline_hatch ); m_Poly->Start( m_Layer, x, y, outline_hatch );
else else
AppendCorner( wxPoint(x, y) ); AppendCorner( wxPoint( x, y ) );
has_corner = true; has_corner = true;
if( flag ) if( flag )
m_Poly->Close(); m_Poly->Close();
...@@ -281,6 +283,9 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum ) ...@@ -281,6 +283,9 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
} }
} }
if( !IsOnCopperLayer() )
SetNet( 0 );
return error ? 0 : 1; return error ? 0 : 1;
} }
...@@ -300,8 +305,8 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con ...@@ -300,8 +305,8 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con
return; return;
wxPoint seg_start, seg_end; wxPoint seg_start, seg_end;
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer; int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
int color = g_DesignSettings.m_LayerColor[m_Layer]; int color = g_DesignSettings.m_LayerColor[m_Layer];
if( ( color & (ITEM_NOT_SHOW | HIGHT_LIGHT_FLAG) ) == ITEM_NOT_SHOW ) if( ( color & (ITEM_NOT_SHOW | HIGHT_LIGHT_FLAG) ) == ITEM_NOT_SHOW )
return; return;
...@@ -331,14 +336,14 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con ...@@ -331,14 +336,14 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con
int i_start_contour = 0; int i_start_contour = 0;
for( int ic = 0; ic < GetNumCorners(); ic++ ) for( int ic = 0; ic < GetNumCorners(); ic++ )
{ {
seg_start = GetCornerPosition(ic) + offset; seg_start = GetCornerPosition( ic ) + offset;
if( m_Poly->corner[ic].end_contour == FALSE && ic < GetNumCorners() - 1 ) if( m_Poly->corner[ic].end_contour == FALSE && ic < GetNumCorners() - 1 )
{ {
seg_end = GetCornerPosition(ic + 1) + offset; seg_end = GetCornerPosition( ic + 1 ) + offset;
} }
else else
{ {
seg_end = GetCornerPosition(i_start_contour) + offset; seg_end = GetCornerPosition( i_start_contour ) + offset;
i_start_contour = ic + 1; i_start_contour = ic + 1;
} }
GRLine( &panel->m_ClipBox, DC, seg_start.x, seg_start.y, seg_end.x, seg_end.y, 0, color ); GRLine( &panel->m_ClipBox, DC, seg_start.x, seg_start.y, seg_end.x, seg_end.y, 0, color );
...@@ -356,20 +361,108 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con ...@@ -356,20 +361,108 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con
} }
/************************************************************************************/
void ZONE_CONTAINER::DrawFilledArea( WinEDA_DrawPanel* panel,
wxDC* DC, int aDrawMode, const wxPoint& offset )
/************************************************************************************/
/**
* Function DrawDrawFilledArea
* Draws the filled area for this zone (polygon list .m_FilledPolysList)
* @param panel = current Draw Panel
* @param DC = current Device Context
* @param offset = Draw offset (usually wxPoint(0,0))
* @param aDrawMode = GR_OR, GR_XOR, GR_COPY ..
*/
{
static int* CornersBuffer = NULL;
static unsigned CornersBufferSize = 0;
if( DC == NULL )
return;
if( !DisplayOpt.DisplayZones )
return;
unsigned imax = m_FilledPolysList.size();
if( imax == 0 ) // Nothing to draw
return;
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
int color = g_DesignSettings.m_LayerColor[m_Layer];
if( ( color & (ITEM_NOT_SHOW | HIGHT_LIGHT_FLAG) ) == ITEM_NOT_SHOW )
return;
GRSetDrawMode( DC, aDrawMode );
if( DisplayOpt.ContrastModeDisplay )
{
if( !IsOnLayer( curr_layer ) )
{
color &= ~MASKCOLOR;
color |= DARKDARKGRAY;
}
}
if( aDrawMode & GR_SURBRILL )
{
if( aDrawMode & GR_AND )
color &= ~HIGHT_LIGHT_FLAG;
else
color |= HIGHT_LIGHT_FLAG;
}
if( color & HIGHT_LIGHT_FLAG )
color = ColorRefs[color & MASKCOLOR].m_LightColor;
// draw the filled polygon
if( CornersBuffer == NULL )
{
CornersBufferSize = imax * 4;
CornersBuffer = (int*) MyMalloc( CornersBufferSize * sizeof(int) );
}
if( (imax * 4) > CornersBufferSize )
{
CornersBufferSize = imax * 4;
CornersBuffer = (int*) realloc( CornersBuffer, CornersBufferSize * sizeof(int) );
}
int corners_count = 0;
for( unsigned ic = 0, ii = 0; ic < imax; ic++ )
{
CPolyPt* corner = &m_FilledPolysList[ic];
CornersBuffer[ii++] = corner->x + offset.x;
CornersBuffer[ii++] = corner->y + offset.y;
corners_count++;
if( corner->end_contour )
{
GRPoly( &panel->m_ClipBox, DC, corners_count, CornersBuffer,
1, 0, color, color );
corners_count = 0;
ii = 0;
}
}
}
/****************************************/
EDA_Rect ZONE_CONTAINER::GetBoundingBox() EDA_Rect ZONE_CONTAINER::GetBoundingBox()
/****************************************/
{ {
const int PRELOAD = 500000; const int PRELOAD = 0x7FFFFFFF; // Biggest integer (32 bits)
int ymax = -PRELOAD; int ymax = -PRELOAD;
int ymin = PRELOAD; int ymin = PRELOAD;
int xmin = PRELOAD; int xmin = PRELOAD;
int xmax = -PRELOAD; int xmax = -PRELOAD;
int count = GetNumCorners(); int count = GetNumCorners();
for( int i=0; i<count; ++i ) for( int i = 0; i<count; ++i )
{ {
wxPoint corner = GetCornerPosition(i); wxPoint corner = GetCornerPosition( i );
ymax = MAX( ymax, corner.y ); ymax = MAX( ymax, corner.y );
xmax = MAX( xmax, corner.x ); xmax = MAX( xmax, corner.x );
...@@ -377,7 +470,7 @@ EDA_Rect ZONE_CONTAINER::GetBoundingBox() ...@@ -377,7 +470,7 @@ EDA_Rect ZONE_CONTAINER::GetBoundingBox()
xmin = MIN( xmin, corner.x ); xmin = MIN( xmin, corner.x );
} }
EDA_Rect ret( wxPoint(xmin,ymin), wxSize( xmax-xmin+1, ymax-ymin+1) ); EDA_Rect ret( wxPoint( xmin, ymin ), wxSize( xmax - xmin + 1, ymax - ymin + 1 ) );
return ret; return ret;
} }
...@@ -386,6 +479,7 @@ EDA_Rect ZONE_CONTAINER::GetBoundingBox() ...@@ -386,6 +479,7 @@ EDA_Rect ZONE_CONTAINER::GetBoundingBox()
/**********************************************************************************************/ /**********************************************************************************************/
void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode ) void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode )
/***********************************************************************************************/ /***********************************************************************************************/
/** /**
* Function DrawWhileCreateOutline * Function DrawWhileCreateOutline
* Draws the zone outline when ir is created. * Draws the zone outline when ir is created.
...@@ -397,14 +491,14 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -397,14 +491,14 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
* @param draw_mode = draw mode: OR, XOR .. * @param draw_mode = draw mode: OR, XOR ..
*/ */
{ {
int current_gr_mode = draw_mode; int current_gr_mode = draw_mode;
bool is_close_segment = false; bool is_close_segment = false;
wxPoint seg_start, seg_end; wxPoint seg_start, seg_end;
if( DC == NULL ) if( DC == NULL )
return; return;
int curr_layer = ((PCB_SCREEN*)panel->GetScreen())->m_Active_Layer; int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
int color = g_DesignSettings.m_LayerColor[m_Layer] & MASKCOLOR; int color = g_DesignSettings.m_LayerColor[m_Layer] & MASKCOLOR;
if( DisplayOpt.ContrastModeDisplay ) if( DisplayOpt.ContrastModeDisplay )
{ {
...@@ -417,18 +511,18 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -417,18 +511,18 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
// draw the lines // draw the lines
wxPoint start_contour_pos = GetCornerPosition(0); wxPoint start_contour_pos = GetCornerPosition( 0 );
for( int ic = 0; ic < GetNumCorners(); ic++ ) for( int ic = 0; ic < GetNumCorners(); ic++ )
{ {
int xi = GetCornerPosition(ic).x; int xi = GetCornerPosition( ic ).x;
int yi = GetCornerPosition(ic).y; int yi = GetCornerPosition( ic ).y;
int xf, yf; int xf, yf;
if( m_Poly->corner[ic].end_contour == FALSE && ic < GetNumCorners() - 1 ) if( m_Poly->corner[ic].end_contour == FALSE && ic < GetNumCorners() - 1 )
{ {
is_close_segment = false; is_close_segment = false;
xf = GetCornerPosition(ic + 1).x; xf = GetCornerPosition( ic + 1 ).x;
yf = GetCornerPosition(ic + 1).y; yf = GetCornerPosition( ic + 1 ).y;
if ( (m_Poly->corner[ic + 1].end_contour) || (ic == GetNumCorners() - 2) ) if( (m_Poly->corner[ic + 1].end_contour) || (ic == GetNumCorners() - 2) )
current_gr_mode = GR_XOR; current_gr_mode = GR_XOR;
else else
current_gr_mode = draw_mode; current_gr_mode = draw_mode;
...@@ -436,13 +530,13 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -436,13 +530,13 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
else else
{ {
is_close_segment = true; is_close_segment = true;
current_gr_mode = GR_XOR; current_gr_mode = GR_XOR;
xf = start_contour_pos.x; xf = start_contour_pos.x;
yf = start_contour_pos.y; yf = start_contour_pos.y;
start_contour_pos = GetCornerPosition(ic + 1); start_contour_pos = GetCornerPosition( ic + 1 );
} }
GRSetDrawMode( DC, current_gr_mode ); GRSetDrawMode( DC, current_gr_mode );
if ( is_close_segment ) if( is_close_segment )
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, WHITE ); GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, WHITE );
else else
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, color ); GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, color );
...@@ -450,7 +544,6 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, ...@@ -450,7 +544,6 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
} }
/** /**
* Function HitTest * Function HitTest
* tests if the given wxPoint is within the bounds of this object. * tests if the given wxPoint is within the bounds of this object.
...@@ -541,11 +634,11 @@ int ZONE_CONTAINER::HitTestForEdge( const wxPoint& refPos ) ...@@ -541,11 +634,11 @@ int ZONE_CONTAINER::HitTestForEdge( const wxPoint& refPos )
/* test the dist between segment and ref point */ /* test the dist between segment and ref point */
dist = (int) GetPointToLineSegmentDistance( refPos.x, dist = (int) GetPointToLineSegmentDistance( refPos.x,
refPos.y, refPos.y,
m_Poly->corner[item_pos].x, m_Poly->corner[item_pos].x,
m_Poly->corner[item_pos].y, m_Poly->corner[item_pos].y,
m_Poly->corner[end_segm].x, m_Poly->corner[end_segm].x,
m_Poly->corner[end_segm].y ); m_Poly->corner[end_segm].y );
if( dist <= min_dist ) if( dist <= min_dist )
{ {
m_CornerSelection = item_pos; m_CornerSelection = item_pos;
...@@ -609,23 +702,28 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame ) ...@@ -609,23 +702,28 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame )
text_pos += 15; text_pos += 15;
if( GetNet() >= 0 ) if( IsOnCopperLayer() )
{ {
EQUIPOT* equipot = ( (WinEDA_PcbFrame*) frame )->m_Pcb->FindNet( GetNet() ); if( GetNet() >= 0 )
{
EQUIPOT* equipot = ( (WinEDA_PcbFrame*) frame )->m_Pcb->FindNet( GetNet() );
if( equipot ) if( equipot )
msg = equipot->m_Netname; msg = equipot->m_Netname;
else else
msg = wxT( "<noname>" ); msg = wxT( "<noname>" );
} }
else // a netcode < 0 is an error else // a netcode < 0 is an error
{ {
msg = wxT( " [" ); msg = wxT( " [" );
msg << m_Netname + wxT( "]" ); msg << m_Netname + wxT( "]" );
msg << wxT( " <" ) << _( "Not Found" ) << wxT( ">" ); msg << wxT( " <" ) << _( "Not Found" ) << wxT( ">" );
} }
Affiche_1_Parametre( frame, text_pos, _( "NetName" ), msg, RED ); Affiche_1_Parametre( frame, text_pos, _( "NetName" ), msg, RED );
}
else
Affiche_1_Parametre( frame, text_pos, _( "Non Copper Zone" ), wxEmptyString, RED );
/* Display net code : (usefull in test or debug) */ /* Display net code : (usefull in test or debug) */
text_pos += 18; text_pos += 18;
...@@ -657,12 +755,13 @@ void ZONE_CONTAINER::Move( const wxPoint& offset ) ...@@ -657,12 +755,13 @@ void ZONE_CONTAINER::Move( const wxPoint& offset )
{ {
for( unsigned ii = 0; ii < m_Poly->corner.size(); ii++ ) for( unsigned ii = 0; ii < m_Poly->corner.size(); ii++ )
{ {
SetCornerPosition(ii, GetCornerPosition(ii) + offset); SetCornerPosition( ii, GetCornerPosition( ii ) + offset );
} }
m_Poly->Hatch(); m_Poly->Hatch();
} }
/** /**
* Function MoveEdge * Function MoveEdge
* Move the outline Edge. m_CornerSelection is the start point of the outline edge * Move the outline Edge. m_CornerSelection is the start point of the outline edge
...@@ -673,17 +772,17 @@ void ZONE_CONTAINER::MoveEdge( const wxPoint& offset ) ...@@ -673,17 +772,17 @@ void ZONE_CONTAINER::MoveEdge( const wxPoint& offset )
int ii = m_CornerSelection; int ii = m_CornerSelection;
// Move the start point of the selected edge: // Move the start point of the selected edge:
SetCornerPosition(ii, GetCornerPosition(ii) + offset); SetCornerPosition( ii, GetCornerPosition( ii ) + offset );
// Move the end point of the selected edge: // Move the end point of the selected edge:
if ( m_Poly->corner[ii].end_contour || ii == GetNumCorners() - 1) if( m_Poly->corner[ii].end_contour || ii == GetNumCorners() - 1 )
{ {
int icont = m_Poly->GetContour( ii ); int icont = m_Poly->GetContour( ii );
ii = m_Poly->GetContourStart( icont ); ii = m_Poly->GetContourStart( icont );
} }
else else
ii++; ii++;
SetCornerPosition(ii, GetCornerPosition(ii) + offset); SetCornerPosition( ii, GetCornerPosition( ii ) + offset );
m_Poly->Hatch(); m_Poly->Hatch();
} }
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#ifndef CLASS_ZONE_H #ifndef CLASS_ZONE_H
#define CLASS_ZONE_H #define CLASS_ZONE_H
#include <vector>
#include "PolyLine.h" #include "PolyLine.h"
/************************/ /************************/
...@@ -25,30 +27,38 @@ public: ...@@ -25,30 +27,38 @@ public:
PAD_IN_ZONE // pads are covered by copper PAD_IN_ZONE // pads are covered by copper
}; };
wxString m_Netname; // Net Name wxString m_Netname; // Net Name
CPolyLine* m_Poly; // outlines CPolyLine* m_Poly; // outlines
int m_CornerSelection; // For corner moving, corner index to drag, or -1 if no selection int m_CornerSelection; // For corner moving, corner index to drag, or -1 if no selection
int m_ZoneClearance; // clearance value int m_ZoneClearance; // clearance value
int m_GridFillValue; // Grid used for filling int m_GridFillValue; // Grid used for filling
m_PadInZone m_PadOption; // see m_PadInZone m_PadInZone m_PadOption; // see m_PadInZone
int utility, utility2; // flags used in polygon calculations int utility, utility2; // flags used in polygon calculations
std::vector <CPolyPt> m_FilledPolysList; /* set of filled polygons used to draw a zone as a filled area.
* from outlines (m_Poly) but unlike m_Poly these filled polygons have no hole (they are all in one piece)
* In very simple cases m_FilledPolysList is same as m_Poly
* In less simple cases (when m_Poly has holes) m_FilledPolysList is a polygon equivalent to m_Poly, without holes
* In complex cases an ouline decribed by m_Poly can have many filled areas
*/
private: private:
int m_NetCode; // Net number for fast comparisons int m_NetCode; // Net number for fast comparisons
public: public:
ZONE_CONTAINER( BOARD * parent ); ZONE_CONTAINER( BOARD* parent );
~ZONE_CONTAINER(); ~ZONE_CONTAINER();
bool Save( FILE* aFile ) const; bool Save( FILE* aFile ) const;
int ReadDescr( FILE* aFile, int* aLineNum = NULL ); int ReadDescr( FILE* aFile, int* aLineNum = NULL );
wxPoint& GetPosition() wxPoint& GetPosition()
{ {
static wxPoint pos; static wxPoint pos;
return pos; return pos;
} }
void UnLink( void ) void UnLink( void )
{ {
}; };
...@@ -58,9 +68,9 @@ public: ...@@ -58,9 +68,9 @@ public:
* copy usefull data from the source. * copy usefull data from the source.
* flags and linked list pointers are NOT copied * flags and linked list pointers are NOT copied
*/ */
void Copy( ZONE_CONTAINER* src ); void Copy( ZONE_CONTAINER* src );
void Display_Infos( WinEDA_DrawFrame* frame ); void Display_Infos( WinEDA_DrawFrame* frame );
/** /**
* Function Draw * Function Draw
...@@ -70,8 +80,23 @@ public: ...@@ -70,8 +80,23 @@ public:
* @param offset = Draw offset (usually wxPoint(0,0)) * @param offset = Draw offset (usually wxPoint(0,0))
* @param aDrawMode = GR_OR, GR_XOR, GR_COPY .. * @param aDrawMode = GR_OR, GR_XOR, GR_COPY ..
*/ */
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, int aDrawMode, const wxPoint& offset = ZeroOffset ); void Draw( WinEDA_DrawPanel* panel,
wxDC* DC,
int aDrawMode,
const wxPoint& offset = ZeroOffset );
/**
* Function DrawDrawFilledArea
* Draws the filled area for this zone (polygon list .m_FilledPolysList)
* @param panel = current Draw Panel
* @param DC = current Device Context
* @param offset = Draw offset (usually wxPoint(0,0))
* @param aDrawMode = GR_OR, GR_XOR, GR_COPY ..
*/
void DrawFilledArea( WinEDA_DrawPanel* panel,
wxDC* DC,
int aDrawMode,
const wxPoint& offset = ZeroOffset );
EDA_Rect GetBoundingBox(); EDA_Rect GetBoundingBox();
...@@ -85,14 +110,26 @@ public: ...@@ -85,14 +110,26 @@ public:
* @param DC = current Device Context * @param DC = current Device Context
* @param draw_mode = draw mode: OR, XOR .. * @param draw_mode = draw mode: OR, XOR ..
*/ */
void DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode = GR_OR ); void DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode = GR_OR );
/**
* Function IsOnCopperLayer
* @return true if this zone is on a copper layer, false if on a technical layer
*/
bool IsOnCopperLayer( void )
{
return ( GetLayer() < FIRST_NO_COPPER_LAYER ) ? true : false;
}
int GetNet( void ) const int GetNet( void ) const
{ {
return m_NetCode; return m_NetCode;
} }
void SetNet( int anet_code );
void SetNet( int anet_code );
/** /**
* Function HitTest * Function HitTest
...@@ -100,7 +137,15 @@ public: ...@@ -100,7 +137,15 @@ public:
* @param refPos A wxPoint to test * @param refPos A wxPoint to test
* @return bool - true if a hit, else false * @return bool - true if a hit, else false
*/ */
bool HitTest( const wxPoint& refPos ); bool HitTest( const wxPoint& refPos );
/** function BuildFilledPolysListData
* Build m_FilledPolysList data from real outlines (m_Poly)
* in order to have drawable (and plottable) filled polygons
* drawable filled polygons are polygons without hole
* @return number of polygons
*/
int BuildFilledPolysListData( void );
/** /**
* Function HitTestForCorner * Function HitTestForCorner
...@@ -108,7 +153,7 @@ public: ...@@ -108,7 +153,7 @@ public:
* @return -1 if none, corner index in .corner <vector> * @return -1 if none, corner index in .corner <vector>
* @param refPos : A wxPoint to test * @param refPos : A wxPoint to test
*/ */
int HitTestForCorner( const wxPoint& refPos ); int HitTestForCorner( const wxPoint& refPos );
/** /**
* Function HitTestForEdge * Function HitTestForEdge
...@@ -116,7 +161,7 @@ public: ...@@ -116,7 +161,7 @@ public:
* @return -1 if none, or index of the starting corner in .corner <vector> * @return -1 if none, or index of the starting corner in .corner <vector>
* @param refPos : A wxPoint to test * @param refPos : A wxPoint to test
*/ */
int HitTestForEdge( const wxPoint& refPos ); int HitTestForEdge( const wxPoint& refPos );
/** /**
* Function HitTest (overlayed) * Function HitTest (overlayed)
...@@ -124,7 +169,7 @@ public: ...@@ -124,7 +169,7 @@ public:
* @param refArea : the given EDA_Rect * @param refArea : the given EDA_Rect
* @return bool - true if a hit, else false * @return bool - true if a hit, else false
*/ */
bool HitTest( EDA_Rect& refArea ); bool HitTest( EDA_Rect& refArea );
/** /**
* Function Fill_Zone() * Function Fill_Zone()
...@@ -137,7 +182,7 @@ public: ...@@ -137,7 +182,7 @@ public:
* @param verbose = true to show error messages * @param verbose = true to show error messages
* @return error level (0 = no error) * @return error level (0 = no error)
*/ */
int Fill_Zone( WinEDA_PcbFrame* frame, wxDC* DC, bool verbose = TRUE ); int Fill_Zone( WinEDA_PcbFrame* frame, wxDC* DC, bool verbose = TRUE );
/* Geometric transformations: */ /* Geometric transformations: */
...@@ -146,14 +191,14 @@ public: ...@@ -146,14 +191,14 @@ public:
* Move the outlines * Move the outlines
* @param offset = moving vector * @param offset = moving vector
*/ */
void Move( const wxPoint& offset ); void Move( const wxPoint& offset );
/** /**
* Function MoveEdge * Function MoveEdge
* Move the outline Edge. m_CornerSelection is the start point of the outline edge * Move the outline Edge. m_CornerSelection is the start point of the outline edge
* @param offset = moving vector * @param offset = moving vector
*/ */
void MoveEdge( const wxPoint& offset ); void MoveEdge( const wxPoint& offset );
/** /**
* Function Rotate * Function Rotate
...@@ -161,7 +206,7 @@ public: ...@@ -161,7 +206,7 @@ public:
* @param centre = rot centre * @param centre = rot centre
* @param angle = in 0.1 degree * @param angle = in 0.1 degree
*/ */
void Rotate( const wxPoint& centre, int angle ); void Rotate( const wxPoint& centre, int angle );
/** /**
* Function Mirror * Function Mirror
...@@ -169,7 +214,7 @@ public: ...@@ -169,7 +214,7 @@ public:
* the layer is not changed * the layer is not changed
* @param mirror_ref = vertical axis position * @param mirror_ref = vertical axis position
*/ */
void Mirror( const wxPoint& mirror_ref ); void Mirror( const wxPoint& mirror_ref );
/** /**
* Function GetClass * Function GetClass
...@@ -181,30 +226,35 @@ public: ...@@ -181,30 +226,35 @@ public:
return wxT( "ZONE_CONTAINER" ); return wxT( "ZONE_CONTAINER" );
} }
/** Acces to m_Poly parameters /** Acces to m_Poly parameters
*/ */
int GetNumCorners(void) int GetNumCorners( void )
{ {
return m_Poly->GetNumCorners(); return m_Poly->GetNumCorners();
} }
void RemoveAllContours(void)
void RemoveAllContours( void )
{ {
m_Poly->RemoveAllContours(); m_Poly->RemoveAllContours();
} }
wxPoint GetCornerPosition(int aCornerIndex)
wxPoint GetCornerPosition( int aCornerIndex )
{ {
return wxPoint(m_Poly->GetX(aCornerIndex), m_Poly->GetY(aCornerIndex)); return wxPoint( m_Poly->GetX( aCornerIndex ), m_Poly->GetY( aCornerIndex ) );
} }
void SetCornerPosition(int aCornerIndex, wxPoint new_pos)
void SetCornerPosition( int aCornerIndex, wxPoint new_pos )
{ {
m_Poly->SetX(aCornerIndex, new_pos.x); m_Poly->SetX( aCornerIndex, new_pos.x );
m_Poly->SetY(aCornerIndex, new_pos.y); m_Poly->SetY( aCornerIndex, new_pos.y );
} }
void AppendCorner( wxPoint position ) void AppendCorner( wxPoint position )
{ {
m_Poly->AppendCorner( position.x, position.y ); m_Poly->AppendCorner( position.x, position.y );
......
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_non_copper_zones_properties.h"
///////////////////////////////////////////////////////////////////////////
BEGIN_EVENT_TABLE( DialogNonCopperZonesProperties, wxDialog )
EVT_INIT_DIALOG( DialogNonCopperZonesProperties::_wxFB_InitDialog )
EVT_BUTTON( wxID_OK, DialogNonCopperZonesProperties::_wxFB_OnOkClick )
EVT_BUTTON( wxID_CANCEL, DialogNonCopperZonesProperties::_wxFB_OnCancelClick )
END_EVENT_TABLE()
DialogNonCopperZonesProperties::DialogNonCopperZonesProperties( 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* m_MainSizer;
m_MainSizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* m_UpperSizer;
m_UpperSizer = new wxBoxSizer( wxHORIZONTAL );
wxString m_OutlineAppearanceCtrlChoices[] = { _("Line"), _("Hatched Outline"), _("Full Hatched") };
int m_OutlineAppearanceCtrlNChoices = sizeof( m_OutlineAppearanceCtrlChoices ) / sizeof( wxString );
m_OutlineAppearanceCtrl = new wxRadioBox( this, wxID_ANY, _("Outlines Appearence"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_OutlineAppearanceCtrl->SetSelection( 1 );
m_UpperSizer->Add( m_OutlineAppearanceCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
wxString m_OrientEdgesOptChoices[] = { _("Any"), _("H, V and 45 deg") };
int m_OrientEdgesOptNChoices = sizeof( m_OrientEdgesOptChoices ) / sizeof( wxString );
m_OrientEdgesOpt = new wxRadioBox( this, wxID_ANY, _("Zone Edges Orient"), wxDefaultPosition, wxDefaultSize, m_OrientEdgesOptNChoices, m_OrientEdgesOptChoices, 1, wxRA_SPECIFY_COLS );
m_OrientEdgesOpt->SetSelection( 0 );
m_UpperSizer->Add( m_OrientEdgesOpt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
wxBoxSizer* m_ButtonsSizer;
m_ButtonsSizer = new wxBoxSizer( wxVERTICAL );
m_buttonOk = new wxButton( this, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
m_buttonOk->SetDefault();
m_ButtonsSizer->Add( m_buttonOk, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
m_buttonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
m_ButtonsSizer->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
m_UpperSizer->Add( m_ButtonsSizer, 1, wxALIGN_CENTER_VERTICAL, 5 );
m_MainSizer->Add( m_UpperSizer, 1, wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5 );
m_staticTextLayerSelection = new wxStaticText( this, wxID_ANY, _("Layer selection:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextLayerSelection->Wrap( -1 );
m_MainSizer->Add( m_staticTextLayerSelection, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_LayerSelectionCtrl = new wxListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
m_MainSizer->Add( m_LayerSelectionCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
this->SetSizer( m_MainSizer );
this->Layout();
this->Centre( wxBOTH );
}
DialogNonCopperZonesProperties::~DialogNonCopperZonesProperties()
{
}
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<wxFormBuilder_Project>
<FileVersion major="1" minor="9" />
<object class="Project" expanded="1">
<property name="class_decoration"></property>
<property name="code_generation">C++</property>
<property name="disconnect_events">1</property>
<property name="encoding">UTF-8</property>
<property name="event_generation">table</property>
<property name="file">dialog_non_copper_zones_properties</property>
<property name="first_id">1000</property>
<property name="help_provider">none</property>
<property name="internationalize">1</property>
<property name="name">dialog_non_copper_zones_properties</property>
<property name="namespace"></property>
<property name="path">.</property>
<property name="precompiled_header"></property>
<property name="relative_path">1</property>
<property name="use_enum">1</property>
<property name="use_microsoft_bom">0</property>
<object class="Dialog" expanded="1">
<property name="bg"></property>
<property name="center">wxBOTH</property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="extra_style"></property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">DialogNonCopperZonesProperties</property>
<property name="pos"></property>
<property name="size">366,221</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
<property name="subclass"></property>
<property name="title">Non Copper Zones Properties</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxFULL_REPAINT_ON_RESIZE|wxSUNKEN_BORDER</property>
<event name="OnActivate"></event>
<event name="OnActivateApp"></event>
<event name="OnChar"></event>
<event name="OnClose"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnHibernate"></event>
<event name="OnIconize"></event>
<event name="OnIdle"></event>
<event name="OnInitDialog">InitDialog</event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">m_MainSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxALIGN_CENTER_HORIZONTAL</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">m_UpperSizer</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxRadioBox" expanded="1">
<property name="bg"></property>
<property name="choices">&quot;Line&quot; &quot;Hatched Outline&quot; &quot;Full Hatched&quot;</property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Outlines Appearence</property>
<property name="majorDimension">1</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_OutlineAppearanceCtrl</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="selection">1</property>
<property name="size"></property>
<property name="style">wxRA_SPECIFY_COLS</property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRadioBox"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property>
<object class="wxRadioBox" expanded="1">
<property name="bg"></property>
<property name="choices">&quot;Any&quot; &quot;H, V and 45 deg&quot;</property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Zone Edges Orient</property>
<property name="majorDimension">1</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_OrientEdgesOpt</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="selection">0</property>
<property name="size"></property>
<property name="style">wxRA_SPECIFY_COLS</property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRadioBox"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">1</property>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">m_ButtonsSizer</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_HORIZONTAL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="default">1</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_OK</property>
<property name="label">OK</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_buttonOk</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">OnOkClick</event>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxALIGN_CENTER_HORIZONTAL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="default">0</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_CANCEL</property>
<property name="label">Cancel</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_buttonCancel</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">OnCancelClick</event>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="bg"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Layer selection:</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_staticTextLayerSelection</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
<property name="proportion">0</property>
<object class="wxListBox" expanded="1">
<property name="bg"></property>
<property name="choices"></property>
<property name="context_help"></property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">m_LayerSelectionCtrl</property>
<property name="permission">protected</property>
<property name="pos"></property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnListBox"></event>
<event name="OnListBoxDClick"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __dialog_non_copper_zones_properties__
#define __dialog_non_copper_zones_properties__
#include <wx/intl.h>
#include <wx/string.h>
#include <wx/radiobox.h>
#include <wx/gdicmn.h>
#include <wx/font.h>
#include <wx/colour.h>
#include <wx/settings.h>
#include <wx/button.h>
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/listbox.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class DialogNonCopperZonesProperties
///////////////////////////////////////////////////////////////////////////////
class DialogNonCopperZonesProperties : public wxDialog
{
DECLARE_EVENT_TABLE()
private:
// Private event handlers
void _wxFB_InitDialog( wxInitDialogEvent& event ){ InitDialog( event ); }
void _wxFB_OnOkClick( wxCommandEvent& event ){ OnOkClick( event ); }
void _wxFB_OnCancelClick( wxCommandEvent& event ){ OnCancelClick( event ); }
protected:
wxRadioBox* m_OutlineAppearanceCtrl;
wxRadioBox* m_OrientEdgesOpt;
wxButton* m_buttonOk;
wxButton* m_buttonCancel;
wxStaticText* m_staticTextLayerSelection;
wxListBox* m_LayerSelectionCtrl;
// Virtual event handlers, overide them in your derived class
virtual void InitDialog( wxInitDialogEvent& event ){ event.Skip(); }
virtual void OnOkClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnCancelClick( wxCommandEvent& event ){ event.Skip(); }
public:
DialogNonCopperZonesProperties( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Non Copper Zones Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 366,221 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxSUNKEN_BORDER );
~DialogNonCopperZonesProperties();
};
#endif //__dialog_non_copper_zones_properties__
...@@ -260,7 +260,7 @@ void WinEDA_ZoneFrame::CreateControls() ...@@ -260,7 +260,7 @@ void WinEDA_ZoneFrame::CreateControls()
m_Parent->m_InternalUnits ); m_Parent->m_InternalUnits );
m_ZoneClearanceCtrl->SetValue( title ); m_ZoneClearanceCtrl->SetValue( title );
if( Zone_45_Only ) if( g_Zone_45_Only )
m_OrientEdgesOpt->SetSelection( 1 ); m_OrientEdgesOpt->SetSelection( 1 );
static const int GridList[4] = { 25, 50, 100, 250 }; static const int GridList[4] = { 25, 50, 100, 250 };
...@@ -297,7 +297,7 @@ void WinEDA_ZoneFrame::CreateControls() ...@@ -297,7 +297,7 @@ void WinEDA_ZoneFrame::CreateControls()
m_FillOpt->SetSelection( 0 ); m_FillOpt->SetSelection( 0 );
break; break;
} }
s_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle(); g_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle();
} }
else else
...@@ -314,11 +314,11 @@ void WinEDA_ZoneFrame::CreateControls() ...@@ -314,11 +314,11 @@ void WinEDA_ZoneFrame::CreateControls()
m_FillOpt->SetSelection( 0 ); m_FillOpt->SetSelection( 0 );
break; break;
} }
s_Zone_Hatching = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_OUTLINES_HATCH_OPTION_KEY, g_Zone_Hatching = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_OUTLINES_HATCH_OPTION_KEY,
(long) CPolyLine::DIAGONAL_EDGE ); (long) CPolyLine::DIAGONAL_EDGE );
} }
switch( s_Zone_Hatching ) switch( g_Zone_Hatching )
{ {
case CPolyLine::NO_HATCH: case CPolyLine::NO_HATCH:
m_OutlineAppearanceCtrl->SetSelection(0); m_OutlineAppearanceCtrl->SetSelection(0);
...@@ -485,21 +485,21 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors) ...@@ -485,21 +485,21 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
switch( m_OutlineAppearanceCtrl->GetSelection() ) switch( m_OutlineAppearanceCtrl->GetSelection() )
{ {
case 0: case 0:
s_Zone_Hatching = CPolyLine::NO_HATCH; g_Zone_Hatching = CPolyLine::NO_HATCH;
break; break;
case 1: case 1:
s_Zone_Hatching = CPolyLine::DIAGONAL_EDGE; g_Zone_Hatching = CPolyLine::DIAGONAL_EDGE;
break; break;
case 2: case 2:
s_Zone_Hatching = CPolyLine::DIAGONAL_FULL; g_Zone_Hatching = CPolyLine::DIAGONAL_FULL;
break; break;
} }
if( m_Parent->m_Parent->m_EDA_Config ) if( m_Parent->m_Parent->m_EDA_Config )
{ {
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_OUTLINES_HATCH_OPTION_KEY, (long)s_Zone_Hatching); m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_OUTLINES_HATCH_OPTION_KEY, (long)g_Zone_Hatching);
} }
switch( m_GridCtrl->GetSelection() ) switch( m_GridCtrl->GetSelection() )
...@@ -526,9 +526,9 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors) ...@@ -526,9 +526,9 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
g_DesignSettings.m_ZoneClearence = g_DesignSettings.m_ZoneClearence =
ReturnValueFromString( g_UnitMetric, txtvalue, m_Parent->m_InternalUnits ); ReturnValueFromString( g_UnitMetric, txtvalue, m_Parent->m_InternalUnits );
if( m_OrientEdgesOpt->GetSelection() == 0 ) if( m_OrientEdgesOpt->GetSelection() == 0 )
Zone_45_Only = FALSE; g_Zone_45_Only = FALSE;
else else
Zone_45_Only = TRUE; g_Zone_45_Only = TRUE;
/* Get the layer selection for this zone */ /* Get the layer selection for this zone */
int ii = m_LayerSelectionCtrl->GetSelection(); int ii = m_LayerSelectionCtrl->GetSelection();
...@@ -537,7 +537,7 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors) ...@@ -537,7 +537,7 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
DisplayError( this, _( "Error : you must choose a layer" ) ); DisplayError( this, _( "Error : you must choose a layer" ) );
return false; return false;
} }
s_Zone_Layer = m_LayerId[ii]; g_CurrentZone_Layer = m_LayerId[ii];
/* Get the net name selection for this zone */ /* Get the net name selection for this zone */
ii = m_ListNetNameSelection->GetSelection(); ii = m_ListNetNameSelection->GetSelection();
......
...@@ -320,6 +320,8 @@ void DRC::testZones(bool adoTestFillSegments) ...@@ -320,6 +320,8 @@ void DRC::testZones(bool adoTestFillSegments)
for( int ii = 0; ii < m_pcb->GetAreaCount(); ii++ ) for( int ii = 0; ii < m_pcb->GetAreaCount(); ii++ )
{ {
ZONE_CONTAINER* Area_To_Test = m_pcb->GetArea( ii ); ZONE_CONTAINER* Area_To_Test = m_pcb->GetArea( ii );
if( ! Area_To_Test->IsOnCopperLayer() )
continue;
if( Area_To_Test->GetNet() <= 0 ) if( Area_To_Test->GetNet() <= 0 )
{ {
m_currentMarker = fillMarker( Area_To_Test, m_currentMarker = fillMarker( Area_To_Test,
......
...@@ -771,7 +771,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append ) ...@@ -771,7 +771,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
wxBusyCursor dummy; wxBusyCursor dummy;
// Switch the locale to standard C (needed to print floating point numbers like 1.3) // Switch the locale to standard C (needed to read floating point numbers like 1.3)
SetLocaleTo_C_standard( ); SetLocaleTo_C_standard( );
NbDraw = NbTrack = NbZone = NbMod = NbNets = -1; NbDraw = NbTrack = NbZone = NbMod = NbNets = -1;
...@@ -1010,6 +1010,13 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append ) ...@@ -1010,6 +1010,13 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
BestZoom(); BestZoom();
#ifdef PCBNEW #ifdef PCBNEW
if( m_Pcb->m_ZoneDescriptorList.size() > 0 )
{ // Build filled areas
for( unsigned ia = 0; ia < m_Pcb->m_ZoneDescriptorList.size(); ia++ )
m_Pcb->m_ZoneDescriptorList[ia]->BuildFilledPolysListData( );
}
// Build connectivity info
Compile_Ratsnest( NULL, TRUE ); Compile_Ratsnest( NULL, TRUE );
#endif #endif
return 1; return 1;
......
...@@ -20,6 +20,8 @@ OBJECTS= $(TARGET).o classpcb.o\ ...@@ -20,6 +20,8 @@ OBJECTS= $(TARGET).o classpcb.o\
$(SPECCTRA_TOOLS)\ $(SPECCTRA_TOOLS)\
lay2plot.o\ lay2plot.o\
dialog_freeroute_exchange.o\ dialog_freeroute_exchange.o\
dialog_non_copper_zones_properties.o\
zones_non_copper_type_functions.o\
modedit_undo_redo.o\ modedit_undo_redo.o\
block_module_editor.o\ block_module_editor.o\
onrightclick.o\ onrightclick.o\
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "trigo.h" #include "trigo.h"
#include "cell.h" #include "cell.h"
#include "worksheet.h" #include "worksheet.h"
#include "zones.h"
#include "protos.h" #include "protos.h"
......
...@@ -8,6 +8,10 @@ ...@@ -8,6 +8,10 @@
#include <vector> #include <vector>
/* install function for DialogNonCopperZonesEditor dialog frame :*/
bool InstallDialogNonCopperZonesEditor(WinEDA_PcbFrame* aParent, ZONE_CONTAINER* aZone);
/***************/ /***************/
/* PAD_CONNECT.CPP */ /* PAD_CONNECT.CPP */
/***************/ /***************/
......
...@@ -173,7 +173,10 @@ void WinEDA_PcbFrame::Trace_Pcb( wxDC* DC, int mode ) ...@@ -173,7 +173,10 @@ void WinEDA_PcbFrame::Trace_Pcb( wxDC* DC, int mode )
// Areas must be drawn here only if not moved or dragged, // Areas must be drawn here only if not moved or dragged,
// because these areas are drawn by ManageCursor() in a specific manner // because these areas are drawn by ManageCursor() in a specific manner
if ( (edge_zone->m_Flags & (IN_EDIT | IS_DRAGGED | IS_MOVED)) == 0 ) if ( (edge_zone->m_Flags & (IN_EDIT | IS_DRAGGED | IS_MOVED)) == 0 )
{
edge_zone->Draw( DrawPanel, DC, mode ); edge_zone->Draw( DrawPanel, DC, mode );
edge_zone->DrawFilledArea( DrawPanel, DC, mode );
}
} }
// draw the BOARD's markers. // draw the BOARD's markers.
......
/************************************************/
/* constants used in zone dialogs and functions */
/************************************************/
#ifndef ZONES_H
#define ZONES_H
#ifndef eda_global
#define eda_global extern
#endif
// keys used to store net sort option in config file :
#define ZONE_NET_OUTLINES_HATCH_OPTION_KEY wxT( "Zone_Ouline_Hatch_Opt" )
#define ZONE_NET_SORT_OPTION_KEY wxT( "Zone_NetSort_Opt" )
#define ZONE_NET_FILTER_STRING_KEY wxT( "Zone_Filter_Opt" )
enum zone_cmd {
ZONE_ABORT,
ZONE_OK
};
/************************************************/
/* variables used in zone dialogs and functions */
/************************************************/
eda_global bool g_Zone_45_Only
#ifdef MAIN
= FALSE
#endif
;
eda_global int g_CurrentZone_Layer; // Layer used to create the current zone
eda_global int g_Zone_Hatching; // Option to show the zone area (outlines only, short hatches or full hatches
#endif // ifndef ZONES_H
...@@ -33,6 +33,8 @@ using namespace std; ...@@ -33,6 +33,8 @@ using namespace std;
#include "protos.h" #include "protos.h"
#include "zones.h"
bool verbose = false; // false if zone outline diags must not be shown bool verbose = false; // false if zone outline diags must not be shown
// Outline creation: // Outline creation:
...@@ -46,25 +48,13 @@ static void Show_Zone_Corner_Or_Outline_While_Move_Mouse( WinEDA_DrawPanel* pane ...@@ -46,25 +48,13 @@ static void Show_Zone_Corner_Or_Outline_While_Move_Mouse( WinEDA_DrawPanel* pane
bool erase ); bool erase );
/* Local variables */ /* Local variables */
static bool Zone_45_Only = FALSE;
static ZONE_CONTAINER::m_PadInZone s_Zone_Pad_Options = ZONE_CONTAINER::THERMAL_PAD; static ZONE_CONTAINER::m_PadInZone s_Zone_Pad_Options = ZONE_CONTAINER::THERMAL_PAD;
static int s_Zone_Layer; // Layer used to create the current zone static int s_NetcodeSelection; // Net code selection for the current zone
static int s_Zone_Hatching; // Option to show the zone area (outlines only, short hatches or full hatches static wxPoint s_CornerInitialPosition; // Used to abort a move corner command
static int s_NetcodeSelection; // Net code selection for the current zone static bool s_CornerIsNew; // Used to abort a move corner command (if it is a new corner, it must be deleted)
static wxPoint s_CornerInitialPosition; // Used to abort a move corner command static bool s_AddCutoutToCurrentZone; // if true, the next outline will be addes to s_CurrentZone
static bool s_CornerIsNew; // Used to abort a move corner command (if it is a new corner, it must be deleted) static ZONE_CONTAINER* s_CurrentZone; // if != NULL, these ZONE_CONTAINER params will be used for the next zone
static bool s_AddCutoutToCurrentZone; // if true, the next outline will be addes to s_CurrentZone static wxPoint s_CursorLastPosition; // in move zone outline, last cursor position. Used to calculate the move vector
static ZONE_CONTAINER* s_CurrentZone; // if != NULL, these ZONE_CONTAINER params will be used for the next zone
static wxPoint s_CursorLastPosition; // in move zone outline, last cursor position. Used to calculate the move vector
// keys used to store net sort option in config file :
#define ZONE_NET_OUTLINES_HATCH_OPTION_KEY wxT( "Zone_Ouline_Hatch_Opt" )
#define ZONE_NET_SORT_OPTION_KEY wxT( "Zone_NetSort_Opt" )
#define ZONE_NET_FILTER_STRING_KEY wxT( "Zone_Filter_Opt" )
enum zone_cmd {
ZONE_ABORT,
ZONE_OK
};
#include "dialog_zones_by_polygon.cpp" #include "dialog_zones_by_polygon.cpp"
...@@ -228,15 +218,17 @@ void WinEDA_PcbFrame::Start_Move_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_con ...@@ -228,15 +218,17 @@ void WinEDA_PcbFrame::Start_Move_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_con
* if IsNewCorner is true, the Abort_Zone_Move_Corner_Or_Outlines will remove this corner, if called * if IsNewCorner is true, the Abort_Zone_Move_Corner_Or_Outlines will remove this corner, if called
*/ */
{ {
/* Show the Net */ if( zone_container->IsOnCopperLayer() ) /* Show the Net */
if( g_HightLigt_Status && DC )
{ {
Hight_Light( DC ); // Remove old hightlight selection if( g_HightLigt_Status && DC )
} {
Hight_Light( DC ); // Remove old hightlight selection
}
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet(); g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet();
if( DC ) if( DC )
Hight_Light( DC ); Hight_Light( DC );
}
zone_container->m_Flags = IN_EDIT; zone_container->m_Flags = IN_EDIT;
DrawPanel->ManageCurseur = Show_Zone_Corner_Or_Outline_While_Move_Mouse; DrawPanel->ManageCurseur = Show_Zone_Corner_Or_Outline_While_Move_Mouse;
...@@ -259,11 +251,11 @@ void WinEDA_PcbFrame::Start_Move_Zone_Drag_Outline_Edge( wxDC* DC, ...@@ -259,11 +251,11 @@ void WinEDA_PcbFrame::Start_Move_Zone_Drag_Outline_Edge( wxDC* DC,
* Prepares a drag edge for an existing zone outline, * Prepares a drag edge for an existing zone outline,
*/ */
{ {
zone_container->m_Flags = IS_DRAGGED; zone_container->m_Flags = IS_DRAGGED;
zone_container->m_CornerSelection = corner_id; zone_container->m_CornerSelection = corner_id;
DrawPanel->ManageCurseur = Show_Zone_Corner_Or_Outline_While_Move_Mouse; DrawPanel->ManageCurseur = Show_Zone_Corner_Or_Outline_While_Move_Mouse;
DrawPanel->ForceCloseManageCurseur = Abort_Zone_Move_Corner_Or_Outlines; DrawPanel->ForceCloseManageCurseur = Abort_Zone_Move_Corner_Or_Outlines;
s_CursorLastPosition = s_CornerInitialPosition = GetScreen()->m_Curseur; s_CursorLastPosition = s_CornerInitialPosition = GetScreen()->m_Curseur;
s_AddCutoutToCurrentZone = false; s_AddCutoutToCurrentZone = false;
s_CurrentZone = NULL; s_CurrentZone = NULL;
} }
...@@ -279,13 +271,16 @@ void WinEDA_PcbFrame::Start_Move_Zone_Outlines( wxDC* DC, ZONE_CONTAINER* zone_c ...@@ -279,13 +271,16 @@ void WinEDA_PcbFrame::Start_Move_Zone_Outlines( wxDC* DC, ZONE_CONTAINER* zone_c
*/ */
{ {
/* Show the Net */ /* Show the Net */
if( g_HightLigt_Status ) if( zone_container->IsOnCopperLayer() ) /* Show the Net */
{ {
Hight_Light( DC ); // Remove old hightlight selection if( g_HightLigt_Status )
} {
Hight_Light( DC ); // Remove old hightlight selection
}
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet(); g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet();
Hight_Light( DC ); Hight_Light( DC );
}
zone_container->m_Flags = IS_MOVED; zone_container->m_Flags = IS_MOVED;
DrawPanel->ManageCurseur = Show_Zone_Corner_Or_Outline_While_Move_Mouse; DrawPanel->ManageCurseur = Show_Zone_Corner_Or_Outline_While_Move_Mouse;
...@@ -321,12 +316,7 @@ void WinEDA_PcbFrame::End_Move_Zone_Corner_Or_Outlines( wxDC* DC, ZONE_CONTAINER ...@@ -321,12 +316,7 @@ void WinEDA_PcbFrame::End_Move_Zone_Corner_Or_Outlines( wxDC* DC, ZONE_CONTAINER
/* Combine zones if possible */ /* Combine zones if possible */
wxBusyCursor dummy; wxBusyCursor dummy;
// int layer = zone_container->GetLayer();
// m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_XOR, layer );
m_Pcb->AreaPolygonModified( zone_container, true, verbose ); m_Pcb->AreaPolygonModified( zone_container, true, verbose );
// m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_OR, layer );
DrawPanel->Refresh(); DrawPanel->Refresh();
...@@ -347,9 +337,12 @@ void WinEDA_PcbFrame::Remove_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_contain ...@@ -347,9 +337,12 @@ void WinEDA_PcbFrame::Remove_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_contain
/*************************************************************************************/ /*************************************************************************************/
/** /**
* Function End_Move_Zone_Corner * Function Remove_Zone_Corner
* Remove the currently selected corner in a zone outline * Remove the currently selected corner in a zone outline
* the .m_CornerSelection is used as corner selection * the .m_CornerSelection is used as corner selection
* @param DC = Current deice context (can be NULL )
* @param zone_container = the zone that contains the selected corner
* the member .m_CornerSelection is used as selected corner
*/ */
{ {
GetScreen()->SetModify(); GetScreen()->SetModify();
...@@ -357,20 +350,32 @@ void WinEDA_PcbFrame::Remove_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_contain ...@@ -357,20 +350,32 @@ void WinEDA_PcbFrame::Remove_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_contain
if( zone_container->m_Poly->GetNumCorners() <= 3 ) if( zone_container->m_Poly->GetNumCorners() <= 3 )
{ {
DrawPanel->PostDirtyRect( zone_container->GetBoundingBox() ); DrawPanel->PostDirtyRect( zone_container->GetBoundingBox() );
Delete_Zone_Fill( DC, NULL, zone_container->m_TimeStamp ); if( DC )
{
Delete_Zone_Fill( DC, NULL, zone_container->m_TimeStamp );
zone_container->DrawFilledArea( DrawPanel, DC, GR_XOR );
}
m_Pcb->Delete( zone_container ); m_Pcb->Delete( zone_container );
return; return;
} }
int layer = zone_container->GetLayer(); int layer = zone_container->GetLayer();
m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_XOR, layer ); if( DC )
{
m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_XOR, layer );
m_Pcb->RedrawFilledAreas( DrawPanel, DC, GR_XOR, layer );
}
zone_container->m_Poly->DeleteCorner( zone_container->m_CornerSelection ); zone_container->m_Poly->DeleteCorner( zone_container->m_CornerSelection );
// modify zones outlines according to the new zone_container shape // modify zones outlines according to the new zone_container shape
m_Pcb->AreaPolygonModified( zone_container, true, verbose ); m_Pcb->AreaPolygonModified( zone_container, true, verbose );
m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_OR, layer ); if( DC )
{
m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_OR, layer );
m_Pcb->RedrawFilledAreas( DrawPanel, DC, GR_OR, layer );
}
int ii = m_Pcb->GetAreaIndex( zone_container ); // test if zone_container exists int ii = m_Pcb->GetAreaIndex( zone_container ); // test if zone_container exists
if( ii < 0 ) if( ii < 0 )
...@@ -506,38 +511,50 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC ) ...@@ -506,38 +511,50 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
zone = m_Pcb->m_CurrentZoneContour; zone = m_Pcb->m_CurrentZoneContour;
if( zone->GetNumCorners() == 0 ) /* Start a new contour: init zone params (net and layer) */ if( zone->GetNumCorners() == 0 ) /* Start a new contour: init zone params (net and layer) */
{ {
if( s_CurrentZone == NULL ) if( s_CurrentZone == NULL ) // A new outline is created
{ {
int diag;
DrawPanel->m_IgnoreMouseEvents = TRUE; DrawPanel->m_IgnoreMouseEvents = TRUE;
WinEDA_ZoneFrame* frame = new WinEDA_ZoneFrame( this ); zone->SetLayer( ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer );
if( zone->IsOnCopperLayer() )
int diag = frame->ShowModal(); { // Put a zone on a copper layer
frame->Destroy(); WinEDA_ZoneFrame* frame = new WinEDA_ZoneFrame( this );
diag = frame->ShowModal();
frame->Destroy();
}
else // Put a zone on a non copper layer (technical layer)
{
diag = InstallDialogNonCopperZonesEditor( this, zone );
s_NetcodeSelection = 0; // No net for non copper zones
}
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
DrawPanel->m_IgnoreMouseEvents = FALSE; DrawPanel->m_IgnoreMouseEvents = FALSE;
if( diag == ZONE_ABORT ) if( diag == ZONE_ABORT )
return 0; return 0;
((PCB_SCREEN*)GetScreen())->m_Active_Layer = s_Zone_Layer; // Set by the dialog frame ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer = g_CurrentZone_Layer; // Set by the dialog frame
} }
else /* Start a new contour: init zone params (net and layer) from an existing zone */ else /* Start a new contour: init zone params (net and layer) from an existing zone */
{ {
((PCB_SCREEN*)GetScreen())->m_Active_Layer = s_Zone_Layer = s_CurrentZone->GetLayer(); ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer = g_CurrentZone_Layer =
s_Zone_Hatching = s_CurrentZone->m_Poly->GetHatchStyle(); s_CurrentZone->GetLayer();
g_Zone_Hatching = s_CurrentZone->m_Poly->GetHatchStyle();
} }
/* Show the Net */ /* Show the Net for zones on copper layers */
if( g_HightLigt_Status && (g_HightLigth_NetCode != s_NetcodeSelection) ) if( g_CurrentZone_Layer < FIRST_NO_COPPER_LAYER )
{ {
Hight_Light( DC ); // Remove old hightlight selection if( g_HightLigt_Status && (g_HightLigth_NetCode != s_NetcodeSelection) )
} {
Hight_Light( DC ); // Remove old hightlight selection
if( s_CurrentZone ) }
s_NetcodeSelection = s_CurrentZone->GetNet();
g_HightLigth_NetCode = s_NetcodeSelection;
Hight_Light( DC );
if( s_CurrentZone )
s_NetcodeSelection = s_CurrentZone->GetNet();
g_HightLigth_NetCode = s_NetcodeSelection;
Hight_Light( DC );
}
if( !s_AddCutoutToCurrentZone ) if( !s_AddCutoutToCurrentZone )
s_CurrentZone = NULL; // the zone is used only once s_CurrentZone = NULL; // the zone is used only once
} }
...@@ -546,17 +563,17 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC ) ...@@ -546,17 +563,17 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
if( zone->GetNumCorners() == 0 ) if( zone->GetNumCorners() == 0 )
{ {
zone->m_Flags = IS_NEW; zone->m_Flags = IS_NEW;
zone->SetLayer( s_Zone_Layer ); zone->SetLayer( g_CurrentZone_Layer );
zone->SetNet( s_NetcodeSelection ); zone->SetNet( s_NetcodeSelection );
zone->m_TimeStamp = GetTimeStamp(); zone->m_TimeStamp = GetTimeStamp();
zone->m_PadOption = s_Zone_Pad_Options; zone->m_PadOption = s_Zone_Pad_Options;
zone->m_ZoneClearance = g_DesignSettings.m_ZoneClearence; zone->m_ZoneClearance = g_DesignSettings.m_ZoneClearence;
zone->m_GridFillValue = g_GridRoutingSize; zone->m_GridFillValue = g_GridRoutingSize;
zone->m_Poly->Start( s_Zone_Layer, zone->m_Poly->Start( g_CurrentZone_Layer,
GetScreen()->m_Curseur.x, GetScreen()->m_Curseur.y, GetScreen()->m_Curseur.x, GetScreen()->m_Curseur.y,
s_Zone_Hatching ); g_Zone_Hatching );
zone->AppendCorner( GetScreen()->m_Curseur ); zone->AppendCorner( GetScreen()->m_Curseur );
if( Drc_On && m_drc->Drc( zone, 0 ) == BAD_DRC ) if( Drc_On && (m_drc->Drc( zone, 0 ) == BAD_DRC) && zone->IsOnCopperLayer() )
{ {
zone->m_Flags = 0; zone->m_Flags = 0;
zone->RemoveAllContours(); zone->RemoveAllContours();
...@@ -566,7 +583,7 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC ) ...@@ -566,7 +583,7 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
// WinEDA_PcbFrame::SetCurItem() calls Display_Infos(). // WinEDA_PcbFrame::SetCurItem() calls Display_Infos().
GetScreen()->SetCurItem( NULL ); GetScreen()->SetCurItem( NULL );
DisplayError( this, DisplayError( this,
_( "DRC error: this start point is inside or too close an other area" ) ); _( "DRC error: this start point is inside or too close an other area" ) );
return 0; return 0;
} }
...@@ -582,7 +599,8 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC ) ...@@ -582,7 +599,8 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
/* edge in progress : the current corner coordinate was set by Show_New_Edge_While_Move_Mouse */ /* edge in progress : the current corner coordinate was set by Show_New_Edge_While_Move_Mouse */
if( zone->GetCornerPosition( ii - 1 ) != zone->GetCornerPosition( ii ) ) if( zone->GetCornerPosition( ii - 1 ) != zone->GetCornerPosition( ii ) )
{ {
if( Drc_On && m_drc->Drc( zone, ii - 1 ) == OK_DRC ) // Ok, we can add a new corner if( (Drc_On && m_drc->Drc( zone, ii - 1 ) == OK_DRC)
|| !zone->IsOnCopperLayer() ) // Ok, we can add a new corner
{ {
zone->AppendCorner( GetScreen()->m_Curseur ); zone->AppendCorner( GetScreen()->m_Curseur );
SetCurItem( zone ); // calls Display_Infos(). SetCurItem( zone ); // calls Display_Infos().
...@@ -620,14 +638,17 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC ) ...@@ -620,14 +638,17 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC )
// Validate the current edge: // Validate the current edge:
int icorner = zone->GetNumCorners() - 1; int icorner = zone->GetNumCorners() - 1;
if( Drc_On && m_drc->Drc( zone, icorner - 1 ) == BAD_DRC ) // we can't validate last edge if( zone->IsOnCopperLayer() )
return false;
if( Drc_On && m_drc->Drc( zone, icorner ) == BAD_DRC ) // we can't validate the closing edge
{ {
DisplayError( this, if( Drc_On && m_drc->Drc( zone, icorner - 1 ) == BAD_DRC ) // we can't validate last edge
_( "DRC error: closing this area creates a drc error with an other area" ) ); return false;
DrawPanel->MouseToCursorSchema(); if( Drc_On && m_drc->Drc( zone, icorner ) == BAD_DRC ) // we can't validate the closing edge
return false; {
DisplayError( this,
_( "DRC error: closing this area creates a drc error with an other area" ) );
DrawPanel->MouseToCursorSchema();
return false;
}
} }
zone->m_Flags = 0; zone->m_Flags = 0;
...@@ -640,6 +661,7 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC ) ...@@ -640,6 +661,7 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC )
// Undraw old drawings, because they can have important changes // Undraw old drawings, because they can have important changes
int layer = zone->GetLayer(); int layer = zone->GetLayer();
m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_XOR, layer ); m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_XOR, layer );
m_Pcb->RedrawFilledAreas( DrawPanel, DC, GR_XOR, layer );
/* Put edges in list */ /* Put edges in list */
if( s_CurrentZone == NULL ) if( s_CurrentZone == NULL )
...@@ -670,6 +692,7 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC ) ...@@ -670,6 +692,7 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC )
// Redraw the real edge zone : // Redraw the real edge zone :
m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_OR, layer ); m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_OR, layer );
m_Pcb->RedrawFilledAreas( DrawPanel, DC, GR_OR, layer );
int ii = m_Pcb->GetAreaIndex( zone ); // test if zone_container exists int ii = m_Pcb->GetAreaIndex( zone ); // test if zone_container exists
if( ii < 0 ) if( ii < 0 )
...@@ -707,12 +730,12 @@ static void Show_New_Edge_While_Move_Mouse( WinEDA_DrawPanel* panel, wxDC* DC, b ...@@ -707,12 +730,12 @@ static void Show_New_Edge_While_Move_Mouse( WinEDA_DrawPanel* panel, wxDC* DC, b
} }
/* Redraw the curent edge in its new position */ /* Redraw the curent edge in its new position */
if( Zone_45_Only ) if( g_Zone_45_Only )
{ {
// calculate the new position as allowed // calculate the new position as allowed
wxPoint StartPoint = zone->GetCornerPosition( icorner - 1 ); wxPoint StartPoint = zone->GetCornerPosition( icorner - 1 );
Calcule_Coord_Extremite_45( StartPoint.x, StartPoint.y, Calcule_Coord_Extremite_45( StartPoint.x, StartPoint.y,
&c_pos.x, &c_pos.y ); &c_pos.x, &c_pos.y );
} }
zone->SetCornerPosition( icorner, c_pos ); zone->SetCornerPosition( icorner, c_pos );
...@@ -730,11 +753,18 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container ...@@ -730,11 +753,18 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container
* Edit params (layer, clearance, ...) for a zone outline * Edit params (layer, clearance, ...) for a zone outline
*/ */
{ {
int diag;
DrawPanel->m_IgnoreMouseEvents = TRUE; DrawPanel->m_IgnoreMouseEvents = TRUE;
WinEDA_ZoneFrame* frame = new WinEDA_ZoneFrame( this, zone_container ); if( zone_container->GetLayer() < FIRST_NO_COPPER_LAYER )
{ // edit a zone on a copper layer
WinEDA_ZoneFrame* frame = new WinEDA_ZoneFrame( this );
diag = frame->ShowModal();
frame->Destroy();
}
else // edit a zone on a non copper layer (technical layer)
diag = InstallDialogNonCopperZonesEditor( this, zone_container );
int diag = frame->ShowModal();
frame->Destroy();
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
DrawPanel->m_IgnoreMouseEvents = FALSE; DrawPanel->m_IgnoreMouseEvents = FALSE;
...@@ -748,12 +778,12 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container ...@@ -748,12 +778,12 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container
edge_zone->Draw( DrawPanel, DC, GR_XOR ); edge_zone->Draw( DrawPanel, DC, GR_XOR );
} }
zone_container->SetLayer( s_Zone_Layer ); zone_container->SetLayer( g_CurrentZone_Layer );
zone_container->SetNet( s_NetcodeSelection ); zone_container->SetNet( s_NetcodeSelection );
EQUIPOT* net = m_Pcb->FindNet( s_NetcodeSelection ); EQUIPOT* net = m_Pcb->FindNet( s_NetcodeSelection );
if( net ) if( net )
zone_container->m_Netname = net->m_Netname; zone_container->m_Netname = net->m_Netname;
zone_container->m_Poly->SetHatch( s_Zone_Hatching ); zone_container->m_Poly->SetHatch( g_Zone_Hatching );
zone_container->m_PadOption = s_Zone_Pad_Options; zone_container->m_PadOption = s_Zone_Pad_Options;
zone_container->m_ZoneClearance = g_DesignSettings.m_ZoneClearence; zone_container->m_ZoneClearance = g_DesignSettings.m_ZoneClearence;
zone_container->m_GridFillValue = g_GridRoutingSize; zone_container->m_GridFillValue = g_GridRoutingSize;
...@@ -782,7 +812,7 @@ void WinEDA_PcbFrame::Delete_Zone_Contour( wxDC* DC, ZONE_CONTAINER* zone_contai ...@@ -782,7 +812,7 @@ void WinEDA_PcbFrame::Delete_Zone_Contour( wxDC* DC, ZONE_CONTAINER* zone_contai
* otherwise, the hole is deleted * otherwise, the hole is deleted
*/ */
{ {
int ncont = zone_container->m_Poly->GetContour( zone_container->m_CornerSelection ); int ncont = zone_container->m_Poly->GetContour( zone_container->m_CornerSelection );
EDA_Rect dirty = zone_container->GetBoundingBox(); EDA_Rect dirty = zone_container->GetBoundingBox();
...@@ -860,7 +890,7 @@ int WinEDA_PcbFrame::Fill_Zone( wxDC* DC, ZONE_CONTAINER* zone_container, bool v ...@@ -860,7 +890,7 @@ int WinEDA_PcbFrame::Fill_Zone( wxDC* DC, ZONE_CONTAINER* zone_container, bool v
wxBusyCursor dummy; // Shows an hourglass cursor (removed by its destructor) wxBusyCursor dummy; // Shows an hourglass cursor (removed by its destructor)
zone_container->m_GridFillValue = g_GridRoutingSize; zone_container->m_GridFillValue = g_GridRoutingSize;
int error_level = zone_container->Fill_Zone( this, DC, verbose ); int error_level = zone_container->Fill_Zone( this, DC, verbose );
GetScreen()->SetModify(); GetScreen()->SetModify();
......
#include "fctsys.h"
#include "gr_basic.h"
#include "common.h"
#include "pcbnew.h"
#include "zones.h"
#include "dialog_non_copper_zones_properties.h"
/* Local functions */
/* Local variables */
/* Class DialogNonCopperZonesEditor
* Dialog editor for non copper zones properties
* Derived from DialogNonCopperZonesProperties, created by wxFormBuilder
*/
class DialogNonCopperZonesEditor : public DialogNonCopperZonesProperties
{
private:
WinEDA_PcbFrame* m_Parent;
ZONE_CONTAINER* m_Zone_Container;
private:
void OnOkClick( wxCommandEvent& event );
void OnCancelClick( wxCommandEvent& event );
void InitDialog( wxInitDialogEvent& event );
public:
DialogNonCopperZonesEditor( WinEDA_PcbFrame* parent,
ZONE_CONTAINER* zone_container );
~DialogNonCopperZonesEditor();
};
/*******************************************************************************************/
DialogNonCopperZonesEditor::DialogNonCopperZonesEditor( WinEDA_PcbFrame* parent,
ZONE_CONTAINER* zone_container ) :
DialogNonCopperZonesProperties( parent )
/*******************************************************************************************/
{
m_Parent = parent;
m_Zone_Container = zone_container;
SetFont( *g_DialogFont );
}
/********************************************************/
DialogNonCopperZonesEditor::~DialogNonCopperZonesEditor()
/********************************************************/
{
}
/* install function for DialogNonCopperZonesEditor dialog frame :*/
bool InstallDialogNonCopperZonesEditor(WinEDA_PcbFrame* aParent, ZONE_CONTAINER* aZone)
{
DialogNonCopperZonesEditor* frame = new DialogNonCopperZonesEditor( aParent, aZone );
bool diag = frame->ShowModal();
frame->Destroy();
return diag;
}
/********************************************************************/
void DialogNonCopperZonesEditor::InitDialog( wxInitDialogEvent& event )
/********************************************************************/
{
SetFocus();
SetReturnCode( ZONE_ABORT ); // Will be changed on buttons click
if( g_Zone_45_Only )
m_OrientEdgesOpt->SetSelection( 1 );
switch( g_Zone_Hatching )
{
case CPolyLine::NO_HATCH:
m_OutlineAppearanceCtrl->SetSelection( 0 );
break;
case CPolyLine::DIAGONAL_EDGE:
m_OutlineAppearanceCtrl->SetSelection( 1 );
break;
case CPolyLine::DIAGONAL_FULL:
m_OutlineAppearanceCtrl->SetSelection( 2 );
break;
}
for( int layer_number = FIRST_NO_COPPER_LAYER, ii = 0;
layer_number < LAST_NO_COPPER_LAYER - 1;
layer_number++, ii++ )
{
wxString msg;
msg = m_Parent->m_Pcb->GetLayerName( layer_number ).Trim();
m_LayerSelectionCtrl->InsertItems( 1, &msg, ii );
if( m_Zone_Container )
{
if( m_Zone_Container->GetLayer() == layer_number )
m_LayerSelectionCtrl->SetSelection( ii );
}
else
{
if( ( (PCB_SCREEN*) ( m_Parent->GetScreen() ) )->m_Active_Layer == layer_number )
m_LayerSelectionCtrl->SetSelection( ii );
}
}
/* the size of m_LayerSelectionCtrl has changed, so we must recall SetSizeHints() */
GetSizer()->SetSizeHints(this);
}
/******************************************************************/
void DialogNonCopperZonesEditor::OnOkClick( wxCommandEvent& event )
/******************************************************************/
{
switch( m_OutlineAppearanceCtrl->GetSelection() )
{
case 0:
g_Zone_Hatching = CPolyLine::NO_HATCH;
break;
case 1:
g_Zone_Hatching = CPolyLine::DIAGONAL_EDGE;
break;
case 2:
g_Zone_Hatching = CPolyLine::DIAGONAL_FULL;
break;
}
if( m_Parent->m_Parent->m_EDA_Config )
{
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_OUTLINES_HATCH_OPTION_KEY,
(long) g_Zone_Hatching );
}
if( m_OrientEdgesOpt->GetSelection() == 0 )
g_Zone_45_Only = FALSE;
else
g_Zone_45_Only = TRUE;
/* Get the layer selection for this zone */
int ii = m_LayerSelectionCtrl->GetSelection();
if( ii < 0 )
{
DisplayError( this, _( "Error : you must choose a layer" ) );
return;
}
g_CurrentZone_Layer = ii + FIRST_NO_COPPER_LAYER;
EndModal( ZONE_OK );
}
/**********************************************************************/
void DialogNonCopperZonesEditor::OnCancelClick( wxCommandEvent& event )
/**********************************************************************/
{
EndModal( ZONE_ABORT );
}
/***************************************************/
int ZONE_CONTAINER::BuildFilledPolysListData( void )
/***************************************************/
/** function BuildFilledPolysListData
* Build m_FilledPolysList data from real outlines (m_Poly)
* in order to have drawable (and plottable) filled polygons
* drawable filled polygons are polygons without hole
* @return number of polygons
* Currently useable only for non copper zones
*/
{
/* Currently only for non copper zones */
if ( IsOnCopperLayer() )
return 0;
m_FilledPolysList.clear();
/* convert outlines + holes to outlines without holes (adding extra segments if necessary)
* m_Poly data is expected normalized, i.e. NormalizeAreaOutlines was used after building this zone
*/
m_Poly->MakeKboolPoly( -1, -1, NULL, true );
int count = 0;
while( m_Poly->GetKboolEngine()->StartPolygonGet() )
{
CPolyPt corner(0,0,false);
while( m_Poly->GetKboolEngine()->PolygonHasMorePoints() )
{
corner.x = (int)m_Poly->GetKboolEngine()->GetPolygonXPoint();
corner.y = (int)m_Poly->GetKboolEngine()->GetPolygonYPoint();
corner.end_contour = false;
m_FilledPolysList.push_back(corner);
count ++;
}
corner.end_contour = true;
m_FilledPolysList.pop_back();
m_FilledPolysList.push_back(corner);
m_Poly->GetKboolEngine()->EndPolygonGet();
}
m_Poly->FreeKboolEngine();
return count;
}
...@@ -328,6 +328,7 @@ int BOARD::AreaPolygonModified( ZONE_CONTAINER* modified_area, ...@@ -328,6 +328,7 @@ int BOARD::AreaPolygonModified( ZONE_CONTAINER* modified_area,
return test; return test;
// now see if we need to clip against other areas // now see if we need to clip against other areas
int layer = modified_area->GetLayer();
bool bCheckAllAreas = false; bool bCheckAllAreas = false;
if( test == 1 ) if( test == 1 )
bCheckAllAreas = true; bCheckAllAreas = true;
...@@ -336,6 +337,15 @@ int BOARD::AreaPolygonModified( ZONE_CONTAINER* modified_area, ...@@ -336,6 +337,15 @@ int BOARD::AreaPolygonModified( ZONE_CONTAINER* modified_area,
if( bCheckAllAreas ) if( bCheckAllAreas )
CombineAllAreasInNet( modified_area->GetNet(), bMessageBoxInt, true ); CombineAllAreasInNet( modified_area->GetNet(), bMessageBoxInt, true );
if ( layer >= FIRST_NO_COPPER_LAYER ) // Refill non copper zones on this layer
{
if( m_ZoneDescriptorList.size() > 0 )
{
for( unsigned ia = 0; ia < m_ZoneDescriptorList.size(); ia++ )
if( m_ZoneDescriptorList[ia]->GetLayer() == layer )
m_ZoneDescriptorList[ia]->BuildFilledPolysListData( );
}
}
return test; return test;
} }
...@@ -878,6 +888,9 @@ int BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines( ZONE_CONTAINER* aArea_To_E ...@@ -878,6 +888,9 @@ int BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines( ZONE_CONTAINER* aArea_To_E
for( int ia = 0; ia < GetAreaCount(); ia++ ) for( int ia = 0; ia < GetAreaCount(); ia++ )
{ {
ZONE_CONTAINER* Area_Ref = GetArea( ia ); ZONE_CONTAINER* Area_Ref = GetArea( ia );
if ( ! Area_Ref->IsOnCopperLayer() )
continue;
if( aArea_To_Examine && (aArea_To_Examine != Area_Ref) ) if( aArea_To_Examine && (aArea_To_Examine != Area_Ref) )
continue; continue;
for( int ia2 = 0; ia2 < GetAreaCount(); ia2++ ) for( int ia2 = 0; ia2 < GetAreaCount(); ia2++ )
...@@ -1026,6 +1039,9 @@ int BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines( ZONE_CONTAINER* aArea_To_E ...@@ -1026,6 +1039,9 @@ int BOARD::Test_Drc_Areas_Outlines_To_Areas_Outlines( ZONE_CONTAINER* aArea_To_E
bool DRC::doEdgeZoneDrc( ZONE_CONTAINER* aArea, int aCornerIndex ) bool DRC::doEdgeZoneDrc( ZONE_CONTAINER* aArea, int aCornerIndex )
{ {
if ( ! aArea->IsOnCopperLayer() ) // Cannot have a Drc error if not on copper layer
return true;
wxString str; wxString str;
wxPoint start = aArea->GetCornerPosition( aCornerIndex ); wxPoint start = aArea->GetCornerPosition( aCornerIndex );
......
...@@ -250,9 +250,14 @@ int CPolyLine::AddPolygonsToBoolEng( Bool_Engine* aBooleng, ...@@ -250,9 +250,14 @@ int CPolyLine::AddPolygonsToBoolEng( Bool_Engine* aBooleng,
* @param aEnd_contour: ending contour number (-1 = all after aStart_contour) * @param aEnd_contour: ending contour number (-1 = all after aStart_contour)
* combining intersecting contours if possible * combining intersecting contours if possible
* @param arc_array : return corners computed from arcs approximations in arc_array * @param arc_array : return corners computed from arcs approximations in arc_array
* @param aConvertHoles = mode for holes when a boolean operation is made
* true: holes are linked into outer contours by double overlapping segments
* false: holes are not linked: in this mode contours are added clockwise
* and polygons added counter clockwise are holes (default)
* @return error: 0 if Ok, 1 if error * @return error: 0 if Ok, 1 if error
*/ */
int CPolyLine::MakeKboolPoly( int aStart_contour, int aEnd_contour, std::vector<CArc> * arc_array ) int CPolyLine::MakeKboolPoly( int aStart_contour, int aEnd_contour, std::vector<CArc> * arc_array,
bool aConvertHoles )
{ {
if( m_Kbool_Poly_Engine ) if( m_Kbool_Poly_Engine )
{ {
...@@ -493,7 +498,7 @@ int CPolyLine::MakeKboolPoly( int aStart_contour, int aEnd_contour, std::vector< ...@@ -493,7 +498,7 @@ int CPolyLine::MakeKboolPoly( int aStart_contour, int aEnd_contour, std::vector<
booleng->Do_Operation( BOOL_OR ); booleng->Do_Operation( BOOL_OR );
} }
// now copy result to m_gpc_poly // now use result as new polygon (delete the old one if exists)
if( m_Kbool_Poly_Engine ) if( m_Kbool_Poly_Engine )
delete m_Kbool_Poly_Engine; delete m_Kbool_Poly_Engine;
m_Kbool_Poly_Engine = booleng; m_Kbool_Poly_Engine = booleng;
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
* @param aConvertHoles = mode for holes when a boolean operation is made * @param aConvertHoles = mode for holes when a boolean operation is made
* true: holes are linked into outer contours by double overlapping segments * true: holes are linked into outer contours by double overlapping segments
* false: holes are not linked: in this mode contours are added clockwise * false: holes are not linked: in this mode contours are added clockwise
* and polygons added counter clockwise are holes * and polygons added counter clockwise are holes (default)
*/ */
void ArmBoolEng( Bool_Engine* aBooleng, bool aConvertHoles = false ); void ArmBoolEng( Bool_Engine* aBooleng, bool aConvertHoles = false );
...@@ -199,11 +199,16 @@ public: ...@@ -199,11 +199,16 @@ public:
* @param aEnd_contour: ending contour number (-1 = all after aStart_contour) * @param aEnd_contour: ending contour number (-1 = all after aStart_contour)
* combining intersecting contours if possible * combining intersecting contours if possible
* @param arc_array : return data on arcs in arc_array * @param arc_array : return data on arcs in arc_array
* @param aConvertHoles = mode for holes when a boolean operation is made
* true: holes are linked into outer contours by double overlapping segments
* false: holes are not linked: in this mode contours are added clockwise
* and polygons added counter clockwise are holes (default)
* @return error: 0 if Ok, 1 if error * @return error: 0 if Ok, 1 if error
*/ */
int MakeKboolPoly( int aStart_contour = -1, int MakeKboolPoly( int aStart_contour = -1,
int aEnd_contour = -1, int aEnd_contour = -1,
std::vector<CArc> * arc_array = NULL ); std::vector<CArc> * arc_array = NULL,
bool aConvertHoles = false);
/** Function NormalizeWithKbool /** Function NormalizeWithKbool
* Use the Kbool Library to clip contours: if outlines are crossing, the self-crossing polygon * Use the Kbool Library to clip contours: if outlines are crossing, the self-crossing polygon
...@@ -217,6 +222,16 @@ public: ...@@ -217,6 +222,16 @@ public:
* @return number of external contours, or -1 if error * @return number of external contours, or -1 if error
*/ */
int NormalizeWithKbool( std::vector<CPolyLine*> * aExtraPolyList, bool bRetainArcs ); int NormalizeWithKbool( std::vector<CPolyLine*> * aExtraPolyList, bool bRetainArcs );
/** function GetKboolEngine
* @return the current used Kbool Engine (after normalization using kbool)
*/
Bool_Engine* GetKboolEngine( ) { return m_Kbool_Poly_Engine; }
/** function FreeKboolEngine
* delete the current used Kbool Engine (free memory after normalization using kbool)
*/
void FreeKboolEngine( ) { delete m_Kbool_Poly_Engine; m_Kbool_Poly_Engine = NULL; }
private: private:
int m_layer; // layer to draw on int m_layer; // layer to draw on
......
update=19/9/2008-05:53:18 update=23/9/2008-19:07:03
version=1 version=1
last_client=eeschema last_client=eeschema
[general] [general]
...@@ -140,5 +140,6 @@ LibName24=display ...@@ -140,5 +140,6 @@ LibName24=display
LibName25=cypress LibName25=cypress
LibName26=siliconi LibName26=siliconi
LibName27=opto LibName27=opto
LibName28=contrib LibName28=atmel
LibName29=valves LibName29=contrib
LibName30=valves
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment