Fix issues in dialog drc: because it is not modal, DRC parameters and unit selection can be modified outside the dialog, still opened. Now, the new parameters are taken in account.
Fixa also a corner case which crashes Pcbnew: if the dialog is opened, and the board was changed (reloaded, cleared), pcbnew crashed because many pointers stored in dialog become invalid. Now the dialog is just closed.
This commit is contained in:
parent
829fa97f3c
commit
bcd345c29f
|
@ -7,7 +7,7 @@
|
|||
*
|
||||
* Copyright (C) 2015 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr
|
||||
* Copyright (C) 2009 Dick Hollenbeck, dick@softplc.com
|
||||
* Copyright (C) 2004-2015 KiCad Developers, see change_log.txt for contributors.
|
||||
* Copyright (C) 2004-2016 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -43,6 +43,7 @@ DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL( DRC* aTester, PCB_EDIT_FRAME* parent ) :
|
|||
{
|
||||
m_tester = aTester;
|
||||
m_Parent = parent;
|
||||
m_currentBoard = m_Parent->GetBoard();
|
||||
m_BrdSettings = m_Parent->GetBoard()->GetDesignSettings();
|
||||
|
||||
InitValues();
|
||||
|
@ -55,6 +56,39 @@ DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL( DRC* aTester, PCB_EDIT_FRAME* parent ) :
|
|||
}
|
||||
|
||||
|
||||
void DIALOG_DRC_CONTROL::OnActivateDlg( wxActivateEvent& event )
|
||||
{
|
||||
if( m_currentBoard != m_Parent->GetBoard() )
|
||||
{
|
||||
// If m_currentBoard is not the current parent board,
|
||||
// (for instance because a new board was loaded),
|
||||
// close the dialog, because many pointers are now invalid
|
||||
// in lists
|
||||
SetReturnCode( wxID_CANCEL );
|
||||
Close();
|
||||
m_tester->DestroyDialog( wxID_CANCEL );
|
||||
return;
|
||||
}
|
||||
|
||||
// updating data which can be modified outside the dialog (DRC parameters, units ...)
|
||||
// because the dialog is not modal
|
||||
m_BrdSettings = m_Parent->GetBoard()->GetDesignSettings();
|
||||
DisplayDRCValues();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_DRC_CONTROL::DisplayDRCValues()
|
||||
{
|
||||
m_TrackMinWidthUnit->SetLabel( GetAbbreviatedUnitsLabel( g_UserUnit ) );
|
||||
m_ViaMinUnit->SetLabel( GetAbbreviatedUnitsLabel( g_UserUnit ) );
|
||||
m_MicroViaMinUnit->SetLabel(GetAbbreviatedUnitsLabel( g_UserUnit ) );
|
||||
|
||||
PutValueInLocalUnits( *m_SetTrackMinWidthCtrl, m_BrdSettings.m_TrackMinWidth );
|
||||
PutValueInLocalUnits( *m_SetViaMinSizeCtrl, m_BrdSettings.m_ViasMinSize );
|
||||
PutValueInLocalUnits( *m_SetMicroViakMinSizeCtrl, m_BrdSettings.m_MicroViasMinSize );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_DRC_CONTROL::InitValues()
|
||||
{
|
||||
// Connect events and objects
|
||||
|
@ -71,12 +105,10 @@ void DIALOG_DRC_CONTROL::InitValues()
|
|||
wxMouseEventHandler(
|
||||
DIALOG_DRC_CONTROL::OnRightUpUnconnected ), NULL, this );
|
||||
|
||||
AddUnitSymbol( *m_TrackMinWidthTitle );
|
||||
AddUnitSymbol( *m_ViaMinTitle );
|
||||
AddUnitSymbol( *m_MicroViaMinTitle );
|
||||
|
||||
m_DeleteCurrentMarkerButton->Enable( false );
|
||||
|
||||
DisplayDRCValues();
|
||||
|
||||
Layout(); // adding the units above expanded Clearance text, now resize.
|
||||
|
||||
// Set the initial "enabled" status of the browse button and the text
|
||||
|
@ -91,11 +123,11 @@ void DIALOG_DRC_CONTROL::InitValues()
|
|||
*/
|
||||
void DIALOG_DRC_CONTROL::SetDrcParmeters( )
|
||||
{
|
||||
m_BrdSettings.m_TrackMinWidth = ValueFromTextCtrl( *m_SetTrackMinWidthCtrl );
|
||||
m_BrdSettings.m_ViasMinSize = ValueFromTextCtrl( *m_SetViaMinSizeCtrl );
|
||||
m_BrdSettings.m_MicroViasMinSize = ValueFromTextCtrl( *m_SetMicroViakMinSizeCtrl );
|
||||
m_BrdSettings.m_TrackMinWidth = ValueFromTextCtrl( *m_SetTrackMinWidthCtrl );
|
||||
m_BrdSettings.m_ViasMinSize = ValueFromTextCtrl( *m_SetViaMinSizeCtrl );
|
||||
m_BrdSettings.m_MicroViasMinSize = ValueFromTextCtrl( *m_SetMicroViakMinSizeCtrl );
|
||||
|
||||
m_Parent->GetBoard()->SetDesignSettings( m_BrdSettings );
|
||||
m_Parent->GetBoard()->SetDesignSettings( m_BrdSettings );
|
||||
}
|
||||
|
||||
|
||||
|
@ -117,7 +149,6 @@ void DIALOG_DRC_CONTROL::OnStartdrcClick( wxCommandEvent& event )
|
|||
}
|
||||
|
||||
SetDrcParmeters();
|
||||
|
||||
m_tester->SetSettings( true, // Pad to pad DRC test enabled
|
||||
true, // unconnected pdas DRC test enabled
|
||||
true, // DRC test for zones enabled
|
||||
|
@ -131,9 +162,8 @@ void DIALOG_DRC_CONTROL::OnStartdrcClick( wxCommandEvent& event )
|
|||
// run all the tests, with no UI at this time.
|
||||
m_Messages->Clear();
|
||||
wxSafeYield(); // Allows time slice to refresh the m_Messages window
|
||||
m_tester->m_pcb->m_Status_Pcb = 0; // Force full connectivity and ratsnest recalculations
|
||||
m_Parent->GetBoard()->m_Status_Pcb = 0; // Force full connectivity and ratsnest recalculations
|
||||
m_tester->RunTests(m_Messages);
|
||||
|
||||
m_Notebook->ChangeSelection( 0 ); // display the 1at tab "...Markers ..."
|
||||
|
||||
|
||||
|
|
|
@ -71,6 +71,8 @@ private:
|
|||
|
||||
void InitValues( );
|
||||
|
||||
void DisplayDRCValues( );
|
||||
|
||||
void SetDrcParmeters( );
|
||||
|
||||
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_CHECKBOX
|
||||
|
@ -109,6 +111,10 @@ private:
|
|||
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK
|
||||
void OnOkClick( wxCommandEvent& event );
|
||||
|
||||
/// handler for activate event, updating data which can be modified outside the dialog
|
||||
/// (DRC parameters)
|
||||
void OnActivateDlg( wxActivateEvent& event );
|
||||
|
||||
void OnMarkerSelectionEvent( wxCommandEvent& event );
|
||||
void OnUnconnectedSelectionEvent( wxCommandEvent& event );
|
||||
void OnChangingMarkerList( wxNotebookEvent& event );
|
||||
|
@ -118,6 +124,7 @@ private:
|
|||
|
||||
void OnPopupMenu( wxCommandEvent& event );
|
||||
|
||||
BOARD* m_currentBoard; // the board currently on test
|
||||
DRC* m_tester;
|
||||
PCB_EDIT_FRAME* m_Parent;
|
||||
};
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Mar 9 2015)
|
||||
// C++ code generated with wxFormBuilder (version Mar 28 2016)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
|
@ -28,70 +28,86 @@ DIALOG_DRC_CONTROL_BASE::DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID i
|
|||
bSizer7 = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxFlexGridSizer* fgMinValuesSizer;
|
||||
fgMinValuesSizer = new wxFlexGridSizer( 4, 2, 0, 0 );
|
||||
fgMinValuesSizer = new wxFlexGridSizer( 4, 3, 0, 0 );
|
||||
fgMinValuesSizer->AddGrowableCol( 1 );
|
||||
fgMinValuesSizer->SetFlexibleDirection( wxHORIZONTAL );
|
||||
fgMinValuesSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_ClearanceTitle = new wxStaticText( this, wxID_ANY, _("Clearance"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ClearanceTitle = new wxStaticText( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Clearance"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ClearanceTitle->Wrap( -1 );
|
||||
fgMinValuesSizer->Add( m_ClearanceTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
|
||||
|
||||
m_SetClearance = new wxTextCtrl( this, wxID_ANY, _("By Netclass"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetClearance->SetMaxLength( 0 );
|
||||
m_SetClearance = new wxTextCtrl( sbSizerOptions->GetStaticBox(), wxID_ANY, _("By Netclass"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetClearance->Enable( false );
|
||||
|
||||
fgMinValuesSizer->Add( m_SetClearance, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_TrackMinWidthTitle = new wxStaticText( this, wxID_ANY, _("Min track width"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
fgMinValuesSizer->Add( 0, 0, 1, wxEXPAND, 5 );
|
||||
|
||||
m_TrackMinWidthTitle = new wxStaticText( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Min track width"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_TrackMinWidthTitle->Wrap( -1 );
|
||||
m_TrackMinWidthTitle->SetToolTip( _("Enter the minimum acceptable value for a track width") );
|
||||
|
||||
fgMinValuesSizer->Add( m_TrackMinWidthTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
|
||||
|
||||
m_SetTrackMinWidthCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetTrackMinWidthCtrl->SetMaxLength( 0 );
|
||||
m_SetTrackMinWidthCtrl = new wxTextCtrl( sbSizerOptions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgMinValuesSizer->Add( m_SetTrackMinWidthCtrl, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_ViaMinTitle = new wxStaticText( this, wxID_ANY, _("Min via size"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_TrackMinWidthUnit = new wxStaticText( sbSizerOptions->GetStaticBox(), wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_TrackMinWidthUnit->Wrap( -1 );
|
||||
m_TrackMinWidthUnit->SetToolTip( _("Enter the minimum acceptable value for a track width") );
|
||||
|
||||
fgMinValuesSizer->Add( m_TrackMinWidthUnit, 0, wxALL, 5 );
|
||||
|
||||
m_ViaMinTitle = new wxStaticText( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Min via size"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ViaMinTitle->Wrap( -1 );
|
||||
m_ViaMinTitle->SetHelpText( _("Enter the minimum acceptable diameter for a standard via") );
|
||||
|
||||
fgMinValuesSizer->Add( m_ViaMinTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
|
||||
|
||||
m_SetViaMinSizeCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetViaMinSizeCtrl->SetMaxLength( 0 );
|
||||
m_SetViaMinSizeCtrl = new wxTextCtrl( sbSizerOptions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgMinValuesSizer->Add( m_SetViaMinSizeCtrl, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_MicroViaMinTitle = new wxStaticText( this, wxID_ANY, _("Min uVia size"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ViaMinUnit = new wxStaticText( sbSizerOptions->GetStaticBox(), wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_ViaMinUnit->Wrap( -1 );
|
||||
m_ViaMinUnit->SetHelpText( _("Enter the minimum acceptable diameter for a standard via") );
|
||||
|
||||
fgMinValuesSizer->Add( m_ViaMinUnit, 0, wxALL, 5 );
|
||||
|
||||
m_MicroViaMinTitle = new wxStaticText( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Min uVia size"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_MicroViaMinTitle->Wrap( -1 );
|
||||
m_MicroViaMinTitle->SetToolTip( _("Enter the minimum acceptable diameter for a micro via") );
|
||||
|
||||
fgMinValuesSizer->Add( m_MicroViaMinTitle, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
|
||||
|
||||
m_SetMicroViakMinSizeCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_SetMicroViakMinSizeCtrl->SetMaxLength( 0 );
|
||||
m_SetMicroViakMinSizeCtrl = new wxTextCtrl( sbSizerOptions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgMinValuesSizer->Add( m_SetMicroViakMinSizeCtrl, 0, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_MicroViaMinUnit = new wxStaticText( sbSizerOptions->GetStaticBox(), wxID_ANY, _("unit"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_MicroViaMinUnit->Wrap( -1 );
|
||||
m_MicroViaMinUnit->SetToolTip( _("Enter the minimum acceptable diameter for a micro via") );
|
||||
|
||||
fgMinValuesSizer->Add( m_MicroViaMinUnit, 0, wxALL, 5 );
|
||||
|
||||
|
||||
bSizer7->Add( fgMinValuesSizer, 1, wxEXPAND, 5 );
|
||||
|
||||
wxStaticBoxSizer* ReportFileSizer;
|
||||
ReportFileSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Create Report File") ), wxHORIZONTAL );
|
||||
ReportFileSizer = new wxStaticBoxSizer( new wxStaticBox( sbSizerOptions->GetStaticBox(), wxID_ANY, _("Create Report File") ), wxHORIZONTAL );
|
||||
|
||||
m_CreateRptCtrl = new wxCheckBox( this, ID_CHECKBOX_RPT_FILE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_CreateRptCtrl = new wxCheckBox( ReportFileSizer->GetStaticBox(), ID_CHECKBOX_RPT_FILE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_CreateRptCtrl->SetToolTip( _("Enable writing report to this file") );
|
||||
|
||||
ReportFileSizer->Add( m_CreateRptCtrl, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
m_RptFilenameCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_RptFilenameCtrl->SetMaxLength( 0 );
|
||||
m_RptFilenameCtrl = new wxTextCtrl( ReportFileSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_RptFilenameCtrl->SetToolTip( _("Enter the report filename") );
|
||||
m_RptFilenameCtrl->SetMinSize( wxSize( 180,-1 ) );
|
||||
|
||||
ReportFileSizer->Add( m_RptFilenameCtrl, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
m_BrowseButton = new wxButton( this, ID_BUTTON_BROWSE_RPT_FILE, _("..."), wxDefaultPosition, wxSize( 50,-1 ), 0 );
|
||||
m_BrowseButton = new wxButton( ReportFileSizer->GetStaticBox(), ID_BUTTON_BROWSE_RPT_FILE, _("..."), wxDefaultPosition, wxSize( 50,-1 ), 0 );
|
||||
ReportFileSizer->Add( m_BrowseButton, 0, wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
|
@ -197,9 +213,9 @@ DIALOG_DRC_CONTROL_BASE::DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID i
|
|||
|
||||
this->SetSizer( m_MainSizer );
|
||||
this->Layout();
|
||||
m_MainSizer->Fit( this );
|
||||
|
||||
// Connect Events
|
||||
this->Connect( wxEVT_ACTIVATE, wxActivateEventHandler( DIALOG_DRC_CONTROL_BASE::OnActivateDlg ) );
|
||||
m_CreateRptCtrl->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnReportCheckBoxClicked ), NULL, this );
|
||||
m_BrowseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnButtonBrowseRptFileClick ), NULL, this );
|
||||
m_buttonRunDRC->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnStartdrcClick ), NULL, this );
|
||||
|
@ -220,6 +236,7 @@ DIALOG_DRC_CONTROL_BASE::DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID i
|
|||
DIALOG_DRC_CONTROL_BASE::~DIALOG_DRC_CONTROL_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
this->Disconnect( wxEVT_ACTIVATE, wxActivateEventHandler( DIALOG_DRC_CONTROL_BASE::OnActivateDlg ) );
|
||||
m_CreateRptCtrl->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnReportCheckBoxClicked ), NULL, this );
|
||||
m_BrowseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnButtonBrowseRptFileClick ), NULL, this );
|
||||
m_buttonRunDRC->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnStartdrcClick ), NULL, this );
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
<property name="minimum_size"></property>
|
||||
<property name="name">DIALOG_DRC_CONTROL_BASE</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">-1,-1</property>
|
||||
<property name="size">733,438</property>
|
||||
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||
<property name="subclass">DIALOG_SHIM; dialog_shim.h</property>
|
||||
<property name="title">DRC Control</property>
|
||||
|
@ -52,7 +52,7 @@
|
|||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnActivate"></event>
|
||||
<event name="OnActivate">OnActivateDlg</event>
|
||||
<event name="OnActivateApp"></event>
|
||||
<event name="OnAuiFindManager"></event>
|
||||
<event name="OnAuiPaneButton"></event>
|
||||
|
@ -112,6 +112,7 @@
|
|||
<property name="minimum_size"></property>
|
||||
<property name="name">sbSizerOptions</property>
|
||||
<property name="orient">wxHORIZONTAL</property>
|
||||
<property name="parent">1</property>
|
||||
<property name="permission">none</property>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="sizeritem" expanded="1">
|
||||
|
@ -128,7 +129,7 @@
|
|||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="wxFlexGridSizer" expanded="1">
|
||||
<property name="cols">2</property>
|
||||
<property name="cols">3</property>
|
||||
<property name="flexible_direction">wxHORIZONTAL</property>
|
||||
<property name="growablecols">1</property>
|
||||
<property name="growablerows"></property>
|
||||
|
@ -313,6 +314,16 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND</property>
|
||||
<property name="proportion">1</property>
|
||||
<object class="spacer" expanded="1">
|
||||
<property name="height">0</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="width">0</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>
|
||||
|
@ -487,6 +498,89 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">unit</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_TrackMinWidthUnit</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip">Enter the minimum acceptable value for a track width</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>
|
||||
|
@ -661,6 +755,89 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help">Enter the minimum acceptable diameter for a standard via</property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">unit</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_ViaMinUnit</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL</property>
|
||||
|
@ -835,6 +1012,89 @@
|
|||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticText" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">unit</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_MicroViaMinUnit</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass"></property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip">Enter the minimum acceptable diameter for a micro via</property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<property name="wrap">-1</property>
|
||||
<event name="OnChar"></event>
|
||||
<event name="OnEnterWindow"></event>
|
||||
<event name="OnEraseBackground"></event>
|
||||
<event name="OnKeyDown"></event>
|
||||
<event name="OnKeyUp"></event>
|
||||
<event name="OnKillFocus"></event>
|
||||
<event name="OnLeaveWindow"></event>
|
||||
<event name="OnLeftDClick"></event>
|
||||
<event name="OnLeftDown"></event>
|
||||
<event name="OnLeftUp"></event>
|
||||
<event name="OnMiddleDClick"></event>
|
||||
<event name="OnMiddleDown"></event>
|
||||
<event name="OnMiddleUp"></event>
|
||||
<event name="OnMotion"></event>
|
||||
<event name="OnMouseEvents"></event>
|
||||
<event name="OnMouseWheel"></event>
|
||||
<event name="OnPaint"></event>
|
||||
<event name="OnRightDClick"></event>
|
||||
<event name="OnRightDown"></event>
|
||||
<event name="OnRightUp"></event>
|
||||
<event name="OnSetFocus"></event>
|
||||
<event name="OnSize"></event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
|
@ -847,6 +1107,7 @@
|
|||
<property name="minimum_size"></property>
|
||||
<property name="name">ReportFileSizer</property>
|
||||
<property name="orient">wxHORIZONTAL</property>
|
||||
<property name="parent">1</property>
|
||||
<property name="permission">none</property>
|
||||
<event name="OnUpdateUI"></event>
|
||||
<object class="sizeritem" expanded="1">
|
||||
|
@ -1249,7 +1510,7 @@
|
|||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="maxlength"></property>
|
||||
<property name="maxlength">0</property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size">220,-1</property>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Mar 9 2015)
|
||||
// C++ code generated with wxFormBuilder (version Mar 28 2016)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO "NOT" EDIT THIS FILE!
|
||||
|
@ -55,8 +55,11 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
protected:
|
||||
wxStaticText* m_ClearanceTitle;
|
||||
wxStaticText* m_TrackMinWidthTitle;
|
||||
wxStaticText* m_TrackMinWidthUnit;
|
||||
wxStaticText* m_ViaMinTitle;
|
||||
wxStaticText* m_ViaMinUnit;
|
||||
wxStaticText* m_MicroViaMinTitle;
|
||||
wxStaticText* m_MicroViaMinUnit;
|
||||
wxButton* m_BrowseButton;
|
||||
wxStaticText* m_staticText6;
|
||||
wxTextCtrl* m_Messages;
|
||||
|
@ -73,6 +76,7 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
wxButton* m_sdbSizer1Cancel;
|
||||
|
||||
// Virtual event handlers, overide them in your derived class
|
||||
virtual void OnActivateDlg( wxActivateEvent& event ) { event.Skip(); }
|
||||
virtual void OnReportCheckBoxClicked( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnButtonBrowseRptFileClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnStartdrcClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
@ -100,7 +104,7 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
DRCLISTBOX* m_ClearanceListBox;
|
||||
DRCLISTBOX* m_UnconnectedListBox;
|
||||
|
||||
DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("DRC Control"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("DRC Control"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 733,438 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
~DIALOG_DRC_CONTROL_BASE();
|
||||
|
||||
};
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
*
|
||||
* Copyright (C) 2004-2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* Copyright (C) 2014 Dick Hollenbeck, dick@softplc.com
|
||||
* Copyright (C) 2015 KiCad Developers, see change_log.txt for contributors.
|
||||
* Copyright (C) 2016 KiCad Developers, see change_log.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -55,44 +55,35 @@
|
|||
|
||||
void DRC::ShowDialog()
|
||||
{
|
||||
if( !m_ui )
|
||||
if( !m_drcDialog )
|
||||
{
|
||||
m_mainWindow->GetToolManager()->RunAction( COMMON_ACTIONS::selectionClear, true );
|
||||
m_ui = new DIALOG_DRC_CONTROL( this, m_mainWindow );
|
||||
m_drcDialog = new DIALOG_DRC_CONTROL( this, m_mainWindow );
|
||||
updatePointers();
|
||||
|
||||
// copy data retained in this DRC object into the m_ui DrcPanel:
|
||||
|
||||
PutValueInLocalUnits( *m_ui->m_SetTrackMinWidthCtrl,
|
||||
m_pcb->GetDesignSettings().m_TrackMinWidth );
|
||||
PutValueInLocalUnits( *m_ui->m_SetViaMinSizeCtrl,
|
||||
m_pcb->GetDesignSettings().m_ViasMinSize );
|
||||
PutValueInLocalUnits( *m_ui->m_SetMicroViakMinSizeCtrl,
|
||||
m_pcb->GetDesignSettings().m_MicroViasMinSize );
|
||||
|
||||
m_ui->m_CreateRptCtrl->SetValue( m_doCreateRptFile );
|
||||
m_ui->m_RptFilenameCtrl->SetValue( m_rptFilename );
|
||||
m_drcDialog->m_CreateRptCtrl->SetValue( m_doCreateRptFile );
|
||||
m_drcDialog->m_RptFilenameCtrl->SetValue( m_rptFilename );
|
||||
}
|
||||
else
|
||||
updatePointers();
|
||||
|
||||
m_ui->Show( true );
|
||||
m_drcDialog->Show( true );
|
||||
}
|
||||
|
||||
|
||||
void DRC::DestroyDialog( int aReason )
|
||||
{
|
||||
if( m_ui )
|
||||
if( m_drcDialog )
|
||||
{
|
||||
if( aReason == wxID_OK )
|
||||
{
|
||||
// if user clicked OK, save his choices in this DRC object.
|
||||
m_doCreateRptFile = m_ui->m_CreateRptCtrl->GetValue();
|
||||
m_rptFilename = m_ui->m_RptFilenameCtrl->GetValue();
|
||||
m_doCreateRptFile = m_drcDialog->m_CreateRptCtrl->GetValue();
|
||||
m_rptFilename = m_drcDialog->m_RptFilenameCtrl->GetValue();
|
||||
}
|
||||
|
||||
m_ui->Destroy();
|
||||
m_ui = 0;
|
||||
m_drcDialog->Destroy();
|
||||
m_drcDialog = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -101,7 +92,7 @@ DRC::DRC( PCB_EDIT_FRAME* aPcbWindow )
|
|||
{
|
||||
m_mainWindow = aPcbWindow;
|
||||
m_pcb = aPcbWindow->GetBoard();
|
||||
m_ui = 0;
|
||||
m_drcDialog = NULL;
|
||||
|
||||
// establish initial values for everything:
|
||||
m_doPad2PadTest = true; // enable pad to pad clearance tests
|
||||
|
@ -176,6 +167,10 @@ int DRC::Drc( ZONE_CONTAINER* aArea, int aCornerIndex )
|
|||
|
||||
void DRC::RunTests( wxTextCtrl* aMessages )
|
||||
{
|
||||
// be sure m_pcb is the current board, not a old one
|
||||
// ( the board can be reloaded )
|
||||
m_pcb = m_mainWindow->GetBoard();
|
||||
|
||||
// Ensure ratsnest is up to date:
|
||||
if( (m_pcb->m_Status_Pcb & LISTE_RATSNEST_ITEM_OK) == 0 )
|
||||
{
|
||||
|
@ -199,7 +194,7 @@ void DRC::RunTests( wxTextCtrl* aMessages )
|
|||
if( aMessages )
|
||||
aMessages->AppendText( _( "Aborting\n" ) );
|
||||
|
||||
// update the m_ui listboxes
|
||||
// update the m_drcDialog listboxes
|
||||
updatePointers();
|
||||
|
||||
return;
|
||||
|
@ -279,7 +274,7 @@ void DRC::RunTests( wxTextCtrl* aMessages )
|
|||
|
||||
testTexts();
|
||||
|
||||
// update the m_ui listboxes
|
||||
// update the m_drcDialog listboxes
|
||||
updatePointers();
|
||||
|
||||
if( aMessages )
|
||||
|
@ -295,7 +290,7 @@ void DRC::ListUnconnectedPads()
|
|||
{
|
||||
testUnconnected();
|
||||
|
||||
// update the m_ui listboxes
|
||||
// update the m_drcDialog listboxes
|
||||
updatePointers();
|
||||
}
|
||||
|
||||
|
@ -305,10 +300,10 @@ void DRC::updatePointers()
|
|||
// update my pointers, m_mainWindow is the only unchangeable one
|
||||
m_pcb = m_mainWindow->GetBoard();
|
||||
|
||||
if( m_ui ) // Use diag list boxes only in DRC dialog
|
||||
if( m_drcDialog ) // Use diag list boxes only in DRC dialog
|
||||
{
|
||||
m_ui->m_ClearanceListBox->SetList( new DRC_LIST_MARKERS( m_pcb ) );
|
||||
m_ui->m_UnconnectedListBox->SetList( new DRC_LIST_UNCONNECTED( &m_unconnected ) );
|
||||
m_drcDialog->m_ClearanceListBox->SetList( new DRC_LIST_MARKERS( m_pcb ) );
|
||||
m_drcDialog->m_UnconnectedListBox->SetList( new DRC_LIST_UNCONNECTED( &m_unconnected ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -955,7 +950,7 @@ bool DRC::doPadToPadsDrc( D_PAD* aRefPad, D_PAD** aStart, D_PAD** aEnd, int x_li
|
|||
if( pad->PadNameEqual( aRefPad ) )
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// if either pad has no drill and is only on technical layers, not a clearance violation
|
||||
if( ( ( pad->GetLayerSet() & layerMask ) == 0 && !pad->GetDrillSize().x ) ||
|
||||
( ( aRefPad->GetLayerSet() & layerMask ) == 0 && !aRefPad->GetDrillSize().x ) )
|
||||
|
|
|
@ -195,7 +195,7 @@ private:
|
|||
|
||||
PCB_EDIT_FRAME* m_mainWindow;
|
||||
BOARD* m_pcb;
|
||||
DIALOG_DRC_CONTROL* m_ui;
|
||||
DIALOG_DRC_CONTROL* m_drcDialog;
|
||||
|
||||
DRC_LIST m_unconnected; ///< list of unconnected pads, as DRC_ITEMs
|
||||
|
||||
|
|
Loading…
Reference in New Issue