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
Please add newer entries at the top, list the date and your name with
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>
================================================================================
+pcbnew:
......
......@@ -727,42 +727,41 @@ wxPoint LibDrawPin::ReturnPinEndPoint()
int LibDrawPin::ReturnPinDrawOrient( int TransMat[2][2] )
/********************************************************/
/* Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT),
* according to its orientation,
* AND the matrix transform (rot, mirror) TransMat
/** Function ReturnPinDrawOrient
* Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT),
* according to its orientation and the matrix transform (rot, mirror) TransMat
* @param TransMat = transform matrix
*/
{
int orient;
int x1 = 0, y1 = 0;
int t1, t2;
wxPoint end; // position of a end pin starting at 0,0 according to its orientation, lenght = 1
switch( m_Orient )
{
case PIN_UP:
y1 = 1; break;
end.y = 1; break;
case PIN_DOWN:
y1 = -1; break;
end.y = -1; break;
case PIN_LEFT:
x1 = -1; break;
end.x = -1; break;
case PIN_RIGHT:
x1 = 1; break;
end.x = 1; break;
}
t1 = TransMat[0][0] * x1 + TransMat[0][1] * y1;
t2 = TransMat[1][0] * x1 + TransMat[1][1] * y1;
end = TransformCoordinate( TransMat, end ); // = pos of end point, accordint to the component orientation
orient = PIN_UP;
if( t1 == 0 )
if( end.x == 0 )
{
if( t2 > 0 )
if( end.y > 0 )
orient = PIN_DOWN;
}
else
{
orient = PIN_RIGHT;
if( t1 < 0 )
if( end.x < 0 )
orient = PIN_LEFT;
}
......
No preview for this file type
......@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-09-08 19:19+0100\n"
"PO-Revision-Date: 2008-09-08 19:21+0100\n"
"POT-Creation-Date: 2008-09-23 21:02+0100\n"
"PO-Revision-Date: 2008-09-23 21:02+0100\n"
"Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\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
msgid "Clean 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
msgid "Selection Clarification"
msgstr "Clarification de la Sélection"
......@@ -697,8 +724,8 @@ msgid "Dimension properties"
msgstr "Propriétés des Cotes"
#: pcbnew/cotation.cpp:113
#: pcbnew/dialog_edit_module.cpp:267
#: pcbnew/dialog_edit_module.cpp:313
#: pcbnew/dialog_edit_module.cpp:270
#: pcbnew/dialog_edit_module.cpp:316
msgid "Normal"
msgstr "Normal"
......@@ -985,83 +1012,83 @@ msgstr "Propriétés"
msgid "3D settings"
msgstr "3D Caract"
#: pcbnew/dialog_edit_module.cpp:171
#: pcbnew/dialog_edit_module.cpp:184
msgid "X"
msgstr "X"
#: pcbnew/dialog_edit_module.cpp:172
#: pcbnew/dialog_edit_module.cpp:185
msgid "Y"
msgstr "Y"
#: pcbnew/dialog_edit_module.cpp:184
#: pcbnew/dialog_edit_module.cpp:187
msgid "Change module(s)"
msgstr "Change module(s)"
#: pcbnew/dialog_edit_module.cpp:188
#: pcbnew/dialog_edit_module.cpp:191
msgid "Edit Module"
msgstr "Edit Module"
#: pcbnew/dialog_edit_module.cpp:192
#: pcbnew/dialog_edit_module.cpp:195
msgid "Position"
msgstr "Position"
#: pcbnew/dialog_edit_module.cpp:217
#: pcbnew/dialog_edit_module.cpp:220
msgid "Doc"
msgstr "Doc"
#: pcbnew/dialog_edit_module.cpp:224
#: pcbnew/dialog_edit_module.cpp:227
msgid "Keywords"
msgstr "Mots Cles"
#: pcbnew/dialog_edit_module.cpp:231
#: pcbnew/dialog_edit_module.cpp:234
msgid "Fields:"
msgstr "Champs:"
#: pcbnew/dialog_edit_module.cpp:241
#: pcbnew/dialog_edit_module.cpp:244
msgid "Add Field"
msgstr "Ajouter Champ"
#: pcbnew/dialog_edit_module.cpp:246
#: pcbnew/dialog_edit_module.cpp:249
msgid "Edit Field"
msgstr "Editer Champ"
#: pcbnew/dialog_edit_module.cpp:251
#: pcbnew/dialog_edit_module.cpp:254
msgid "Delete Field"
msgstr "Supprimer Champ"
#: pcbnew/dialog_edit_module.cpp:258
#: pcbnew/dialog_edit_module.cpp:261
msgid "Component"
msgstr "Composant"
#: pcbnew/dialog_edit_module.cpp:258
#: pcbnew/dialog_edit_module.cpp:261
msgid "Copper"
msgstr "Cuivre"
#: pcbnew/dialog_edit_module.cpp:267
#: pcbnew/dialog_edit_module.cpp:270
msgid "User"
msgstr "User"
#: pcbnew/dialog_edit_module.cpp:303
#: pcbnew/dialog_edit_module.cpp:306
msgid "Orient (0.1 deg)"
msgstr "Orient (0.1 deg)"
#: pcbnew/dialog_edit_module.cpp:313
#: pcbnew/dialog_edit_module.cpp:316
msgid "Normal+Insert"
msgstr "Normal+Insert"
#: pcbnew/dialog_edit_module.cpp:313
#: pcbnew/dialog_edit_module.cpp:316
msgid "Virtual"
msgstr "Virtuel"
#: pcbnew/dialog_edit_module.cpp:314
#: pcbnew/dialog_edit_module.cpp:317
msgid "Attributes"
msgstr "Attributs"
#: pcbnew/dialog_edit_module.cpp:317
#: pcbnew/dialog_edit_module.cpp:320
msgid "Use this attribute for most non smd components"
msgstr "Utiliser cet attribut pour la plupart des composants"
#: pcbnew/dialog_edit_module.cpp:319
#: pcbnew/dialog_edit_module.cpp:322
msgid ""
"Use this attribute for smd components.\n"
"Only components with this option are put in the footprint position list file"
......@@ -1069,75 +1096,75 @@ msgstr ""
"Uiliser cet attribut pour les composants CMS.\n"
"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)"
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"
msgstr "Libre"
#: pcbnew/dialog_edit_module.cpp:345
#: pcbnew/dialog_edit_module.cpp:348
msgid "Locked"
msgstr "Verrouillé"
#: pcbnew/dialog_edit_module.cpp:347
#: pcbnew/dialog_edit_module.cpp:350
msgid "Move and Auto Place"
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"
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"
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"
msgstr "Rot 90"
#: pcbnew/dialog_edit_module.cpp:365
#: pcbnew/dialog_edit_module.cpp:368
msgid "Rot 180"
msgstr "Rot 180"
#: pcbnew/dialog_edit_module.cpp:402
#: pcbnew/dialog_edit_module.cpp:405
msgid "3D Shape Name"
msgstr "3D forme"
#: pcbnew/dialog_edit_module.cpp:419
#: pcbnew/dialog_edit_module.cpp:422
msgid "Browse"
msgstr "Examiner"
#: pcbnew/dialog_edit_module.cpp:423
#: pcbnew/dialog_edit_module.cpp:426
msgid "Add 3D Shape"
msgstr "Ajout Forme 3D"
#: pcbnew/dialog_edit_module.cpp:429
#: pcbnew/dialog_edit_module.cpp:432
msgid "Remove 3D Shape"
msgstr "Suppr. Forme 3D:"
#: pcbnew/dialog_edit_module.cpp:435
#: pcbnew/dialog_edit_module.cpp:438
msgid "Shape Scale:"
msgstr "Echelle de la forme:"
#: pcbnew/dialog_edit_module.cpp:442
#: pcbnew/dialog_edit_module.cpp:445
msgid "Shape Offset:"
msgstr "Offset forme:"
#: pcbnew/dialog_edit_module.cpp:451
#: pcbnew/dialog_edit_module.cpp:454
msgid "Shape Rotation:"
msgstr "Rot de la forme"
#: pcbnew/dialog_edit_module.cpp:491
#: pcbnew/dialog_edit_module.cpp:494
msgid "3D Shape:"
msgstr "Forme 3D:"
#: pcbnew/dialog_edit_module.cpp:802
#: pcbnew/dialog_edit_module.cpp:810
msgid "Reference or Value cannot be deleted"
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
msgid "Delete [%s]"
msgstr "Supprimer [%s]"
......@@ -1805,17 +1832,21 @@ msgstr "Le caractère de délimitation de ligne doit être un seul caractère '
msgid "Un-terminated delimited string"
msgstr "Ligne délimitée non terminée"
#: pcbnew/edgemod.cpp:204
msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure"
msgstr "L'élément graphique sera sur une couche cuivre. C'est très dangereux. Etes vous sûr"
#: pcbnew/modules.cpp:81
msgid "Footprint name:"
msgstr "Nom Module: "
#: pcbnew/edgemod.cpp:246
msgid "New Width (1/10000\"):"
msgstr "Novelle largeur (1/10000\"):"
#: pcbnew/modules.cpp:81
msgid "Search Footprint"
msgstr "Cherche Module"
#: pcbnew/edgemod.cpp:253
msgid "Incorrect number, no change"
msgstr "Nombre incorrect, pas de changement"
#: pcbnew/modules.cpp:305
msgid "Delete Module"
msgstr "Supprimer Module"
#: pcbnew/modules.cpp:306
msgid "Value "
msgstr "Valeur "
#: pcbnew/edit.cpp:179
#: pcbnew/editmod.cpp:45
......@@ -1956,6 +1987,10 @@ msgid "GenCAD file:"
msgstr "Fichier GenCAD:"
#: 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 "
msgstr "Impossible de créer "
......@@ -1964,7 +1999,6 @@ msgid "Recovery file "
msgstr "Fichier de secours "
#: pcbnew/files.cpp:56
#: pcbnew/librairi.cpp:256
msgid " not found"
msgstr " non trouvé"
......@@ -1981,7 +2015,6 @@ msgid "Load board files:"
msgstr "Charger Fichiers C.I.:"
#: pcbnew/files.cpp:188
#: pcbnew/librairi.cpp:77
#, c-format
msgid "File <%s> not found"
msgstr " fichier %s non trouvé"
......@@ -2113,6 +2146,18 @@ msgstr "Fichier placement coté cuivre:"
msgid "Module count"
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
msgid "Pads Global Edit"
msgstr "Pads: Edition globale"
......@@ -2206,123 +2251,97 @@ msgstr "Effacer Textes Pcb"
msgid "Error: Unexpected end of file !"
msgstr "Erreur: Fin de fichier inattendue !"
#: pcbnew/librairi.cpp:61
msgid "Import Module:"
msgstr "Importer Module:"
#: 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/muonde.cpp:149
msgid "Gap"
msgstr "Gap"
#: pcbnew/librairi.cpp:224
#, c-format
msgid "Module exported in file <%s>"
msgstr "Module exporté en fichier <%s>"
#: pcbnew/muonde.cpp:154
msgid "Stub"
msgstr "Stub"
#: pcbnew/librairi.cpp:246
#, c-format
msgid "Ok to delete module %s in library %s"
msgstr "Ok pour effacer module %sein librairie %s"
#: pcbnew/muonde.cpp:160
msgid "Arc Stub"
msgstr "Arc Stub"
#: pcbnew/librairi.cpp:256
msgid "Library "
msgstr "Librairie "
#: pcbnew/muonde.cpp:175
msgid " (mm):"
msgstr " (mm):"
#: pcbnew/librairi.cpp:267
msgid "Not a Library file"
msgstr "N'est pas un fichier Librairie"
#: pcbnew/muonde.cpp:176
#: pcbnew/muonde.cpp:183
#: pcbnew/muonde.cpp:199
msgid "Create microwave module"
msgstr "Créer Module MicroOnde"
#: pcbnew/librairi.cpp:296
#, c-format
msgid "Module [%s] not found"
msgstr "Module [%s] non trouvé"
#: pcbnew/muonde.cpp:182
msgid " (inch):"
msgstr " (pouce):"
#: pcbnew/librairi.cpp:390
#, c-format
msgid "Component %s deleted in library %s"
msgstr "Composant %s supprimé en librairie %s"
#: pcbnew/muonde.cpp:189
#: pcbnew/muonde.cpp:202
msgid "Incorrect number, abort"
msgstr "Nombre incorrect, arret"
#: pcbnew/librairi.cpp:416
msgid " No modules to archive!"
msgstr "Pas de Modules a archiver"
#: pcbnew/muonde.cpp:198
msgid "Angle (0.1deg):"
msgstr "Angle (0.1deg):"
#: pcbnew/librairi.cpp:423
msgid "Library"
msgstr "Librairie"
#: pcbnew/muonde.cpp:330
msgid "Complex shape"
msgstr "Formr complexe"
#: pcbnew/librairi.cpp:516
#, c-format
msgid "Library %s not found"
msgstr "Librairie %s non trouvée"
#: pcbnew/muonde.cpp:356
msgid "Read Shape Descr File..."
msgstr "Lire fichier de description de forme..."
#: pcbnew/librairi.cpp:527
msgid "Name:"
msgstr "Nom:"
#: pcbnew/muonde.cpp:360
msgid "Symmetrical"
msgstr "Symétrique"
#: pcbnew/librairi.cpp:537
#, c-format
msgid "Unable to open %s"
msgstr "Ne peut pas ouvrir \"%s\""
#: pcbnew/muonde.cpp:360
msgid "Mirrored"
msgstr "Miroir"
#: pcbnew/librairi.cpp:547
#, c-format
msgid "File %s is not a eeschema library"
msgstr "Fichier %s n'est pas une librairie eeschema"
#: pcbnew/muonde.cpp:362
msgid "Shape Option"
msgstr "Option Forme"
#: pcbnew/librairi.cpp:576
msgid "Module exists Line "
msgstr "Module existe Ligne "
#: pcbnew/muonde.cpp:428
msgid "Read descr shape file"
msgstr "Lire fichier de description de forme"
#: pcbnew/librairi.cpp:695
msgid "Component "
msgstr "Composant"
#: pcbnew/muonde.cpp:444
msgid "File not found"
msgstr "fichier non trouvé"
#: pcbnew/librairi.cpp:696
msgid " added in "
msgstr " ajouté dans "
#: pcbnew/muonde.cpp:548
msgid "Shape has a null size!"
msgstr "La forme a une taille nulle"
#: pcbnew/librairi.cpp:696
msgid " replaced in "
msgstr " remplacé dans "
#: pcbnew/muonde.cpp:553
msgid "Shape has no points!"
msgstr "La forme n'a pas de points"
#: pcbnew/librairi.cpp:723
msgid "Module Reference:"
msgstr "Référence Module"
#: pcbnew/muonde.cpp:679
msgid "No pad for this module"
msgstr "Pas de pad dans ce module"
#: pcbnew/librairi.cpp:775
msgid "Active Lib:"
msgstr "Librairie Active:"
#: pcbnew/muonde.cpp:684
msgid "Only one pad for this module"
msgstr "Seulement un pad dans ce module"
#: pcbnew/librairi.cpp:786
msgid "Module Editor (lib: "
msgstr "Editeur de modules (lib: "
#: pcbnew/muonde.cpp:698
msgid "Gap (mm):"
msgstr "Gap (mm):"
#: pcbnew/librairi.cpp:801
msgid "Library exists "
msgstr "Librairie existante "
#: pcbnew/muonde.cpp:698
#: pcbnew/muonde.cpp:704
msgid "Create Microwave Gap"
msgstr "Créer Gap MicroOnde "
#: pcbnew/librairi.cpp:816
msgid "Create error "
msgstr "Erreur en création "
#: pcbnew/muonde.cpp:704
msgid "Gap (inch):"
msgstr "Gap (inch):"
#: pcbnew/loadcmp.cpp:103
msgid "Module name:"
......@@ -2362,58 +2381,72 @@ msgid "Sizes and Widths"
msgstr "Dims. et Epaiss."
#: pcbnew/menubarmodedit.cpp:41
#: pcbnew/menubarpcb.cpp:229
msgid "Adjust width for texts and drawings"
msgstr "Ajuster dims pour textes et graphiques"
#: pcbnew/menubarmodedit.cpp:45
#: pcbnew/menubarpcb.cpp:233
msgid "Pad Settings"
msgstr "Caract pads"
#: pcbnew/menubarmodedit.cpp:46
#: pcbnew/menubarpcb.cpp:234
msgid "Adjust size,shape,layers... for Pads"
msgstr "Ajuster taille, forme, couches... pour pads"
#: pcbnew/menubarmodedit.cpp:50
#: pcbnew/menubarpcb.cpp:223
msgid "User Grid Size"
msgstr "Dim Grille utilisteur"
#: pcbnew/menubarmodedit.cpp:51
#: pcbnew/menubarpcb.cpp:224
msgid "Adjust User Grid"
msgstr "Ajuster Grille utilisateur"
#: pcbnew/menubarmodedit.cpp:60
#: pcbnew/menubarpcb.cpp:292
msgid "&Contents"
msgstr "&Contenu"
#: pcbnew/menubarmodedit.cpp:60
#: pcbnew/menubarpcb.cpp:292
msgid "Open the pcbnew manual"
msgstr "Ouvrir la documentation de pcbnew"
#: pcbnew/menubarmodedit.cpp:64
#: pcbnew/menubarpcb.cpp:296
msgid "&About"
msgstr "&Infos logiciel"
#: pcbnew/menubarmodedit.cpp:64
#: pcbnew/menubarpcb.cpp:296
msgid "About this application"
msgstr "Au sujet de cette application"
#: pcbnew/menubarmodedit.cpp:72
#: pcbnew/menubarpcb.cpp:304
msgid "3D Display"
msgstr "3D Visu"
#: pcbnew/menubarmodedit.cpp:72
#: pcbnew/menubarpcb.cpp:304
msgid "Show Board in 3D Mode"
msgstr "Visualisation en 3D"
#: pcbnew/menubarmodedit.cpp:76
#: pcbnew/menubarpcb.cpp:310
msgid "&Dimensions"
msgstr "&Dimensions"
#: pcbnew/menubarmodedit.cpp:77
#: pcbnew/menubarpcb.cpp:313
msgid "&3D Display"
msgstr "&3D Visu"
#: pcbnew/menubarmodedit.cpp:78
#: pcbnew/menubarpcb.cpp:314
msgid "&Help"
msgstr "&Aide"
......@@ -2725,42 +2758,6 @@ msgstr "Forme X"
msgid "Target Shape:"
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
msgid "End Tool"
msgstr "Fin Outil"
......@@ -2897,18 +2894,6 @@ msgstr "Ajuste Epaiss"
msgid "Module Editor: module modified!, Continue ?"
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
#, c-format
msgid "Delete Pad (module %s %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"
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
msgid "Add Line"
msgstr "Addition de lignes"
......@@ -3435,6 +3339,43 @@ msgstr "Grille perso dim Y"
msgid "Abort routing?"
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:140
msgid "Expecting"
......@@ -3445,89 +3386,38 @@ msgstr "Attendu"
msgid "Unexpected"
msgstr "Inattendu"
#: pcbnew/specctra.cpp:321
#: pcbnew/specctra.cpp:351
#: pcbnew/specctra.cpp:3524
#: pcbnew/specctra.cpp:3549
#: pcbnew/specctra.cpp:324
#: pcbnew/specctra.cpp:354
#: pcbnew/specctra.cpp:3527
#: pcbnew/specctra.cpp:3552
#, c-format
msgid "Unable to open file \"%s\""
msgstr "Ne peut pas ouvrirle fichier \"%s\""
#: pcbnew/specctra.cpp:3465
#: pcbnew/specctra.cpp:3468
#, c-format
msgid "System file error writing to file \"%s\""
msgstr "Erreur système sur écriture fichier \"%s\""
#: pcbnew/specctra.cpp:3644
#: pcbnew/specctra.cpp:3647
msgid "Error writing to STRINGFORMATTER"
msgstr "Error writing to STRINGFORMATTER"
#: pcbnew/specctra_import.cpp:74
msgid "Merge Specctra Session file:"
msgstr "Fichier Specctra Session à Fusionner:"
#: 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/edgemod.cpp:204
msgid "The graphic item will be on a copper layer.It is very dangerous. Are you sure"
msgstr "L'élément graphique sera sur une couche cuivre. C'est très dangereux. Etes vous sûr"
#: pcbnew/specctra_import.cpp:531
#, 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/edgemod.cpp:246
msgid "New Width (1/10000\"):"
msgstr "Novelle largeur (1/10000\"):"
#: pcbnew/surbrill.cpp:37
msgid "Filter for net names:"
msgstr "Filtre pour nets:"
#: pcbnew/edgemod.cpp:246
msgid "Edge Width"
msgstr "Epaisseur Contour"
#: pcbnew/surbrill.cpp:41
msgid "List Nets"
msgstr "Liste équipots"
#: pcbnew/edgemod.cpp:253
msgid "Incorrect number, no change"
msgstr "Nombre incorrect, pas de changement"
#: pcbnew/swap_layers.cpp:70
msgid "Swap Layers:"
......@@ -3981,66 +3871,216 @@ msgstr "Pas de pads ou de points de départ pour remplir ce contour de zone"
msgid "Ok"
msgstr "Ok"
#: 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/librairi.cpp:61
msgid "Import Module:"
msgstr "Importer Module:"
#: 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/librairi.cpp:97
msgid "Not a module file"
msgstr "N'est pas un fichier de Modules"
#: pcbnew/specctra_export.cpp:805
#, c-format
msgid "Unsupported DRAWSEGMENT type %s"
msgstr "DRAWSEGMENT type %s non supporté"
#: pcbnew/librairi.cpp:179
msgid "Create lib"
msgstr "Créer lib"
#: 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/librairi.cpp:179
msgid "Export Module:"
msgstr "Exporter Module:"
#: 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/librairi.cpp:194
#: pcbnew/librairi.cpp:441
#, 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
msgid "Component with value of \"%s\" has empty reference id."
msgstr "Le composant avec valeur \"%s\" a une référence vide."
msgid "Unable to create <%s>"
msgstr "Incapable de créer <%s>"
#: pcbnew/specctra_export.cpp:903
#: pcbnew/librairi.cpp:224
#, c-format
msgid "Multiple components have identical reference IDs of \"%s\"."
msgstr "Multiple composants ont une reference identique \"%s\"."
msgid "Module exported in file <%s>"
msgstr "Module exporté en fichier <%s>"
#: pcbnew/pcbnew.cpp:43
msgid "Pcbnew is already running, Continue?"
msgstr "Pcbnew est est cours d'exécution. Continuer ?"
#: pcbnew/librairi.cpp:246
#, c-format
msgid "Ok to delete module %s in library %s"
msgstr "Ok pour effacer module %sein librairie %s"
#: pcbnew/onrightclick.cpp:41
msgid "Auto Width"
msgstr "Epaisseur Automatique"
#: pcbnew/librairi.cpp:256
msgid "Library "
msgstr "Librairie "
#: 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/librairi.cpp:267
msgid "Not a Library file"
msgstr "N'est pas un fichier Librairie"
#: pcbnew/onrightclick.cpp:57
#: pcbnew/librairi.cpp:296
#, c-format
msgid "Track %.1f"
msgstr "Piste %.1f"
msgid "Module [%s] not found"
msgstr "Module [%s] non trouvé"
#: pcbnew/onrightclick.cpp:59
#: pcbnew/librairi.cpp:390
#, c-format
msgid "Track %.3f"
msgstr "Piste %.3f"
msgid "Component %s deleted in library %s"
msgstr "Composant %s supprimé en librairie %s"
#: pcbnew/onrightclick.cpp:77
#, c-format
msgid "Via %.1f"
#: pcbnew/librairi.cpp:416
msgid " No modules to archive!"
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"
#: pcbnew/onrightclick.cpp:79
......@@ -4460,6 +4500,41 @@ msgstr "Autoroute Pad"
msgid "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
msgid "Pad Num :"
msgstr "Num Pad :"
......@@ -4569,33 +4644,6 @@ msgstr "couche E.C.O.2"
msgid "Draft layer"
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
msgid "Millimeters"
msgstr "Millimetres"
......@@ -5041,19 +5089,19 @@ msgstr ""
"\n"
"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"
msgstr "Charger Fichier d'échange"
#: eeschema/backanno.cpp:157
#: eeschema/backanno.cpp:155
msgid "Set the Footprint Field to Visible ?"
msgstr "Rendre le Champ Module Visible"
#: eeschema/backanno.cpp:158
#: eeschema/backanno.cpp:156
msgid "Field Display Option"
msgstr "Options d'affichage du Champ"
#: eeschema/backanno.cpp:171
#: eeschema/backanno.cpp:169
#, c-format
msgid "Failed to open Stuff File <%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
msgid "%8.8lX/"
msgstr "%8.8lX/"
#: eeschema/component_class.cpp:75
#: eeschema/component_class.cpp:72
msgid "Sheet"
msgstr "Feuille"
#: eeschema/component_class.cpp:316
#: eeschema/dialog_create_component.cpp:171
#: eeschema/component_class.cpp:313
msgid "U"
msgstr "U"
......@@ -5321,10 +5368,13 @@ msgid "As Convert"
msgstr "A une forme \"convertie\""
#: eeschema/dialog_create_component.cpp:187
#: eeschema/dialog_edit_component_in_lib.cpp:161
msgid "Power Symbol"
msgstr "Symbole Alimentation"
#: 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"
msgstr "Les parts sont verrouillées"
......@@ -5453,6 +5503,7 @@ msgid "Pin Name Inside"
msgstr "Nom de pin a l'intérieur"
#: eeschema/dialog_create_component.cpp:262
#: eeschema/dialog_edit_component_in_lib.cpp:155
msgid "Skew:"
msgstr "Décalage:"
......@@ -5489,7 +5540,6 @@ msgid "Browse DocFiles"
msgstr "Examen Fichiers de Doc"
#: eeschema/dialog_edit_component_in_lib.cpp:210
#: eeschema/edit_component_in_lib.cpp:216
msgid "Alias"
msgstr "Alias"
......@@ -5631,17 +5681,14 @@ msgid "Chip Name:"
msgstr "Nom en librairie"
#: eeschema/dialog_edit_component_in_schematic.cpp:212
#: eeschema/edit_component_in_lib.cpp:497
msgid "Show Text"
msgstr "Texte visible"
#: eeschema/dialog_edit_component_in_schematic.cpp:216
#: eeschema/edit_component_in_lib.cpp:502
msgid "Vertical"
msgstr "Vertical"
#: eeschema/dialog_edit_component_in_schematic.cpp:226
#: eeschema/edit_component_in_lib.cpp:484
msgid "Fields"
msgstr "Champs"
......@@ -5919,220 +5966,360 @@ msgstr "Epaiss. ligne par défaut"
msgid "Default Label Size"
msgstr "Taille Label par défaut:"
#: eeschema/edit_component_in_lib.cpp:168
msgid "Lib Component Properties"
msgstr "Propriétés du composant librairie"
#: eeschema/menubar.cpp:41
msgid "&New"
msgstr "&Nouveau"
#: eeschema/edit_component_in_lib.cpp:172
msgid "Properties for "
msgstr "Propriétés pour "
#: eeschema/menubar.cpp:42
msgid "New schematic"
msgstr "Nouvelle schématique"
#: eeschema/edit_component_in_lib.cpp:177
msgid "(alias of "
msgstr "(alias de "
#: eeschema/menubar.cpp:47
msgid "&Open"
msgstr "&Ouvrir "
#: eeschema/edit_component_in_lib.cpp:245
#: eeschema/edit_component_in_lib.cpp:328
msgid "Delete All"
msgstr "Tout Supprimer"
#: eeschema/menubar.cpp:48
msgid "Open a schematic"
msgstr "Ouvrir un Projet schématique"
#: eeschema/edit_component_in_lib.cpp:281
msgid "Footprint Filter"
msgstr "Filtrage Modules"
#: eeschema/menubar.cpp:54
msgid "&Save"
msgstr "&Sauver"
#: eeschema/edit_component_in_lib.cpp:293
msgid "Footprints"
msgstr "Modules"
#: eeschema/menubar.cpp:55
msgid "Save schematic project"
msgstr "Sauver le Projet schématique"
#: eeschema/edit_component_in_lib.cpp:407
msgid "Show Pin Num"
msgstr "Montre Numéro de Pin"
#: eeschema/menubar.cpp:61
msgid "Save &Current sheet"
msgstr "Sauver &Feuille active"
#: eeschema/edit_component_in_lib.cpp:476
msgid "Left justify"
msgstr "Justifié à gauche"
#: eeschema/menubar.cpp:62
msgid "Save current sheet only"
msgstr "Sauver la feuille active uniquement"
#: eeschema/edit_component_in_lib.cpp:476
#: eeschema/edit_component_in_lib.cpp:478
msgid "Center"
msgstr "Centrer"
#: eeschema/menubar.cpp:67
msgid "Save Current sheet &as.."
msgstr "Sauver la feuille &active sous.."
#: 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/menubar.cpp:68
msgid "Save current sheet as.."
msgstr "Sauver la feuille active sous un autre nom"
#: eeschema/edit_component_in_lib.cpp:478
msgid "Top justify"
msgstr "Justifié en haut"
#: eeschema/menubar.cpp:82
msgid "Plot PostScript"
msgstr "Tracé Postscript"
#: eeschema/edit_component_in_lib.cpp:508
#: eeschema/edit_component_in_schematic.cpp:205
msgid "Field Name:"
msgstr "Nom Champ"
#: eeschema/menubar.cpp:82
msgid "Plotting in PostScript format"
msgstr "Générer un tracé en format Postscript"
#: eeschema/edit_component_in_lib.cpp:518
#: eeschema/edit_component_in_schematic.cpp:215
msgid "Field Text:"
msgstr "Texte du Champ:"
#: eeschema/menubar.cpp:87
msgid "Plot HPGL"
msgstr "Tracé HPGL"
#: eeschema/edit_component_in_lib.cpp:524
#: eeschema/edit_component_in_schematic.cpp:223
msgid "Pos"
msgstr "Pos"
#: eeschema/menubar.cpp:87
msgid "Plotting in HPGL format"
msgstr "Générer un tracé en format HPGL"
#: eeschema/edit_component_in_lib.cpp:529
msgid "Hor Justify"
msgstr "Justifié horiz"
#: eeschema/menubar.cpp:92
msgid "Plot SVG"
msgstr "Tracé SVG"
#: eeschema/edit_component_in_lib.cpp:536
msgid "Vert Justify"
msgstr "Justifié Vert."
#: eeschema/menubar.cpp:92
msgid "Plotting in SVG format"
msgstr "Générer un tracé en format SVG"
#: eeschema/edit_component_in_lib.cpp:551
msgid "Chip Name"
msgstr "Nom en librairie"
#: eeschema/menubar.cpp:99
msgid "Plot to Clipboard"
msgstr "Tracé dans Presse papier"
#: eeschema/edit_component_in_lib.cpp:554
#: eeschema/edit_component_in_schematic.cpp:199
msgid "Field to edit"
msgstr "Champ à éditer"
#: eeschema/menubar.cpp:99
msgid "Export drawings to clipboard"
msgstr " Export du dessin dans le presse-papier"
#: eeschema/edit_component_in_lib.cpp:890
msgid "Ok to Delete Alias LIST"
msgstr "Ok pour effacer la LISTE des Alias"
#: eeschema/menubar.cpp:106
msgid "Plot HPGL, PostScript, SVG"
msgstr "Tracer en format HPGL, POSTSCRIPT ou SVG"
#: eeschema/edit_component_in_lib.cpp:915
msgid "New alias:"
msgstr "Noveau alias"
#: eeschema/menubar.cpp:109
msgid "Quit Eeschema"
msgstr "Quitter Eeschema"
#: eeschema/edit_component_in_lib.cpp:923
msgid "This is the Root Part"
msgstr "Ceci est le composant racine"
#: eeschema/menubar.cpp:127
msgid "&Undo\t"
msgstr "&Undo\t"
#: eeschema/edit_component_in_lib.cpp:932
#: eeschema/edit_component_in_lib.cpp:1200
msgid "Already in use"
msgstr "Déja en usage"
#: eeschema/menubar.cpp:135
msgid "&Redo\t"
msgstr "&Redo\t"
#: eeschema/edit_component_in_lib.cpp:957
msgid " is Current Selected Alias!"
msgstr " est l' Alias actuellement sélectionné!"
#: eeschema/menubar.cpp:154
msgid "Find"
msgstr "Chercher"
#: eeschema/edit_component_in_lib.cpp:1010
msgid "Delete units"
msgstr "Supprimer unité"
#: eeschema/menubar.cpp:162
msgid "BackAnno"
msgstr "Rétro Annotation"
#: eeschema/edit_component_in_lib.cpp:1080
msgid "Create pins for Convert items"
msgstr "Créér les pins des unitées converties"
#: eeschema/menubar.cpp:162
msgid "Back Annotated Footprint Fields"
msgstr "Rétroannotation des Champs Modules"
#: eeschema/edit_component_in_lib.cpp:1084
msgid "Part as \"De Morgan\" anymore"
msgstr "Le composant a une représentation convertie"
#: eeschema/menubar.cpp:169
#: eeschema/menubar.cpp:172
msgid "Zoom in"
msgstr "Zoom +"
#: eeschema/edit_component_in_lib.cpp:1109
msgid "Delete Convert items"
msgstr "Suppression des éléments convertis"
#: eeschema/menubar.cpp:177
#: eeschema/menubar.cpp:180
msgid "Zoom out"
msgstr "Zoom -"
#: eeschema/edit_component_in_lib.cpp:1144
msgid "Doc Files"
msgstr "Fichiers de Doc"
#: eeschema/menubar.cpp:186
#: eeschema/menubar.cpp:196
msgid "Zoom auto"
msgstr "Zoom Automatique"
#: eeschema/edit_component_in_lib.cpp:1167
msgid "Ok to Delete FootprintFilter LIST"
msgstr "Ok pour effacer la LISTE des filtres de modules"
#: eeschema/menubar.cpp:206
msgid "&Component"
msgstr "&Composant"
#: eeschema/edit_component_in_lib.cpp:1189
msgid "New FootprintFilter:"
msgstr "Nouveau Filtre de Modules:"
#: eeschema/menubar.cpp:206
msgid "Place the component"
msgstr "Placer le Composant"
#: eeschema/edit_component_in_schematic.cpp:330
msgid "No Component Name!"
msgstr "Pas de nom de composant!"
#: eeschema/menubar.cpp:212
msgid "&Power port"
msgstr "Power Symbole"
#: eeschema/edit_component_in_schematic.cpp:336
#, c-format
msgid "Component [%s] not found!"
msgstr "Composant [%s] non trouvé!"
#: eeschema/menubar.cpp:212
msgid "Place the power port"
msgstr "Placer le Symbole Power"
#: eeschema/edit_component_in_schematic.cpp:457
msgid "No Field to move"
msgstr "Pas de champ a déplacer"
#: eeschema/menubar.cpp:218
msgid "&Wire"
msgstr "&Fil"
#: eeschema/edit_component_in_schematic.cpp:520
msgid "No Field To Edit"
msgstr "Pas de champ a éditer"
#: eeschema/menubar.cpp:218
msgid "Place the wire"
msgstr "Place fil"
#: eeschema/edit_component_in_schematic.cpp:534
msgid ""
"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/menubar.cpp:226
msgid "&Bus"
msgstr "&Bus"
#: eeschema/edit_component_in_schematic.cpp:581
msgid "Reference needed !, No change"
msgstr "Référence NECESSAIRE: changement refusé"
#: eeschema/menubar.cpp:227
msgid "Place a bus"
msgstr "Placer un Bus"
#: eeschema/edit_component_in_schematic.cpp:585
msgid "Value needed !, No change"
msgstr "Valeur NECESSAIRE: changement refusé"
#: eeschema/menubar.cpp:236
msgid "W&ire to bus entry"
msgstr "Entrées de bus (type fil vers bus)"
#: eeschema/edit_label.cpp:49
msgid "Empty Text!"
msgstr "Texte vide"
#: eeschema/menubar.cpp:237
msgid "Place a wire to bus entry"
msgstr "Placer une Entrée de Bus (type fil vers bus)"
#: eeschema/eeconfig.cpp:73
msgid "File "
msgstr "Fichier "
#: eeschema/menubar.cpp:246
msgid "B&us to bus entry"
msgstr "Entrées de bus (type bus vers bus)"
#: eeschema/eeconfig.cpp:73
msgid "not found"
msgstr " non trouvé"
#: eeschema/menubar.cpp:247
msgid "Place a bus to bus entry"
msgstr "Placer une Entrée de Bus (type bus vers bus)"
#: eeschema/eelayer.cpp:233
msgid "White"
msgstr "Blanc"
#: eeschema/menubar.cpp:256
msgid "No connect flag"
msgstr "Symbole de Non Connexion"
#: eeschema/eelayer.cpp:234
msgid "Black"
msgstr "Noir"
#: eeschema/menubar.cpp:257
msgid "Place a no connect flag"
msgstr "Placer un Symbole de Non Connexion"
#: eeschema/eelayer.cpp:235
msgid "Background Color:"
msgstr "Couleur du Fond:"
#: eeschema/menubar.cpp:266
msgid "Net name"
msgstr "Net Name"
#: eeschema/eelibs_read_libraryfiles.cpp:115
msgid "Start loading schematic libs"
msgstr "Demarre chargement des librairies schématiques"
#: eeschema/menubar.cpp:267
msgid "Place a net name"
msgstr "Placer un Nom de Net"
#: eeschema/eelibs_read_libraryfiles.cpp:302
#: eeschema/eelibs_read_libraryfiles.cpp:309
msgid "File <"
msgstr "Fichier <"
#: eeschema/menubar.cpp:274
msgid "Global label"
msgstr "Label Global"
#: eeschema/eelibs_read_libraryfiles.cpp:302
msgid "> is empty!"
msgstr "> est vide"
#: eeschema/menubar.cpp:275
msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy"
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
msgid "> is NOT EESCHEMA library!"
msgstr "> nest PAS une librairie EESCHEMA !"
#: eeschema/menubar.cpp:284
msgid "Junction"
msgstr "Jonction"
#: eeschema/eelibs_read_libraryfiles.cpp:328
msgid "Library <"
msgstr "Librairie <"
#: eeschema/menubar.cpp:285
msgid "Place a junction"
msgstr "Placer une Jonction"
#: eeschema/eelibs_read_libraryfiles.cpp:328
msgid "> header read error"
msgstr "> erreur lecture entête"
#: eeschema/menubar.cpp:296
msgid "Hierarchical label"
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?"
msgstr "Eeschema est est cours d'exécution. Continuer ?"
......@@ -6288,687 +6475,412 @@ msgid " in lib "
msgstr " en libr. "
#: eeschema/find.cpp:693
msgid " found only in 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"
msgid " found only in cache"
msgstr "trouvé seulement en cache"
#: eeschema/libframe.cpp:102
#: eeschema/find.cpp:696
msgid ""
"Component was modified!\n"
"Discard changes?"
"\n"
"Explore All Libraries?"
msgstr ""
"Le composant a été modifié\n"
"Perdre les changements"
"\n"
"Explorer toutes les Librairies?"
#: eeschema/libframe.cpp:115
#: eeschema/find.cpp:702
msgid "Nothing found"
msgstr " Rien trouvé"
#: eeschema/getpart.cpp:106
#, c-format
msgid ""
"Library \"%s\" was modified!\n"
"Discard changes?"
msgstr ""
"Librairie \"%s\" modifiée!\n"
"Perdre les changements ?"
msgid "component selection (%d items loaded):"
msgstr "Sélection Composant (%d items chargés):"
#: eeschema/libframe.cpp:342
msgid "Include last component changes?"
msgstr "Inclure les dernieres modifs du composant"
#: eeschema/getpart.cpp:171
msgid "Failed to find part "
msgstr "Impossible de trouver le composant "
#: eeschema/libframe.cpp:405
msgid " Pins Test OK!"
msgstr " Test Pins OK!"
#: eeschema/getpart.cpp:171
msgid " in library"
msgstr " en librairie"
#: eeschema/libframe.cpp:479
msgid "Add Pin"
msgstr "Addition de \"pins\""
#: eeschema/hierarch.cpp:122
msgid "Navigator"
msgstr "Navigateur"
#: eeschema/libframe.cpp:483
msgid "Set Pin Options"
msgstr "Choix Options des Pins"
#: eeschema/hierarch.cpp:133
msgid "Root"
msgstr "Racine"
#: eeschema/libframe.cpp:505
msgid "Add Rectangle"
msgstr "Addition de rectangles"
#: eeschema/hotkeys.cpp:249
msgid "Add Component"
msgstr "Ajout Composant"
#: eeschema/libframe.cpp:509
msgid "Add Circle"
msgstr "Addition de cercle"
#: eeschema/hotkeys.cpp:271
msgid "Add Wire"
msgstr "Ajouter Fils"
#: eeschema/libframe.cpp:513
msgid "Add Arc"
msgstr "Addition d' arc"
#: eeschema/libarch.cpp:78
msgid "Failed to create archive lib file "
msgstr "Impossible de créer le fichier librairie archive "
#: eeschema/libframe.cpp:521
msgid "Anchor"
msgstr "Ancre"
#: eeschema/libarch.cpp:85
msgid "Failed to create doc lib file "
msgstr "Impossible de créer le fichier lib document"
#: eeschema/libframe.cpp:531
msgid "Export"
msgstr "Exporter"
#: eeschema/libedit.cpp:38
msgid " Part: "
msgstr "Composant "
#: eeschema/lib_export.cpp:39
msgid "Import component:"
msgstr "Importer composant:"
#: eeschema/libedit.cpp:52
msgid " Convert"
msgstr " Convert"
#: eeschema/lib_export.cpp:73
msgid "File is empty"
msgstr "Fichier vide"
#: eeschema/libedit.cpp:53
msgid " Normal"
msgstr " Normal"
#: eeschema/lib_export.cpp:95
msgid "No Part to Save"
msgstr "Pas de composant à sauver"
#: eeschema/libedit.cpp:56
msgid " (Power Symbol)"
msgstr " (Symbole Alimentation)"
#: eeschema/lib_export.cpp:107
msgid "New Library"
msgstr "Nouvelle Librairie"
#: eeschema/libedit.cpp:90
msgid ""
"Current Part not saved.\n"
"Continue?"
msgstr ""
"Composant courant non sauvé.\n"
"Continuer ?"
#: eeschema/lib_export.cpp:107
msgid "Export component:"
msgstr "Exporter composant:"
#: eeschema/libedit.cpp:112
#: eeschema/libedit.cpp:388
msgid "Component \""
msgstr "Composant \""
#: eeschema/lib_export.cpp:144
msgid "0k"
msgstr "Ok"
#: eeschema/libedit.cpp:112
msgid "\" not found."
msgstr "\" non trouvé"
#: eeschema/lib_export.cpp:146
msgid ""
"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/libedit.cpp:233
msgid "Modify Library File \""
msgstr "Ok pour modifier le fichier Librairie \""
#: eeschema/lib_export.cpp:149
msgid "Error while create "
msgstr "Erreur en création de "
#: eeschema/libedit.cpp:233
msgid "\"?"
msgstr "\"?"
#: eeschema/load_one_schematic_file.cpp:104
msgid "Failed to open "
msgstr "Erreur ouverture "
#: eeschema/libedit.cpp:242
msgid "Error while saving Library File \""
msgstr "Erreur en sauvant le fichier Librairie \""
#: eeschema/load_one_schematic_file.cpp:109
msgid "Loading "
msgstr "Chargement "
#: eeschema/libedit.cpp:242
#: eeschema/libedit.cpp:389
msgid "\"."
msgstr "\"."
#: eeschema/load_one_schematic_file.cpp:116
#: eeschema/load_one_schematic_file.cpp:141
msgid " is NOT an EESchema file!"
msgstr " n'est PAS un fichier EESchema!"
#: eeschema/libedit.cpp:248
msgid "Library File \""
msgstr "Fichier Librairie \""
#: eeschema/load_one_schematic_file.cpp:126
msgid " was created by a more recent version of EESchema and may not load correctly. Please consider updating!"
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/libedit.cpp:250
msgid "Document File \""
msgstr "Fichier de Doc \""
#: eeschema/load_one_schematic_file.cpp:133
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 " a été créé par une version plus ancienne de Eeschema. Il sera enregistré au nouveau format après la prochaine sauvegarde."
#: eeschema/libedit.cpp:303
msgid "No Active Library"
msgstr "Pas de Librairie Active"
#: eeschema/load_one_schematic_file.cpp:484
msgid "Done Loading "
msgstr "Chargement terminé"
#: eeschema/libedit.cpp:319
#, c-format
msgid "Select Component (%d items)"
msgstr "Selection composant (%d items)"
#: eeschema/menubar.cpp:41
msgid "&New"
msgstr "&Nouveau"
#: eeschema/libedit.cpp:342
msgid "Component not found"
msgstr "Composant non trouvé"
#: eeschema/menubar.cpp:42
msgid "New schematic"
msgstr "Nouvelle schématique"
#: eeschema/libedit.cpp:346
msgid "Delete component \""
msgstr "Suppression Composant \""
#: eeschema/menubar.cpp:47
msgid "&Open"
msgstr "&Ouvrir "
#: eeschema/libedit.cpp:347
msgid "\" from library \""
msgstr "\" de la librairie \""
#: eeschema/menubar.cpp:48
msgid "Open a schematic"
msgstr "Ouvrir un Projet schématique"
#: eeschema/libedit.cpp:371
msgid "Clear old component from screen (changes will be lost)?"
msgstr "Supprimer l'ancien composant de l'écran (les changements seront perdus)?"
#: eeschema/menubar.cpp:54
msgid "&Save"
msgstr "&Sauver"
#: eeschema/libedit.cpp:389
msgid "\" exists in library \""
msgstr "\" existe en librairie \""
#: eeschema/menubar.cpp:55
msgid "Save schematic project"
msgstr "Sauver le Projet schématique"
#: eeschema/libedit.cpp:556
msgid "No component to Save."
msgstr "Pas de composant à sauver"
#: eeschema/menubar.cpp:61
msgid "Save &Current sheet"
msgstr "Sauver &Feuille active"
#: eeschema/libedit.cpp:563
msgid "No Library specified."
msgstr "Pas de Librairie spécifiée."
#: eeschema/menubar.cpp:62
msgid "Save current sheet only"
msgstr "Sauver la feuille active uniquement"
#: eeschema/libedit.cpp:574
#, c-format
msgid "Component \"%s\" exists. Change it?"
msgstr "Le composant \" %s\" existe, Le changer ?"
#: eeschema/menubar.cpp:67
msgid "Save Current sheet &as.."
msgstr "Sauver la feuille &active sous.."
#: eeschema/libedit.cpp:613
#, c-format
msgid "Component %s saved in %s"
msgstr "Composant %s sauvé en %s"
#: eeschema/menubar.cpp:68
msgid "Save current sheet as.."
msgstr "Sauver la feuille active sous un autre nom"
#: eeschema/libedit_onrightclick.cpp:77
msgid "Move Arc "
msgstr "Déplacer arc"
#: eeschema/menubar.cpp:82
msgid "Plot PostScript"
msgstr "Tracé Postscript"
#: eeschema/libedit_onrightclick.cpp:81
msgid "Arc Options"
msgstr "Options pour l'Arc"
#: eeschema/menubar.cpp:82
msgid "Plotting in PostScript format"
msgstr "Générer un tracé en format Postscript"
#: eeschema/libedit_onrightclick.cpp:84
msgid "Delete Arc "
msgstr "Effacer Arc"
#: eeschema/menubar.cpp:87
msgid "Plot HPGL"
msgstr "Tracé HPGL"
#: eeschema/libedit_onrightclick.cpp:92
msgid "Move Circle "
msgstr "Déplacer Cercle"
#: eeschema/menubar.cpp:87
msgid "Plotting in HPGL format"
msgstr "Générer un tracé en format HPGL"
#: eeschema/libedit_onrightclick.cpp:96
msgid "Circle Options"
msgstr "Options pour le Cercle"
#: eeschema/menubar.cpp:92
msgid "Plot SVG"
msgstr "Tracé SVG"
#: eeschema/libedit_onrightclick.cpp:99
msgid "Delete Circle "
msgstr "Supprimer Cercle"
#: eeschema/menubar.cpp:92
msgid "Plotting in SVG format"
msgstr "Générer un tracé en format SVG"
#: 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/menubar.cpp:99
msgid "Plot to Clipboard"
msgstr "Tracé dans Presse papier"
#: eeschema/libedit_onrightclick.cpp:114
msgid "Delete Rect "
msgstr "Supprimer Rect"
#: eeschema/menubar.cpp:99
msgid "Export drawings to clipboard"
msgstr " Export du dessin dans le presse-papier"
#: eeschema/libedit_onrightclick.cpp:122
msgid "Move Text "
msgstr "Déplacer Texte"
#: eeschema/menubar.cpp:106
msgid "Plot HPGL, PostScript, SVG"
msgstr "Tracer en format HPGL, POSTSCRIPT ou SVG"
#: eeschema/libedit_onrightclick.cpp:126
msgid "Text Editor"
msgstr "Editeur de Texte"
#: eeschema/menubar.cpp:109
msgid "Quit Eeschema"
msgstr "Quitter Eeschema"
#: eeschema/libedit_onrightclick.cpp:128
msgid "Rotate Text"
msgstr "Rot. Texte"
#: eeschema/menubar.cpp:127
msgid "&Undo\t"
msgstr "&Undo\t"
#: eeschema/libedit_onrightclick.cpp:131
msgid "Delete Text "
msgstr "Supprimer Texte"
#: eeschema/menubar.cpp:135
msgid "&Redo\t"
msgstr "&Redo\t"
#: eeschema/libedit_onrightclick.cpp:139
msgid "Move Line "
msgstr "Déplacer Ligne"
#: eeschema/menubar.cpp:154
msgid "Find"
msgstr "Chercher"
#: eeschema/libedit_onrightclick.cpp:145
msgid "Line End"
msgstr "Fin ligne"
#: eeschema/menubar.cpp:162
msgid "BackAnno"
msgstr "Rétro Annotation"
#: eeschema/libedit_onrightclick.cpp:148
msgid "Line Options"
msgstr "Options pour Ligne"
#: eeschema/menubar.cpp:162
msgid "Back Annotated Footprint Fields"
msgstr "Rétroannotation des Champs Modules"
#: eeschema/libedit_onrightclick.cpp:151
msgid "Delete Line "
msgstr "Efface Ligne"
#: eeschema/menubar.cpp:169
#: eeschema/menubar.cpp:172
msgid "Zoom in"
msgstr "Zoom +"
#: eeschema/libedit_onrightclick.cpp:158
msgid "Delete Segment "
msgstr "Supprimer Segment"
#: eeschema/menubar.cpp:177
#: eeschema/menubar.cpp:180
msgid "Zoom out"
msgstr "Zoom -"
#: eeschema/libedit_onrightclick.cpp:168
msgid "Move Field "
msgstr "Déplace Champ"
#: eeschema/menubar.cpp:186
#: eeschema/menubar.cpp:196
msgid "Zoom auto"
msgstr "Zoom Automatique"
#: eeschema/libedit_onrightclick.cpp:172
msgid "Field Rotate"
msgstr "Rotation Champ"
#: eeschema/menubar.cpp:206
msgid "&Component"
msgstr "&Composant"
#: eeschema/libedit_onrightclick.cpp:174
msgid "Field Edit"
msgstr "Edition du champ"
#: eeschema/menubar.cpp:206
msgid "Place the component"
msgstr "Placer le Composant"
#: eeschema/libedit_onrightclick.cpp:199
msgid "Move Pin"
msgstr "Déplace pin"
#: eeschema/menubar.cpp:212
msgid "&Power port"
msgstr "Power Symbole"
#: eeschema/libedit_onrightclick.cpp:202
msgid "Edit Pin "
msgstr "Editer Pin"
#: eeschema/menubar.cpp:212
msgid "Place the power port"
msgstr "Placer le Symbole Power"
#: eeschema/libedit_onrightclick.cpp:207
msgid "Delete Pin "
msgstr "Supprimer Pin"
#: eeschema/menubar.cpp:218
msgid "&Wire"
msgstr "&Fil"
#: eeschema/libedit_onrightclick.cpp:212
msgid "Global"
msgstr "Global"
#: eeschema/menubar.cpp:218
msgid "Place the wire"
msgstr "Place fil"
#: eeschema/libedit_onrightclick.cpp:214
msgid "Pin Size to selected pins"
msgstr "Change taille pins sélectionnées"
#: eeschema/menubar.cpp:226
msgid "&Bus"
msgstr "&Bus"
#: eeschema/libedit_onrightclick.cpp:214
msgid "Pin Size to others"
msgstr "Change taille autres pins"
#: eeschema/menubar.cpp:227
msgid "Place a bus"
msgstr "Placer un Bus"
#: eeschema/libedit_onrightclick.cpp:217
msgid "Pin Name Size to selected pin"
msgstr "Change taille Nom pin sélectionnées"
#: eeschema/menubar.cpp:236
msgid "W&ire to bus entry"
msgstr "Entrées de bus (type fil vers bus)"
#: eeschema/libedit_onrightclick.cpp:217
msgid "Pin Name Size to others"
msgstr "Change taille Nom pin autres pins"
#: eeschema/menubar.cpp:237
msgid "Place a wire to bus entry"
msgstr "Placer une Entrée de Bus (type fil vers bus)"
#: eeschema/libedit_onrightclick.cpp:220
msgid "Pin Num Size to selected pin"
msgstr "Change taille Num pins sélectionnées"
#: eeschema/menubar.cpp:246
msgid "B&us to bus entry"
msgstr "Entrées de bus (type bus vers bus)"
#: eeschema/libedit_onrightclick.cpp:220
msgid "Pin Num Size to others"
msgstr "Change taille Num pin autres pins"
#: eeschema/menubar.cpp:247
msgid "Place a bus to bus entry"
msgstr "Placer une Entrée de Bus (type bus vers bus)"
#: eeschema/libedit_onrightclick.cpp:242
msgid "Select items"
msgstr "Sélection des éléments"
#: eeschema/menubar.cpp:256
msgid "No connect flag"
msgstr "Symbole de Non Connexion"
#: eeschema/libedit_onrightclick.cpp:245
msgid "Mirror Block (ctrl + drag mouse)"
msgstr "Bloc Miroir (ctrl + drag mouse)"
#: eeschema/menubar.cpp:257
msgid "Place a no connect flag"
msgstr "Placer un Symbole de Non Connexion"
#: eeschema/libedit_onrightclick.cpp:247
msgid "Del. Block (shift+ctrl + drag mouse)"
msgstr "Effacement Bloc (shift+ctrl + drag mouse)"
#: eeschema/menubar.cpp:266
msgid "Net name"
msgstr "Net Name"
#: eeschema/libframe.cpp:102
msgid ""
"Component was modified!\n"
"Discard changes?"
msgstr ""
"Le composant a été modifié\n"
"Perdre les changements"
#: eeschema/menubar.cpp:267
msgid "Place a net name"
msgstr "Placer un Nom de Net"
#: eeschema/libframe.cpp:115
#, c-format
msgid ""
"Library \"%s\" was modified!\n"
"Discard changes?"
msgstr ""
"Librairie \"%s\" modifiée!\n"
"Perdre les changements ?"
#: eeschema/menubar.cpp:274
msgid "Global label"
msgstr "Label Global"
#: eeschema/libframe.cpp:342
msgid "Include last component changes?"
msgstr "Inclure les dernieres modifs du composant"
#: eeschema/menubar.cpp:275
msgid "Place a global label. Warning: all global labels with the same name are connected in whole hierarchy"
msgstr "Placer un label global. Attention: tous les labels globaux avec le même nom sont connectés dans toute la hierarchie"
#: eeschema/libframe.cpp:405
msgid " Pins Test OK!"
msgstr " Test Pins OK!"
#: eeschema/menubar.cpp:284
msgid "Junction"
msgstr "Jonction"
#: eeschema/libframe.cpp:479
msgid "Add Pin"
msgstr "Addition de \"pins\""
#: eeschema/menubar.cpp:285
msgid "Place a junction"
msgstr "Placer une Jonction"
#: eeschema/libframe.cpp:483
msgid "Set Pin Options"
msgstr "Choix Options des Pins"
#: eeschema/menubar.cpp:296
msgid "Hierarchical label"
msgstr "Label Hiérarchique"
#: eeschema/libframe.cpp:505
msgid "Add Rectangle"
msgstr "Addition de rectangles"
#: 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/libframe.cpp:509
msgid "Add Circle"
msgstr "Addition de cercle"
#: eeschema/menubar.cpp:306
msgid "Hierarchical sheet"
msgstr "Feuille Hiérrachique"
#: eeschema/libframe.cpp:513
msgid "Add Arc"
msgstr "Addition d' arc"
#: eeschema/menubar.cpp:307
msgid "Create a hierarchical sheet"
msgstr "Créer une Feuille Hiérachique"
#: eeschema/libframe.cpp:521
msgid "Anchor"
msgstr "Ancre"
#: eeschema/menubar.cpp:316
msgid "Import Hierarchical Label"
msgstr "Importer Label Hiérarchique"
#: eeschema/libframe.cpp:531
msgid "Export"
msgstr "Exporter"
#: 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/lib_export.cpp:39
msgid "Import component:"
msgstr "Importer composant:"
#: eeschema/menubar.cpp:326
msgid "Add Hierarchical Pin to Sheet"
msgstr "Ajouter Pins de Hierarchie dans feuille"
#: eeschema/lib_export.cpp:73
msgid "File is empty"
msgstr "Fichier vide"
#: eeschema/menubar.cpp:327
msgid "Place a hierarchical pin to sheet"
msgstr "Addition de pins de hierarchie dans les feuilles symboles de hierarchie"
#: eeschema/lib_export.cpp:94
msgid "No Part to Save"
msgstr "Pas de composant à sauver"
#: eeschema/menubar.cpp:338
msgid "Graphic line or poligon"
msgstr "Ligne ou polygone graphique"
#: eeschema/lib_export.cpp:106
msgid "New Library"
msgstr "Nouvelle Librairie"
#: eeschema/menubar.cpp:339
msgid "Place the graphic line or poligon"
msgstr "Placer des lignes ou polygones graphiques"
#: eeschema/lib_export.cpp:106
msgid "Export component:"
msgstr "Exporter composant:"
#: eeschema/menubar.cpp:348
msgid "Graphic text (comment)"
msgstr "Ttextes graphiques (commentaires)"
#: eeschema/lib_export.cpp:143
msgid "0k"
msgstr "Ok"
#: eeschema/menubar.cpp:349
msgid "Place the graphic text (comment)"
msgstr "Placer le textes graphique (commentaire)"
#: eeschema/lib_export.cpp:145
msgid ""
"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
msgid "Setting colors..."
msgstr "Choisir les couleurs d'affichage..."
#: eeschema/lib_export.cpp:148
msgid "Error while create "
msgstr "Erreur en création de "
#: eeschema/menubar.cpp:371
msgid "&Options"
msgstr "&Options"
#: eeschema/load_one_schematic_file.cpp:104
msgid "Failed to open "
msgstr "Erreur ouverture "
#: eeschema/menubar.cpp:372
msgid "Select general options..."
msgstr "Sélection options générales..."
#: eeschema/load_one_schematic_file.cpp:109
msgid "Loading "
msgstr "Chargement "
#: eeschema/menubar.cpp:397
msgid "Open the eeschema manual"
msgstr "Ouvrir la documentation de eeschema"
#: eeschema/load_one_schematic_file.cpp:116
#: eeschema/load_one_schematic_file.cpp:141
msgid " is NOT an EESchema file!"
msgstr " n'est PAS un fichier EESchema!"
#: eeschema/menubar.cpp:408
msgid "&Edit"
msgstr "&Editer"
#: eeschema/load_one_schematic_file.cpp:126
msgid " was created by a more recent version of EESchema and may not load correctly. Please consider updating!"
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
msgid "&View"
msgstr "&Voir"
#: eeschema/load_one_schematic_file.cpp:133
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 " 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
msgid "&Place"
msgstr "&Placer"
#: eeschema/load_one_schematic_file.cpp:484
msgid "Done Loading "
msgstr "Chargement terminé"
#: eeschema/plothpgl.cpp:222
msgid "Sheet Size"
......@@ -7472,21 +7384,21 @@ msgstr "low out"
msgid "Occupied by other pin. Continue?"
msgstr "Occupé une autre pin, Continuer ?"
#: eeschema/pinedit.cpp:1005
#: eeschema/pinedit.cpp:1004
#, c-format
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)"
#: eeschema/pinedit.cpp:1011
#: eeschema/pinedit.cpp:1010
#, c-format
msgid " Part %d"
msgstr "Composant %d"
#: eeschema/pinedit.cpp:1017
#: eeschema/pinedit.cpp:1016
msgid " Convert"
msgstr " Convert"
#: eeschema/pinedit.cpp:1019
#: eeschema/pinedit.cpp:1018
msgid " Normal"
msgstr " Normal"
......@@ -7600,23 +7512,6 @@ msgstr "Cette opération changera l'annotation actuelle et ne pourra être annul
msgid "Ok to continue renaming?"
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
msgid "Import symbol drawings:"
msgstr "Importer les symboles:"
......@@ -7634,11 +7529,11 @@ msgstr "Warning: plus de 1élément dans le fichier symbole"
msgid "Symbol File is void"
msgstr "Fichier Symbole vide"
#: eeschema/symbedit.cpp:151
#: eeschema/symbedit.cpp:150
msgid "Export symbol drawings:"
msgstr "Exporter le symbole"
#: eeschema/symbedit.cpp:171
#: eeschema/symbedit.cpp:170
#, c-format
msgid "Save Symbol in [%s]"
msgstr "Symbole sauvé en [%s]"
......@@ -7825,125 +7720,305 @@ msgstr "Placer des entrées de bus (type fil vers bus)"
msgid "Place the bus to bus entry"
msgstr "Placer des entrées de bus (type bus vers bus)"
#: eeschema/tool_sch.cpp:182
msgid "Place the no connect flag"
msgstr "Placer le symbole de non connexion"
#: eeschema/tool_sch.cpp:182
msgid "Place the no connect flag"
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
msgid "Place the net name"
msgstr "Placer le nom de net"
#: eeschema/edit_component_in_lib.cpp:536
msgid "Vert Justify"
msgstr "Justifié Vert."
#: 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/edit_component_in_lib.cpp:551
msgid "Chip Name"
msgstr "Nom en librairie"
#: eeschema/tool_sch.cpp:195
msgid "Place the junction"
msgstr "Placer la Jonction"
#: eeschema/edit_component_in_lib.cpp:554
#: eeschema/edit_component_in_schematic.cpp:199
msgid "Field to edit"
msgstr "Champ à éditer"
#: 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/edit_component_in_lib.cpp:890
msgid "Ok to Delete Alias LIST"
msgstr "Ok pour effacer la LISTE des Alias"
#: eeschema/tool_sch.cpp:205
msgid "Place the hierarchical sheet"
msgstr "Placer la Feuille Hiérachique"
#: eeschema/edit_component_in_lib.cpp:915
msgid "New alias:"
msgstr "Noveau alias"
#: 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/edit_component_in_lib.cpp:915
msgid "Component Alias"
msgstr "Alias de Composant"
#: eeschema/tool_sch.cpp:214
msgid "Place the hierachical pin to sheet"
msgstr "Place une pin de hierarchie dans la feuille"
#: eeschema/edit_component_in_lib.cpp:923
msgid "This is the Root Part"
msgstr "Ceci est le composant racine"
#: eeschema/tool_sch.cpp:219
msgid "Place the graphic line or polygon"
msgstr "Placer la ligne ou le polygones graphique"
#: eeschema/edit_component_in_lib.cpp:932
#: eeschema/edit_component_in_lib.cpp:1200
msgid "Already in use"
msgstr "Déja en usage"
#: eeschema/tool_sch.cpp:267
#: eeschema/schframe.cpp:421
msgid "Show Hidden Pins"
msgstr "Force affichage des pins invisibles"
#: eeschema/edit_component_in_lib.cpp:957
msgid " is Current Selected Alias!"
msgstr " est l' Alias actuellement sélectionné!"
#: 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/edit_component_in_lib.cpp:1010
msgid "Delete units"
msgstr "Supprimer unité"
#: eeschema/tool_viewlib.cpp:49
msgid "Select library to browse"
msgstr "Sélection de la librairie a examiner"
#: eeschema/edit_component_in_lib.cpp:1080
msgid "Create pins for Convert items"
msgstr "Créér les pins des unitées converties"
#: eeschema/tool_viewlib.cpp:53
msgid "Select part to browse"
msgstr "Sélectionner composant à visualiser"
#: eeschema/edit_component_in_lib.cpp:1084
msgid "Part as \"De Morgan\" anymore"
msgstr "Le composant a une représentation convertie"
#: eeschema/tool_viewlib.cpp:58
msgid "Display previous part"
msgstr "Afficher composant précédent"
#: eeschema/edit_component_in_lib.cpp:1109
msgid "Delete Convert items"
msgstr "Suppression des éléments convertis"
#: eeschema/tool_viewlib.cpp:62
msgid "Display next part"
msgstr "Afficher composant suivant"
#: eeschema/edit_component_in_lib.cpp:1144
msgid "Doc Files"
msgstr "Fichiers de Doc"
#: eeschema/tool_viewlib.cpp:67
msgid "zoom + (F1)"
msgstr "zoom + (F1)"
#: eeschema/edit_component_in_lib.cpp:1167
msgid "Ok to Delete FootprintFilter LIST"
msgstr "Ok pour effacer la LISTE des filtres de modules"
#: eeschema/tool_viewlib.cpp:71
msgid "zoom - (F2)"
msgstr "zoom - (F2)"
#: eeschema/edit_component_in_lib.cpp:1189
msgid "New FootprintFilter:"
msgstr "Nouveau Filtre de Modules:"
#: eeschema/tool_viewlib.cpp:75
msgid "redraw (F3)"
msgstr "Redessin (F3)"
#: eeschema/edit_component_in_schematic.cpp:330
msgid "No Component Name!"
msgstr "Pas de nom de composant!"
#: eeschema/tool_viewlib.cpp:79
msgid "best zoom"
msgstr "Meilleur Zoom"
#: eeschema/edit_component_in_schematic.cpp:336
#, c-format
msgid "Component [%s] not found!"
msgstr "Composant [%s] non trouvé!"
#: eeschema/tool_viewlib.cpp:84
msgid "Show as \"De Morgan\" normal part"
msgstr "Afficher sous représentation normale"
#: eeschema/edit_component_in_schematic.cpp:457
msgid "No Field to move"
msgstr "Pas de champ a déplacer"
#: eeschema/tool_viewlib.cpp:88
msgid "Show as \"De Morgan\" convert part"
msgstr "Afficher sous présentation \" De Morgan\""
#: eeschema/edit_component_in_schematic.cpp:520
msgid "No Field To Edit"
msgstr "Pas de champ a éditer"
#: eeschema/tool_viewlib.cpp:98
msgid "View component documents"
msgstr "Voir documents des composants"
#: eeschema/edit_component_in_schematic.cpp:534
msgid ""
"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
msgid "Export to schematic"
msgstr "Exportervers schematique"
#: eeschema/edit_component_in_schematic.cpp:558
msgid "Component field text"
msgstr "Champ de Composant"
#: eeschema/viewlibs.cpp:118
msgid "Browse library: "
msgstr "Examen librairie: "
#: eeschema/edit_component_in_schematic.cpp:581
msgid "Reference needed !, No change"
msgstr "Référence NECESSAIRE: changement refusé"
#: eeschema/viewlibs.cpp:307
#, c-format
msgid "Current Part: <%s> (is Alias of <%s>)"
msgstr "Cmp courant: <%s> (est Alias de <%s>)"
#: eeschema/edit_component_in_schematic.cpp:585
msgid "Value needed !, No change"
msgstr "Valeur NECESSAIRE: changement refusé"
#: eeschema/viewlibs.cpp:313
#, c-format
msgid "Error: Root Part <%s> not found"
msgstr "Erreur: Root Part <%s> non trouvé"
#: eeschema/edit_component_in_schematic.cpp:758
msgid "Component Reference"
msgstr "Référence du Composant"
#: eeschema/viewlibs.cpp:332
#, c-format
msgid "Current Part: <%s>"
msgstr "Cmp Courant: <%s>"
#: eeschema/edit_component_in_schematic.cpp:796
msgid "Component Value"
msgstr "Valeur du Composant"
#: eeschema/viewlib_frame.cpp:53
msgid "Library browser"
msgstr "Visualisateur des librairies"
#: eeschema/edit_component_in_schematic.cpp:835
msgid "Component Footprint"
msgstr "Module du Composant"
#: eeschema/pinedit-dialog.cpp:160
msgid "Pin Name :"
......@@ -8028,23 +8103,23 @@ msgstr "Hiérar."
msgid "Sorting Nets"
msgstr "Tri des Nets"
#: eeschema/netlist.cpp:852
#: eeschema/netlist.cpp:836
msgid "Bad Bus Label: "
msgstr "Mauvais label de Bus: "
#: eeschema/schframe.cpp:309
#: eeschema/schframe.cpp:308
msgid "Schematic modified, Save before exit ?"
msgstr "Schematique modifiée, Sauver avant de quitter ?"
#: eeschema/schframe.cpp:421
#: eeschema/schframe.cpp:418
msgid "No show Hidden Pins"
msgstr "N'affichage pas les pins invisibles"
#: eeschema/schframe.cpp:425
#: eeschema/schframe.cpp:422
msgid "Draw lines at any direction"
msgstr "Tracer traits de direction quelconque"
#: eeschema/schframe.cpp:426
#: eeschema/schframe.cpp:423
msgid "Draw lines H, V or 45 deg only"
msgstr "Tracer traits H, V ou 45 deg seulement"
......@@ -8729,6 +8804,48 @@ msgstr "Supprimer Fichier"
msgid "no kicad files found in this directory"
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
msgid "&Run"
msgstr "Exécute&r"
......@@ -8822,50 +8939,13 @@ msgstr "Créer un nouveau Fichier"
msgid "Create New Directory"
msgstr "Créer un nouveau Répertoire"
#: kicad/treeprj_frame.cpp:432
msgid "noname"
msgstr "noname"
#: kicad/treeprj_frame.cpp:878
msgid "Change File Name: "
msgstr "ChangerNom 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:"
msgid "Change Filename: "
msgstr "Changer Nom Fichier: "
#: kicad/mainframe.cpp:361
msgid "Load file:"
msgstr "Charger Fichiers:"
#: kicad/treeprj_frame.cpp:879
msgid "Change Filename"
msgstr "Changer Nom Fichier"
#: gerbview/affiche.cpp:34
msgid "Layer "
......@@ -9592,7 +9672,7 @@ msgstr "Catalan"
msgid "Dutch"
msgstr "Hollandais"
#: common/edaappl.cpp:603
#: common/edaappl.cpp:604
msgid "Language"
msgstr "Langage"
......@@ -10061,6 +10141,11 @@ msgstr "ErrType(%d): <b>%s</b><ul><li> %s: %s </li></ul>"
msgid "Length(inch):"
msgstr "Longueur (pouces):"
#: pcbnew/gen_self.h:217
#: pcbnew/gen_self.h:223
msgid "Lenght"
msgstr "Longueur"
#: pcbnew/gen_self.h:223
msgid "Length(mm):"
msgstr "Long. (mm):"
......@@ -10150,10 +10235,6 @@ msgstr "Génération Fichiers de Perçagee"
msgid "EESchema Annotation"
msgstr "Annotation des composants"
#: eeschema/dialog_backanno.h:37
msgid "EESchema Back Annotate"
msgstr "Eeschema Retro Annotation"
#: eeschema/dialog_build_BOM.h:61
msgid "List of Material"
msgstr "Liste du Matériel"
......@@ -10454,8 +10535,8 @@ msgstr "Imprimer"
msgid "Create SVG file"
msgstr "Créer Fichier SVG"
#~ msgid "Lengh"
#~ msgstr "Long."
#~ msgid "EESchema Back Annotate"
#~ msgstr "Eeschema Retro Annotation"
#~ msgid "MyComponent"
#~ msgstr "MyComponent"
......@@ -51,6 +51,8 @@ set(PCBNEW_SRCS
# dialog_graphic_items_options.cpp
# dialog_initpcb.cpp
# dialog_netlist.cpp
zones_non_copper_type_functions.cpp
dialog_non_copper_zones_properties.cpp
# dialog_pad_edit.cpp
dialog_setup_libs.cpp
dialog_orient_footprints.cpp
......
......@@ -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)
......
......@@ -366,6 +366,12 @@ public:
*/
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
* 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
TimeStampText.Printf( wxT( "(%8.8X)" ), item->m_TimeStamp );
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() );
if( net )
......
......@@ -84,8 +84,8 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
// Save the outline main info
ret = fprintf( aFile, "ZInfo %8.8lX %d \"%s\"\n",
m_TimeStamp, m_NetCode,
CONV_TO_UTF8( m_Netname ) );
m_TimeStamp, m_NetCode,
CONV_TO_UTF8( m_Netname ) );
if( ret < 3 )
return false;
......@@ -122,9 +122,11 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
case PAD_IN_ZONE:
padoption = 'I';
break;
case THERMAL_PAD:
padoption = 'T';
break;
case PAD_NOT_IN_ZONE:
padoption = 'X';
break;
......@@ -138,8 +140,8 @@ bool ZONE_CONTAINER::Save( FILE* aFile ) const
for( item_pos = 0; item_pos < corners_count; item_pos++ )
{
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].end_contour );
m_Poly->corner[item_pos].x, m_Poly->corner[item_pos].y,
m_Poly->corner[item_pos].end_contour );
if( ret < 3 )
return false;
}
......@@ -157,7 +159,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
/** Function ReadDescr
* @param aFile = opened file
* @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;
......@@ -182,7 +184,7 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
if( !has_corner )
m_Poly->Start( m_Layer, x, y, outline_hatch );
else
AppendCorner( wxPoint(x, y) );
AppendCorner( wxPoint( x, y ) );
has_corner = true;
if( flag )
m_Poly->Close();
......@@ -281,6 +283,9 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
}
}
if( !IsOnCopperLayer() )
SetNet( 0 );
return error ? 0 : 1;
}
......@@ -300,8 +305,8 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con
return;
wxPoint seg_start, seg_end;
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
int color = g_DesignSettings.m_LayerColor[m_Layer];
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;
......@@ -331,14 +336,14 @@ void ZONE_CONTAINER::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode, con
int i_start_contour = 0;
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 )
{
seg_end = GetCornerPosition(ic + 1) + offset;
seg_end = GetCornerPosition( ic + 1 ) + offset;
}
else
{
seg_end = GetCornerPosition(i_start_contour) + offset;
seg_end = GetCornerPosition( i_start_contour ) + offset;
i_start_contour = ic + 1;
}
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
}
/************************************************************************************/
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()
/****************************************/
{
const int PRELOAD = 500000;
const int PRELOAD = 0x7FFFFFFF; // Biggest integer (32 bits)
int ymax = -PRELOAD;
int ymin = PRELOAD;
int xmin = PRELOAD;
int xmax = -PRELOAD;
int ymax = -PRELOAD;
int ymin = PRELOAD;
int xmin = 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 );
xmax = MAX( xmax, corner.x );
......@@ -377,7 +470,7 @@ EDA_Rect ZONE_CONTAINER::GetBoundingBox()
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;
}
......@@ -386,6 +479,7 @@ EDA_Rect ZONE_CONTAINER::GetBoundingBox()
/**********************************************************************************************/
void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode )
/***********************************************************************************************/
/**
* Function DrawWhileCreateOutline
* Draws the zone outline when ir is created.
......@@ -397,14 +491,14 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
* @param draw_mode = draw mode: OR, XOR ..
*/
{
int current_gr_mode = draw_mode;
bool is_close_segment = false;
int current_gr_mode = draw_mode;
bool is_close_segment = false;
wxPoint seg_start, seg_end;
if( DC == NULL )
return;
int curr_layer = ((PCB_SCREEN*)panel->GetScreen())->m_Active_Layer;
int color = g_DesignSettings.m_LayerColor[m_Layer] & MASKCOLOR;
int curr_layer = ( (PCB_SCREEN*) panel->GetScreen() )->m_Active_Layer;
int color = g_DesignSettings.m_LayerColor[m_Layer] & MASKCOLOR;
if( DisplayOpt.ContrastModeDisplay )
{
......@@ -417,18 +511,18 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
// draw the lines
wxPoint start_contour_pos = GetCornerPosition(0);
wxPoint start_contour_pos = GetCornerPosition( 0 );
for( int ic = 0; ic < GetNumCorners(); ic++ )
{
int xi = GetCornerPosition(ic).x;
int yi = GetCornerPosition(ic).y;
int xi = GetCornerPosition( ic ).x;
int yi = GetCornerPosition( ic ).y;
int xf, yf;
if( m_Poly->corner[ic].end_contour == FALSE && ic < GetNumCorners() - 1 )
{
is_close_segment = false;
xf = GetCornerPosition(ic + 1).x;
yf = GetCornerPosition(ic + 1).y;
if ( (m_Poly->corner[ic + 1].end_contour) || (ic == GetNumCorners() - 2) )
xf = GetCornerPosition( ic + 1 ).x;
yf = GetCornerPosition( ic + 1 ).y;
if( (m_Poly->corner[ic + 1].end_contour) || (ic == GetNumCorners() - 2) )
current_gr_mode = GR_XOR;
else
current_gr_mode = draw_mode;
......@@ -436,13 +530,13 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
else
{
is_close_segment = true;
current_gr_mode = GR_XOR;
current_gr_mode = GR_XOR;
xf = start_contour_pos.x;
yf = start_contour_pos.y;
start_contour_pos = GetCornerPosition(ic + 1);
start_contour_pos = GetCornerPosition( ic + 1 );
}
GRSetDrawMode( DC, current_gr_mode );
if ( is_close_segment )
if( is_close_segment )
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, WHITE );
else
GRLine( &panel->m_ClipBox, DC, xi, yi, xf, yf, 0, color );
......@@ -450,7 +544,6 @@ void ZONE_CONTAINER::DrawWhileCreateOutline( WinEDA_DrawPanel* panel, wxDC* DC,
}
/**
* Function HitTest
* tests if the given wxPoint is within the bounds of this object.
......@@ -541,11 +634,11 @@ int ZONE_CONTAINER::HitTestForEdge( const wxPoint& refPos )
/* test the dist between segment and ref point */
dist = (int) GetPointToLineSegmentDistance( refPos.x,
refPos.y,
m_Poly->corner[item_pos].x,
m_Poly->corner[item_pos].y,
m_Poly->corner[end_segm].x,
m_Poly->corner[end_segm].y );
refPos.y,
m_Poly->corner[item_pos].x,
m_Poly->corner[item_pos].y,
m_Poly->corner[end_segm].x,
m_Poly->corner[end_segm].y );
if( dist <= min_dist )
{
m_CornerSelection = item_pos;
......@@ -609,23 +702,28 @@ void ZONE_CONTAINER::Display_Infos( WinEDA_DrawFrame* frame )
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 )
msg = equipot->m_Netname;
else
msg = wxT( "<noname>" );
}
else // a netcode < 0 is an error
{
msg = wxT( " [" );
msg << m_Netname + wxT( "]" );
msg << wxT( " <" ) << _( "Not Found" ) << wxT( ">" );
}
if( equipot )
msg = equipot->m_Netname;
else
msg = wxT( "<noname>" );
}
else // a netcode < 0 is an error
{
msg = wxT( " [" );
msg << m_Netname + 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) */
text_pos += 18;
......@@ -657,12 +755,13 @@ void ZONE_CONTAINER::Move( const wxPoint& offset )
{
for( unsigned ii = 0; ii < m_Poly->corner.size(); ii++ )
{
SetCornerPosition(ii, GetCornerPosition(ii) + offset);
SetCornerPosition( ii, GetCornerPosition( ii ) + offset );
}
m_Poly->Hatch();
}
/**
* Function MoveEdge
* 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 )
int ii = m_CornerSelection;
// 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:
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 );
ii = m_Poly->GetContourStart( icont );
}
else
ii++;
SetCornerPosition(ii, GetCornerPosition(ii) + offset);
SetCornerPosition( ii, GetCornerPosition( ii ) + offset );
m_Poly->Hatch();
}
......
......@@ -5,6 +5,8 @@
#ifndef CLASS_ZONE_H
#define CLASS_ZONE_H
#include <vector>
#include "PolyLine.h"
/************************/
......@@ -25,30 +27,38 @@ public:
PAD_IN_ZONE // pads are covered by copper
};
wxString m_Netname; // Net Name
CPolyLine* m_Poly; // outlines
int m_CornerSelection; // For corner moving, corner index to drag, or -1 if no selection
int m_ZoneClearance; // clearance value
int m_GridFillValue; // Grid used for filling
m_PadInZone m_PadOption; // see m_PadInZone
int utility, utility2; // flags used in polygon calculations
wxString m_Netname; // Net Name
CPolyLine* m_Poly; // outlines
int m_CornerSelection; // For corner moving, corner index to drag, or -1 if no selection
int m_ZoneClearance; // clearance value
int m_GridFillValue; // Grid used for filling
m_PadInZone m_PadOption; // see m_PadInZone
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:
int m_NetCode; // Net number for fast comparisons
int m_NetCode; // Net number for fast comparisons
public:
ZONE_CONTAINER( BOARD * parent );
ZONE_CONTAINER( BOARD* parent );
~ZONE_CONTAINER();
bool Save( FILE* aFile ) const;
int ReadDescr( FILE* aFile, int* aLineNum = NULL );
bool Save( FILE* aFile ) const;
int ReadDescr( FILE* aFile, int* aLineNum = NULL );
wxPoint& GetPosition()
{
static wxPoint pos;
return pos;
}
void UnLink( void )
{
};
......@@ -58,9 +68,9 @@ public:
* copy usefull data from the source.
* 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
......@@ -70,8 +80,23 @@ public:
* @param offset = Draw offset (usually wxPoint(0,0))
* @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();
......@@ -85,14 +110,26 @@ public:
* @param DC = current Device Context
* @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
{
return m_NetCode;
}
void SetNet( int anet_code );
void SetNet( int anet_code );
/**
* Function HitTest
......@@ -100,7 +137,15 @@ public:
* @param refPos A wxPoint to test
* @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
......@@ -108,7 +153,7 @@ public:
* @return -1 if none, corner index in .corner <vector>
* @param refPos : A wxPoint to test
*/
int HitTestForCorner( const wxPoint& refPos );
int HitTestForCorner( const wxPoint& refPos );
/**
* Function HitTestForEdge
......@@ -116,7 +161,7 @@ public:
* @return -1 if none, or index of the starting corner in .corner <vector>
* @param refPos : A wxPoint to test
*/
int HitTestForEdge( const wxPoint& refPos );
int HitTestForEdge( const wxPoint& refPos );
/**
* Function HitTest (overlayed)
......@@ -124,7 +169,7 @@ public:
* @param refArea : the given EDA_Rect
* @return bool - true if a hit, else false
*/
bool HitTest( EDA_Rect& refArea );
bool HitTest( EDA_Rect& refArea );
/**
* Function Fill_Zone()
......@@ -137,7 +182,7 @@ public:
* @param verbose = true to show error messages
* @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: */
......@@ -146,14 +191,14 @@ public:
* Move the outlines
* @param offset = moving vector
*/
void Move( const wxPoint& offset );
void Move( const wxPoint& offset );
/**
* Function MoveEdge
* Move the outline Edge. m_CornerSelection is the start point of the outline edge
* @param offset = moving vector
*/
void MoveEdge( const wxPoint& offset );
void MoveEdge( const wxPoint& offset );
/**
* Function Rotate
......@@ -161,7 +206,7 @@ public:
* @param centre = rot centre
* @param angle = in 0.1 degree
*/
void Rotate( const wxPoint& centre, int angle );
void Rotate( const wxPoint& centre, int angle );
/**
* Function Mirror
......@@ -169,7 +214,7 @@ public:
* the layer is not changed
* @param mirror_ref = vertical axis position
*/
void Mirror( const wxPoint& mirror_ref );
void Mirror( const wxPoint& mirror_ref );
/**
* Function GetClass
......@@ -181,30 +226,35 @@ public:
return wxT( "ZONE_CONTAINER" );
}
/** Acces to m_Poly parameters
*/
*/
int GetNumCorners(void)
int GetNumCorners( void )
{
return m_Poly->GetNumCorners();
}
void RemoveAllContours(void)
void RemoveAllContours( void )
{
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->SetY(aCornerIndex, new_pos.y);
m_Poly->SetX( aCornerIndex, new_pos.x );
m_Poly->SetY( aCornerIndex, new_pos.y );
}
void AppendCorner( wxPoint position )
{
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()
m_Parent->m_InternalUnits );
m_ZoneClearanceCtrl->SetValue( title );
if( Zone_45_Only )
if( g_Zone_45_Only )
m_OrientEdgesOpt->SetSelection( 1 );
static const int GridList[4] = { 25, 50, 100, 250 };
......@@ -297,7 +297,7 @@ void WinEDA_ZoneFrame::CreateControls()
m_FillOpt->SetSelection( 0 );
break;
}
s_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle();
g_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle();
}
else
......@@ -314,11 +314,11 @@ void WinEDA_ZoneFrame::CreateControls()
m_FillOpt->SetSelection( 0 );
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 );
}
switch( s_Zone_Hatching )
switch( g_Zone_Hatching )
{
case CPolyLine::NO_HATCH:
m_OutlineAppearanceCtrl->SetSelection(0);
......@@ -485,21 +485,21 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
switch( m_OutlineAppearanceCtrl->GetSelection() )
{
case 0:
s_Zone_Hatching = CPolyLine::NO_HATCH;
g_Zone_Hatching = CPolyLine::NO_HATCH;
break;
case 1:
s_Zone_Hatching = CPolyLine::DIAGONAL_EDGE;
g_Zone_Hatching = CPolyLine::DIAGONAL_EDGE;
break;
case 2:
s_Zone_Hatching = CPolyLine::DIAGONAL_FULL;
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)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() )
......@@ -526,9 +526,9 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
g_DesignSettings.m_ZoneClearence =
ReturnValueFromString( g_UnitMetric, txtvalue, m_Parent->m_InternalUnits );
if( m_OrientEdgesOpt->GetSelection() == 0 )
Zone_45_Only = FALSE;
g_Zone_45_Only = FALSE;
else
Zone_45_Only = TRUE;
g_Zone_45_Only = TRUE;
/* Get the layer selection for this zone */
int ii = m_LayerSelectionCtrl->GetSelection();
......@@ -537,7 +537,7 @@ bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
DisplayError( this, _( "Error : you must choose a layer" ) );
return false;
}
s_Zone_Layer = m_LayerId[ii];
g_CurrentZone_Layer = m_LayerId[ii];
/* Get the net name selection for this zone */
ii = m_ListNetNameSelection->GetSelection();
......
......@@ -320,6 +320,8 @@ void DRC::testZones(bool adoTestFillSegments)
for( int ii = 0; ii < m_pcb->GetAreaCount(); ii++ )
{
ZONE_CONTAINER* Area_To_Test = m_pcb->GetArea( ii );
if( ! Area_To_Test->IsOnCopperLayer() )
continue;
if( Area_To_Test->GetNet() <= 0 )
{
m_currentMarker = fillMarker( Area_To_Test,
......
......@@ -771,7 +771,7 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
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( );
NbDraw = NbTrack = NbZone = NbMod = NbNets = -1;
......@@ -1010,6 +1010,13 @@ int WinEDA_PcbFrame::ReadPcbFile( FILE* File, bool Append )
BestZoom();
#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 );
#endif
return 1;
......
......@@ -20,6 +20,8 @@ OBJECTS= $(TARGET).o classpcb.o\
$(SPECCTRA_TOOLS)\
lay2plot.o\
dialog_freeroute_exchange.o\
dialog_non_copper_zones_properties.o\
zones_non_copper_type_functions.o\
modedit_undo_redo.o\
block_module_editor.o\
onrightclick.o\
......
......@@ -18,6 +18,7 @@
#include "trigo.h"
#include "cell.h"
#include "worksheet.h"
#include "zones.h"
#include "protos.h"
......
......@@ -8,6 +8,10 @@
#include <vector>
/* install function for DialogNonCopperZonesEditor dialog frame :*/
bool InstallDialogNonCopperZonesEditor(WinEDA_PcbFrame* aParent, ZONE_CONTAINER* aZone);
/***************/
/* PAD_CONNECT.CPP */
/***************/
......
......@@ -173,7 +173,10 @@ void WinEDA_PcbFrame::Trace_Pcb( wxDC* DC, int mode )
// Areas must be drawn here only if not moved or dragged,
// because these areas are drawn by ManageCursor() in a specific manner
if ( (edge_zone->m_Flags & (IN_EDIT | IS_DRAGGED | IS_MOVED)) == 0 )
{
edge_zone->Draw( DrawPanel, DC, mode );
edge_zone->DrawFilledArea( DrawPanel, DC, mode );
}
}
// 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;
#include "protos.h"
#include "zones.h"
bool verbose = false; // false if zone outline diags must not be shown
// Outline creation:
......@@ -46,25 +48,13 @@ static void Show_Zone_Corner_Or_Outline_While_Move_Mouse( WinEDA_DrawPanel* pane
bool erase );
/* Local variables */
static bool Zone_45_Only = FALSE;
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_Zone_Hatching; // Option to show the zone area (outlines only, short hatches or full hatches
static int s_NetcodeSelection; // Net code selection for the current zone
static wxPoint s_CornerInitialPosition; // Used to abort a move corner command
static bool s_CornerIsNew; // Used to abort a move corner command (if it is a new corner, it must be deleted)
static bool s_AddCutoutToCurrentZone; // if true, the next outline will be addes to s_CurrentZone
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
};
static int s_NetcodeSelection; // Net code selection for the current zone
static wxPoint s_CornerInitialPosition; // Used to abort a move corner command
static bool s_CornerIsNew; // Used to abort a move corner command (if it is a new corner, it must be deleted)
static bool s_AddCutoutToCurrentZone; // if true, the next outline will be addes to s_CurrentZone
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
#include "dialog_zones_by_polygon.cpp"
......@@ -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
*/
{
/* Show the Net */
if( g_HightLigt_Status && DC )
if( zone_container->IsOnCopperLayer() ) /* Show the Net */
{
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();
if( DC )
Hight_Light( DC );
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet();
if( DC )
Hight_Light( DC );
}
zone_container->m_Flags = IN_EDIT;
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,
* 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;
DrawPanel->ManageCurseur = Show_Zone_Corner_Or_Outline_While_Move_Mouse;
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_CurrentZone = NULL;
}
......@@ -279,13 +271,16 @@ void WinEDA_PcbFrame::Start_Move_Zone_Outlines( wxDC* DC, ZONE_CONTAINER* zone_c
*/
{
/* 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();
Hight_Light( DC );
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet();
Hight_Light( DC );
}
zone_container->m_Flags = IS_MOVED;
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
/* Combine zones if possible */
wxBusyCursor dummy;
// int layer = zone_container->GetLayer();
// m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_XOR, layer );
m_Pcb->AreaPolygonModified( zone_container, true, verbose );
// m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_OR, layer );
DrawPanel->Refresh();
......@@ -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
* 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();
......@@ -357,20 +350,32 @@ void WinEDA_PcbFrame::Remove_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_contain
if( zone_container->m_Poly->GetNumCorners() <= 3 )
{
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 );
return;
}
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 );
// modify zones outlines according to the new zone_container shape
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
if( ii < 0 )
......@@ -506,38 +511,50 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
zone = m_Pcb->m_CurrentZoneContour;
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;
WinEDA_ZoneFrame* frame = new WinEDA_ZoneFrame( this );
int diag = frame->ShowModal();
frame->Destroy();
zone->SetLayer( ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer );
if( zone->IsOnCopperLayer() )
{ // Put a zone on a copper layer
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->m_IgnoreMouseEvents = FALSE;
if( diag == ZONE_ABORT )
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();
s_Zone_Hatching = s_CurrentZone->m_Poly->GetHatchStyle();
( (PCB_SCREEN*) GetScreen() )->m_Active_Layer = g_CurrentZone_Layer =
s_CurrentZone->GetLayer();
g_Zone_Hatching = s_CurrentZone->m_Poly->GetHatchStyle();
}
/* Show the Net */
if( g_HightLigt_Status && (g_HightLigth_NetCode != s_NetcodeSelection) )
/* Show the Net for zones on copper layers */
if( g_CurrentZone_Layer < FIRST_NO_COPPER_LAYER )
{
Hight_Light( DC ); // Remove old hightlight selection
}
if( s_CurrentZone )
s_NetcodeSelection = s_CurrentZone->GetNet();
g_HightLigth_NetCode = s_NetcodeSelection;
Hight_Light( DC );
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_AddCutoutToCurrentZone )
s_CurrentZone = NULL; // the zone is used only once
}
......@@ -546,17 +563,17 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
if( zone->GetNumCorners() == 0 )
{
zone->m_Flags = IS_NEW;
zone->SetLayer( s_Zone_Layer );
zone->SetLayer( g_CurrentZone_Layer );
zone->SetNet( s_NetcodeSelection );
zone->m_TimeStamp = GetTimeStamp();
zone->m_PadOption = s_Zone_Pad_Options;
zone->m_ZoneClearance = g_DesignSettings.m_ZoneClearence;
zone->m_GridFillValue = g_GridRoutingSize;
zone->m_Poly->Start( s_Zone_Layer,
GetScreen()->m_Curseur.x, GetScreen()->m_Curseur.y,
s_Zone_Hatching );
zone->m_Poly->Start( g_CurrentZone_Layer,
GetScreen()->m_Curseur.x, GetScreen()->m_Curseur.y,
g_Zone_Hatching );
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->RemoveAllContours();
......@@ -566,7 +583,7 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
// WinEDA_PcbFrame::SetCurItem() calls Display_Infos().
GetScreen()->SetCurItem( NULL );
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;
}
......@@ -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 */
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 );
SetCurItem( zone ); // calls Display_Infos().
......@@ -620,14 +638,17 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC )
// Validate the current edge:
int icorner = zone->GetNumCorners() - 1;
if( Drc_On && m_drc->Drc( zone, icorner - 1 ) == BAD_DRC ) // we can't validate last edge
return false;
if( Drc_On && m_drc->Drc( zone, icorner ) == BAD_DRC ) // we can't validate the closing edge
if( zone->IsOnCopperLayer() )
{
DisplayError( this,
_( "DRC error: closing this area creates a drc error with an other area" ) );
DrawPanel->MouseToCursorSchema();
return false;
if( Drc_On && m_drc->Drc( zone, icorner - 1 ) == BAD_DRC ) // we can't validate last edge
return false;
if( Drc_On && m_drc->Drc( zone, icorner ) == BAD_DRC ) // we can't validate the closing edge
{
DisplayError( this,
_( "DRC error: closing this area creates a drc error with an other area" ) );
DrawPanel->MouseToCursorSchema();
return false;
}
}
zone->m_Flags = 0;
......@@ -640,6 +661,7 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC )
// Undraw old drawings, because they can have important changes
int layer = zone->GetLayer();
m_Pcb->RedrawAreasOutlines( DrawPanel, DC, GR_XOR, layer );
m_Pcb->RedrawFilledAreas( DrawPanel, DC, GR_XOR, layer );
/* Put edges in list */
if( s_CurrentZone == NULL )
......@@ -670,6 +692,7 @@ bool WinEDA_PcbFrame::End_Zone( wxDC* DC )
// Redraw the real edge zone :
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
if( ii < 0 )
......@@ -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 */
if( Zone_45_Only )
if( g_Zone_45_Only )
{
// calculate the new position as allowed
wxPoint StartPoint = zone->GetCornerPosition( icorner - 1 );
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 );
......@@ -730,11 +753,18 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container
* Edit params (layer, clearance, ...) for a zone outline
*/
{
int diag;
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->m_IgnoreMouseEvents = FALSE;
......@@ -748,12 +778,12 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container
edge_zone->Draw( DrawPanel, DC, GR_XOR );
}
zone_container->SetLayer( s_Zone_Layer );
zone_container->SetLayer( g_CurrentZone_Layer );
zone_container->SetNet( s_NetcodeSelection );
EQUIPOT* net = m_Pcb->FindNet( s_NetcodeSelection );
if( net )
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_ZoneClearance = g_DesignSettings.m_ZoneClearence;
zone_container->m_GridFillValue = g_GridRoutingSize;
......@@ -782,7 +812,7 @@ void WinEDA_PcbFrame::Delete_Zone_Contour( wxDC* DC, ZONE_CONTAINER* zone_contai
* 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();
......@@ -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)
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();
......
#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,
return test;
// now see if we need to clip against other areas
int layer = modified_area->GetLayer();
bool bCheckAllAreas = false;
if( test == 1 )
bCheckAllAreas = true;
......@@ -336,6 +337,15 @@ int BOARD::AreaPolygonModified( ZONE_CONTAINER* modified_area,
if( bCheckAllAreas )
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;
}
......@@ -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++ )
{
ZONE_CONTAINER* Area_Ref = GetArea( ia );
if ( ! Area_Ref->IsOnCopperLayer() )
continue;
if( aArea_To_Examine && (aArea_To_Examine != Area_Ref) )
continue;
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
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;
wxPoint start = aArea->GetCornerPosition( aCornerIndex );
......
......@@ -250,9 +250,14 @@ int CPolyLine::AddPolygonsToBoolEng( Bool_Engine* aBooleng,
* @param aEnd_contour: ending contour number (-1 = all after aStart_contour)
* combining intersecting contours if possible
* @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
*/
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 )
{
......@@ -493,7 +498,7 @@ int CPolyLine::MakeKboolPoly( int aStart_contour, int aEnd_contour, std::vector<
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 )
delete m_Kbool_Poly_Engine;
m_Kbool_Poly_Engine = booleng;
......
......@@ -28,7 +28,7 @@
* @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
* and polygons added counter clockwise are holes (default)
*/
void ArmBoolEng( Bool_Engine* aBooleng, bool aConvertHoles = false );
......@@ -199,11 +199,16 @@ public:
* @param aEnd_contour: ending contour number (-1 = all after aStart_contour)
* combining intersecting contours if possible
* @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
*/
int MakeKboolPoly( int aStart_contour = -1,
int aEnd_contour = -1,
std::vector<CArc> * arc_array = NULL );
std::vector<CArc> * arc_array = NULL,
bool aConvertHoles = false);
/** Function NormalizeWithKbool
* Use the Kbool Library to clip contours: if outlines are crossing, the self-crossing polygon
......@@ -217,6 +222,16 @@ public:
* @return number of external contours, or -1 if error
*/
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:
int m_layer; // layer to draw on
......
update=19/9/2008-05:53:18
update=23/9/2008-19:07:03
version=1
last_client=eeschema
[general]
......@@ -140,5 +140,6 @@ LibName24=display
LibName25=cypress
LibName26=siliconi
LibName27=opto
LibName28=contrib
LibName29=valves
LibName28=atmel
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