mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-13 17:53:11 +02:00
ADDED: menu items to control cross-probing from ERC
dialog. Fixes https://gitlab.com/kicad/code/kicad/-/issues/17916
This commit is contained in:
parent
3c5fb9d90d
commit
6e316d9faa
@ -42,6 +42,7 @@
|
||||
#include <id.h>
|
||||
#include <confirm.h>
|
||||
#include <widgets/wx_html_report_box.h>
|
||||
#include <widgets/std_bitmap_button.h>
|
||||
#include <dialogs/dialog_text_entry.h>
|
||||
#include <string_utils.h>
|
||||
#include <kiplatform/ui.h>
|
||||
@ -76,15 +77,15 @@ DIALOG_ERC::DIALOG_ERC( SCH_EDIT_FRAME* parent ) :
|
||||
m_running( false ),
|
||||
m_ercRun( false ),
|
||||
m_centerMarkerOnIdle( nullptr ),
|
||||
m_severities( 0 )
|
||||
m_crossprobe( true ),
|
||||
m_scroll_on_crossprobe( true )
|
||||
{
|
||||
m_currentSchematic = &parent->Schematic();
|
||||
|
||||
SetName( DIALOG_ERC_WINDOW_NAME ); // Set a window name to be able to find it
|
||||
KIPLATFORM::UI::SetFloatLevel( this );
|
||||
|
||||
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
|
||||
m_severities = cfg->m_Appearance.erc_severities;
|
||||
m_bMenu->SetBitmap( KiBitmapBundle( BITMAPS::config ) );
|
||||
|
||||
m_messages->SetImmediateMode();
|
||||
|
||||
@ -92,7 +93,7 @@ DIALOG_ERC::DIALOG_ERC( SCH_EDIT_FRAME* parent ) :
|
||||
|
||||
m_markerTreeModel = new ERC_TREE_MODEL( parent, m_markerDataView );
|
||||
m_markerDataView->AssociateModel( m_markerTreeModel );
|
||||
m_markerTreeModel->Update( m_markerProvider, m_severities );
|
||||
m_markerTreeModel->Update( m_markerProvider, getSeverities() );
|
||||
|
||||
m_ignoredList->InsertColumn( 0, wxEmptyString, wxLIST_FORMAT_LEFT, DEFAULT_SINGLE_COL_WIDTH );
|
||||
|
||||
@ -129,8 +130,11 @@ DIALOG_ERC::DIALOG_ERC( SCH_EDIT_FRAME* parent ) :
|
||||
|
||||
SetFocus();
|
||||
|
||||
syncCheckboxes();
|
||||
updateDisplayedCounts();
|
||||
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
|
||||
{
|
||||
m_crossprobe = cfg->m_ERCDialog.crossprobe;
|
||||
m_scroll_on_crossprobe = cfg->m_ERCDialog.scroll_on_crossprobe;
|
||||
}
|
||||
|
||||
// Now all widgets have the size fixed, call FinishDialogSettings
|
||||
finishDialogSettings();
|
||||
@ -148,7 +152,10 @@ DIALOG_ERC::~DIALOG_ERC()
|
||||
g_lastERCIgnored.push_back( { m_ignoredList->GetItemText( ii ), m_ignoredList->GetItemData( ii ) } );
|
||||
|
||||
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
|
||||
cfg->m_Appearance.erc_severities = m_severities;
|
||||
{
|
||||
cfg->m_ERCDialog.crossprobe = m_crossprobe;
|
||||
cfg->m_ERCDialog.scroll_on_crossprobe = m_scroll_on_crossprobe;
|
||||
}
|
||||
|
||||
m_markerTreeModel->DecRef();
|
||||
}
|
||||
@ -189,6 +196,59 @@ void DIALOG_ERC::UpdateAnnotationWarning()
|
||||
}
|
||||
|
||||
|
||||
int DIALOG_ERC::getSeverities()
|
||||
{
|
||||
int severities = 0;
|
||||
|
||||
if( m_showErrors->GetValue() )
|
||||
severities |= RPT_SEVERITY_ERROR;
|
||||
|
||||
if( m_showWarnings->GetValue() )
|
||||
severities |= RPT_SEVERITY_WARNING;
|
||||
|
||||
if( m_showExclusions->GetValue() )
|
||||
severities |= RPT_SEVERITY_EXCLUSION;
|
||||
|
||||
return severities;
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_ERC::OnMenu( wxCommandEvent& event )
|
||||
{
|
||||
// Build a pop menu:
|
||||
wxMenu menu;
|
||||
|
||||
menu.Append( 4206, _( "Cross-probe Selected Items" ),
|
||||
_( "Highlight corresponding items on canvas when selected in the ERC list" ),
|
||||
wxITEM_CHECK );
|
||||
menu.Check( 4206, m_crossprobe );
|
||||
|
||||
menu.Append( 4207, _( "Center on Cross-probe" ),
|
||||
_( "When cross-probing, scroll the canvas so that the item is visible" ),
|
||||
wxITEM_CHECK );
|
||||
menu.Check( 4207, m_scroll_on_crossprobe );
|
||||
|
||||
// menu_id is the selected submenu id from the popup menu or wxID_NONE
|
||||
int menu_id = m_bMenu->GetPopupMenuSelectionFromUser( menu );
|
||||
|
||||
if( menu_id == 0 || menu_id == 4206 )
|
||||
{
|
||||
m_crossprobe = !m_crossprobe;
|
||||
}
|
||||
else if( menu_id == 1 || menu_id == 4207 )
|
||||
{
|
||||
m_scroll_on_crossprobe = !m_scroll_on_crossprobe;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_ERC::TransferDataToWindow()
|
||||
{
|
||||
UpdateData();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool DIALOG_ERC::updateUI()
|
||||
{
|
||||
// If ERC checks ever get slow enough we'll want a progress indicator...
|
||||
@ -217,6 +277,13 @@ void DIALOG_ERC::Report( const wxString& aMessage )
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_ERC::UpdateData()
|
||||
{
|
||||
m_markerTreeModel->Update( m_markerProvider, getSeverities() );
|
||||
updateDisplayedCounts();
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_ERC::updateDisplayedCounts()
|
||||
{
|
||||
int numErrors = 0;
|
||||
@ -348,30 +415,14 @@ void DIALOG_ERC::OnCloseErcDialog( wxCloseEvent& aEvent )
|
||||
// Dialog is mode-less so let the parent know that it needs to be destroyed.
|
||||
if( !IsModal() && !IsQuasiModal() )
|
||||
{
|
||||
wxCommandEvent* evt = new wxCommandEvent( EDA_EVT_CLOSE_ERC_DIALOG, wxID_ANY );
|
||||
|
||||
wxWindow* parent = GetParent();
|
||||
|
||||
if( parent )
|
||||
wxQueueEvent( parent, evt );
|
||||
if( wxWindow* parent = GetParent() )
|
||||
wxQueueEvent( parent, new wxCommandEvent( EDA_EVT_CLOSE_ERC_DIALOG, wxID_ANY ) );
|
||||
}
|
||||
|
||||
aEvent.Skip();
|
||||
}
|
||||
|
||||
|
||||
static int RPT_SEVERITY_ALL = RPT_SEVERITY_WARNING | RPT_SEVERITY_ERROR | RPT_SEVERITY_EXCLUSION;
|
||||
|
||||
|
||||
void DIALOG_ERC::syncCheckboxes()
|
||||
{
|
||||
m_showAll->SetValue( m_severities == RPT_SEVERITY_ALL );
|
||||
m_showErrors->SetValue( m_severities & RPT_SEVERITY_ERROR );
|
||||
m_showWarnings->SetValue( m_severities & RPT_SEVERITY_WARNING );
|
||||
m_showExclusions->SetValue( m_severities & RPT_SEVERITY_EXCLUSION );
|
||||
}
|
||||
|
||||
|
||||
void DIALOG_ERC::OnLinkClicked( wxHtmlLinkEvent& event )
|
||||
{
|
||||
m_parent->OnAnnotate();
|
||||
@ -446,8 +497,7 @@ void DIALOG_ERC::OnRunERCClick( wxCommandEvent& event )
|
||||
}
|
||||
|
||||
if( m_cancelled )
|
||||
// @spellingerror
|
||||
m_messages->Report( _( "-------- ERC canceled by user.<br><br>" ), RPT_SEVERITY_INFO );
|
||||
m_messages->Report( _( "-------- ERC cancelled by user.<br><br>" ), RPT_SEVERITY_INFO );
|
||||
else
|
||||
m_messages->Report( _( "Done.<br><br>" ), RPT_SEVERITY_INFO );
|
||||
|
||||
@ -508,7 +558,7 @@ void DIALOG_ERC::testErc()
|
||||
}
|
||||
|
||||
// Update marker list:
|
||||
m_markerTreeModel->Update( m_markerProvider, m_severities );
|
||||
m_markerTreeModel->Update( m_markerProvider, getSeverities() );
|
||||
|
||||
// Display new markers from the current screen:
|
||||
for( SCH_ITEM* marker : m_parent->GetScreen()->Items().OfType( SCH_MARKER_T ) )
|
||||
@ -523,6 +573,12 @@ void DIALOG_ERC::testErc()
|
||||
|
||||
void DIALOG_ERC::OnERCItemSelected( wxDataViewEvent& aEvent )
|
||||
{
|
||||
if( !m_crossprobe )
|
||||
{
|
||||
aEvent.Skip();
|
||||
return;
|
||||
}
|
||||
|
||||
const KIID& itemID = RC_TREE_MODEL::ToUUID( aEvent.GetItem() );
|
||||
SCH_SHEET_PATH sheet;
|
||||
SCH_ITEM* item = m_parent->Schematic().ResolveItem( itemID, &sheet, true );
|
||||
@ -568,7 +624,7 @@ void DIALOG_ERC::OnERCItemSelected( wxDataViewEvent& aEvent )
|
||||
m_parent->RedrawScreen( m_parent->GetScreen()->m_ScrollCenter, false );
|
||||
}
|
||||
|
||||
m_parent->FocusOnItem( item );
|
||||
m_parent->FocusOnItem( item, m_scroll_on_crossprobe );
|
||||
redrawDrawPanel();
|
||||
}
|
||||
|
||||
@ -762,7 +818,7 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||
m_parent->GetCanvas()->GetView()->Update( marker );
|
||||
|
||||
// Update view
|
||||
if( m_severities & RPT_SEVERITY_EXCLUSION )
|
||||
if( getSeverities() & RPT_SEVERITY_EXCLUSION )
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->ValueChanged( node );
|
||||
else
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->DeleteCurrentItem( false );
|
||||
@ -788,7 +844,7 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||
}
|
||||
|
||||
// Rebuild model and view
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->Update( m_markerProvider, m_severities );
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->Update( m_markerProvider, getSeverities() );
|
||||
modified = true;
|
||||
break;
|
||||
|
||||
@ -804,7 +860,7 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||
}
|
||||
|
||||
// Rebuild model and view
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->Update( m_markerProvider, m_severities );
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->Update( m_markerProvider, getSeverities() );
|
||||
modified = true;
|
||||
break;
|
||||
|
||||
@ -830,7 +886,7 @@ void DIALOG_ERC::OnERCItemRClick( wxDataViewEvent& aEvent )
|
||||
ScreenList.DeleteMarkers( MARKER_BASE::MARKER_ERC, rcItem->GetErrorCode() );
|
||||
|
||||
// Rebuild model and view
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->Update( m_markerProvider, m_severities );
|
||||
static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->Update( m_markerProvider, getSeverities() );
|
||||
modified = true;
|
||||
}
|
||||
break;
|
||||
@ -956,7 +1012,7 @@ void DIALOG_ERC::ExcludeMarker( SCH_MARKER* aMarker )
|
||||
m_parent->GetCanvas()->GetView()->Update( marker );
|
||||
|
||||
// Update view
|
||||
if( m_severities & RPT_SEVERITY_EXCLUSION )
|
||||
if( getSeverities() & RPT_SEVERITY_EXCLUSION )
|
||||
m_markerTreeModel->ValueChanged( node );
|
||||
else
|
||||
m_markerTreeModel->DeleteCurrentItem( false );
|
||||
@ -976,28 +1032,14 @@ void DIALOG_ERC::OnEditViolationSeverities( wxHyperlinkEvent& aEvent )
|
||||
|
||||
void DIALOG_ERC::OnSeverity( wxCommandEvent& aEvent )
|
||||
{
|
||||
int flag = 0;
|
||||
|
||||
if( aEvent.GetEventObject() == m_showAll )
|
||||
flag = RPT_SEVERITY_ALL;
|
||||
else if( aEvent.GetEventObject() == m_showErrors )
|
||||
flag = RPT_SEVERITY_ERROR;
|
||||
else if( aEvent.GetEventObject() == m_showWarnings )
|
||||
flag = RPT_SEVERITY_WARNING;
|
||||
else if( aEvent.GetEventObject() == m_showExclusions )
|
||||
flag = RPT_SEVERITY_EXCLUSION;
|
||||
{
|
||||
m_showErrors->SetValue( true );
|
||||
m_showWarnings->SetValue( aEvent.IsChecked() );
|
||||
m_showExclusions->SetValue( aEvent.IsChecked() );
|
||||
}
|
||||
|
||||
if( aEvent.IsChecked() )
|
||||
m_severities |= flag;
|
||||
else if( aEvent.GetEventObject() == m_showAll )
|
||||
m_severities = RPT_SEVERITY_ERROR;
|
||||
else
|
||||
m_severities &= ~flag;
|
||||
|
||||
syncCheckboxes();
|
||||
|
||||
m_markerTreeModel->Update( m_markerProvider, m_severities );
|
||||
updateDisplayedCounts();
|
||||
UpdateData();
|
||||
}
|
||||
|
||||
|
||||
|
@ -49,6 +49,8 @@ public:
|
||||
DIALOG_ERC( SCH_EDIT_FRAME* parent );
|
||||
~DIALOG_ERC();
|
||||
|
||||
bool TransferDataToWindow() override;
|
||||
|
||||
// PROGRESS_REPORTER_BASE calls
|
||||
bool updateUI() override;
|
||||
void AdvancePhase( const wxString& aMessage ) override;
|
||||
@ -66,10 +68,14 @@ public:
|
||||
*/
|
||||
void ExcludeMarker( SCH_MARKER* aMarker = nullptr );
|
||||
|
||||
void UpdateData();
|
||||
void UpdateAnnotationWarning();
|
||||
|
||||
private:
|
||||
int getSeverities();
|
||||
|
||||
// from DIALOG_ERC_BASE:
|
||||
void OnMenu( wxCommandEvent& aEvent ) override;
|
||||
void OnCloseErcDialog( wxCloseEvent& event ) override;
|
||||
void OnRunERCClick( wxCommandEvent& event ) override;
|
||||
void OnDeleteOneClick( wxCommandEvent& event ) override;
|
||||
@ -92,8 +98,6 @@ private:
|
||||
|
||||
void testErc();
|
||||
|
||||
bool writeReport( const wxString& aFullFileName );
|
||||
|
||||
void deleteAllMarkers( bool aIncludeExclusions );
|
||||
|
||||
void syncCheckboxes();
|
||||
@ -114,7 +118,8 @@ private:
|
||||
|
||||
const SCH_MARKER* m_centerMarkerOnIdle;
|
||||
|
||||
int m_severities;
|
||||
bool m_crossprobe;
|
||||
bool m_scroll_on_crossprobe;
|
||||
};
|
||||
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
// PLEASE DO *NOT* EDIT THIS FILE!
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "widgets/std_bitmap_button.h"
|
||||
#include "widgets/wx_html_report_box.h"
|
||||
#include "widgets/wx_infobar.h"
|
||||
|
||||
@ -29,6 +30,24 @@ DIALOG_ERC_BASE::DIALOG_ERC_BASE( wxWindow* parent, wxWindowID id, const wxStrin
|
||||
wxBoxSizer* bMainSizer;
|
||||
bMainSizer = new wxBoxSizer( wxVERTICAL );
|
||||
|
||||
wxGridBagSizer* gbSizerOptions;
|
||||
gbSizerOptions = new wxGridBagSizer( 0, 0 );
|
||||
gbSizerOptions->SetFlexibleDirection( wxBOTH );
|
||||
gbSizerOptions->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
|
||||
|
||||
m_bMenu = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_bMenu->SetMinSize( wxSize( 30,30 ) );
|
||||
|
||||
gbSizerOptions->Add( m_bMenu, wxGBPosition( 0, 2 ), wxGBSpan( 2, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
|
||||
|
||||
|
||||
gbSizerOptions->AddGrowableCol( 0 );
|
||||
gbSizerOptions->AddGrowableCol( 1 );
|
||||
gbSizerOptions->AddGrowableRow( 0 );
|
||||
gbSizerOptions->AddGrowableRow( 1 );
|
||||
|
||||
bMainSizer->Add( gbSizerOptions, 0, wxEXPAND|wxLEFT, 5 );
|
||||
|
||||
m_runningResultsBook = new wxSimplebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
running = new wxPanel( m_runningResultsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
wxBoxSizer* bSizer14;
|
||||
@ -195,6 +214,7 @@ DIALOG_ERC_BASE::DIALOG_ERC_BASE( wxWindow* parent, wxWindowID id, const wxStrin
|
||||
|
||||
// Connect Events
|
||||
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_ERC_BASE::OnCloseErcDialog ) );
|
||||
m_bMenu->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ERC_BASE::OnMenu ), NULL, this );
|
||||
m_messages->Connect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( DIALOG_ERC_BASE::OnLinkClicked ), NULL, this );
|
||||
m_markerDataView->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( DIALOG_ERC_BASE::OnERCItemDClick ), NULL, this );
|
||||
m_markerDataView->Connect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( DIALOG_ERC_BASE::OnERCItemRClick ), NULL, this );
|
||||
@ -216,6 +236,7 @@ DIALOG_ERC_BASE::~DIALOG_ERC_BASE()
|
||||
{
|
||||
// Disconnect Events
|
||||
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_ERC_BASE::OnCloseErcDialog ) );
|
||||
m_bMenu->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_ERC_BASE::OnMenu ), NULL, this );
|
||||
m_messages->Disconnect( wxEVT_COMMAND_HTML_LINK_CLICKED, wxHtmlLinkEventHandler( DIALOG_ERC_BASE::OnLinkClicked ), NULL, this );
|
||||
m_markerDataView->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_ACTIVATED, wxDataViewEventHandler( DIALOG_ERC_BASE::OnERCItemDClick ), NULL, this );
|
||||
m_markerDataView->Disconnect( wxEVT_COMMAND_DATAVIEW_ITEM_CONTEXT_MENU, wxDataViewEventHandler( DIALOG_ERC_BASE::OnERCItemRClick ), NULL, this );
|
||||
|
@ -14,7 +14,7 @@
|
||||
<property name="embedded_files_path">res</property>
|
||||
<property name="encoding">UTF-8</property>
|
||||
<property name="file">dialog_erc_base</property>
|
||||
<property name="first_id">1000</property>
|
||||
<property name="first_id">7100</property>
|
||||
<property name="internationalize">1</property>
|
||||
<property name="lua_skip_events">1</property>
|
||||
<property name="lua_ui_table">UI</property>
|
||||
@ -135,6 +135,101 @@
|
||||
<property name="name">bMainSizer</property>
|
||||
<property name="orient">wxVERTICAL</property>
|
||||
<property name="permission">none</property>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxLEFT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxGridBagSizer" expanded="true">
|
||||
<property name="empty_cell_size"></property>
|
||||
<property name="flexible_direction">wxBOTH</property>
|
||||
<property name="growablecols">0,1</property>
|
||||
<property name="growablerows">0,1</property>
|
||||
<property name="hgap">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">gbSizerOptions</property>
|
||||
<property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
|
||||
<property name="permission">none</property>
|
||||
<property name="vgap">0</property>
|
||||
<object class="gbsizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">2</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="row">0</property>
|
||||
<property name="rowspan">2</property>
|
||||
<object class="wxBitmapButton" expanded="true">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer">0</property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position">0</property>
|
||||
<property name="aui_row">0</property>
|
||||
<property name="auth_needed">0</property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="bitmap"></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="current"></property>
|
||||
<property name="default">0</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="disabled"></property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="drag_accept_files">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="focus"></property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="label">Refresh Grouping</property>
|
||||
<property name="margins"></property>
|
||||
<property name="markup">0</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">30,30</property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_bMenu</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="position"></property>
|
||||
<property name="pressed"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="style"></property>
|
||||
<property name="subclass">STD_BITMAP_BUTTON; widgets/std_bitmap_button.h; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="validator_data_type"></property>
|
||||
<property name="validator_style">wxFILTER_NONE</property>
|
||||
<property name="validator_type">wxDefaultValidator</property>
|
||||
<property name="validator_variable"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
<event name="OnButtonClick">OnMenu</event>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxEXPAND|wxTOP|wxRIGHT</property>
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <wx/artprov.h>
|
||||
#include <wx/xrc/xmlres.h>
|
||||
#include <wx/intl.h>
|
||||
class STD_BITMAP_BUTTON;
|
||||
class WX_HTML_REPORT_BOX;
|
||||
class WX_INFOBAR;
|
||||
|
||||
@ -20,13 +21,16 @@ class WX_INFOBAR;
|
||||
#include <wx/colour.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/string.h>
|
||||
#include <wx/bmpbuttn.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/html/htmlwin.h>
|
||||
#include <wx/gauge.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/panel.h>
|
||||
#include <wx/bitmap.h>
|
||||
#include <wx/image.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/dataview.h>
|
||||
#include <wx/listctrl.h>
|
||||
@ -35,12 +39,11 @@ class WX_INFOBAR;
|
||||
#include <wx/stattext.h>
|
||||
#include <wx/checkbox.h>
|
||||
#include <widgets/number_badge.h>
|
||||
#include <wx/button.h>
|
||||
#include <wx/dialog.h>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define ID_ERASE_DRC_MARKERS 1000
|
||||
#define ID_ERASE_DRC_MARKERS 7100
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
/// Class DIALOG_ERC_BASE
|
||||
@ -51,6 +54,7 @@ class DIALOG_ERC_BASE : public DIALOG_SHIM
|
||||
|
||||
protected:
|
||||
WX_INFOBAR* m_infoBar;
|
||||
STD_BITMAP_BUTTON* m_bMenu;
|
||||
wxSimplebook* m_runningResultsBook;
|
||||
wxPanel* running;
|
||||
wxNotebook* m_runningNotebook;
|
||||
@ -82,6 +86,7 @@ class DIALOG_ERC_BASE : public DIALOG_SHIM
|
||||
|
||||
// Virtual event handlers, override them in your derived class
|
||||
virtual void OnCloseErcDialog( wxCloseEvent& event ) { event.Skip(); }
|
||||
virtual void OnMenu( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnLinkClicked( wxHtmlLinkEvent& event ) { event.Skip(); }
|
||||
virtual void OnERCItemDClick( wxDataViewEvent& event ) { event.Skip(); }
|
||||
virtual void OnERCItemRClick( wxDataViewEvent& event ) { event.Skip(); }
|
||||
|
@ -189,9 +189,6 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
|
||||
m_params.emplace_back( new PARAM<int>( "appearance.edit_label_height",
|
||||
&m_Appearance.edit_label_height, -1 ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<int>( "appearance.erc_severities",
|
||||
&m_Appearance.erc_severities, RPT_SEVERITY_ERROR | RPT_SEVERITY_WARNING ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "appearance.footprint_preview",
|
||||
&m_Appearance.footprint_preview, true ) );
|
||||
|
||||
@ -591,6 +588,12 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
|
||||
m_params.emplace_back( new PARAM<int>( "symbol_chooser.sort_mode",
|
||||
&m_SymChooserPanel.sort_mode, 0 ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "ERC.crossprobe",
|
||||
&m_ERCDialog.crossprobe, true ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "ERC.scroll_on_crossprobe",
|
||||
&m_ERCDialog.scroll_on_crossprobe, true ) );
|
||||
|
||||
m_params.emplace_back( new PARAM<bool>( "import_graphics.interactive_placement",
|
||||
&m_ImportGraphics.interactive_placement, true ) );
|
||||
|
||||
|
@ -68,7 +68,6 @@ public:
|
||||
int edit_label_width;
|
||||
int edit_label_height;
|
||||
bool edit_label_multiple;
|
||||
int erc_severities;
|
||||
bool footprint_preview;
|
||||
bool print_sheet_reference;
|
||||
wxString default_font;
|
||||
@ -265,6 +264,12 @@ public:
|
||||
int sort_mode;
|
||||
};
|
||||
|
||||
struct DIALOG_ERC
|
||||
{
|
||||
bool crossprobe;
|
||||
bool scroll_on_crossprobe;
|
||||
};
|
||||
|
||||
struct DIALOG_IMPORT_GRAPHICS
|
||||
{
|
||||
bool interactive_placement;
|
||||
@ -328,40 +333,31 @@ private:
|
||||
static std::vector<NETLIST_PLUGIN_SETTINGS> netlistSettingsFromJson( const nlohmann::json& aObj );
|
||||
|
||||
public:
|
||||
APPEARANCE m_Appearance;
|
||||
APPEARANCE m_Appearance;
|
||||
AUI_PANELS m_AuiPanels;
|
||||
|
||||
AUTOPLACE_FIELDS m_AutoplaceFields;
|
||||
DRAWING m_Drawing;
|
||||
INPUT m_Input;
|
||||
AUTOPLACE_FIELDS m_AutoplaceFields;
|
||||
SELECTION m_Selection;
|
||||
|
||||
AUI_PANELS m_AuiPanels;
|
||||
|
||||
DRAWING m_Drawing;
|
||||
|
||||
FIND_REPLACE_EXTRA m_FindReplaceExtra;
|
||||
|
||||
INPUT m_Input;
|
||||
|
||||
PAGE_SETTINGS m_PageSettings;
|
||||
|
||||
PANEL_ANNOTATE m_AnnotatePanel;
|
||||
|
||||
PANEL_BOM m_BomPanel;
|
||||
PAGE_SETTINGS m_PageSettings;
|
||||
PANEL_ANNOTATE m_AnnotatePanel;
|
||||
PANEL_BOM m_BomPanel;
|
||||
|
||||
PANEL_SYMBOL_FIELDS_TABLE m_FieldEditorPanel;
|
||||
PANEL_LIB_VIEW m_LibViewPanel;
|
||||
PANEL_NETLIST m_NetlistPanel;
|
||||
PANEL_SYM_CHOOSER m_SymChooserPanel;
|
||||
|
||||
PANEL_LIB_VIEW m_LibViewPanel;
|
||||
FIND_REPLACE_EXTRA m_FindReplaceExtra;
|
||||
DIALOG_ERC m_ERCDialog;
|
||||
DIALOG_IMPORT_GRAPHICS m_ImportGraphics;
|
||||
|
||||
PANEL_NETLIST m_NetlistPanel;
|
||||
SIMULATOR m_Simulator;
|
||||
|
||||
PANEL_SYM_CHOOSER m_SymChooserPanel;
|
||||
bool m_RescueNeverShow;
|
||||
|
||||
DIALOG_IMPORT_GRAPHICS m_ImportGraphics;
|
||||
|
||||
SELECTION m_Selection;
|
||||
|
||||
SIMULATOR m_Simulator;
|
||||
|
||||
bool m_RescueNeverShow;
|
||||
|
||||
wxString m_lastSymbolLibDir;
|
||||
wxString m_lastSymbolLibDir;
|
||||
};
|
||||
|
||||
|
@ -2032,7 +2032,7 @@ bool SCH_EDIT_FRAME::GetShowAllPins() const
|
||||
}
|
||||
|
||||
|
||||
void SCH_EDIT_FRAME::FocusOnItem( EDA_ITEM* aItem )
|
||||
void SCH_EDIT_FRAME::FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll )
|
||||
{
|
||||
// nullptr will clear the current focus
|
||||
if( aItem != nullptr && !aItem->IsSCH_ITEM() )
|
||||
@ -2060,7 +2060,7 @@ void SCH_EDIT_FRAME::FocusOnItem( EDA_ITEM* aItem )
|
||||
lastBrightenedItemID = aItem->m_Uuid;
|
||||
}
|
||||
|
||||
FocusOnLocation( aItem->GetFocusPosition() );
|
||||
FocusOnLocation( aItem->GetFocusPosition(), aAllowScroll );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -755,7 +755,7 @@ public:
|
||||
int GetSchematicJunctionSize();
|
||||
double GetSchematicHopOverScale();
|
||||
|
||||
void FocusOnItem( EDA_ITEM* aItem ) override;
|
||||
void FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll = true ) override;
|
||||
|
||||
bool IsSyncingSelection() { return m_syncingPcbToSchSelection; }
|
||||
|
||||
|
@ -1541,7 +1541,7 @@ const BOX2I SYMBOL_EDIT_FRAME::GetDocumentExtents( bool aIncludeAllVisible ) con
|
||||
}
|
||||
|
||||
|
||||
void SYMBOL_EDIT_FRAME::FocusOnItem( EDA_ITEM* aItem )
|
||||
void SYMBOL_EDIT_FRAME::FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll )
|
||||
{
|
||||
static KIID lastBrightenedItemID( niluuid );
|
||||
|
||||
@ -1587,7 +1587,7 @@ void SYMBOL_EDIT_FRAME::FocusOnItem( EDA_ITEM* aItem )
|
||||
lastBrightenedItemID = aItem->m_Uuid;
|
||||
}
|
||||
|
||||
FocusOnLocation( VECTOR2I( aItem->GetFocusPosition().x, -aItem->GetFocusPosition().y ) );
|
||||
FocusOnLocation( VECTOR2I( aItem->GetFocusPosition().x, -aItem->GetFocusPosition().y ), aAllowScroll );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -377,7 +377,7 @@ public:
|
||||
|
||||
void KiwayMailIn( KIWAY_EXPRESS& mail ) override;
|
||||
|
||||
void FocusOnItem( EDA_ITEM* aItem ) override;
|
||||
void FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll = true ) override;
|
||||
|
||||
/**
|
||||
* Load a symbol from the schematic to edit in place.
|
||||
|
@ -313,7 +313,7 @@ public:
|
||||
*
|
||||
* @param aItem is the item to focus on. nullptr clears the focus.
|
||||
*/
|
||||
virtual void FocusOnItem( EDA_ITEM* aItem ) {}
|
||||
virtual void FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll = true ) {}
|
||||
|
||||
virtual void ClearFocus() { FocusOnItem( nullptr ); }
|
||||
|
||||
|
@ -220,7 +220,7 @@ public:
|
||||
|
||||
EDA_ITEM* ResolveItem( const KIID& aId, bool aAllowNullptrReturn = false ) const override;
|
||||
|
||||
void FocusOnItem( EDA_ITEM* aItem ) override;
|
||||
void FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll = true ) override;
|
||||
void FocusOnItem( BOARD_ITEM* aItem, PCB_LAYER_ID aLayer = UNDEFINED_LAYER, bool aAllowScroll = true );
|
||||
void FocusOnItems( std::vector<BOARD_ITEM*> aItems, PCB_LAYER_ID aLayer = UNDEFINED_LAYER,
|
||||
bool aAllowScroll = true );
|
||||
|
@ -52,7 +52,7 @@ DIALOG_DRC_BASE::DIALOG_DRC_BASE( wxWindow* parent, wxWindowID id, const wxStrin
|
||||
m_bMenu = new STD_BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
|
||||
m_bMenu->SetMinSize( wxSize( 30,30 ) );
|
||||
|
||||
gbSizerOptions->Add( m_bMenu, wxGBPosition( 0, 2 ), wxGBSpan( 2, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
|
||||
gbSizerOptions->Add( m_bMenu, wxGBPosition( 0, 2 ), wxGBSpan( 2, 1 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
|
||||
|
||||
|
||||
gbSizerOptions->AddGrowableCol( 0 );
|
||||
@ -60,7 +60,7 @@ DIALOG_DRC_BASE::DIALOG_DRC_BASE( wxWindow* parent, wxWindowID id, const wxStrin
|
||||
gbSizerOptions->AddGrowableRow( 0 );
|
||||
gbSizerOptions->AddGrowableRow( 1 );
|
||||
|
||||
m_MainSizer->Add( gbSizerOptions, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 10 );
|
||||
m_MainSizer->Add( gbSizerOptions, 0, wxEXPAND|wxTOP|wxLEFT, 10 );
|
||||
|
||||
m_runningResultsBook = new wxSimplebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
|
||||
running = new wxPanel( m_runningResultsBook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||
|
@ -101,7 +101,7 @@
|
||||
</object>
|
||||
<object class="sizeritem" expanded="true">
|
||||
<property name="border">10</property>
|
||||
<property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
|
||||
<property name="flag">wxEXPAND|wxTOP|wxLEFT</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxGridBagSizer" expanded="true">
|
||||
<property name="empty_cell_size"></property>
|
||||
@ -254,7 +254,7 @@
|
||||
<property name="border">5</property>
|
||||
<property name="colspan">1</property>
|
||||
<property name="column">2</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
|
||||
<property name="row">0</property>
|
||||
<property name="rowspan">2</property>
|
||||
<object class="wxBitmapButton" expanded="true">
|
||||
|
@ -253,13 +253,13 @@ EDA_ITEM* PCB_BASE_FRAME::ResolveItem( const KIID& aId, bool aAllowNullptrReturn
|
||||
return GetBoard()->ResolveItem( aId, aAllowNullptrReturn );
|
||||
}
|
||||
|
||||
void PCB_BASE_FRAME::FocusOnItem( EDA_ITEM* aItem )
|
||||
void PCB_BASE_FRAME::FocusOnItem( EDA_ITEM* aItem, bool aAllowScroll )
|
||||
{
|
||||
// nullptr will clear the current focus
|
||||
if( aItem != nullptr && !aItem->IsBOARD_ITEM() )
|
||||
return;
|
||||
|
||||
FocusOnItem( static_cast<BOARD_ITEM*>( aItem ), UNDEFINED_LAYER );
|
||||
FocusOnItem( static_cast<BOARD_ITEM*>( aItem ), UNDEFINED_LAYER, aAllowScroll );
|
||||
}
|
||||
|
||||
void PCB_BASE_FRAME::FocusOnItem( BOARD_ITEM* aItem, PCB_LAYER_ID aLayer, bool aAllowScroll )
|
||||
|
Loading…
x
Reference in New Issue
Block a user