Improve selection behavior of DRC markers in DRC dialog list
Fixes: lp:1813373 * https://bugs.launchpad.net/kicad/+bug/1813373
This commit is contained in:
parent
c1ee395303
commit
3d9b5daf9c
|
@ -320,22 +320,8 @@ void DIALOG_DRC_CONTROL::OnLeftDClickClearance( wxMouseEvent& event )
|
|||
|
||||
if( selection != wxNOT_FOUND )
|
||||
{
|
||||
// Find the selected MARKER in the PCB, position cursor there.
|
||||
// Then close the dialog.
|
||||
const DRC_ITEM* item = m_ClearanceListBox->GetItem( selection );
|
||||
|
||||
if( item )
|
||||
if( focusOnItem( m_ClearanceListBox->GetItem( selection ) ) )
|
||||
{
|
||||
auto pos = item->GetPointA();
|
||||
|
||||
if( auto marker = item->GetParent() )
|
||||
pos = marker->GetPos();
|
||||
|
||||
// When selecting a item, center it on GAL and just move the graphic
|
||||
// cursor in legacy mode gives the best result
|
||||
bool center = m_brdEditor->IsGalCanvasActive() ? true : false;
|
||||
m_brdEditor->FocusOnLocation( pos, true, center );
|
||||
|
||||
if( !IsModal() )
|
||||
{
|
||||
// turn control over to m_brdEditor, hide this DIALOG_DRC_CONTROL window,
|
||||
|
@ -354,19 +340,62 @@ void DIALOG_DRC_CONTROL::OnLeftDClickClearance( wxMouseEvent& event )
|
|||
void DIALOG_DRC_CONTROL::OnRightUpFootprints( wxMouseEvent& event )
|
||||
{
|
||||
// popup menu to go to either of the items listed in the DRC_ITEM.
|
||||
// Check if user right-clicked on a different item
|
||||
int selection = m_FootprintsListBox->HitTest( event.GetPosition() );
|
||||
|
||||
int selection = m_FootprintsListBox->GetSelection();
|
||||
if( selection == wxNOT_FOUND )
|
||||
selection = m_FootprintsListBox->GetSelection();
|
||||
else
|
||||
m_FootprintsListBox->SetSelection( selection );
|
||||
|
||||
if( selection != wxNOT_FOUND )
|
||||
doSelectionMenu( m_FootprintsListBox->GetItem( selection ) );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_DRC_CONTROL::OnLeftUpClearance( wxMouseEvent& event )
|
||||
{
|
||||
int selection = m_ClearanceListBox->GetSelection();
|
||||
|
||||
if( selection != wxNOT_FOUND )
|
||||
focusOnItem( m_ClearanceListBox->GetItem( selection ) );
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_DRC_CONTROL::focusOnItem( const DRC_ITEM* aItem )
|
||||
{
|
||||
if( !aItem )
|
||||
return false;
|
||||
|
||||
auto toolmgr = m_brdEditor->GetToolManager();
|
||||
auto pos = aItem->GetPointA();
|
||||
auto marker = static_cast<MARKER_PCB*>( aItem->GetParent() );
|
||||
|
||||
if( marker )
|
||||
{
|
||||
pos = marker->GetPos();
|
||||
|
||||
toolmgr->RunAction( PCB_ACTIONS::selectionClear, true );
|
||||
toolmgr->RunAction( PCB_ACTIONS::selectItem, true, marker );
|
||||
}
|
||||
|
||||
toolmgr->GetView()->SetCenter( pos );
|
||||
m_brdEditor->GetCanvas()->Refresh();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_DRC_CONTROL::OnRightUpUnconnected( wxMouseEvent& event )
|
||||
{
|
||||
// popup menu to go to either of the items listed in the DRC_ITEM.
|
||||
// Check if user right-clicked on a different item
|
||||
int selection = m_UnconnectedListBox->HitTest( event.GetPosition() );
|
||||
|
||||
int selection = m_UnconnectedListBox->GetSelection();
|
||||
if( selection == wxNOT_FOUND )
|
||||
selection = m_UnconnectedListBox->GetSelection();
|
||||
else
|
||||
m_UnconnectedListBox->SetSelection( selection );
|
||||
|
||||
if( selection != wxNOT_FOUND )
|
||||
doSelectionMenu( m_UnconnectedListBox->GetItem( selection ) );
|
||||
|
@ -376,8 +405,13 @@ void DIALOG_DRC_CONTROL::OnRightUpUnconnected( wxMouseEvent& event )
|
|||
void DIALOG_DRC_CONTROL::OnRightUpClearance( wxMouseEvent& event )
|
||||
{
|
||||
// popup menu to go to either of the items listed in the DRC_ITEM.
|
||||
// Check if user right-clicked on a different item
|
||||
int selection = m_ClearanceListBox->HitTest( event.GetPosition() );
|
||||
|
||||
int selection = m_ClearanceListBox->GetSelection();
|
||||
if( selection == wxNOT_FOUND )
|
||||
selection = m_ClearanceListBox->GetSelection();
|
||||
else
|
||||
m_ClearanceListBox->SetSelection( selection );
|
||||
|
||||
if( selection != wxNOT_FOUND )
|
||||
doSelectionMenu( m_ClearanceListBox->GetItem( selection ) );
|
||||
|
@ -387,15 +421,29 @@ void DIALOG_DRC_CONTROL::OnRightUpClearance( wxMouseEvent& event )
|
|||
void DIALOG_DRC_CONTROL::doSelectionMenu( const DRC_ITEM* aItem )
|
||||
{
|
||||
// popup menu to go to either of the items listed in the DRC_ITEM.
|
||||
|
||||
BOARD_ITEM* first = aItem->GetMainItem( m_brdEditor->GetBoard() );
|
||||
BOARD_ITEM* second = nullptr;
|
||||
|
||||
GENERAL_COLLECTOR items;
|
||||
|
||||
items.Append( aItem->GetMainItem( m_brdEditor->GetBoard() ) );
|
||||
items.Append( first );
|
||||
|
||||
if( aItem->HasSecondItem() )
|
||||
items.Append( aItem->GetAuxiliaryItem( m_brdEditor->GetBoard() ) );
|
||||
{
|
||||
second = aItem->GetAuxiliaryItem( m_brdEditor->GetBoard() );
|
||||
items.Append( second );
|
||||
}
|
||||
|
||||
WINDOW_THAWER thawer( m_brdEditor );
|
||||
m_brdEditor->GetToolManager()->RunAction( PCB_ACTIONS::selectionMenu, true, &items );
|
||||
|
||||
// If we got an item, focus on it
|
||||
BOARD_ITEM* selection = m_brdEditor->GetCurItem();
|
||||
|
||||
if( selection && ( selection == first || selection == second ) )
|
||||
m_brdEditor->GetToolManager()->GetView()->SetCenter( selection->GetPosition() );
|
||||
|
||||
m_brdEditor->GetCanvas()->Refresh();
|
||||
}
|
||||
|
||||
|
@ -410,14 +458,8 @@ void DIALOG_DRC_CONTROL::OnLeftDClickFootprints( wxMouseEvent& event )
|
|||
{
|
||||
// Find the selected DRC_ITEM in the listbox, position cursor there.
|
||||
// Then hide the dialog.
|
||||
const DRC_ITEM* item = m_FootprintsListBox->GetItem( selection );
|
||||
if( item )
|
||||
if( focusOnItem( m_FootprintsListBox->GetItem( selection ) ) )
|
||||
{
|
||||
// When selecting a item, center it on GAL and just move the graphic
|
||||
// cursor in legacy mode gives the best result
|
||||
bool center = m_brdEditor->IsGalCanvasActive() ? true : false;
|
||||
m_brdEditor->FocusOnLocation( item->GetPointA(), true, center );
|
||||
|
||||
if( !IsModal() )
|
||||
{
|
||||
Show( false );
|
||||
|
@ -439,18 +481,12 @@ void DIALOG_DRC_CONTROL::OnLeftDClickUnconnected( wxMouseEvent& event )
|
|||
|
||||
if( selection != wxNOT_FOUND )
|
||||
{
|
||||
// Find the selected DRC_ITEM in the listbox, position cursor there.
|
||||
// Then hide the dialog.
|
||||
const DRC_ITEM* item = m_UnconnectedListBox->GetItem( selection );
|
||||
if( item )
|
||||
if( focusOnItem( m_UnconnectedListBox->GetItem( selection ) ) )
|
||||
{
|
||||
// When selecting a item, center it on GAL and just move the graphic
|
||||
// cursor in legacy mode gives the best result
|
||||
bool center = m_brdEditor->IsGalCanvasActive() ? true : false;
|
||||
m_brdEditor->FocusOnLocation( item->GetPointA(), true, center );
|
||||
|
||||
if( !IsModal() )
|
||||
{
|
||||
// turn control over to m_brdEditor, hide this DIALOG_DRC_CONTROL window,
|
||||
// no destruction so we can preserve listbox cursor
|
||||
Show( false );
|
||||
|
||||
// We do not want the clarify selection popup when releasing the
|
||||
|
@ -462,6 +498,15 @@ void DIALOG_DRC_CONTROL::OnLeftDClickUnconnected( wxMouseEvent& event )
|
|||
}
|
||||
|
||||
|
||||
void DIALOG_DRC_CONTROL::OnLeftUpUnconnected( wxMouseEvent& event )
|
||||
{
|
||||
int selection = m_UnconnectedListBox->GetSelection();
|
||||
|
||||
if( selection != wxNOT_FOUND )
|
||||
focusOnItem( m_UnconnectedListBox->GetItem( selection ) );
|
||||
}
|
||||
|
||||
|
||||
/* called when switching from Error list to Unconnected list
|
||||
* To avoid mistakes, the current marker is selection is cleared
|
||||
*/
|
||||
|
@ -487,20 +532,7 @@ void DIALOG_DRC_CONTROL::OnMarkerSelectionEvent( wxCommandEvent& event )
|
|||
m_DeleteCurrentMarkerButton->Enable( true );
|
||||
|
||||
// Find the selected DRC_ITEM in the listbox, position cursor there.
|
||||
const DRC_ITEM* item = m_ClearanceListBox->GetItem( selection );
|
||||
if( item )
|
||||
{
|
||||
auto pos = item->GetPointA();
|
||||
|
||||
if( auto marker = item->GetParent() )
|
||||
pos = marker->GetPos();
|
||||
|
||||
// When selecting a item, center it on GAL and just move the graphic
|
||||
// cursor in legacy mode gives the best result
|
||||
bool center = m_brdEditor->IsGalCanvasActive() ? true : false;
|
||||
m_brdEditor->FocusOnLocation( pos, false, center );
|
||||
RedrawDrawPanel();
|
||||
}
|
||||
focusOnItem( m_ClearanceListBox->GetItem( selection ) );
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
|
@ -517,16 +549,7 @@ void DIALOG_DRC_CONTROL::OnUnconnectedSelectionEvent( wxCommandEvent& event )
|
|||
m_DeleteCurrentMarkerButton->Enable( true );
|
||||
|
||||
// Find the selected DRC_ITEM in the listbox, position cursor there.
|
||||
const DRC_ITEM* item = m_UnconnectedListBox->GetItem( selection );
|
||||
|
||||
if( item )
|
||||
{
|
||||
// When selecting a item, center it on GAL and just move the graphic
|
||||
// cursor in legacy mode gives the best result
|
||||
bool center = m_brdEditor->IsGalCanvasActive() ? true : false;
|
||||
m_brdEditor->FocusOnLocation( item->GetPointA(), false, center );
|
||||
RedrawDrawPanel();
|
||||
}
|
||||
focusOnItem( m_UnconnectedListBox->GetItem( selection ) );
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
|
@ -543,16 +566,7 @@ void DIALOG_DRC_CONTROL::OnFootprintsSelectionEvent( wxCommandEvent& event )
|
|||
m_DeleteCurrentMarkerButton->Enable( true );
|
||||
|
||||
// Find the selected DRC_ITEM in the listbox, position cursor there.
|
||||
const DRC_ITEM* item = m_FootprintsListBox->GetItem( selection );
|
||||
|
||||
if( item )
|
||||
{
|
||||
// When selecting a item, center it on GAL and just move the graphic
|
||||
// cursor in legacy mode gives the best result
|
||||
bool center = m_brdEditor->IsGalCanvasActive() ? true : false;
|
||||
m_brdEditor->FocusOnLocation( item->GetPointA(), false, center );
|
||||
RedrawDrawPanel();
|
||||
}
|
||||
focusOnItem( m_FootprintsListBox->GetItem( selection ) );
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
|
|
|
@ -115,12 +115,18 @@ private:
|
|||
/// wxEVT_LEFT_DCLICK event handler for ID_CLEARANCE_LIST
|
||||
void OnLeftDClickClearance( wxMouseEvent& event ) override;
|
||||
|
||||
/// wxEVT_LEFT_UP event handler for ID_CLEARANCE_LIST
|
||||
void OnLeftUpClearance( wxMouseEvent& event ) override;
|
||||
|
||||
/// wxEVT_RIGHT_UP event handler for ID_CLEARANCE_LIST
|
||||
void OnRightUpClearance( wxMouseEvent& event ) override;
|
||||
|
||||
/// wxEVT_LEFT_DCLICK event handler for ID_UNCONNECTED_LIST
|
||||
void OnLeftDClickUnconnected( wxMouseEvent& event ) override;
|
||||
|
||||
/// wxEVT_LEFT_UP event handler for ID_UNCONNECTED_LIST
|
||||
void OnLeftUpUnconnected( wxMouseEvent& event ) override;
|
||||
|
||||
/// wxEVT_RIGHT_UP event handler for ID_UNCONNECTED_LIST
|
||||
void OnRightUpUnconnected( wxMouseEvent& event ) override;
|
||||
|
||||
|
@ -149,6 +155,8 @@ private:
|
|||
/// in the DRC_ITEM.
|
||||
void doSelectionMenu( const DRC_ITEM* aItem );
|
||||
|
||||
bool focusOnItem( const DRC_ITEM* aItem );
|
||||
|
||||
BOARD* m_currentBoard; // the board currently on test
|
||||
DRC* m_tester;
|
||||
PCB_EDIT_FRAME* m_brdEditor;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
|
@ -14,147 +14,147 @@
|
|||
DIALOG_DRC_CONTROL_BASE::DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
|
||||
{
|
||||
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
|
||||
|
||||
|
||||
wxBoxSizer* m_MainSizer;
|
||||
m_MainSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxGridBagSizer* gbSizer1;
|
||||
gbSizer1 = new wxGridBagSizer( 0, 10 );
|
||||
gbSizer1->SetFlexibleDirection( wxBOTH );
|
||||
gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerOptions;
|
||||
bSizerOptions = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
wxFlexGridSizer* fgMinValuesSizer;
|
||||
fgMinValuesSizer = new wxFlexGridSizer( 4, 3, 0, 0 );
|
||||
fgMinValuesSizer->AddGrowableCol( 1 );
|
||||
fgMinValuesSizer->SetFlexibleDirection( wxHORIZONTAL );
|
||||
fgMinValuesSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
m_TrackMinWidthTitle = new wxStaticText( this, wxID_ANY, _("Minimum 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|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_SetTrackMinWidthCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgMinValuesSizer->Add( m_SetTrackMinWidthCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
|
||||
m_TrackMinWidthUnit = new wxStaticText( this, 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, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_ViaMinTitle = new wxStaticText( this, wxID_ANY, _("Minimum 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|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_SetViaMinSizeCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgMinValuesSizer->Add( m_SetViaMinSizeCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 3 );
|
||||
|
||||
|
||||
m_ViaMinUnit = new wxStaticText( this, 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, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_MicroViaMinTitle = new wxStaticText( this, wxID_ANY, _("Minimum 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|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_SetMicroViakMinSizeCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
fgMinValuesSizer->Add( m_SetMicroViakMinSizeCtrl, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 3 );
|
||||
|
||||
|
||||
m_MicroViaMinUnit = new wxStaticText( this, 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, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerOptions->Add( fgMinValuesSizer, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
|
||||
|
||||
|
||||
wxBoxSizer* bSizerOptSettings;
|
||||
bSizerOptSettings = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
|
||||
m_cbRefillZones = new wxCheckBox( this, wxID_ANY, _("Refill all zones before performing DRC"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerOptSettings->Add( m_cbRefillZones, 0, wxALL, 5 );
|
||||
|
||||
|
||||
m_cbReportAllTrackErrors = new wxCheckBox( this, wxID_ANY, _("Report all errors for tracks (slower)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_cbReportAllTrackErrors->SetToolTip( _("If selected, all DRC violations for tracks will be reported. This can be slow for complicated designs.\n\nIf unselected, only the first DRC violation will be reported for each track connection.") );
|
||||
|
||||
|
||||
bSizerOptSettings->Add( m_cbReportAllTrackErrors, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_cbReportTracksToZonesErrors = new wxCheckBox( this, wxID_ANY, _("Test tracks against filled copper areas (very slow)"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_cbReportTracksToZonesErrors->SetToolTip( _("If selected, tracks will be tested against copper zones. \nIf copper zones are up to date, this test should be not needed.\n\nThis test can be *very slow* for complicated designs.") );
|
||||
|
||||
|
||||
bSizerOptSettings->Add( m_cbReportTracksToZonesErrors, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_cbTestFootprints = new wxCheckBox( this, wxID_ANY, _("Test footprints against schematic"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
bSizerOptSettings->Add( m_cbTestFootprints, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
bSizerOptions->Add( bSizerOptSettings, 1, wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
gbSizer1->Add( bSizerOptions, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxEXPAND|wxRIGHT|wxLEFT, 5 );
|
||||
|
||||
|
||||
m_Messages = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxTE_MULTILINE|wxTE_READONLY );
|
||||
m_Messages->SetMinSize( wxSize( 280,-1 ) );
|
||||
|
||||
|
||||
gbSizer1->Add( m_Messages, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxEXPAND|wxTOP|wxLEFT, 5 );
|
||||
|
||||
|
||||
wxFlexGridSizer* fgSizerRpt;
|
||||
fgSizerRpt = new wxFlexGridSizer( 0, 3, 0, 0 );
|
||||
fgSizerRpt->AddGrowableCol( 1 );
|
||||
fgSizerRpt->SetFlexibleDirection( wxBOTH );
|
||||
fgSizerRpt->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
|
||||
m_CreateRptCtrl = new wxCheckBox( this, ID_CHECKBOX_RPT_FILE, _("Create report file:"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_CreateRptCtrl->SetToolTip( _("Enable writing report to this file") );
|
||||
|
||||
|
||||
fgSizerRpt->Add( m_CreateRptCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
|
||||
|
||||
|
||||
m_RptFilenameCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_RptFilenameCtrl->SetToolTip( _("Enter the report filename") );
|
||||
m_RptFilenameCtrl->SetMinSize( wxSize( 180,-1 ) );
|
||||
|
||||
|
||||
fgSizerRpt->Add( m_RptFilenameCtrl, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxBOTTOM, 3 );
|
||||
|
||||
m_BrowseButton = new wxBitmapButton( this, ID_BUTTON_BROWSE_RPT_FILE, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
|
||||
m_BrowseButton = new wxBitmapButton( this, ID_BUTTON_BROWSE_RPT_FILE, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_BrowseButton->SetMinSize( wxSize( 30,28 ) );
|
||||
|
||||
|
||||
fgSizerRpt->Add( m_BrowseButton, 0, wxALIGN_CENTER_VERTICAL, 2 );
|
||||
|
||||
|
||||
|
||||
|
||||
gbSizer1->Add( fgSizerRpt, wxGBPosition( 1, 0 ), wxGBSpan( 1, 3 ), wxEXPAND|wxTOP|wxRIGHT, 7 );
|
||||
|
||||
|
||||
|
||||
|
||||
gbSizer1->AddGrowableCol( 0 );
|
||||
gbSizer1->AddGrowableCol( 1 );
|
||||
|
||||
|
||||
m_MainSizer->Add( gbSizer1, 0, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
m_Notebook = new wxNotebook( this, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_Notebook->SetMinSize( wxSize( 640,280 ) );
|
||||
|
||||
|
||||
m_panelViolations = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizerViolationsBox;
|
||||
bSizerViolationsBox = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_ClearanceListBox = new DRCLISTBOX( m_panelViolations, ID_CLEARANCE_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
|
||||
m_ClearanceListBox = new DRCLISTBOX( m_panelViolations, ID_CLEARANCE_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
m_ClearanceListBox->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
|
||||
m_ClearanceListBox->SetToolTip( _("Left-click to center on problem marker. Right-click to highlight items.") );
|
||||
|
||||
|
||||
bSizerViolationsBox->Add( m_ClearanceListBox, 1, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
m_panelViolations->SetSizer( bSizerViolationsBox );
|
||||
m_panelViolations->Layout();
|
||||
bSizerViolationsBox->Fit( m_panelViolations );
|
||||
|
@ -162,13 +162,13 @@ DIALOG_DRC_CONTROL_BASE::DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID i
|
|||
m_panelUnconnectedItems = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizerUnconnectedBox;
|
||||
bSizerUnconnectedBox = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_UnconnectedListBox = new DRCLISTBOX( m_panelUnconnectedItems, ID_UNCONNECTED_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
|
||||
m_UnconnectedListBox = new DRCLISTBOX( m_panelUnconnectedItems, ID_UNCONNECTED_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
m_UnconnectedListBox->SetToolTip( _("Left-click to center on unconnected pair. Right-click to highlight unconnected items.") );
|
||||
|
||||
|
||||
bSizerUnconnectedBox->Add( m_UnconnectedListBox, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
m_panelUnconnectedItems->SetSizer( bSizerUnconnectedBox );
|
||||
m_panelUnconnectedItems->Layout();
|
||||
bSizerUnconnectedBox->Fit( m_panelUnconnectedItems );
|
||||
|
@ -176,43 +176,43 @@ DIALOG_DRC_CONTROL_BASE::DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID i
|
|||
m_panelFootprintWarnings = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizerFootprintsBox;
|
||||
bSizerFootprintsBox = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
m_FootprintsListBox = new DRCLISTBOX( m_panelFootprintWarnings, ID_FOOTPRINTS_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
|
||||
m_FootprintsListBox = new DRCLISTBOX( m_panelFootprintWarnings, ID_FOOTPRINTS_LIST, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 );
|
||||
bSizerFootprintsBox->Add( m_FootprintsListBox, 1, wxALL|wxEXPAND, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
m_panelFootprintWarnings->SetSizer( bSizerFootprintsBox );
|
||||
m_panelFootprintWarnings->Layout();
|
||||
bSizerFootprintsBox->Fit( m_panelFootprintWarnings );
|
||||
m_Notebook->AddPage( m_panelFootprintWarnings, _("Footprint Warnings (%d)"), false );
|
||||
|
||||
|
||||
m_MainSizer->Add( m_Notebook, 1, wxEXPAND|wxLEFT|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_sizerButtons = new wxBoxSizer( wxHORIZONTAL );
|
||||
|
||||
|
||||
m_DeleteCurrentMarkerButton = new wxButton( this, wxID_ANY, _("Delete Marker"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_sizerButtons->Add( m_DeleteCurrentMarkerButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
|
||||
|
||||
|
||||
m_DeleteAllMarkersButton = new wxButton( this, wxID_ANY, _("Delete All Markers"), wxDefaultPosition, wxDefaultSize, 0 );
|
||||
m_sizerButtons->Add( m_DeleteAllMarkersButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
m_sdbSizer1 = new wxStdDialogButtonSizer();
|
||||
m_sdbSizer1OK = new wxButton( this, wxID_OK );
|
||||
m_sdbSizer1->AddButton( m_sdbSizer1OK );
|
||||
m_sdbSizer1Cancel = new wxButton( this, wxID_CANCEL );
|
||||
m_sdbSizer1->AddButton( m_sdbSizer1Cancel );
|
||||
m_sdbSizer1->Realize();
|
||||
|
||||
|
||||
m_sizerButtons->Add( m_sdbSizer1, 1, wxEXPAND|wxALL, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
m_MainSizer->Add( m_sizerButtons, 0, wxEXPAND|wxLEFT, 5 );
|
||||
|
||||
|
||||
|
||||
|
||||
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 );
|
||||
|
@ -220,9 +220,11 @@ DIALOG_DRC_CONTROL_BASE::DIALOG_DRC_CONTROL_BASE( wxWindow* parent, wxWindowID i
|
|||
m_BrowseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnButtonBrowseRptFileClick ), NULL, this );
|
||||
m_Notebook->Connect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, wxNotebookEventHandler( DIALOG_DRC_CONTROL_BASE::OnChangingMarkerList ), NULL, this );
|
||||
m_ClearanceListBox->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftDClickClearance ), NULL, this );
|
||||
m_ClearanceListBox->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftUpClearance ), NULL, this );
|
||||
m_ClearanceListBox->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnMarkerSelectionEvent ), NULL, this );
|
||||
m_ClearanceListBox->Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnRightUpClearance ), NULL, this );
|
||||
m_UnconnectedListBox->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftDClickUnconnected ), NULL, this );
|
||||
m_UnconnectedListBox->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftUpUnconnected ), NULL, this );
|
||||
m_UnconnectedListBox->Connect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnUnconnectedSelectionEvent ), NULL, this );
|
||||
m_UnconnectedListBox->Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnRightUpUnconnected ), NULL, this );
|
||||
m_FootprintsListBox->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftDClickFootprints ), NULL, this );
|
||||
|
@ -243,9 +245,11 @@ DIALOG_DRC_CONTROL_BASE::~DIALOG_DRC_CONTROL_BASE()
|
|||
m_BrowseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnButtonBrowseRptFileClick ), NULL, this );
|
||||
m_Notebook->Disconnect( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, wxNotebookEventHandler( DIALOG_DRC_CONTROL_BASE::OnChangingMarkerList ), NULL, this );
|
||||
m_ClearanceListBox->Disconnect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftDClickClearance ), NULL, this );
|
||||
m_ClearanceListBox->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftUpClearance ), NULL, this );
|
||||
m_ClearanceListBox->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnMarkerSelectionEvent ), NULL, this );
|
||||
m_ClearanceListBox->Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnRightUpClearance ), NULL, this );
|
||||
m_UnconnectedListBox->Disconnect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftDClickUnconnected ), NULL, this );
|
||||
m_UnconnectedListBox->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftUpUnconnected ), NULL, this );
|
||||
m_UnconnectedListBox->Disconnect( wxEVT_COMMAND_LISTBOX_SELECTED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnUnconnectedSelectionEvent ), NULL, this );
|
||||
m_UnconnectedListBox->Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnRightUpUnconnected ), NULL, this );
|
||||
m_FootprintsListBox->Disconnect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( DIALOG_DRC_CONTROL_BASE::OnLeftDClickFootprints ), NULL, this );
|
||||
|
@ -255,5 +259,5 @@ DIALOG_DRC_CONTROL_BASE::~DIALOG_DRC_CONTROL_BASE()
|
|||
m_DeleteAllMarkersButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnDeleteAllClick ), NULL, this );
|
||||
m_sdbSizer1Cancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnCancelClick ), NULL, this );
|
||||
m_sdbSizer1OK->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_DRC_CONTROL_BASE::OnStartdrcClick ), NULL, this );
|
||||
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +1,11 @@
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// C++ code generated with wxFormBuilder (version Dec 30 2017)
|
||||
// C++ code generated with wxFormBuilder (version Oct 26 2018)
|
||||
// http://www.wxformbuilder.org/
|
||||
//
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __DIALOG_DRC_BASE_H__
|
||||
#define __DIALOG_DRC_BASE_H__
|
||||
#pragma once
|
||||
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
|
@ -23,10 +22,10 @@ class DRCLISTBOX;
|
|||
#include <wx/textctrl.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/listbox.h>
|
||||
|
@ -50,7 +49,7 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
{
|
||||
private:
|
||||
wxPanel* m_panelUnconnectedItems;
|
||||
|
||||
|
||||
protected:
|
||||
wxStaticText* m_TrackMinWidthTitle;
|
||||
wxStaticText* m_TrackMinWidthUnit;
|
||||
|
@ -75,7 +74,7 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
wxStdDialogButtonSizer* m_sdbSizer1;
|
||||
wxButton* m_sdbSizer1OK;
|
||||
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(); }
|
||||
|
@ -83,9 +82,11 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
virtual void OnButtonBrowseRptFileClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnChangingMarkerList( wxNotebookEvent& event ) { event.Skip(); }
|
||||
virtual void OnLeftDClickClearance( wxMouseEvent& event ) { event.Skip(); }
|
||||
virtual void OnLeftUpClearance( wxMouseEvent& event ) { event.Skip(); }
|
||||
virtual void OnMarkerSelectionEvent( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRightUpClearance( wxMouseEvent& event ) { event.Skip(); }
|
||||
virtual void OnLeftDClickUnconnected( wxMouseEvent& event ) { event.Skip(); }
|
||||
virtual void OnLeftUpUnconnected( wxMouseEvent& event ) { event.Skip(); }
|
||||
virtual void OnUnconnectedSelectionEvent( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnRightUpUnconnected( wxMouseEvent& event ) { event.Skip(); }
|
||||
virtual void OnLeftDClickFootprints( wxMouseEvent& event ) { event.Skip(); }
|
||||
|
@ -95,8 +96,8 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
virtual void OnDeleteAllClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnCancelClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnStartdrcClick( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
||||
|
||||
|
||||
|
||||
public:
|
||||
wxTextCtrl* m_SetTrackMinWidthCtrl;
|
||||
wxTextCtrl* m_SetViaMinSizeCtrl;
|
||||
|
@ -104,10 +105,9 @@ class DIALOG_DRC_CONTROL_BASE : public DIALOG_SHIM
|
|||
DRCLISTBOX* m_ClearanceListBox;
|
||||
DRCLISTBOX* m_UnconnectedListBox;
|
||||
DRCLISTBOX* m_FootprintsListBox;
|
||||
|
||||
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( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
|
||||
~DIALOG_DRC_CONTROL_BASE();
|
||||
|
||||
|
||||
};
|
||||
|
||||
#endif //__DIALOG_DRC_BASE_H__
|
||||
|
|
|
@ -579,7 +579,6 @@ bool SELECTION_TOOL::selectPoint( const VECTOR2I& aWhere, bool aOnDrag,
|
|||
|
||||
if( item )
|
||||
{
|
||||
toggleSelection( item );
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -1518,6 +1517,9 @@ BOARD_ITEM* SELECTION_TOOL::doSelectionMenu( GENERAL_COLLECTOR* aCollector,
|
|||
}
|
||||
getView()->Remove( &highlightGroup );
|
||||
|
||||
if( current )
|
||||
toggleSelection( current );
|
||||
|
||||
return current;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue