KiCad PCB EDA Suite
DIALOG_CHANGE_SYMBOLS Class Reference

Dialog to update or change schematic library symbols. More...

#include <dialog_change_symbols.h>

Inheritance diagram for DIALOG_CHANGE_SYMBOLS:
DIALOG_CHANGE_SYMBOLS_BASE DIALOG_SHIM KIWAY_HOLDER

Public Types

enum class  MODE { CHANGE = 0 , UPDATE }
 
enum  HOLDER_TYPE { DIALOG , FRAME , PANEL }
 

Public Member Functions

 DIALOG_CHANGE_SYMBOLS (SCH_EDIT_FRAME *aParent, SCH_SYMBOL *aSymbol, MODE aMode=MODE::UPDATE)
 
 ~DIALOG_CHANGE_SYMBOLS () override
 
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
 
void SetupStandardButtons (std::map< int, wxString > aLabels={})
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
bool HasKiway () const
 Safety check before asking for the Kiway reference. 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 launchMatchIdSymbolBrowser (wxCommandEvent &aEvent) override
 
void launchNewIdSymbolBrowser (wxCommandEvent &aEvent) override
 
void onMatchTextKillFocus (wxFocusEvent &event) override
 
void onMatchIDKillFocus (wxFocusEvent &event) override
 
void onNewLibIDKillFocus (wxFocusEvent &event) override
 
void onOkButtonClicked (wxCommandEvent &aEvent) override
 
void onMatchByAll (wxCommandEvent &aEvent) override
 
void onMatchBySelected (wxCommandEvent &aEvent) override
 
void onMatchByReference (wxCommandEvent &aEvent) override
 
void onMatchByValue (wxCommandEvent &aEvent) override
 
void onMatchById (wxCommandEvent &aEvent) override
 
void onSelectAll (wxCommandEvent &event) override
 
void onSelectNone (wxCommandEvent &event) override
 Select or deselect all fields in the listbox widget. More...
 
void checkAll (bool aCheck)
 
virtual void OnMatchText (wxCommandEvent &event)
 
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

wxBoxSizer * m_mainSizer
 
wxGridBagSizer * m_matchSizer
 
wxRadioButton * m_matchAll
 
wxRadioButton * m_matchBySelection
 
wxRadioButton * m_matchByReference
 
wxTextCtrl * m_specifiedReference
 
wxRadioButton * m_matchByValue
 
wxTextCtrl * m_specifiedValue
 
wxRadioButton * m_matchById
 
wxTextCtrl * m_specifiedId
 
wxBitmapButton * m_matchIdBrowserButton
 
wxStaticLine * m_staticline1
 
wxBoxSizer * m_newIdSizer
 
wxTextCtrl * m_newId
 
wxBitmapButton * m_newIdBrowserButton
 
wxStaticBoxSizer * m_updateFieldsSizer
 
wxCheckListBox * m_fieldsBox
 
wxButton * m_selAllBtn
 
wxButton * m_selNoneBtn
 
wxStaticBoxSizer * m_updateOptionsSizer
 
wxCheckBox * m_removeExtraBox
 
wxCheckBox * m_resetEmptyFields
 
wxCheckBox * m_resetFieldText
 
wxCheckBox * m_resetFieldVisibilities
 
wxCheckBox * m_resetFieldEffects
 
wxCheckBox * m_resetFieldPositions
 
wxCheckBox * m_resetAttributes
 
WX_HTML_REPORT_PANELm_messagePanel
 
wxStdDialogButtonSizer * m_sdbSizer
 
wxButton * m_sdbSizerOK
 
wxButton * m_sdbSizerCancel
 
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 updateFieldsList ()
 
bool isMatch (SCH_SYMBOL *aSymbol, SCH_SHEET_PATH *aInstance)
 
bool processMatchingSymbols ()
 
bool processSymbol (SCH_SYMBOL *aSymbol, const SCH_SHEET_PATH *aInstance, const LIB_ID &aNewId, bool aAppendToUndo)
 
void OnCloseWindow (wxCloseEvent &aEvent)
 Properly handle the wxCloseEvent when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM. More...
 
void OnButton (wxCommandEvent &aEvent)
 Properly handle the default button events when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM. More...
 
void OnGridEditorShown (wxGridEvent &event)
 
void OnGridEditorHidden (wxGridEvent &event)
 
 DECLARE_EVENT_TABLE ()
 

Private Attributes

SCH_SYMBOLm_symbol
 
MODE m_mode
 Set of field names that should have values updated. More...
 
std::set< wxString > m_updateFields
 
KIWAYm_kiway
 
HOLDER_TYPE m_type
 

Detailed Description

Dialog to update or change schematic library symbols.

Definition at line 37 of file dialog_change_symbols.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.

◆ MODE

enum class DIALOG_CHANGE_SYMBOLS::MODE
strong
Enumerator
CHANGE 
UPDATE 

Definition at line 40 of file dialog_change_symbols.h.

40{ CHANGE = 0, UPDATE };

Constructor & Destructor Documentation

◆ DIALOG_CHANGE_SYMBOLS()

DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS ( SCH_EDIT_FRAME aParent,
SCH_SYMBOL aSymbol,
MODE  aMode = MODE::UPDATE 
)

Definition at line 52 of file dialog_change_symbols.cpp.

53 :
55 m_symbol( aSymbol),
56 m_mode( aMode )
57{
58 wxASSERT( aParent );
59
60 if( m_mode == MODE::UPDATE )
61 {
62 m_newIdSizer->Show( false );
63 }
64 else
65 {
66 m_matchAll->SetLabel( _( "Change all symbols in schematic" ) );
67 SetTitle( _( "Change Symbols" ) );
68 m_matchSizer->FindItem( m_matchAll )->Show( false );
69 }
70
71 if( m_symbol )
72 {
73 SCH_SHEET_PATH* currentSheet = &aParent->Schematic().CurrentSheet();
74
75 if( m_mode == MODE::CHANGE )
76 m_matchBySelection->SetLabel( _( "Change selected symbol(s)" ) );
77
78 m_newId->ChangeValue( UnescapeString( m_symbol->GetLibId().Format() ) );
79 m_specifiedReference->ChangeValue( m_symbol->GetRef( currentSheet ) );
80 m_specifiedValue->ChangeValue( m_symbol->GetValue( currentSheet, false ) );
81 m_specifiedId->ChangeValue( UnescapeString( m_symbol->GetLibId().Format() ) );
82 }
83 else
84 {
85 m_matchSizer->FindItem( m_matchBySelection )->Show( false );
86 }
87
90
91 if( m_mode == MODE::CHANGE )
92 {
93 m_matchByReference->SetLabel( _( "Change symbols matching reference designator:" ) );
94 m_matchByValue->SetLabel( _( "Change symbols matching value:" ) );
95 m_matchById->SetLabel( _( "Change symbols matching library identifier:" ) );
96 }
97
98 m_matchSizer->SetEmptyCellSize( wxSize( 0, 0 ) );
99 m_matchSizer->Layout();
100
101 for( int i = 0; i < MANDATORY_FIELDS; ++i )
102 {
104
105 if( i == REFERENCE_FIELD )
106 m_fieldsBox->Check( i, g_selectRefDes );
107 else if( i == VALUE_FIELD )
108 m_fieldsBox->Check( i, g_selectValue );
109 else
110 m_fieldsBox->Check( i, true );
111 }
112
114 m_messagePanel->SetFileName( Prj().GetProjectPath() + wxT( "report.txt" ) );
115
116 if( aSymbol && aSymbol->IsSelected() )
117 {
118 m_matchBySelection->SetValue( true );
119 }
120 else
121 {
122 if( aMode == MODE::UPDATE )
123 m_matchAll->SetValue( true );
124 else
125 m_matchByReference->SetValue( true );
126 }
127
129
130 if( m_mode == MODE::CHANGE )
131 {
132 m_updateFieldsSizer->GetStaticBox()->SetLabel( _( "Update Fields" ) );
133 m_removeExtraBox->SetLabel( _( "Remove fields if not in new symbol" ) );
134 m_resetEmptyFields->SetLabel( _( "Reset fields if empty in new symbol" ) );
135 m_resetFieldText->SetLabel( _( "Update field text" ) );
136 m_resetFieldVisibilities->SetLabel( _( "Update field visibilities" ) );
137 m_resetFieldEffects->SetLabel( _( "Update field sizes and styles" ) );
138 m_resetFieldPositions->SetLabel( _( "Update field positions" ) );
139 m_resetAttributes->SetLabel( _( "Update symbol attributes" ) );
140 }
141
142 m_removeExtraBox->SetValue( g_removeExtraFields[ (int) m_mode ] );
143 m_resetEmptyFields->SetValue( g_resetEmptyFields[ (int) m_mode ] );
144 m_resetFieldText->SetValue( g_resetFieldText[ (int) m_mode ] );
146 m_resetFieldEffects->SetValue( g_resetFieldEffects[ (int) m_mode ] );
148 m_resetAttributes->SetValue( g_resetAttributes[ (int) m_mode ] );
149
150 // DIALOG_SHIM needs a unique hash_key because classname is not sufficient
151 // because the update and change versions of this dialog have different controls.
152 m_hash_key = TO_UTF8( GetTitle() );
153
154 wxString okLabel = m_mode == MODE::CHANGE ? _( "Change" ) : _( "Update" );
155
156 SetupStandardButtons( { { wxID_OK, okLabel },
157 { wxID_CANCEL, _( "Close" ) } } );
158
159 // Now all widgets have the size fixed, call FinishDialogSettings
161}
wxBitmap KiBitmap(BITMAPS aBitmap, int aHeightTag)
Construct a wxBitmap from an image identifier Returns the image from the active theme if the image ha...
Definition: bitmap.cpp:105
@ small_library
DIALOG_CHANGE_SYMBOLS_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Update Symbols from Library"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
WX_HTML_REPORT_PANEL * m_messagePanel
MODE m_mode
Set of field names that should have values updated.
void SetupStandardButtons(std::map< int, wxString > aLabels={})
std::string m_hash_key
Definition: dialog_shim.h:203
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
bool IsSelected() const
Definition: eda_item.h:122
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
UTF8 Format() const
Definition: lib_id.cpp:116
SCH_SHEET_PATH & CurrentSheet() const override
Definition: schematic.h:121
SCHEMATIC & Schematic() const
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false) const
Return the reference for the given sheet path.
Definition: sch_symbol.cpp:487
const wxString GetValue(const SCH_SHEET_PATH *sheet, bool aResolve) const
Return the instance-specific value for the given sheet path.
Definition: sch_symbol.cpp:621
const LIB_ID & GetLibId() const
Definition: sch_symbol.h:157
void SetLazyUpdate(bool aLazyUpdate)
Forces updating the HTML page, after the report is built in lazy mode If aSort = true,...
void SetFileName(const wxString &aReportFileName)
bool g_resetFieldEffects[2]
bool g_selectRefDes
bool g_resetFieldPositions[2]
bool g_resetAttributes[2]
bool g_removeExtraFields[2]
bool g_resetFieldVisibilities[2]
bool g_resetEmptyFields[2]
bool g_resetFieldText[2]
bool g_selectValue
#define _(s)
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
Definition: macros.h:96
wxString UnescapeString(const wxString &aSource)
static const wxString GetDefaultFieldName(int aFieldNdx, bool aTranslateForHI=false)
Return a default symbol field name for field aFieldNdx for all components.
#define DO_TRANSLATE
@ VALUE_FIELD
Field Value of part, i.e. "3.3K".
@ MANDATORY_FIELDS
The first 4 are mandatory, and must be instantiated in SCH_COMPONENT and LIB_PART constructors.
@ REFERENCE_FIELD
Field Reference of part, i.e. "IC21".

References _, CHANGE, SCHEMATIC::CurrentSheet(), DO_TRANSLATE, DIALOG_SHIM::finishDialogSettings(), LIB_ID::Format(), g_removeExtraFields, g_resetAttributes, g_resetEmptyFields, g_resetFieldEffects, g_resetFieldPositions, g_resetFieldText, g_resetFieldVisibilities, g_selectRefDes, g_selectValue, TEMPLATE_FIELDNAME::GetDefaultFieldName(), SCH_SYMBOL::GetLibId(), SCH_SYMBOL::GetRef(), SCH_SYMBOL::GetValue(), EDA_ITEM::IsSelected(), KiBitmap(), DIALOG_CHANGE_SYMBOLS_BASE::m_fieldsBox, DIALOG_SHIM::m_hash_key, DIALOG_CHANGE_SYMBOLS_BASE::m_matchAll, DIALOG_CHANGE_SYMBOLS_BASE::m_matchById, DIALOG_CHANGE_SYMBOLS_BASE::m_matchByReference, DIALOG_CHANGE_SYMBOLS_BASE::m_matchBySelection, DIALOG_CHANGE_SYMBOLS_BASE::m_matchByValue, DIALOG_CHANGE_SYMBOLS_BASE::m_matchIdBrowserButton, DIALOG_CHANGE_SYMBOLS_BASE::m_matchSizer, DIALOG_CHANGE_SYMBOLS_BASE::m_messagePanel, m_mode, DIALOG_CHANGE_SYMBOLS_BASE::m_newId, DIALOG_CHANGE_SYMBOLS_BASE::m_newIdBrowserButton, DIALOG_CHANGE_SYMBOLS_BASE::m_newIdSizer, DIALOG_CHANGE_SYMBOLS_BASE::m_removeExtraBox, DIALOG_CHANGE_SYMBOLS_BASE::m_resetAttributes, DIALOG_CHANGE_SYMBOLS_BASE::m_resetEmptyFields, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldEffects, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldPositions, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldText, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldVisibilities, DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedId, DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedReference, DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedValue, m_symbol, DIALOG_CHANGE_SYMBOLS_BASE::m_updateFieldsSizer, MANDATORY_FIELDS, KIWAY_HOLDER::Prj(), REFERENCE_FIELD, SCH_EDIT_FRAME::Schematic(), WX_HTML_REPORT_PANEL::SetFileName(), WX_HTML_REPORT_PANEL::SetLazyUpdate(), DIALOG_SHIM::SetupStandardButtons(), small_library, TO_UTF8, UnescapeString(), UPDATE, updateFieldsList(), and VALUE_FIELD.

◆ ~DIALOG_CHANGE_SYMBOLS()

Member Function Documentation

◆ checkAll()

void DIALOG_CHANGE_SYMBOLS::checkAll ( bool  aCheck)
protected

Definition at line 365 of file dialog_change_symbols.cpp.

366{
367 for( unsigned i = 0; i < m_fieldsBox->GetCount(); ++i )
368 m_fieldsBox->Check( i, aCheck );
369}

References DIALOG_CHANGE_SYMBOLS_BASE::m_fieldsBox.

Referenced by onSelectAll(), and onSelectNone().

◆ DECLARE_EVENT_TABLE()

DIALOG_SHIM::DECLARE_EVENT_TABLE ( )
privateinherited

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 319 of file dialog_shim.cpp.

320{
321 // so we can do logging of this state change:
322 return wxDialog::Enable( enable );
323}

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 487 of file dialog_shim.cpp.

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

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().

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

159{
160 // must be called from the constructor of derived classes,
161 // when all widgets are initialized, and therefore their size fixed
162
163 // SetSizeHints fixes the minimal size of sizers in the dialog
164 // (SetSizeHints calls Fit(), so no need to call it)
165 GetSizer()->SetSizeHints( this );
166}

Referenced by CONVERT_SETTINGS_DIALOG::CONVERT_SETTINGS_DIALOG(), 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_CLEANUP_TRACKS_AND_VIAS::DIALOG_CLEANUP_TRACKS_AND_VIAS(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), 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_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_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_INSPECTOR::DIALOG_INSPECTOR(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), 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_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_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_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SIM_MODEL< T >::DIALOG_SIM_MODEL(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_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_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), PAGED_DIALOG::finishInitialization(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_SHEET_PROPERTIES::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SYMBOL_PROPERTIES::OnInitDlg(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), TEARDROP_DIALOG::TEARDROP_DIALOG(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_COLOR_PICKER::TransferDataToWindow(), and DIALOG_BOARD_STATISTICS::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:85

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ HasKiway()

bool KIWAY_HOLDER::HasKiway ( ) const
inlineinherited

Safety check before asking for the Kiway reference.

Returns
true if kiway is non-null

Definition at line 63 of file kiway_holder.h.

64 {
65 return m_kiway != nullptr;
66 }
KIWAY * m_kiway
Definition: kiway_holder.h:84

References KIWAY_HOLDER::m_kiway.

Referenced by DIALOG_SHIM::~DIALOG_SHIM().

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

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

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

◆ IsCtrl()

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

Definition at line 128 of file dialog_shim.h.

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

◆ isMatch()

bool DIALOG_CHANGE_SYMBOLS::isMatch ( SCH_SYMBOL aSymbol,
SCH_SHEET_PATH aInstance 
)
private

Definition at line 410 of file dialog_change_symbols.cpp.

411{
412 LIB_ID id;
413
414 wxCHECK( aSymbol, false );
415
416 SCH_EDIT_FRAME* frame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
417
418 wxCHECK( frame, false );
419
420 if( m_matchAll->GetValue() )
421 {
422 return true;
423 }
424 else if( m_matchBySelection->GetValue() )
425 {
426 return aSymbol == m_symbol || aSymbol->IsSelected();
427 }
428 else if( m_matchByReference->GetValue() )
429 {
430 return WildCompareString( m_specifiedReference->GetValue(),
431 aSymbol->GetRef( aInstance, false ), false );
432 }
433 else if( m_matchByValue->GetValue() )
434 {
435 return WildCompareString( m_specifiedValue->GetValue(),
436 aSymbol->GetValue( aInstance, false ), false );
437 }
438 else if( m_matchById )
439 {
440 id.Parse( getLibIdValue( m_specifiedId ) );
441 return aSymbol->GetLibId() == id;
442 }
443
444 return false;
445}
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:52
Schematic editor (Eeschema) main window.
wxString getLibIdValue(const wxTextCtrl *aCtrl)
bool WildCompareString(const wxString &pattern, const wxString &string_to_tst, bool case_sensitive)
Compare a string against wild card (* and ?) pattern using the usual rules.

References SCH_SYMBOL::GetLibId(), getLibIdValue(), SCH_SYMBOL::GetRef(), SCH_SYMBOL::GetValue(), EDA_ITEM::IsSelected(), DIALOG_CHANGE_SYMBOLS_BASE::m_matchAll, DIALOG_CHANGE_SYMBOLS_BASE::m_matchById, DIALOG_CHANGE_SYMBOLS_BASE::m_matchByReference, DIALOG_CHANGE_SYMBOLS_BASE::m_matchBySelection, DIALOG_CHANGE_SYMBOLS_BASE::m_matchByValue, DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedId, DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedReference, DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedValue, m_symbol, and WildCompareString().

Referenced by processMatchingSymbols(), and updateFieldsList().

◆ IsQuasiModal()

◆ IsShiftCtrl()

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

Definition at line 134 of file dialog_shim.h.

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

◆ 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 }

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(), CVPCB_MAINFRAME::BuildLibrariesListBox(), FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::CanCloseSymbolFromSchematic(), SCH_EDIT_FRAME::canCloseWindow(), PCB_EDIT_FRAME::canCloseWindow(), KICAD_MANAGER_FRAME::CloseProject(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_SYMBOL::ConstructRightPanel(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), SCH_EDIT_FRAME::doCloseWindow(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), FIELDS_GRID_TRICKS::doPopupSelection(), BOARD_EDITOR_CONTROL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), BACK_ANNOTATE::FetchNetlistFromPCB(), PCB_EDIT_FRAME::FetchNetlistFromSchematic(), KICAD_MANAGER_FRAME::ImportNonKiCadProject(), SCRIPTING_TOOL::Init(), EDA_DRAW_FRAME::IsScriptingConsoleVisible(), KIWAY_PLAYER::language_change(), KICAD_MANAGER_FRAME::language_change(), launchMatchIdSymbolBrowser(), launchNewIdSymbolBrowser(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PGM_SINGLE_TOP::MacOpenFile(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), SYMBOL_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), DIALOG_CHOOSE_SYMBOL::OnInitDialog(), PCB_EDIT_FRAME::OnNetlistChanged(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), SIM_PLOT_FRAME::onProbe(), PCB_EDIT_FRAME::OnQuit(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_FIELD_PROPERTIES::OnTextValueSelectButtonClick(), SIM_PLOT_FRAME::onTune(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadFootprintFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), FOOTPRINT_EDIT_FRAME::OnUpdateSaveFootprintToBoard(), SCH_BASE_FRAME::PickSymbolFromLibBrowser(), KIWAY_HOLDER::Prj(), SCH_EDIT_TOOL::Properties(), BACK_ANNOTATE::PushNewLinksToPCB(), FOOTPRINT_WIZARD_FRAME::PythonPluginsReload(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), SCH_EDITOR_CONTROL::rescueProject(), PCB_EDIT_FRAME::RunEeschema(), EE_INSPECTION_TOOL::RunSimulation(), SYMBOL_EDIT_FRAME::Save(), SYMBOL_EDIT_FRAME::saveCurrentSymbol(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), EDA_DRAW_FRAME::ScriptingConsoleEnableDisable(), PCB_BASE_FRAME::SelectFootprintFromLibBrowser(), PCB_BASE_FRAME::SelectLibrary(), SCH_EDIT_FRAME::SendCrossProbeClearHighlight(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::sendNetlistToCvpcb(), SCH_EDIT_FRAME::SendSelectItems(), SCH_EDIT_FRAME::SetCrossProbeConnection(), SYMBOL_EDIT_FRAME::SetCurSymbol(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), PCB_EDIT_FRAME::ShowFootprintPropertiesDialog(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), PCB_EDIT_FRAME::TestStandalone(), BOARD_EDITOR_CONTROL::UpdateSchematicFromPCB(), DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ launchMatchIdSymbolBrowser()

void DIALOG_CHANGE_SYMBOLS::launchMatchIdSymbolBrowser ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 243 of file dialog_change_symbols.cpp.

244{
245 wxString newName = getLibIdValue( m_specifiedId );
246
248
249 if( frame->ShowModal( &newName, this ) )
250 {
251 m_specifiedId->SetValue( UnescapeString( newName ) );
253 }
254
255 frame->Destroy();
256}
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
A wxFrame capable of the OpenProjectFiles function, meaning it can load a portion of a KiCad project.
Definition: kiway_player.h:66
virtual bool ShowModal(wxString *aResult=nullptr, wxWindow *aResultantFocusWindow=nullptr)
Show this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until t...
bool Destroy() override
Our version of Destroy() which is virtual from wxWidgets.
virtual KIWAY_PLAYER * Player(FRAME_T aFrameType, bool doCreate=true, wxTopLevelWindow *aParent=nullptr)
Return the KIWAY_PLAYER* given a FRAME_T.
Definition: kiway.cpp:394
@ FRAME_SCH_VIEWER_MODAL
Definition: frame_type.h:37

References KIWAY_PLAYER::Destroy(), FRAME_SCH_VIEWER_MODAL, getLibIdValue(), KIWAY_HOLDER::Kiway(), DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedId, KIWAY::Player(), KIWAY_PLAYER::ShowModal(), UnescapeString(), and updateFieldsList().

◆ launchNewIdSymbolBrowser()

void DIALOG_CHANGE_SYMBOLS::launchNewIdSymbolBrowser ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 259 of file dialog_change_symbols.cpp.

260{
261 wxString newName = getLibIdValue( m_newId );
262
264
265 if( frame->ShowModal( &newName, this ) )
266 {
267 m_newId->SetValue( UnescapeString( newName ) );
269 }
270
271 frame->Destroy();
272}

References KIWAY_PLAYER::Destroy(), FRAME_SCH_VIEWER_MODAL, getLibIdValue(), KIWAY_HOLDER::Kiway(), DIALOG_CHANGE_SYMBOLS_BASE::m_newId, KIWAY::Player(), KIWAY_PLAYER::ShowModal(), UnescapeString(), and updateFieldsList().

◆ OnButton()

void DIALOG_SHIM::OnButton ( wxCommandEvent &  aEvent)
privateinherited

Properly handle the default button events when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM.

Definition at line 533 of file dialog_shim.cpp.

534{
535 const int id = aEvent.GetId();
536
537 // If we are pressing a button to exit, we need to enable the escapeID
538 // otherwise the dialog does not process cancel
539 if( id == wxID_CANCEL )
540 SetEscapeId( wxID_ANY );
541
542 if( IsQuasiModal() )
543 {
544 if( id == GetAffirmativeId() )
545 {
546 EndQuasiModal( id );
547 }
548 else if( id == wxID_APPLY )
549 {
550 // Dialogs that provide Apply buttons should make sure data is valid before
551 // allowing a transfer, as there is no other way to indicate failure
552 // (i.e. the dialog can't refuse to close as it might with OK, because it
553 // isn't closing anyway)
554 if( Validate() )
555 {
556 ignore_unused( TransferDataFromWindow() );
557 }
558 }
559 else if( id == GetEscapeId() || (id == wxID_CANCEL && GetEscapeId() == wxID_ANY) )
560 {
561 EndQuasiModal( wxID_CANCEL );
562 }
563 else // not a standard button
564 {
565 aEvent.Skip();
566 }
567
568 return;
569 }
570
571 // This is mandatory to allow wxDialogBase::OnButton() to be called.
572 aEvent.Skip();
573}
void EndQuasiModal(int retCode)
void ignore_unused(const T &)
Definition: ignore.h:24

References DIALOG_SHIM::EndQuasiModal(), ignore_unused(), and DIALOG_SHIM::IsQuasiModal().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnCharHook()

void DIALOG_SHIM::OnCharHook ( wxKeyEvent &  aEvt)
protectedvirtualinherited

Reimplemented in HK_PROMPT_DIALOG, DIALOG_CHOOSE_SYMBOL, and HTML_MESSAGE_BOX.

Definition at line 576 of file dialog_shim.cpp.

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

◆ OnCloseWindow()

void DIALOG_SHIM::OnCloseWindow ( wxCloseEvent &  aEvent)
privateinherited

Properly handle the wxCloseEvent when in the quasimodal mode when not calling EndQuasiModal which is possible with any dialog derived from DIALOG_SHIM.

Definition at line 520 of file dialog_shim.cpp.

521{
522 if( IsQuasiModal() )
523 {
524 EndQuasiModal( wxID_CANCEL );
525 return;
526 }
527
528 // This is mandatory to allow wxDialogBase::OnCloseWindow() to be called.
529 aEvent.Skip();
530}

References DIALOG_SHIM::EndQuasiModal(), and DIALOG_SHIM::IsQuasiModal().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnGridEditorHidden()

void DIALOG_SHIM::OnGridEditorHidden ( wxGridEvent &  event)
privateinherited

Definition at line 642 of file dialog_shim.cpp.

643{
644 SetEscapeId( wxID_ANY );
645 event.Skip();
646}

◆ OnGridEditorShown()

void DIALOG_SHIM::OnGridEditorShown ( wxGridEvent &  event)
privateinherited

Definition at line 635 of file dialog_shim.cpp.

636{
637 SetEscapeId( wxID_NONE );
638 event.Skip();
639}

◆ onMatchByAll()

void DIALOG_CHANGE_SYMBOLS::onMatchByAll ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 164 of file dialog_change_symbols.cpp.

165{
167}

References updateFieldsList().

◆ onMatchById()

void DIALOG_CHANGE_SYMBOLS::onMatchById ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 190 of file dialog_change_symbols.cpp.

191{
193 m_specifiedId->SetFocus();
194}

References DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedId, and updateFieldsList().

◆ onMatchByReference()

void DIALOG_CHANGE_SYMBOLS::onMatchByReference ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 176 of file dialog_change_symbols.cpp.

177{
179 m_specifiedReference->SetFocus();
180}

References DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedReference, and updateFieldsList().

◆ onMatchBySelected()

void DIALOG_CHANGE_SYMBOLS::onMatchBySelected ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 170 of file dialog_change_symbols.cpp.

171{
173}

References updateFieldsList().

◆ onMatchByValue()

void DIALOG_CHANGE_SYMBOLS::onMatchByValue ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 183 of file dialog_change_symbols.cpp.

184{
186 m_specifiedValue->SetFocus();
187}

References DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedValue, and updateFieldsList().

◆ onMatchIDKillFocus()

void DIALOG_CHANGE_SYMBOLS::onMatchIDKillFocus ( wxFocusEvent &  event)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 204 of file dialog_change_symbols.cpp.

205{
207 event.Skip(); // Mandatory in wxFocusEvent
208}

References updateFieldsList().

◆ OnMatchText()

virtual void DIALOG_CHANGE_SYMBOLS_BASE::OnMatchText ( wxCommandEvent &  event)
inlineprotectedvirtualinherited

◆ onMatchTextKillFocus()

void DIALOG_CHANGE_SYMBOLS::onMatchTextKillFocus ( wxFocusEvent &  event)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 197 of file dialog_change_symbols.cpp.

198{
200 event.Skip(); // Mandatory in wxFocusEvent
201}

References updateFieldsList().

◆ OnModify()

◆ onNewLibIDKillFocus()

void DIALOG_CHANGE_SYMBOLS::onNewLibIDKillFocus ( wxFocusEvent &  event)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 211 of file dialog_change_symbols.cpp.

212{
214 event.Skip(); // Mandatory in wxFocusEvent
215}

References updateFieldsList().

◆ onOkButtonClicked()

void DIALOG_CHANGE_SYMBOLS::onOkButtonClicked ( wxCommandEvent &  aEvent)
overrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 372 of file dialog_change_symbols.cpp.

373{
374 wxBusyCursor dummy;
375 SCH_EDIT_FRAME* parent = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
376
377 wxCHECK( parent, /* void */ );
378
380 m_messagePanel->Flush( false );
381
382 // Create the set of fields to be updated. Use non translated (canonical) names
383 // for mandatory fields
384 m_updateFields.clear();
385
386 for( unsigned i = 0; i < m_fieldsBox->GetCount(); ++i )
387 {
388 if( m_fieldsBox->IsChecked( i ) )
389 {
390 if( i < MANDATORY_FIELDS )
391 {
392 LIB_FIELD dummy_field( i );
393 m_updateFields.insert( dummy_field.GetCanonicalName() );
394 }
395 else
396 m_updateFields.insert( m_fieldsBox->GetString( i ) );
397 }
398 }
399
401 {
402 parent->TestDanglingEnds(); // This will also redraw the changed symbols.
403 parent->OnModify();
404 }
405
406 m_messagePanel->Flush( false );
407}
std::set< wxString > m_updateFields
Field object used in symbol libraries.
Definition: lib_field.h:60
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
void TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
void Clear()
return the number of messages matching the given severity mask.
void Flush(bool aSort=false)
Set the visible severity filter.
static LIB_SYMBOL * dummy()
Used to draw a dummy shape when a LIB_SYMBOL is not found in library.
Definition: sch_symbol.cpp:73

References WX_HTML_REPORT_PANEL::Clear(), dummy(), WX_HTML_REPORT_PANEL::Flush(), LIB_FIELD::GetCanonicalName(), DIALOG_CHANGE_SYMBOLS_BASE::m_fieldsBox, DIALOG_CHANGE_SYMBOLS_BASE::m_messagePanel, m_updateFields, MANDATORY_FIELDS, SCH_EDIT_FRAME::OnModify(), processMatchingSymbols(), and SCH_EDIT_FRAME::TestDanglingEnds().

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 387 of file dialog_shim.cpp.

388{
390 {
392
393 selectAllInTextCtrls( GetChildren() );
394
397 else
398 KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
399
400 m_firstPaintEvent = false;
401 }
402
403 event.Skip();
404}
bool m_firstPaintEvent
Definition: dialog_shim.h:212
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:213
static void selectAllInTextCtrls(wxWindowList &children)
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44

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

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ onSelectAll()

void DIALOG_CHANGE_SYMBOLS::onSelectAll ( wxCommandEvent &  event)
inlineoverrideprotectedvirtual

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 59 of file dialog_change_symbols.h.

60 {
61 checkAll( true );
62 }

References checkAll().

◆ onSelectNone()

void DIALOG_CHANGE_SYMBOLS::onSelectNone ( wxCommandEvent &  event)
inlineoverrideprotectedvirtual

Select or deselect all fields in the listbox widget.

Reimplemented from DIALOG_CHANGE_SYMBOLS_BASE.

Definition at line 64 of file dialog_change_symbols.h.

References checkAll().

◆ 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}
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:192

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

Referenced by SYMBOL_TREE_MODEL_ADAPTER::AddLibraries(), FP_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_LIBRARY_MANAGER::addLibrary(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_EDIT_FRAME::addLibTableEntry(), SCH_EDIT_FRAME::AppendSchematic(), AskSaveBoardFileName(), DIALOG_SYMBOL_REMAP::backupProject(), CVPCB_MAINFRAME::buildEquivalenceList(), CVPCB_MAINFRAME::BuildLibrariesListBox(), FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), 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_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(), SCH_EDIT_FRAME::doAutoSave(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doCloseWindow(), FOOTPRINT_EDIT_FRAME::doCloseWindow(), PCB_BASE_EDIT_FRAME::doCloseWindow(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), FIELDS_GRID_TRICKS::doPopupSelection(), FOOTPRINT_EDIT_FRAME::DuplicateFootprint(), 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(), PCB_EDIT_FRAME::GetLastPath(), 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(), FOOTPRINT_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), PCB_BASE_FRAME::loadFootprint(), CVPCB_MAINFRAME::LoadFootprintFiles(), PCB_EDIT_FRAME::LoadFootprints(), SCH_EDIT_FRAME::LoadProject(), KICAD_MANAGER_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(), PCB_EDIT_FRAME::onBoardLoaded(), 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_SYMBOL_FIELDS_TABLE::OnExport(), 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_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_SCHEMATIC_SETUP::OnPageChanged(), DIALOG_BOARD_SETUP::OnPageChanged(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), DIALOG_SCH_FIELD_PROPERTIES::onScintillaCharAdded(), DIALOG_TEXT_PROPERTIES::onScintillaCharAdded(), PROPERTIES_FRAME::onScintillaCharAdded(), SYMBOL_VIEWER_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_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(), SYMBOL_EDITOR_CONTROL::PinLibrary(), FOOTPRINT_EDITOR_CONTROL::PinLibrary(), 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(), FOOTPRINT_EDITOR_CONTROL::RenameFootprint(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), SCH_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), PCB_EDIT_FRAME::RunEeschema(), 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(), EDA_BASE_FRAME::SaveSettings(), SIM_PLOT_FRAME::SaveSettings(), SCH_BASE_FRAME::saveSymbolLibTables(), SIM_PLOT_FRAME::saveWorkbook(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_BASE_FRAME::SelectLibrary(), SYMBOL_EDIT_FRAME::SelectLibraryFromList(), PCB_BASE_EDIT_FRAME::selectLibTable(), SYMBOL_EDIT_FRAME::selectSymLibTable(), PCB_EDIT_FRAME::SetBoard(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), SYMBOL_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), SYMBOL_EDIT_FRAME::SetCurSymbol(), PCB_EDIT_FRAME::SetLastPath(), GERBVIEW_FRAME::SetPageSettings(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_SYMBOL::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SYMBOL_VIEWER_FRAME::ShowModal(), SCH_EDIT_FRAME::ShowSchematicSetupDialog(), SYMBOL_LIBRARY_MANAGER::symTable(), FP_TREE_SYNCHRONIZING_ADAPTER::Sync(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER_FRAME::takeScreenshot(), PCB_EDIT_FRAME::TestStandalone(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_SHEET_PROPERTIES::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), SYMBOL_EDITOR_CONTROL::UnpinLibrary(), FOOTPRINT_EDITOR_CONTROL::UnpinLibrary(), SCH_EDIT_FRAME::updateAutoSaveFile(), DIALOG_PAGES_SETTINGS::UpdateDrawingSheetExample(), SCH_EDIT_FRAME::UpdateTitle(), SIM_PLOT_FRAME::updateTitle(), FOOTPRINT_EDIT_FRAME::UpdateTitle(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_PROPERTIES::~DIALOG_FOOTPRINT_PROPERTIES(), EDA_3D_VIEWER_FRAME::~EDA_3D_VIEWER_FRAME(), PANEL_FP_PROPERTIES_3D_MODEL::~PANEL_FP_PROPERTIES_3D_MODEL(), and SCH_EDIT_FRAME::~SCH_EDIT_FRAME().

◆ processMatchingSymbols()

bool DIALOG_CHANGE_SYMBOLS::processMatchingSymbols ( )
private

Definition at line 448 of file dialog_change_symbols.cpp.

449{
450 SCH_EDIT_FRAME* frame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
451
452 wxCHECK( frame, false );
453
454 LIB_ID newId;
455 bool appendToUndo = false;
456 bool changed = false;
457 SCH_SHEET_LIST hierarchy = frame->Schematic().GetSheets();
458
459 if( m_mode == MODE::CHANGE )
460 {
461 newId.Parse( getLibIdValue( m_newId ) );
462
463 if( !newId.IsValid() )
464 return false;
465 }
466
467 for( SCH_SHEET_PATH& instance : hierarchy )
468 {
469 SCH_SCREEN* screen = instance.LastScreen();
470
471 wxCHECK2( screen, continue );
472
473 std::vector<SCH_SYMBOL*> symbols;
474
475 for( SCH_ITEM* item : screen->Items().OfType( SCH_SYMBOL_T ) )
476 symbols.push_back( static_cast<SCH_SYMBOL*>( item ) );
477
478 for( SCH_SYMBOL* symbol : symbols )
479 {
480 if( !isMatch( symbol, &instance ) )
481 continue;
482
483 if( m_mode == MODE::UPDATE )
484 {
485 if( processSymbol( symbol, &instance, symbol->GetLibId(), appendToUndo ) )
486 changed = true;
487 }
488 else
489 {
490 if( processSymbol( symbol, &instance, newId, appendToUndo ) )
491 changed = true;
492 }
493
494 if( changed )
495 appendToUndo = true;
496 }
497 }
498
500
501 return changed;
502}
bool isMatch(SCH_SYMBOL *aSymbol, SCH_SHEET_PATH *aInstance)
bool processSymbol(SCH_SYMBOL *aSymbol, const SCH_SHEET_PATH *aInstance, const LIB_ID &aNewId, bool aAppendToUndo)
EE_TYPE OfType(KICAD_T aType) const
Definition: sch_rtree.h:235
int Parse(const UTF8 &aId, bool aFix=false)
Parse LIB_ID with the information from aId.
Definition: lib_id.cpp:49
bool IsValid() const
Check if this LID_ID is valid.
Definition: lib_id.h:159
SCH_SHEET_LIST GetSheets() const override
Builds and returns an updated schematic hierarchy TODO: can this be cached?
Definition: schematic.h:87
SCH_SHEET_PATH & GetCurrentSheet() const
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:145
EE_RTREE & Items()
Gets the full RTree, usually for iterating.
Definition: sch_screen.h:107
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
void UpdateAllScreenReferences() const
Update all the symbol references for this sheet path.
Schematic symbol object.
Definition: sch_symbol.h:79
@ SCH_SYMBOL_T
Definition: typeinfo.h:147

References CHANGE, SCH_EDIT_FRAME::GetCurrentSheet(), getLibIdValue(), SCHEMATIC::GetSheets(), isMatch(), LIB_ID::IsValid(), SCH_SCREEN::Items(), m_mode, DIALOG_CHANGE_SYMBOLS_BASE::m_newId, EE_RTREE::OfType(), LIB_ID::Parse(), processSymbol(), SCH_SYMBOL_T, SCH_EDIT_FRAME::Schematic(), UPDATE, and SCH_SHEET_PATH::UpdateAllScreenReferences().

Referenced by onOkButtonClicked().

◆ processSymbol()

bool DIALOG_CHANGE_SYMBOLS::processSymbol ( SCH_SYMBOL aSymbol,
const SCH_SHEET_PATH aInstance,
const LIB_ID aNewId,
bool  aAppendToUndo 
)
private

Definition at line 505 of file dialog_change_symbols.cpp.

507{
508 wxCHECK( aSymbol, false );
509 wxCHECK( aNewId.IsValid(), false );
510
511 SCH_EDIT_FRAME* frame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
512 SCH_SCREEN* screen = aInstance->LastScreen();
513
514 wxCHECK( frame, false );
515
516 LIB_ID oldId = aSymbol->GetLibId();
517 wxString msg;
518 wxString references;
519
520 for( SYMBOL_INSTANCE_REFERENCE instance : aSymbol->GetInstanceReferences() )
521 {
522 if( references.IsEmpty() )
523 references = instance.m_Reference;
524 else
525 references += " " + instance.m_Reference;
526 }
527
528 if( m_mode == MODE::UPDATE )
529 {
530 if( aSymbol->GetInstanceReferences().size() == 1 )
531 {
532 msg.Printf( _( "Update symbol %s from '%s' to '%s'" ),
533 references,
534 UnescapeString( oldId.Format() ),
535 UnescapeString( aNewId.Format() ) );
536 }
537 else
538 {
539 msg.Printf( _( "Update symbols %s from '%s' to '%s'" ),
540 references,
541 UnescapeString( oldId.Format() ),
542 UnescapeString( aNewId.Format() ) );
543 }
544 }
545 else
546 {
547 if( aSymbol->GetInstanceReferences().size() == 1 )
548 {
549 msg.Printf( _( "Change symbol %s from '%s' to '%s'" ),
550 references,
551 UnescapeString( oldId.Format() ),
552 UnescapeString( aNewId.Format() ) );
553 }
554 else
555 {
556 msg.Printf( _( "Change symbols %s from '%s' to '%s'" ),
557 references,
558 UnescapeString( oldId.Format() ),
559 UnescapeString( aNewId.Format() ) );
560 }
561 }
562
563 LIB_SYMBOL* libSymbol = frame->GetLibSymbol( aNewId );
564
565 if( !libSymbol )
566 {
567 msg << ": " << _( "*** symbol not found ***" );
569 return false;
570 }
571
572 std::unique_ptr<LIB_SYMBOL> flattenedSymbol = libSymbol->Flatten();
573
574 if( flattenedSymbol->GetUnitCount() < aSymbol->GetUnit() )
575 {
576 msg << ": " << _( "*** new symbol has too few units ***" );
578 return false;
579 }
580
581 // Removing the symbol needs to be done before the LIB_SYMBOL is changed to prevent stale
582 // library symbols in the schematic file.
583 screen->Remove( aSymbol );
584 frame->SaveCopyInUndoList( screen, aSymbol, UNDO_REDO::CHANGED, aAppendToUndo );
585
586 if( aNewId != aSymbol->GetLibId() )
587 aSymbol->SetLibId( aNewId );
588
589 aSymbol->SetLibSymbol( flattenedSymbol.release() );
590
591 if( m_resetAttributes->GetValue() )
592 {
593 aSymbol->SetIncludeInBom( libSymbol->GetIncludeInBom() );
594 aSymbol->SetIncludeOnBoard( libSymbol->GetIncludeOnBoard() );
595 }
596
597 bool removeExtras = m_removeExtraBox->GetValue();
598 bool resetVis = m_resetFieldVisibilities->GetValue();
599 bool resetEffects = m_resetFieldEffects->GetValue();
600 bool resetPositions = m_resetFieldPositions->GetValue();
601
602 for( unsigned i = 0; i < aSymbol->GetFields().size(); ++i )
603 {
604 SCH_FIELD& field = aSymbol->GetFields()[i];
605 LIB_FIELD* libField = nullptr;
606
607 // Mandatory fields always exist in m_updateFields, but these names can be translated.
608 // so use GetCanonicalName().
610 continue;
611
612 if( i < MANDATORY_FIELDS )
613 libField = libSymbol->GetFieldById( (int) i );
614 else
615 libField = libSymbol->FindField( field.GetName() );
616
617 if( libField )
618 {
619 bool resetText = libField->GetText().IsEmpty() ? m_resetEmptyFields->GetValue()
620 : m_resetFieldText->GetValue();
621
622 if( resetText )
623 {
624 if( i == REFERENCE_FIELD )
625 aSymbol->SetRef( aInstance, UTIL::GetRefDesUnannotated( libField->GetText() ) );
626 else if( i == VALUE_FIELD )
627 aSymbol->SetValue( aInstance, UnescapeString( libField->GetText() ) );
628 else if( i == FOOTPRINT_FIELD )
629 aSymbol->SetFootprint( aInstance, libField->GetText() );
630 else
631 field.SetText( libField->GetText() );
632 }
633
634 if( resetVis )
635 field.SetVisible( libField->IsVisible() );
636
637 if( resetEffects )
638 {
639 // Careful: the visible bit and position are also set by SetAttributes()
640 bool visible = field.IsVisible();
641 VECTOR2I pos = field.GetPosition();
642
643 field.SetAttributes( *libField );
644
645 field.SetVisible( visible );
646 field.SetPosition( pos );
647 }
648
649 if( resetPositions )
650 field.SetTextPos( aSymbol->GetPosition() + libField->GetTextPos() );
651 }
652 else if( i >= MANDATORY_FIELDS && removeExtras )
653 {
654 aSymbol->RemoveField( field.GetName() );
655 i--;
656 }
657 }
658
659 std::vector<LIB_FIELD*> libFields;
660 libSymbol->GetFields( libFields );
661
662 for( unsigned i = MANDATORY_FIELDS; i < libFields.size(); ++i )
663 {
664 const LIB_FIELD& libField = *libFields[i];
665
666 if( !alg::contains( m_updateFields, libField.GetCanonicalName() ) )
667 continue;
668
669 if( !aSymbol->FindField( libField.GetName(), false ) )
670 {
671 wxString fieldName = libField.GetCanonicalName();
672 SCH_FIELD newField( VECTOR2I( 0, 0), aSymbol->GetFieldCount(), aSymbol, fieldName );
673 SCH_FIELD* schField = aSymbol->AddField( newField );
674
675 // Careful: the visible bit and position are also set by SetAttributes()
676 schField->SetAttributes( libField );
677 schField->SetText( libField.GetText() );
678 schField->SetTextPos( aSymbol->GetPosition() + libField.GetTextPos() );
679 }
680 }
681
682 aSymbol->SetSchSymbolLibraryName( wxEmptyString );
683 screen->Append( aSymbol );
684 frame->GetCanvas()->GetView()->Update( aSymbol );
685
686 msg += ": OK";
688
689 return true;
690}
const VECTOR2I & GetTextPos() const
Definition: eda_text.h:209
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition: eda_text.h:88
void SetAttributes(const EDA_TEXT &aSrc)
Set the text attributes from another instance.
Definition: eda_text.cpp:264
virtual bool IsVisible() const
Definition: eda_text.h:137
void SetTextPos(const VECTOR2I &aPoint)
Definition: eda_text.cpp:371
virtual void SetVisible(bool aVisible)
Definition: eda_text.cpp:217
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:163
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:1574
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
Definition: lib_field.cpp:415
wxString GetCanonicalName() const
Get a non-language-specific name for a field which can be used for storage, variable look-up,...
Definition: lib_field.cpp:424
Define a library symbol object.
Definition: lib_symbol.h:99
LIB_FIELD * GetFieldById(int aId) const
Return pointer to the requested field.
bool GetIncludeOnBoard() const
Definition: lib_symbol.h:622
void GetFields(std::vector< LIB_FIELD * > &aList)
Return a list of fields within this symbol.
Definition: lib_symbol.cpp:986
LIB_FIELD * FindField(const wxString &aFieldName)
Find a field within this symbol matching aFieldName and returns it or NULL if not found.
bool GetIncludeInBom() const
Definition: lib_symbol.h:614
std::unique_ptr< LIB_SYMBOL > Flatten() const
Return a flattened symbol inheritance to the caller.
Definition: lib_symbol.cpp:381
SCH_DRAW_PANEL * GetCanvas() const override
Return a pointer to GAL-based canvas of given EDA draw frame.
LIB_SYMBOL * GetLibSymbol(const LIB_ID &aLibId, bool aUseCacheLib=false, bool aShowErrorMsg=false)
Load symbol from symbol library table.
KIGFX::SCH_VIEW * GetView() const override
Return a pointer to the #VIEW instance used in the panel.
void SaveCopyInUndoList(SCH_SCREEN *aScreen, SCH_ITEM *aItemToCopy, UNDO_REDO aTypeCommand, bool aAppend, bool aDirtyConnectivity=true)
Create a copy of the current schematic item, and put it in the undo list.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:50
VECTOR2I GetPosition() const override
Definition: sch_field.cpp:1004
wxString GetCanonicalName() const
Get a non-language-specific name for a field which can be used for storage, variable look-up,...
Definition: sch_field.cpp:825
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
Definition: sch_field.cpp:791
void SetPosition(const VECTOR2I &aPosition) override
Definition: sch_field.cpp:984
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:273
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:146
SCH_SCREEN * LastScreen()
const std::vector< SYMBOL_INSTANCE_REFERENCE > & GetInstanceReferences()
Definition: sch_symbol.h:123
void SetLibId(const LIB_ID &aName)
Definition: sch_symbol.cpp:275
void SetValue(const SCH_SHEET_PATH *sheet, const wxString &aValue)
Definition: sch_symbol.cpp:649
int GetUnit() const
Definition: sch_symbol.h:205
int GetFieldCount() const
Return the number of fields in this symbol.
Definition: sch_symbol.h:436
SCH_FIELD * FindField(const wxString &aFieldName, bool aIncludeDefaultFields=true)
Search for a SCH_FIELD with aFieldName.
Definition: sch_symbol.cpp:814
void SetIncludeOnBoard(bool aIncludeOnBoard)
Definition: sch_symbol.h:695
void RemoveField(const wxString &aFieldName)
Remove a user field from the symbol.
Definition: sch_symbol.cpp:801
void SetFootprint(const SCH_SHEET_PATH *sheet, const wxString &aFootprint)
Definition: sch_symbol.cpp:708
void SetRef(const SCH_SHEET_PATH *aSheet, const wxString &aReference)
Set the reference for the given sheet path for this symbol.
Definition: sch_symbol.cpp:529
VECTOR2I GetPosition() const override
Definition: sch_symbol.h:665
void SetSchSymbolLibraryName(const wxString &aName)
The name of the symbol in the schematic library symbol list.
Definition: sch_symbol.h:170
SCH_FIELD * AddField(const SCH_FIELD &aField)
Add a field to the symbol.
Definition: sch_symbol.cpp:792
void GetFields(std::vector< SCH_FIELD * > &aVector, bool aVisibleOnly)
Populate a std::vector with SCH_FIELDs.
Definition: sch_symbol.cpp:782
void SetLibSymbol(LIB_SYMBOL *aLibSymbol)
Set this schematic symbol library symbol reference to aLibSymbol.
Definition: sch_symbol.cpp:294
void SetIncludeInBom(bool aIncludeInBom)
Definition: sch_symbol.h:692
void Report(const wxString &aText, SEVERITY aSeverity, REPORTER::LOCATION aLocation=REPORTER::LOC_BODY)
Reports the string.
wxString GetRefDesUnannotated(const wxString &aSource)
Return an unannotated refdes from either a prefix or an existing refdes.
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:99
@ RPT_SEVERITY_ERROR
@ RPT_SEVERITY_ACTION
A simple container for schematic symbol instance information.
@ FOOTPRINT_FIELD
Field Name Module PCB, i.e. "16DIP300".
VECTOR2< int > VECTOR2I
Definition: vector2d.h:607

References _, SCH_SYMBOL::AddField(), SCH_SCREEN::Append(), CHANGED, alg::contains(), LIB_SYMBOL::FindField(), SCH_SYMBOL::FindField(), LIB_SYMBOL::Flatten(), FOOTPRINT_FIELD, LIB_ID::Format(), LIB_FIELD::GetCanonicalName(), SCH_FIELD::GetCanonicalName(), SCH_BASE_FRAME::GetCanvas(), LIB_SYMBOL::GetFieldById(), SCH_SYMBOL::GetFieldCount(), LIB_SYMBOL::GetFields(), SCH_SYMBOL::GetFields(), LIB_SYMBOL::GetIncludeInBom(), LIB_SYMBOL::GetIncludeOnBoard(), SCH_SYMBOL::GetInstanceReferences(), SCH_SYMBOL::GetLibId(), SCH_BASE_FRAME::GetLibSymbol(), LIB_FIELD::GetName(), SCH_FIELD::GetName(), SCH_FIELD::GetPosition(), SCH_SYMBOL::GetPosition(), UTIL::GetRefDesUnannotated(), EDA_TEXT::GetText(), EDA_TEXT::GetTextPos(), SCH_SYMBOL::GetUnit(), SCH_DRAW_PANEL::GetView(), LIB_ID::IsValid(), EDA_TEXT::IsVisible(), SCH_SHEET_PATH::LastScreen(), DIALOG_CHANGE_SYMBOLS_BASE::m_messagePanel, m_mode, DIALOG_CHANGE_SYMBOLS_BASE::m_removeExtraBox, DIALOG_CHANGE_SYMBOLS_BASE::m_resetAttributes, DIALOG_CHANGE_SYMBOLS_BASE::m_resetEmptyFields, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldEffects, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldPositions, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldText, DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldVisibilities, m_updateFields, MANDATORY_FIELDS, REFERENCE_FIELD, SCH_SCREEN::Remove(), SCH_SYMBOL::RemoveField(), WX_HTML_REPORT_PANEL::Report(), RPT_SEVERITY_ACTION, RPT_SEVERITY_ERROR, SCH_EDIT_FRAME::SaveCopyInUndoList(), EDA_TEXT::SetAttributes(), SCH_SYMBOL::SetFootprint(), SCH_SYMBOL::SetIncludeInBom(), SCH_SYMBOL::SetIncludeOnBoard(), SCH_SYMBOL::SetLibId(), SCH_SYMBOL::SetLibSymbol(), SCH_FIELD::SetPosition(), SCH_SYMBOL::SetRef(), SCH_SYMBOL::SetSchSymbolLibraryName(), EDA_TEXT::SetText(), EDA_TEXT::SetTextPos(), SCH_SYMBOL::SetValue(), EDA_TEXT::SetVisible(), UnescapeString(), UPDATE, KIGFX::VIEW::Update(), and VALUE_FIELD.

Referenced by processMatchingSymbols().

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

295{
296 const char* hash_key;
297
298 if( m_hash_key.size() )
299 {
300 // a special case like EDA_LIST_DIALOG, which has multiple uses.
301 hash_key = m_hash_key.c_str();
302 }
303 else
304 {
305 hash_key = typeid(*this).name();
306 }
307
308 std::unordered_map<std::string, wxRect>::iterator it = class_map.find( hash_key );
309
310 if( it == class_map.end() )
311 return;
312
313 wxRect rect = it->second;
314 rect.SetSize( wxSize( 0, 0 ) );
315 class_map[ hash_key ] = rect;
316}
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().

◆ 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 }

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by FOOTPRINT_EDIT_FRAME::buildSaveAsDialog(), SYMBOL_EDIT_FRAME::buildSaveAsDialog(), 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_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_SHAPE_PROPERTIES::DIALOG_LIB_SHAPE_PROPERTIES(), DIALOG_LIB_TEXT_PROPERTIES::DIALOG_LIB_TEXT_PROPERTIES(), DIALOG_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), 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_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_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(), DIALOG_COPPER_ZONE::TransferDataToWindow(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_RULE_AREA_PROPERTIES::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}
const char * name
Definition: DXF_plotter.cpp:56

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().

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

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

170{
171 wxSize sz( x, y );
172 SetSize( ConvertDialogToPixels( sz ) );
173}

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

◆ SetupStandardButtons()

void DIALOG_SHIM::SetupStandardButtons ( std::map< int, wxString >  aLabels = {})
inherited

Definition at line 709 of file dialog_shim.cpp.

710{
711 recursiveDescent( GetSizer(), aLabels );
712}
static void recursiveDescent(wxSizer *aSizer, std::map< int, wxString > &aLabels)

References recursiveDescent().

Referenced by CONVERT_SETTINGS_DIALOG::CONVERT_SETTINGS_DIALOG(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOM::DIALOG_BOM(), DIALOG_BUS_MANAGER::DIALOG_BUS_MANAGER(), DIALOG_CHANGE_SYMBOLS(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CLEANUP_GRAPHICS::DIALOG_CLEANUP_GRAPHICS(), DIALOG_COLOR_PICKER::DIALOG_COLOR_PICKER(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY(), DIALOG_DIELECTRIC_MATERIAL::DIALOG_DIELECTRIC_MATERIAL(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_DRC::DIALOG_DRC(), DIALOG_ERC::DIALOG_ERC(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FILTER_SELECTION::DIALOG_FILTER_SELECTION(), 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_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GEN_FOOTPRINT_POSITION::DIALOG_GEN_FOOTPRINT_POSITION(), DIALOG_GENDRILL::DIALOG_GENDRILL(), DIALOG_GET_FOOTPRINT_BY_NAME::DIALOG_GET_FOOTPRINT_BY_NAME(), DIALOG_GLOBAL_DELETION::DIALOG_GLOBAL_DELETION(), 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_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_IMPORT_SETTINGS::DIALOG_IMPORT_SETTINGS(), DIALOG_IMPORTED_LAYERS::DIALOG_IMPORTED_LAYERS(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES(), DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE(), 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_LIB_TEXTBOX_PROPERTIES::DIALOG_LIB_TEXTBOX_PROPERTIES(), DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES(), DIALOG_LOCKED_ITEMS_QUERY::DIALOG_LOCKED_ITEMS_QUERY(), DIALOG_MIGRATE_SETTINGS::DIALOG_MIGRATE_SETTINGS(), 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_PRIMITIVES_TRANSFORM::DIALOG_PAD_PRIMITIVES_TRANSFORM(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_PCM::DIALOG_PCM(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_PLOT::DIALOG_PLOT(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_PNS_DIFF_PAIR_DIMENSIONS::DIALOG_PNS_DIFF_PAIR_DIMENSIONS(), DIALOG_PNS_LENGTH_TUNING_SETTINGS::DIALOG_PNS_LENGTH_TUNING_SETTINGS(), 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_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_RULE_AREA_PROPERTIES::DIALOG_RULE_AREA_PROPERTIES(), DIALOG_SCH_IMPORT_SETTINGS::DIALOG_SCH_IMPORT_SETTINGS(), DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES(), DIALOG_SIM_SETTINGS::DIALOG_SIM_SETTINGS(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TEXTBOX_PROPERTIES::DIALOG_TEXTBOX_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_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES(), EDA_LIST_DIALOG::EDA_LIST_DIALOG(), DIALOG_CONSTRAINTS_REPORTER::FinishInitialization(), HTML_MESSAGE_BOX::HTML_MESSAGE_BOX(), DIALOG_FIELD_PROPERTIES::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), NETLIST_DIALOG_ADD_GENERATOR::NETLIST_DIALOG_ADD_GENERATOR(), PAGED_DIALOG::PAGED_DIALOG(), DIALOG_CLEANUP_TRACKS_AND_VIAS::setupOKButtonLabel(), WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG(), and WX_UNIT_ENTRY_DIALOG::WX_UNIT_ENTRY_DIALOG().

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 226 of file dialog_shim.cpp.

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

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

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

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 437 of file dialog_shim.cpp.

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

◆ updateFieldsList()

void DIALOG_CHANGE_SYMBOLS::updateFieldsList ( )
private

Definition at line 275 of file dialog_change_symbols.cpp.

276{
277 SCH_EDIT_FRAME* frame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
278
279 wxCHECK( frame, /* void */ );
280
281 SCH_SHEET_LIST hierarchy = frame->Schematic().GetSheets();
282
283 // Load non-mandatory fields from all matching symbols and their library symbols
284 std::vector<SCH_FIELD*> fields;
285 std::vector<LIB_FIELD*> libFields;
286 std::set<wxString> fieldNames;
287
288 for( SCH_SHEET_PATH& instance : hierarchy )
289 {
290 SCH_SCREEN* screen = instance.LastScreen();
291
292 wxCHECK2( screen, continue );
293
294 for( SCH_ITEM* item : screen->Items().OfType( SCH_SYMBOL_T ) )
295 {
296 SCH_SYMBOL* symbol = dynamic_cast<SCH_SYMBOL*>( item );
297
298 wxCHECK2( symbol, continue );
299
300 if( !isMatch( symbol, &instance ) )
301 continue;
302
303 fields.clear();
304 symbol->GetFields( fields, false );
305
306 for( unsigned i = MANDATORY_FIELDS; i < fields.size(); ++i )
307 fieldNames.insert( fields[i]->GetName() );
308
309 if( m_mode == MODE::UPDATE && symbol->GetLibId().IsValid() )
310 {
311 LIB_SYMBOL* libSymbol = frame->GetLibSymbol( symbol->GetLibId() );
312
313 if( libSymbol )
314 {
315 std::unique_ptr<LIB_SYMBOL> flattenedSymbol = libSymbol->Flatten();
316
317 flattenedSymbol->GetFields( libFields );
318
319 for( unsigned i = MANDATORY_FIELDS; i < libFields.size(); ++i )
320 fieldNames.insert( libFields[i]->GetName() );
321
322 libFields.clear(); // flattenedSymbol is about to go out of scope...
323 }
324 }
325 }
326 }
327
328 // Load non-mandatory fields from the change-to library symbol
329 if( m_mode == MODE::CHANGE )
330 {
331 LIB_ID newId;
332
333 newId.Parse( getLibIdValue( m_newId ) );
334
335 if( newId.IsValid() )
336 {
337 LIB_SYMBOL* libSymbol = frame->GetLibSymbol( newId );
338
339 if( libSymbol )
340 {
341 std::unique_ptr<LIB_SYMBOL> flattenedSymbol = libSymbol->Flatten();
342
343 flattenedSymbol->GetFields( libFields );
344
345 for( unsigned i = MANDATORY_FIELDS; i < libFields.size(); ++i )
346 fieldNames.insert( libFields[i]->GetName() );
347
348 libFields.clear(); // flattenedSymbol is about to go out of scope...
349 }
350 }
351 }
352
353 // Update the listbox widget
354 for( unsigned i = m_fieldsBox->GetCount() - 1; i >= MANDATORY_FIELDS; --i )
355 m_fieldsBox->Delete( i );
356
357 for( const wxString& fieldName : fieldNames )
358 m_fieldsBox->Append( fieldName );
359
360 for( unsigned i = MANDATORY_FIELDS; i < m_fieldsBox->GetCount(); ++i )
361 m_fieldsBox->Check( i, true );
362}

References CHANGE, LIB_SYMBOL::Flatten(), SCH_SYMBOL::GetFields(), SCH_SYMBOL::GetLibId(), getLibIdValue(), SCH_BASE_FRAME::GetLibSymbol(), SCHEMATIC::GetSheets(), isMatch(), LIB_ID::IsValid(), SCH_SCREEN::Items(), DIALOG_CHANGE_SYMBOLS_BASE::m_fieldsBox, m_mode, DIALOG_CHANGE_SYMBOLS_BASE::m_newId, MANDATORY_FIELDS, EE_RTREE::OfType(), LIB_ID::Parse(), SCH_SYMBOL_T, SCH_EDIT_FRAME::Schematic(), and UPDATE.

Referenced by DIALOG_CHANGE_SYMBOLS(), launchMatchIdSymbolBrowser(), launchNewIdSymbolBrowser(), onMatchByAll(), onMatchById(), onMatchByReference(), onMatchBySelected(), onMatchByValue(), onMatchIDKillFocus(), onMatchTextKillFocus(), and onNewLibIDKillFocus().

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

184{
185 wxSize sz( 0, y );
186 return ConvertDialogToPixels( sz ).y;
187}

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

Member Data Documentation

◆ m_fieldsBox

wxCheckListBox* DIALOG_CHANGE_SYMBOLS_BASE::m_fieldsBox
protectedinherited

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 212 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_hash_key

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

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

Referenced by DIALOG_SHIM::Show().

◆ m_kiway

KIWAY* KIWAY_HOLDER::m_kiway
privateinherited

◆ m_mainSizer

wxBoxSizer* DIALOG_CHANGE_SYMBOLS_BASE::m_mainSizer
protectedinherited

◆ m_matchAll

wxRadioButton* DIALOG_CHANGE_SYMBOLS_BASE::m_matchAll
protectedinherited

◆ m_matchById

wxRadioButton* DIALOG_CHANGE_SYMBOLS_BASE::m_matchById
protectedinherited

◆ m_matchByReference

wxRadioButton* DIALOG_CHANGE_SYMBOLS_BASE::m_matchByReference
protectedinherited

◆ m_matchBySelection

wxRadioButton* DIALOG_CHANGE_SYMBOLS_BASE::m_matchBySelection
protectedinherited

◆ m_matchByValue

wxRadioButton* DIALOG_CHANGE_SYMBOLS_BASE::m_matchByValue
protectedinherited

◆ m_matchIdBrowserButton

wxBitmapButton* DIALOG_CHANGE_SYMBOLS_BASE::m_matchIdBrowserButton
protectedinherited

◆ m_matchSizer

wxGridBagSizer* DIALOG_CHANGE_SYMBOLS_BASE::m_matchSizer
protectedinherited

◆ m_messagePanel

WX_HTML_REPORT_PANEL* DIALOG_CHANGE_SYMBOLS_BASE::m_messagePanel
protectedinherited

◆ m_mode

MODE DIALOG_CHANGE_SYMBOLS::m_mode
private

Set of field names that should have values updated.

Definition at line 81 of file dialog_change_symbols.h.

Referenced by DIALOG_CHANGE_SYMBOLS(), processMatchingSymbols(), processSymbol(), updateFieldsList(), and ~DIALOG_CHANGE_SYMBOLS().

◆ m_newId

◆ m_newIdBrowserButton

wxBitmapButton* DIALOG_CHANGE_SYMBOLS_BASE::m_newIdBrowserButton
protectedinherited

◆ m_newIdSizer

wxBoxSizer* DIALOG_CHANGE_SYMBOLS_BASE::m_newIdSizer
protectedinherited

◆ m_parentFrame

EDA_BASE_FRAME* DIALOG_SHIM::m_parentFrame
protectedinherited

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

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

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

◆ m_removeExtraBox

wxCheckBox* DIALOG_CHANGE_SYMBOLS_BASE::m_removeExtraBox
protectedinherited

◆ m_resetAttributes

wxCheckBox* DIALOG_CHANGE_SYMBOLS_BASE::m_resetAttributes
protectedinherited

◆ m_resetEmptyFields

wxCheckBox* DIALOG_CHANGE_SYMBOLS_BASE::m_resetEmptyFields
protectedinherited

◆ m_resetFieldEffects

wxCheckBox* DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldEffects
protectedinherited

◆ m_resetFieldPositions

wxCheckBox* DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldPositions
protectedinherited

◆ m_resetFieldText

wxCheckBox* DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldText
protectedinherited

◆ m_resetFieldVisibilities

wxCheckBox* DIALOG_CHANGE_SYMBOLS_BASE::m_resetFieldVisibilities
protectedinherited

◆ m_sdbSizer

wxStdDialogButtonSizer* DIALOG_CHANGE_SYMBOLS_BASE::m_sdbSizer
protectedinherited

◆ m_sdbSizerCancel

wxButton* DIALOG_CHANGE_SYMBOLS_BASE::m_sdbSizerCancel
protectedinherited

◆ m_sdbSizerOK

wxButton* DIALOG_CHANGE_SYMBOLS_BASE::m_sdbSizerOK
protectedinherited

◆ m_selAllBtn

wxButton* DIALOG_CHANGE_SYMBOLS_BASE::m_selAllBtn
protectedinherited

◆ m_selNoneBtn

wxButton* DIALOG_CHANGE_SYMBOLS_BASE::m_selNoneBtn
protectedinherited

◆ m_specifiedId

◆ m_specifiedReference

wxTextCtrl* DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedReference
protectedinherited

◆ m_specifiedValue

wxTextCtrl* DIALOG_CHANGE_SYMBOLS_BASE::m_specifiedValue
protectedinherited

◆ m_staticline1

wxStaticLine* DIALOG_CHANGE_SYMBOLS_BASE::m_staticline1
protectedinherited

◆ m_symbol

SCH_SYMBOL* DIALOG_CHANGE_SYMBOLS::m_symbol
private

Definition at line 80 of file dialog_change_symbols.h.

Referenced by DIALOG_CHANGE_SYMBOLS(), and isMatch().

◆ m_tabOrder

◆ m_type

HOLDER_TYPE KIWAY_HOLDER::m_type
privateinherited

Definition at line 85 of file kiway_holder.h.

Referenced by KIWAY_HOLDER::GetType(), and SIM_PLOT_FRAME::onSimFinished().

◆ m_units

◆ m_updateFields

std::set<wxString> DIALOG_CHANGE_SYMBOLS::m_updateFields
private

Definition at line 84 of file dialog_change_symbols.h.

Referenced by onOkButtonClicked(), and processSymbol().

◆ m_updateFieldsSizer

wxStaticBoxSizer* DIALOG_CHANGE_SYMBOLS_BASE::m_updateFieldsSizer
protectedinherited

◆ m_updateOptionsSizer

wxStaticBoxSizer* DIALOG_CHANGE_SYMBOLS_BASE::m_updateOptionsSizer
protectedinherited

◆ m_useCalculatedSize

bool DIALOG_SHIM::m_useCalculatedSize
protectedinherited

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