small bugs fixed. Added: Support for microvias (see changelog)

This commit is contained in:
CHARRAS 2008-01-12 20:31:56 +00:00
parent a5e2913ded
commit e3a3d16af8
35 changed files with 2700 additions and 1983 deletions

View File

@ -250,7 +250,8 @@ double zpos, height;
int color;
r = via->m_Width * g_Parm_3D_Visu.m_BoardScale / 2;
hole = g_Parm_3D_Visu.m_BoardSettings->m_ViaDrill * g_Parm_3D_Visu.m_BoardScale / 2;
hole = via->GetDrillValue();
hole *= g_Parm_3D_Visu.m_BoardScale / 2;
x = via->m_Start.x * g_Parm_3D_Visu.m_BoardScale;
y = via->m_Start.y * g_Parm_3D_Visu.m_BoardScale;

View File

@ -4,6 +4,16 @@ Started 2007-June-11
Please add newer entries at the top, list the date and your name with
email address.
2007-Dec-12 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+eeschema:
missing footprints in export netlist (bug 1867321)
Affected: PadsPcb converter did not list all footprints
+pcbnew:
fixed: memory not freeed in block copy (minor bug)
Support for micro vias (generation of drill files not finished)
2008-jan-06 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
================================================================================
+pcbnew:

View File

@ -250,7 +250,8 @@ void Write_GENERIC_NetList( WinEDA_SchematicFrame* frame,
/* Create netlist module section */
fprintf( tmpfile, "$BeginComponentList\n" );
for( CurrScreen = ScreenSch; CurrScreen != NULL; CurrScreen = (BASE_SCREEN*) CurrScreen->Pnext )
EDA_ScreenList ScreenList( NULL );
for( CurrScreen = ScreenList.GetFirst(); CurrScreen != NULL; CurrScreen = ScreenList.GetNext() )
{
for( DrawList = CurrScreen->EEDrawList; DrawList != NULL; DrawList = DrawList->Pnext )
{

View File

@ -181,7 +181,7 @@ static int SavePcbFormatAscii( WinEDA_GerberFrame* frame, FILE* aFile,
newtrack->SetLayer( 0x0F ); // Layers are 0 to 15 (Cu/Cmp)
newtrack->m_Drill = -1;
newtrack->SetDrillDefault();
// Compute the via position from track position ( Via position is the
// position of the middle of the track segment )

View File

@ -577,6 +577,7 @@ enum main_id {
ID_POPUP_PCB_EDIT_COTATION,
ID_POPUP_PCB_END_TRACK,
ID_POPUP_PCB_PLACE_VIA,
ID_POPUP_PCB_PLACE_MICROVIA,
ID_POPUP_PCB_IMPORT_PAD_SETTINGS,
ID_POPUP_PCB_EXPORT_PAD_SETTINGS,

View File

@ -150,7 +150,10 @@ class EDA_BoardDesignSettings
public:
int m_CopperLayerCount; // Number of copper layers for this design
int m_ViaDrill; // via drill (for the entire board)
int m_MicroViaDrill; // micro via drill (for the entire board)
int m_CurrentViaSize; // Current via size
int m_CurrentMicroViaSize; // Current micro via size
bool m_MicroViasAllowed; // true to allow micro vias
int m_ViaSizeHistory[HIST0RY_NUMBER]; // Last HIST0RY_NUMBER used via sizes
int m_CurrentViaType; // via type (BLIND, TROUGHT ...), bits 1 and 2 (not 0 and 1)
int m_CurrentTrackWidth; // current track width
@ -222,6 +225,14 @@ public:
* @return BOARD_ITEM* - the one selected, or NULL.
*/
BOARD_ITEM* GetCurItem() const { return (BOARD_ITEM*) BASE_SCREEN::GetCurItem(); }
/* Return true if a microvia can be put on board
* A microvia ia a small via restricted to 2 near neighbour layers
* because its is hole is made by laser which can penetrate only one layer
* It is mainly used to connect BGA to the first inner layer
* And it is allowed from an external layer to the first inner layer
*/
bool IsMicroViaAcceptable(void);
};
/**********************************/

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -110,6 +110,12 @@ void BOARD::UnLink()
void BOARD::Add( BOARD_ITEM* aBoardItem, int aControl )
{
if ( aBoardItem == NULL )
{
wxFAIL_MSG( wxT("BOARD::Add() param error: aBoardItem NULL") );
return;
}
switch( aBoardItem->Type() )
{
// this one uses a vector

View File

@ -199,10 +199,10 @@ wxString BOARD_ITEM::MenuText( const BOARD* aPcb ) const
text << _( "Via" ) << wxT( " " ) << via->ShowWidth();
int shape = via->Shape();
if( shape == VIA_BURIED )
text << wxT(" ") << _( "Blind" );
else if( shape == VIA_BLIND )
text << wxT(" ") << _("Buried");
if( shape == VIA_BLIND_BURIED )
text << wxT(" ") << _( "Blind/Buried" );
else if( shape == VIA_MICROVIA )
text << wxT(" ") << _("Micro Via");
// else say nothing about normal (through) vias
net = aPcb->FindNet( via->GetNet() );

View File

@ -65,6 +65,8 @@ wxString DRC_ITEM::GetErrorText() const
return wxString( _("Pad near pad") );
case DRCE_VIA_HOLE_BIGGER:
return wxString( _("Via hole > diameter"));
case DRCE_MICRO_VIA_INCORRECT_LAYER_PAIR:
return wxString( _("Micro Via: incorrect layer pairs (not adjacent)"));
case COPPERAREA_INSIDE_COPPERAREA:
return wxString( _("Copper area inside copper area"));
case COPPERAREA_CLOSE_TO_COPPERAREA:

View File

@ -68,6 +68,16 @@ MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos,
bText, bPos );
}
MARKER::MARKER( int aErrorCode, const wxPoint& aMarkerPos,
const wxString& aText, const wxPoint& aPos ) :
BOARD_ITEM( NULL, TYPEMARKER ) // parent set during BOARD::Add()
{
init();
SetData( aErrorCode, aMarkerPos,
aText, aPos );
}
/* Effacement memoire de la structure */
MARKER::~MARKER()
@ -91,6 +101,17 @@ void MARKER::SetData( int aErrorCode, const wxPoint& aMarkerPos,
}
void MARKER::SetData( int aErrorCode, const wxPoint& aMarkerPos,
const wxString& aText, const wxPoint& aPos )
{
m_drc.SetData( aErrorCode, aMarkerPos,
aText, aPos );
// @todo: switch on error code to set error code specific color, and possibly bitmap.
m_Color = WHITE;
}
/* supprime du chainage la structure Struct
* les structures arrieres et avant sont chainees directement
*/
@ -122,6 +143,7 @@ void MARKER::Display_Infos( WinEDA_DrawFrame* frame )
txtA << DRC_ITEM::ShowCoord( rpt.GetPointA() ) << wxT(": ") << rpt.GetTextA();
wxString txtB;
if ( rpt.AsSecondItem() )
txtB << DRC_ITEM::ShowCoord( rpt.GetPointB() ) << wxT(": ") << rpt.GetTextB();
text_pos = 25;

View File

@ -37,6 +37,16 @@ public:
MARKER( int aErrorCode, const wxPoint& aMarkerPos,
const wxString& aText, const wxPoint& aPos,
const wxString& bText, const wxPoint& bPos );
/**
* Constructor
* @param aErrorCode The categorizing identifier for an error
* @param aMarkerPos The position of the MARKER on the BOARD
* @param aText Text describing the object
* @param aPos The position of the object
*/
MARKER( int aErrorCode, const wxPoint& aMarkerPos,
const wxString& aText, const wxPoint& aPos );
~MARKER();
@ -78,6 +88,17 @@ public:
const wxString& aText, const wxPoint& aPos,
const wxString& bText, const wxPoint& bPos );
/**
* Function SetData
* fills in all the reportable data associated with a MARKER.
* @param aErrorCode The categorizing identifier for an error
* @param aMarkerPos The position of the MARKER on the BOARD
* @param aText Text describing the object
* @param aPos The position of the object
*/
void SetData( int aErrorCode, const wxPoint& aMarkerPos,
const wxString& aText, const wxPoint& aPos );
/**
* Function GetReporter

View File

@ -52,7 +52,7 @@ TRACK::TRACK( BOARD_ITEM* StructFather, KICAD_T idtype ) :
start = end = NULL;
SetNet( 0 );
SetSubNet( 0 );
m_Drill = -1;
SetDrillDefault();
m_Param = 0;
}
@ -131,6 +131,24 @@ TRACK* TRACK::Copy() const
}
/**
* Function GetDrillValue
* calculate the drill value for vias (m-Drill if > 0, or default drill value for the board
* @return real drill_value
*/
int TRACK::GetDrillValue(void)
{
if ( Type() != TYPEVIA ) return 0;
if ( m_Drill >= 0 ) return m_Drill;
if ( m_Shape == VIA_MICROVIA )
return g_DesignSettings.m_MicroViaDrill;
return g_DesignSettings.m_ViaDrill;
}
/***********************/
bool TRACK::IsNull()
/***********************/
@ -253,7 +271,7 @@ int TRACK::ReturnMaskLayer()
if( via_type == VIA_THROUGH )
return ALL_CU_LAYERS;
// VIA_BLIND or VIA_BURIED:
// VIA_BLIND_BURIED or VIA_MICRVIA:
int bottom_layer, top_layer;
@ -522,33 +540,6 @@ TRACK* TRACK::GetEndNetCode( int NetCode )
}
#if 0 // replaced by Save()
/********************************************/
bool TRACK::WriteTrackDescr( FILE* File )
/********************************************/
/* write a via description on file
*/
{
int type = 0;
if( Type() == TYPEVIA )
type = 1;
if( GetState( DELETED ) )
return FALSE;
fprintf( File, "Po %d %d %d %d %d %d %d\n", m_Shape,
m_Start.x, m_Start.y, m_End.x, m_End.y, m_Width, m_Drill );
fprintf( File, "De %d %d %d %lX %X\n",
m_Layer, type, GetNet(),
m_TimeStamp, ReturnStatus() );
return TRUE;
}
#endif
bool TRACK::Save( FILE* aFile ) const
{
int type = 0;
@ -631,20 +622,17 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode )
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y, rayon, color );
if( rayon > (4 * zoom) )
{
int drill_rayon, inner_rayon = rayon - (2 * zoom);
int drill_rayon = GetDrillValue() / 2;
int inner_rayon = rayon - (2 * zoom);
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
inner_rayon, color );
// Draw the via hole if the display option allows it
if( DisplayOpt.m_DisplayViaMode != VIA_HOLE_NOT_SHOW )
{
if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW)
|| ( m_Drill > 0 ) )
if( (DisplayOpt.m_DisplayViaMode == ALL_VIA_HOLE_SHOW) || // Display all drill holes requested
( (drill_rayon > 0 ) && ! IsDrillDefault() ) ) // Or Display non default holes requested
{
if( m_Drill > 0 )
drill_rayon = m_Drill / 2;
else
drill_rayon = g_DesignSettings.m_ViaDrill / 2;
if( drill_rayon < inner_rayon ) // We can show the via hole
{
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
@ -656,6 +644,33 @@ void TRACK::Draw( WinEDA_DrawPanel* panel, wxDC* DC, int draw_mode )
if( DisplayOpt.DisplayTrackIsol )
GRCircle( &panel->m_ClipBox, DC, m_Start.x, m_Start.y,
rayon + g_DesignSettings.m_TrackClearence, color );
// for Micro Vias, draw a partial cross :
// X on component layer, or + on copper layer
// (so we can see 2 superimposed microvias ):
if ( Shape() == VIA_MICROVIA )
{
int ax, ay, bx, by;
if ( IsOnLayer(COPPER_LAYER_N) )
{
ax = rayon; ay = 0;
bx = drill_rayon; by = 0;
}
else
{
ax = ay = (rayon * 707) / 1000;
bx = by = (drill_rayon * 707) / 1000;
}
/* lines | or \ */
GRLine( &panel->m_ClipBox, DC, m_Start.x - ax , m_Start.y - ay,
m_Start.x - bx , m_Start.y - by, 0, color );
GRLine( &panel->m_ClipBox, DC, m_Start.x + bx , m_Start.y + by,
m_Start.x + ax , m_Start.y + ay, 0, color );
/* lines - or / */
GRLine( &panel->m_ClipBox, DC, m_Start.x + ay, m_Start.y - ax ,
m_Start.x + by, m_Start.y - bx, 0, color );
GRLine( &panel->m_ClipBox, DC, m_Start.x - by, m_Start.y + bx ,
m_Start.x - ay, m_Start.y + ax, 0, color );
}
}
return;
}
@ -813,8 +828,7 @@ void TRACK::Display_Infos( WinEDA_DrawFrame* frame )
{
Affiche_1_Parametre( frame, text_pos, _( "Diam" ), msg, DARKCYAN );
int drill_value = m_Drill >= 0 ?
m_Drill : g_DesignSettings.m_ViaDrill;
int drill_value = GetDrillValue();
valeur_param( (unsigned) drill_value, msg );
@ -909,7 +923,7 @@ void TRACK::Show( int nestLevel, std::ostream& os )
" layer=\"" << m_Layer << '"' <<
" width=\"" << m_Width << '"' <<
// " drill=\"" << m_Drill << '"' <<
// " drill=\"" << GetDrillValue() << '"' <<
" netcode=\"" << GetNet() << "\">" <<
"<start" << m_Start << "/>" <<
"<end" << m_End << "/>";
@ -935,12 +949,12 @@ void SEGVIA::Show( int nestLevel, std::ostream& os )
cp = "through";
break;
case VIA_BURIED:
cp = "blind";
case VIA_BLIND_BURIED:
cp = "blind/buried";
break;
case VIA_BLIND:
cp = "buried";
case VIA_MICROVIA:
cp = "micro via";
break;
default:
@ -959,7 +973,7 @@ void SEGVIA::Show( int nestLevel, std::ostream& os )
" layers=\"" << ReturnPcbLayerName( topLayer ).Trim().mb_str() << ","
<< ReturnPcbLayerName( botLayer ).Trim().mb_str() << '"' <<
" width=\"" << m_Width << '"' <<
" drill=\"" << m_Drill << '"' <<
" drill=\"" << GetDrillValue() << '"' <<
" netcode=\"" << GetNet() << "\">" <<
"<pos" << m_Start << "/>";

View File

@ -10,9 +10,9 @@
// Via attributes (m_Shape parmeter)
#define VIA_THROUGH 3 /* Always a through hole via */
#define VIA_BURIED 2 /* this via can be on internal layers */
#define VIA_BLIND 1 /* this via which connect from internal layers to an external layer */
#define VIA_NOT_DEFINED 0 /* reserved (unused) */
#define VIA_BLIND_BURIED 2 /* this via can be on internal layers */
#define VIA_MICROVIA 1 /* this via which connect from an external layer to the near neightbour internal layer */
#define VIA_NOT_DEFINED 0 /* not yet used */
/***/
@ -22,10 +22,12 @@ public:
int m_Width; // 0 = line, > 0 = tracks, bus ...
wxPoint m_Start; // Line start point
wxPoint m_End; // Line end point
int m_Shape; // vias: shape and type, Track = shape..
protected:
int m_Drill; // for vias: via drill (- 1 for default value)
public:
BOARD_ITEM* start; // pointers to a connected item (pad or track)
BOARD_ITEM* end;
@ -136,6 +138,7 @@ public:
{
int dx = m_Start.x - m_End.x;
int dy = m_Start.y - m_End.y;
return hypot( dx, dy );
}
@ -147,6 +150,32 @@ public:
int Shape() const { return m_Shape & 0xFF; }
/**
* Function SetDrillValue
* Set the drill value for vias
* @param drill_value = new drill value
*/
void SetDrillValue(int drill_value) { m_Drill = drill_value; }
/**
* Function SetDrillDefault
* Set the drill value for vias at default value (-1)
*/
void SetDrillDefault(void) { m_Drill = -1; }
/**
* Function IsDrillDefault
* @return true if the drill value is default value (-1)
*/
bool IsDrillDefault(void) { return m_Drill < 0; }
/**
* Function GetDrillValue
* calculate the drill value for vias (m-Drill if > 0, or default drill value for the board
* @return real drill_value
*/
int GetDrillValue(void);
/**
* Function ReturnMaskLayer
* returns a "layer mask", which is a bitmap of all layers on which the
* TRACK segment or SEGVIA physically resides.
@ -288,6 +317,8 @@ public:
{
return m_Start;
}
void SetPosition( const wxPoint& aPoint ) { m_Start = aPoint; m_End = aPoint; }
/**

View File

@ -19,6 +19,8 @@
#include "trigo.h"
/**************************************************************/
void EDA_BaseStruct::Place( WinEDA_DrawFrame* frame, wxDC* DC )
/**************************************************************/
@ -301,6 +303,29 @@ void PCB_SCREEN::Init()
}
/* Return true if a microvia can be put on board
* A microvia ia a small via restricted to 2 near neighbour layers
* because its is hole is made by laser which can penetrate only one layer
* It is mainly used to connect BGA to the first inner layer
* And it is allowed from an external layer to the first inner layer
*/
bool PCB_SCREEN::IsMicroViaAcceptable(void)
{
int copperlayercnt = g_DesignSettings.m_CopperLayerCount;
if ( ! g_DesignSettings.m_MicroViasAllowed )
return false; // Obvious..
if ( copperlayercnt < 4 )
return false; // Only on multilayer boards..
if ( (m_Active_Layer == COPPER_LAYER_N) ||
(m_Active_Layer == LAYER_CMP_N) ||
(m_Active_Layer == g_DesignSettings.m_CopperLayerCount - 2) ||
(m_Active_Layer == LAYER_N_2) )
return true;
return false;
}
/*************************/
/* class DISPLAY_OPTIONS */
/*************************/
@ -381,8 +406,9 @@ EDA_BoardDesignSettings::EDA_BoardDesignSettings()
m_LayerColor[ii] = default_layer_color[ii];
// Layer colors (tracks and graphic items)
m_ViaColor[VIA_BLIND] = CYAN;
m_ViaColor[VIA_BURIED] = BROWN;
m_ViaColor[VIA_NOT_DEFINED] = DARKGRAY;
m_ViaColor[VIA_MICROVIA] = CYAN;
m_ViaColor[VIA_BLIND_BURIED] = BROWN;
m_ViaColor[VIA_THROUGH] = WHITE;
m_ModuleTextCMPColor = LIGHTGRAY; // Text module color for modules on the COMPONENT layer
m_ModuleTextCUColor = MAGENTA; // Text module color for modules on the COPPER layer

View File

@ -49,6 +49,8 @@ BEGIN_EVENT_TABLE( WinEDA_PcbTracksDialog, wxDialog )
////@begin WinEDA_PcbTracksDialog event table entries
EVT_INIT_DIALOG( WinEDA_PcbTracksDialog::OnInitDialog )
EVT_CHECKBOX( ID_CHECKBOX_ALLOWS_MICROVIA, WinEDA_PcbTracksDialog::OnCheckboxAllowsMicroviaClick )
EVT_BUTTON( wxID_OK, WinEDA_PcbTracksDialog::OnOkClick )
EVT_BUTTON( wxID_CANCEL, WinEDA_PcbTracksDialog::OnCancelClick )
@ -86,6 +88,11 @@ bool WinEDA_PcbTracksDialog::Create( wxWindow* parent, wxWindowID id, const wxSt
m_ViaAltDrillValueTitle = NULL;
m_OptCustomViaDrill = NULL;
m_OptViaType = NULL;
m_MicroViaSizeTitle = NULL;
m_MicroViaSizeCtrl = NULL;
m_MicroViaDrillTitle = NULL;
m_MicroViaDrillCtrl = NULL;
m_AllowMicroViaCtrl = NULL;
m_TrackWidthTitle = NULL;
m_OptTrackWidth = NULL;
m_TrackClearanceTitle = NULL;
@ -117,80 +124,101 @@ void WinEDA_PcbTracksDialog::CreateControls()
SetFont(*g_DialogFont);
////@begin WinEDA_PcbTracksDialog content construction
// Generated by DialogBlocks, Sun 25 Nov 2007 15:41:58 CST (unregistered)
// Generated by DialogBlocks, 11/01/2008 21:51:48 (unregistered)
WinEDA_PcbTracksDialog* itemDialog1 = this;
wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxHORIZONTAL);
itemDialog1->SetSizer(itemBoxSizer2);
wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer2->Add(itemBoxSizer3, 0, wxGROW|wxALL, 5);
wxStaticBox* itemStaticBoxSizer3Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Vias:"));
wxStaticBoxSizer* itemStaticBoxSizer3 = new wxStaticBoxSizer(itemStaticBoxSizer3Static, wxVERTICAL);
itemBoxSizer2->Add(itemStaticBoxSizer3, 0, wxGROW|wxALL, 5);
m_ViaSizeTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Via Size"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer3->Add(m_ViaSizeTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
itemStaticBoxSizer3->Add(m_ViaSizeTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_OptViaSize = new wxTextCtrl( itemDialog1, ID_TEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer3->Add(m_OptViaSize, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemStaticBoxSizer3->Add(m_OptViaSize, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
m_ViaDefaultDrillValueTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Default Via Drill"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer3->Add(m_ViaDefaultDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
itemStaticBoxSizer3->Add(m_ViaDefaultDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_OptViaDrill = new wxTextCtrl( itemDialog1, ID_TEXTCTRL1, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer3->Add(m_OptViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemStaticBoxSizer3->Add(m_OptViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
m_ViaAltDrillValueTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Alternate Via Drill"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer3->Add(m_ViaAltDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
itemStaticBoxSizer3->Add(m_ViaAltDrillValueTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_OptCustomViaDrill = new wxTextCtrl( itemDialog1, ID_TEXTCTRL2, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer3->Add(m_OptCustomViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
itemStaticBoxSizer3->Add(m_OptCustomViaDrill, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
wxArrayString m_OptViaTypeStrings;
m_OptViaTypeStrings.Add(_("Blind Via"));
m_OptViaTypeStrings.Add(_("Buried Via"));
m_OptViaTypeStrings.Add(_("Standard Via"));
m_OptViaType = new wxRadioBox( itemDialog1, ID_VIA_TYPE_SELECTION, _("Via Type"), wxDefaultPosition, wxDefaultSize, m_OptViaTypeStrings, 1, wxRA_SPECIFY_COLS );
m_OptViaTypeStrings.Add(_("Through Via"));
m_OptViaTypeStrings.Add(_("Blind or Buried Via "));
m_OptViaType = new wxRadioBox( itemDialog1, ID_VIA_TYPE_SELECTION, _("Default Via Type"), wxDefaultPosition, wxDefaultSize, m_OptViaTypeStrings, 1, wxRA_SPECIFY_COLS );
m_OptViaType->SetSelection(0);
itemBoxSizer3->Add(m_OptViaType, 0, wxGROW|wxALL, 5);
itemStaticBoxSizer3->Add(m_OptViaType, 0, wxGROW|wxALL, 5);
itemBoxSizer2->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxStaticBox* itemStaticBoxSizer11Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Micro Vias:"));
wxStaticBoxSizer* itemStaticBoxSizer11 = new wxStaticBoxSizer(itemStaticBoxSizer11Static, wxVERTICAL);
itemBoxSizer2->Add(itemStaticBoxSizer11, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer2->Add(itemBoxSizer13, 0, wxGROW|wxALL, 5);
m_MicroViaSizeTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Micro Via Size"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer11->Add(m_MicroViaSizeTitle, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
m_MicroViaSizeCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL7, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer11->Add(m_MicroViaSizeCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
m_MicroViaDrillTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Micro Via Drill"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer11->Add(m_MicroViaDrillTitle, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
m_MicroViaDrillCtrl = new wxTextCtrl( itemDialog1, ID_TEXTCTRL6, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer11->Add(m_MicroViaDrillCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemStaticBoxSizer11->Add(5, 5, 0, wxGROW|wxALL, 5);
m_AllowMicroViaCtrl = new wxCheckBox( itemDialog1, ID_CHECKBOX_ALLOWS_MICROVIA, _("Allows Micro Vias"), wxDefaultPosition, wxDefaultSize, 0 );
m_AllowMicroViaCtrl->SetValue(false);
m_AllowMicroViaCtrl->SetHelpText(_("Allows use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour\n"));
if (WinEDA_PcbTracksDialog::ShowToolTips())
m_AllowMicroViaCtrl->SetToolTip(_("Allows use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour\n"));
itemStaticBoxSizer11->Add(m_AllowMicroViaCtrl, 0, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer2->Add(itemBoxSizer18, 0, wxGROW|wxALL, 5);
m_TrackWidthTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Track Width"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer13->Add(m_TrackWidthTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
itemBoxSizer18->Add(m_TrackWidthTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_OptTrackWidth = new wxTextCtrl( itemDialog1, ID_TEXTCTRL3, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer13->Add(m_OptTrackWidth, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemBoxSizer18->Add(m_OptTrackWidth, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
m_TrackClearanceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Clearance"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer13->Add(m_TrackClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
itemBoxSizer18->Add(m_TrackClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_OptTrackClearance = new wxTextCtrl( itemDialog1, ID_TEXTCTRL4, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer13->Add(m_OptTrackClearance, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemBoxSizer18->Add(m_OptTrackClearance, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
m_MaskClearanceTitle = new wxStaticText( itemDialog1, wxID_STATIC, _("Mask clearance"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer13->Add(m_MaskClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
itemBoxSizer18->Add(m_MaskClearanceTitle, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
m_OptMaskMargin = new wxTextCtrl( itemDialog1, ID_TEXTCTRL5, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer13->Add(m_OptMaskMargin, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemBoxSizer18->Add(m_OptMaskMargin, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
itemBoxSizer13->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer2->Add(itemBoxSizer25, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxBoxSizer* itemBoxSizer21 = new wxBoxSizer(wxVERTICAL);
itemBoxSizer13->Add(itemBoxSizer21, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
wxButton* itemButton26 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton26->SetForegroundColour(wxColour(210, 0, 0));
itemBoxSizer25->Add(itemButton26, 0, wxGROW|wxALL, 5);
wxButton* itemButton22 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton22->SetForegroundColour(wxColour(210, 0, 0));
itemBoxSizer21->Add(itemButton22, 0, wxGROW|wxALL, 5);
wxButton* itemButton23 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, wxBU_LEFT );
itemButton23->SetForegroundColour(wxColour(0, 0, 255));
itemBoxSizer21->Add(itemButton23, 0, wxGROW|wxALL, 5);
wxButton* itemButton27 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, wxBU_LEFT );
itemButton27->SetForegroundColour(wxColour(0, 0, 255));
itemBoxSizer25->Add(itemButton27, 0, wxGROW|wxALL, 5);
// Set validators
m_AllowMicroViaCtrl->SetValidator( wxGenericValidator(& g_DesignSettings.m_MicroViasAllowed) );
////@end WinEDA_PcbTracksDialog content construction
SetDisplayValue();
}
@ -235,7 +263,9 @@ void WinEDA_PcbTracksDialog::SetDisplayValue()
/*************************************************/
{
AddUnitSymbol(*m_ViaSizeTitle);
AddUnitSymbol(*m_MicroViaSizeTitle);
AddUnitSymbol(*m_ViaDefaultDrillValueTitle);
AddUnitSymbol(*m_MicroViaDrillTitle);
AddUnitSymbol(*m_ViaAltDrillValueTitle);
AddUnitSymbol(*m_TrackWidthTitle);
AddUnitSymbol(*m_TrackClearanceTitle);
@ -243,32 +273,50 @@ void WinEDA_PcbTracksDialog::SetDisplayValue()
int Internal_Unit = m_Parent->m_InternalUnits;
PutValueInLocalUnits(*m_OptViaSize, g_DesignSettings.m_CurrentViaSize, Internal_Unit);
PutValueInLocalUnits(*m_MicroViaSizeCtrl, g_DesignSettings.m_CurrentMicroViaSize, Internal_Unit);
PutValueInLocalUnits(*m_OptViaDrill, g_DesignSettings.m_ViaDrill, Internal_Unit);
PutValueInLocalUnits(*m_MicroViaDrillCtrl, g_DesignSettings.m_MicroViaDrill, Internal_Unit);
PutValueInLocalUnits(*m_OptCustomViaDrill, g_ViaHoleLastValue, Internal_Unit);
PutValueInLocalUnits(*m_OptTrackWidth, g_DesignSettings.m_CurrentTrackWidth, Internal_Unit);
PutValueInLocalUnits(*m_OptTrackClearance, g_DesignSettings.m_TrackClearence, Internal_Unit);
PutValueInLocalUnits(*m_OptMaskMargin, g_DesignSettings.m_MaskMargin, Internal_Unit);
m_OptViaType->SetSelection(g_DesignSettings.m_CurrentViaType - 1);
if ( g_DesignSettings.m_CurrentViaType != VIA_THROUGH )
m_OptViaType->SetSelection(1);
m_MicroViaSizeTitle->Enable(g_DesignSettings.m_MicroViasAllowed);
m_MicroViaSizeCtrl->Enable(g_DesignSettings.m_MicroViasAllowed);
m_MicroViaDrillTitle->Enable(g_DesignSettings.m_MicroViasAllowed);
m_MicroViaDrillCtrl->Enable(g_DesignSettings.m_MicroViasAllowed);
}
/*******************************************************************/
void WinEDA_PcbTracksDialog::AcceptPcbOptions(wxCommandEvent& event)
/*******************************************************************/
{
g_DesignSettings.m_CurrentViaType = m_OptViaType->GetSelection() + 1;
g_DesignSettings.m_CurrentViaType = VIA_THROUGH;
if ( m_OptViaType->GetSelection() > 0 )
g_DesignSettings.m_CurrentViaType = VIA_BLIND_BURIED;
if ( g_DesignSettings.m_CurrentViaType != VIA_THROUGH )
{
if( ! IsOK(this,
_("You have selected VIA Blind or VIA Buried\nWARNING: this feature is EXPERIMENTAL!!! Accept ?") ) )
_("You have selected VIA Blind and Buried\nWARNING: this feature is EXPERIMENTAL!!! Accept ?") ) )
g_DesignSettings.m_CurrentViaType = VIA_THROUGH;
}
g_DesignSettings.m_CurrentViaSize =
ReturnValueFromTextCtrl(*m_OptViaSize, m_Parent->m_InternalUnits);
g_DesignSettings.m_CurrentMicroViaSize =
ReturnValueFromTextCtrl(*m_MicroViaSizeCtrl, m_Parent->m_InternalUnits);
g_DesignSettings.m_MicroViaDrill =
ReturnValueFromTextCtrl(*m_MicroViaDrillCtrl, m_Parent->m_InternalUnits);
g_DesignSettings.m_ViaDrill =
ReturnValueFromTextCtrl(*m_OptViaDrill, m_Parent->m_InternalUnits);
g_ViaHoleLastValue =
ReturnValueFromTextCtrl(*m_OptCustomViaDrill, m_Parent->m_InternalUnits);
g_DesignSettings.m_MicroViasAllowed = m_AllowMicroViaCtrl->IsChecked();
g_DesignSettings.m_CurrentTrackWidth =
ReturnValueFromTextCtrl(*m_OptTrackWidth, m_Parent->m_InternalUnits);
g_DesignSettings.m_TrackClearence =
@ -391,3 +439,17 @@ void WinEDA_PcbTracksDialog::OnInitDialog( wxInitDialogEvent& event )
event.Skip();
}
/*!
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_ALLOWS_MICROVIA
*/
void WinEDA_PcbTracksDialog::OnCheckboxAllowsMicroviaClick( wxCommandEvent& event )
{
bool state = m_AllowMicroViaCtrl->IsChecked();
m_MicroViaSizeTitle->Enable(state);
m_MicroViaSizeCtrl->Enable(state);
m_MicroViaDrillTitle->Enable(state);
m_MicroViaDrillCtrl->Enable(state);
}

View File

@ -23,6 +23,7 @@
*/
////@begin includes
#include "wx/valgen.h"
////@end includes
/*!
@ -42,6 +43,9 @@
#define ID_TEXTCTRL1 10002
#define ID_TEXTCTRL2 10003
#define ID_VIA_TYPE_SELECTION 10004
#define ID_TEXTCTRL7 10008
#define ID_TEXTCTRL6 10010
#define ID_CHECKBOX_ALLOWS_MICROVIA 10009
#define ID_TEXTCTRL3 10005
#define ID_TEXTCTRL4 10006
#define ID_TEXTCTRL5 10007
@ -85,6 +89,9 @@ public:
/// wxEVT_INIT_DIALOG event handler for ID_DIALOG
void OnInitDialog( wxInitDialogEvent& event );
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX_ALLOWS_MICROVIA
void OnCheckboxAllowsMicroviaClick( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
void OnOkClick( wxCommandEvent& event );
@ -115,6 +122,11 @@ public:
wxStaticText* m_ViaAltDrillValueTitle;
wxTextCtrl* m_OptCustomViaDrill;
wxRadioBox* m_OptViaType;
wxStaticText* m_MicroViaSizeTitle;
wxTextCtrl* m_MicroViaSizeCtrl;
wxStaticText* m_MicroViaDrillTitle;
wxTextCtrl* m_MicroViaDrillCtrl;
wxCheckBox* m_AllowMicroViaCtrl;
wxStaticText* m_TrackWidthTitle;
wxTextCtrl* m_OptTrackWidth;
wxStaticText* m_TrackClearanceTitle;

View File

@ -108,10 +108,12 @@
<bool name="use_resource_archive">0</bool>
<bool name="use_generated_xrc_cpp">0</bool>
<bool name="always_generate_xrc">1</bool>
<bool name="use_id_name_for_name">0</bool>
<bool name="archive_xrc_files">1</bool>
<bool name="archive_image_files">1</bool>
<bool name="archive_all_image_files">0</bool>
<bool name="xrc_retain_relative_paths">1</bool>
<bool name="xrc_generate_id_tags">0</bool>
</header>
<data>
<document>
@ -247,7 +249,6 @@
<bool name="proxy-wxDEFAULT_DIALOG_STYLE">0</bool>
<bool name="proxy-wxCAPTION">1</bool>
<bool name="proxy-wxRESIZE_BORDER">0</bool>
<bool name="proxy-wxTHICK_FRAME">0</bool>
<bool name="proxy-wxSYSTEM_MENU">1</bool>
<bool name="proxy-wxSTAY_ON_TOP">0</bool>
<bool name="proxy-wxDIALOG_NO_PARENT">0</bool>
@ -295,7 +296,7 @@
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="title">"wxStaticBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
@ -304,9 +305,18 @@
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-type">"wbStaticBoxSizerProxy"</string>
<string name="proxy-Id name">"wxID_ANY"</string>
<long name="proxy-Id value">-1</long>
<string name="proxy-Label">"Vias:"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Sizer member variable name">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Static box class">"wxStaticBox"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Expand"</string>
<long name="proxy-Stretch factor">0</long>
@ -328,7 +338,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
@ -398,7 +408,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL"</string>
<long name="proxy-Id value">10001</long>
@ -470,7 +480,6 @@
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-wxTE_LINEWRAP">0</bool>
</document>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
@ -481,7 +490,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
@ -551,7 +560,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL1"</string>
<long name="proxy-Id value">10002</long>
@ -623,7 +632,6 @@
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-wxTE_LINEWRAP">0</bool>
</document>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
@ -634,7 +642,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
@ -704,7 +712,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL2"</string>
<long name="proxy-Id value">10003</long>
@ -776,33 +784,6 @@
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-wxTE_LINEWRAP">0</bool>
</document>
<document>
<string name="title">"Spacer"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"spacer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="proxy-type">"wbSpacerProxy"</string>
<long name="proxy-Width">5</long>
<long name="proxy-Height">5</long>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
</document>
<document>
<string name="title">"wxRadioBox: ID_VIA_TYPE_SELECTION"</string>
@ -813,7 +794,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbRadioBoxProxy"</string>
<string name="proxy-Id name">"ID_VIA_TYPE_SELECTION"</string>
<long name="proxy-Id value">10004</long>
@ -825,9 +806,9 @@
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_OptViaType"</string>
<string name="proxy-Label">"Via Type"</string>
<string name="proxy-Label">"Default Via Type"</string>
<long name="proxy-Major dimension count">1</long>
<string name="proxy-Items">"Blind Via|Buried Via|Standard Via"</string>
<string name="proxy-Items">"Through Via|Blind or Buried Via "</string>
<long name="proxy-Initial value">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
@ -869,6 +850,344 @@
<string name="proxy-Custom ctor arguments">""</string>
</document>
</document>
<document>
<string name="title">"wxStaticBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"sizer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbStaticBoxSizerProxy"</string>
<string name="proxy-Id name">"wxID_ANY"</string>
<long name="proxy-Id value">-1</long>
<string name="proxy-Label">"Micro Vias:"</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Sizer member variable name">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Static box class">"wxStaticBox"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Expand"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"statictext"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxStaticText"</string>
<string name="proxy-Base class">"wxStaticText"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_MicroViaSizeTitle"</string>
<string name="proxy-Label">"Micro Via Size"</string>
<long name="proxy-Wrapping width">-1</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxALIGN_LEFT">0</bool>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxALIGN_CENTRE">0</bool>
<bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxTextCtrl: ID_TEXTCTRL7"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"textctrl"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL7"</string>
<long name="proxy-Id value">10008</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxTextCtrl"</string>
<string name="proxy-Base class">"wxTextCtrl"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_MicroViaSizeCtrl"</string>
<string name="proxy-Initial value">""</string>
<long name="proxy-Max length">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxTE_MULTILINE">0</bool>
<bool name="proxy-wxTE_PROCESS_ENTER">0</bool>
<bool name="proxy-wxTE_PROCESS_TAB">0</bool>
<bool name="proxy-wxTE_PASSWORD">0</bool>
<bool name="proxy-wxTE_READONLY">0</bool>
<bool name="proxy-wxTE_RICH">0</bool>
<bool name="proxy-wxTE_RICH2">0</bool>
<bool name="proxy-wxTE_AUTO_URL">0</bool>
<bool name="proxy-wxTE_NOHIDESEL">0</bool>
<bool name="proxy-wxTE_LEFT">0</bool>
<bool name="proxy-wxTE_CENTRE">0</bool>
<bool name="proxy-wxTE_RIGHT">0</bool>
<bool name="proxy-wxHSCROLL">0</bool>
<bool name="proxy-wxTE_CHARWRAP">0</bool>
<bool name="proxy-wxTE_WORDWRAP">0</bool>
<bool name="proxy-wxTE_CAPITALIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxStaticText: wxID_STATIC"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"statictext"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxStaticText"</string>
<string name="proxy-Base class">"wxStaticText"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_MicroViaDrillTitle"</string>
<string name="proxy-Label">"Micro Via Drill"</string>
<long name="proxy-Wrapping width">-1</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxALIGN_LEFT">0</bool>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxALIGN_CENTRE">0</bool>
<bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">0</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"wxTextCtrl: ID_TEXTCTRL6"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"textctrl"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbTextCtrlProxy"</string>
<string name="proxy-Id name">"ID_TEXTCTRL6"</string>
<long name="proxy-Id value">10010</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxTextCtrl"</string>
<string name="proxy-Base class">"wxTextCtrl"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_MicroViaDrillCtrl"</string>
<string name="proxy-Initial value">""</string>
<long name="proxy-Max length">0</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<bool name="proxy-wxTE_MULTILINE">0</bool>
<bool name="proxy-wxTE_PROCESS_ENTER">0</bool>
<bool name="proxy-wxTE_PROCESS_TAB">0</bool>
<bool name="proxy-wxTE_PASSWORD">0</bool>
<bool name="proxy-wxTE_READONLY">0</bool>
<bool name="proxy-wxTE_RICH">0</bool>
<bool name="proxy-wxTE_RICH2">0</bool>
<bool name="proxy-wxTE_AUTO_URL">0</bool>
<bool name="proxy-wxTE_NOHIDESEL">0</bool>
<bool name="proxy-wxTE_LEFT">0</bool>
<bool name="proxy-wxTE_CENTRE">0</bool>
<bool name="proxy-wxTE_RIGHT">0</bool>
<bool name="proxy-wxHSCROLL">0</bool>
<bool name="proxy-wxTE_CHARWRAP">0</bool>
<bool name="proxy-wxTE_WORDWRAP">0</bool>
<bool name="proxy-wxTE_CAPITALIZE">0</bool>
<bool name="proxy-wxNO_BORDER">0</bool>
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
<bool name="proxy-wxDOUBLE_BORDER">0</bool>
<bool name="proxy-wxSUNKEN_BORDER">0</bool>
<bool name="proxy-wxRAISED_BORDER">0</bool>
<bool name="proxy-wxSTATIC_BORDER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">0</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
<document>
<string name="title">"Spacer"</string>
<string name="type">"dialog-control-document"</string>
@ -878,11 +1197,11 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbSpacerProxy"</string>
<long name="proxy-Width">5</long>
<long name="proxy-Height">5</long>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
@ -895,6 +1214,74 @@
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
</document>
<document>
<string name="title">"wxCheckBox: ID_CHECKBOX_ALLOWS_MICROVIA"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"checkbox"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbCheckBoxProxy"</string>
<string name="event-handler-0">"wxEVT_COMMAND_CHECKBOX_CLICKED|OnCheckboxAllowsMicroviaClick|NONE||WinEDA_PcbTracksDialog"</string>
<string name="proxy-Id name">"ID_CHECKBOX_ALLOWS_MICROVIA"</string>
<long name="proxy-Id value">10009</long>
<string name="proxy-Name">""</string>
<string name="proxy-Class">"wxCheckBox"</string>
<string name="proxy-Base class">"wxCheckBox"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">"m_AllowMicroViaCtrl"</string>
<string name="proxy-Label">"Allows Micro Vias"</string>
<bool name="proxy-Initial value">0</bool>
<string name="proxy-Help text">"Allows use of micro vias
They are very small vias only from an external copper layer to its near neightbour
"</string>
<string name="proxy-Tooltip text">""</string>
<string name="proxy-Data variable">"g_DesignSettings.m_MicroViasAllowed"</string>
<string name="proxy-Data validator">"wxGenericValidator(&amp; %VARIABLE%)"</string>
<string name="proxy-Data source">""</string>
<string name="proxy-Data class name">""</string>
<string name="proxy-Data class implementation filename">""</string>
<string name="proxy-Data class header filename">""</string>
<string name="proxy-Data class manager window">""</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
<bool name="proxy-Hidden">0</bool>
<bool name="proxy-Enabled">1</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<bool name="proxy-wxALIGN_RIGHT">0</bool>
<bool name="proxy-wxCHK_2STATE">0</bool>
<bool name="proxy-wxCHK_3STATE">0</bool>
<bool name="proxy-wxCHK_ALLOW_3RD_STATE_FOR_USER">0</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
<long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Expand"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
</document>
</document>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@ -1379,31 +1766,6 @@
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-wxTE_LINEWRAP">0</bool>
</document>
<document>
<string name="title">"Spacer"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
<string name="icon-name">"spacer"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"24/4/2006"</string>
<string name="proxy-type">"wbSpacerProxy"</string>
<long name="proxy-Width">5</long>
<long name="proxy-Height">5</long>
<string name="proxy-AlignH">"Centre"</string>
<string name="proxy-AlignV">"Centre"</string>
<long name="proxy-Stretch factor">0</long>
<long name="proxy-Border">5</long>
<bool name="proxy-wxLEFT">1</bool>
<bool name="proxy-wxRIGHT">1</bool>
<bool name="proxy-wxTOP">1</bool>
<bool name="proxy-wxBOTTOM">1</bool>
<bool name="proxy-wxSHAPED">0</bool>
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
</document>
<document>
<string name="title">"wxBoxSizer V"</string>
@ -1414,7 +1776,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"25/2/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbBoxSizerProxy"</string>
<string name="proxy-Orientation">"Vertical"</string>
<string name="proxy-Member variable name">""</string>
@ -1439,7 +1801,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"25/2/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbButtonProxy"</string>
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnOkClick"</string>
<string name="proxy-Id name">"wxID_OK"</string>
@ -1506,7 +1868,7 @@
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
<string name="created">"25/2/2006"</string>
<string name="created">"11/1/2008"</string>
<string name="proxy-type">"wbButtonProxy"</string>
<string name="event-handler-0">"wxEVT_COMMAND_BUTTON_CLICKED|OnCancelClick"</string>
<string name="proxy-Id name">"wxID_CANCEL"</string>
@ -1568,7 +1930,6 @@
</document>
</document>
</document>
</document>
<document>
<string name="title">"Sources"</string>
<string name="type">"html-document"</string>

View File

@ -367,13 +367,25 @@ MARKER* DRC::fillMarker( TRACK* aTrack, BOARD_ITEM* aItem, int aErrorCode, MARKE
if( fillMe )
{
if ( aItem )
fillMe->SetData( aErrorCode, position,
textA, aTrack->GetPosition(),
textB, posB );
else
fillMe->SetData( aErrorCode, position,
textA, aTrack->GetPosition() );
}
else
{
if ( aItem )
fillMe = new MARKER( aErrorCode, position,
textA, aTrack->GetPosition(),
textB, posB );
else
fillMe = new MARKER( aErrorCode, position,
textA, aTrack->GetPosition() );
}
return fillMe;
}
@ -421,23 +433,41 @@ bool DRC::doTrackDrc( TRACK* aRefSeg, TRACK* aStart )
m_segmAngle = 0;
// @todo: is this necessary?
/**************************************************************/
/* Phase 0 : test if via's hole is bigger than its diameter : */
/**************************************************************/
/* Phase 0 : Test vias : */
if( aRefSeg->Type() == TYPEVIA )
{
// test if via's hole is bigger than its diameter
// This test seems necessary since the dialog box that displays the
// desired via hole size and width does not enforce a hole size smaller
// than the via's diameter.
if( aRefSeg->m_Drill > aRefSeg->m_Width )
if( aRefSeg->GetDrillValue() > aRefSeg->m_Width )
{
m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_VIA_HOLE_BIGGER, m_currentMarker );
return false;
}
// For microvias: test if they are blindvias and only between 2 layers
// because they are used for very small drill size and are drill by laser
// and **only** one layer can be drilled
if( aRefSeg->Shape() == VIA_MICROVIA )
{
int layer1, layer2;
bool err = true;
((SEGVIA*)aRefSeg)->ReturnLayerPair(&layer1, &layer2);
if (layer1> layer2 ) EXCHG(layer1,layer2);
// test:
if (layer1 == COPPER_LAYER_N && layer2 == LAYER_N_2 ) err = false;
if (layer1 == (g_DesignSettings.m_CopperLayerCount - 2 ) && layer2 == LAYER_CMP_N ) err = false;
if ( err )
{
m_currentMarker = fillMarker( aRefSeg, NULL,
DRCE_MICRO_VIA_INCORRECT_LAYER_PAIR, m_currentMarker );
return false;
}
}
}
// for a non horizontal or vertical segment Compute the segment angle

View File

@ -54,8 +54,9 @@
#define DRCE_ENDS_PROBLEM5 18 ///< track ends are too close
#define DRCE_PAD_NEAR_PAD1 19 ///< pad too close to pad
#define DRCE_VIA_HOLE_BIGGER 20 ///< via's hole is bigger than its diameter
#define COPPERAREA_INSIDE_COPPERAREA 21 ///< copper area outlines intersect
#define COPPERAREA_CLOSE_TO_COPPERAREA 22 ///< copper area outlines are too close
#define DRCE_MICRO_VIA_INCORRECT_LAYER_PAIR 21 ///< micro via's layer pair incorrect (layers must be adjacent)
#define COPPERAREA_INSIDE_COPPERAREA 22 ///< copper area outlines intersect
#define COPPERAREA_CLOSE_TO_COPPERAREA 23 ///< copper area outlines are too close
/**
* Class DRC_ITEM
@ -64,17 +65,18 @@
* information held is the board coordinate and the MenuText for each item.
* Also held is the type of error by number and the location of the MARKER.
* A function is provided to translate that number into text.
* Some errors involve only one item (item with an incorrect param) so m_AsSecondItem is set to false in this case
*/
class DRC_ITEM
{
protected:
int m_ErrorCode; ///< the error code's numeric value
wxPoint m_Pos; ///< position of the issue
wxString m_AText; ///< text for the first BOARD_ITEM
wxString m_BText; ///< text for the second BOARD_ITEM
wxPoint m_APos; ///< the location of the first BOARD_ITEM
wxPoint m_BPos; ///< the location of the first BOARD_ITEM
wxPoint m_APos; ///< the location of the first (or main ) BOARD_ITEM
wxPoint m_BPos; ///< the location of the second BOARD_ITEM
bool m_AsSecondItem; ///< true when 2 items create a DRC error, false if only one item
public:
@ -84,6 +86,7 @@ public:
{
}
DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos,
const wxString& aText, const wxString& bText,
const wxPoint& aPos, const wxPoint& bPos )
@ -93,6 +96,22 @@ public:
aPos, bPos );
}
DRC_ITEM( int aErrorCode, const wxPoint& aIssuePos,
const wxString& aText, const wxPoint& aPos )
{
SetData( aErrorCode, aIssuePos, aText, aPos );
}
void SetData( int aErrorCode, const wxPoint& aIssuePos,
const wxString& aText, const wxPoint& aPos )
{
SetData( aErrorCode, aIssuePos,
aText, aText,
aPos, aPos );
m_AsSecondItem = false;
}
void SetData( int aErrorCode, const wxPoint& aIssuePos,
const wxString& aText, const wxString& bText,
const wxPoint& aPos, const wxPoint& bPos )
@ -103,9 +122,10 @@ public:
m_BText = bText;
m_APos = aPos;
m_BPos = bPos;
m_AsSecondItem = true;
}
bool AsSecondItem(void) const { return m_AsSecondItem; }
/**
* Function ShowHtml
* translates this object into a fragment of HTML suitable for the
@ -147,6 +167,7 @@ public:
return ret;
}
/**
* Function GetErrorCode
* returns the error code.
@ -168,6 +189,7 @@ public:
return m_AText;
}
const wxString& GetTextB() const
{
return m_BText;
@ -179,11 +201,13 @@ public:
return m_APos;
}
const wxPoint& GetPointB() const
{
return m_BPos;
}
/**
* Function GetPosition
* @return wxPoint& - the position of this report item within
@ -194,6 +218,7 @@ public:
return m_Pos;
}
/**
* Function ShowCoord
* formats a coordinate or position to text.
@ -270,6 +295,7 @@ class DRC
friend class DrcDialog;
private:
// protected or private functions() are lowercase first character.
bool m_doPad2PadTest;
@ -510,11 +536,9 @@ public:
* dialog, and optionally prints a report of such.
*/
void ListUnconnectedPads();
};
#endif // _DRC_STUFF_H
//EOF

View File

@ -61,6 +61,7 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_PCB_STOP_CURRENT_DRAWING:
case ID_POPUP_PCB_END_TRACK:
case ID_POPUP_PCB_PLACE_VIA:
case ID_POPUP_PCB_PLACE_MICROVIA:
case ID_POPUP_PCB_IMPORT_PAD_SETTINGS:
case ID_POPUP_PCB_EXPORT_PAD_SETTINGS:
case ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS:
@ -372,6 +373,9 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
}
break;
case ID_POPUP_PCB_PLACE_MICROVIA:
if ( ! GetScreen()->IsMicroViaAcceptable() )
break;
case ID_POPUP_PCB_PLACE_VIA:
DrawPanel->MouseToCursorSchema();
if( GetCurItem()->m_Flags & IS_DRAGGED )
@ -380,7 +384,11 @@ void WinEDA_PcbFrame::Process_Special_Functions( wxCommandEvent& event )
}
else
{
int v_type = g_DesignSettings.m_CurrentViaType;
if ( id == ID_POPUP_PCB_PLACE_MICROVIA )
g_DesignSettings.m_CurrentViaType = VIA_MICROVIA; // place micro via and switch layer
Other_Layer_Route( (TRACK*) GetCurItem(), &dc );
g_DesignSettings.m_CurrentViaType = v_type;
if( DisplayOpt.ContrastModeDisplay )
GetScreen()->SetRefreshReq();
}

View File

@ -34,6 +34,8 @@ int WinEDA_PcbFrame::Edit_TrackSegm_Width( wxDC* DC, TRACK* pt_segm )
if( pt_segm->Type() == TYPEVIA )
{
consigne = pt_segm->m_Width = g_DesignSettings.m_CurrentViaSize;
if ( pt_segm->m_Shape == VIA_MICROVIA )
consigne = pt_segm->m_Width = g_DesignSettings.m_CurrentMicroViaSize;
}
if( old_w < consigne ) /* DRC utile puisque augm de dimension */

View File

@ -210,11 +210,10 @@ bool WinEDA_PcbFrame::Other_Layer_Route( TRACK* track, wxDC* DC )
/* create the via */
Via = new SEGVIA( m_Pcb );
Via->m_Flags = IS_NEW;
Via->m_Width = g_DesignSettings.m_CurrentViaSize;
Via->m_Shape = g_DesignSettings.m_CurrentViaType;
Via->m_Width = g_DesignSettings.m_CurrentViaSize;
Via->SetNet( g_HightLigth_NetCode );
Via->m_Start = Via->m_End = g_CurrentTrackSegment->m_End;
int old_layer = GetScreen()->m_Active_Layer;
//swap the layers.
@ -224,21 +223,30 @@ bool WinEDA_PcbFrame::Other_Layer_Route( TRACK* track, wxDC* DC )
GetScreen()->m_Active_Layer = GetScreen()->m_Route_Layer_BOTTOM;
/* Adjust the via layer pair */
if( Via->Shape() == VIA_BURIED )
switch ( Via->Shape() )
{
case VIA_BLIND_BURIED:
Via->SetLayerPair( old_layer, GetScreen()->m_Active_Layer );
}
break;
else if( Via->Shape() == VIA_BLIND ) //blind via
{
// A revoir! ( la via devrait deboucher sur 1 cote )
case VIA_MICROVIA: // from external to the near neghbour inner layer
if ( old_layer == COPPER_LAYER_N )
GetScreen()->m_Active_Layer = LAYER_N_2;
else if ( old_layer == LAYER_CMP_N )
GetScreen()->m_Active_Layer = m_Pcb->m_BoardSettings->m_CopperLayerCount - 2;
else if ( old_layer == LAYER_N_2 )
GetScreen()->m_Active_Layer = COPPER_LAYER_N;
else if ( old_layer == m_Pcb->m_BoardSettings->m_CopperLayerCount - 2 )
GetScreen()->m_Active_Layer = LAYER_CMP_N;
// else error
Via->SetLayerPair( old_layer, GetScreen()->m_Active_Layer );
}
Via->m_Width = g_DesignSettings.m_CurrentMicroViaSize;
break;
else
{
default:
// Usual via is from copper to component; layer pair is 0 and 0x0F.
Via->SetLayerPair( COPPER_LAYER_N, LAYER_CMP_N );
break;
}
if( Drc_On && BAD_DRC==m_drc->Drc( Via, m_Pcb->m_Track ) )

View File

@ -469,7 +469,7 @@ void WinEDA_DrillFrame::UpdatePrecisionOptions( wxCommandEvent& event )
int WinEDA_DrillFrame::Gen_Drill_File_EXCELLON( FORET* buffer )
/***************************************************************/
/* Create the drill file in EXECELLON format
/* Create the drill file in EXCELLON format
* Return hole count
* buffer: Drill tools list
*/
@ -497,10 +497,10 @@ int WinEDA_DrillFrame::Gen_Drill_File_EXCELLON( FORET* buffer )
{
if( pt_piste->Type() != TYPEVIA )
continue;
if( pt_piste->m_Drill == 0 )
int via_drill = pt_piste->GetDrillValue();
if( via_drill == 0 )
continue;
int via_drill = ( pt_piste->m_Drill <
0 ) ? g_DesignSettings.m_ViaDrill : pt_piste->m_Drill;
if( foret->m_Diameter != via_drill )
continue;
@ -789,11 +789,9 @@ int WinEDA_DrillFrame::Gen_Liste_Forets( FORET* buffer, bool print_header )
{
if( pt_piste->Type() != TYPEVIA )
continue;
if( pt_piste->m_Drill == 0 )
int via_drill = pt_piste->GetDrillValue();
if( via_drill == 0 )
continue;
int via_drill = g_DesignSettings.m_ViaDrill;
if( pt_piste->m_Drill > 0 ) // Drill value is not the default value
via_drill = pt_piste->m_Drill;
foret = GetOrAddForet( buffer, via_drill );
if( foret )
foret->m_TotalCount++;
@ -1343,9 +1341,7 @@ int WinEDA_DrillFrame::Plot_Drill_PcbMap( FORET* buffer, int format )
{
if( pt_piste->Type() != TYPEVIA )
continue;
int via_drill = g_DesignSettings.m_ViaDrill;
if( pt_piste->m_Drill >= 0 )
via_drill = pt_piste->m_Drill;
int via_drill = pt_piste->GetDrillValue();
if( via_drill != foret->m_Diameter )
continue;
pos = pt_piste->m_Start;

View File

@ -69,7 +69,8 @@ static Ki_HotkeyInfo HkSavefile( wxT( "Save board" ), HK_SAVE_BOARD, 'S' + GR_KB
static Ki_HotkeyInfo HkLoadfile( wxT( "Load board" ), HK_LOAD_BOARD, 'L' + GR_KB_CTRL );
static Ki_HotkeyInfo HkFindItem( wxT( "Find Item" ), HK_FIND_ITEM, 'F' + GR_KB_CTRL );
static Ki_HotkeyInfo HkBackspace( wxT( "Delete track segment" ), HK_BACK_SPACE, WXK_BACK );
static Ki_HotkeyInfo HkAddVia( wxT( "Add Via" ), HK_ADD_VIA, 'V' );
static Ki_HotkeyInfo HkAddMicroVia( wxT( "Add Via" ), HK_ADD_VIA, 'V' );
static Ki_HotkeyInfo HkAddVia( wxT( "Add MicroVia" ), HK_ADD_MICROVIA, 'V' + GR_KB_CTRL );
static Ki_HotkeyInfo HkEndTrack( wxT( "End Track" ), HK_END_TRACK, WXK_END );
static Ki_HotkeyInfo HkFlipFootprint( wxT( "Flip Footprint" ), HK_FLIP_FOOTPRINT, 'F' );
static Ki_HotkeyInfo HkRotateFootprint( wxT( "Rotate Footprint" ), HK_ROTATE_FOOTPRINT, 'R' );
@ -105,7 +106,9 @@ Ki_HotkeyInfo* s_Common_Hotkey_List[] = {
Ki_HotkeyInfo* s_board_edit_Hotkey_List[] = {
&HkTrackDisplayMode,
&HkDelete, &HkBackspace,
&HkAddVia, &HkEndTrack,
&HkAddVia,
&HkAddMicroVia,
&HkEndTrack,
&HkMoveFootprint, &HkFlipFootprint,
&HkRotateFootprint, &HkDragFootprint,
&HkGetAndMoveFootprint,
@ -382,6 +385,28 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
}
break;
case HK_ADD_MICROVIA: // Place a micro via if a track is in progress
if( m_ID_current_state != ID_TRACK_BUTT )
return;
if( ItemFree ) // no track in progress: nothing to do
break;
if( GetCurItem()->Type() != TYPETRACK ) // Should not occur
return;
if( (GetCurItem()->m_Flags & IS_NEW) == 0 )
return;
// place micro via and switch layer
if ( GetScreen()->IsMicroViaAcceptable() )
{
int v_type = g_DesignSettings.m_CurrentViaType;
g_DesignSettings.m_CurrentViaType = VIA_MICROVIA;
Other_Layer_Route( (TRACK*) GetCurItem(), DC );
g_DesignSettings.m_CurrentViaType = v_type;
if( DisplayOpt.ContrastModeDisplay )
GetScreen()->SetRefreshReq();
}
break;
case HK_ADD_VIA: // Switch to alternate layer and Place a via if a track is in progress
if( m_ID_current_state != ID_TRACK_BUTT )
return;

View File

@ -22,7 +22,9 @@ enum hotkey_id_commnand {
HK_FLIP_FOOTPRINT,
HK_GET_AND_MOVE_FOOTPRINT,
HK_LOCK_UNLOCK_FOOTPRINT,
HK_ADD_VIA, HK_END_TRACK,
HK_ADD_VIA,
HK_ADD_MICROVIA,
HK_END_TRACK,
HK_SAVE_BOARD, HK_LOAD_BOARD,
HK_SWITCH_UNITS,
HK_SWITCH_TRACK_DISPLAY_MODE,

View File

@ -88,7 +88,7 @@ int WinEDA_BasePcbFrame::ReadListeSegmentDescr( FILE* File,
* @return items count or - count if no end block ($End...) found.
*/
{
int shape, width, layer, type, flags, net_code;
int shape, width, drill, layer, type, flags, net_code;
int ii = 0;
char line1[256];
char line2[256];
@ -149,13 +149,15 @@ int WinEDA_BasePcbFrame::ReadListeSegmentDescr( FILE* File,
int arg_count = sscanf( line1 + 2, " %d %d %d %d %d %d %d", &shape,
&PtSegm->m_Start.x, &PtSegm->m_Start.y,
&PtSegm->m_End.x, &PtSegm->m_End.y, &width,
&PtSegm->m_Drill );
&drill );
PtSegm->m_Width = width;
PtSegm->m_Shape = shape;
if( arg_count < 7 )
PtSegm->m_Drill = -1;
if( arg_count < 7 || drill <= 0 )
PtSegm->SetDrillDefault();
else
PtSegm->SetDrillValue(drill);
PtSegm->SetLayer( layer );
PtSegm->SetNet( net_code );
@ -399,6 +401,12 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum )
continue;
}
if( stricmp( Line, "MicroViaSize" ) == 0 )
{
g_DesignSettings.m_CurrentMicroViaSize = atoi( data );
continue;
}
if( stricmp( Line, "ViaSizeHistory" ) == 0 )
{
int tmp = atoi( data );
@ -412,6 +420,18 @@ int WinEDA_BasePcbFrame::ReadSetup( FILE* File, int* LineNum )
continue;
}
if( stricmp( Line, "MicroViaDrill" ) == 0 )
{
g_DesignSettings.m_MicroViaDrill = atoi( data );
continue;
}
if( stricmp( Line, "MicroViasAllowed" ) == 0 )
{
g_DesignSettings.m_MicroViasAllowed = atoi( data );
continue;
}
if( stricmp( Line, "TextPcbWidth" ) == 0 )
{
g_DesignSettings.m_PcbTextWidth = atoi( data );
@ -521,6 +541,10 @@ static int WriteSetup( FILE* File, WinEDA_BasePcbFrame* frame )
fprintf( File, "ViaSizeHistory %d\n", g_DesignSettings.m_ViaSizeHistory[ii] );
}
fprintf( File, "MicroViaSize %d\n", g_DesignSettings.m_CurrentMicroViaSize);
fprintf( File, "MicroViaDrill %d\n", g_DesignSettings.m_MicroViaDrill);
fprintf( File, "MicroViasAllowed %d\n", g_DesignSettings.m_MicroViasAllowed);
fprintf( File, "TextPcbWidth %d\n", g_DesignSettings.m_PcbTextWidth );
fprintf( File, "TextPcbSize %d %d\n",
g_DesignSettings.m_PcbTextSize.x, g_DesignSettings.m_PcbTextSize.y );

View File

@ -515,7 +515,7 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
_( "Export via hole to others id vias" ), global_options_pad_xpm );
ADD_MENUITEM( via_mnu, ID_POPUP_PCB_VIA_HOLE_RESET_TO_DEFAULT,
_( "Set ALL via holes to default" ), apply_xpm );
if( Track->m_Drill <= 0 )
if( ! Track->IsDrillDefault() )
{
via_mnu->Enable( ID_POPUP_PCB_VIA_HOLE_EXPORT, FALSE );
}
@ -559,6 +559,12 @@ void WinEDA_PcbFrame::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
}
msg = AddHotkeyName( _( "Place Via" ), s_Board_Editor_Hokeys_Descr, HK_ADD_VIA );
PopMenu->Append( ID_POPUP_PCB_PLACE_VIA, msg );
// See if we can place a Micro Via (4 or more layers, and start from an external layer):
if ( GetScreen()->IsMicroViaAcceptable() )
{
msg = AddHotkeyName( _( "Place Micro Via" ), s_Board_Editor_Hokeys_Descr, HK_ADD_MICROVIA );
PopMenu->Append( ID_POPUP_PCB_PLACE_MICROVIA, msg );
}
}
// track Width control :

View File

@ -86,6 +86,23 @@ static PARAM_CFG_INT ViaDrillCfg
250, /* Default value */
0, 0xFFFF /* Valeurs extremes */
);
static PARAM_CFG_INT MicroViaDiametreCfg
(
wxT( "MViaDia" ), /* Keyword */
&g_DesignSettings.m_CurrentMicroViaSize, /* Parameter address */
200, /* Default value */
0, 1000 /* Valeurs extremes */
);
static PARAM_CFG_INT MicroViaDrillCfg
(
wxT( "MViaDrl" ), /* Keyword */
&g_DesignSettings.m_MicroViaDrill, /* Parameter address */
80, /* Default value */
0, 800 /* Valeurs extremes */
);
static PARAM_CFG_INT ViaShowHoleCfg
(
INSETUP,
@ -582,28 +599,28 @@ static PARAM_CFG_SETCOLOR ColorPadCmpCfg
RED /* Default value */
);
static PARAM_CFG_SETCOLOR ColorViaNormCfg
static PARAM_CFG_SETCOLOR ColorViaThroughCfg
(
INSETUP,
wxT( "CoViaNo" ), /* Keyword */
wxT( "CoViaTh" ), /* Keyword */
&g_DesignSettings.m_ViaColor[VIA_THROUGH], /* Parameter address */
LIGHTGRAY /* Default value */
);
static PARAM_CFG_SETCOLOR ColorViaborgneCfg
static PARAM_CFG_SETCOLOR ColorViaBlindBuriedCfg
(
INSETUP,
wxT( "CoViaBo" ), /* Keyword */
& g_DesignSettings.m_ViaColor[VIA_BURIED], /* Parameter address */
CYAN /* Default value */
wxT( "CoViaBu" ), /* Keyword */
&g_DesignSettings.m_ViaColor[VIA_BLIND_BURIED], /* Parameter address */
BROWN /* Default value */
);
static PARAM_CFG_SETCOLOR ColorViaEnterreeCfg // Buried Via Color
static PARAM_CFG_SETCOLOR ColorViaMicroViaCfg // Buried Via Color
(
INSETUP,
wxT( "CoViaEn" ), /* Keyword */
& g_DesignSettings.m_ViaColor[VIA_BLIND], /* Parameter address */
BROWN /* Default value */
wxT( "CoViaMi" ), /* Keyword */
&g_DesignSettings.m_ViaColor[VIA_MICROVIA], /* Parameter address */
CYAN /* Default value */
);
static PARAM_CFG_SETCOLOR ColorpcbGrilleCfg
@ -823,6 +840,8 @@ PARAM_CFG_BASE* ParamCfgList[] =
&PadMasqueLayerCfg,
&ViaDiametreCfg,
&ViaDrillCfg,
&MicroViaDiametreCfg,
&MicroViaDrillCfg,
&ViaShowHoleCfg,
&TrackClearenceCfg,
&LayerCountCfg,
@ -886,9 +905,9 @@ PARAM_CFG_BASE* ParamCfgList[] =
&ColorAncreModCfg,
&ColorPadCuCfg,
&ColorPadCmpCfg,
&ColorViaNormCfg,
&ColorViaborgneCfg,
&ColorViaEnterreeCfg,
&ColorViaThroughCfg,
&ColorViaBlindBuriedCfg,
&ColorViaMicroViaCfg,
&ColorpcbGrilleCfg,
&ColorCheveluCfg,
&HPGLpenNumCfg,

View File

@ -109,7 +109,7 @@ eda_global bool Drc_On
#endif
;
eda_global bool g_AutoDeleteOldTrack /* Allows automatic deletion of the old track after
creation of a new track */
* creation of a new track */
#ifdef MAIN
= TRUE
#endif
@ -285,10 +285,10 @@ eda_global int g_TrackSegmentCount; // New created segment count
eda_global wxString g_ViaType_Name[4]
#if defined MAIN
= {
wxT( "???" ), // Unused
_( "Blind Via" ), // from inner layer to external layer (TOP or BOTTOM)
_( "Buried Via" ), // from inner to inner layer
_( "Standard Via" ) // Usual via (from TOP to BOTTOM layer)
_( "??? Via" ), // Not used yet
_( "Micro Via" ), // from external layer (TOP or BOTTOM) from the near neightbour inner layer only
_( "Blind/Buried Via" ), // from inner or external to inner or external layer (no restriction)
_( "Through Via" ) // Usual via (from TOP to BOTTOM layer only )
}

View File

@ -464,12 +464,8 @@ static void PrintDrillMark( BOARD* Pcb )
if( g_DrillShapeOpt == DRILL_MARK )
diam.x = diam.y = SMALL_DRILL;
else
{
if( pts->m_Drill < 0 )
diam.x = diam.y = g_DesignSettings.m_ViaDrill;
else
diam.x = diam.y = pts->m_Drill;
}
diam.x = diam.y = pts->GetDrillValue();
trace_1_pastille_RONDE_POST( pos, diam.x, FILLED );
}

View File

@ -606,7 +606,7 @@ void WinEDA_PcbFrame::ReadAutoroutedTracks( wxDC* DC )
if( NewVia->GetLayer() == 0x0F || NewVia->GetLayer() == 0xF0 )
NewVia->m_Shape = VIA_THROUGH;
else
NewVia->m_Shape = VIA_BURIED;
NewVia->m_Shape = VIA_BLIND_BURIED;
NewVia->Insert( m_Pcb, NULL );
NbTrack++;

View File

@ -336,19 +336,19 @@ static ColorButton VIA_THROUGH_Butt =
TRUE // Toggle ITEM_NOT_SHOW bit of the color variable
};
static ColorButton Via_Aveugle_Butt =
static ColorButton VIA_BLIND_BURIED_Butt =
{
wxT( "*" ),
VIA_BLIND, // Layer
&g_DesignSettings.m_ViaColor[VIA_BLIND], // Address of optional parameter
VIA_BLIND_BURIED, // Layer
&g_DesignSettings.m_ViaColor[VIA_BLIND_BURIED], // Address of optional parameter
TRUE // Toggle ITEM_NOT_SHOW bit of the color variable
};
static ColorButton BLIND_VIA_Butt =
static ColorButton MICRO_VIA_Butt =
{
wxT( "*" ),
VIA_BURIED, // Layer
&g_DesignSettings.m_ViaColor[VIA_BURIED], // Address of optional parameter
VIA_MICROVIA, // Layer
&g_DesignSettings.m_ViaColor[VIA_MICROVIA], // Address of optional parameter
TRUE // Toggle ITEM_NOT_SHOW bit of the color variable
};
@ -491,8 +491,8 @@ static ColorButton* laytool_list[] = {
// &Layer_32_Butt,
&VIA_THROUGH_Butt,
&Via_Aveugle_Butt,
&BLIND_VIA_Butt,
&VIA_BLIND_BURIED_Butt,
&MICRO_VIA_Butt,
&Ratsnest_Butt,
&Pad_Cu_Butt,
&Pad_Cmp_Butt,

View File

@ -14,8 +14,9 @@
/**********************************************************************************/
void WinEDA_PcbFrame::Via_Edit_Control( wxDC* DC, int command_type, SEGVIA* via )
/**********************************************************************************/
/*
Execute edit commands relative to vias
* Execute edit commands relative to vias
*/
{
int ii;
@ -40,41 +41,47 @@ TRACK * via_struct ;
case ID_POPUP_PCB_VIA_HOLE_ENTER_VALUE: // Enter a new alternate value for drill via
InstallPcbOptionsFrame( wxDefaultPosition, DC, ID_PCB_TRACK_SIZE_SETUP );
DrawPanel->MouseToCursorSchema();
case ID_POPUP_PCB_VIA_HOLE_TO_VALUE: // Set the drill via to custom
if( (g_ViaHoleLastValue > 0) && (g_ViaHoleLastValue < via->m_Width) )
{
via->Draw( DrawPanel, DC, GR_XOR );
via->m_Drill = g_ViaHoleLastValue;
via->SetDrillValue( g_ViaHoleLastValue );
via->Draw( DrawPanel, DC, GR_OR );
GetScreen()->SetModify();
}
else DisplayError(this, _("Incorrect value for Via drill. No via drill change"));
else
DisplayError( this, _( "Incorrect value for Via drill. No via drill change" ) );
break;
case ID_POPUP_PCB_VIA_HOLE_EXPORT: // Export the current drill value as the new custom value
if ( via->m_Drill > 0 ) g_ViaHoleLastValue = via->m_Drill;
if( via->GetDrillValue() > 0 )
g_ViaHoleLastValue = via->GetDrillValue();
break;
case ID_POPUP_PCB_VIA_HOLE_EXPORT_TO_OTHERS: // Export the current drill value to via which héave the same size
if ( via->m_Drill > 0 ) g_ViaHoleLastValue = via->m_Drill;
if( via->GetDrillValue() > 0 )
g_ViaHoleLastValue = via->GetDrillValue();
via_struct = m_Pcb->m_Track;
for( ; via_struct != NULL; via_struct = (TRACK*) via_struct->Pnext )
{
if( via_struct->Type() == TYPEVIA ) /* mise a jour du diametre de la via */
{
if ( via_struct->m_Width != via->m_Width ) continue;
if( via_struct->m_Width != via->m_Width )
continue;
via_struct->Draw( DrawPanel, DC, GR_XOR );
via_struct->m_Drill = via->m_Drill;
via_struct->SetDrillValue( via->GetDrillValue() );
via_struct->Draw( DrawPanel, DC, GR_OR );
}
}
GetScreen()->SetModify();
break;
case ID_POPUP_PCB_VIA_HOLE_TO_DEFAULT:
via->Draw( DrawPanel, DC, GR_XOR );
via->m_Drill = -1;
via->SetDrillDefault();
via->Draw( DrawPanel, DC, GR_OR );
GetScreen()->SetModify();
break;
@ -85,14 +92,15 @@ TRACK * via_struct ;
{
if( via_struct->Type() == TYPEVIA ) /* mise a jour du diametre de la via */
{
if( via_struct->m_Drill != -1 )
if( via_struct->IsDrillDefault() )
{
via_struct->Draw( DrawPanel, DC, GR_XOR );
via_struct->m_Drill = -1;
via_struct->SetDrillDefault();
via_struct->Draw( DrawPanel, DC, GR_OR );
}
}
}
GetScreen()->SetModify();
break;
@ -100,5 +108,6 @@ TRACK * via_struct ;
DisplayError( this, wxT( "WinEDA_PcbFrame::Via_Edition() error: unknown command" ) );
break;
}
DrawPanel->MouseToCursorSchema();
}