KiCad PCB EDA Suite
DIALOG_ERC Class Reference

#include <dialog_erc.h>

Inheritance diagram for DIALOG_ERC:
DIALOG_ERC_BASE PROGRESS_REPORTER_BASE 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 (SCH_MARKER *aMarker=nullptr)
 Exclude aMarker from the ERC list. More...
 
void UpdateAnnotationWarning ()
 
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 OnModify ()
 
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) override
 Set the number of phases. More...
 
void AddPhases (int aNumPhases) override
 
virtual void BeginPhase (int aPhase) override
 Initialize the aPhase virtual zone of the dialog progress bar. More...
 
virtual void AdvancePhase () override
 Use the next available virtual zone of the dialog progress bar. More...
 
virtual void SetCurrentProgress (double aProgress) override
 Set the progress value to aProgress (0..1). More...
 
void SetMaxProgress (int aMaxProgress) override
 Fix the value that gives the 100 percent progress bar length (inside the current virtual zone). More...
 
void AdvanceProgress () override
 Increment the progress bar length (inside the current virtual zone). More...
 
bool KeepRefreshing (bool aWait=false) override
 Update the UI dialog. More...
 
void SetTitle (const wxString &aTitle) override
 Change the title displayed on the window caption. More...
 
bool IsCancelled () const override
 
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 43 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 52 of file dialog_erc.cpp.

52  :
53  DIALOG_ERC_BASE( parent ),
55  m_parent( parent ),
56  m_running( false ),
57  m_ercRun( false ),
59 {
60  SetName( DIALOG_ERC_WINDOW_NAME ); // Set a window name to be able to find it
61 
62  EESCHEMA_SETTINGS* settings = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
64 
66 
69  m_markerDataView->AssociateModel( m_markerTreeModel );
70 
75 
76  // We use a sdbSizer to get platform-dependent ordering of the action buttons, but
77  // that requires us to correct the button labels here.
78  m_sdbSizer1OK->SetLabel( _( "Run ERC" ) );
79  m_sdbSizer1Cancel->SetLabel( _( "Close" ) );
80  m_sdbSizer1->Layout();
81 
82  m_sdbSizer1OK->SetDefault();
83 
87 
89 
90  // Now all widgets have the size fixed, call FinishDialogSettings
92 }
NUMBER_BADGE * m_errorsBadge
void SetProvider(RC_ITEMS_PROVIDER *aProvider)
Definition: rc_item.cpp:294
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:96
bool m_running
Definition: dialog_erc.h:98
void syncCheckboxes()
Definition: dialog_erc.cpp:256
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:95
void updateDisplayedCounts()
Definition: dialog_erc.cpp:173
An implementation of the RC_ITEM_LIST interface which uses the global SHEETLIST to fulfill the contra...
Definition: erc_settings.h:183
wxButton * m_sdbSizer1Cancel
void SetSeverities(int aSeverities)
Definition: rc_item.cpp:300
#define DIALOG_ERC_WINDOW_NAME
Definition: dialog_erc.h:37
void SetImmediateMode()
In immediate mode, messages are flushed as they are added.
wxButton * m_sdbSizer1OK
wxStdDialogButtonSizer * m_sdbSizer1
void UpdateAnnotationWarning()
Definition: dialog_erc.cpp:107
SCHEMATIC & Schematic() const
int m_severities
Definition: dialog_erc.h:101
#define _(s)
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
NUMBER_BADGE * m_warningsBadge
PROGRESS_REPORTER_BASE(int aNumPhases)
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
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:99
WX_HTML_REPORT_BOX * m_messages
void SetMaximumNumber(int aMax)
Set the maximum number to be shown on the badge.

References _, DIALOG_ERC_WINDOW_NAME, 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_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, SCH_EDIT_FRAME::Schematic(), WX_HTML_REPORT_BOX::SetImmediateMode(), NUMBER_BADGE::SetMaximumNumber(), RC_TREE_MODEL::SetProvider(), RC_TREE_MODEL::SetSeverities(), syncCheckboxes(), UpdateAnnotationWarning(), and updateDisplayedCounts().

◆ ~DIALOG_ERC()

DIALOG_ERC::~DIALOG_ERC ( )

Definition at line 95 of file dialog_erc.cpp.

96 {
97  EESCHEMA_SETTINGS* settings = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
98  wxASSERT( settings );
99 
100  if( settings )
102 
103  m_markerTreeModel->DecRef();
104 }
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:96
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
int m_severities
Definition: dialog_erc.h:101

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

Member Function Documentation

◆ AddPhases()

void PROGRESS_REPORTER_BASE::AddPhases ( int  aNumPhases)
overridevirtualinherited

Implements PROGRESS_REPORTER.

Definition at line 97 of file progress_reporter_base.cpp.

98 {
99  m_numPhases += aNumPhases;
100 }

References PROGRESS_REPORTER_BASE::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_BASE.

Definition at line 159 of file dialog_erc.cpp.

160 {
161  // Will also call Report( aMessage ):
163  SetCurrentProgress( 0.0 );
164 }
virtual void AdvancePhase() override
Use the next available virtual zone of the dialog progress bar.
virtual void SetCurrentProgress(double aProgress) override
Set the progress value to aProgress (0..1).

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

◆ AdvancePhase() [2/2]

void PROGRESS_REPORTER_BASE::AdvancePhase ( )
overridevirtualinherited

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

Implements PROGRESS_REPORTER.

Reimplemented in DIALOG_PCM_PROGRESS.

Definition at line 50 of file progress_reporter_base.cpp.

51 {
52  m_phase.fetch_add( 1 );
53  m_progress.store( 0 );
54 }

References PROGRESS_REPORTER_BASE::m_phase, and PROGRESS_REPORTER_BASE::m_progress.

Referenced by AdvancePhase(), DIALOG_PCM_PROGRESS::AdvancePhase(), PROGRESS_REPORTER_BASE::AdvancePhase(), DIALOG_DRC::AdvancePhase(), and testErc().

◆ AdvanceProgress()

void PROGRESS_REPORTER_BASE::AdvanceProgress ( )
overridevirtualinherited

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

Implements PROGRESS_REPORTER.

Definition at line 85 of file progress_reporter_base.cpp.

86 {
87  m_progress.fetch_add( 1 );
88 }

References PROGRESS_REPORTER_BASE::m_progress.

◆ BeginPhase()

void PROGRESS_REPORTER_BASE::BeginPhase ( int  aPhase)
overridevirtualinherited

Initialize the aPhase virtual zone of the dialog progress bar.

Implements PROGRESS_REPORTER.

Definition at line 43 of file progress_reporter_base.cpp.

44 {
45  m_phase.store( aPhase );
46  m_progress.store( 0 );
47 }

References PROGRESS_REPORTER_BASE::m_phase, and PROGRESS_REPORTER_BASE::m_progress.

◆ currentProgress()

int PROGRESS_REPORTER_BASE::currentProgress ( ) const
protectedinherited

Definition at line 103 of file progress_reporter_base.cpp.

104 {
105  double current = ( 1.0 / (double) m_numPhases ) *
106  ( (double) m_phase + ( (double) m_progress.load() / (double) m_maxProgress ) );
107 
108  return (int)( current * 1000 );
109 }

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

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

◆ deleteAllMarkers()

void DIALOG_ERC::deleteAllMarkers ( bool  aIncludeExclusions)
private

Definition at line 745 of file dialog_erc.cpp.

746 {
747  // Clear current selection list to avoid selection of deleted items
749 
750  m_markerTreeModel->DeleteItems( false, aIncludeExclusions, true );
751 }
void DeleteItems(bool aCurrentOnly, bool aIncludeExclusions, bool aDeep)
Deletes the current item or all items.
Definition: rc_item.cpp:467
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:96
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:56
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
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 312 of file dialog_shim.cpp.

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

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 480 of file dialog_shim.cpp.

481 {
482  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
483  // handle validation in the same way as other dialogs.
484  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
485  return;
486 
487  SetReturnCode( retCode );
488 
489  if( !IsQuasiModal() )
490  {
491  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal" )
492  wxT( "wasn't called" ) );
493  return;
494  }
495 
496  if( m_qmodal_loop )
497  {
498  if( m_qmodal_loop->IsRunning() )
499  m_qmodal_loop->Exit( 0 );
500  else
501  m_qmodal_loop->ScheduleExit( 0 );
502 
503  m_qmodal_loop = nullptr;
504  }
505 
507  m_qmodal_parent_disabler = nullptr;
508 
509  Show( false );
510 }
bool IsQuasiModal() const
Definition: dialog_shim.h:106
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:213
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:216

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

Referenced by EDA_3D_CONTROLLER::Main(), 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 ( SCH_MARKER aMarker = nullptr)

Exclude aMarker from the ERC list.

If aMarker is nullptr, exclude the selected marker in this dialog.

Parameters
aMarkeraMarker to exclude

Definition at line 678 of file dialog_erc.cpp.

679 {
680  SCH_MARKER* marker = aMarker;
681 
682  if( marker != nullptr )
683  m_markerTreeModel->SelectMarker( marker );
684 
685  if( m_notebook->GetSelection() != 1 )
686  return;
687 
688  RC_TREE_NODE* node = RC_TREE_MODEL::ToNode( m_markerDataView->GetCurrentItem() );
689 
690  if( node && node->m_RcItem )
691  marker = dynamic_cast<SCH_MARKER*>( node->m_RcItem->GetParent() );
692 
693  if( node && marker && !marker->IsExcluded() )
694  {
695  marker->SetExcluded( true );
696  m_parent->GetCanvas()->GetView()->Update( marker );
697 
698  // Update view
701  else
703 
705  redrawDrawPanel();
706  m_parent->OnModify();
707  }
708 }
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:96
void updateDisplayedCounts()
Definition: dialog_erc.cpp:173
void DeleteCurrentItem(bool aDeep)
Definition: rc_item.cpp:461
void SetExcluded(bool aExcluded)
Definition: marker_base.h:96
std::shared_ptr< RC_ITEM > m_RcItem
Definition: rc_item.h:197
static RC_TREE_NODE * ToNode(wxDataViewItem aItem)
Definition: rc_item.h:212
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
void SelectMarker(const MARKER_BASE *aMarker)
Definition: rc_item.cpp:605
int m_severities
Definition: dialog_erc.h:101
bool IsExcluded() const
Definition: marker_base.h:95
wxNotebook * m_notebook
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
wxDataViewCtrl * m_markerDataView
void ValueChanged(const RC_TREE_NODE *aNode)
Definition: rc_item.cpp:444
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:342
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:1570

References RC_TREE_MODEL::DeleteCurrentItem(), SCH_BASE_FRAME::GetCanvas(), SCH_DRAW_PANEL::GetView(), MARKER_BASE::IsExcluded(), 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, RC_TREE_MODEL::SelectMarker(), 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 151 of file dialog_shim.cpp.

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

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_LIB_NEW_SYMBOL::DIALOG_LIB_NEW_SYMBOL(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_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_MANAGE_REPOSITORIES::DIALOG_MANAGE_REPOSITORIES(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NET_INSPECTOR::DIALOG_NET_INSPECTOR(), DIALOG_NETLIST_IMPORT::DIALOG_NETLIST_IMPORT(), 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_PCM::DIALOG_PCM(), 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_AND_LABEL_PROPERTIES::DIALOG_TEXT_AND_LABEL_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_FIELD_PROPERTIES::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 169 of file dialog_shim.cpp.

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

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

◆ IsCancelled()

bool PROGRESS_REPORTER_BASE::IsCancelled ( ) const
inlineoverridevirtualinherited

◆ IsCtrl()

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

Definition at line 126 of file dialog_shim.h.

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

◆ IsQuasiModal()

◆ IsShiftCtrl()

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

Definition at line 132 of file dialog_shim.h.

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

◆ KeepRefreshing()

bool PROGRESS_REPORTER_BASE::KeepRefreshing ( bool  aWait = false)
overridevirtualinherited

Update the UI dialog.

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

Implements PROGRESS_REPORTER.

Definition at line 112 of file progress_reporter_base.cpp.

113 {
114  if( aWait )
115  {
116  while( m_progress.load() < m_maxProgress && m_maxProgress > 0 )
117  {
118  if( !updateUI() )
119  {
120  m_cancelled.store( true );
121  return false;
122  }
123 
124  wxMilliSleep( 33 /* 30 FPS refresh rate */ );
125  }
126 
127  return true;
128  }
129  else
130  {
131  if( !updateUI() )
132  {
133  m_cancelled.store( true );
134  return false;
135  }
136 
137  return true;
138  }
139 }
virtual bool updateUI()=0

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

Referenced by PLUGIN_CONTENT_MANAGER::DownloadToStream().

◆ 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(), SCH_EDIT_FRAME::AskToSaveChanges(), SYMBOL_EDIT_FRAME::CanCloseSymbolFromSchematic(), 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_FIELD_PROPERTIES::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(), SYMBOL_EDIT_FRAME::saveCurrentSymbol(), 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 669 of file dialog_erc.cpp.

670 {
671  if( m_notebook->GetSelection() != 1 )
672  m_notebook->SetSelection( 1 );
673 
675 }
void NextMarker()
Definition: rc_item.cpp:577
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:96
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 231 of file dialog_erc.cpp.

232 {
233  if( m_running )
234  {
235  m_cancelled = true;
236  return;
237  }
238 
239  m_parent->FocusOnItem( nullptr );
240 
241  Close();
242 }
bool m_running
Definition: dialog_erc.h:98
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
void FocusOnItem(SCH_ITEM *aItem)

References SCH_EDIT_FRAME::FocusOnItem(), PROGRESS_REPORTER_BASE::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 570 of file dialog_shim.cpp.

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

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 245 of file dialog_erc.cpp.

246 {
247  m_parent->FocusOnItem( nullptr );
248 
249  m_parent->GetToolManager()->GetTool<EE_INSPECTION_TOOL>()->DestroyERCDialog();
250 }
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
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 200 of file dialog_erc.cpp.

201 {
202  bool includeExclusions = false;
203  int numExcluded = 0;
204 
205  if( m_markerProvider )
207 
208  if( numExcluded > 0 )
209  {
210  wxMessageDialog dlg( this, _( "Delete exclusions too?" ), _( "Delete All Markers" ),
211  wxYES_NO | wxCANCEL | wxCENTER | wxICON_QUESTION );
212  dlg.SetYesNoLabels( _( "Errors and Warnings Only" ) , _( "Errors, Warnings and Exclusions" ) );
213 
214  int ret = dlg.ShowModal();
215 
216  if( ret == wxID_CANCEL )
217  return;
218  else if( ret == wxID_NO )
219  includeExclusions = true;
220  }
221 
222  deleteAllMarkers( includeExclusions );
223 
224  m_ercRun = false;
226  m_parent->GetCanvas()->Refresh();
227 }
void deleteAllMarkers(bool aIncludeExclusions)
Definition: dialog_erc.cpp:745
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:95
void updateDisplayedCounts()
Definition: dialog_erc.cpp:173
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:93
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:99

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 472 of file dialog_erc.cpp.

473 {
474  if( aEvent.GetItem().IsOk() )
475  {
476  // turn control over to m_parent, hide this DIALOG_ERC window,
477  // no destruction so we can preserve listbox cursor
478  if( !IsModal() )
479  Show( false );
480  }
481 
482  aEvent.Skip();
483 }
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 486 of file dialog_erc.cpp.

487 {
488  RC_TREE_NODE* node = RC_TREE_MODEL::ToNode( aEvent.GetItem() );
489 
490  if( !node )
491  return;
492 
493  ERC_SETTINGS& settings = m_parent->Schematic().ErcSettings();
494 
495  std::shared_ptr<RC_ITEM> rcItem = node->m_RcItem;
496  wxString listName;
497  wxMenu menu;
498  wxString msg;
499 
500  switch( settings.GetSeverity( rcItem->GetErrorCode() ) )
501  {
502  case RPT_SEVERITY_ERROR: listName = _( "errors" ); break;
503  case RPT_SEVERITY_WARNING: listName = _( "warnings" ); break;
504  default: listName = _( "appropriate" ); break;
505  }
506 
507  if( rcItem->GetParent()->IsExcluded() )
508  {
509  menu.Append( 1, _( "Remove exclusion for this violation" ),
510  wxString::Format( _( "It will be placed back in the %s list" ), listName ) );
511  }
512  else
513  {
514  menu.Append( 2, _( "Exclude this violation" ),
515  wxString::Format( _( "It will be excluded from the %s list" ), listName ) );
516  }
517 
518  menu.AppendSeparator();
519 
520  if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_WARNING
521  || rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
522  {
523  // Pin to pin severities edited through pin conflict map
524  }
525  else if( settings.GetSeverity( rcItem->GetErrorCode() ) == RPT_SEVERITY_WARNING )
526  {
527  menu.Append( 4, wxString::Format( _( "Change severity to Error for all '%s' violations" ),
528  rcItem->GetErrorText() ),
529  _( "Violation severities can also be edited in the Board Setup... dialog" ) );
530  }
531  else
532  {
533  menu.Append( 5, wxString::Format( _( "Change severity to Warning for all '%s' violations" ),
534  rcItem->GetErrorText() ),
535  _( "Violation severities can also be edited in the Board Setup... dialog" ) );
536  }
537 
538  menu.Append( 6, wxString::Format( _( "Ignore all '%s' violations" ), rcItem->GetErrorText() ),
539  _( "Violations will not be checked or reported" ) );
540 
541  menu.AppendSeparator();
542 
543  if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_WARNING
544  || rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
545  {
546  menu.Append( 7, _( "Edit pin-to-pin conflict map..." ) );
547  }
548  else
549  {
550  menu.Append( 8, _( "Edit violation severities..." ),
551  _( "Open the Schematic Setup... dialog" ) );
552  }
553 
554  bool modified = false;
555 
556  switch( GetPopupMenuSelectionFromUser( menu ) )
557  {
558  case 1:
559  {
560  SCH_MARKER* marker = dynamic_cast<SCH_MARKER*>( node->m_RcItem->GetParent() );
561 
562  if( marker )
563  {
564  marker->SetExcluded( false );
565  m_parent->GetCanvas()->GetView()->Update( marker );
566 
567  // Update view
568  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->ValueChanged( node );
569  modified = true;
570  }
571  }
572  break;
573 
574  case 2:
575  {
576  SCH_MARKER* marker = dynamic_cast<SCH_MARKER*>( node->m_RcItem->GetParent() );
577 
578  if( marker )
579  {
580  marker->SetExcluded( true );
581  m_parent->GetCanvas()->GetView()->Update( marker );
582 
583  // Update view
585  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->ValueChanged( node );
586  else
587  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->DeleteCurrentItem( false );
588 
589  modified = true;
590  }
591  }
592  break;
593 
594  case 4:
595  settings.SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_ERROR );
596 
597  for( SCH_ITEM* item : m_parent->GetScreen()->Items().OfType( SCH_MARKER_T ) )
598  {
599  SCH_MARKER* marker = static_cast<SCH_MARKER*>( item );
600 
601  if( marker->GetRCItem()->GetErrorCode() == rcItem->GetErrorCode() )
602  m_parent->GetCanvas()->GetView()->Update( marker );
603  }
604 
605  // Rebuild model and view
606  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->SetProvider( m_markerProvider );
607  modified = true;
608  break;
609 
610  case 5:
611  settings.SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_WARNING );
612 
613  for( SCH_ITEM* item : m_parent->GetScreen()->Items().OfType( SCH_MARKER_T ) )
614  {
615  SCH_MARKER* marker = static_cast<SCH_MARKER*>( item );
616 
617  if( marker->GetRCItem()->GetErrorCode() == rcItem->GetErrorCode() )
618  m_parent->GetCanvas()->GetView()->Update( marker );
619  }
620 
621  // Rebuild model and view
622  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->SetProvider( m_markerProvider );
623  modified = true;
624  break;
625 
626  case 6:
627  {
628  settings.SetSeverity( rcItem->GetErrorCode(), RPT_SEVERITY_IGNORE );
629 
630  if( rcItem->GetErrorCode() == ERCE_PIN_TO_PIN_ERROR )
632 
633  SCH_SCREENS ScreenList( m_parent->Schematic().Root() );
634  ScreenList.DeleteMarkers( MARKER_BASE::MARKER_ERC, rcItem->GetErrorCode() );
635 
636  // Rebuild model and view
637  static_cast<RC_TREE_MODEL*>( aEvent.GetModel() )->SetProvider( m_markerProvider );
638  modified = true;
639  }
640  break;
641 
642  case 7:
643  m_parent->ShowSchematicSetupDialog( _( "Pin Conflicts Map" ) );
644  break;
645 
646  case 8:
647  m_parent->ShowSchematicSetupDialog( _( "Violation Severity" ) );
648  break;
649  }
650 
651  if( modified )
652  {
654  redrawDrawPanel();
655  m_parent->OnModify();
656  }
657 }
EE_TYPE OfType(KICAD_T aType) const
Definition: sch_rtree.h:230
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:95
void updateDisplayedCounts()
Definition: dialog_erc.cpp:173
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:96
std::shared_ptr< RC_ITEM > m_RcItem
Definition: rc_item.h:197
static RC_TREE_NODE * ToNode(wxDataViewItem aItem)
Definition: rc_item.h:212
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:101
#define _(s)
Container for ERC settings.
Definition: erc_settings.h:106
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
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()
Gets the full RTree, usually for iterating.
Definition: sch_screen.h:110
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:182
void redrawDrawPanel()
Definition: dialog_erc.cpp:342
std::shared_ptr< RC_ITEM > GetRCItem() const
Definition: marker_base.h:101
Container class that holds multiple SCH_SCREEN objects in a hierarchy.
Definition: sch_screen.h:593
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:1570
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 444 of file dialog_erc.cpp.

445 {
446  const KIID& itemID = RC_TREE_MODEL::ToUUID( aEvent.GetItem() );
447  SCH_SHEET_PATH sheet;
448  SCH_ITEM* item = m_parent->Schematic().GetSheets().GetItem( itemID, &sheet );
449 
450  if( item && item->GetClass() != wxT( "DELETED_SHEET_ITEM" ) )
451  {
452  WINDOW_THAWER thawer( m_parent );
453 
454  if( !sheet.empty() && sheet != m_parent->GetCurrentSheet() )
455  {
458 
459  m_parent->SetCurrentSheet( sheet );
461  m_parent->RedrawScreen( (wxPoint) m_parent->GetScreen()->m_ScrollCenter, false );
462  }
463 
464  m_parent->FocusOnItem( item );
465  redrawDrawPanel();
466  }
467 
468  aEvent.Skip();
469 }
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:147
void DisplayCurrentSheet()
Draw the current sheet on the display.
Definition: hierarch.cpp:313
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:56
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:93
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:193
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:182
void redrawDrawPanel()
Definition: dialog_erc.cpp:342

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 265 of file dialog_erc.cpp.

266 {
267  wxCommandEvent dummy;
269 }
static LIB_SYMBOL * dummy()
Used to draw a dummy shape when a LIB_SYMBOL is not found in library.
Definition: sch_symbol.cpp:72
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
void OnAnnotate(wxCommandEvent &event)

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

Referenced by UpdateAnnotationWarning().

◆ OnModify()

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 380 of file dialog_shim.cpp.

381 {
382  if( m_firstPaintEvent )
383  {
385 
386  selectAllInTextCtrls( GetChildren() );
387 
390  else
391  KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
392 
393  m_firstPaintEvent = false;
394  }
395 
396  event.Skip();
397 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:211
bool m_firstPaintEvent
Definition: dialog_shim.h:210
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 272 of file dialog_erc.cpp.

273 {
274  wxBusyCursor busy;
275 
276  SCHEMATIC* sch = &m_parent->Schematic();
277 
279 
281  deleteAllMarkers( true );
282 
283  m_notebook->ChangeSelection( 0 ); // Display the "Tests Running..." tab
284  m_messages->Clear();
285  wxYield(); // Allow time slice to refresh Messages
286 
287  m_running = true;
288  m_sdbSizer1Cancel->SetLabel( _( "Cancel" ) );
289  m_sdbSizer1OK->Enable( false );
290  m_buttondelmarkers->Enable( false );
291  m_saveReport->Enable( false );
292 
294 
295  int itemsNotAnnotated = m_parent->CheckAnnotate(
296  []( ERCE_T aType, const wxString& aMsg, SCH_REFERENCE* aItemA, SCH_REFERENCE* aItemB )
297  {
298  std::shared_ptr<ERC_ITEM> ercItem = ERC_ITEM::Create( aType );
299  ercItem->SetErrorMessage( aMsg );
300 
301  if( aItemB )
302  ercItem->SetItems( aItemA->GetSymbol(), aItemB->GetSymbol() );
303  else
304  ercItem->SetItems( aItemA->GetSymbol() );
305 
306  SCH_MARKER* marker = new SCH_MARKER( ercItem, aItemA->GetSymbol()->GetPosition() );
307  aItemA->GetSheetPath().LastScreen()->Append( marker );
308  } );
309 
310  testErc();
311 
312  if( itemsNotAnnotated )
313  m_messages->ReportHead( wxString::Format( _( "%d symbol(s) require annotation.<br><br>" ),
314  itemsNotAnnotated ), RPT_SEVERITY_INFO );
315 
316  if( m_cancelled )
317  m_messages->Report( _( "-------- ERC cancelled by user.<br><br>" ), RPT_SEVERITY_INFO );
318  else
319  m_messages->Report( _( "ERC completed.<br><br>" ), RPT_SEVERITY_INFO );
320 
321  Raise();
322  wxYield(); // Allow time slice to refresh Messages
323 
324  m_running = false;
325  m_sdbSizer1Cancel->SetLabel( _( "Close" ) );
326  m_sdbSizer1OK->Enable( true );
327  m_buttondelmarkers->Enable( true );
328  m_saveReport->Enable( true );
329 
330  if( !m_cancelled )
331  {
332  wxMilliSleep( 500 );
333  m_notebook->ChangeSelection( 1 );
335  }
336 
337  m_ercRun = true;
339 }
void deleteAllMarkers(bool aIncludeExclusions)
Definition: dialog_erc.cpp:745
wxButton * m_buttondelmarkers
Holds all the data relating to one schematic.
Definition: schematic.h:59
bool m_running
Definition: dialog_erc.h:98
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:173
SCH_SYMBOL * GetSymbol() const
int CheckAnnotate(ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope=ANNOTATE_ALL)
Check for annotation errors.
Definition: annotate.cpp:352
wxButton * m_sdbSizer1Cancel
wxButton * m_sdbSizer1OK
void UpdateAnnotationWarning()
Definition: dialog_erc.cpp:107
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:93
void testErc()
Definition: dialog_erc.cpp:350
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:108
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:146
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44
wxPoint GetPosition() const override
Definition: sch_symbol.h:645
bool m_ercRun
Definition: dialog_erc.h:99
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_BASE::m_cancelled, m_ercRun, 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(), UpdateAnnotationWarning(), and updateDisplayedCounts().

◆ OnSaveReport()

void DIALOG_ERC::OnSaveReport ( wxCommandEvent &  aEvent)
overrideprivatevirtual

Reimplemented from DIALOG_ERC_BASE.

Definition at line 754 of file dialog_erc.cpp.

755 {
756  wxFileName fn( wxT( "ERC." ) + ReportFileExtension );
757 
758  wxFileDialog dlg( this, _( "Save Report to File" ), Prj().GetProjectPath(), fn.GetFullName(),
759  ReportFileWildcard(), wxFD_SAVE | wxFD_OVERWRITE_PROMPT );
760 
761  if( dlg.ShowModal() != wxID_OK )
762  return;
763 
764  fn = dlg.GetPath();
765 
766  if( fn.GetExt().IsEmpty() )
767  fn.SetExt( ReportFileExtension );
768 
769  if( !fn.IsAbsolute() )
770  {
771  wxString prj_path = Prj().GetProjectPath();
772  fn.MakeAbsolute( prj_path );
773  }
774 
775  if( writeReport( fn.GetFullPath() ) )
776  {
777  m_messages->Report( wxString::Format( _( "Report file '%s' created." ),
778  fn.GetFullPath() ) );
779  }
780  else
781  {
782  DisplayError( this, wxString::Format( _( "Failed to create file '%s'." ),
783  fn.GetFullPath() ) );
784  }
785 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:279
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:788
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 711 of file dialog_erc.cpp.

712 {
713  int flag = 0;
714 
715  if( aEvent.GetEventObject() == m_showAll )
717  else if( aEvent.GetEventObject() == m_showErrors )
719  else if( aEvent.GetEventObject() == m_showWarnings )
721  else if( aEvent.GetEventObject() == m_showExclusions )
723 
724  if( aEvent.IsChecked() )
725  m_severities |= flag;
726  else if( aEvent.GetEventObject() == m_showAll )
728  else
729  m_severities &= ~flag;
730 
731  syncCheckboxes();
732 
733  // Set the provider's severity levels through the TreeModel so that the old tree
734  // can be torn down before the severity changes.
735  //
736  // It's not clear this is required, but we've had a lot of issues with wxDataView
737  // being cranky on various platforms.
738 
740 
742 }
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:96
void syncCheckboxes()
Definition: dialog_erc.cpp:256
wxCheckBox * m_showExclusions
void updateDisplayedCounts()
Definition: dialog_erc.cpp:173
static int RPT_SEVERITY_ALL
Definition: dialog_erc.cpp:253
void SetSeverities(int aSeverities)
Definition: rc_item.cpp:300
wxCheckBox * m_showAll
int m_severities
Definition: dialog_erc.h:101
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 660 of file dialog_erc.cpp.

661 {
662  if( m_notebook->GetSelection() != 1 )
663  m_notebook->SetSelection( 1 );
664 
666 }
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:96
wxNotebook * m_notebook
void PrevMarker()
Definition: rc_item.cpp:556

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 36 of file kiway_holder.cpp.

37 {
38  return Kiway().Prj();
39 }
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:191

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(), PCB_BASE_EDIT_FRAME::createNewLibrary(), PCB_BASE_EDIT_FRAME::CreateNewProjectLibrary(), DIALOG_PLOT_SCHEMATIC::createPDFFile(), 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_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES(), DIALOG_NETLIST_IMPORT::DIALOG_NETLIST_IMPORT(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), 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(), 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(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), SYMBOL_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SIM_PLOT_FRAME::getDefaultFilename(), SIM_PLOT_FRAME::getDefaultPath(), 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(), SCH_EDIT_FRAME::GetSchematicJunctionSize(), 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::loadWorkbook(), 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(), DIALOG_NETLIST_IMPORT::onBrowseNetlistFiles(), WX_HTML_REPORT_PANEL::onBtnSaveToFile(), 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(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_SCHEMATIC_SETUP::OnPageChange(), DIALOG_BOARD_SETUP::OnPageChange(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_TEXT_AND_LABEL_PROPERTIES::onScintillaCharAdded(), PROPERTIES_FRAME::onScintillaCharAdded(), DIALOG_SCH_FIELD_PROPERTIES::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_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(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), 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(), SCH_EDIT_FRAME::saveSchematicFile(), SIM_PLOT_FRAME::SaveSettings(), EDA_BASE_FRAME::SaveSettings(), SYMBOL_EDIT_FRAME::saveSymbolAs(), SCH_BASE_FRAME::saveSymbolLibTables(), SIM_PLOT_FRAME::saveWorkbook(), 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(), 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(), SCH_EDIT_FRAME::updateAutoSaveFile(), 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 342 of file dialog_erc.cpp.

343 {
344  WINDOW_THAWER thawer( m_parent );
345 
346  m_parent->GetCanvas()->Refresh();
347 }
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:93
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_BASE.

Definition at line 167 of file dialog_erc.cpp.

168 {
169  m_messages->Report( aMessage );
170 }
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 287 of file dialog_shim.cpp.

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

Set the progress value to aProgress (0..1).

Implements PROGRESS_REPORTER.

Reimplemented in CONSOLE_PROGRESS_REPORTER.

Definition at line 78 of file progress_reporter_base.cpp.

79 {
80  m_maxProgress.store( 1000 );
81  m_progress.store( (int) ( aProgress * 1000.0 ) );
82 }

References PROGRESS_REPORTER_BASE::m_maxProgress, and PROGRESS_REPORTER_BASE::m_progress.

Referenced by AdvancePhase(), DIALOG_DRC::AdvancePhase(), PLUGIN_CONTENT_MANAGER::DownloadToStream(), and CONSOLE_PROGRESS_REPORTER::SetCurrentProgress().

◆ 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:211

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_GET_FOOTPRINT_BY_NAME::DIALOG_GET_FOOTPRINT_BY_NAME(), 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_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), 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_AND_LABEL_PROPERTIES::DIALOG_TEXT_AND_LABEL_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_FIELD_PROPERTIES::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 43 of file kiway_holder.cpp.

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

References ignore_unused(), 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_BASE::SetMaxProgress ( int  aMaxProgress)
overridevirtualinherited

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

Implements PROGRESS_REPORTER.

Definition at line 72 of file progress_reporter_base.cpp.

73 {
74  m_maxProgress.store( aMaxProgress );
75 }

References PROGRESS_REPORTER_BASE::m_maxProgress.

◆ SetNumPhases()

void PROGRESS_REPORTER_BASE::SetNumPhases ( int  aNumPhases)
overridevirtualinherited

Set the number of phases.

Implements PROGRESS_REPORTER.

Definition at line 91 of file progress_reporter_base.cpp.

92 {
93  m_numPhases = aNumPhases;
94 }

References PROGRESS_REPORTER_BASE::m_numPhases.

Referenced by DIALOG_PCM_PROGRESS::OnCancelClicked().

◆ 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 190 of file dialog_shim.cpp.

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

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

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

◆ SetTitle()

void PROGRESS_REPORTER_BASE::SetTitle ( const wxString &  aTitle)
inlineoverridevirtualinherited

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.

Implements PROGRESS_REPORTER.

Reimplemented in WX_PROGRESS_REPORTER.

Definition at line 106 of file progress_reporter_base.h.

106 { }

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 219 of file dialog_shim.cpp.

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

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

Referenced by FOOTPRINT_EDITOR_CONTROL::CheckFootprint(), DRC_TOOL::CrossProbe(), 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(), DIALOG_FIND::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 430 of file dialog_shim.cpp.

431 {
432  // This is an exception safe way to zero a pointer before returning.
433  // Yes, even though DismissModal() clears this first normally, this is
434  // here in case there's an exception before the dialog is dismissed.
435  struct NULLER
436  {
437  void*& m_what;
438  NULLER( void*& aPtr ) : m_what( aPtr ) {}
439  ~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
440  } clear_this( (void*&) m_qmodal_loop );
441 
442  // release the mouse if it's currently captured as the window having it
443  // will be disabled when this dialog is shown -- but will still keep the
444  // capture making it impossible to do anything in the modal dialog itself
445  wxWindow* win = wxWindow::GetCapture();
446  if( win )
447  win->ReleaseMouse();
448 
449  // Get the optimal parent
450  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
451 
452  wxASSERT_MSG( !m_qmodal_parent_disabler,
453  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
454 
455  // quasi-modal: disable only my "optimal" parent
457 
458  // Apple in its infinite wisdom will raise a disabled window before even passing
459  // us the event, so we have no way to stop it. Instead, we must set an order on
460  // the windows so that the quasi-modal will be pushed in front of the disabled
461  // window when it is raised.
463 
464  Show( true );
465 
466  m_qmodal_showing = true;
467 
468  WX_EVENT_LOOP event_loop;
469 
470  m_qmodal_loop = &event_loop;
471 
472  event_loop.Run();
473 
474  m_qmodal_showing = false;
475 
476  return GetReturnCode();
477 }
bool m_qmodal_showing
Definition: dialog_shim.h:215
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:213
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:216
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:44
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(), PCB_BASE_EDIT_FRAME::ShowTextPropertiesDialog(), and PCB_EDIT_FRAME::ToPlotter().

◆ syncCheckboxes()

◆ testErc()

void DIALOG_ERC::testErc ( )
private

Definition at line 350 of file dialog_erc.cpp.

351 {
352  wxFileName fn;
353 
354  SCHEMATIC* sch = &m_parent->Schematic();
355 
356  // Build the whole sheet list in hierarchy (sheet, not screen)
358 
359  SCH_SCREENS screens( sch->Root() );
360  ERC_SETTINGS& settings = sch->ErcSettings();
361  ERC_TESTER tester( sch );
362 
363  // Test duplicate sheet names inside a given sheet. While one can have multiple references
364  // to the same file, each must have a unique name.
365  if( settings.IsTestEnabled( ERCE_DUPLICATE_SHEET_NAME ) )
366  {
367  AdvancePhase( _( "Checking sheet names..." ) );
368  tester.TestDuplicateSheetNames( true );
369  }
370 
371  if( settings.IsTestEnabled( ERCE_BUS_ALIAS_CONFLICT ) )
372  {
373  AdvancePhase( _( "Checking bus conflicts..." ) );
374  tester.TestConflictingBusAliases();
375  }
376 
377  // The connection graph has a whole set of ERC checks it can run
378  AdvancePhase( _( "Checking conflicts..." ) );
380  sch->ConnectionGraph()->RunERC();
381 
382  // Test is all units of each multiunit symbol have the same footprint assigned.
383  if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_FP ) )
384  {
385  AdvancePhase( _( "Checking footprints..." ) );
386  tester.TestMultiunitFootprints();
387  }
388 
389  AdvancePhase( _( "Checking pins..." ) );
390 
391  if( settings.IsTestEnabled( ERCE_DIFFERENT_UNIT_NET ) )
392  tester.TestMultUnitPinConflicts();
393 
394  // Test pins on each net against the pin connection table
395  if( settings.IsTestEnabled( ERCE_PIN_TO_PIN_ERROR )
396  || settings.IsTestEnabled( ERCE_POWERPIN_NOT_DRIVEN )
397  || settings.IsTestEnabled( ERCE_PIN_NOT_DRIVEN ) )
398  {
399  tester.TestPinToPin();
400  }
401 
402  // Test similar labels (i;e. labels which are identical when
403  // using case insensitive comparisons)
404  if( settings.IsTestEnabled( ERCE_SIMILAR_LABELS ) )
405  {
406  AdvancePhase( _( "Checking labels..." ) );
407  tester.TestSimilarLabels();
408  }
409 
410  if( settings.IsTestEnabled( ERCE_UNRESOLVED_VARIABLE ) )
411  {
412  AdvancePhase( _( "Checking for unresolved variables..." ) );
413  tester.TestTextVars( m_parent->GetCanvas()->GetView()->GetDrawingSheet() );
414  }
415 
416  if( settings.IsTestEnabled( ERCE_NOCONNECT_CONNECTED ) )
417  {
418  AdvancePhase( _( "Checking no connect pins for connections..." ) );
419  tester.TestNoConnectPins();
420  }
421 
422  if( settings.IsTestEnabled( ERCE_LIB_SYMBOL_ISSUES ) )
423  {
424  AdvancePhase( _( "Checking for library symbol issues..." ) );
425  tester.TestLibSymbolIssues();
426  }
427 
429 
430  // Display diags:
432 
433  // Display new markers from the current screen:
434  for( SCH_ITEM* marker : m_parent->GetScreen()->Items().OfType( SCH_MARKER_T ) )
435  {
436  m_parent->GetCanvas()->GetView()->Remove( marker );
437  m_parent->GetCanvas()->GetView()->Add( marker );
438  }
439 
440  m_parent->GetCanvas()->Refresh();
441 }
EE_TYPE OfType(KICAD_T aType) const
Definition: sch_rtree.h:230
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:294
void RecalculateConnections(SCH_CLEANUP_FLAGS aCleanupFlags)
Generate the connection data for the entire schematic hierarchy.
Power input pin connected to some others pins but no power out pin to drive it.
Definition: erc_settings.h:44
RC_TREE_MODEL * m_markerTreeModel
Definition: dialog_erc.h:96
Holds all the data relating to one schematic.
Definition: schematic.h:59
CONNECTION_GRAPH * ConnectionGraph() const override
Definition: schematic.h:131
virtual void AdvancePhase() override
Use the next available virtual zone of the dialog progress bar.
virtual void Remove(VIEW_ITEM *aItem)
Remove a VIEW_ITEM from the view.
Definition: view.cpp:350
RC_ITEMS_PROVIDER * m_markerProvider
Definition: dialog_erc.h:95
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.
Pin connected to some others pins but no pin to drive it.
Definition: erc_settings.h:42
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:93
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()
Gets the full RTree, usually for iterating.
Definition: sch_screen.h:110
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:320
DS_PROXY_VIEW_ITEM * GetDrawingSheet() const
Definition: sch_view.h:98
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:182
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:593

References _, KIGFX::VIEW::Add(), PROGRESS_REPORTER_BASE::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_NOT_DRIVEN, ERCE_PIN_TO_PIN_ERROR, ERCE_POWERPIN_NOT_DRIVEN, 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().

◆ UpdateAnnotationWarning()

void DIALOG_ERC::UpdateAnnotationWarning ( )

Definition at line 107 of file dialog_erc.cpp.

108 {
109  if( m_parent->CheckAnnotate( []( ERCE_T, const wxString&, SCH_REFERENCE*, SCH_REFERENCE* )
110  { } ) )
111  {
112  if( !m_infoBar->IsShown() )
113  {
114  wxHyperlinkCtrl* button = new wxHyperlinkCtrl( m_infoBar, wxID_ANY,
115  _("Show Annotation dialog"),
116  wxEmptyString );
117 
118  button->Bind( wxEVT_COMMAND_HYPERLINK, std::function<void( wxHyperlinkEvent& aEvent )>(
119  [&]( wxHyperlinkEvent& aEvent )
120  {
121  wxHtmlLinkEvent htmlEvent( aEvent.GetId(),
122  wxHtmlLinkInfo( aEvent.GetURL() ) );
123  OnLinkClicked( htmlEvent );
124  } ) );
125 
127  m_infoBar->AddButton( button );
128  m_infoBar->ShowMessage( _( "Schematic is not fully annotated. "
129  "ERC results will be incomplete." ) );
130  }
131  }
132  else
133  {
134  if( m_infoBar->IsShown() )
135  {
137  m_infoBar->Hide();
138  }
139  }
140 }
void ShowMessage(const wxString &aMessage, int aFlags=wxICON_INFORMATION) override
Show the info bar with the provided message and icon.
Definition: infobar.cpp:142
void AddButton(wxButton *aButton)
Add an already created button to the infobar.
Definition: infobar.cpp:245
void OnLinkClicked(wxHtmlLinkEvent &event) override
Definition: dialog_erc.cpp:265
int CheckAnnotate(ANNOTATION_ERROR_HANDLER aErrorHandler, ANNOTATE_SCOPE_T aAnnotateScope=ANNOTATE_ALL)
Check for annotation errors.
Definition: annotate.cpp:352
#define _(s)
ERCE_T
ERC error codes.
Definition: erc_settings.h:36
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
void RemoveAllButtons()
Remove all the buttons that have been added by the user.
Definition: infobar.cpp:286
WX_INFOBAR * m_infoBar
A helper to define a symbol's reference designator in a schematic.

References _, WX_INFOBAR::AddButton(), SCH_EDIT_FRAME::CheckAnnotate(), DIALOG_ERC_BASE::m_infoBar, m_parent, OnLinkClicked(), WX_INFOBAR::RemoveAllButtons(), and WX_INFOBAR::ShowMessage().

Referenced by DIALOG_ERC(), and OnRunERCClick().

◆ updateDisplayedCounts()

void DIALOG_ERC::updateDisplayedCounts ( )
private

Definition at line 173 of file dialog_erc.cpp.

174 {
175  int numErrors = 0;
176  int numWarnings = 0;
177  int numExcluded = 0;
178 
179  if( m_markerProvider )
180  {
184  }
185 
186  if( !m_ercRun )
187  {
188  numErrors = -1;
189  numWarnings = -1;
190  }
191 
195 }
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:95
virtual int GetCount(int aSeverity=-1) const =0
NUMBER_BADGE * m_warningsBadge
NUMBER_BADGE * m_exclusionsBadge
bool m_ercRun
Definition: dialog_erc.h:99

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_BASE.

Definition at line 145 of file dialog_erc.cpp.

146 {
147  // If ERC checks ever get slow enough we'll want a progress indicator...
148  //
149  // double cur = (double) m_progress.load() / m_maxProgress;
150  // cur = std::max( 0.0, std::min( cur, 1.0 ) );
151  //
152  // m_gauge->SetValue( KiROUND( cur * 1000.0 ) );
153  // wxSafeYield( this );
154 
155  return !m_cancelled;
156 }

References PROGRESS_REPORTER_BASE::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 176 of file dialog_shim.cpp.

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

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

◆ writeReport()

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

Definition at line 788 of file dialog_erc.cpp.

789 {
790  wxFFile file( aFullFileName, wxT( "wt" ) );
791 
792  if( !file.IsOpened() )
793  return false;
794 
795  wxString msg = wxString::Format( _( "ERC report (%s, Encoding UTF8)\n" ), DateAndTime() );
796 
797  std::map<KIID, EDA_ITEM*> itemMap;
798 
799  int err_count = 0;
800  int warn_count = 0;
801  int total_count = 0;
802  SCH_SHEET_LIST sheetList = m_parent->Schematic().GetSheets();
803 
804  sheetList.FillItemMap( itemMap );
805 
806  ERC_SETTINGS& settings = m_parent->Schematic().ErcSettings();
807 
808  for( unsigned i = 0; i < sheetList.size(); i++ )
809  {
810  msg << wxString::Format( _( "\n***** Sheet %s\n" ), sheetList[i].PathHumanReadable() );
811 
812  for( SCH_ITEM* aItem : sheetList[i].LastScreen()->Items().OfType( SCH_MARKER_T ) )
813  {
814  const SCH_MARKER* marker = static_cast<const SCH_MARKER*>( aItem );
815  RC_ITEM* item = marker->GetRCItem().get();
816  SEVERITY severity = settings.GetSeverity( item->GetErrorCode() );
817 
818  if( marker->GetMarkerType() != MARKER_BASE::MARKER_ERC )
819  continue;
820 
821  total_count++;
822 
823  switch( severity )
824  {
825  case RPT_SEVERITY_ERROR: err_count++; break;
826  case RPT_SEVERITY_WARNING: warn_count++; break;
827  default: break;
828  }
829 
830  msg << marker->GetRCItem()->ShowReport( GetUserUnits(), severity, itemMap );
831  }
832  }
833 
834  msg << wxString::Format( _( "\n ** ERC messages: %d Errors %d Warnings %d\n" ),
835  total_count, err_count, warn_count );
836 
837  // Currently: write report using UTF8 (as usual in Kicad).
838  // TODO: see if we can use the current encoding page (mainly for Windows users),
839  // Or other format (HTML?)
840  file.Write( msg );
841 
842  // wxFFile dtor will close the file.
843 
844  return true;
845 }
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
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:121
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:139
SCHEMATIC & Schematic() const
#define _(s)
Container for ERC settings.
Definition: erc_settings.h:106
SEVERITY
SCH_EDIT_FRAME * m_parent
Definition: dialog_erc.h:93
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:93
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:182
std::shared_ptr< RC_ITEM > GetRCItem() const
Definition: marker_base.h:101
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_BASE::m_cancelled
protectedinherited

◆ m_ercRun

bool DIALOG_ERC::m_ercRun
private

Definition at line 99 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 210 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_hash_key

◆ m_infoBar

WX_INFOBAR* DIALOG_ERC_BASE::m_infoBar
protectedinherited

Definition at line 50 of file dialog_erc_base.h.

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

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 211 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 223 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_BASE::m_msgChanged
protectedinherited

◆ m_mutex

std::mutex PROGRESS_REPORTER_BASE::m_mutex
mutableprotectedinherited

◆ m_notebook

wxNotebook* DIALOG_ERC_BASE::m_notebook
protectedinherited

◆ m_numPhases

std::atomic_int PROGRESS_REPORTER_BASE::m_numPhases
protectedinherited

◆ m_parent

◆ m_parentFrame

EDA_BASE_FRAME* DIALOG_SHIM::m_parentFrame
protectedinherited

◆ m_phase

std::atomic_int PROGRESS_REPORTER_BASE::m_phase
protectedinherited

◆ m_progress

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 213 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 215 of file dialog_shim.h.

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

◆ m_rptMessage

wxString PROGRESS_REPORTER_BASE::m_rptMessage
protectedinherited

◆ m_running

bool DIALOG_ERC::m_running
private

Definition at line 98 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: