UI Improvements for PCB Design Rules Dialog
* Added floating point validators for wxTextCtrl items relating to via and track sizes * Prevent entering negative values * Changed via option wxRadioButton pairs to wxCheckBox * Toggling the OptAllowMicroVias checkbox toggles the enabled status of the microvia settings controls * Cleanup of error message(s)
This commit is contained in:
parent
d56a49d218
commit
d1278a48b6
|
@ -181,6 +181,8 @@ DIALOG_DESIGN_RULES::DIALOG_DESIGN_RULES( PCB_EDIT_FRAME* parent ) :
|
|||
column0.SetText( NET_TITLE );
|
||||
column1.SetText( CLASS_TITLE );
|
||||
|
||||
SetDataValidators();
|
||||
|
||||
m_leftListCtrl->InsertColumn( 0, column0 );
|
||||
m_leftListCtrl->InsertColumn( 1, column1 );
|
||||
m_leftListCtrl->SetColumnWidth( 0, wxLIST_AUTOSIZE );
|
||||
|
@ -215,6 +217,23 @@ DIALOG_DESIGN_RULES::DIALOG_DESIGN_RULES( PCB_EDIT_FRAME* parent ) :
|
|||
FinishDialogSettings();
|
||||
}
|
||||
|
||||
void DIALOG_DESIGN_RULES::SetDataValidators()
|
||||
{
|
||||
// Set floating-point validators for numerical inputs
|
||||
wxFloatingPointValidator< double > fpValidator( NULL, wxNUM_VAL_ZERO_AS_BLANK | wxNUM_VAL_NO_TRAILING_ZEROES );
|
||||
|
||||
int maxDimension = 1000 * IU_PER_MILS; // One-inch
|
||||
|
||||
fpValidator.SetRange( 0, To_User_Unit( g_UserUnit, maxDimension ) );
|
||||
fpValidator.SetPrecision( 10 );
|
||||
|
||||
m_SetViasMinSizeCtrl->SetValidator( fpValidator );
|
||||
m_SetViasMinDrillCtrl->SetValidator( fpValidator );
|
||||
m_SetMicroViasMinSizeCtrl->SetValidator( fpValidator );
|
||||
m_SetMicroViasMinDrillCtrl->SetValidator( fpValidator );
|
||||
m_SetTrackMinWidthCtrl->SetValidator( fpValidator );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_DESIGN_RULES::InitDialogRules()
|
||||
{
|
||||
|
@ -260,19 +279,21 @@ void DIALOG_DESIGN_RULES::InitDialogRules()
|
|||
|
||||
void DIALOG_DESIGN_RULES::InitGlobalRules()
|
||||
{
|
||||
AddUnitSymbol( *m_ViaMinTitle );
|
||||
AddUnitSymbol( *m_ViaMinDrillTitle );
|
||||
AddUnitSymbol( *m_MicroViaMinSizeTitle );
|
||||
AddUnitSymbol( *m_MicroViaMinDrillTitle );
|
||||
AddUnitSymbol( *m_TrackMinWidthTitle );
|
||||
// Set unit labels
|
||||
wxString units = ReturnUnitSymbol( g_UserUnit, _( "%s" ) );
|
||||
|
||||
m_ViaMinUnits->SetLabel( units );
|
||||
m_ViaMinDrillUnits->SetLabel( units );
|
||||
m_MicroViaMinSizeUnits->SetLabel( units );
|
||||
m_MicroViaMinDrillUnits->SetLabel( units );
|
||||
m_TrackMinWidthUnits->SetLabel( units );
|
||||
|
||||
PutValueInLocalUnits( *m_SetViasMinSizeCtrl, m_BrdSettings->m_ViasMinSize );
|
||||
PutValueInLocalUnits( *m_SetViasMinDrillCtrl, m_BrdSettings->m_ViasMinDrill );
|
||||
|
||||
if( m_BrdSettings->m_BlindBuriedViaAllowed )
|
||||
m_OptViaType->SetSelection( 1 );
|
||||
m_OptAllowBlindBuriedVias->SetValue( m_BrdSettings->m_BlindBuriedViaAllowed );
|
||||
m_OptAllowMicroVias->SetValue( m_BrdSettings->m_MicroViasAllowed );
|
||||
|
||||
m_AllowMicroViaCtrl->SetSelection( m_BrdSettings->m_MicroViasAllowed ? 1 : 0 );
|
||||
PutValueInLocalUnits( *m_SetMicroViasMinSizeCtrl, m_BrdSettings->m_MicroViasMinSize );
|
||||
PutValueInLocalUnits( *m_SetMicroViasMinDrillCtrl, m_BrdSettings->m_MicroViasMinDrill );
|
||||
PutValueInLocalUnits( *m_SetTrackMinWidthCtrl, m_BrdSettings->m_TrackMinWidth );
|
||||
|
@ -573,13 +594,13 @@ void DIALOG_DESIGN_RULES::CopyRulesListToBoard()
|
|||
|
||||
void DIALOG_DESIGN_RULES::CopyGlobalRulesToBoard()
|
||||
{
|
||||
m_BrdSettings->m_BlindBuriedViaAllowed = m_OptViaType->GetSelection() > 0;
|
||||
m_BrdSettings->m_BlindBuriedViaAllowed = m_OptAllowBlindBuriedVias->GetValue();
|
||||
|
||||
// Update vias minimum values for DRC
|
||||
m_BrdSettings->m_ViasMinSize = ValueFromTextCtrl( *m_SetViasMinSizeCtrl );
|
||||
m_BrdSettings->m_ViasMinDrill = ValueFromTextCtrl( *m_SetViasMinDrillCtrl );
|
||||
|
||||
m_BrdSettings->m_MicroViasAllowed = m_AllowMicroViaCtrl->GetSelection() == 1;
|
||||
m_BrdSettings->m_MicroViasAllowed = m_OptAllowMicroVias->GetValue();
|
||||
|
||||
// Update microvias minimum values for DRC
|
||||
m_BrdSettings->m_MicroViasMinSize = ValueFromTextCtrl( *m_SetMicroViasMinSizeCtrl );
|
||||
|
@ -789,6 +810,16 @@ void DIALOG_DESIGN_RULES::OnRemoveNetclassClick( wxCommandEvent& event )
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function OnAllowMicroVias
|
||||
* is called whenever the AllowMicroVias checkbox is toggled
|
||||
*/
|
||||
void DIALOG_DESIGN_RULES::OnAllowMicroVias( wxCommandEvent& event )
|
||||
{
|
||||
bool enabled = m_OptAllowMicroVias->GetValue();
|
||||
m_SetMicroViasMinSizeCtrl->Enable( enabled );
|
||||
m_SetMicroViasMinDrillCtrl->Enable( enabled );
|
||||
}
|
||||
|
||||
void DIALOG_DESIGN_RULES::OnMoveUpSelectedNetClass( wxCommandEvent& event )
|
||||
{
|
||||
|
@ -941,6 +972,11 @@ bool DIALOG_DESIGN_RULES::TestDataValidity( wxString* aErrorMsg )
|
|||
wxString msg;
|
||||
wxString errorMsg;
|
||||
|
||||
wxString netclassLabel; // Name of a given netclass
|
||||
wxString netclassError; // Error message particular to a given netclass
|
||||
|
||||
wxString units = ReturnUnitSymbol( g_UserUnit, _( "%s" ) );
|
||||
|
||||
int minViaDia = ValueFromTextCtrl( *m_SetViasMinSizeCtrl );
|
||||
int minViaDrill = ValueFromTextCtrl( *m_SetViasMinDrillCtrl );
|
||||
int minUViaDia = ValueFromTextCtrl( *m_SetMicroViasMinSizeCtrl );
|
||||
|
@ -954,14 +990,19 @@ bool DIALOG_DESIGN_RULES::TestDataValidity( wxString* aErrorMsg )
|
|||
// Test net class parameters.
|
||||
for( int row = 0; row < m_grid->GetNumberRows(); row++ )
|
||||
{
|
||||
netclassLabel = GetChars( m_grid->GetRowLabelValue( row ) );
|
||||
netclassError = _( "" ); // Clear the error for this netclass
|
||||
|
||||
int tracksize = ValueFromString( g_UserUnit,
|
||||
m_grid->GetCellValue( row, GRID_TRACKSIZE ) );
|
||||
if( tracksize < minTrackWidth )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>Track Size</b> < <b>Min Track Size</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
errorMsg += msg;
|
||||
msg.Printf( _( " - <b>Track Size</b> (%f %s) < <b>Min Track Size</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, tracksize ), units,
|
||||
To_User_Unit( g_UserUnit, minTrackWidth ), units );
|
||||
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
int dpsize = ValueFromString( g_UserUnit,
|
||||
|
@ -970,9 +1011,10 @@ bool DIALOG_DESIGN_RULES::TestDataValidity( wxString* aErrorMsg )
|
|||
if( dpsize < minTrackWidth )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>Differential Pair Size</b> < <b>Min Track Size</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
errorMsg += msg;
|
||||
msg.Printf( _( " - <b>Differential Pair Size</b> (%f %s) < <b>Min Track Size</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, dpsize ), units,
|
||||
To_User_Unit( g_UserUnit, minTrackWidth ), units );
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
|
||||
|
@ -983,9 +1025,10 @@ bool DIALOG_DESIGN_RULES::TestDataValidity( wxString* aErrorMsg )
|
|||
if( viadia < minViaDia )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>Via Diameter</b> < <b>Minimum Via Diameter</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
errorMsg += msg;
|
||||
msg.Printf( _( " - <b>Via Diameter</b> (%f %s) < <b>Minimum Via Diameter</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, viadia ), units,
|
||||
To_User_Unit( g_UserUnit, minViaDia ), units );
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
int viadrill = ValueFromString( g_UserUnit,
|
||||
|
@ -994,17 +1037,19 @@ bool DIALOG_DESIGN_RULES::TestDataValidity( wxString* aErrorMsg )
|
|||
if( viadrill >= viadia )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>Via Drill</b> ≥ <b>Via Dia</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
errorMsg += msg;
|
||||
msg.Printf( _( " - <b>Via Drill</b> (%f %s) ≥ <b>Via Dia</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, viadrill ), units,
|
||||
To_User_Unit( g_UserUnit, viadia ), units );
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
if( viadrill < minViaDrill )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>Via Drill</b> < <b>Min Via Drill</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
errorMsg += msg;
|
||||
msg.Printf( _( " - <b>Via Drill</b> (%f %s) < <b>Min Via Drill</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, viadrill ), units,
|
||||
To_User_Unit( g_UserUnit, minViaDrill ), units );
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
// Test Micro vias
|
||||
|
@ -1014,9 +1059,10 @@ bool DIALOG_DESIGN_RULES::TestDataValidity( wxString* aErrorMsg )
|
|||
if( muviadia < minUViaDia )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>MicroVia Diameter</b> < <b>MicroVia Min Diameter</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
errorMsg += msg;
|
||||
msg.Printf( _( " - <b>MicroVia Diameter</b> (%f %s) < <b>MicroVia Min Diameter</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, muviadia ), units,
|
||||
To_User_Unit( g_UserUnit, minUViaDia ), units );
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
int muviadrill = ValueFromString( g_UserUnit,
|
||||
|
@ -1025,17 +1071,28 @@ bool DIALOG_DESIGN_RULES::TestDataValidity( wxString* aErrorMsg )
|
|||
if( muviadrill >= muviadia )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>MicroVia Drill</b> ≥ <b>MicroVia Dia</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
errorMsg += msg;
|
||||
msg.Printf( _( " - <b>MicroVia Drill</b> (%f %s) ≥ <b>MicroVia Dia</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, muviadrill ), units,
|
||||
To_User_Unit( g_UserUnit, muviadia ), units );
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
if( muviadrill < minUViaDrill )
|
||||
{
|
||||
result = false;
|
||||
msg.Printf( _( "%s: <b>MicroVia Drill</b> < <b>MicroVia Min Drill</b><br>" ),
|
||||
GetChars( m_grid->GetRowLabelValue( row ) ) );
|
||||
msg.Printf( _( " - <b>MicroVia Drill</b> (%f %s) < <b>MicroVia Min Drill</b> (%f %s)<br>" ),
|
||||
To_User_Unit( g_UserUnit, muviadrill ), units,
|
||||
To_User_Unit( g_UserUnit, minUViaDrill ), units );
|
||||
netclassError += msg;
|
||||
}
|
||||
|
||||
// If this netclass contains errors, add it to the error message
|
||||
if ( !netclassError.IsEmpty() )
|
||||
{
|
||||
msg.Printf( _( "Netclass: <b>%s</b><br>" ), netclassLabel );
|
||||
errorMsg += msg;
|
||||
errorMsg += netclassError;
|
||||
errorMsg += _( "<br>" );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
|
||||
#include <dialog_design_rules_base.h>
|
||||
|
||||
#include <float.h>
|
||||
#include <wx/valnum.h>
|
||||
|
||||
|
||||
class PCB_EDIT_FRAME;
|
||||
class BOARD_DESIGN_SETTINGS;
|
||||
|
@ -68,9 +71,13 @@ private:
|
|||
BOARD* m_Pcb;
|
||||
BOARD_DESIGN_SETTINGS* m_BrdSettings;
|
||||
|
||||
NETCLASSPTR m_SelectedNetClass;
|
||||
|
||||
static int s_LastTabSelection; ///< which tab user had open last
|
||||
int m_initialRowLabelsSize; ///< the initial width given by wxFormBuilder
|
||||
|
||||
wxFloatingPointValidator< double > m_validator; // Floating point validator
|
||||
|
||||
/**
|
||||
* A two column table which gets filled once and never loses any elements, so it is
|
||||
* basically constant, except that the NETCUP::clazz member can change for any
|
||||
|
@ -88,6 +95,7 @@ private:
|
|||
void OnNetClassesNameRightClick( wxGridEvent& event ) override { event.Skip(); }
|
||||
void OnAddNetclassClick( wxCommandEvent& event ) override;
|
||||
void OnRemoveNetclassClick( wxCommandEvent& event ) override;
|
||||
void OnAllowMicroVias( wxCommandEvent& event ) override;
|
||||
|
||||
/*
|
||||
* Called on "Move Up" button click
|
||||
|
@ -123,6 +131,12 @@ private:
|
|||
*/
|
||||
void OnRightSelectAllButton( wxCommandEvent& event ) override;
|
||||
|
||||
/*
|
||||
* Function SetDataValidators
|
||||
* adds numerical validators to relevant text input boxes
|
||||
*/
|
||||
void SetDataValidators( void );
|
||||
|
||||
/*
|
||||
* Function TestDataValidity
|
||||
*
|
||||
|
|
|
@ -91,10 +91,10 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
|
|||
sbSizerUpper->Add( buttonBoxSizer, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
|
||||
bpanelNetClassesSizer->Add( sbSizerUpper, 2, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
bpanelNetClassesSizer->Add( sbSizerUpper, 1, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbSizerNetSelectMain;
|
||||
sbSizerNetSelectMain = new wxStaticBoxSizer( new wxStaticBox( m_panelNetClassesEditor, wxID_ANY, _("Membership:") ), wxHORIZONTAL );
|
||||
sbSizerNetSelectMain = new wxStaticBoxSizer( new wxStaticBox( m_panelNetClassesEditor, wxID_ANY, wxEmptyString ), wxHORIZONTAL );
|
||||
|
||||
wxBoxSizer* leftNetSelectBoxSizer;
|
||||
leftNetSelectBoxSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
@ -147,13 +147,13 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
|
|||
sbSizerNetSelectMain->Add( rghtNetSelectBoxSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
bpanelNetClassesSizer->Add( sbSizerNetSelectMain, 3, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
bpanelNetClassesSizer->Add( sbSizerNetSelectMain, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
m_panelNetClassesEditor->SetSizer( bpanelNetClassesSizer );
|
||||
m_panelNetClassesEditor->Layout();
|
||||
bpanelNetClassesSizer->Fit( m_panelNetClassesEditor );
|
||||
m_DRnotebook->AddPage( m_panelNetClassesEditor, _("Net Classes Editor"), true );
|
||||
m_DRnotebook->AddPage( m_panelNetClassesEditor, _("Net Classes Editor"), false );
|
||||
m_panelGolbalDesignRules = new wxPanel( m_DRnotebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bpanelGlobRulesSizer;
|
||||
bpanelGlobRulesSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
@ -162,91 +162,103 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
|
|||
bDesignRulesUpperSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
wxStaticBoxSizer* sbViasOptionSizer;
|
||||
sbViasOptionSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelGolbalDesignRules, wxID_ANY, _("Via Options:") ), wxVERTICAL );
|
||||
sbViasOptionSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelGolbalDesignRules, wxID_ANY, _("Routing Options:") ), wxVERTICAL );
|
||||
|
||||
wxString m_OptViaTypeChoices[] = { _("Do not allow blind/buried vias"), _("Allow blind/buried vias") };
|
||||
int m_OptViaTypeNChoices = sizeof( m_OptViaTypeChoices ) / sizeof( wxString );
|
||||
m_OptViaType = new wxRadioBox( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Blind/buried Vias:"), wxDefaultPosition, wxDefaultSize, m_OptViaTypeNChoices, m_OptViaTypeChoices, 1, wxRA_SPECIFY_COLS );
|
||||
m_OptViaType->SetSelection( 0 );
|
||||
m_OptViaType->SetToolTip( _("Allows or not blind/buried vias.\nDo not allow is the usual selection.\nNote: micro vias are a special type of blind vias and are not managed here") );
|
||||
wxFlexGridSizer* fgViaOptionsSize;
|
||||
fgViaOptionsSize = new wxFlexGridSizer( 0, 3, 0, 0 );
|
||||
fgViaOptionsSize->AddGrowableCol( 1 );
|
||||
fgViaOptionsSize->SetFlexibleDirection( wxBOTH );
|
||||
fgViaOptionsSize->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
sbViasOptionSizer->Add( m_OptViaType, 0, wxALL|wxEXPAND, 5 );
|
||||
m_TrackMinWidthTitle = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Minimum track width"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
|
||||
m_TrackMinWidthTitle->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_TrackMinWidthTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
wxString m_AllowMicroViaCtrlChoices[] = { _("Do not allow micro vias"), _("Allow micro vias") };
|
||||
int m_AllowMicroViaCtrlNChoices = sizeof( m_AllowMicroViaCtrlChoices ) / sizeof( wxString );
|
||||
m_AllowMicroViaCtrl = new wxRadioBox( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Micro Vias:"), wxDefaultPosition, wxDefaultSize, m_AllowMicroViaCtrlNChoices, m_AllowMicroViaCtrlChoices, 1, wxRA_SPECIFY_COLS );
|
||||
m_AllowMicroViaCtrl->SetSelection( 0 );
|
||||
m_AllowMicroViaCtrl->SetToolTip( _("Allows or do not allow use of micro vias\nThey are very small vias only from an external copper layer to its near neightbour") );
|
||||
m_SetTrackMinWidthCtrl = new wxTextCtrl( sbViasOptionSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgViaOptionsSize->Add( m_SetTrackMinWidthCtrl, 0, wxALIGN_LEFT|wxALIGN_TOP|wxALL|wxEXPAND, 5 );
|
||||
|
||||
sbViasOptionSizer->Add( m_AllowMicroViaCtrl, 0, wxALL|wxEXPAND, 5 );
|
||||
m_TrackMinWidthUnits = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT );
|
||||
m_TrackMinWidthUnits->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_TrackMinWidthUnits, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT, 5 );
|
||||
|
||||
m_ViaMinTitle = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Minimum via diameter"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
|
||||
m_ViaMinTitle->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_ViaMinTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_SetViasMinSizeCtrl = new wxTextCtrl( sbViasOptionSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgViaOptionsSize->Add( m_SetViasMinSizeCtrl, 0, wxALL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
m_ViaMinUnits = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT );
|
||||
m_ViaMinUnits->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_ViaMinUnits, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT, 5 );
|
||||
|
||||
m_ViaMinDrillTitle = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Minimum via drill"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT );
|
||||
m_ViaMinDrillTitle->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_ViaMinDrillTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_SetViasMinDrillCtrl = new wxTextCtrl( sbViasOptionSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgViaOptionsSize->Add( m_SetViasMinDrillCtrl, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_ViaMinDrillUnits = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT );
|
||||
m_ViaMinDrillUnits->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_ViaMinDrillUnits, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_LEFT, 5 );
|
||||
|
||||
|
||||
fgViaOptionsSize->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_OptAllowBlindBuriedVias = new wxCheckBox( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Allow blind/buried vias"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgViaOptionsSize->Add( m_OptAllowBlindBuriedVias, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
fgViaOptionsSize->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
fgViaOptionsSize->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_OptAllowMicroVias = new wxCheckBox( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Allow micro vias (uVias)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgViaOptionsSize->Add( m_OptAllowMicroVias, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
fgViaOptionsSize->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_MicroViaMinSizeTitle = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Minimum uVia diameter"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_MicroViaMinSizeTitle->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_MicroViaMinSizeTitle, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
|
||||
|
||||
m_SetMicroViasMinSizeCtrl = new wxTextCtrl( sbViasOptionSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetMicroViasMinSizeCtrl->Enable( false );
|
||||
|
||||
fgViaOptionsSize->Add( m_SetMicroViasMinSizeCtrl, 0, wxALL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
m_MicroViaMinSizeUnits = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT );
|
||||
m_MicroViaMinSizeUnits->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_MicroViaMinSizeUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
m_MicroViaMinDrillTitle = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("Minimum uVia drill"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_MicroViaMinDrillTitle->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_MicroViaMinDrillTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_SetMicroViasMinDrillCtrl = new wxTextCtrl( sbViasOptionSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetMicroViasMinDrillCtrl->Enable( false );
|
||||
|
||||
fgViaOptionsSize->Add( m_SetMicroViasMinDrillCtrl, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
m_MicroViaMinDrillUnits = new wxStaticText( sbViasOptionSizer->GetStaticBox(), wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT );
|
||||
m_MicroViaMinDrillUnits->Wrap( -1 );
|
||||
fgViaOptionsSize->Add( m_MicroViaMinDrillUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
|
||||
|
||||
|
||||
sbViasOptionSizer->Add( fgViaOptionsSize, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bDesignRulesUpperSizer->Add( sbViasOptionSizer, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
|
||||
|
||||
wxStaticBoxSizer* sbMinSizesSizer;
|
||||
sbMinSizesSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelGolbalDesignRules, wxID_ANY, _("Minimum Allowed Values:") ), wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgMinValuesSizer;
|
||||
fgMinValuesSizer = new wxFlexGridSizer( 5, 2, 0, 0 );
|
||||
fgMinValuesSizer->AddGrowableCol( 1 );
|
||||
fgMinValuesSizer->SetFlexibleDirection( wxBOTH );
|
||||
fgMinValuesSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_TrackMinWidthTitle = new wxStaticText( sbMinSizesSizer->GetStaticBox(), wxID_ANY, _("Min track width"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_TrackMinWidthTitle->Wrap( -1 );
|
||||
fgMinValuesSizer->Add( m_TrackMinWidthTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_SetTrackMinWidthCtrl = new wxTextCtrl( sbMinSizesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetTrackMinWidthCtrl->SetMaxLength( 0 );
|
||||
fgMinValuesSizer->Add( m_SetTrackMinWidthCtrl, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_ViaMinTitle = new wxStaticText( sbMinSizesSizer->GetStaticBox(), wxID_ANY, _("Min via diameter"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ViaMinTitle->Wrap( -1 );
|
||||
fgMinValuesSizer->Add( m_ViaMinTitle, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
|
||||
|
||||
m_SetViasMinSizeCtrl = new wxTextCtrl( sbMinSizesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetViasMinSizeCtrl->SetMaxLength( 0 );
|
||||
fgMinValuesSizer->Add( m_SetViasMinSizeCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_ViaMinDrillTitle = new wxStaticText( sbMinSizesSizer->GetStaticBox(), wxID_ANY, _("Min via drill dia"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ViaMinDrillTitle->Wrap( -1 );
|
||||
fgMinValuesSizer->Add( m_ViaMinDrillTitle, 0, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT, 5 );
|
||||
|
||||
m_SetViasMinDrillCtrl = new wxTextCtrl( sbMinSizesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetViasMinDrillCtrl->SetMaxLength( 0 );
|
||||
fgMinValuesSizer->Add( m_SetViasMinDrillCtrl, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_MicroViaMinSizeTitle = new wxStaticText( sbMinSizesSizer->GetStaticBox(), wxID_ANY, _("Min uvia diameter"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_MicroViaMinSizeTitle->Wrap( -1 );
|
||||
fgMinValuesSizer->Add( m_MicroViaMinSizeTitle, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT, 5 );
|
||||
|
||||
m_SetMicroViasMinSizeCtrl = new wxTextCtrl( sbMinSizesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetMicroViasMinSizeCtrl->SetMaxLength( 6 );
|
||||
fgMinValuesSizer->Add( m_SetMicroViasMinSizeCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_MicroViaMinDrillTitle = new wxStaticText( sbMinSizesSizer->GetStaticBox(), wxID_ANY, _("Min uvia drill dia"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_MicroViaMinDrillTitle->Wrap( -1 );
|
||||
fgMinValuesSizer->Add( m_MicroViaMinDrillTitle, 0, wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5 );
|
||||
|
||||
m_SetMicroViasMinDrillCtrl = new wxTextCtrl( sbMinSizesSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetMicroViasMinDrillCtrl->SetMaxLength( 6 );
|
||||
fgMinValuesSizer->Add( m_SetMicroViasMinDrillCtrl, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
sbMinSizesSizer->Add( fgMinValuesSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
bDesignRulesUpperSizer->Add( sbMinSizesSizer, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
bpanelGlobRulesSizer->Add( bDesignRulesUpperSizer, 0, wxEXPAND, 5 );
|
||||
|
||||
m_staticline1 = new wxStaticLine( m_panelGolbalDesignRules, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bpanelGlobRulesSizer->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_staticTextInfo = new wxStaticText( m_panelGolbalDesignRules, wxID_ANY, _("Specific via diameters and track widths, which \ncan be used to replace default Netclass values \non demand, for arbitrary vias or track segments."), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_staticTextInfo = new wxStaticText( m_panelGolbalDesignRules, wxID_ANY, _("Specific via diameters and track widths, which can be used to replace default Netclass values on demand,\nfor arbitrary vias or track segments."), wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE );
|
||||
m_staticTextInfo->Wrap( -1 );
|
||||
bpanelGlobRulesSizer->Add( m_staticTextInfo, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
|
||||
bpanelGlobRulesSizer->Add( m_staticTextInfo, 0, wxALIGN_CENTER_HORIZONTAL|wxALL|wxEXPAND, 5 );
|
||||
|
||||
wxBoxSizer* bDesignRulesLowerSizer;
|
||||
bDesignRulesLowerSizer = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
@ -357,10 +369,13 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
|
|||
m_panelGolbalDesignRules->SetSizer( bpanelGlobRulesSizer );
|
||||
m_panelGolbalDesignRules->Layout();
|
||||
bpanelGlobRulesSizer->Fit( m_panelGolbalDesignRules );
|
||||
m_DRnotebook->AddPage( m_panelGolbalDesignRules, _("Global Design Rules"), false );
|
||||
m_DRnotebook->AddPage( m_panelGolbalDesignRules, _("Global Design Rules"), true );
|
||||
|
||||
bMainSizer->Add( m_DRnotebook, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
|
||||
bMainSizer->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 );
|
||||
|
||||
m_sdbSizer1 = new wxStdDialogButtonSizer();
|
||||
m_sdbSizer1OK = new wxButton( this, wxID_OK );
|
||||
m_sdbSizer1->AddButton( m_sdbSizer1OK );
|
||||
|
@ -373,7 +388,6 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
|
|||
|
||||
this->SetSizer( bMainSizer );
|
||||
this->Layout();
|
||||
bMainSizer->Fit( this );
|
||||
|
||||
// Connect Events
|
||||
m_DRnotebook->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, wxNotebookEventHandler( DIALOG_DESIGN_RULES_BASE::OnNotebookPageChanged ), NULL, this );
|
||||
|
@ -388,6 +402,7 @@ DIALOG_DESIGN_RULES_BASE::DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID
|
|||
m_buttonLeftSelAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftSelectAllButton ), NULL, this );
|
||||
m_buttonRightSelAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightSelectAllButton ), NULL, this );
|
||||
m_rightClassChoice->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightCBSelection ), NULL, this );
|
||||
m_OptAllowMicroVias->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnAllowMicroVias ), NULL, this );
|
||||
}
|
||||
|
||||
DIALOG_DESIGN_RULES_BASE::~DIALOG_DESIGN_RULES_BASE()
|
||||
|
@ -405,5 +420,6 @@ DIALOG_DESIGN_RULES_BASE::~DIALOG_DESIGN_RULES_BASE()
|
|||
m_buttonLeftSelAll->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnLeftSelectAllButton ), NULL, this );
|
||||
m_buttonRightSelAll->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightSelectAllButton ), NULL, this );
|
||||
m_rightClassChoice->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnRightCBSelection ), NULL, this );
|
||||
m_OptAllowMicroVias->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DESIGN_RULES_BASE::OnAllowMicroVias ), NULL, this );
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -30,11 +30,12 @@ class NETS_LIST_CTRL;
|
|||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/radiobox.h>
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/textctrl.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/valtext.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/statline.h>
|
||||
#include <wx/dialog.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -70,24 +71,29 @@ class DIALOG_DESIGN_RULES_BASE : public DIALOG_SHIM
|
|||
wxComboBox* m_rightClassChoice;
|
||||
NETS_LIST_CTRL* m_rightListCtrl;
|
||||
wxPanel* m_panelGolbalDesignRules;
|
||||
wxRadioBox* m_OptViaType;
|
||||
wxRadioBox* m_AllowMicroViaCtrl;
|
||||
wxStaticText* m_TrackMinWidthTitle;
|
||||
wxTextCtrl* m_SetTrackMinWidthCtrl;
|
||||
wxStaticText* m_TrackMinWidthUnits;
|
||||
wxStaticText* m_ViaMinTitle;
|
||||
wxTextCtrl* m_SetViasMinSizeCtrl;
|
||||
wxStaticText* m_ViaMinUnits;
|
||||
wxStaticText* m_ViaMinDrillTitle;
|
||||
wxTextCtrl* m_SetViasMinDrillCtrl;
|
||||
wxStaticText* m_ViaMinDrillUnits;
|
||||
wxCheckBox* m_OptAllowBlindBuriedVias;
|
||||
wxCheckBox* m_OptAllowMicroVias;
|
||||
wxStaticText* m_MicroViaMinSizeTitle;
|
||||
wxTextCtrl* m_SetMicroViasMinSizeCtrl;
|
||||
wxStaticText* m_MicroViaMinSizeUnits;
|
||||
wxStaticText* m_MicroViaMinDrillTitle;
|
||||
wxTextCtrl* m_SetMicroViasMinDrillCtrl;
|
||||
wxStaticLine* m_staticline1;
|
||||
wxStaticText* m_MicroViaMinDrillUnits;
|
||||
wxStaticText* m_staticTextInfo;
|
||||
wxStaticText* m_staticText7;
|
||||
wxGrid* m_gridViaSizeList;
|
||||
wxStaticText* m_staticText8;
|
||||
wxGrid* m_gridTrackWidthList;
|
||||
wxStaticLine* m_staticline2;
|
||||
wxStdDialogButtonSizer* m_sdbSizer1;
|
||||
wxButton* m_sdbSizer1OK;
|
||||
wxButton* m_sdbSizer1Cancel;
|
||||
|
@ -105,11 +111,12 @@ class DIALOG_DESIGN_RULES_BASE : public DIALOG_SHIM
|
|||
virtual void OnLeftSelectAllButton( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRightSelectAllButton( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRightCBSelection( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnAllowMicroVias( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
public:
|
||||
|
||||
DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Design Rules Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
DIALOG_DESIGN_RULES_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Design Rules Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 798,611 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
~DIALOG_DESIGN_RULES_BASE();
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue