use wxFormBuilder in dialog zone, and minor enhancements

This commit is contained in:
charras 2008-10-09 19:13:25 +00:00
parent b18eedb432
commit ca51c6eb1c
18 changed files with 2091 additions and 2570 deletions

Binary file not shown.

View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: kicad\n" "Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-07 20:39+0100\n" "POT-Creation-Date: 2008-10-09 22:04+0100\n"
"PO-Revision-Date: 2008-10-07 20:47+0100\n" "PO-Revision-Date: 2008-10-09 22:05+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n" "Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -347,7 +347,7 @@ msgstr "dimension"
#: pcbnew/class_marker.cpp:133 #: pcbnew/class_marker.cpp:133
#: pcbnew/class_text_mod.cpp:503 #: pcbnew/class_text_mod.cpp:503
#: pcbnew/class_track.cpp:852 #: pcbnew/class_track.cpp:852
#: pcbnew/class_zone.cpp:722 #: pcbnew/class_zone.cpp:758
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
@ -370,7 +370,7 @@ msgstr "Segment"
#: pcbnew/class_pcb_text.cpp:190 #: pcbnew/class_pcb_text.cpp:190
#: pcbnew/class_text_mod.cpp:516 #: pcbnew/class_text_mod.cpp:516
#: pcbnew/class_track.cpp:909 #: pcbnew/class_track.cpp:909
#: pcbnew/class_zone.cpp:756 #: pcbnew/class_zone.cpp:792
msgid "Layer" msgid "Layer"
msgstr "Couche" msgstr "Couche"
@ -571,12 +571,12 @@ msgid "Display"
msgstr "Affichage" msgstr "Affichage"
#: pcbnew/class_track.cpp:868 #: pcbnew/class_track.cpp:868
#: pcbnew/class_zone.cpp:744 #: pcbnew/class_zone.cpp:780
msgid "NetName" msgid "NetName"
msgstr "NetName" msgstr "NetName"
#: pcbnew/class_track.cpp:873 #: pcbnew/class_track.cpp:873
#: pcbnew/class_zone.cpp:752 #: pcbnew/class_zone.cpp:788
msgid "NetCode" msgid "NetCode"
msgstr "NetCode" msgstr "NetCode"
@ -588,26 +588,30 @@ msgstr "Standard"
msgid "Diam" msgid "Diam"
msgstr "Diam" msgstr "Diam"
#: pcbnew/class_zone.cpp:747 #: pcbnew/class_zone.cpp:783
msgid "Non Copper Zone" msgid "Non Copper Zone"
msgstr "Zone non Cuivre" msgstr "Zone non Cuivre"
#: pcbnew/class_zone.cpp:760 #: pcbnew/class_zone.cpp:796
msgid "Corners" msgid "Corners"
msgstr "Sommets" msgstr "Sommets"
#: pcbnew/class_zone.cpp:765 #: pcbnew/class_zone.cpp:802
msgid "No Grid" msgid "No Grid"
msgstr "Pas de Grille" msgstr "Pas de Grille"
#: pcbnew/class_zone.cpp:766 #: pcbnew/class_zone.cpp:803
msgid "Fill Grid" msgid "Fill Grid"
msgstr "Grille de Remplissage" msgstr "Grille de Remplissage"
#: pcbnew/class_zone.cpp:770 #: pcbnew/class_zone.cpp:808
msgid "Hatch lines" msgid "Hatch lines"
msgstr "Lignes de Hachure" msgstr "Lignes de Hachure"
#: pcbnew/class_zone.cpp:814
msgid "Corners in DrawList"
msgstr ""
#: pcbnew/clean.cpp:179 #: pcbnew/clean.cpp:179
msgid "Delete unconnected tracks:" msgid "Delete unconnected tracks:"
msgstr "Suppression Pistes non connectées" msgstr "Suppression Pistes non connectées"
@ -1841,101 +1845,6 @@ msgstr "Epais. Piste"
msgid "Mask clearance" msgid "Mask clearance"
msgstr "Retrait Masque" msgstr "Retrait Masque"
#: pcbnew/dialog_zones_by_polygon.cpp:153
#: pcbnew/dialog_zones_by_polygon.cpp:154
#: pcbnew/dialog_zones_by_polygon.cpp:155
#: pcbnew/dialog_zones_by_polygon.cpp:156
msgid "0.00000"
msgstr "0.00000"
#: pcbnew/dialog_zones_by_polygon.cpp:157
msgid "No Grid (For tests only!)"
msgstr ""
#: pcbnew/dialog_zones_by_polygon.cpp:158
msgid "Grid Size for Filling:"
msgstr "Taille de Grille pour Remplissage:"
#: pcbnew/dialog_zones_by_polygon.cpp:162
msgid "Zone clearance value (mm):"
msgstr "Valeur isolation zone (mm):"
#: pcbnew/dialog_zones_by_polygon.cpp:170
msgid "Hatched Outline"
msgstr "Contour Hachuré"
#: pcbnew/dialog_zones_by_polygon.cpp:171
msgid "Full Hatched"
msgstr "Pleinement Hachuré"
#: pcbnew/dialog_zones_by_polygon.cpp:172
msgid "Outlines Appearance"
msgstr "Aspect des Contours"
#: pcbnew/dialog_zones_by_polygon.cpp:182
msgid "Include Pads"
msgstr "Inclure Pads"
#: pcbnew/dialog_zones_by_polygon.cpp:183
msgid "Thermal"
msgstr "Thermique"
#: pcbnew/dialog_zones_by_polygon.cpp:184
msgid "Exclude Pads"
msgstr "Exclure Pads"
#: pcbnew/dialog_zones_by_polygon.cpp:185
msgid "Pad options:"
msgstr "Options pads"
#: pcbnew/dialog_zones_by_polygon.cpp:192
msgid "Any"
msgstr "Tout"
#: pcbnew/dialog_zones_by_polygon.cpp:193
msgid "H , V and 45 deg"
msgstr "H, V et 45 deg"
#: pcbnew/dialog_zones_by_polygon.cpp:194
msgid "Zone edges orient:"
msgstr "Direction contours zone:"
#: pcbnew/dialog_zones_by_polygon.cpp:213
msgid "Alphabetic"
msgstr "Alphabetique"
#: pcbnew/dialog_zones_by_polygon.cpp:214
msgid "Advanced"
msgstr "Avancé"
#: pcbnew/dialog_zones_by_polygon.cpp:215
msgid "Net sorting:"
msgstr "Tri des Equipotentielles:"
#: pcbnew/dialog_zones_by_polygon.cpp:219
msgid "Filter"
msgstr "Filtre"
#: pcbnew/dialog_zones_by_polygon.cpp:224
msgid "Do not list net names which match with this text, in advanced mode"
msgstr "Ne liste pas les noms de nets qui correspondent à ce texte, en mode avancé"
#: pcbnew/dialog_zones_by_polygon.cpp:263
msgid "Zone clearance value:"
msgstr "Valeur isolation zone:"
#: pcbnew/dialog_zones_by_polygon.cpp:266
msgid "Grid :"
msgstr "Grille:"
#: pcbnew/dialog_zones_by_polygon.cpp:566
msgid "Error : you must choose a layer"
msgstr "Erreur. Vous devez choisir une couche"
#: pcbnew/dialog_zones_by_polygon.cpp:575
msgid "Error : you must choose a net name"
msgstr "Erreur. Vous devez choisir une équipotentielle"
#: pcbnew/pcbplot.cpp:147 #: pcbnew/pcbplot.cpp:147
#: pcbnew/pcbplot.cpp:272 #: pcbnew/pcbplot.cpp:272
msgid "Plot" msgid "Plot"
@ -2303,7 +2212,6 @@ msgid "GenCAD file:"
msgstr "Fichier GenCAD:" msgstr "Fichier GenCAD:"
#: pcbnew/export_gencad.cpp:83 #: pcbnew/export_gencad.cpp:83
#: pcbnew/files.cpp:352
msgid "Unable to create " msgid "Unable to create "
msgstr "Impossible de créer " msgstr "Impossible de créer "
@ -2649,6 +2557,7 @@ msgid "Search footprint"
msgstr "Cherche Module" msgstr "Cherche Module"
#: pcbnew/modules.cpp:305 #: pcbnew/modules.cpp:305
#: pcbnew/onrightclick.cpp:730
msgid "Delete Module" msgid "Delete Module"
msgstr "Supprimer Module" msgstr "Supprimer Module"
@ -2845,22 +2754,18 @@ msgid "Read Global AutoRouter Data"
msgstr "Lire Données de L'autorouteur global" msgstr "Lire Données de L'autorouteur global"
#: pcbnew/onrightclick.cpp:447 #: pcbnew/onrightclick.cpp:447
#: pcbnew/modedit_onclick.cpp:206
msgid "Cancel Block" msgid "Cancel Block"
msgstr "Annuler Bloc" msgstr "Annuler Bloc"
#: pcbnew/onrightclick.cpp:449 #: pcbnew/onrightclick.cpp:449
#: pcbnew/modedit_onclick.cpp:208
msgid "Zoom Block (drag middle mouse)" msgid "Zoom Block (drag middle mouse)"
msgstr "Zoom Bloc (drag bouton du milieu souris)" msgstr "Zoom Bloc (drag bouton du milieu souris)"
#: pcbnew/onrightclick.cpp:452 #: pcbnew/onrightclick.cpp:452
#: pcbnew/modedit_onclick.cpp:211
msgid "Place Block" msgid "Place Block"
msgstr "Place Bloc" msgstr "Place Bloc"
#: pcbnew/onrightclick.cpp:454 #: pcbnew/onrightclick.cpp:454
#: pcbnew/modedit_onclick.cpp:213
msgid "Copy Block (shift + drag mouse)" msgid "Copy Block (shift + drag mouse)"
msgstr "Copie Bloc (shift + drag mouse)" msgstr "Copie Bloc (shift + drag mouse)"
@ -2869,12 +2774,10 @@ msgid "Flip Block (alt + drag mouse)"
msgstr "Inversion Bloc (alt + drag mouse)" msgstr "Inversion Bloc (alt + drag mouse)"
#: pcbnew/onrightclick.cpp:458 #: pcbnew/onrightclick.cpp:458
#: pcbnew/modedit_onclick.cpp:217
msgid "Rotate Block (ctrl + drag mouse)" msgid "Rotate Block (ctrl + drag mouse)"
msgstr "Rotation Bloc (ctrl + drag mouse)" msgstr "Rotation Bloc (ctrl + drag mouse)"
#: pcbnew/onrightclick.cpp:460 #: pcbnew/onrightclick.cpp:460
#: pcbnew/modedit_onclick.cpp:219
msgid "Delete Block (shift+ctrl + drag mouse)" msgid "Delete Block (shift+ctrl + drag mouse)"
msgstr "Effacement Bloc (shift+ctrl + drag mouse)" msgstr "Effacement Bloc (shift+ctrl + drag mouse)"
@ -3113,23 +3016,19 @@ msgstr "Change côté"
#: pcbnew/onrightclick.cpp:724 #: pcbnew/onrightclick.cpp:724
#: pcbnew/onrightclick.cpp:758 #: pcbnew/onrightclick.cpp:758
#: pcbnew/onrightclick.cpp:862 #: pcbnew/onrightclick.cpp:862
#: pcbnew/modedit_onclick.cpp:306
msgid "Edit" msgid "Edit"
msgstr "Editer" msgstr "Editer"
#: pcbnew/onrightclick.cpp:756 #: pcbnew/onrightclick.cpp:756
#: pcbnew/onrightclick.cpp:860 #: pcbnew/onrightclick.cpp:860
#: pcbnew/modedit_onclick.cpp:241
msgid "Rotate" msgid "Rotate"
msgstr "Rotation" msgstr "Rotation"
#: pcbnew/onrightclick.cpp:795 #: pcbnew/onrightclick.cpp:795
#: pcbnew/modedit_onclick.cpp:263
msgid "Edit Pad" msgid "Edit Pad"
msgstr "Edit Pad" msgstr "Edit Pad"
#: pcbnew/onrightclick.cpp:799 #: pcbnew/onrightclick.cpp:799
#: pcbnew/modedit_onclick.cpp:265
msgid "New Pad Settings" msgid "New Pad Settings"
msgstr "Nouvelles Caract. Pads" msgstr "Nouvelles Caract. Pads"
@ -3138,7 +3037,6 @@ msgid "Copy current pad settings to this pad"
msgstr "Copier les réglages courants pour ce pad" msgstr "Copier les réglages courants pour ce pad"
#: pcbnew/onrightclick.cpp:803 #: pcbnew/onrightclick.cpp:803
#: pcbnew/modedit_onclick.cpp:267
msgid "Export Pad Settings" msgid "Export Pad Settings"
msgstr "Exporte Caract. Pads" msgstr "Exporte Caract. Pads"
@ -3147,7 +3045,6 @@ msgid "Copy this pad settings to current pad settings"
msgstr "Copier les caractéristiques de ce pad vers les caractéristiques courantes" msgstr "Copier les caractéristiques de ce pad vers les caractéristiques courantes"
#: pcbnew/onrightclick.cpp:810 #: pcbnew/onrightclick.cpp:810
#: pcbnew/modedit_onclick.cpp:274
msgid "Global Pad Settings" msgid "Global Pad Settings"
msgstr "Edition Globale des pads" msgstr "Edition Globale des pads"
@ -3593,6 +3490,7 @@ msgstr "Impossible de créer fichier "
#: pcbnew/plotgerb.cpp:82 #: pcbnew/plotgerb.cpp:82
#: pcbnew/plothpgl.cpp:74 #: pcbnew/plothpgl.cpp:74
#: pcbnew/plotps.cpp:58
msgid "File" msgid "File"
msgstr "Fichier" msgstr "Fichier"
@ -3825,21 +3723,21 @@ msgstr "Change module %s (%s) "
msgid "Cmp files:" msgid "Cmp files:"
msgstr "Fichiers Cmp: " msgstr "Fichiers Cmp: "
#: pcbnew/zones_by_polygon.cpp:330 #: pcbnew/zones_by_polygon.cpp:328
#: pcbnew/zones_by_polygon.cpp:386 #: pcbnew/zones_by_polygon.cpp:384
#: pcbnew/zones_by_polygon.cpp:703 #: pcbnew/zones_by_polygon.cpp:701
msgid "Area: DRC outline error" msgid "Area: DRC outline error"
msgstr "Zone; Erreur DRC sur contour" msgstr "Zone; Erreur DRC sur contour"
#: pcbnew/zones_by_polygon.cpp:586 #: pcbnew/zones_by_polygon.cpp:584
msgid "DRC error: this start point is inside or too close an other area" msgid "DRC error: this start point is inside or too close an other area"
msgstr "Erreur DRC: ce point de départ est a l'intérieur d'une autre zone ou trop proche" msgstr "Erreur DRC: ce point de départ est a l'intérieur d'une autre zone ou trop proche"
#: pcbnew/zones_by_polygon.cpp:648 #: pcbnew/zones_by_polygon.cpp:646
msgid "DRC error: closing this area creates a drc error with an other area" msgid "DRC error: closing this area creates a drc error with an other area"
msgstr "Erreur DRC: la fermeture de cette zone crée une erreur DRC avec une autre zone" msgstr "Erreur DRC: la fermeture de cette zone crée une erreur DRC avec une autre zone"
#: pcbnew/zones_by_polygon.cpp:887 #: pcbnew/zones_by_polygon.cpp:885
msgid "No Net" msgid "No Net"
msgstr "No Net" msgstr "No Net"
@ -4283,12 +4181,10 @@ msgid "Sizes and Widths"
msgstr "Dims. et Epaiss." msgstr "Dims. et Epaiss."
#: pcbnew/menubarmodedit.cpp:41 #: pcbnew/menubarmodedit.cpp:41
#: pcbnew/menubarpcb.cpp:229
msgid "Adjust width for texts and drawings" msgid "Adjust width for texts and drawings"
msgstr "Ajuster dims pour textes et graphiques" msgstr "Ajuster dims pour textes et graphiques"
#: pcbnew/menubarmodedit.cpp:46 #: pcbnew/menubarmodedit.cpp:46
#: pcbnew/menubarpcb.cpp:234
msgid "Adjust size,shape,layers... for Pads" msgid "Adjust size,shape,layers... for Pads"
msgstr "Ajuster taille, forme, couches... pour pads" msgstr "Ajuster taille, forme, couches... pour pads"
@ -4297,52 +4193,42 @@ msgid "User Grid Size"
msgstr "Dim Grille utilisteur" msgstr "Dim Grille utilisteur"
#: pcbnew/menubarmodedit.cpp:51 #: pcbnew/menubarmodedit.cpp:51
#: pcbnew/menubarpcb.cpp:224
msgid "Adjust User Grid" msgid "Adjust User Grid"
msgstr "Ajuster Grille utilisateur" msgstr "Ajuster Grille utilisateur"
#: pcbnew/menubarmodedit.cpp:64 #: pcbnew/menubarmodedit.cpp:64
#: pcbnew/menubarpcb.cpp:292
msgid "&Contents" msgid "&Contents"
msgstr "&Contenu" msgstr "&Contenu"
#: pcbnew/menubarmodedit.cpp:65 #: pcbnew/menubarmodedit.cpp:65
#: pcbnew/menubarpcb.cpp:292
msgid "Open the pcbnew manual" msgid "Open the pcbnew manual"
msgstr "Ouvrir la documentation de pcbnew" msgstr "Ouvrir la documentation de pcbnew"
#: pcbnew/menubarmodedit.cpp:73 #: pcbnew/menubarmodedit.cpp:73
#: pcbnew/menubarpcb.cpp:296
msgid "&About pcbnew" msgid "&About pcbnew"
msgstr "&Au sujet de r Pcbnew" msgstr "&Au sujet de r Pcbnew"
#: pcbnew/menubarmodedit.cpp:74 #: pcbnew/menubarmodedit.cpp:74
#: pcbnew/menubarpcb.cpp:296
msgid "About pcbnew PCB designer" msgid "About pcbnew PCB designer"
msgstr "Au sujet de Pcbnew, concption de PCB" msgstr "Au sujet de Pcbnew, concption de PCB"
#: pcbnew/menubarmodedit.cpp:82 #: pcbnew/menubarmodedit.cpp:82
#: pcbnew/menubarpcb.cpp:304
msgid "3D Display" msgid "3D Display"
msgstr "3D Visu" msgstr "3D Visu"
#: pcbnew/menubarmodedit.cpp:82 #: pcbnew/menubarmodedit.cpp:82
#: pcbnew/menubarpcb.cpp:304
msgid "Show board in 3D viewer" msgid "Show board in 3D viewer"
msgstr "Visualisation du circuit en 3D" msgstr "Visualisation du circuit en 3D"
#: pcbnew/menubarmodedit.cpp:86 #: pcbnew/menubarmodedit.cpp:86
#: pcbnew/menubarpcb.cpp:310
msgid "&Dimensions" msgid "&Dimensions"
msgstr "&Dimensions" msgstr "&Dimensions"
#: pcbnew/menubarmodedit.cpp:87 #: pcbnew/menubarmodedit.cpp:87
#: pcbnew/menubarpcb.cpp:313
msgid "&3D Display" msgid "&3D Display"
msgstr "&3D Visu" msgstr "&3D Visu"
#: pcbnew/menubarmodedit.cpp:88 #: pcbnew/menubarmodedit.cpp:88
#: pcbnew/menubarpcb.cpp:314
msgid "&Help" msgid "&Help"
msgstr "&Aide" msgstr "&Aide"
@ -4638,10 +4524,28 @@ msgstr "&Divers"
msgid "P&ostprocess" msgid "P&ostprocess"
msgstr "P&ostprocesseurs" msgstr "P&ostprocesseurs"
#: pcbnew/dialog_non_copper_zones_properties.cpp:28
#: pcbnew/dialog_copper_zones_frame.cpp:67
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:45
msgid "Hatched Outline"
msgstr "Contour Hachuré"
#: pcbnew/dialog_non_copper_zones_properties.cpp:28
#: pcbnew/dialog_copper_zones_frame.cpp:67
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:45
msgid "Full Hatched"
msgstr "Pleinement Hachuré"
#: pcbnew/dialog_non_copper_zones_properties.cpp:30 #: pcbnew/dialog_non_copper_zones_properties.cpp:30
msgid "Outlines Appearence" msgid "Outlines Appearence"
msgstr "Aspect des Contours" msgstr "Aspect des Contours"
#: pcbnew/dialog_non_copper_zones_properties.cpp:34
#: pcbnew/dialog_copper_zones_frame.cpp:76
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:65
msgid "Any"
msgstr "Tout"
#: pcbnew/dialog_non_copper_zones_properties.cpp:34 #: pcbnew/dialog_non_copper_zones_properties.cpp:34
msgid "H, V and 45 deg" msgid "H, V and 45 deg"
msgstr "H, V et 45 deg" msgstr "H, V et 45 deg"
@ -4654,6 +4558,23 @@ msgstr "Direction contours zone"
msgid "Layer selection:" msgid "Layer selection:"
msgstr "Sélection couche:" msgstr "Sélection couche:"
#: pcbnew/zones_non_copper_type_functions.cpp:152
#: pcbnew/dialog_copper_zones.cpp:329
msgid "Error : you must choose a layer"
msgstr "Erreur. Vous devez choisir une couche"
#: pcbnew/dialog_copper_zones.cpp:64
msgid "Zone clearance value:"
msgstr "Valeur isolation zone:"
#: pcbnew/dialog_copper_zones.cpp:67
msgid "Grid :"
msgstr "Grille:"
#: pcbnew/dialog_copper_zones.cpp:338
msgid "Error : you must choose a net name"
msgstr "Erreur. Vous devez choisir une équipotentielle"
#: pcbnew/dialog_setup_libs.cpp:97 #: pcbnew/dialog_setup_libs.cpp:97
msgid "from " msgid "from "
msgstr "De " msgstr "De "
@ -4730,6 +4651,90 @@ msgstr "Fichier placement coté cuivre:"
msgid "Module count" msgid "Module count"
msgstr "Nb Modules" msgstr "Nb Modules"
#: pcbnew/dialog_copper_zones_frame.cpp:33
msgid "Zone Fill Options:"
msgstr "Options de Remplissage de Zone:"
#: pcbnew/dialog_copper_zones_frame.cpp:35
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:32
msgid "0.00000"
msgstr "0.00000"
#: pcbnew/dialog_copper_zones_frame.cpp:35
msgid "No Grid (For tests only!)"
msgstr ""
#: pcbnew/dialog_copper_zones_frame.cpp:37
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:34
msgid "Grid Size for Filling:"
msgstr "Taille de Grille pour Remplissage:"
#: pcbnew/dialog_copper_zones_frame.cpp:41
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:38
msgid "Zone clearance value (mm):"
msgstr "Valeur isolation zone (mm):"
#: pcbnew/dialog_copper_zones_frame.cpp:48
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:56
msgid "Include Pads"
msgstr "Inclure Pads"
#: pcbnew/dialog_copper_zones_frame.cpp:48
msgid "Thermal Relief"
msgstr "Frein Thermique"
#: pcbnew/dialog_copper_zones_frame.cpp:48
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:56
msgid "Exclude Pads"
msgstr "Exclure Pads"
#: pcbnew/dialog_copper_zones_frame.cpp:50
msgid "Pad in Zone:"
msgstr "Pads en Zone:"
#: pcbnew/dialog_copper_zones_frame.cpp:65
msgid "Outlines Options:"
msgstr "Options des Contours:"
#: pcbnew/dialog_copper_zones_frame.cpp:69
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:47
msgid "Outlines Appearance"
msgstr "Aspect des Contours"
#: pcbnew/dialog_copper_zones_frame.cpp:76
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:65
msgid "H , V and 45 deg"
msgstr "H, V et 45 deg"
#: pcbnew/dialog_copper_zones_frame.cpp:78
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:67
msgid "Zone edges orient:"
msgstr "Direction contours zone:"
#: pcbnew/dialog_copper_zones_frame.cpp:102
msgid "Nets Display Options:"
msgstr "Options d'Affichage des Nets"
#: pcbnew/dialog_copper_zones_frame.cpp:104
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:88
msgid "Alphabetic"
msgstr "Alphabetique"
#: pcbnew/dialog_copper_zones_frame.cpp:104
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:88
msgid "Advanced"
msgstr "Avancé"
#: pcbnew/dialog_copper_zones_frame.cpp:106
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:90
msgid "Net sorting:"
msgstr "Tri des Equipotentielles:"
#: pcbnew/dialog_copper_zones_frame.cpp:110
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:94
msgid "Filter"
msgstr "Filtre"
#: pcbnew/dialog_pad_edit.cpp:157 #: pcbnew/dialog_pad_edit.cpp:157
msgid "Pad Num :" msgid "Pad Num :"
msgstr "Num Pad :" msgstr "Num Pad :"
@ -4839,6 +4844,18 @@ msgstr "couche E.C.O.2"
msgid "Draft layer" msgid "Draft layer"
msgstr "Couche dessin" msgstr "Couche dessin"
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:32
msgid "|No Grid (For tests only!)"
msgstr ""
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:56
msgid "Thermal"
msgstr "Thermique"
#: pcbnew/dialog_copper_zones_frame.cpp.cpp:58
msgid "Pad options:"
msgstr "Options pads"
#: pcbnew/pcbframe.cpp:280 #: pcbnew/pcbframe.cpp:280
msgid "Board modified, Save before exit ?" msgid "Board modified, Save before exit ?"
msgstr "Circuit Imprimé modifiée, Sauver avant de quitter ?" msgstr "Circuit Imprimé modifiée, Sauver avant de quitter ?"
@ -7374,7 +7391,6 @@ msgid "Edit pins part per part (Carefully use!)"
msgstr "Editer pins unité par unité (Utiliser en connaissance de cause)" msgstr "Editer pins unité par unité (Utiliser en connaissance de cause)"
#: eeschema/tool_lib.cpp:238 #: eeschema/tool_lib.cpp:238
#: eeschema/tool_viewlib.cpp:128
#, c-format #, c-format
msgid "Part %c" msgid "Part %c"
msgstr "Composant %c" msgstr "Composant %c"
@ -8312,6 +8328,7 @@ msgid "1:1 zoom"
msgstr "1:1 zoom" msgstr "1:1 zoom"
#: cvpcb/genorcad.cpp:134 #: cvpcb/genorcad.cpp:134
#: cvpcb/writenetlistpcbnew.cpp:168
#, c-format #, c-format
msgid "%s %s pin %s : Different Nets" msgid "%s %s pin %s : Different Nets"
msgstr "%s %s pin %s : Nets Differents" msgstr "%s %s pin %s : Nets Differents"
@ -8322,6 +8339,7 @@ msgid "Components: %d (free: %d)"
msgstr "Composants: %d (libres: %d)" msgstr "Composants: %d (libres: %d)"
#: cvpcb/init.cpp:112 #: cvpcb/init.cpp:112
#: cvpcb/cvframe.cpp:340
#, c-format #, c-format
msgid "Componants: %d (free: %d)" msgid "Componants: %d (free: %d)"
msgstr "Composants: %d (libres: %d)" msgstr "Composants: %d (libres: %d)"
@ -10190,10 +10208,6 @@ msgstr "Dialog"
msgid "Tracks and Vias Sizes" msgid "Tracks and Vias Sizes"
msgstr "Dims Pistes et Vias" msgstr "Dims Pistes et Vias"
#: pcbnew/dialog_zones_by_polygon.h:53
msgid "Fill Zones Options"
msgstr "Options de Remplissage de Zone"
#: pcbnew/drc_stuff.h:147 #: pcbnew/drc_stuff.h:147
#, c-format #, c-format
msgid "ErrType(%d): <b>%s</b><ul><li> %s: %s </li><li> %s: %s </li></ul>" msgid "ErrType(%d): <b>%s</b><ul><li> %s: %s </li><li> %s: %s </li></ul>"
@ -10298,6 +10312,10 @@ msgstr "Propriétés des Zones sur couches non cuivre"
msgid "Pad properties" msgid "Pad properties"
msgstr "Propriétés des Pads" msgstr "Propriétés des Pads"
#: pcbnew/dialog_copper_zones_frame.h:83
msgid "Fill Zones Options"
msgstr "Options de Remplissage de Zone"
#: pcbnew/dialog_gendrill.h:50 #: pcbnew/dialog_gendrill.h:50
msgid "Drill Files Generation" msgid "Drill Files Generation"
msgstr "Génération Fichiers de Perçagee" msgstr "Génération Fichiers de Perçagee"
@ -10606,6 +10624,9 @@ msgstr "Imprimer"
msgid "Create SVG file" msgid "Create SVG file"
msgstr "Créer Fichier SVG" msgstr "Créer Fichier SVG"
#~ msgid "Do not list net names which match with this text, in advanced mode"
#~ msgstr ""
#~ "Ne liste pas les noms de nets qui correspondent à ce texte, en mode avancé"
#~ msgid "About this application" #~ msgid "About this application"
#~ msgstr "Au sujet de cette application" #~ msgstr "Au sujet de cette application"
#~ msgid "Place the graphic line or poligon" #~ msgid "Place the graphic line or poligon"

View File

@ -41,6 +41,8 @@ set(PCBNEW_SRCS
cotation.cpp cotation.cpp
cross-probing.cpp cross-probing.cpp
deltrack.cpp deltrack.cpp
dialog_copper_zones.cpp
dialog_copper_zones_frame.cpp
# dialog_display_options.cpp # dialog_display_options.cpp
# dialog_drc.cpp # dialog_drc.cpp
dialog_edit_mod_text.cpp dialog_edit_mod_text.cpp
@ -57,7 +59,6 @@ set(PCBNEW_SRCS
dialog_setup_libs.cpp dialog_setup_libs.cpp
dialog_orient_footprints.cpp dialog_orient_footprints.cpp
# dialog_track_options.cpp # dialog_track_options.cpp
# dialog_zones_by_polygon.cpp
dist.cpp dist.cpp
dragsegm.cpp dragsegm.cpp
drc.cpp drc.cpp

View File

@ -332,7 +332,10 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
} }
if( !IsOnCopperLayer() ) if( !IsOnCopperLayer() )
{
m_GridFillValue = 0;
SetNet( 0 ); SetNet( 0 );
}
return error ? 0 : 1; return error ? 0 : 1;
} }

View File

@ -0,0 +1,398 @@
/////////////////////////////////////////////////////////////////////////////
// Name: dialog_copper_zones.cpp
// Author: jean-pierre Charras
// Created: 09/oct/2008
/// Licence: GNU License
/////////////////////////////////////////////////////////////////////////////
#if defined (__GNUG__) && !defined (NO_GCC_PRAGMA)
#pragma implementation "zones.h"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
#include "fctsys.h"
#include "wxstruct.h"
#include "common.h"
#include "PolyLine.h"
#include "pcbnew.h"
#include "trigo.h"
#include "autorout.h"
#include "zones.h"
#include "dialog_copper_zones.h"
/************************************************************************************************/
dialog_copper_zone::dialog_copper_zone( WinEDA_PcbFrame* parent, ZONE_CONTAINER * zone_container )
:dialog_copper_zone_frame(parent)
/************************************************************************************************/
{
m_Parent = parent;
m_Zone_Container = zone_container;
m_NetSorting =1; // 0 = alphabetic sort, 1 = pad count sort
if( m_Parent->m_Parent->m_EDA_Config )
{
m_NetSorting = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_SORT_OPTION_KEY, 1l );
}
SetReturnCode(ZONE_ABORT); // Will be changed on buttons click
}
/*****************************************************************/
void dialog_copper_zone::OnInitDialog( wxInitDialogEvent& event )
/*****************************************************************/
// Initialise dialog options
{
BOARD* board = m_Parent->m_Pcb;
SetFont( *g_DialogFont );
SetFocus(); // Required under wxGTK if we want to demiss the dialog with the ESC key
wxString title = _( "Zone clearance value:" ) + ReturnUnitSymbol( g_UnitMetric );
m_ClearanceValueTitle->SetLabel( title );
title = _( "Grid :" ) + ReturnUnitSymbol( g_UnitMetric );;
m_GridCtrl->SetLabel( title );
if( g_DesignSettings.m_ZoneClearence == 0 )
g_DesignSettings.m_ZoneClearence = g_DesignSettings.m_TrackClearence;
title = ReturnStringFromValue( g_UnitMetric,
g_DesignSettings.m_ZoneClearence,
m_Parent->m_InternalUnits );
m_ZoneClearanceCtrl->SetValue( title );
if( g_Zone_45_Only )
m_OrientEdgesOpt->SetSelection( 1 );
static const int GridList[4] = { 25, 50, 100, 250 };
int selection = 0;
int grid_routing = g_GridRoutingSize;
if( m_Zone_Container )
grid_routing = m_Zone_Container->m_GridFillValue;
for( unsigned ii = 0; ii < 4; ii++ )
{
wxString msg = ReturnStringFromValue( g_UnitMetric,
GridList[ii],
m_Parent->m_InternalUnits );
m_GridCtrl->SetString( ii, msg );
if( grid_routing == GridList[ii] )
selection = ii;
}
if( grid_routing == 0 ) // No Grid: fill with polygons
selection = 4;
m_GridCtrl->SetSelection( selection );
if( m_Zone_Container )
{
title = ReturnStringFromValue( g_UnitMetric,
m_Zone_Container->m_ZoneClearance,
m_Parent->m_InternalUnits );
m_ZoneClearanceCtrl->SetValue( title );
switch( m_Zone_Container->m_PadOption )
{
case ZONE_CONTAINER::PAD_NOT_IN_ZONE: // Pads are not covered
m_FillOpt->SetSelection( 2 );
break;
case ZONE_CONTAINER::THERMAL_PAD: // Use thermal relief for pads
m_FillOpt->SetSelection( 1 );
break;
case ZONE_CONTAINER::PAD_IN_ZONE: // pads are covered by copper
m_FillOpt->SetSelection( 0 );
break;
}
g_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle();
}
else
{
switch( g_Zone_Pad_Options )
{
case ZONE_CONTAINER::PAD_NOT_IN_ZONE: // Pads are not covered
m_FillOpt->SetSelection( 2 );
break;
case ZONE_CONTAINER::THERMAL_PAD: // Use thermal relief for pads
m_FillOpt->SetSelection( 1 );
break;
case ZONE_CONTAINER::PAD_IN_ZONE: // pads are covered by copper
m_FillOpt->SetSelection( 0 );
break;
}
g_Zone_Hatching = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_OUTLINES_HATCH_OPTION_KEY,
(long) CPolyLine::DIAGONAL_EDGE );
}
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;
}
/* build copper layers list */
int layer_cnt = board->GetCopperLayerCount();
for( int ii = 0; ii < board->GetCopperLayerCount(); ii++ )
{
wxString msg;
int layer_number = COPPER_LAYER_N;
if( layer_cnt <= 1 || ii < layer_cnt - 1 )
layer_number = ii;
else if( ii == layer_cnt - 1 )
layer_number = LAYER_CMP_N;
m_LayerId[ii] = layer_number;
msg = board->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 );
}
}
m_NetSortingOption->SetSelection(m_NetSorting);
wxString NetNameFilter;
if( m_Parent->m_Parent->m_EDA_Config )
{
NetNameFilter = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_FILTER_STRING_KEY, wxT("N_0*") );
}
m_NetNameFilter->SetValue(NetNameFilter);
wxArrayString ListNetName;
m_Parent->m_Pcb->ReturnSortedNetnamesList( ListNetName,
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
if ( m_NetSorting != 0 )
{
wxString Filter = m_NetNameFilter->GetValue();
for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ )
{
if( ListNetName[ii].Matches(Filter.GetData() ) )
{
ListNetName. RemoveAt(ii);
ii--;
}
}
}
m_ListNetNameSelection->InsertItems( ListNetName, 0 );
// Select net:
int net_select = g_HightLigth_NetCode;
if( m_Zone_Container )
net_select = m_Zone_Container->GetNet();
if( net_select > 0 )
{
EQUIPOT* equipot = m_Parent->m_Pcb->FindNet( net_select );
if( equipot ) // Search net in list and select it
{
for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ )
{
if( ListNetName[ii] == equipot->m_Netname )
{
m_ListNetNameSelection->SetSelection( ii );
break;
}
}
}
}
if (GetSizer())
{
GetSizer()->SetSizeHints(this);
}
}
/*************************************************************/
void dialog_copper_zone::OnButtonCancelClick( wxCommandEvent& event )
/*************************************************************/
{
EndModal( ZONE_ABORT );
}
/**********************************************************/
bool dialog_copper_zone::AcceptOptions(bool aPromptForErrors)
/**********************************************************/
/** Function dialog_copper_zone::AcceptOptions(
* @return false if incorrect options, true if Ok.
*/
{
switch( m_FillOpt->GetSelection() )
{
case 2:
g_Zone_Pad_Options = ZONE_CONTAINER::PAD_NOT_IN_ZONE; // Pads are not covered
break;
case 1:
g_Zone_Pad_Options = ZONE_CONTAINER::THERMAL_PAD; // Use thermal relief for pads
break;
case 0:
g_Zone_Pad_Options = ZONE_CONTAINER::PAD_IN_ZONE; // pads are covered by copper
break;
}
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);
}
switch( m_GridCtrl->GetSelection() )
{
case 0:
g_GridRoutingSize = 25;
break;
case 1:
g_GridRoutingSize = 50;
break;
default:
case 2:
g_GridRoutingSize = 100;
break;
case 3:
g_GridRoutingSize = 250;
break;
case 4:
g_GridRoutingSize = 0;
wxMessageBox( wxT(
"You are using No grid for filling zones\nThis is currently in development and for tests only.\n Do not use for production"));
break;
}
wxString txtvalue = m_ZoneClearanceCtrl->GetValue();
g_DesignSettings.m_ZoneClearence =
ReturnValueFromString( g_UnitMetric, txtvalue, m_Parent->m_InternalUnits );
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 && aPromptForErrors )
{
DisplayError( this, _( "Error : you must choose a layer" ) );
return false;
}
g_CurrentZone_Layer = m_LayerId[ii];
/* Get the net name selection for this zone */
ii = m_ListNetNameSelection->GetSelection();
if( ii < 0 && aPromptForErrors )
{
DisplayError( this, _( "Error : you must choose a net name" ) );
return false;
}
wxString net_name = m_ListNetNameSelection->GetString( ii );
/* Search net_code for this net */
EQUIPOT* net;
g_NetcodeSelection = 0;
for( net = m_Parent->m_Pcb->m_Equipots; net; net = net->Next() )
{
if( net->m_Netname == net_name )
{
g_NetcodeSelection = net->GetNet();
break;
}
}
return true;
}
/***************************************************************************/
void dialog_copper_zone::OnNetSortingOptionSelected( wxCommandEvent& event )
/***************************************************************************/
{
wxArrayString ListNetName;
m_NetSorting = m_NetSortingOption->GetSelection();
m_Parent->m_Pcb->ReturnSortedNetnamesList( ListNetName,
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
if ( m_NetSorting != 0 )
{
wxString Filter = m_NetNameFilter->GetValue();
for (unsigned ii = 0; ii < ListNetName.GetCount(); ii ++ )
{
if ( ListNetName[ii].Matches(Filter.GetData() ) )
{
ListNetName. RemoveAt(ii);
ii--;
}
}
}
m_ListNetNameSelection->Clear();
m_ListNetNameSelection->InsertItems( ListNetName, 0 );
if( m_Parent->m_Parent->m_EDA_Config )
{
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_SORT_OPTION_KEY, (long) m_NetSorting );
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_FILTER_STRING_KEY, m_NetNameFilter->GetValue() );
}
}
/*****************************************************************/
void dialog_copper_zone::OnButtonOkClick( wxCommandEvent& event )
/*****************************************************************/
{
if ( AcceptOptions(true) )
EndModal( ZONE_OK );
}

View File

@ -0,0 +1,27 @@
/* dialog_copper_zones.h */
#ifndef DIALOG_COPPER_ZONES
#define DIALOG_COPPER_ZONES
#include "dialog_copper_zones_frame.h"
/* here is the derivated class from dialog_copper_zone_frame created by wxFormBuilder
*/
class dialog_copper_zone: public dialog_copper_zone_frame
{
public:
WinEDA_PcbFrame* m_Parent;
ZONE_CONTAINER * m_Zone_Container;
long m_NetSorting;
int m_LayerId[LAYER_COUNT]; // Handle the real layer number from layer name position in m_LayerSelectionCtrl
public:
dialog_copper_zone( WinEDA_PcbFrame* parent, ZONE_CONTAINER * zone_container);
void OnInitDialog( wxInitDialogEvent& event );
void OnButtonOkClick( wxCommandEvent& event );
void OnButtonCancelClick( wxCommandEvent& event );
bool AcceptOptions(bool aPromptForErrors);
void OnNetSortingOptionSelected( wxCommandEvent& event );
};
#endif // #ifndef DIALOG_COPPER_ZONES

View File

@ -0,0 +1,148 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_copper_zones_frame.h"
///////////////////////////////////////////////////////////////////////////
BEGIN_EVENT_TABLE( dialog_copper_zone_frame, wxDialog )
EVT_INIT_DIALOG( dialog_copper_zone_frame::_wxFB_OnInitDialog )
EVT_BUTTON( wxID_OK, dialog_copper_zone_frame::_wxFB_OnButtonOkClick )
EVT_BUTTON( wxID_CANCEL, dialog_copper_zone_frame::_wxFB_OnButtonCancelClick )
EVT_RADIOBOX( ID_NET_SORTING_OPTION, dialog_copper_zone_frame::_wxFB_OnNetSortingOptionSelected )
END_EVENT_TABLE()
dialog_copper_zone_frame::dialog_copper_zone_frame( 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_MainBoxSize;
m_MainBoxSize = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* m_OptionsBoxSizer;
m_OptionsBoxSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* m_LeftBoxSizer;
m_LeftBoxSizer = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* m_FillOptionsBox;
m_FillOptionsBox = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Zone Fill Options:") ), wxVERTICAL );
wxString m_GridCtrlChoices[] = { _("0.00000"), _("0.00000"), _("0.00000"), _("0.00000"), _("No Grid (For tests only!)") };
int m_GridCtrlNChoices = sizeof( m_GridCtrlChoices ) / sizeof( wxString );
m_GridCtrl = new wxRadioBox( this, ID_RADIOBOX_GRID_SELECTION, _("Grid Size for Filling:"), wxDefaultPosition, wxDefaultSize, m_GridCtrlNChoices, m_GridCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_GridCtrl->SetSelection( 4 );
m_FillOptionsBox->Add( m_GridCtrl, 0, wxALL, 5 );
m_ClearanceValueTitle = new wxStaticText( this, wxID_ANY, _("Zone clearance value (mm):"), wxDefaultPosition, wxDefaultSize, 0 );
m_ClearanceValueTitle->Wrap( -1 );
m_FillOptionsBox->Add( m_ClearanceValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_ZoneClearanceCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_FillOptionsBox->Add( m_ZoneClearanceCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxString m_FillOptChoices[] = { _("Include Pads"), _("Thermal Relief"), _("Exclude Pads") };
int m_FillOptNChoices = sizeof( m_FillOptChoices ) / sizeof( wxString );
m_FillOpt = new wxRadioBox( this, wxID_ANY, _("Pad in Zone:"), wxDefaultPosition, wxDefaultSize, m_FillOptNChoices, m_FillOptChoices, 1, wxRA_SPECIFY_COLS );
m_FillOpt->SetSelection( 1 );
m_FillOptionsBox->Add( m_FillOpt, 0, wxALL|wxEXPAND, 5 );
m_LeftBoxSizer->Add( m_FillOptionsBox, 1, wxEXPAND, 5 );
m_OptionsBoxSizer->Add( m_LeftBoxSizer, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
m_OptionsBoxSizer->Add( 5, 5, 0, wxEXPAND, 5 );
wxBoxSizer* m_MiddleBoxSizer;
m_MiddleBoxSizer = new wxBoxSizer( wxVERTICAL );
wxStaticBoxSizer* m_OutilinesBoxOpt;
m_OutilinesBoxOpt = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Outlines Options:") ), wxVERTICAL );
wxString m_OutlineAppearanceCtrlChoices[] = { _("Line"), _("Hatched Outline"), _("Full Hatched") };
int m_OutlineAppearanceCtrlNChoices = sizeof( m_OutlineAppearanceCtrlChoices ) / sizeof( wxString );
m_OutlineAppearanceCtrl = new wxRadioBox( this, ID_RADIOBOX_OUTLINES_OPTION, _("Outlines Appearance"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_OutlineAppearanceCtrl->SetSelection( 0 );
m_OutilinesBoxOpt->Add( m_OutlineAppearanceCtrl, 0, wxALL|wxEXPAND, 5 );
m_OutilinesBoxOpt->Add( 5, 5, 0, 0, 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_OutilinesBoxOpt->Add( m_OrientEdgesOpt, 0, wxALL, 5 );
m_MiddleBoxSizer->Add( m_OutilinesBoxOpt, 1, wxEXPAND, 5 );
m_OptionsBoxSizer->Add( m_MiddleBoxSizer, 0, 0, 5 );
m_OptionsBoxSizer->Add( 0, 0, 0, wxEXPAND, 5 );
wxBoxSizer* m_RightBoxSizer;
m_RightBoxSizer = new wxBoxSizer( wxVERTICAL );
m_OkButton = new wxButton( this, wxID_OK, _("Ok"), wxDefaultPosition, wxDefaultSize, 0 );
m_RightBoxSizer->Add( m_OkButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
m_ButtonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
m_RightBoxSizer->Add( m_ButtonCancel, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
m_RightBoxSizer->Add( 5, 20, 0, wxEXPAND, 5 );
wxStaticBoxSizer* m_NetSortOptSizer;
m_NetSortOptSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Nets Display Options:") ), wxVERTICAL );
wxString m_NetSortingOptionChoices[] = { _("Alphabetic"), _("Advanced") };
int m_NetSortingOptionNChoices = sizeof( m_NetSortingOptionChoices ) / sizeof( wxString );
m_NetSortingOption = new wxRadioBox( this, ID_NET_SORTING_OPTION, _("Net sorting:"), wxDefaultPosition, wxDefaultSize, m_NetSortingOptionNChoices, m_NetSortingOptionChoices, 1, wxRA_SPECIFY_COLS );
m_NetSortingOption->SetSelection( 0 );
m_NetSortOptSizer->Add( m_NetSortingOption, 0, wxALL|wxEXPAND, 5 );
m_staticText5 = new wxStaticText( this, wxID_ANY, _("Filter"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText5->Wrap( -1 );
m_NetSortOptSizer->Add( m_staticText5, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_NetNameFilter = new wxTextCtrl( this, ID_TEXTCTRL_NETNAMES_FILTER, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_NetSortOptSizer->Add( m_NetNameFilter, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_RightBoxSizer->Add( m_NetSortOptSizer, 1, wxEXPAND, 5 );
m_OptionsBoxSizer->Add( m_RightBoxSizer, 0, wxALIGN_CENTER_VERTICAL, 5 );
m_MainBoxSize->Add( m_OptionsBoxSizer, 0, 0, 5 );
wxBoxSizer* m_NetAndLayersLiastBoxSizer;
m_NetAndLayersLiastBoxSizer = new wxBoxSizer( wxVERTICAL );
m_staticText2 = new wxStaticText( this, wxID_ANY, _("Net:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText2->Wrap( -1 );
m_NetAndLayersLiastBoxSizer->Add( m_staticText2, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_ListNetNameSelection = new wxListBox( this, ID_NETNAME_SELECTION, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
m_NetAndLayersLiastBoxSizer->Add( m_ListNetNameSelection, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_staticText3 = new wxStaticText( this, wxID_ANY, _("Layer:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3->Wrap( -1 );
m_NetAndLayersLiastBoxSizer->Add( m_staticText3, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_LayerSelectionCtrl = new wxListBox( this, ID_LAYER_CHOICE, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
m_NetAndLayersLiastBoxSizer->Add( m_LayerSelectionCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_MainBoxSize->Add( m_NetAndLayersLiastBoxSizer, 0, wxEXPAND, 5 );
this->SetSizer( m_MainBoxSize );
this->Layout();
}
dialog_copper_zone_frame::~dialog_copper_zone_frame()
{
}

View File

@ -0,0 +1,130 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "dialog_copper_zones_frame.cpp.h"
///////////////////////////////////////////////////////////////////////////
BEGIN_EVENT_TABLE( dialog_copper_zone_frame, wxDialog )
EVT_INIT_DIALOG( dialog_copper_zone_frame::_wxFB_OnInitDialog )
EVT_BUTTON( wxID_OK, dialog_copper_zone_frame::_wxFB_OnOkButtonClick )
EVT_BUTTON( wxID_CANCEL, dialog_copper_zone_frame::_wxFB_OnButtonCancleClick )
EVT_RADIOBOX( ID_NET_SORTING_OPTION, dialog_copper_zone_frame::_wxFB_OnNetSortingOptionSelected )
END_EVENT_TABLE()
dialog_copper_zone_frame::dialog_copper_zone_frame( 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_MainBoxSize;
m_MainBoxSize = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* m_OptionsBoxSizer;
m_OptionsBoxSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* m_LeftBoxSizer;
m_LeftBoxSizer = new wxBoxSizer( wxVERTICAL );
wxString m_GridCtrlChoices[] = { _("0.00000"), _("0.00000"), _("0.00000"), _("0.00000"), _("|No Grid (For tests only!)") };
int m_GridCtrlNChoices = sizeof( m_GridCtrlChoices ) / sizeof( wxString );
m_GridCtrl = new wxRadioBox( this, ID_RADIOBOX_GRID_SELECTION, _("Grid Size for Filling:"), wxDefaultPosition, wxDefaultSize, m_GridCtrlNChoices, m_GridCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_GridCtrl->SetSelection( 4 );
m_LeftBoxSizer->Add( m_GridCtrl, 0, wxALL, 5 );
m_ClearanceValueTitle = new wxStaticText( this, wxID_ANY, _("Zone clearance value (mm):"), wxDefaultPosition, wxDefaultSize, 0 );
m_ClearanceValueTitle->Wrap( -1 );
m_LeftBoxSizer->Add( m_ClearanceValueTitle, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_ZoneClearanceCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_LeftBoxSizer->Add( m_ZoneClearanceCtrl, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
wxString m_OutlineAppearanceCtrlChoices[] = { _("Line"), _("Hatched Outline"), _("Full Hatched") };
int m_OutlineAppearanceCtrlNChoices = sizeof( m_OutlineAppearanceCtrlChoices ) / sizeof( wxString );
m_OutlineAppearanceCtrl = new wxRadioBox( this, ID_RADIOBOX_OUTLINES_OPTION, _("Outlines Appearance"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlNChoices, m_OutlineAppearanceCtrlChoices, 1, wxRA_SPECIFY_COLS );
m_OutlineAppearanceCtrl->SetSelection( 0 );
m_LeftBoxSizer->Add( m_OutlineAppearanceCtrl, 0, wxALL|wxEXPAND, 5 );
m_OptionsBoxSizer->Add( m_LeftBoxSizer, 1, wxEXPAND, 5 );
wxBoxSizer* m_MiddleBoxSizer;
m_MiddleBoxSizer = new wxBoxSizer( wxVERTICAL );
wxString m_FillOptChoices[] = { _("Include Pads"), _("Thermal"), _("Exclude Pads") };
int m_FillOptNChoices = sizeof( m_FillOptChoices ) / sizeof( wxString );
m_FillOpt = new wxRadioBox( this, wxID_ANY, _("Pad options:"), wxDefaultPosition, wxDefaultSize, m_FillOptNChoices, m_FillOptChoices, 1, wxRA_SPECIFY_COLS );
m_FillOpt->SetSelection( 1 );
m_MiddleBoxSizer->Add( m_FillOpt, 0, wxALL|wxEXPAND, 5 );
m_MiddleBoxSizer->Add( 0, 0, 1, wxEXPAND, 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_MiddleBoxSizer->Add( m_OrientEdgesOpt, 0, wxALL|wxEXPAND, 5 );
m_OptionsBoxSizer->Add( m_MiddleBoxSizer, 1, wxEXPAND, 5 );
m_OptionsBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 );
wxBoxSizer* m_RightBoxSizer;
m_RightBoxSizer = new wxBoxSizer( wxVERTICAL );
m_OkButton = new wxButton( this, wxID_OK, _("Ok"), wxDefaultPosition, wxDefaultSize, 0 );
m_RightBoxSizer->Add( m_OkButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
m_ButtonCancel = new wxButton( this, wxID_CANCEL, _("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
m_RightBoxSizer->Add( m_ButtonCancel, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
m_RightBoxSizer->Add( 0, 0, 1, wxEXPAND, 5 );
wxString m_NetSortingOptionChoices[] = { _("Alphabetic"), _("Advanced") };
int m_NetSortingOptionNChoices = sizeof( m_NetSortingOptionChoices ) / sizeof( wxString );
m_NetSortingOption = new wxRadioBox( this, ID_NET_SORTING_OPTION, _("Net sorting:"), wxDefaultPosition, wxDefaultSize, m_NetSortingOptionNChoices, m_NetSortingOptionChoices, 1, wxRA_SPECIFY_COLS );
m_NetSortingOption->SetSelection( 0 );
m_RightBoxSizer->Add( m_NetSortingOption, 0, wxALL|wxEXPAND, 5 );
m_staticText5 = new wxStaticText( this, wxID_ANY, _("Filter"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText5->Wrap( -1 );
m_RightBoxSizer->Add( m_staticText5, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
m_NetNameFilter = new wxTextCtrl( this, ID_TEXTCTRL_NETNAMES_FILTER, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_RightBoxSizer->Add( m_NetNameFilter, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
m_OptionsBoxSizer->Add( m_RightBoxSizer, 1, wxEXPAND, 5 );
m_MainBoxSize->Add( m_OptionsBoxSizer, 1, wxEXPAND, 5 );
wxBoxSizer* m_NetAndLayersLiastBoxSizer;
m_NetAndLayersLiastBoxSizer = new wxBoxSizer( wxVERTICAL );
m_staticText2 = new wxStaticText( this, wxID_ANY, _("Net:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText2->Wrap( -1 );
m_NetAndLayersLiastBoxSizer->Add( m_staticText2, 0, wxALL, 5 );
m_ListNetNameSelection = new wxListBox( this, ID_NETNAME_SELECTION, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
m_NetAndLayersLiastBoxSizer->Add( m_ListNetNameSelection, 0, wxALL|wxEXPAND, 5 );
m_staticText3 = new wxStaticText( this, wxID_ANY, _("Layer:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3->Wrap( -1 );
m_NetAndLayersLiastBoxSizer->Add( m_staticText3, 0, wxALL, 5 );
m_LayerSelectionCtrl = new wxListBox( this, ID_LAYER_CHOICE, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
m_NetAndLayersLiastBoxSizer->Add( m_LayerSelectionCtrl, 0, wxALL|wxEXPAND, 5 );
m_MainBoxSize->Add( m_NetAndLayersLiastBoxSizer, 1, wxEXPAND, 5 );
this->SetSizer( m_MainBoxSize );
this->Layout();
}
dialog_copper_zone_frame::~dialog_copper_zone_frame()
{
}

View File

@ -0,0 +1,86 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __dialog_copper_zones_frame__
#define __dialog_copper_zones_frame__
#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/stattext.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/button.h>
#include <wx/listbox.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class dialog_copper_zone_frame
///////////////////////////////////////////////////////////////////////////////
class dialog_copper_zone_frame : public wxDialog
{
DECLARE_EVENT_TABLE()
private:
// Private event handlers
void _wxFB_OnInitDialog( wxInitDialogEvent& event ){ OnInitDialog( event ); }
void _wxFB_OnOkButtonClick( wxCommandEvent& event ){ OnOkButtonClick( event ); }
void _wxFB_OnButtonCancleClick( wxCommandEvent& event ){ OnButtonCancleClick( event ); }
void _wxFB_OnNetSortingOptionSelected( wxCommandEvent& event ){ OnNetSortingOptionSelected( event ); }
protected:
enum
{
ID_RADIOBOX_GRID_SELECTION = 1000,
ID_RADIOBOX_OUTLINES_OPTION,
ID_NET_SORTING_OPTION,
ID_TEXTCTRL_NETNAMES_FILTER,
ID_NETNAME_SELECTION,
ID_LAYER_CHOICE,
};
wxRadioBox* m_GridCtrl;
wxStaticText* m_ClearanceValueTitle;
wxTextCtrl* m_ZoneClearanceCtrl;
wxRadioBox* m_OutlineAppearanceCtrl;
wxRadioBox* m_FillOpt;
wxRadioBox* m_OrientEdgesOpt;
wxButton* m_OkButton;
wxButton* m_ButtonCancel;
wxRadioBox* m_NetSortingOption;
wxStaticText* m_staticText5;
wxTextCtrl* m_NetNameFilter;
wxStaticText* m_staticText2;
wxListBox* m_ListNetNameSelection;
wxStaticText* m_staticText3;
wxListBox* m_LayerSelectionCtrl;
// Virtual event handlers, overide them in your derived class
virtual void OnInitDialog( wxInitDialogEvent& event ){ event.Skip(); }
virtual void OnOkButtonClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnButtonCancleClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnNetSortingOptionSelected( wxCommandEvent& event ){ event.Skip(); }
public:
dialog_copper_zone_frame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 578,567 ), long style = wxDEFAULT_DIALOG_STYLE );
~dialog_copper_zone_frame();
};
#endif //__dialog_copper_zones_frame__

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,88 @@
///////////////////////////////////////////////////////////////////////////
// C++ code generated with wxFormBuilder (version Apr 16 2008)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#ifndef __dialog_copper_zones_frame__
#define __dialog_copper_zones_frame__
#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/stattext.h>
#include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include <wx/button.h>
#include <wx/listbox.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/// Class dialog_copper_zone_frame
///////////////////////////////////////////////////////////////////////////////
class dialog_copper_zone_frame : public wxDialog
{
DECLARE_EVENT_TABLE()
private:
// Private event handlers
void _wxFB_OnInitDialog( wxInitDialogEvent& event ){ OnInitDialog( event ); }
void _wxFB_OnButtonOkClick( wxCommandEvent& event ){ OnButtonOkClick( event ); }
void _wxFB_OnButtonCancelClick( wxCommandEvent& event ){ OnButtonCancelClick( event ); }
void _wxFB_OnNetSortingOptionSelected( wxCommandEvent& event ){ OnNetSortingOptionSelected( event ); }
protected:
enum
{
ID_RADIOBOX_GRID_SELECTION = 1000,
ID_RADIOBOX_OUTLINES_OPTION,
ID_NET_SORTING_OPTION,
ID_TEXTCTRL_NETNAMES_FILTER,
ID_NETNAME_SELECTION,
ID_LAYER_CHOICE,
};
wxRadioBox* m_GridCtrl;
wxStaticText* m_ClearanceValueTitle;
wxTextCtrl* m_ZoneClearanceCtrl;
wxRadioBox* m_FillOpt;
wxRadioBox* m_OutlineAppearanceCtrl;
wxRadioBox* m_OrientEdgesOpt;
wxButton* m_OkButton;
wxButton* m_ButtonCancel;
wxRadioBox* m_NetSortingOption;
wxStaticText* m_staticText5;
wxTextCtrl* m_NetNameFilter;
wxStaticText* m_staticText2;
wxListBox* m_ListNetNameSelection;
wxStaticText* m_staticText3;
wxListBox* m_LayerSelectionCtrl;
// Virtual event handlers, overide them in your derived class
virtual void OnInitDialog( wxInitDialogEvent& event ){ event.Skip(); }
virtual void OnButtonOkClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnButtonCancelClick( wxCommandEvent& event ){ event.Skip(); }
virtual void OnNetSortingOptionSelected( wxCommandEvent& event ){ event.Skip(); }
public:
dialog_copper_zone_frame( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Fill Zones Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 452,493 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxSUNKEN_BORDER );
~dialog_copper_zone_frame();
};
#endif //__dialog_copper_zones_frame__

View File

@ -1,641 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: zones.cpp
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 25/01/2006 11:35:19
// RCS-ID:
// Copyright: GNU License
// Licence: GNU License
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 25/01/2006 11:35:19
#if defined (__GNUG__) && !defined (NO_GCC_PRAGMA)
#pragma implementation "zones.h"
#endif
// For compilers that support precompilation, includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
////@begin includes
////@end includes
#include "dialog_zones_by_polygon.h"
////@begin XPM images
////@end XPM images
/*!
* WinEDA_ZoneFrame type definition
*/
IMPLEMENT_DYNAMIC_CLASS( WinEDA_ZoneFrame, wxDialog )
/*!
* WinEDA_ZoneFrame event table definition
*/
BEGIN_EVENT_TABLE( WinEDA_ZoneFrame, wxDialog )
////@begin WinEDA_ZoneFrame event table entries
EVT_INIT_DIALOG( WinEDA_ZoneFrame::OnInitDialog )
EVT_BUTTON( wxID_OK, WinEDA_ZoneFrame::OnOkClick )
EVT_BUTTON( wxID_CANCEL, WinEDA_ZoneFrame::OnCancelClick )
EVT_RADIOBOX( ID_NET_SORTING_OPTION, WinEDA_ZoneFrame::OnNetSortingOptionSelected )
////@end WinEDA_ZoneFrame event table entries
END_EVENT_TABLE()
/*!
* WinEDA_ZoneFrame constructors
*/
WinEDA_ZoneFrame::WinEDA_ZoneFrame()
{
}
WinEDA_ZoneFrame::WinEDA_ZoneFrame( WinEDA_PcbFrame* parent,
ZONE_CONTAINER * zone_container,
wxWindowID id,
const wxString& caption,
const wxPoint& pos,
const wxSize& size,
long style )
{
m_Parent = parent;
m_Zone_Container = zone_container;
if( m_Parent->m_Parent->m_EDA_Config )
{
m_NetSorting = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_SORT_OPTION_KEY, (long) BOARD::PAD_CNT_SORT );
}
Create( parent, id, caption, pos, size, style );
SetReturnCode(ZONE_ABORT); // Will be changed on buttons click
}
/*!
* WinEDA_ZoneFrame creator
*/
bool WinEDA_ZoneFrame::Create( wxWindow* parent,
wxWindowID id,
const wxString& caption,
const wxPoint& pos,
const wxSize& size,
long style )
{
////@begin WinEDA_ZoneFrame member initialisation
m_GridCtrl = NULL;
m_ClearanceValueTitle = NULL;
m_ZoneClearanceCtrl = NULL;
m_OutlineAppearanceCtrl = NULL;
m_FillOpt = NULL;
m_OrientEdgesOpt = NULL;
m_NetSortingOption = NULL;
m_NetNameFilter = NULL;
m_ListNetNameSelection = NULL;
m_LayerSelectionCtrl = NULL;
////@end WinEDA_ZoneFrame member initialisation
////@begin WinEDA_ZoneFrame creation
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
wxDialog::Create( parent, id, caption, pos, size, style );
CreateControls();
if (GetSizer())
{
GetSizer()->SetSizeHints(this);
}
Centre();
////@end WinEDA_ZoneFrame creation
return true;
}
/*!
* Control creation for WinEDA_ZoneFrame
*/
void WinEDA_ZoneFrame::CreateControls()
{
////@begin WinEDA_ZoneFrame content construction
// Generated by DialogBlocks, 02/10/2008 15:53:10 (unregistered)
WinEDA_ZoneFrame* itemDialog1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
itemDialog1->SetSizer(itemBoxSizer2);
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer2->Add(itemBoxSizer3, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer3->Add(itemBoxSizer4, 0, wxGROW|wxALL, 5);
wxArrayString m_GridCtrlStrings;
m_GridCtrlStrings.Add(_("0.00000"));
m_GridCtrlStrings.Add(_("0.00000"));
m_GridCtrlStrings.Add(_("0.00000"));
m_GridCtrlStrings.Add(_("0.00000"));
m_GridCtrlStrings.Add(_("No Grid (For tests only!)"));
m_GridCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_GRID_SELECTION, _("Grid Size for Filling:"), wxDefaultPosition, wxDefaultSize, m_GridCtrlStrings, 1, wxRA_SPECIFY_COLS );
m_GridCtrl->SetSelection(0);
itemBoxSizer4->Add(m_GridCtrl, 0, wxGROW|wxALL, 5);
m_ClearanceValueTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Zone clearance value (mm):"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer4->Add(m_ClearanceValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_ZoneClearanceCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer4->Add(m_ZoneClearanceCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxArrayString m_OutlineAppearanceCtrlStrings;
m_OutlineAppearanceCtrlStrings.Add(_("Line"));
m_OutlineAppearanceCtrlStrings.Add(_("Hatched Outline"));
m_OutlineAppearanceCtrlStrings.Add(_("Full Hatched"));
m_OutlineAppearanceCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_OUTLINES_OPTION, _("Outlines Appearance"), wxDefaultPosition, wxDefaultSize, m_OutlineAppearanceCtrlStrings, 1, wxRA_SPECIFY_COLS );
m_OutlineAppearanceCtrl->SetSelection(0);
itemBoxSizer4->Add(m_OutlineAppearanceCtrl, 0, wxGROW|wxALL, 5);
itemBoxSizer3->Add(5, 5, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer10 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer3->Add(itemBoxSizer10, 0, wxGROW|wxALL, 5);
wxArrayString m_FillOptStrings;
m_FillOptStrings.Add(_("Include Pads"));
m_FillOptStrings.Add(_("Thermal"));
m_FillOptStrings.Add(_("Exclude Pads"));
m_FillOpt = new wxRadioBox( itemDialog1, ID_RADIOBOX4, _("Pad options:"), wxDefaultPosition, wxDefaultSize, m_FillOptStrings, 1, wxRA_SPECIFY_COLS );
m_FillOpt->SetSelection(0);
itemBoxSizer10->Add(m_FillOpt, 0, wxGROW|wxALL, 5);
itemBoxSizer10->Add(5, 5, 1, wxGROW|wxALL, 5);
wxArrayString m_OrientEdgesOptStrings;
m_OrientEdgesOptStrings.Add(_("Any"));
m_OrientEdgesOptStrings.Add(_("H , V and 45 deg"));
m_OrientEdgesOpt = new wxRadioBox( itemDialog1, ID_RADIOBOX5, _("Zone edges orient:"), wxDefaultPosition, wxDefaultSize, m_OrientEdgesOptStrings, 1, wxRA_SPECIFY_COLS );
m_OrientEdgesOpt->SetSelection(0);
itemBoxSizer10->Add(m_OrientEdgesOpt, 0, wxGROW|wxALL, 5);
itemBoxSizer3->Add(5, 5, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer3->Add(itemBoxSizer15, 0, wxGROW|wxALL, 5);
wxButton* itemButton16 = new wxButton( itemDialog1, wxID_OK, _("OK"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer15->Add(itemButton16, 0, wxGROW|wxALL, 5);
wxButton* itemButton17 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton17->SetForegroundColour(wxColour(0, 0, 255));
itemBoxSizer15->Add(itemButton17, 0, wxGROW|wxALL, 5);
itemBoxSizer15->Add(5, 5, 1, wxGROW|wxALL, 5);
wxArrayString m_NetSortingOptionStrings;
m_NetSortingOptionStrings.Add(_("Alphabetic"));
m_NetSortingOptionStrings.Add(_("Advanced"));
m_NetSortingOption = new wxRadioBox( itemDialog1, ID_NET_SORTING_OPTION, _("Net sorting:"), wxDefaultPosition, wxDefaultSize, m_NetSortingOptionStrings, 1, wxRA_SPECIFY_COLS );
m_NetSortingOption->SetSelection(0);
itemBoxSizer15->Add(m_NetSortingOption, 0, wxGROW|wxALL, 5);
wxStaticText* itemStaticText20 = new wxStaticText( itemDialog1, wxID_STATIC, _("Filter"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer15->Add(itemStaticText20, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT, 5);
m_NetNameFilter = new wxTextCtrl( itemDialog1, ID_TEXTCTRL_NETNAMES_FILTER, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
if (WinEDA_ZoneFrame::ShowToolTips())
m_NetNameFilter->SetToolTip(_("Do not list net names which match with this text, in advanced mode"));
itemBoxSizer15->Add(m_NetNameFilter, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxBoxSizer* itemBoxSizer22 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer2->Add(itemBoxSizer22, 0, wxGROW|wxALL, 5);
wxStaticText* itemStaticText23 = new wxStaticText( itemDialog1, wxID_STATIC, _("Net:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer22->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
wxArrayString m_ListNetNameSelectionStrings;
m_ListNetNameSelection = new wxListBox( itemDialog1, ID_NETNAME_SELECTION, wxDefaultPosition, wxDefaultSize, m_ListNetNameSelectionStrings, wxLB_SINGLE|wxSUNKEN_BORDER );
itemBoxSizer22->Add(m_ListNetNameSelection, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxStaticText* itemStaticText25 = new wxStaticText( itemDialog1, wxID_LAYER_SELECTION, _("Layer:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer22->Add(itemStaticText25, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
wxArrayString m_LayerSelectionCtrlStrings;
m_LayerSelectionCtrl = new wxListBox( itemDialog1, ID_LAYER_CHOICE, wxDefaultPosition, wxDefaultSize, m_LayerSelectionCtrlStrings, wxLB_SINGLE );
itemBoxSizer22->Add(m_LayerSelectionCtrl, 0, wxGROW|wxALL, 5);
// Set validators
m_NetSortingOption->SetValidator( wxGenericValidator(& m_NetSorting) );
////@end WinEDA_ZoneFrame content construction
}
/*!
* wxEVT_INIT_DIALOG event handler for ID_DIALOG
*/
// Initialise dialog options
void WinEDA_ZoneFrame::OnInitDialog( wxInitDialogEvent& event )
{
BOARD* board = m_Parent->m_Pcb;
SetFont( *g_DialogFont );
SetFocus(); // Required under wxGTK if we want to demiss the dialog with the ESC key
wxString title = _( "Zone clearance value:" ) + ReturnUnitSymbol( g_UnitMetric );
m_ClearanceValueTitle->SetLabel( title );
title = _( "Grid :" ) + ReturnUnitSymbol( g_UnitMetric );;
m_GridCtrl->SetLabel( title );
if( g_DesignSettings.m_ZoneClearence == 0 )
g_DesignSettings.m_ZoneClearence = g_DesignSettings.m_TrackClearence;
title = ReturnStringFromValue( g_UnitMetric,
g_DesignSettings.m_ZoneClearence,
m_Parent->m_InternalUnits );
m_ZoneClearanceCtrl->SetValue( title );
if( g_Zone_45_Only )
m_OrientEdgesOpt->SetSelection( 1 );
static const int GridList[4] = { 25, 50, 100, 250 };
int selection = 0;
int grid_routing = g_GridRoutingSize;
if( m_Zone_Container )
grid_routing = m_Zone_Container->m_GridFillValue;
for( unsigned ii = 0; ii < 4; ii++ )
{
wxString msg = ReturnStringFromValue( g_UnitMetric,
GridList[ii],
m_Parent->m_InternalUnits );
m_GridCtrl->SetString( ii, msg );
if( grid_routing == GridList[ii] )
selection = ii;
}
if( grid_routing == 0 ) // No Grid: fill with polygons
selection = 4;
m_GridCtrl->SetSelection( selection );
if( m_Zone_Container )
{
title = ReturnStringFromValue( g_UnitMetric,
m_Zone_Container->m_ZoneClearance,
m_Parent->m_InternalUnits );
m_ZoneClearanceCtrl->SetValue( title );
switch( m_Zone_Container->m_PadOption )
{
case ZONE_CONTAINER::PAD_NOT_IN_ZONE: // Pads are not covered
m_FillOpt->SetSelection( 2 );
break;
case ZONE_CONTAINER::THERMAL_PAD: // Use thermal relief for pads
m_FillOpt->SetSelection( 1 );
break;
case ZONE_CONTAINER::PAD_IN_ZONE: // pads are covered by copper
m_FillOpt->SetSelection( 0 );
break;
}
g_Zone_Hatching = m_Zone_Container->m_Poly->GetHatchStyle();
}
else
{
switch( s_Zone_Pad_Options )
{
case ZONE_CONTAINER::PAD_NOT_IN_ZONE: // Pads are not covered
m_FillOpt->SetSelection( 2 );
break;
case ZONE_CONTAINER::THERMAL_PAD: // Use thermal relief for pads
m_FillOpt->SetSelection( 1 );
break;
case ZONE_CONTAINER::PAD_IN_ZONE: // pads are covered by copper
m_FillOpt->SetSelection( 0 );
break;
}
g_Zone_Hatching = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_OUTLINES_HATCH_OPTION_KEY,
(long) CPolyLine::DIAGONAL_EDGE );
}
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;
}
/* build copper layers list */
int layer_cnt = board->GetCopperLayerCount();
for( int ii = 0; ii < board->GetCopperLayerCount(); ii++ )
{
wxString msg;
int layer_number = COPPER_LAYER_N;
if( layer_cnt <= 1 || ii < layer_cnt - 1 )
layer_number = ii;
else if( ii == layer_cnt - 1 )
layer_number = LAYER_CMP_N;
m_LayerId[ii] = layer_number;
msg = board->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 );
}
}
m_NetSortingOption->SetSelection(m_NetSorting == BOARD::ALPHA_SORT ? 0 : 1 );
wxString NetNameFilter;
if( m_Parent->m_Parent->m_EDA_Config )
{
NetNameFilter = m_Parent->m_Parent->m_EDA_Config->Read( ZONE_NET_FILTER_STRING_KEY, wxT("N_0*") );
}
m_NetNameFilter->SetValue(NetNameFilter);
wxArrayString ListNetName;
m_Parent->m_Pcb->ReturnSortedNetnamesList( ListNetName,
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
if ( m_NetSorting != 0 )
{
wxString Filter = m_NetNameFilter->GetValue();
for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ )
{
if( ListNetName[ii].Matches(Filter.GetData() ) )
{
ListNetName. RemoveAt(ii);
ii--;
}
}
}
m_ListNetNameSelection->InsertItems( ListNetName, 0 );
// Select net:
int net_select = g_HightLigth_NetCode;
if( m_Zone_Container )
net_select = m_Zone_Container->GetNet();
if( net_select > 0 )
{
EQUIPOT* equipot = m_Parent->m_Pcb->FindNet( net_select );
if( equipot ) // Search net in list and select it
{
for( unsigned ii = 0; ii < ListNetName.GetCount(); ii++ )
{
if( ListNetName[ii] == equipot->m_Netname )
{
m_ListNetNameSelection->SetSelection( ii );
break;
}
}
}
}
if (GetSizer())
{
GetSizer()->SetSizeHints(this);
}
}
/*!
* Should we show tooltips?
*/
bool WinEDA_ZoneFrame::ShowToolTips()
{
return true;
}
/*!
* Get bitmap resources
*/
wxBitmap WinEDA_ZoneFrame::GetBitmapResource( const wxString& name )
{
// Bitmap retrieval
////@begin WinEDA_ZoneFrame bitmap retrieval
wxUnusedVar(name);
return wxNullBitmap;
////@end WinEDA_ZoneFrame bitmap retrieval
}
/*!
* Get icon resources
*/
wxIcon WinEDA_ZoneFrame::GetIconResource( const wxString& name )
{
// Icon retrieval
////@begin WinEDA_ZoneFrame icon retrieval
wxUnusedVar(name);
return wxNullIcon;
////@end WinEDA_ZoneFrame icon retrieval
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
*/
void WinEDA_ZoneFrame::OnCancelClick( wxCommandEvent& event )
{
EndModal( ZONE_ABORT );
}
/**********************************************************/
bool WinEDA_ZoneFrame::AcceptOptions(bool aPromptForErrors)
/**********************************************************/
/** Function WinEDA_ZoneFrame::AcceptOptions(
* @return false if incorrect options, true if Ok.
*/
{
switch( m_FillOpt->GetSelection() )
{
case 2:
s_Zone_Pad_Options = ZONE_CONTAINER::PAD_NOT_IN_ZONE; // Pads are not covered
break;
case 1:
s_Zone_Pad_Options = ZONE_CONTAINER::THERMAL_PAD; // Use thermal relief for pads
break;
case 0:
s_Zone_Pad_Options = ZONE_CONTAINER::PAD_IN_ZONE; // pads are covered by copper
break;
}
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);
}
switch( m_GridCtrl->GetSelection() )
{
case 0:
g_GridRoutingSize = 25;
break;
case 1:
g_GridRoutingSize = 50;
break;
default:
case 2:
g_GridRoutingSize = 100;
break;
case 3:
g_GridRoutingSize = 250;
break;
case 4:
g_GridRoutingSize = 0;
wxMessageBox( wxT(
"You are using No grid for filling zones\nThis is currently in development and for tests only.\n Do not use for production"));
break;
}
wxString txtvalue = m_ZoneClearanceCtrl->GetValue();
g_DesignSettings.m_ZoneClearence =
ReturnValueFromString( g_UnitMetric, txtvalue, m_Parent->m_InternalUnits );
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 && aPromptForErrors )
{
DisplayError( this, _( "Error : you must choose a layer" ) );
return false;
}
g_CurrentZone_Layer = m_LayerId[ii];
/* Get the net name selection for this zone */
ii = m_ListNetNameSelection->GetSelection();
if( ii < 0 && aPromptForErrors )
{
DisplayError( this, _( "Error : you must choose a net name" ) );
return false;
}
wxString net_name = m_ListNetNameSelection->GetString( ii );
/* Search net_code for this net */
EQUIPOT* net;
s_NetcodeSelection = 0;
for( net = m_Parent->m_Pcb->m_Equipots; net; net = net->Next() )
{
if( net->m_Netname == net_name )
{
s_NetcodeSelection = net->GetNet();
break;
}
}
return true;
}
/*!
* wxEVT_COMMAND_RADIOBOX_SELECTED event handler for ID_NET_SORTING_OPTION
*/
void WinEDA_ZoneFrame::OnNetSortingOptionSelected( wxCommandEvent& event )
{
wxArrayString ListNetName;
m_NetSorting = m_NetSortingOption->GetSelection();
m_Parent->m_Pcb->ReturnSortedNetnamesList( ListNetName,
m_NetSorting == 0 ? BOARD::ALPHA_SORT : BOARD::PAD_CNT_SORT );
if ( m_NetSorting != 0 )
{
wxString Filter = m_NetNameFilter->GetValue();
for (unsigned ii = 0; ii < ListNetName.GetCount(); ii ++ )
{
if ( ListNetName[ii].Matches(Filter.GetData() ) )
{
ListNetName. RemoveAt(ii);
ii--;
}
}
}
m_ListNetNameSelection->Clear();
m_ListNetNameSelection->InsertItems( ListNetName, 0 );
if( m_Parent->m_Parent->m_EDA_Config )
{
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_SORT_OPTION_KEY, (long) m_NetSorting );
m_Parent->m_Parent->m_EDA_Config->Write( ZONE_NET_FILTER_STRING_KEY, m_NetNameFilter->GetValue() );
}
}
/*!
* wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
*/
void WinEDA_ZoneFrame::OnOkClick( wxCommandEvent& event )
{
if ( AcceptOptions(true) )
EndModal( ZONE_OK );
}

View File

@ -1,146 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: dialog_zones_by_polygon.h
// Purpose:
// Author: jean-pierre Charras
// Modified by:
// Created: 25/01/2006 11:35:19
// RCS-ID:
// Copyright: GNU License
// Licence:
/////////////////////////////////////////////////////////////////////////////
// Generated by DialogBlocks (unregistered), 25/01/2006 11:35:19
#ifndef DIALOG_ZONES_H_
#define DIALOG_ZONES_H_
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "dialog_zones_by_polygon.h"
#endif
/*!
* Includes
*/
////@begin includes
#include "wx/valgen.h"
////@end includes
/*!
* Forward declarations
*/
////@begin forward declarations
////@end forward declarations
/*!
* Control identifiers
*/
////@begin control identifiers
#define ID_DIALOG 10000
#define ID_RADIOBOX_GRID_SELECTION 10003
#define ID_TEXTCTRL1 10007
#define ID_RADIOBOX_OUTLINES_OPTION 10006
#define ID_RADIOBOX4 10008
#define ID_RADIOBOX5 10009
#define ID_NET_SORTING_OPTION 10005
#define ID_TEXTCTRL_NETNAMES_FILTER 10010
#define ID_NETNAME_SELECTION 10001
#define wxID_LAYER_SELECTION 10004
#define ID_LAYER_CHOICE 10002
#define SYMBOL_WINEDA_ZONEFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER
#define SYMBOL_WINEDA_ZONEFRAME_TITLE _("Fill Zones Options")
#define SYMBOL_WINEDA_ZONEFRAME_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_ZONEFRAME_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_ZONEFRAME_POSITION wxDefaultPosition
////@end control identifiers
/*!
* Compatibility
*/
#ifndef wxCLOSE_BOX
#define wxCLOSE_BOX 0x1000
#endif
/*!
* WinEDA_ZoneFrame class declaration
*/
class WinEDA_ZoneFrame: public wxDialog
{
DECLARE_DYNAMIC_CLASS( WinEDA_ZoneFrame )
DECLARE_EVENT_TABLE()
public:
/// Constructors
WinEDA_ZoneFrame( );
WinEDA_ZoneFrame( WinEDA_PcbFrame* parent,
ZONE_CONTAINER * zone_container,
wxWindowID id = SYMBOL_WINEDA_ZONEFRAME_IDNAME,
const wxString& caption = SYMBOL_WINEDA_ZONEFRAME_TITLE,
const wxPoint& pos = SYMBOL_WINEDA_ZONEFRAME_POSITION,
const wxSize& size = SYMBOL_WINEDA_ZONEFRAME_SIZE,
long style = SYMBOL_WINEDA_ZONEFRAME_STYLE );
/// Creation
bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_ZONEFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_ZONEFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_ZONEFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_ZONEFRAME_SIZE, long style = SYMBOL_WINEDA_ZONEFRAME_STYLE );
/// Creates the controls and sizers
void CreateControls();
////@begin WinEDA_ZoneFrame event handler declarations
/// wxEVT_INIT_DIALOG event handler for ID_DIALOG
void OnInitDialog( wxInitDialogEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
void OnOkClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_CANCEL
void OnCancelClick( wxCommandEvent& event );
/// wxEVT_COMMAND_RADIOBOX_SELECTED event handler for ID_NET_SORTING_OPTION
void OnNetSortingOptionSelected( wxCommandEvent& event );
////@end WinEDA_ZoneFrame event handler declarations
////@begin WinEDA_ZoneFrame member function declarations
/// Retrieves bitmap resources
wxBitmap GetBitmapResource( const wxString& name );
/// Retrieves icon resources
wxIcon GetIconResource( const wxString& name );
////@end WinEDA_ZoneFrame member function declarations
/// Should we show tooltips?
static bool ShowToolTips();
bool AcceptOptions(bool aPromptForErrors);
////@begin WinEDA_ZoneFrame member variables
wxRadioBox* m_GridCtrl;
wxStaticText* m_ClearanceValueTitle;
wxTextCtrl* m_ZoneClearanceCtrl;
wxRadioBox* m_OutlineAppearanceCtrl;
wxRadioBox* m_FillOpt;
wxRadioBox* m_OrientEdgesOpt;
wxRadioBox* m_NetSortingOption;
wxTextCtrl* m_NetNameFilter;
wxListBox* m_ListNetNameSelection;
wxListBox* m_LayerSelectionCtrl;
////@end WinEDA_ZoneFrame member variables
WinEDA_PcbFrame * m_Parent;
int m_NetSorting;
int m_LayerId[LAYER_COUNT]; // Handle the real layer number from layer name position in m_LayerSelectionCtrl
ZONE_CONTAINER * m_Zone_Container;
};
#endif // DIALOG_ZONES_H_

File diff suppressed because it is too large Load Diff

View File

@ -22,6 +22,8 @@ OBJECTS= $(TARGET).o classpcb.o\
$(SPECCTRA_TOOLS)\ $(SPECCTRA_TOOLS)\
lay2plot.o\ lay2plot.o\
dialog_freeroute_exchange.o\ dialog_freeroute_exchange.o\
dialog_copper_zones_frame.o\
dialog_copper_zones.o\
dialog_non_copper_zones_properties.o\ dialog_non_copper_zones_properties.o\
zones_non_copper_type_functions.o\ zones_non_copper_type_functions.o\
modedit_undo_redo.o\ modedit_undo_redo.o\
@ -297,7 +299,9 @@ graphpcb.o: graphpcb.cpp cell.h autorout.h $(COMMON)
zones.o: zones.cpp cell.h $(COMMON) zones.o: zones.cpp cell.h $(COMMON)
zones_by_polygon.o: zones_by_polygon.cpp dialog_zones_by_polygon.cpp dialog_zones_by_polygon.h $(COMMON)
zones_by_polygon.o: zones_by_polygon.cpp $(COMMON)
undelete.o: undelete.cpp $(COMMON) undelete.o: undelete.cpp $(COMMON)

View File

@ -400,6 +400,12 @@ void WinEDA_PcbFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
case TYPEDRAWSEGMENT: case TYPEDRAWSEGMENT:
break; break;
case TYPEZONE_CONTAINER:
if( DrawStruct->m_Flags )
break;
Edit_Zone_Params( &dc, (ZONE_CONTAINER*) DrawStruct );
break;
default: default:
break; break;
} }

View File

@ -31,7 +31,14 @@ eda_global bool g_Zone_45_Only
= FALSE = FALSE
#endif #endif
; ;
eda_global int g_NetcodeSelection; // Net code selection for the current zone
eda_global int g_CurrentZone_Layer; // Layer used to create the current zone 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 eda_global int g_Zone_Hatching; // Option to show the zone area (outlines only, short hatches or full hatches
eda_global ZONE_CONTAINER::m_PadInZone g_Zone_Pad_Options
#ifdef MAIN
= ZONE_CONTAINER::THERMAL_PAD
#endif
;
#endif // ifndef ZONES_H #endif // ifndef ZONES_H

View File

@ -48,15 +48,13 @@ static void Show_Zone_Corner_Or_Outline_While_Move_Mouse( WinEDA_DrawPanel* pane
bool erase ); bool erase );
/* Local variables */ /* Local variables */
static ZONE_CONTAINER::m_PadInZone s_Zone_Pad_Options = ZONE_CONTAINER::THERMAL_PAD;
static int s_NetcodeSelection; // Net code selection for the current zone
static wxPoint s_CornerInitialPosition; // Used to abort a move corner command 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_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 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 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 static wxPoint s_CursorLastPosition; // in move zone outline, last cursor position. Used to calculate the move vector
#include "dialog_zones_by_polygon.cpp" #include "dialog_copper_zones.h"
/**********************************************************************************/ /**********************************************************************************/
void WinEDA_PcbFrame::Add_Similar_Zone( wxDC* DC, ZONE_CONTAINER* zone_container ) void WinEDA_PcbFrame::Add_Similar_Zone( wxDC* DC, ZONE_CONTAINER* zone_container )
@ -225,7 +223,7 @@ void WinEDA_PcbFrame::Start_Move_Zone_Corner( wxDC* DC, ZONE_CONTAINER* zone_con
Hight_Light( DC ); // Remove old hightlight selection Hight_Light( DC ); // Remove old hightlight selection
} }
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet(); g_HightLigth_NetCode = g_NetcodeSelection = zone_container->GetNet();
if( DC ) if( DC )
Hight_Light( DC ); Hight_Light( DC );
} }
@ -278,7 +276,7 @@ void WinEDA_PcbFrame::Start_Move_Zone_Outlines( wxDC* DC, ZONE_CONTAINER* zone_c
Hight_Light( DC ); // Remove old hightlight selection Hight_Light( DC ); // Remove old hightlight selection
} }
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet(); g_HightLigth_NetCode = g_NetcodeSelection = zone_container->GetNet();
Hight_Light( DC ); Hight_Light( DC );
} }
@ -518,14 +516,14 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
zone->SetLayer( ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer ); zone->SetLayer( ( (PCB_SCREEN*) GetScreen() )->m_Active_Layer );
if( zone->IsOnCopperLayer() ) if( zone->IsOnCopperLayer() )
{ // Put a zone on a copper layer { // Put a zone on a copper layer
WinEDA_ZoneFrame* frame = new WinEDA_ZoneFrame( this, zone ); dialog_copper_zone* frame = new dialog_copper_zone( this, zone );
diag = frame->ShowModal(); diag = frame->ShowModal();
frame->Destroy(); frame->Destroy();
} }
else // Put a zone on a non copper layer (technical layer) else // Put a zone on a non copper layer (technical layer)
{ {
diag = InstallDialogNonCopperZonesEditor( this, zone ); diag = InstallDialogNonCopperZonesEditor( this, zone );
s_NetcodeSelection = 0; // No net for non copper zones g_NetcodeSelection = 0; // No net for non copper zones
} }
DrawPanel->MouseToCursorSchema(); DrawPanel->MouseToCursorSchema();
DrawPanel->m_IgnoreMouseEvents = FALSE; DrawPanel->m_IgnoreMouseEvents = FALSE;
@ -545,14 +543,14 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
/* Show the Net for zones on copper layers */ /* Show the Net for zones on copper layers */
if( g_CurrentZone_Layer < FIRST_NO_COPPER_LAYER ) if( g_CurrentZone_Layer < FIRST_NO_COPPER_LAYER )
{ {
if( g_HightLigt_Status && (g_HightLigth_NetCode != s_NetcodeSelection) ) if( g_HightLigt_Status && (g_HightLigth_NetCode != g_NetcodeSelection) )
{ {
Hight_Light( DC ); // Remove old hightlight selection Hight_Light( DC ); // Remove old hightlight selection
} }
if( s_CurrentZone ) if( s_CurrentZone )
s_NetcodeSelection = s_CurrentZone->GetNet(); g_NetcodeSelection = s_CurrentZone->GetNet();
g_HightLigth_NetCode = s_NetcodeSelection; g_HightLigth_NetCode = g_NetcodeSelection;
Hight_Light( DC ); Hight_Light( DC );
} }
if( !s_AddCutoutToCurrentZone ) if( !s_AddCutoutToCurrentZone )
@ -564,9 +562,9 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
{ {
zone->m_Flags = IS_NEW; zone->m_Flags = IS_NEW;
zone->SetLayer( g_CurrentZone_Layer ); zone->SetLayer( g_CurrentZone_Layer );
zone->SetNet( s_NetcodeSelection ); zone->SetNet( g_NetcodeSelection );
zone->m_TimeStamp = GetTimeStamp(); zone->m_TimeStamp = GetTimeStamp();
zone->m_PadOption = s_Zone_Pad_Options; zone->m_PadOption = g_Zone_Pad_Options;
zone->m_ZoneClearance = g_DesignSettings.m_ZoneClearence; zone->m_ZoneClearance = g_DesignSettings.m_ZoneClearence;
zone->m_GridFillValue = g_GridRoutingSize; zone->m_GridFillValue = g_GridRoutingSize;
zone->m_Poly->Start( g_CurrentZone_Layer, zone->m_Poly->Start( g_CurrentZone_Layer,
@ -758,7 +756,7 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container
DrawPanel->m_IgnoreMouseEvents = TRUE; DrawPanel->m_IgnoreMouseEvents = TRUE;
if( zone_container->GetLayer() < FIRST_NO_COPPER_LAYER ) if( zone_container->GetLayer() < FIRST_NO_COPPER_LAYER )
{ // edit a zone on a copper layer { // edit a zone on a copper layer
WinEDA_ZoneFrame* frame = new WinEDA_ZoneFrame( this, zone_container ); dialog_copper_zone* frame = new dialog_copper_zone( this, zone_container );
diag = frame->ShowModal(); diag = frame->ShowModal();
frame->Destroy(); frame->Destroy();
} }
@ -779,12 +777,12 @@ void WinEDA_PcbFrame::Edit_Zone_Params( wxDC* DC, ZONE_CONTAINER* zone_container
} }
zone_container->SetLayer( g_CurrentZone_Layer ); zone_container->SetLayer( g_CurrentZone_Layer );
zone_container->SetNet( s_NetcodeSelection ); zone_container->SetNet( g_NetcodeSelection );
EQUIPOT* net = m_Pcb->FindNet( s_NetcodeSelection ); EQUIPOT* net = m_Pcb->FindNet( g_NetcodeSelection );
if( net ) if( net )
zone_container->m_Netname = net->m_Netname; zone_container->m_Netname = net->m_Netname;
zone_container->m_Poly->SetHatch( g_Zone_Hatching ); zone_container->m_Poly->SetHatch( g_Zone_Hatching );
zone_container->m_PadOption = s_Zone_Pad_Options; zone_container->m_PadOption = g_Zone_Pad_Options;
zone_container->m_ZoneClearance = g_DesignSettings.m_ZoneClearence; zone_container->m_ZoneClearance = g_DesignSettings.m_ZoneClearence;
zone_container->m_GridFillValue = g_GridRoutingSize; zone_container->m_GridFillValue = g_GridRoutingSize;
@ -858,13 +856,13 @@ int WinEDA_PcbFrame::Fill_Zone( wxDC* DC, ZONE_CONTAINER* zone_container, bool v
} }
/* Show the Net */ /* Show the Net */
s_NetcodeSelection = zone_container->GetNet(); g_NetcodeSelection = zone_container->GetNet();
if( g_HightLigt_Status && (g_HightLigth_NetCode != s_NetcodeSelection) && DC ) if( g_HightLigt_Status && (g_HightLigth_NetCode != g_NetcodeSelection) && DC )
{ {
Hight_Light( DC ); // Remove old hightlight selection Hight_Light( DC ); // Remove old hightlight selection
} }
g_HightLigth_NetCode = s_NetcodeSelection; g_HightLigth_NetCode = g_NetcodeSelection;
if( DC ) if( DC )
Hight_Light( DC ); Hight_Light( DC );
@ -892,6 +890,7 @@ int WinEDA_PcbFrame::Fill_Zone( wxDC* DC, ZONE_CONTAINER* zone_container, bool v
int error_level = 0; int error_level = 0;
if( zone_container->m_GridFillValue == 0 ) if( zone_container->m_GridFillValue == 0 )
{ {
zone_container->m_FilledPolysList.clear();
zone_container->BuildFilledPolysListData( m_Pcb ); zone_container->BuildFilledPolysListData( m_Pcb );
if ( DC ) if ( DC )
DrawPanel->Refresh(); DrawPanel->Refresh();
@ -936,7 +935,6 @@ int WinEDA_PcbFrame::Fill_All_Zones( wxDC* DC, bool verbose )
for( int ii = 0; ii < m_Pcb->GetAreaCount(); ii++ ) for( int ii = 0; ii < m_Pcb->GetAreaCount(); ii++ )
{ {
zone_container = m_Pcb->GetArea( ii ); zone_container = m_Pcb->GetArea( ii );
zone_container->m_FilledPolysList.clear();
error_level = Fill_Zone( NULL, zone_container, verbose ); error_level = Fill_Zone( NULL, zone_container, verbose );
if( error_level && !verbose ) if( error_level && !verbose )
break; break;