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 ""
"Project-Id-Version: kicad\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-10-07 20:39+0100\n"
"PO-Revision-Date: 2008-10-07 20:47+0100\n"
"POT-Creation-Date: 2008-10-09 22:04+0100\n"
"PO-Revision-Date: 2008-10-09 22:05+0100\n"
"Last-Translator: \n"
"Language-Team: kicad team <jean-pierre.charras@ujf-grenoble.fr>\n"
"MIME-Version: 1.0\n"
@ -347,7 +347,7 @@ msgstr "dimension"
#: pcbnew/class_marker.cpp:133
#: pcbnew/class_text_mod.cpp:503
#: pcbnew/class_track.cpp:852
#: pcbnew/class_zone.cpp:722
#: pcbnew/class_zone.cpp:758
msgid "Type"
msgstr "Type"
@ -370,7 +370,7 @@ msgstr "Segment"
#: pcbnew/class_pcb_text.cpp:190
#: pcbnew/class_text_mod.cpp:516
#: pcbnew/class_track.cpp:909
#: pcbnew/class_zone.cpp:756
#: pcbnew/class_zone.cpp:792
msgid "Layer"
msgstr "Couche"
@ -571,12 +571,12 @@ msgid "Display"
msgstr "Affichage"
#: pcbnew/class_track.cpp:868
#: pcbnew/class_zone.cpp:744
#: pcbnew/class_zone.cpp:780
msgid "NetName"
msgstr "NetName"
#: pcbnew/class_track.cpp:873
#: pcbnew/class_zone.cpp:752
#: pcbnew/class_zone.cpp:788
msgid "NetCode"
msgstr "NetCode"
@ -588,26 +588,30 @@ msgstr "Standard"
msgid "Diam"
msgstr "Diam"
#: pcbnew/class_zone.cpp:747
#: pcbnew/class_zone.cpp:783
msgid "Non Copper Zone"
msgstr "Zone non Cuivre"
#: pcbnew/class_zone.cpp:760
#: pcbnew/class_zone.cpp:796
msgid "Corners"
msgstr "Sommets"
#: pcbnew/class_zone.cpp:765
#: pcbnew/class_zone.cpp:802
msgid "No Grid"
msgstr "Pas de Grille"
#: pcbnew/class_zone.cpp:766
#: pcbnew/class_zone.cpp:803
msgid "Fill Grid"
msgstr "Grille de Remplissage"
#: pcbnew/class_zone.cpp:770
#: pcbnew/class_zone.cpp:808
msgid "Hatch lines"
msgstr "Lignes de Hachure"
#: pcbnew/class_zone.cpp:814
msgid "Corners in DrawList"
msgstr ""
#: pcbnew/clean.cpp:179
msgid "Delete unconnected tracks:"
msgstr "Suppression Pistes non connectées"
@ -1841,101 +1845,6 @@ msgstr "Epais. Piste"
msgid "Mask clearance"
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:272
msgid "Plot"
@ -2303,7 +2212,6 @@ msgid "GenCAD file:"
msgstr "Fichier GenCAD:"
#: pcbnew/export_gencad.cpp:83
#: pcbnew/files.cpp:352
msgid "Unable to create "
msgstr "Impossible de créer "
@ -2649,6 +2557,7 @@ msgid "Search footprint"
msgstr "Cherche Module"
#: pcbnew/modules.cpp:305
#: pcbnew/onrightclick.cpp:730
msgid "Delete Module"
msgstr "Supprimer Module"
@ -2845,22 +2754,18 @@ msgid "Read Global AutoRouter Data"
msgstr "Lire Données de L'autorouteur global"
#: pcbnew/onrightclick.cpp:447
#: pcbnew/modedit_onclick.cpp:206
msgid "Cancel Block"
msgstr "Annuler Bloc"
#: pcbnew/onrightclick.cpp:449
#: pcbnew/modedit_onclick.cpp:208
msgid "Zoom Block (drag middle mouse)"
msgstr "Zoom Bloc (drag bouton du milieu souris)"
#: pcbnew/onrightclick.cpp:452
#: pcbnew/modedit_onclick.cpp:211
msgid "Place Block"
msgstr "Place Bloc"
#: pcbnew/onrightclick.cpp:454
#: pcbnew/modedit_onclick.cpp:213
msgid "Copy Block (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)"
#: pcbnew/onrightclick.cpp:458
#: pcbnew/modedit_onclick.cpp:217
msgid "Rotate Block (ctrl + drag mouse)"
msgstr "Rotation Bloc (ctrl + drag mouse)"
#: pcbnew/onrightclick.cpp:460
#: pcbnew/modedit_onclick.cpp:219
msgid "Delete Block (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:758
#: pcbnew/onrightclick.cpp:862
#: pcbnew/modedit_onclick.cpp:306
msgid "Edit"
msgstr "Editer"
#: pcbnew/onrightclick.cpp:756
#: pcbnew/onrightclick.cpp:860
#: pcbnew/modedit_onclick.cpp:241
msgid "Rotate"
msgstr "Rotation"
#: pcbnew/onrightclick.cpp:795
#: pcbnew/modedit_onclick.cpp:263
msgid "Edit Pad"
msgstr "Edit Pad"
#: pcbnew/onrightclick.cpp:799
#: pcbnew/modedit_onclick.cpp:265
msgid "New Pad Settings"
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"
#: pcbnew/onrightclick.cpp:803
#: pcbnew/modedit_onclick.cpp:267
msgid "Export Pad Settings"
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"
#: pcbnew/onrightclick.cpp:810
#: pcbnew/modedit_onclick.cpp:274
msgid "Global Pad Settings"
msgstr "Edition Globale des pads"
@ -3593,6 +3490,7 @@ msgstr "Impossible de créer fichier "
#: pcbnew/plotgerb.cpp:82
#: pcbnew/plothpgl.cpp:74
#: pcbnew/plotps.cpp:58
msgid "File"
msgstr "Fichier"
@ -3825,21 +3723,21 @@ msgstr "Change module %s (%s) "
msgid "Cmp files:"
msgstr "Fichiers Cmp: "
#: pcbnew/zones_by_polygon.cpp:330
#: pcbnew/zones_by_polygon.cpp:386
#: pcbnew/zones_by_polygon.cpp:703
#: pcbnew/zones_by_polygon.cpp:328
#: pcbnew/zones_by_polygon.cpp:384
#: pcbnew/zones_by_polygon.cpp:701
msgid "Area: DRC outline error"
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"
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"
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"
msgstr "No Net"
@ -4283,12 +4181,10 @@ 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:46
#: pcbnew/menubarpcb.cpp:234
msgid "Adjust size,shape,layers... for Pads"
msgstr "Ajuster taille, forme, couches... pour pads"
@ -4297,52 +4193,42 @@ 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:64
#: pcbnew/menubarpcb.cpp:292
msgid "&Contents"
msgstr "&Contenu"
#: pcbnew/menubarmodedit.cpp:65
#: pcbnew/menubarpcb.cpp:292
msgid "Open the pcbnew manual"
msgstr "Ouvrir la documentation de pcbnew"
#: pcbnew/menubarmodedit.cpp:73
#: pcbnew/menubarpcb.cpp:296
msgid "&About pcbnew"
msgstr "&Au sujet de r Pcbnew"
#: pcbnew/menubarmodedit.cpp:74
#: pcbnew/menubarpcb.cpp:296
msgid "About pcbnew PCB designer"
msgstr "Au sujet de Pcbnew, concption de PCB"
#: pcbnew/menubarmodedit.cpp:82
#: pcbnew/menubarpcb.cpp:304
msgid "3D Display"
msgstr "3D Visu"
#: pcbnew/menubarmodedit.cpp:82
#: pcbnew/menubarpcb.cpp:304
msgid "Show board in 3D viewer"
msgstr "Visualisation du circuit en 3D"
#: pcbnew/menubarmodedit.cpp:86
#: pcbnew/menubarpcb.cpp:310
msgid "&Dimensions"
msgstr "&Dimensions"
#: pcbnew/menubarmodedit.cpp:87
#: pcbnew/menubarpcb.cpp:313
msgid "&3D Display"
msgstr "&3D Visu"
#: pcbnew/menubarmodedit.cpp:88
#: pcbnew/menubarpcb.cpp:314
msgid "&Help"
msgstr "&Aide"
@ -4638,10 +4524,28 @@ msgstr "&Divers"
msgid "P&ostprocess"
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
msgid "Outlines Appearence"
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
msgid "H, V and 45 deg"
msgstr "H, V et 45 deg"
@ -4654,6 +4558,23 @@ msgstr "Direction contours zone"
msgid "Layer selection:"
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
msgid "from "
msgstr "De "
@ -4730,6 +4651,90 @@ msgstr "Fichier placement coté cuivre:"
msgid "Module count"
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
msgid "Pad Num :"
msgstr "Num Pad :"
@ -4839,6 +4844,18 @@ msgstr "couche E.C.O.2"
msgid "Draft layer"
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
msgid "Board modified, Save before exit ?"
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)"
#: eeschema/tool_lib.cpp:238
#: eeschema/tool_viewlib.cpp:128
#, c-format
msgid "Part %c"
msgstr "Composant %c"
@ -8312,6 +8328,7 @@ msgid "1:1 zoom"
msgstr "1:1 zoom"
#: cvpcb/genorcad.cpp:134
#: cvpcb/writenetlistpcbnew.cpp:168
#, c-format
msgid "%s %s pin %s : Different Nets"
msgstr "%s %s pin %s : Nets Differents"
@ -8322,6 +8339,7 @@ msgid "Components: %d (free: %d)"
msgstr "Composants: %d (libres: %d)"
#: cvpcb/init.cpp:112
#: cvpcb/cvframe.cpp:340
#, c-format
msgid "Componants: %d (free: %d)"
msgstr "Composants: %d (libres: %d)"
@ -10190,10 +10208,6 @@ msgstr "Dialog"
msgid "Tracks and Vias Sizes"
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
#, c-format
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"
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
msgid "Drill Files Generation"
msgstr "Génération Fichiers de Perçagee"
@ -10606,6 +10624,9 @@ msgstr "Imprimer"
msgid "Create SVG file"
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"
#~ msgstr "Au sujet de cette application"
#~ msgid "Place the graphic line or poligon"

View File

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

View File

@ -332,7 +332,10 @@ int ZONE_CONTAINER::ReadDescr( FILE* aFile, int* aLineNum )
}
if( !IsOnCopperLayer() )
{
m_GridFillValue = 0;
SetNet( 0 );
}
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)\
lay2plot.o\
dialog_freeroute_exchange.o\
dialog_copper_zones_frame.o\
dialog_copper_zones.o\
dialog_non_copper_zones_properties.o\
zones_non_copper_type_functions.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_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)

View File

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

View File

@ -31,7 +31,14 @@ eda_global bool g_Zone_45_Only
= FALSE
#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_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

View File

@ -48,15 +48,13 @@ static void Show_Zone_Corner_Or_Outline_While_Move_Mouse( WinEDA_DrawPanel* pane
bool erase );
/* 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 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"
#include "dialog_copper_zones.h"
/**********************************************************************************/
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
}
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet();
g_HightLigth_NetCode = g_NetcodeSelection = zone_container->GetNet();
if( 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
}
g_HightLigth_NetCode = s_NetcodeSelection = zone_container->GetNet();
g_HightLigth_NetCode = g_NetcodeSelection = zone_container->GetNet();
Hight_Light( DC );
}
@ -518,14 +516,14 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
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, zone );
dialog_copper_zone* frame = new dialog_copper_zone( this, zone );
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
g_NetcodeSelection = 0; // No net for non copper zones
}
DrawPanel->MouseToCursorSchema();
DrawPanel->m_IgnoreMouseEvents = FALSE;
@ -545,14 +543,14 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
/* Show the Net for zones on copper layers */
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
}
if( s_CurrentZone )
s_NetcodeSelection = s_CurrentZone->GetNet();
g_HightLigth_NetCode = s_NetcodeSelection;
g_NetcodeSelection = s_CurrentZone->GetNet();
g_HightLigth_NetCode = g_NetcodeSelection;
Hight_Light( DC );
}
if( !s_AddCutoutToCurrentZone )
@ -564,9 +562,9 @@ int WinEDA_PcbFrame::Begin_Zone( wxDC* DC )
{
zone->m_Flags = IS_NEW;
zone->SetLayer( g_CurrentZone_Layer );
zone->SetNet( s_NetcodeSelection );
zone->SetNet( g_NetcodeSelection );
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_GridFillValue = g_GridRoutingSize;
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;
if( zone_container->GetLayer() < FIRST_NO_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();
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->SetNet( s_NetcodeSelection );
EQUIPOT* net = m_Pcb->FindNet( s_NetcodeSelection );
zone_container->SetNet( g_NetcodeSelection );
EQUIPOT* net = m_Pcb->FindNet( g_NetcodeSelection );
if( net )
zone_container->m_Netname = net->m_Netname;
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_GridFillValue = g_GridRoutingSize;
@ -858,13 +856,13 @@ int WinEDA_PcbFrame::Fill_Zone( wxDC* DC, ZONE_CONTAINER* zone_container, bool v
}
/* Show the Net */
s_NetcodeSelection = zone_container->GetNet();
if( g_HightLigt_Status && (g_HightLigth_NetCode != s_NetcodeSelection) && DC )
g_NetcodeSelection = zone_container->GetNet();
if( g_HightLigt_Status && (g_HightLigth_NetCode != g_NetcodeSelection) && DC )
{
Hight_Light( DC ); // Remove old hightlight selection
}
g_HightLigth_NetCode = s_NetcodeSelection;
g_HightLigth_NetCode = g_NetcodeSelection;
if( 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;
if( zone_container->m_GridFillValue == 0 )
{
zone_container->m_FilledPolysList.clear();
zone_container->BuildFilledPolysListData( m_Pcb );
if ( DC )
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++ )
{
zone_container = m_Pcb->GetArea( ii );
zone_container->m_FilledPolysList.clear();
error_level = Fill_Zone( NULL, zone_container, verbose );
if( error_level && !verbose )
break;