KiCad PCB EDA Suite
DIALOG_ERC Class Reference

#include <dialog_erc.h>

Inheritance diagram for DIALOG_ERC:
DIALOG_ERC_BASE PROGRESS_REPORTER DIALOG_SHIM KIWAY_HOLDER

Public Types

enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 DIALOG_ERC (SCH_EDIT_FRAME *parent)
 
 ~DIALOG_ERC ()
 
bool updateUI () override
 
void AdvancePhase (const wxString &aMessage) override
 Use the next available virtual zone of the dialog progress bar and updates the message. More...
 
void Report (const wxString &aMessage) override
 Display aMessage in the progress bar dialog. More...
 
void PrevMarker ()
 
void NextMarker ()
 
void ExcludeMarker ()
 
void SetInitialFocus (wxWindow *aWindow)
 Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown. More...
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal () const
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
void SetPosition (const wxPoint &aNewPosition)
 Force the position of the dialog to a new position. More...
 
EDA_UNITS GetUserUnits () const
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 

Static Public Member Functions

static bool IsCtrl (int aChar, const wxKeyEvent &e)
 
static bool IsShiftCtrl (int aChar, const wxKeyEvent &e)
 

Protected Member Functions

void finishDialogSettings ()
 In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls. More...
 
void setSizeInDU (int x, int y)
 Set the dialog to the given dimensions in "dialog units". More...
 
int horizPixelsFromDU (int x) const
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int vertPixelsFromDU (int y) const
 Convert an integer number of dialog units to pixels, vertically. More...
 
void resetSize ()
 Clear the existing dialog size and position. More...
 
virtual void OnCharHook (wxKeyEvent &aEvt)
 

Protected Attributes

WX_INFOBARm_infoBar
 
wxNotebook * m_notebook
 
wxPanel * messagesPanel
 
WX_HTML_REPORT_BOXm_messages
 
wxPanel * violationsPanel
 
wxDataViewCtrl * m_markerDataView
 
wxStaticText * m_showLabel
 
wxCheckBox * m_showAll
 
wxCheckBox * m_showErrors
 
NUMBER_BADGEm_errorsBadge
 
wxCheckBox * m_showWarnings
 
NUMBER_BADGEm_warningsBadge
 
wxCheckBox * m_showExclusions
 
NUMBER_BADGEm_exclusionsBadge
 
wxButton * m_saveReport
 
wxStaticLine * m_staticline1
 
wxBoxSizer * m_buttonsSizer
 
wxButton * m_buttondelmarkers
 
wxStdDialogButtonSizer * m_sdbSizer1
 
wxButton * m_sdbSizer1OK
 
wxButton * m_sdbSizer1Cancel
 
EDA_UNITS m_units
 
std::string m_hash_key
 
bool m_useCalculatedSize
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 
EDA_BASE_FRAMEm_parentFrame
 
std::vector< wxWindow * > m_tabOrder
 
wxSize m_initialSize
 

Private Member Functions

void OnCloseErcDialog (wxCloseEvent &event) override
 
void OnRunERCClick (wxCommandEvent &event) override
 
void OnEraseDrcMarkersClick (wxCommandEvent &event) override
 
void OnERCItemSelected (wxDataViewEvent &aEvent) override
 
void OnERCItemDClick (wxDataViewEvent &aEvent) override
 
void OnERCItemRClick (wxDataViewEvent &aEvent) override
 
void OnLinkClicked (wxHtmlLinkEvent &event) override
 
void OnSeverity (wxCommandEvent &aEvent) override
 
void OnSaveReport (wxCommandEvent &aEvent) override
 
void OnCancelClick (wxCommandEvent &event) override
 
void redrawDrawPanel ()
 
void testErc ()
 
bool writeReport (const wxString &aFullFileName)
 
void deleteAllMarkers (bool aIncludeExclusions)
 
void syncCheckboxes ()
 
void updateDisplayedCounts ()
 
void SetNumPhases (int aNumPhases)
 Set the number of phases. More...
 
void AddPhases (int aNumPhases)
 
virtual void BeginPhase (int aPhase)
 Initialize the aPhase virtual zone of the dialog progress bar. More...
 
virtual void AdvancePhase ()
 Use the next available virtual zone of the dialog progress bar. More...
 
virtual void SetCurrentProgress (double aProgress)
 Set the progress value to aProgress (0..1). More...
 
void SetMaxProgress (int aMaxProgress)
 Fix the value that gives the 100 percent progress bar length (inside the current virtual zone). More...
 
void AdvanceProgress ()
 Increment the progress bar length (inside the current virtual zone). More...
 
bool KeepRefreshing (bool aWait=false)
 Update the UI dialog. More...
 
virtual void SetTitle (const wxString &aTitle)
 Change the title displayed on the window caption. More...
 
bool IsCancelled () const
 
int currentProgress () const
 

Private Attributes

SCH_EDIT_FRAMEm_parent
 
RC_ITEMS_PROVIDERm_markerProvider
 
RC_TREE_MODELm_markerTreeModel
 
bool m_running
 
bool m_ercRun
 
int m_severities
 
wxString m_rptMessage
 
bool m_msgChanged
 
std::mutex m_mutex
 
std::atomic_int m_phase
 
std::atomic_int m_numPhases
 
std::atomic_int m_progress
 
std::atomic_int m_maxProgress
 
std::atomic_bool m_cancelled
 

Detailed Description

Definition at line 37 of file dialog_erc.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ DIALOG_ERC()

DIALOG_ERC::DIALOG_ERC ( SCH_EDIT_FRAME parent)

Definition at line 55 of file dialog_erc.cpp.

55  :
56  DIALOG_ERC_BASE( parent ),
57  PROGRESS_REPORTER( 1 ),
58  m_parent( parent ),
59  m_running( false ),
60  m_ercRun( false ),
62 {
63  EESCHEMA_SETTINGS* settings = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
65 
67 
70  m_markerDataView->AssociateModel( m_markerTreeModel );
71 
76 
77  // We use a sdbSizer to get platform-dependent ordering of the action buttons, but
78  // that requires us to correct the button labels here.
79  m_sdbSizer1OK->SetLabel( _( "Run ERC" ) );
80  m_sdbSizer1Cancel->SetLabel( _( "Close" ) );
81  m_sdbSizer1->Layout();
82 
83  m_sdbSizer1OK->SetDefault();
84 
88 
89  if( m_parent->CheckAnnotate( []( ERCE_T, const wxString&, SCH_REFERENCE*,
90  SCH_REFERENCE* ) {} ) )
91  {
92  wxHyperlinkCtrl* button = new wxHyperlinkCtrl( m_infoBar, wxID_ANY,
93  _("Show Annotation dialog"),
94  wxEmptyString );
95 
96  button->Bind( wxEVT_COMMAND_HYPERLINK, std::function<void( wxHyperlinkEvent& aEvent )>(
97  [&]( wxHyperlinkEvent& aEvent )
98  {
99  wxHtmlLinkEvent htmlEvent( aEvent.GetId(),
100  wxHtmlLinkInfo( aEvent.GetURL() ) );
101  OnLinkClicked( htmlEvent );
102  } ) );
103 
105  m_infoBar->AddButton( button );
106  m_infoBar->ShowMessage( _( "Schematic is not fully annotated. "
107  "ERC results will be incomplete." ) );
108  }
109 
110  // Now all widgets have the size fixed, call FinishDialogSettings
112 }
void ShowMessage(const wxString &aMessage, int aFlags=wxICON_INFORMATION) override
Show the info bar with the provided message and icon.
Definition: infobar.cpp:137
void AddButton(wxButton *aButton)
Add an already created button to the infobar.
Definition: infobar.cpp:240
NUMBER_BADGE * m_errorsBadge
void SetProvider(RC_ITEMS_PROVIDER *aProvider)
Definition: rc_item.cpp:289
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
bool m_running
Definition: dialog_erc.h:83
void syncCheckboxes()
Definition: dialog_erc.cpp:240
void OnLinkClicked(wxHtmlLinkEvent &event) override
Definition: dialog_erc.cpp:249
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:80
void updateDisplayedCounts()
Definition: dialog_erc.cpp:157
An implementation of the RC_ITEM_LIST interface which uses the global SHEETLIST to fulfill the contra...
Definition: erc_settings.h:183
int CheckAnnotate(ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope=ANNOTATE_ALL)
Check for annotation errors.
Definition: annotate.cpp:342
wxButton * m_sdbSizer1Cancel
PROGRESS_REPORTER(int aNumPhases)
void SetSeverities(int aSeverities)
Definition: rc_item.cpp:295
void SetImmediateMode()
In immediate mode, messages are flushed as they are added.
wxButton * m_sdbSizer1OK
wxStdDialogButtonSizer * m_sdbSizer1
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
SCHEMATIC & Schematic() const
int m_severities
Definition: dialog_erc.h:86
#define _(s)
ERCE_T
ERC error codes.
Definition: erc_settings.h:36
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
void RemoveAllButtons()
Remove all the buttons that have been added by the user.
Definition: infobar.cpp:281
NUMBER_BADGE * m_warningsBadge
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
WX_INFOBAR * m_infoBar
DIALOG_ERC_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Electrical Rules Checker"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
NUMBER_BADGE * m_exclusionsBadge
wxDataViewCtrl * m_markerDataView
bool m_ercRun
Definition: dialog_erc.h:84
WX_HTML_REPORT_BOX * m_messages
void SetMaximumNumber(int aMax)
Set the maximum number to be shown on the badge.
A helper to define a symbol's reference designator in a schematic.

References _, WX_INFOBAR::AddButton(), SCH_EDIT_FRAME::CheckAnnotate(), EESCHEMA_SETTINGS::APPEARANCE::erc_severities, DIALOG_SHIM::finishDialogSettings(), Kiface(), EESCHEMA_SETTINGS::m_Appearance, DIALOG_ERC_BASE::m_errorsBadge, DIALOG_ERC_BASE::m_exclusionsBadge, DIALOG_ERC_BASE::m_infoBar, DIALOG_ERC_BASE::m_markerDataView, m_markerProvider, m_markerTreeModel, DIALOG_ERC_BASE::m_messages, m_parent, DIALOG_ERC_BASE::m_sdbSizer1, DIALOG_ERC_BASE::m_sdbSizer1Cancel, DIALOG_ERC_BASE::m_sdbSizer1OK, m_severities, DIALOG_ERC_BASE::m_warningsBadge, OnLinkClicked(), WX_INFOBAR::RemoveAllButtons(), SCH_EDIT_FRAME::Schematic(), WX_HTML_REPORT_BOX::SetImmediateMode(), NUMBER_BADGE::SetMaximumNumber(), RC_TREE_MODEL::SetProvider(), RC_TREE_MODEL::SetSeverities(), WX_INFOBAR::ShowMessage(), syncCheckboxes(), and updateDisplayedCounts().

◆ ~DIALOG_ERC()

DIALOG_ERC::~DIALOG_ERC ( )

Definition at line 115 of file dialog_erc.cpp.

116 {
117  EESCHEMA_SETTINGS* settings = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
118  wxASSERT( settings );
119 
120  if( settings )
122 
123  m_markerTreeModel->DecRef();
124 }
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
int m_severities
Definition: dialog_erc.h:86

References EESCHEMA_SETTINGS::APPEARANCE::erc_severities, Kiface(), EESCHEMA_SETTINGS::m_Appearance, m_markerTreeModel, and m_severities.

Member Function Documentation

◆ AddPhases()

void PROGRESS_REPORTER::AddPhases ( int  aNumPhases)
inherited

Definition at line 95 of file progress_reporter.cpp.

96 {
97  m_numPhases += aNumPhases;
98 }
std::atomic_int m_numPhases

References PROGRESS_REPORTER::m_numPhases.

◆ AdvancePhase() [1/2]

void DIALOG_ERC::AdvancePhase ( const wxString &  aMessage)
overridevirtual

Use the next available virtual zone of the dialog progress bar and updates the message.

Reimplemented from PROGRESS_REPORTER.

Definition at line 143 of file dialog_erc.cpp.

144 {
145  // Will also call Report( aMessage ):
147  SetCurrentProgress( 0.0 );
148 }
virtual void AdvancePhase()
Use the next available virtual zone of the dialog progress bar.
virtual void SetCurrentProgress(double aProgress)
Set the progress value to aProgress (0..1).

References PROGRESS_REPORTER::AdvancePhase(), and PROGRESS_REPORTER::SetCurrentProgress().

◆ AdvancePhase() [2/2]

void PROGRESS_REPORTER::AdvancePhase ( )
virtualinherited

Use the next available virtual zone of the dialog progress bar.

Definition at line 49 of file progress_reporter.cpp.

50 {
51  m_phase.fetch_add( 1 );
52  m_progress.store( 0 );
53 }
std::atomic_int m_phase
std::atomic_int m_progress

References PROGRESS_REPORTER::m_phase, and PROGRESS_REPORTER::m_progress.

Referenced by AdvancePhase(), PROGRESS_REPORTER::AdvancePhase(), DIALOG_DRC::AdvancePhase(), ZONE_FILLER::Fill(), FOOTPRINT_LIST_IMPL::ReadFootprintFiles(), DRC_ENGINE::ReportPhase(), DRC_TOOL::RunTests(), testErc(), and SYMBOL_ASYNC_LOADER::worker().

◆ AdvanceProgress()

void PROGRESS_REPORTER::AdvanceProgress ( )
inherited

Increment the progress bar length (inside the current virtual zone).

Definition at line 83 of file progress_reporter.cpp.

84 {
85  m_progress.fetch_add( 1 );
86 }
std::atomic_int m_progress

References PROGRESS_REPORTER::m_progress.

Referenced by AR_AUTOPLACER::AutoplaceFootprints(), ZONE_FILLER::Fill(), FOOTPRINT_LIST_IMPL::joinWorkers(), and FOOTPRINT_LIST_IMPL::loader_job().

◆ BeginPhase()

void PROGRESS_REPORTER::BeginPhase ( int  aPhase)
virtualinherited

Initialize the aPhase virtual zone of the dialog progress bar.

Definition at line 42 of file progress_reporter.cpp.

43 {
44  m_phase.store( aPhase );
45  m_progress.store( 0 );
46 }
std::atomic_int m_phase
std::atomic_int m_progress

References PROGRESS_REPORTER::m_phase, and PROGRESS_REPORTER::m_progress.

◆ currentProgress()

int PROGRESS_REPORTER::currentProgress ( ) const
protectedinherited

Definition at line 101 of file progress_reporter.cpp.

102 {
103  double current = ( 1.0 / (double) m_numPhases ) *
104  ( (double) m_phase + ( (double) m_progress.load() / (double) m_maxProgress ) );
105 
106  return (int)( current * 1000 );
107 }
std::atomic_int m_phase
std::atomic_int m_progress
std::atomic_int m_numPhases
std::atomic_int m_maxProgress

References PROGRESS_REPORTER::m_maxProgress, PROGRESS_REPORTER::m_numPhases, PROGRESS_REPORTER::m_phase, and PROGRESS_REPORTER::m_progress.

Referenced by WX_PROGRESS_REPORTER::updateUI(), and GAUGE_PROGRESS_REPORTER::updateUI().

◆ deleteAllMarkers()

void DIALOG_ERC::deleteAllMarkers ( bool  aIncludeExclusions)
private

Definition at line 723 of file dialog_erc.cpp.

724 {
725  // Clear current selection list to avoid selection of deleted items
727 
728  m_markerTreeModel->DeleteItems( false, aIncludeExclusions, true );
729 }
void DeleteItems(bool aCurrentOnly, bool aIncludeExclusions, bool aDeep)
Deletes the current item or all items.
Definition: rc_item.cpp:456
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:143
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:53
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:54

References EE_ACTIONS::clearSelection, RC_TREE_MODEL::DeleteItems(), TOOLS_HOLDER::GetToolManager(), m_markerTreeModel, m_parent, and TOOL_MANAGER::RunAction().

Referenced by OnEraseDrcMarkersClick(), and OnRunERCClick().

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 311 of file dialog_shim.cpp.

312 {
313  // so we can do logging of this state change:
314  return wxDialog::Enable( enable );
315 }

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 470 of file dialog_shim.cpp.

471 {
472  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
473  // handle validation in the same way as other dialogs.
474  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
475  return;
476 
477  SetReturnCode( retCode );
478 
479  if( !IsQuasiModal() )
480  {
481  wxFAIL_MSG( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal"
482  "wasn't called" );
483  return;
484  }
485 
486  if( m_qmodal_loop )
487  {
488  if( m_qmodal_loop->IsRunning() )
489  m_qmodal_loop->Exit( 0 );
490  else
491  m_qmodal_loop->ScheduleExit( 0 );
492 
493  m_qmodal_loop = nullptr;
494  }
495 
497  m_qmodal_parent_disabler = nullptr;
498 
499  Show( false );
500 }
bool IsQuasiModal() const
Definition: dialog_shim.h:106
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:211
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:214

References DIALOG_SHIM::IsQuasiModal(), DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, and DIALOG_SHIM::Show().

Referenced by NETLIST_DIALOG::OnAddGenerator(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_SYMBOLS_LIBID::onCancel(), DIALOG_LIB_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), NETLIST_DIALOG::OnDelGenerator(), DIALOG_SYMBOL_PROPERTIES::OnEditLibrarySymbol(), DIALOG_SYMBOL_PROPERTIES::OnEditSymbol(), DIALOG_SYMBOL_PROPERTIES::OnExchangeSymbol(), PCB_ONE_LAYER_SELECTOR::OnLeftGridCellClick(), PCB_ONE_LAYER_SELECTOR::OnRightGridCellClick(), DIALOG_SYMBOL_PROPERTIES::OnUpdateSymbol(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_PUSH_PAD_PROPERTIES::PadPropertiesAccept(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ ExcludeMarker()

void DIALOG_ERC::ExcludeMarker ( )

Definition at line 663 of file dialog_erc.cpp.

664 {
665  if( m_notebook->GetSelection() != 1 )
666  return;
667 
668  RC_TREE_NODE* node = RC_TREE_MODEL::ToNode( m_markerDataView->GetCurrentItem() );
669  SCH_MARKER* marker = dynamic_cast<SCH_MARKER*>( node->m_RcItem->GetParent() );
670 
671  if( marker && !marker->IsExcluded() )
672  {
673  marker->SetExcluded( true );
674  m_parent->GetCanvas()->GetView()->Update( marker );
675 
676  // Update view
679  else
681 
683  redrawDrawPanel();
684  m_parent->OnModify();
685  }
686 }
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
void updateDisplayedCounts()
Definition: dialog_erc.cpp:157
void DeleteCurrentItem(bool aDeep)
Definition: rc_item.cpp:450
void SetExcluded(bool aExcluded)
Definition: marker_base.h:95
std::shared_ptr< RC_ITEM > m_RcItem
Definition: rc_item.h:190
static RC_TREE_NODE * ToNode(wxDataViewItem aItem)
Definition: rc_item.h:205
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
int m_severities
Definition: dialog_erc.h:86
wxNotebook * m_notebook
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
wxDataViewCtrl * m_markerDataView
void ValueChanged(const RC_TREE_NODE *aNode)
Definition: rc_item.cpp:433
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
void redrawDrawPanel()
Definition: dialog_erc.cpp:331
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1503

References RC_TREE_MODEL::DeleteCurrentItem(), SCH_BASE_FRAME::GetCanvas(), SCH_DRAW_PANEL::GetView(), DIALOG_ERC_BASE::m_markerDataView, m_markerTreeModel, DIALOG_ERC_BASE::m_notebook, m_parent, RC_TREE_NODE::m_RcItem, m_severities, SCH_EDIT_FRAME::OnModify(), redrawDrawPanel(), RPT_SEVERITY_EXCLUSION, MARKER_BASE::SetExcluded(), RC_TREE_MODEL::ToNode(), KIGFX::VIEW::Update(), updateDisplayedCounts(), and RC_TREE_MODEL::ValueChanged().

Referenced by EE_INSPECTION_TOOL::ExcludeMarker().

◆ finishDialogSettings()

void DIALOG_SHIM::finishDialogSettings ( )
protectedinherited

In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls.

finishDialogSettings must be called from derived classes after all widgets have been initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at the end of TransferDataToWindow, or better yet, at end of a wxInitDialogEvent handler.

Definition at line 150 of file dialog_shim.cpp.

151 {
152  // must be called from the constructor of derived classes,
153  // when all widgets are initialized, and therefore their size fixed
154 
155  // SetSizeHints fixes the minimal size of sizers in the dialog
156  // (SetSizeHints calls Fit(), so no need to call it)
157  GetSizer()->SetSizeHints( this );
158 }

Referenced by DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOM::DIALOG_BOM(), DIALOG_BUS_MANAGER::DIALOG_BUS_MANAGER(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CLEANUP_TRACKS_AND_VIAS::DIALOG_CLEANUP_TRACKS_AND_VIAS(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_EDIT_SYMBOLS_LIBID::DIALOG_EDIT_SYMBOLS_LIBID(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_ERC(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FOOTPRINT_CHECKER::DIALOG_FOOTPRINT_CHECKER(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_GENCAD_EXPORT_OPTIONS::DIALOG_GENCAD_EXPORT_OPTIONS(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_GLOBAL_LIB_TABLE_CONFIG::DIALOG_GLOBAL_LIB_TABLE_CONFIG(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMAGE_EDITOR::DIALOG_IMAGE_EDITOR(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_INSPECTOR::DIALOG_INSPECTOR(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_LINE_WIRE_BUS_PROPERTIES::DIALOG_LINE_WIRE_BUS_PROPERTIES(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVE_POLY_PROPS::DIALOG_PAD_PRIMITIVE_POLY_PROPS(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PASTE_SPECIAL::DIALOG_PASTE_SPECIAL(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_REGULATOR_FORM::DIALOG_REGULATOR_FORM(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SELECT_3DMODEL::DIALOG_SELECT_3DMODEL(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UNUSED_PAD_LAYERS::DIALOG_UNUSED_PAD_LAYERS(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), DIALOG_UPDATE_SYMBOL_FIELDS::DIALOG_UPDATE_SYMBOL_FIELDS(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), PAGED_DIALOG::finishInitialization(), DIALOG_EDIT_ONE_FIELD::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_SHEET_PROPERTIES::OnInitDlg(), DIALOG_SYMBOL_PROPERTIES::OnInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_BOARD_STATISTICS::TransferDataToWindow(), and DIALOG_COLOR_PICKER::TransferDataToWindow().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

46 { return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:76

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ horizPixelsFromDU()

int DIALOG_SHIM::horizPixelsFromDU ( int  x) const
protectedinherited

Convert an integer number of dialog units to pixels, horizontally.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 168 of file dialog_shim.cpp.

169 {
170  wxSize sz( x, 0 );
171  return ConvertDialogToPixels( sz ).x;
172 }

Referenced by DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), and DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

◆ IsCancelled()

bool PROGRESS_REPORTER::IsCancelled ( ) const
inlineinherited

◆ IsCtrl()

static bool DIALOG_SHIM::IsCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 124 of file dialog_shim.h.

125  {
126  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
127  !e.ShiftDown() && !e.MetaDown();
128  }

◆ IsQuasiModal()

◆ IsShiftCtrl()

static bool DIALOG_SHIM::IsShiftCtrl ( int  aChar,
const wxKeyEvent &  e 
)
inlinestaticinherited

Definition at line 130 of file dialog_shim.h.

131  {
132  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
133  e.ShiftDown() && !e.MetaDown();
134  }

◆ KeepRefreshing()

bool PROGRESS_REPORTER::KeepRefreshing ( bool  aWait = false)
inherited

Update the UI dialog.

Warning
This should only be called from the main thread.
Returns
false if the user clicked Cancel.

Definition at line 110 of file progress_reporter.cpp.

111 {
112  if( aWait )
113  {
114  while( m_progress.load() < m_maxProgress && m_maxProgress > 0 )
115  {
116  if( !updateUI() )
117  {
118  m_cancelled.store( true );
119  return false;
120  }
121 
122  wxMilliSleep( 20 );
123  }
124 
125  return true;
126  }
127  else
128  {
129  if( !updateUI() )
130  {
131  m_cancelled.store( true );
132  return false;
133  }
134 
135  return true;
136  }
137 }
std::atomic_int m_progress
std::atomic_bool m_cancelled
virtual bool updateUI()=0
std::atomic_int m_maxProgress

References PROGRESS_REPORTER::m_cancelled, PROGRESS_REPORTER::m_maxProgress, PROGRESS_REPORTER::m_progress, and PROGRESS_REPORTER::updateUI().

Referenced by AR_AUTOPLACER::AutoplaceFootprints(), SCH_SEXPR_PARSER::checkpoint(), SCH_EAGLE_PLUGIN::checkpoint(), LEGACY_PLUGIN::checkpoint(), ALTIUM_PCB::checkpoint(), SCH_LEGACY_PLUGIN::checkpoint(), EAGLE_PLUGIN::checkpoint(), FABMASTER::checkpoint(), ZONE_FILLER::Fill(), FOOTPRINT_LIST_IMPL::joinWorkers(), FABMASTER_PLUGIN::Load(), LEGACY_PLUGIN::Load(), SCH_EAGLE_PLUGIN::Load(), EAGLE_PLUGIN::Load(), PCB_IO::Load(), SCH_SEXPR_PLUGIN::loadFile(), SCH_LEGACY_PLUGIN::loadFile(), SYMBOL_LIBRARY_MANAGER::Preload(), FOOTPRINT_LIST_IMPL::ReadFootprintFiles(), DRC_ENGINE::ReportPhase(), DRC_ENGINE::ReportProgress(), reportProgress(), and CN_CONNECTIVITY_ALGO::searchConnections().

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Return a reference to the KIWAY that this object has an opportunity to participate in.

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 53 of file kiway_holder.h.

54  {
55  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
56  return *m_kiway;
57  }
KIWAY * m_kiway
Definition: kiway_holder.h:75

References KIWAY_HOLDER::m_kiway.

Referenced by PROJECT_TREE_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SYMBOL_EDIT_FRAME::canCloseWindow(), SCH_EDIT_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CloseProject(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), BOARD_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), BACK_ANNOTATE::FetchNetlistFromPCB(), KICAD_MANAGER_FRAME::ImportNonKiCadProject(), SCRIPTING_TOOL::Init(), EDA_DRAW_FRAME::IsScriptingConsoleVisible(), KICAD_MANAGER_FRAME::language_change(), KIWAY_PLAYER::language_change(), DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser(), DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser(), LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), SYMBOL_EDIT_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS(), SCH_BASE_FRAME::PickSymbolFromLibBrowser(), KIWAY_HOLDER::Prj(), SCH_EDIT_TOOL::Properties(), BACK_ANNOTATE::PushNewLinksToPCB(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SCH_EDITOR_CONTROL::rescueProject(), EE_INSPECTION_TOOL::RunSimulation(), SYMBOL_EDIT_FRAME::Save(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), LIB_TREE_MODEL_ADAPTER::SavePinnedItems(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SetCrossProbeConnection(), SYMBOL_EDIT_FRAME::SetCurSymbol(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), and DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint().

◆ NextMarker()

void DIALOG_ERC::NextMarker ( )

Definition at line 654 of file dialog_erc.cpp.

655 {
656  if( m_notebook->GetSelection() != 1 )
657  m_notebook->SetSelection( 1 );
658 
660 }
void NextMarker()
Definition: rc_item.cpp:566
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
wxNotebook * m_notebook

References m_markerTreeModel, DIALOG_ERC_BASE::m_notebook, and RC_TREE_MODEL::NextMarker().

Referenced by EE_INSPECTION_TOOL::NextMarker().

◆ OnCancelClick()

void DIALOG_ERC::OnCancelClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 215 of file dialog_erc.cpp.

216 {
217  if( m_running )
218  {
219  m_cancelled = true;
220  return;
221  }
222 
223  m_parent->FocusOnItem( nullptr );
224 
225  Close();
226 }
bool m_running
Definition: dialog_erc.h:83
std::atomic_bool m_cancelled
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
void FocusOnItem(SCH_ITEM *aItem)

References SCH_EDIT_FRAME::FocusOnItem(), PROGRESS_REPORTER::m_cancelled, m_parent, and m_running.

◆ OnCharHook()

void DIALOG_SHIM::OnCharHook ( wxKeyEvent &  aEvt)
protectedvirtualinherited

Reimplemented in DIALOG_CHOOSE_SYMBOL, HK_PROMPT_DIALOG, and HTML_MESSAGE_BOX.

Definition at line 561 of file dialog_shim.cpp.

562 {
563  if( aEvt.GetKeyCode() == 'U' && aEvt.GetModifiers() == wxMOD_CONTROL )
564  {
565  if( m_parentFrame )
566  {
568  return;
569  }
570  }
571  // shift-return (Mac default) or Ctrl-Return (GTK) for OK
572  else if( aEvt.GetKeyCode() == WXK_RETURN && ( aEvt.ShiftDown() || aEvt.ControlDown() ) )
573  {
574  wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
575  return;
576  }
577  else if( aEvt.GetKeyCode() == WXK_TAB && !aEvt.ControlDown() )
578  {
579  wxWindow* currentWindow = wxWindow::FindFocus();
580  int currentIdx = -1;
581  int delta = aEvt.ShiftDown() ? -1 : 1;
582 
583  auto advance = [&]( int& idx )
584  {
585  // Wrap-around modulus
586  int size = m_tabOrder.size();
587  idx = ( ( idx + delta ) % size + size ) % size;
588  };
589 
590  for( size_t i = 0; i < m_tabOrder.size(); ++i )
591  {
592  if( m_tabOrder[i] == currentWindow )
593  {
594  currentIdx = (int) i;
595  break;
596  }
597  }
598 
599  if( currentIdx >= 0 )
600  {
601  advance( currentIdx );
602 
603  //todo: We don't currently have non-textentry dialog boxes but this will break if
604  // we add them.
605 #ifdef __APPLE__
606  while( dynamic_cast<wxTextEntry*>( m_tabOrder[ currentIdx ] ) == nullptr )
607  advance( currentIdx );
608 #endif
609 
610  m_tabOrder[ currentIdx ]->SetFocus();
611  return;
612  }
613  }
614 
615  aEvt.Skip();
616 }
std::vector< wxWindow * > m_tabOrder
Definition: dialog_shim.h:218
EDA_BASE_FRAME * m_parentFrame
Definition: dialog_shim.h:216
constexpr int delta
virtual void ToggleUserUnits()

References delta, DIALOG_SHIM::m_parentFrame, DIALOG_SHIM::m_tabOrder, and EDA_BASE_FRAME::ToggleUserUnits().

Referenced by DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), and DIALOG_TEXT_PROPERTIES::~DIALOG_TEXT_PROPERTIES().

◆ OnCloseErcDialog()

void DIALOG_ERC::OnCloseErcDialog ( wxCloseEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 229 of file dialog_erc.cpp.

230 {
231  m_parent->FocusOnItem( nullptr );
232 
233  m_parent->GetToolManager()->GetTool<EE_INSPECTION_TOOL>()->DestroyERCDialog();
234 }
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
void FocusOnItem(SCH_ITEM *aItem)
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:54

References SCH_EDIT_FRAME::FocusOnItem(), TOOL_MANAGER::GetTool(), TOOLS_HOLDER::GetToolManager(), and m_parent.

◆ OnEraseDrcMarkersClick()

void DIALOG_ERC::OnEraseDrcMarkersClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 184 of file dialog_erc.cpp.

185 {
186  bool includeExclusions = false;
187  int numExcluded = 0;
188 
189  if( m_markerProvider )
191 
192  if( numExcluded > 0 )
193  {
194  wxMessageDialog dlg( this, _( "Delete exclusions too?" ), _( "Delete All Markers" ),
195  wxYES_NO | wxCANCEL | wxCENTER | wxICON_QUESTION );
196  dlg.SetYesNoLabels( _( "Errors and Warnings Only" ) , _( "Errors, Warnings and Exclusions" ) );
197 
198  int ret = dlg.ShowModal();
199 
200  if( ret == wxID_CANCEL )
201  return;
202  else if( ret == wxID_NO )
203  includeExclusions = true;
204  }
205 
206  deleteAllMarkers( includeExclusions );
207 
208  m_ercRun = false;
210  m_parent->GetCanvas()->Refresh();
211 }
void deleteAllMarkers(bool aIncludeExclusions)
Definition: dialog_erc.cpp:723
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:80
void updateDisplayedCounts()
Definition: dialog_erc.cpp:157
virtual int GetCount(int aSeverity=-1) const =0
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
#define _(s)
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
bool m_ercRun
Definition: dialog_erc.h:84

References _, deleteAllMarkers(), SCH_BASE_FRAME::GetCanvas(), RC_ITEMS_PROVIDER::GetCount(), m_ercRun, m_markerProvider, m_parent, EDA_DRAW_PANEL_GAL::Refresh(), RPT_SEVERITY_EXCLUSION, and updateDisplayedCounts().

◆ OnERCItemDClick()

void DIALOG_ERC::OnERCItemDClick ( wxDataViewEvent &  aEvent)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 457 of file dialog_erc.cpp.

458 {
459  if( aEvent.GetItem().IsOk() )
460  {
461  // turn control over to m_parent, hide this DIALOG_ERC window,
462  // no destruction so we can preserve listbox cursor
463  if( !IsModal() )
464  Show( false );
465  }
466 
467  aEvent.Skip();
468 }
bool Show(bool show) override

References DIALOG_SHIM::Show().

◆ OnERCItemRClick()

void DIALOG_ERC::OnERCItemRClick ( wxDataViewEvent &  aEvent)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 471 of file dialog_erc.cpp.

472 {
473  RC_TREE_NODE* node = RC_TREE_MODEL::ToNode( aEvent.GetItem() );
474 
475  if( !node )
476  return;
477 
478  ERC_SETTINGS& settings = m_parent->Schematic().ErcSettings();
479 
480  std::shared_ptr<RC_ITEM> rcItem = node->m_RcItem;
481  wxString listName;
482  wxMenu menu;
483  wxString msg;
484 
485  switch( settings.GetSeverity( rcItem->GetErrorCode() ) )
486  {
487  case RPT_SEVERITY_ERROR: listName = _( "errors" ); break;
488  case RPT_SEVERITY_WARNING: listName = _( "warnings" ); break;
489  default: listName = _( "appropriate" ); break;
490  }
491 
492  if( rcItem->GetParent()->IsExcluded() )
493  {
494  menu.Append( 1, _( "Remove exclusion for this violation" ),
495  wxString::Format( _( "It will be placed back in the %s list" ), listName ) );
496  }
497  else
498  {
499  menu.Append( 2, _( "Exclude this violation" ),
500  wxString::Format( _( "It will be excluded from the %s list" ), listName ) );
501  }
502 
503  menu.AppendSeparator();
504 
505  if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_WARNING
506  || rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
507  {
508  // Pin to pin severities edited through pin conflict map
509  }
510  else if( settings.GetSeverity( rcItem->GetErrorCode() ) == RPT_SEVERITY_WARNING )
511  {
512  menu.Append( 4, wxString::Format( _( "Change severity to Error for all '%s' violations" ),
513  rcItem->GetErrorText() ),
514  _( "Violation severities can also be edited in the Board Setup... dialog" ) );
515  }
516  else
517  {
518  menu.Append( 5, wxString::Format( _( "Change severity to Warning for all '%s' violations" ),
519  rcItem->GetErrorText() ),
520  _( "Violation severities can also be edited in the Board Setup... dialog" ) );
521  }
522 
523  menu.Append( 6, wxString::Format( _( "Ignore all '%s' violations" ), rcItem->GetErrorText() ),
524  _( "Violations will not be checked or reported" ) );
525 
526  menu.AppendSeparator();
527 
528  if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_WARNING
529  || rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
530  {
531  menu.Append( 7, _( "Edit pin-to-pin conflict map..." ) );
532  }
533  else
534  {
535  menu.Append( 8, _( "Edit violation severities..." ),
536  _( "Open the Schematic Setup... dialog" ) );
537  }
538 
539  bool modified = false;
540 
541  switch( GetPopupMenuSelectionFromUser( menu ) )
542  {
543  case 1:
544  {
545  SCH_MARKER* marker = dynamic_cast<SCH_MARKER*>( node->m_RcItem->GetParent() );
546 
547  if( marker )
548  {
549  marker->SetExcluded( false );
550  m_parent->GetCanvas()->GetView()->Update( marker );
551 
552  // Update view
553  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->ValueChanged( node );
554  modified = true;
555  }
556  }
557  break;
558 
559  case 2:
560  {
561  SCH_MARKER* marker = dynamic_cast<SCH_MARKER*>( node->m_RcItem->GetParent() );
562 
563  if( marker )
564  {
565  marker->SetExcluded( true );
566  m_parent->GetCanvas()->GetView()->Update( marker );
567 
568  // Update view
570  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->ValueChanged( node );
571  else
572  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->DeleteCurrentItem( false );
573 
574  modified = true;
575  }
576  }
577  break;
578 
579  case 4:
580  settings.SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_ERROR );
581 
582  for( SCH_ITEM* item : m_parent->GetScreen()->Items().OfType( SCH_MARKER_T ) )
583  {
584  SCH_MARKER* marker = static_cast<SCH_MARKER*>( item );
585 
586  if( marker->GetRCItem()->GetErrorCode() == rcItem->GetErrorCode() )
587  m_parent->GetCanvas()->GetView()->Update( marker );
588  }
589 
590  // Rebuild model and view
591  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->SetProvider( m_markerProvider );
592  modified = true;
593  break;
594 
595  case 5:
596  settings.SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_WARNING );
597 
598  for( SCH_ITEM* item : m_parent->GetScreen()->Items().OfType( SCH_MARKER_T ) )
599  {
600  SCH_MARKER* marker = static_cast<SCH_MARKER*>( item );
601 
602  if( marker->GetRCItem()->GetErrorCode() == rcItem->GetErrorCode() )
603  m_parent->GetCanvas()->GetView()->Update( marker );
604  }
605 
606  // Rebuild model and view
607  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->SetProvider( m_markerProvider );
608  modified = true;
609  break;
610 
611  case 6:
612  {
613  settings.SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_IGNORE );
614 
615  if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
617 
618  SCH_SCREENS ScreenList( m_parent->Schematic().Root() );
619  ScreenList.DeleteMarkers( MARKER_BASE::MARKER_ERC, rcItem->GetErrorCode() );
620 
621  // Rebuild model and view
622  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->SetProvider( m_markerProvider );
623  modified = true;
624  }
625  break;
626 
627  case 7:
628  m_parent->ShowSchematicSetupDialog( _( "Pin Conflicts Map" ) );
629  break;
630 
631  case 8:
632  m_parent->ShowSchematicSetupDialog( _( "Violation Severity" ) );
633  break;
634  }
635 
636  if( modified )
637  {
639  redrawDrawPanel();
640  m_parent->OnModify();
641  }
642 }
EE_TYPE OfType(KICAD_T aType) const
Definition: sch_rtree.h:216
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void DeleteMarkers(enum MARKER_BASE::TYPEMARKER aMarkerTyp, int aErrorCode, bool aIncludeExclusions=true)
Delete all markers of a particular type and error code.
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:80
void updateDisplayedCounts()
Definition: dialog_erc.cpp:157
void SetSeverity(int aErrorCode, SEVERITY aSeverity)
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
void SetExcluded(bool aExcluded)
Definition: marker_base.h:95
std::shared_ptr< RC_ITEM > m_RcItem
Definition: rc_item.h:190
static RC_TREE_NODE * ToNode(wxDataViewItem aItem)
Definition: rc_item.h:205
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
SCHEMATIC & Schematic() const
int m_severities
Definition: dialog_erc.h:86
#define _(s)
Container for ERC settings.
Definition: erc_settings.h:106
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
SCH_SHEET & Root() const
Definition: schematic.h:92
EE_RTREE & Items()
Definition: sch_screen.h:102
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
ERC_SETTINGS & ErcSettings() const
Definition: schematic.cpp:174
void ShowSchematicSetupDialog(const wxString &aInitialPage=wxEmptyString)
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:197
void redrawDrawPanel()
Definition: dialog_erc.cpp:331
std::shared_ptr< RC_ITEM > GetRCItem() const
Definition: marker_base.h:100
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
Definition: sch_screen.h:551
virtual void Update(const VIEW_ITEM *aItem, int aUpdateFlags) const
For dynamic VIEWs, inform the associated VIEW that the graphical representation of this item has chan...
Definition: view.cpp:1503
SEVERITY GetSeverity(int aErrorCode) const

References _, SCH_SCREENS::DeleteMarkers(), ERCE_PIN_TO_PIN_ERROR, ERCE_PIN_TO_PIN_WARNING, SCHEMATIC::ErcSettings(), Format(), SCH_BASE_FRAME::GetCanvas(), MARKER_BASE::GetRCItem(), SCH_EDIT_FRAME::GetScreen(), ERC_SETTINGS::GetSeverity(), SCH_DRAW_PANEL::GetView(), SCH_SCREEN::Items(), m_markerProvider, m_parent, RC_TREE_NODE::m_RcItem, m_severities, MARKER_BASE::MARKER_ERC, EE_RTREE::OfType(), SCH_EDIT_FRAME::OnModify(), redrawDrawPanel(), SCHEMATIC::Root(), RPT_SEVERITY_ERROR, RPT_SEVERITY_EXCLUSION, RPT_SEVERITY_IGNORE, RPT_SEVERITY_WARNING, SCH_MARKER_T, SCH_EDIT_FRAME::Schematic(), MARKER_BASE::SetExcluded(), ERC_SETTINGS::SetSeverity(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), RC_TREE_MODEL::ToNode(), KIGFX::VIEW::Update(), and updateDisplayedCounts().

◆ OnERCItemSelected()

void DIALOG_ERC::OnERCItemSelected ( wxDataViewEvent &  aEvent)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 429 of file dialog_erc.cpp.

430 {
431  const KIID& itemID = RC_TREE_MODEL::ToUUID( aEvent.GetItem() );
432  SCH_SHEET_PATH sheet;
433  SCH_ITEM* item = m_parent->Schematic().GetSheets().GetItem( itemID, &sheet );
434 
435  if( item && item->GetClass() != wxT( "DELETED_SHEET_ITEM" ) )
436  {
437  WINDOW_THAWER thawer( m_parent );
438 
439  if( !sheet.empty() && sheet != m_parent->GetCurrentSheet() )
440  {
443 
444  m_parent->SetCurrentSheet( sheet );
446  m_parent->RedrawScreen( (wxPoint) m_parent->GetScreen()->m_ScrollCenter, false );
447  }
448 
449  m_parent->FocusOnItem( item );
450  redrawDrawPanel();
451  }
452 
453  aEvent.Skip();
454 }
void SetCurrentSheet(const SCH_SHEET_PATH &aSheet)
virtual void RedrawScreen(const wxPoint &aCenterPoint, bool aWarpPointer)
static TOOL_ACTION cancelInteractive
Definition: actions.h:62
bool RunAction(const std::string &aActionName, bool aNow=false, T aParam=NULL)
Run the specified action.
Definition: tool_manager.h:143
static KIID ToUUID(wxDataViewItem aItem)
Definition: rc_item.cpp:144
void DisplayCurrentSheet()
Draw the current sheet on the display.
Definition: hierarch.cpp:285
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
Definition: kiid.h:44
SCHEMATIC & Schematic() const
static TOOL_ACTION clearSelection
Clears the current selection.
Definition: ee_actions.h:53
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
SCH_ITEM * GetItem(const KIID &aID, SCH_SHEET_PATH *aPathOut=nullptr) const
Fetch a SCH_ITEM by ID.
SCH_SHEET_LIST GetSheets() const override
Builds and returns an updated schematic hierarchy TODO: can this be cached?
Definition: schematic.h:87
virtual wxString GetClass() const override
Return the class name.
Definition: sch_item.h:206
SCH_SHEET_PATH & GetCurrentSheet() const
void FocusOnItem(SCH_ITEM *aItem)
VECTOR2D m_ScrollCenter
Current scroll center point in logical units.
Definition: base_screen.h:100
TOOL_MANAGER * GetToolManager() const
Return the MVC controller.
Definition: tools_holder.h:54
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:197
void redrawDrawPanel()
Definition: dialog_erc.cpp:331

References ACTIONS::cancelInteractive, EE_ACTIONS::clearSelection, SCH_EDIT_FRAME::DisplayCurrentSheet(), SCH_EDIT_FRAME::FocusOnItem(), SCH_ITEM::GetClass(), SCH_EDIT_FRAME::GetCurrentSheet(), SCH_SHEET_LIST::GetItem(), SCH_EDIT_FRAME::GetScreen(), SCHEMATIC::GetSheets(), TOOLS_HOLDER::GetToolManager(), m_parent, BASE_SCREEN::m_ScrollCenter, redrawDrawPanel(), SCH_BASE_FRAME::RedrawScreen(), TOOL_MANAGER::RunAction(), SCH_EDIT_FRAME::Schematic(), SCH_EDIT_FRAME::SetCurrentSheet(), and RC_TREE_MODEL::ToUUID().

◆ OnLinkClicked()

void DIALOG_ERC::OnLinkClicked ( wxHtmlLinkEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 249 of file dialog_erc.cpp.

250 {
251  wxCommandEvent dummy;
253 
254  // We don't actually get notified when the annotation error is resolved, but we can assume
255  // that the user will take corrective action. If they don't, we can just show the infobar
256  // again.
257  m_infoBar->Hide();
258 }
static LIB_SYMBOL * dummy()
Used to draw a dummy shape when a LIB_SYMBOL is not found in library.
Definition: sch_symbol.cpp:71
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
void OnAnnotate(wxCommandEvent &event)
WX_INFOBAR * m_infoBar

References dummy(), DIALOG_ERC_BASE::m_infoBar, m_parent, and SCH_EDIT_FRAME::OnAnnotate().

Referenced by DIALOG_ERC().

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 377 of file dialog_shim.cpp.

378 {
379  if( m_firstPaintEvent )
380  {
382 
383  selectAllInTextCtrls( GetChildren() );
384 
387  else
388  KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
389 
390  m_firstPaintEvent = false;
391  }
392 
393  event.Skip();
394 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:209
bool m_firstPaintEvent
Definition: dialog_shim.h:208
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
static void selectAllInTextCtrls(wxWindowList &children)

References KIPLATFORM::UI::FixupCancelButtonCmdKeyCollision(), KIPLATFORM::UI::ForceFocus(), DIALOG_SHIM::m_firstPaintEvent, DIALOG_SHIM::m_initialFocusTarget, and selectAllInTextCtrls().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnRunERCClick()

void DIALOG_ERC::OnRunERCClick ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 261 of file dialog_erc.cpp.

262 {
263  wxBusyCursor busy;
264 
265  SCHEMATIC* sch = &m_parent->Schematic();
266 
267  m_infoBar->Hide();
268 
270  deleteAllMarkers( true );
271 
272  m_notebook->ChangeSelection( 0 ); // Display the "Tests Running..." tab
273  m_messages->Clear();
274  wxYield(); // Allow time slice to refresh Messages
275 
276  m_running = true;
277  m_sdbSizer1Cancel->SetLabel( _( "Cancel" ) );
278  m_sdbSizer1OK->Enable( false );
279  m_buttondelmarkers->Enable( false );
280  m_saveReport->Enable( false );
281 
283 
284  int itemsNotAnnotated = m_parent->CheckAnnotate(
285  []( ERCE_T aType, const wxString& aMsg, SCH_REFERENCE* aItemA, SCH_REFERENCE* aItemB )
286  {
287  std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( aType );
288  ercItem->SetErrorMessage( aMsg );
289 
290  if( aItemB )
291  ercItem->SetItems( aItemA->GetSymbol(), aItemB->GetSymbol() );
292  else
293  ercItem->SetItems( aItemA->GetSymbol() );
294 
295  SCH_MARKER* marker = new SCH_MARKER( ercItem, aItemA->GetSymbol()->GetPosition() );
296  aItemA->GetSheetPath().LastScreen()->Append( marker );
297  } );
298 
299  testErc();
300 
301  if( itemsNotAnnotated )
302  m_messages->ReportHead( wxString::Format( _( "%d symbol(s) require annotation.<br><br>" ),
303  itemsNotAnnotated ), RPT_SEVERITY_INFO );
304 
305  if( m_cancelled )
306  m_messages->Report( _( "-------- ERC cancelled by user.<br><br>" ), RPT_SEVERITY_INFO );
307  else
308  m_messages->Report( _( "ERC completed.<br><br>" ), RPT_SEVERITY_INFO );
309 
310  Raise();
311  wxYield(); // Allow time slice to refresh Messages
312 
313  m_running = false;
314  m_sdbSizer1Cancel->SetLabel( _( "Close" ) );
315  m_sdbSizer1OK->Enable( true );
316  m_buttondelmarkers->Enable( true );
317  m_saveReport->Enable( true );
318 
319  if( !m_cancelled )
320  {
321  wxMilliSleep( 500 );
322  m_notebook->ChangeSelection( 1 );
324  }
325 
326  m_ercRun = true;
328 }
void deleteAllMarkers(bool aIncludeExclusions)
Definition: dialog_erc.cpp:723
wxButton * m_buttondelmarkers
Holds all the data relating to one schematic.
Definition: schematic.h:59
bool m_running
Definition: dialog_erc.h:83
void Clear()
Delete the stored messages.
const SCH_SHEET_PATH & GetSheetPath() const
REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED) override
Report a string with a given severity.
static std::shared_ptr< ERC_ITEM > Create(int aErrorCode)
Constructs an ERC_ITEM for the given error code.
Definition: erc_item.cpp:194
void updateDisplayedCounts()
Definition: dialog_erc.cpp:157
SCH_SYMBOL * GetSymbol() const
int CheckAnnotate(ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope=ANNOTATE_ALL)
Check for annotation errors.
Definition: annotate.cpp:342
wxButton * m_sdbSizer1Cancel
wxButton * m_sdbSizer1OK
std::atomic_bool m_cancelled
SCHEMATIC & Schematic() const
#define _(s)
wxNotebook * m_notebook
ERCE_T
ERC error codes.
Definition: erc_settings.h:36
wxButton * m_saveReport
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
void testErc()
Definition: dialog_erc.cpp:339
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
virtual REPORTER & ReportHead(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED)
Places the report at the beginning of the list for objects that support ordering.
Definition: reporter.h:102
WX_INFOBAR * m_infoBar
SCH_SHEET_LIST GetSheets() const override
Builds and returns an updated schematic hierarchy TODO: can this be cached?
Definition: schematic.h:87
SCH_SCREEN * LastScreen()
wxDataViewCtrl * m_markerDataView
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:144
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44
wxPoint GetPosition() const override
Definition: sch_symbol.h:641
bool m_ercRun
Definition: dialog_erc.h:84
WX_HTML_REPORT_BOX * m_messages
void AnnotatePowerSymbols()
Silently annotate the not yet annotated power symbols of the entire hierarchy of the sheet path list.
void RecordERCExclusions()
Scan existing markers and record data from any that are Excluded.
A helper to define a symbol's reference designator in a schematic.

References _, SCH_SHEET_LIST::AnnotatePowerSymbols(), SCH_SCREEN::Append(), SCH_EDIT_FRAME::CheckAnnotate(), WX_HTML_REPORT_BOX::Clear(), ERC_ITEM::Create(), deleteAllMarkers(), KIPLATFORM::UI::ForceFocus(), Format(), SCH_SYMBOL::GetPosition(), SCH_REFERENCE::GetSheetPath(), SCHEMATIC::GetSheets(), SCH_REFERENCE::GetSymbol(), SCH_SHEET_PATH::LastScreen(), DIALOG_ERC_BASE::m_buttondelmarkers, PROGRESS_REPORTER::m_cancelled, m_ercRun, DIALOG_ERC_BASE::m_infoBar, DIALOG_ERC_BASE::m_markerDataView, DIALOG_ERC_BASE::m_messages, DIALOG_ERC_BASE::m_notebook, m_parent, m_running, DIALOG_ERC_BASE::m_saveReport, DIALOG_ERC_BASE::m_sdbSizer1Cancel, DIALOG_ERC_BASE::m_sdbSizer1OK, SCH_EDIT_FRAME::RecordERCExclusions(), WX_HTML_REPORT_BOX::Report(), REPORTER::ReportHead(), RPT_SEVERITY_INFO, SCH_EDIT_FRAME::Schematic(), testErc(), and updateDisplayedCounts().

◆ OnSaveReport()

void DIALOG_ERC::OnSaveReport ( wxCommandEvent &  aEvent)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 732 of file dialog_erc.cpp.

733 {
734  wxFileName fn( "erc." + ReportFileExtension );
735 
736  wxFileDialog dlg( this, _( "Save Report to File" ), Prj().GetProjectPath(), fn.GetFullName(),
737  ReportFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
738 
739  if( dlg.ShowModal() != wxID_OK )
740  return;
741 
742  fn = dlg.GetPath();
743 
744  if( fn.GetExt().IsEmpty() )
745  fn.SetExt( ReportFileExtension );
746 
747  if( !fn.IsAbsolute() )
748  {
749  wxString prj_path = Prj().GetProjectPath();
750  fn.MakeAbsolute( prj_path );
751  }
752 
753  if( writeReport( fn.GetFullPath() ) )
754  {
755  m_messages->Report( wxString::Format( _( "Report file '%s' created." ),
756  fn.GetFullPath() ) );
757  }
758  else
759  {
760  DisplayError( this, wxString::Format( _( "Failed to create file '%s'." ),
761  fn.GetFullPath() ) );
762  }
763 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:247
REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED) override
Report a string with a given severity.
bool writeReport(const wxString &aFullFileName)
Definition: dialog_erc.cpp:766
virtual const wxString GetProjectPath() const
Return the full path of the project.
Definition: project.cpp:122
wxString ReportFileWildcard()
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
#define _(s)
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
const std::string ReportFileExtension
WX_HTML_REPORT_BOX * m_messages

References _, DisplayError(), Format(), PROJECT::GetProjectPath(), DIALOG_ERC_BASE::m_messages, KIWAY_HOLDER::Prj(), WX_HTML_REPORT_BOX::Report(), ReportFileExtension, ReportFileWildcard(), and writeReport().

◆ OnSeverity()

void DIALOG_ERC::OnSeverity ( wxCommandEvent &  aEvent)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 689 of file dialog_erc.cpp.

690 {
691  int flag = 0;
692 
693  if( aEvent.GetEventObject() == m_showAll )
695  else if( aEvent.GetEventObject() == m_showErrors )
697  else if( aEvent.GetEventObject() == m_showWarnings )
699  else if( aEvent.GetEventObject() == m_showExclusions )
701 
702  if( aEvent.IsChecked() )
703  m_severities |= flag;
704  else if( aEvent.GetEventObject() == m_showAll )
706  else
707  m_severities &= ~flag;
708 
709  syncCheckboxes();
710 
711  // Set the provider's severity levels through the TreeModel so that the old tree
712  // can be torn down before the severity changes.
713  //
714  // It's not clear this is required, but we've had a lot of issues with wxDataView
715  // being cranky on various platforms.
716 
718 
720 }
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
void syncCheckboxes()
Definition: dialog_erc.cpp:240
wxCheckBox * m_showExclusions
void updateDisplayedCounts()
Definition: dialog_erc.cpp:157
static int RPT_SEVERITY_ALL
Definition: dialog_erc.cpp:237
void SetSeverities(int aSeverities)
Definition: rc_item.cpp:295
wxCheckBox * m_showAll
int m_severities
Definition: dialog_erc.h:86
wxCheckBox * m_showWarnings
wxCheckBox * m_showErrors

References flag, m_markerTreeModel, m_severities, DIALOG_ERC_BASE::m_showAll, DIALOG_ERC_BASE::m_showErrors, DIALOG_ERC_BASE::m_showExclusions, DIALOG_ERC_BASE::m_showWarnings, RPT_SEVERITY_ALL, RPT_SEVERITY_ERROR, RPT_SEVERITY_EXCLUSION, RPT_SEVERITY_WARNING, RC_TREE_MODEL::SetSeverities(), syncCheckboxes(), and updateDisplayedCounts().

◆ PrevMarker()

void DIALOG_ERC::PrevMarker ( )

Definition at line 645 of file dialog_erc.cpp.

646 {
647  if( m_notebook->GetSelection() != 1 )
648  m_notebook->SetSelection( 1 );
649 
651 }
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
wxNotebook * m_notebook
void PrevMarker()
Definition: rc_item.cpp:545

References m_markerTreeModel, DIALOG_ERC_BASE::m_notebook, and RC_TREE_MODEL::PrevMarker().

Referenced by EE_INSPECTION_TOOL::PrevMarker().

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Return a reference to the PROJECT associated with this KIWAY.

Definition at line 35 of file kiway_holder.cpp.

36 {
37  return Kiway().Prj();
38 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:189

References KIWAY_HOLDER::Kiway(), and KIWAY::Prj().

Referenced by PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_LIBRARY_MANAGER::addLibrary(), SYMBOL_EDIT_FRAME::addLibTableEntry(), SCH_EDIT_FRAME::AppendSchematic(), AskSaveBoardFileName(), DIALOG_SYMBOL_REMAP::backupProject(), CVPCB_MAINFRAME::buildEquivalenceList(), CVPCB_MAINFRAME::BuildLibrariesListBox(), SIM_PLOT_FRAME::canCloseWindow(), PANEL_FP_PROPERTIES_3D_MODEL::Cfg3DPath(), KICAD_MANAGER_FRAME::CloseProject(), DIALOG_GEN_FOOTPRINT_POSITION::CreateAsciiFiles(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), PCB_BASE_EDIT_FRAME::createNewLibrary(), PCB_BASE_EDIT_FRAME::CreateNewProjectLibrary(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SCH_EDIT_FRAME::CreateScreens(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_REANNOTATE::DIALOG_BOARD_REANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), DIALOG_UPDATE_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PL_DRAW_PANEL_GAL::DisplayDrawingSheet(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), SYMBOL_VIEWER_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doAutoSave(), PCB_BASE_EDIT_FRAME::doCloseWindow(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportFootprintsToLibrary(), BOARD_EDITOR_CONTROL::ExportNetlist(), DIALOG_EXPORT_SVG::ExportSVGFile(), SYMBOL_EDITOR_CONTROL::ExportSymbolAsSVG(), SYMBOL_EDITOR_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DIALOG_GENDRILL::GenDrillAndMapFiles(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), SYMBOL_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), PCB_BASE_EDIT_FRAME::GetDesignRulesPath(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), SCH_BASE_FRAME::GetLibSymbol(), DIALOG_PLOT_SCHEMATIC::getOutputPath(), KICAD_MANAGER_FRAME::GetProjectFileName(), SYMBOL_VIEWER_FRAME::GetSelectedSymbol(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), DIALOG_CONFIG_EQUFILES::Init(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), SCH_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), CVPCB_MAINFRAME::LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectSettings(), PCB_EDIT_FRAME::LoadProjectSettings(), SIM_PLOT_FRAME::LoadSettings(), SCH_EDIT_FRAME::LoadSheetFromFile(), SYMBOL_EDIT_FRAME::LoadSymbolFromCurrentLib(), EDA_BASE_FRAME::LoadWindowState(), SIM_PLOT_FRAME::menuSaveWorkbook(), SIM_PLOT_FRAME::menuSaveWorkbookAs(), PANEL_FP_PROPERTIES_3D_MODEL::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), PANEL_FP_PROPERTIES_3D_MODEL::OnAdd3DModel(), DIALOG_BOARD_SETUP::OnAuxiliaryAction(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), TEXT_BUTTON_URL::OnButtonClick(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), DIALOG_EXPORT_STEP::onExportButton(), DIALOG_GENDRILL::OnGenReportFile(), KICAD_MANAGER_FRAME::OnIdle(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), DIALOG_CONFIG_EQUFILES::OnOkClick(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), DIALOG_NETLIST::OnOpenNetlistClick(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_BOARD_SETUP::OnPageChange(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_LABEL_EDITOR::onScintillaCharAdded(), PROPERTIES_FRAME::onScintillaCharAdded(), DIALOG_SCH_EDIT_ONE_FIELD::onScintillaCharAdded(), DIALOG_SPICE_MODEL::onSelectLibrary(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::OpenProjectFiles(), PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL(), PANEL_PREVIEW_3D_MODEL::PANEL_PREVIEW_3D_MODEL(), SCH_EDITOR_CONTROL::Paste(), FOOTPRINT_EDITOR_CONTROL::PasteFootprint(), SCH_BASE_FRAME::PickSymbolFromLibTree(), DIALOG_PLOT::Plot(), DIALOG_PLOT_SCHEMATIC::plotOneSheetDxf(), DIALOG_PLOT_SCHEMATIC::plotOneSheetHpgl(), DIALOG_CHOOSE_SYMBOL::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), EDA_DRAW_FRAME::PrintDrawingSheet(), SCH_EDIT_FRAME::PrintPage(), KICAD_MANAGER_FRAME::PrintPrjInfo(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SYMBOL_VIEWER_FRAME::ReCreateSymbolList(), PANEL_FP_PROPERTIES_3D_MODEL::ReloadModelsFromFootprint(), EDA_3D_VIEWER_FRAME::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_EDIT_FRAME::Save_File(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), SYMBOL_EDIT_FRAME::saveLibrary(), PCB_EDIT_FRAME::SavePcbFile(), SCH_EDIT_FRAME::SaveProject(), PCB_EDIT_FRAME::SaveProjectSettings(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SIM_PLOT_FRAME::SaveSettings(), EDA_BASE_FRAME::SaveSettings(), SYMBOL_EDIT_FRAME::saveSymbolAs(), SCH_BASE_FRAME::saveSymbolLibTables(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), PCB_BASE_FRAME::SelectLibrary(), SYMBOL_EDIT_FRAME::SelectLibraryFromList(), PCB_BASE_EDIT_FRAME::selectLibTable(), SYMBOL_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), SYMBOL_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), SYMBOL_EDIT_FRAME::SetCurSymbol(), GERBVIEW_FRAME::SetPageSettings(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_SYMBOL::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), SYMBOL_VIEWER_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), SYMBOL_LIBRARY_MANAGER::symTable(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER_FRAME::takeScreenshot(), PANEL_SETUP_RULES::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), SIM_PLOT_FRAME::updateTitle(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), SCH_EDIT_FRAME::UpdateTitle(), PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), PANEL_FP_PROPERTIES_3D_MODEL::~PANEL_FP_PROPERTIES_3D_MODEL(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().

◆ redrawDrawPanel()

void DIALOG_ERC::redrawDrawPanel ( )
private

Definition at line 331 of file dialog_erc.cpp.

332 {
333  WINDOW_THAWER thawer( m_parent );
334 
335  m_parent->GetCanvas()->Refresh();
336 }
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
Update the board display after modifying it by a python script (note: it is automatically called by a...

References SCH_BASE_FRAME::GetCanvas(), m_parent, and EDA_DRAW_PANEL_GAL::Refresh().

Referenced by ExcludeMarker(), OnERCItemRClick(), and OnERCItemSelected().

◆ Report()

void DIALOG_ERC::Report ( const wxString &  aMessage)
overridevirtual

Display aMessage in the progress bar dialog.

Reimplemented from PROGRESS_REPORTER.

Definition at line 151 of file dialog_erc.cpp.

152 {
153  m_messages->Report( aMessage );
154 }
REPORTER & Report(const wxString &aText, SEVERITY aSeverity=RPT_SEVERITY_UNDEFINED) override
Report a string with a given severity.
WX_HTML_REPORT_BOX * m_messages

References DIALOG_ERC_BASE::m_messages, and WX_HTML_REPORT_BOX::Report().

◆ resetSize()

void DIALOG_SHIM::resetSize ( )
protectedinherited

Clear the existing dialog size and position.

This will cause the dialog size to be clear so the next time the dialog is shown the sizers will layout the dialog accordingly. This useful when there are dialog windows that size changes due to layout dependency hidden controls.

Definition at line 286 of file dialog_shim.cpp.

287 {
288  const char* hash_key;
289 
290  if( m_hash_key.size() )
291  {
292  // a special case like EDA_LIST_DIALOG, which has multiple uses.
293  hash_key = m_hash_key.c_str();
294  }
295  else
296  {
297  hash_key = typeid(*this).name();
298  }
299 
300  std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
301 
302  if( it == class_map.end() )
303  return;
304 
305  wxRect rect = it->second;
306  rect.SetSize( wxSize( 0, 0 ) );
307  class_map[ hash_key ] = rect;
308 }
std::string m_hash_key
Definition: dialog_shim.h:199
static std::unordered_map< std::string, wxRect > class_map

References class_map, and DIALOG_SHIM::m_hash_key.

Referenced by DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES().

◆ SetCurrentProgress()

void PROGRESS_REPORTER::SetCurrentProgress ( double  aProgress)
virtualinherited

◆ SetInitialFocus()

void DIALOG_SHIM::SetInitialFocus ( wxWindow *  aWindow)
inlineinherited

Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown.

Definition at line 97 of file dialog_shim.h.

98  {
99  m_initialFocusTarget = aWindow;
100  }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:209

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by DIALOG_BOM::DIALOG_BOM(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_FIND::DIALOG_FIND(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_INSPECTION_REPORTER::DIALOG_INSPECTION_REPORTER(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LINE_WIRE_BUS_PROPERTIES::DIALOG_LINE_WIRE_BUS_PROPERTIES(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SCH_FIND::DIALOG_SCH_FIND(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), EDA_VIEW_SWITCHER::EDA_VIEW_SWITCHER(), HK_PROMPT_DIALOG::HK_PROMPT_DIALOG(), DIALOG_EDIT_ONE_FIELD::init(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchAllClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchIDClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchRefClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchSelectedClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchValueClicked(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), SYMBOL_EDIT_FRAME::saveSymbolAs(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_RULE_AREA_PROPERTIES::TransferDataToWindow(), DIALOG_COPPER_ZONE::TransferDataToWindow(), and WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG().

◆ SetKiway()

void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

It is only used for debugging, since "this" is not a wxWindow*.

"this" is a KIWAY_HOLDER mix-in.

Parameters
aDestis the recipient of aKiway pointer.
aKiwayis often from a parent window or from KIFACE::CreateWindow().

Definition at line 42 of file kiway_holder.cpp.

43 {
44 #if defined(DEBUG)
45  // offer a trap point for debugging most any window
46  wxASSERT( aDest );
47  if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
48  {
49  int breakhere=1;
50  (void) breakhere;
51  }
52 #endif
53 
54  (void) aDest;
55 
56  m_kiway = aKiway;
57 }
KIWAY * m_kiway
Definition: kiway_holder.h:75
const char * name
Definition: DXF_plotter.cpp:59

References KIWAY_HOLDER::m_kiway, and name.

Referenced by BM2CMP_FRAME::BM2CMP_FRAME(), PCB::IFACE::CreateWindow(), InvokePcbLibTableEditor(), InvokeSchEditSymbolLibTable(), PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

◆ SetMaxProgress()

void PROGRESS_REPORTER::SetMaxProgress ( int  aMaxProgress)
inherited

Fix the value that gives the 100 percent progress bar length (inside the current virtual zone).

Definition at line 71 of file progress_reporter.cpp.

72 {
73  m_maxProgress.store( aMaxProgress );
74 }
std::atomic_int m_maxProgress

References PROGRESS_REPORTER::m_maxProgress.

Referenced by AR_AUTOPLACER::AutoplaceFootprints(), ZONE_FILLER::Fill(), FOOTPRINT_LIST_IMPL::ReadFootprintFiles(), and CN_CONNECTIVITY_ALGO::searchConnections().

◆ SetNumPhases()

void PROGRESS_REPORTER::SetNumPhases ( int  aNumPhases)
inherited

Set the number of phases.

Definition at line 89 of file progress_reporter.cpp.

90 {
91  m_numPhases = aNumPhases;
92 }
std::atomic_int m_numPhases

References PROGRESS_REPORTER::m_numPhases.

◆ SetPosition()

void DIALOG_SHIM::SetPosition ( const wxPoint &  aNewPosition)
inherited

Force the position of the dialog to a new position.

Parameters
aNewPositionis the new forced position

Definition at line 189 of file dialog_shim.cpp.

190 {
191  wxDialog::SetPosition( aNewPosition );
192 
193  // Now update the stored position:
194  const char* hash_key;
195 
196  if( m_hash_key.size() )
197  {
198  // a special case like EDA_LIST_DIALOG, which has multiple uses.
199  hash_key = m_hash_key.c_str();
200  }
201  else
202  {
203  hash_key = typeid(*this).name();
204  }
205 
206  std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
207 
208  if( it == class_map.end() )
209  return;
210 
211  wxRect rect = it->second;
212  rect.SetPosition( aNewPosition );
213 
214  class_map[ hash_key ] = rect;
215 }
std::string m_hash_key
Definition: dialog_shim.h:199
static std::unordered_map< std::string, wxRect > class_map
void SetPosition(const wxString &aStr, const wxString &aDefaultMeasurementUnit, int *aX, int *aY, const wxString &aActualConversion)

References class_map, DIALOG_SHIM::m_hash_key, and PCAD2KICAD::SetPosition().

Referenced by DIALOG_SCH_FIND::DIALOG_SCH_FIND(), and PCB_BASE_FRAME::SelectOneLayer().

◆ setSizeInDU()

void DIALOG_SHIM::setSizeInDU ( int  x,
int  y 
)
protectedinherited

Set the dialog to the given dimensions in "dialog units".

These are units equivalent to 4* the average character width and 8* the average character height, allowing a dialog to be sized in a way that scales it with the system font.

Definition at line 161 of file dialog_shim.cpp.

162 {
163  wxSize sz( x, y );
164  SetSize( ConvertDialogToPixels( sz ) );
165 }

Referenced by DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), and HTML_MESSAGE_BOX::SetDialogSizeInDU().

◆ SetTitle()

virtual void PROGRESS_REPORTER::SetTitle ( const wxString &  aTitle)
inlinevirtualinherited

Change the title displayed on the window caption.

Has meaning only for some reporters. Does nothing for others.

Warning
This should only be called from the main thread.

Reimplemented in WX_PROGRESS_REPORTER.

Definition at line 115 of file progress_reporter.h.

115 {}

Referenced by AR_AUTOPLACER::AutoplaceFootprints().

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 218 of file dialog_shim.cpp.

219 {
220  bool ret;
221  const char* hash_key;
222 
223  if( m_hash_key.size() )
224  {
225  // a special case like EDA_LIST_DIALOG, which has multiple uses.
226  hash_key = m_hash_key.c_str();
227  }
228  else
229  {
230  hash_key = typeid(*this).name();
231  }
232 
233  // Show or hide the window. If hiding, save current position and size.
234  // If showing, use previous position and size.
235  if( show )
236  {
237 #ifndef __WINDOWS__
238  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
239 #endif
240  ret = wxDialog::Show( show );
241 
242  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
243  wxRect savedDialogRect = class_map[ hash_key ];
244 
245  if( savedDialogRect.GetSize().x != 0 && savedDialogRect.GetSize().y != 0 )
246  {
247  if( m_useCalculatedSize )
248  {
249  SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
250  wxDialog::GetSize().x, wxDialog::GetSize().y, 0 );
251  }
252  else
253  {
254  SetSize( savedDialogRect.GetPosition().x, savedDialogRect.GetPosition().y,
255  std::max( wxDialog::GetSize().x, savedDialogRect.GetSize().x ),
256  std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
257  0 );
258  }
259  }
260  else if( m_initialSize != wxDefaultSize )
261  SetSize( m_initialSize );
262 
263  // Be sure that the dialog appears in a visible area
264  // (the dialog position might have been stored at the time when it was
265  // shown on another display)
266  if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
267  Centre();
268  }
269  else
270  {
271  // Save the dialog's position & size before hiding, using classname as key
272  class_map[ hash_key ] = wxRect( wxDialog::GetPosition(), wxDialog::GetSize() );
273 
274 #ifdef __WXMAC__
275  if ( m_eventLoop )
276  m_eventLoop->Exit( GetReturnCode() ); // Needed for APP-MODAL dlgs on OSX
277 #endif
278 
279  ret = wxDialog::Show( show );
280  }
281 
282  return ret;
283 }
std::string m_hash_key
Definition: dialog_shim.h:199
static std::unordered_map< std::string, wxRect > class_map
bool m_useCalculatedSize
Definition: dialog_shim.h:203
wxSize m_initialSize
Definition: dialog_shim.h:221

References class_map, DIALOG_SHIM::m_hash_key, DIALOG_SHIM::m_initialSize, and DIALOG_SHIM::m_useCalculatedSize.

Referenced by FOOTPRINT_EDITOR_CONTROL::CheckFootprint(), DIALOG_SHIM::EndQuasiModal(), GROUP_TOOL::GroupProperties(), EE_INSPECTION_TOOL::NextMarker(), DRC_TOOL::NextMarker(), SCH_EDIT_FRAME::OnAnnotate(), DIALOG_DRC::OnDRCItemDClick(), OnERCItemDClick(), DIALOG_CLEANUP_GRAPHICS::OnLeftDClickItem(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnLeftDClickItem(), DIALOG_FOOTPRINT_CHECKER::OnLeftDClickItem(), GROUP_TOOL::PickNewMember(), POSITION_RELATIVE_TOOL::PositionRelative(), EE_INSPECTION_TOOL::PrevMarker(), DRC_TOOL::PrevMarker(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), EDA_VIEW_SWITCHER::Show(), DIALOG_PAD_PROPERTIES::Show(), DRC_TOOL::ShowDRCDialog(), EE_INSPECTION_TOOL::ShowERCDialog(), SCH_EDIT_FRAME::ShowFindReplaceDialog(), HTML_MESSAGE_BOX::ShowModeless(), DIALOG_SHIM::ShowQuasiModal(), DIALOG_POSITION_RELATIVE::UpdateAnchor(), and SCH_EDIT_FRAME::UpdateHierarchyNavigator().

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 420 of file dialog_shim.cpp.

421 {
422  // This is an exception safe way to zero a pointer before returning.
423  // Yes, even though DismissModal() clears this first normally, this is
424  // here in case there's an exception before the dialog is dismissed.
425  struct NULLER
426  {
427  void*& m_what;
428  NULLER( void*& aPtr ) : m_what( aPtr ) {}
429  ~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
430  } clear_this( (void*&) m_qmodal_loop );
431 
432  // release the mouse if it's currently captured as the window having it
433  // will be disabled when this dialog is shown -- but will still keep the
434  // capture making it impossible to do anything in the modal dialog itself
435  wxWindow* win = wxWindow::GetCapture();
436  if( win )
437  win->ReleaseMouse();
438 
439  // Get the optimal parent
440  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
441 
442  wxASSERT_MSG( !m_qmodal_parent_disabler,
443  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
444 
445  // quasi-modal: disable only my "optimal" parent
447 
448  // Apple in its infinite wisdom will raise a disabled window before even passing
449  // us the event, so we have no way to stop it. Instead, we must set an order on
450  // the windows so that the quasi-modal will be pushed in front of the disabled
451  // window when it is raised.
453 
454  Show( true );
455 
456  m_qmodal_showing = true;
457 
458  WX_EVENT_LOOP event_loop;
459 
460  m_qmodal_loop = &event_loop;
461 
462  event_loop.Run();
463 
464  m_qmodal_showing = false;
465 
466  return GetReturnCode();
467 }
bool m_qmodal_showing
Definition: dialog_shim.h:213
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:211
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:214
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:43
void ReparentQuasiModal(wxNonOwnedWindow *aWindow)
Move a window's parent to be the top-level window and force the window to be on top.
Definition: gtk/ui.cpp:65

References DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, KIPLATFORM::UI::ReparentQuasiModal(), DIALOG_SHIM::Show(), and WX_EVENT_LOOP.

Referenced by SCH_EDIT_TOOL::ChangeSymbols(), S3D::Configure3DPaths(), COMMON_CONTROL::ConfigurePaths(), MICROWAVE_TOOL::createFootprint(), MICROWAVE_TOOL::createMicrowaveInductor(), SCH_DRAWING_TOOLS::createNewText(), SYMBOL_EDITOR_EDIT_TOOL::editFieldProperties(), SCH_EDIT_TOOL::editFieldText(), SCH_EDITOR_CONTROL::EditSymbolFields(), SYMBOL_EDITOR_EDIT_TOOL::editSymbolProperties(), GLOBAL_EDIT_TOOL::EditTracksAndVias(), GLOBAL_EDIT_TOOL::ExchangeFootprints(), InvokeCopperZonesEditor(), InvokeDialogCreateBOM(), InvokeDialogEditSymbolsLibId(), InvokeDialogRescueEach(), InvokeNonCopperZonesEditor(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_TOOL::Properties(), EDIT_TOOL::Properties(), SCH_EDITOR_CONTROL::RemapSymbols(), S3D::Select3DModel(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowDimensionPropertiesDialog(), PCB_EDIT_FRAME::ShowExchangeFootprintsDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), PCB_BASE_EDIT_FRAME::ShowGraphicItemPropertiesDialog(), PCB_BASE_FRAME::ShowPadPropertiesDialog(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), and PCB_BASE_EDIT_FRAME::ShowTextPropertiesDialog().

◆ syncCheckboxes()

◆ testErc()

void DIALOG_ERC::testErc ( )
private

Definition at line 339 of file dialog_erc.cpp.

340 {
341  wxFileName fn;
342 
343  SCHEMATIC* sch = &m_parent->Schematic();
344 
345  // Build the whole sheet list in hierarchy (sheet, not screen)
347 
348  SCH_SCREENS screens( sch->Root() );
349  ERC_SETTINGS& settings = sch->ErcSettings();
350  ERC_TESTER tester( sch );
351 
352  // Test duplicate sheet names inside a given sheet. While one can have multiple references
353  // to the same file, each must have a unique name.
354  if( settings.IsTestEnabled( ERCE_DUPLICATE_SHEET_NAME ) )
355  {
356  AdvancePhase( _( "Checking sheet names..." ) );
357  tester.TestDuplicateSheetNames( true );
358  }
359 
360  if( settings.IsTestEnabled( ERCE_BUS_ALIAS_CONFLICT ) )
361  {
362  AdvancePhase( _( "Checking bus conflicts..." ) );
363  tester.TestConflictingBusAliases();
364  }
365 
366  // The connection graph has a whole set of ERC checks it can run
367  AdvancePhase( _( "Checking conflicts..." ) );
369  sch->ConnectionGraph()->RunERC();
370 
371  // Test is all units of each multiunit symbol have the same footprint assigned.
372  if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_FP ) )
373  {
374  AdvancePhase( _( "Checking footprints..." ) );
375  tester.TestMultiunitFootprints();
376  }
377 
378  AdvancePhase( _( "Checking pins..." ) );
379 
380  if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_NET ) )
381  tester.TestMultUnitPinConflicts();
382 
383  // Test pins on each net against the pin connection table
384  if( settings.IsTestEnabled( ERCE_PIN_TO_PIN_ERROR ) )
385  tester.TestPinToPin();
386 
387  // Test similar labels (i;e. labels which are identical when
388  // using case insensitive comparisons)
389  if( settings.IsTestEnabled( ERCE_SIMILAR_LABELS ) )
390  {
391  AdvancePhase( _( "Checking labels..." ) );
392  tester.TestSimilarLabels();
393  }
394 
395  if( settings.IsTestEnabled( ERCE_UNRESOLVED_VARIABLE ) )
396  {
397  AdvancePhase( _( "Checking for unresolved variables..." ) );
398  tester.TestTextVars( m_parent->GetCanvas()->GetView()->GetDrawingSheet() );
399  }
400 
401  if( settings.IsTestEnabled( ERCE_NOCONNECT_CONNECTED ) )
402  {
403  AdvancePhase( _( "Checking no connect pins for connections..." ) );
404  tester.TestNoConnectPins();
405  }
406 
407  if( settings.IsTestEnabled( ERCE_LIB_SYMBOL_ISSUES ) )
408  {
409  AdvancePhase( _( "Checking for library symbol issues..." ) );
410  tester.TestLibSymbolIssues();
411  }
412 
414 
415  // Display diags:
417 
418  // Display new markers from the current screen:
419  for( SCH_ITEM* marker : m_parent->GetScreen()->Items().OfType( SCH_MARKER_T ) )
420  {
421  m_parent->GetCanvas()->GetView()->Remove( marker );
422  m_parent->GetCanvas()->GetView()->Add( marker );
423  }
424 
425  m_parent->GetCanvas()->Refresh();
426 }
virtual void AdvancePhase()
Use the next available virtual zone of the dialog progress bar.
EE_TYPE OfType(KICAD_T aType) const
Definition: sch_rtree.h:216
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
Different units of the same symbol have different footprints assigned.
Definition: erc_settings.h:51
void SetProvider(RC_ITEMS_PROVIDER *aProvider)
Definition: rc_item.cpp:289
void RecalculateConnections(SCH_CLEANUP_FLAGS aCleanupFlags)
Generate the connection data for the entire schematic hierarchy.
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:81
Holds all the data relating to one schematic.
Definition: schematic.h:59
CONNECTION_GRAPH * ConnectionGraph() const override
Definition: schematic.h:131
virtual void Remove(VIEW_ITEM *aItem)
Remove a VIEW_ITEM from the view.
Definition: view.cpp:351
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:80
void ResolveERCExclusions()
Update markers to match recorded exclusions.
Definition: erc.h:47
Library symbol changed from current symbol in schematic or the library symbol link no longer valid.
Definition: erc_settings.h:66
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
Shared pin in a multi-unit symbol is connected to more than one net.
Definition: erc_settings.h:53
2 labels are equal for case insensitive comparisons.
Definition: erc_settings.h:50
SCHEMATIC & Schematic() const
#define _(s)
Container for ERC settings.
Definition: erc_settings.h:106
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
A text variable could not be resolved.
Definition: erc_settings.h:64
A no connect symbol is connected to more than 1 pin.
Definition: erc_settings.h:47
SCH_SHEET_LIST GetSheets() const override
Builds and returns an updated schematic hierarchy TODO: can this be cached?
Definition: schematic.h:87
SCH_SHEET & Root() const
Definition: schematic.h:92
EE_RTREE & Items()
Definition: sch_screen.h:102
virtual void Refresh(bool aEraseBackground=true, const wxRect *aRect=nullptr) override
Update the board display after modifying it by a python script (note: it is automatically called by a...
Conflicting bus alias definitions across sheets.
Definition: erc_settings.h:55
void AnnotatePowerSymbols()
Silently annotate the not yet annotated power symbols of the entire hierarchy of the sheet path list.
virtual void Add(VIEW_ITEM *aItem, int aDrawPriority=-1)
Add a VIEW_ITEM to the view.
Definition: view.cpp:321
DS_PROXY_VIEW_ITEM * GetDrawingSheet() const
Definition: sch_view.h:97
ERC_SETTINGS & ErcSettings() const
Definition: schematic.cpp:174
Duplicate sheet names within a given sheet.
Definition: erc_settings.h:40
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:197
int RunERC()
Runs electrical rule checks on the connectivity graph.
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
Definition: sch_screen.h:551

References _, KIGFX::VIEW::Add(), PROGRESS_REPORTER::AdvancePhase(), SCH_SHEET_LIST::AnnotatePowerSymbols(), SCHEMATIC::ConnectionGraph(), ERCE_BUS_ALIAS_CONFLICT, ERCE_DIFFERENT_UNIT_FP, ERCE_DIFFERENT_UNIT_NET, ERCE_DUPLICATE_SHEET_NAME, ERCE_LIB_SYMBOL_ISSUES, ERCE_NOCONNECT_CONNECTED, ERCE_PIN_TO_PIN_ERROR, ERCE_SIMILAR_LABELS, ERCE_UNRESOLVED_VARIABLE, SCHEMATIC::ErcSettings(), SCH_BASE_FRAME::GetCanvas(), KIGFX::SCH_VIEW::GetDrawingSheet(), SCH_EDIT_FRAME::GetScreen(), SCHEMATIC::GetSheets(), SCH_DRAW_PANEL::GetView(), SCH_SCREEN::Items(), m_markerProvider, m_markerTreeModel, m_parent, NO_CLEANUP, EE_RTREE::OfType(), SCH_EDIT_FRAME::RecalculateConnections(), EDA_DRAW_PANEL_GAL::Refresh(), KIGFX::VIEW::Remove(), SCH_EDIT_FRAME::ResolveERCExclusions(), SCHEMATIC::Root(), CONNECTION_GRAPH::RunERC(), SCH_MARKER_T, SCH_EDIT_FRAME::Schematic(), RC_TREE_MODEL::SetProvider(), ERC_TESTER::TestConflictingBusAliases(), ERC_TESTER::TestDuplicateSheetNames(), ERC_TESTER::TestLibSymbolIssues(), ERC_TESTER::TestMultiunitFootprints(), ERC_TESTER::TestMultUnitPinConflicts(), ERC_TESTER::TestNoConnectPins(), ERC_TESTER::TestPinToPin(), ERC_TESTER::TestSimilarLabels(), and ERC_TESTER::TestTextVars().

Referenced by OnRunERCClick().

◆ updateDisplayedCounts()

void DIALOG_ERC::updateDisplayedCounts ( )
private

Definition at line 157 of file dialog_erc.cpp.

158 {
159  int numErrors = 0;
160  int numWarnings = 0;
161  int numExcluded = 0;
162 
163  if( m_markerProvider )
164  {
168  }
169 
170  if( !m_ercRun )
171  {
172  numErrors = -1;
173  numWarnings = -1;
174  }
175 
179 }
NUMBER_BADGE * m_errorsBadge
void UpdateNumber(int aNumber, SEVERITY aSeverity)
Update the number displayed on the badge.
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:80
virtual int GetCount(int aSeverity=-1) const =0
NUMBER_BADGE * m_warningsBadge
NUMBER_BADGE * m_exclusionsBadge
bool m_ercRun
Definition: dialog_erc.h:84

References RC_ITEMS_PROVIDER::GetCount(), m_ercRun, DIALOG_ERC_BASE::m_errorsBadge, DIALOG_ERC_BASE::m_exclusionsBadge, m_markerProvider, DIALOG_ERC_BASE::m_warningsBadge, RPT_SEVERITY_ERROR, RPT_SEVERITY_EXCLUSION, RPT_SEVERITY_WARNING, and NUMBER_BADGE::UpdateNumber().

Referenced by DIALOG_ERC(), ExcludeMarker(), OnEraseDrcMarkersClick(), OnERCItemRClick(), OnRunERCClick(), and OnSeverity().

◆ updateUI()

bool DIALOG_ERC::updateUI ( )
overridevirtual

Implements PROGRESS_REPORTER.

Definition at line 129 of file dialog_erc.cpp.

130 {
131  // If ERC checks ever get slow enough we'll want a progress indicator...
132  //
133  // double cur = (double) m_progress.load() / m_maxProgress;
134  // cur = std::max( 0.0, std::min( cur, 1.0 ) );
135  //
136  // m_gauge->SetValue( KiROUND( cur * 1000.0 ) );
137  // wxSafeYield( this );
138 
139  return !m_cancelled;
140 }
std::atomic_bool m_cancelled

References PROGRESS_REPORTER::m_cancelled.

◆ vertPixelsFromDU()

int DIALOG_SHIM::vertPixelsFromDU ( int  y) const
protectedinherited

Convert an integer number of dialog units to pixels, vertically.

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 175 of file dialog_shim.cpp.

176 {
177  wxSize sz( 0, y );
178  return ConvertDialogToPixels( sz ).y;
179 }

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

◆ writeReport()

bool DIALOG_ERC::writeReport ( const wxString &  aFullFileName)
private

Definition at line 766 of file dialog_erc.cpp.

767 {
768  wxFFile file( aFullFileName, wxT( "wt" ) );
769 
770  if( !file.IsOpened() )
771  return false;
772 
773  wxString msg = wxString::Format( _( "ERC report (%s, Encoding UTF8)\n" ), DateAndTime() );
774 
775  std::map<KIID, EDA_ITEM*> itemMap;
776 
777  int err_count = 0;
778  int warn_count = 0;
779  int total_count = 0;
780  SCH_SHEET_LIST sheetList = m_parent->Schematic().GetSheets();
781 
782  sheetList.FillItemMap( itemMap );
783 
784  ERC_SETTINGS& settings = m_parent->Schematic().ErcSettings();
785 
786  for( unsigned i = 0; i < sheetList.size(); i++ )
787  {
788  msg << wxString::Format( _( "\n***** Sheet %s\n" ), sheetList[i].PathHumanReadable() );
789 
790  for( SCH_ITEM* aItem : sheetList[i].LastScreen()->Items().OfType( SCH_MARKER_T ) )
791  {
792  const SCH_MARKER* marker = static_cast<const SCH_MARKER*>( aItem );
793  RC_ITEM* item = marker->GetRCItem().get();
794  SEVERITY severity = settings.GetSeverity( item->GetErrorCode() );
795 
796  if( marker->GetMarkerType() != MARKER_BASE::MARKER_ERC )
797  continue;
798 
799  total_count++;
800 
801  switch( severity )
802  {
803  case RPT_SEVERITY_ERROR: err_count++; break;
804  case RPT_SEVERITY_WARNING: warn_count++; break;
805  default: break;
806  }
807 
808  msg << marker->GetRCItem()->ShowReport( GetUserUnits(), severity, itemMap );
809  }
810  }
811 
812  msg << wxString::Format( _( "\n ** ERC messages: %d Errors %d Warnings %d\n" ),
813  total_count, err_count, warn_count );
814 
815  // Currently: write report using UTF8 (as usual in Kicad).
816  // TODO: see if we can use the current encoding page (mainly for Windows users),
817  // Or other format (HTML?)
818  file.Write( msg );
819 
820  // wxFFile dtor will close the file.
821 
822  return true;
823 }
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
SEVERITY
Definition: ui_common.h:100
A holder for a rule check item, DRC in Pcbnew or ERC in Eeschema.
Definition: rc_item.h:74
EDA_UNITS GetUserUnits() const
Definition: dialog_shim.h:119
void FillItemMap(std::map< KIID, EDA_ITEM * > &aMap)
Fill an item cache for temporary use when many items need to be fetched.
int GetErrorCode() const
Definition: rc_item.h:137
SCHEMATIC & Schematic() const
#define _(s)
Container for ERC settings.
Definition: erc_settings.h:106
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:78
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
SCH_SHEET_LIST GetSheets() const override
Builds and returns an updated schematic hierarchy TODO: can this be cached?
Definition: schematic.h:87
enum TYPEMARKER GetMarkerType() const
Definition: marker_base.h:92
ERC_SETTINGS & ErcSettings() const
Definition: schematic.cpp:174
wxString DateAndTime()
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:197
std::shared_ptr< RC_ITEM > GetRCItem() const
Definition: marker_base.h:100
SEVERITY GetSeverity(int aErrorCode) const

References _, DateAndTime(), SCHEMATIC::ErcSettings(), SCH_SHEET_LIST::FillItemMap(), Format(), RC_ITEM::GetErrorCode(), MARKER_BASE::GetMarkerType(), MARKER_BASE::GetRCItem(), ERC_SETTINGS::GetSeverity(), SCHEMATIC::GetSheets(), DIALOG_SHIM::GetUserUnits(), m_parent, MARKER_BASE::MARKER_ERC, RPT_SEVERITY_ERROR, RPT_SEVERITY_WARNING, SCH_MARKER_T, and SCH_EDIT_FRAME::Schematic().

Referenced by OnSaveReport().

Member Data Documentation

◆ m_buttondelmarkers

wxButton* DIALOG_ERC_BASE::m_buttondelmarkers
protectedinherited

◆ m_buttonsSizer

wxBoxSizer* DIALOG_ERC_BASE::m_buttonsSizer
protectedinherited

Definition at line 66 of file dialog_erc_base.h.

Referenced by DIALOG_ERC_BASE::DIALOG_ERC_BASE().

◆ m_cancelled

std::atomic_bool PROGRESS_REPORTER::m_cancelled
protectedinherited

◆ m_ercRun

bool DIALOG_ERC::m_ercRun
private

Definition at line 84 of file dialog_erc.h.

Referenced by OnEraseDrcMarkersClick(), OnRunERCClick(), and updateDisplayedCounts().

◆ m_errorsBadge

NUMBER_BADGE* DIALOG_ERC_BASE::m_errorsBadge
protectedinherited

◆ m_exclusionsBadge

NUMBER_BADGE* DIALOG_ERC_BASE::m_exclusionsBadge
protectedinherited

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 208 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_hash_key

◆ m_infoBar

WX_INFOBAR* DIALOG_ERC_BASE::m_infoBar
protectedinherited

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 209 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint(), and DIALOG_SHIM::SetInitialFocus().

◆ m_initialSize

wxSize DIALOG_SHIM::m_initialSize
protectedinherited

Definition at line 221 of file dialog_shim.h.

Referenced by DIALOG_SHIM::Show().

◆ m_markerDataView

wxDataViewCtrl* DIALOG_ERC_BASE::m_markerDataView
protectedinherited

◆ m_markerProvider

RC_ITEMS_PROVIDER* DIALOG_ERC::m_markerProvider
private

◆ m_markerTreeModel

RC_TREE_MODEL* DIALOG_ERC::m_markerTreeModel
private

◆ m_maxProgress

◆ m_messages

WX_HTML_REPORT_BOX* DIALOG_ERC_BASE::m_messages
protectedinherited

◆ m_msgChanged

bool PROGRESS_REPORTER::m_msgChanged
protectedinherited

◆ m_mutex

std::mutex PROGRESS_REPORTER::m_mutex
mutableprotectedinherited

◆ m_notebook

wxNotebook* DIALOG_ERC_BASE::m_notebook
protectedinherited

◆ m_numPhases

std::atomic_int PROGRESS_REPORTER::m_numPhases
protectedinherited

◆ m_parent

◆ m_parentFrame

EDA_BASE_FRAME* DIALOG_SHIM::m_parentFrame
protectedinherited

◆ m_phase

std::atomic_int PROGRESS_REPORTER::m_phase
protectedinherited

◆ m_progress

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 211 of file dialog_shim.h.

Referenced by DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

◆ m_qmodal_parent_disabler

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited

◆ m_qmodal_showing

bool DIALOG_SHIM::m_qmodal_showing
protectedinherited

Definition at line 213 of file dialog_shim.h.

Referenced by DIALOG_SHIM::IsQuasiModal(), and DIALOG_SHIM::ShowQuasiModal().

◆ m_rptMessage

wxString PROGRESS_REPORTER::m_rptMessage
protectedinherited

◆ m_running

bool DIALOG_ERC::m_running
private

Definition at line 83 of file dialog_erc.h.

Referenced by OnCancelClick(), and OnRunERCClick().

◆ m_saveReport

wxButton* DIALOG_ERC_BASE::m_saveReport
protectedinherited

◆ m_sdbSizer1

wxStdDialogButtonSizer* DIALOG_ERC_BASE::m_sdbSizer1
protectedinherited

Definition at line 68 of file dialog_erc_base.h.

Referenced by DIALOG_ERC(), and DIALOG_ERC_BASE::DIALOG_ERC_BASE().

◆ m_sdbSizer1Cancel

wxButton* DIALOG_ERC_BASE::m_sdbSizer1Cancel
protectedinherited

◆ m_sdbSizer1OK

wxButton* DIALOG_ERC_BASE::m_sdbSizer1OK
protectedinherited

◆ m_severities

int DIALOG_ERC::m_severities
private

◆ m_showAll

wxCheckBox* DIALOG_ERC_BASE::m_showAll
protectedinherited

◆ m_showErrors

wxCheckBox* DIALOG_ERC_BASE::m_showErrors
protectedinherited

◆ m_showExclusions

wxCheckBox* DIALOG_ERC_BASE::m_showExclusions
protectedinherited

◆ m_showLabel

wxStaticText* DIALOG_ERC_BASE::m_showLabel
protectedinherited

Definition at line 56 of file dialog_erc_base.h.

Referenced by DIALOG_ERC_BASE::DIALOG_ERC_BASE().

◆ m_showWarnings

wxCheckBox* DIALOG_ERC_BASE::m_showWarnings
protectedinherited

◆ m_staticline1

wxStaticLine* DIALOG_ERC_BASE::m_staticline1
protectedinherited

Definition at line 65 of file dialog_erc_base.h.

Referenced by DIALOG_ERC_BASE::DIALOG_ERC_BASE().

◆ m_tabOrder

◆ m_units

◆ m_useCalculatedSize

bool DIALOG_SHIM::m_useCalculatedSize
protectedinherited

◆ m_warningsBadge

NUMBER_BADGE* DIALOG_ERC_BASE::m_warningsBadge
protectedinherited

◆ messagesPanel

wxPanel* DIALOG_ERC_BASE::messagesPanel
protectedinherited

Definition at line 52 of file dialog_erc_base.h.

Referenced by DIALOG_ERC_BASE::DIALOG_ERC_BASE().

◆ violationsPanel

wxPanel* DIALOG_ERC_BASE::violationsPanel
protectedinherited

Definition at line 54 of file dialog_erc_base.h.

Referenced by DIALOG_ERC_BASE::DIALOG_ERC_BASE().


The documentation for this class was generated from the following files: