KiCad PCB EDA Suite
DIALOG_SHEET_PROPERTIES Class Reference

#include <dialog_sheet_properties.h>

Inheritance diagram for DIALOG_SHEET_PROPERTIES:
DIALOG_SHEET_PROPERTIES_BASE DIALOG_SHIM KIWAY_HOLDER

Public Types

enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 DIALOG_SHEET_PROPERTIES (SCH_EDIT_FRAME *aParent, SCH_SHEET *aSheet, bool *aClearAnnotationNewItems)
 
 ~DIALOG_SHEET_PROPERTIES () 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
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 

Static Public Member Functions

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

Protected Member Functions

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

Protected Attributes

wxBoxSizer * m_longForm
 
WX_GRIDm_grid
 
wxBitmapButton * m_bpAdd
 
wxBitmapButton * m_bpMoveUp
 
wxBitmapButton * m_bpMoveDown
 
wxBitmapButton * m_bpDelete
 
wxStaticText * m_borderWidthLabel
 
wxTextCtrl * m_borderWidthCtrl
 
wxStaticText * m_borderWidthUnits
 
wxStaticText * m_borderColorLabel
 
COLOR_SWATCHm_borderSwatch
 
wxStaticText * m_backgroundColorLabel
 
COLOR_SWATCHm_backgroundSwatch
 
wxStaticText * m_pageNumberStaticText
 
wxTextCtrl * m_pageNumberTextCtrl
 
wxStaticLine * m_staticline1
 
wxStaticText * m_hierarchicalPathLabel
 
wxStdDialogButtonSizer * m_stdDialogButtonSizer
 
wxButton * m_stdDialogButtonSizerOK
 
wxButton * m_stdDialogButtonSizerCancel
 
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

bool onSheetFilenameChanged (const wxString &aNewFilename)
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
bool Validate () override
 
void OnAddField (wxCommandEvent &event) override
 
void OnDeleteField (wxCommandEvent &event) override
 
void OnMoveUp (wxCommandEvent &event) override
 
void OnMoveDown (wxCommandEvent &event) override
 
void OnSizeGrid (wxSizeEvent &event) override
 
void OnGridCellChanging (wxGridEvent &event)
 
void OnUpdateUI (wxUpdateUIEvent &event) override
 
void OnInitDlg (wxInitDialogEvent &event) override
 
void AdjustGridColumns (int aWidth)
 

Private Attributes

SCH_EDIT_FRAMEm_frame
 
SCH_SHEETm_sheet
 
bool * m_clearAnnotationNewItems
 
int m_width
 
int m_delayedFocusRow
 
int m_delayedFocusColumn
 
wxString m_shownColumns
 
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields
 
UNIT_BINDER m_borderWidth
 
SCH_SHEET m_dummySheet
 
SCH_FIELD m_dummySheetNameField
 

Detailed Description

Definition at line 37 of file dialog_sheet_properties.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ DIALOG_SHEET_PROPERTIES()

DIALOG_SHEET_PROPERTIES::DIALOG_SHEET_PROPERTIES ( SCH_EDIT_FRAME aParent,
SCH_SHEET aSheet,
bool *  aClearAnnotationNewItems 
)

Definition at line 43 of file dialog_sheet_properties.cpp.

44  :
46  m_frame( aParent ),
47  m_clearAnnotationNewItems( aClearAnnotationNewItems ),
49  m_dummySheet( *aSheet ),
50  m_dummySheetNameField( wxDefaultPosition, SHEETNAME, &m_dummySheet )
51 {
52  m_sheet = aSheet;
53  m_fields = new FIELDS_GRID_TABLE<SCH_FIELD>( this, aParent, m_grid, m_sheet );
54  m_width = 100; // Will be later set to a better value
57 
58  // Give a bit more room for combobox editors
59  m_grid->SetDefaultRowSize( m_grid->GetDefaultRowSize() + 4 );
60 
62  m_grid->PushEventHandler( new FIELDS_GRID_TRICKS( m_grid, this ) );
63 
64  // Show/hide columns according to user's preference
65  auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
66  wxASSERT( cfg );
67 
68  if( cfg )
69  {
70  m_shownColumns = cfg->m_Appearance.edit_sheet_visible_columns;
72  }
73 
74  wxToolTip::Enable( true );
75  m_stdDialogButtonSizerOK->SetDefault();
76 
77  // Configure button logos
78  m_bpAdd->SetBitmap( KiBitmap( BITMAPS::small_plus ) );
79  m_bpDelete->SetBitmap( KiBitmap( BITMAPS::small_trash ) );
80  m_bpMoveUp->SetBitmap( KiBitmap( BITMAPS::small_up ) );
81  m_bpMoveDown->SetBitmap( KiBitmap( BITMAPS::small_down ) );
82 
83  // Set font sizes
84  m_hierarchicalPathLabel->SetFont( KIUI::GetInfoFont( this ) );
85 
86  // wxFormBuilder doesn't include this event...
87  m_grid->Connect( wxEVT_GRID_CELL_CHANGING,
88  wxGridEventHandler( DIALOG_SHEET_PROPERTIES::OnGridCellChanging ),
89  nullptr, this );
90 
92 }
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
void ShowHideColumns(const wxString &shownColumns)
Show/hide the grid columns based on a tokenized string of shown column indexes.
Definition: wx_grid.cpp:136
wxFont GetInfoFont(wxWindow *aWindow)
Definition: ui_common.cpp:144
void SetTable(wxGridTableBase *table, bool aTakeOwnership=false)
Hide wxGrid's SetTable() method with one which doesn't mess up the grid column widths when setting th...
Definition: wx_grid.cpp:72
DIALOG_SHEET_PROPERTIES_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Sheet Properties"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxMINIMIZE_BOX|wxRESIZE_BORDER|wxSYSTEM_MENU)
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
void OnGridCellChanging(wxGridEvent &event)
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References FDC_VALUE, DIALOG_SHIM::finishDialogSettings(), KIUI::GetInfoFont(), KiBitmap(), Kiface(), DIALOG_SHEET_PROPERTIES_BASE::m_bpAdd, DIALOG_SHEET_PROPERTIES_BASE::m_bpDelete, DIALOG_SHEET_PROPERTIES_BASE::m_bpMoveDown, DIALOG_SHEET_PROPERTIES_BASE::m_bpMoveUp, m_delayedFocusColumn, m_delayedFocusRow, m_fields, DIALOG_SHEET_PROPERTIES_BASE::m_grid, DIALOG_SHEET_PROPERTIES_BASE::m_hierarchicalPathLabel, m_sheet, m_shownColumns, DIALOG_SHEET_PROPERTIES_BASE::m_stdDialogButtonSizerOK, m_width, OnGridCellChanging(), WX_GRID::SetTable(), SHEETNAME, WX_GRID::ShowHideColumns(), small_down, small_plus, small_trash, and small_up.

◆ ~DIALOG_SHEET_PROPERTIES()

DIALOG_SHEET_PROPERTIES::~DIALOG_SHEET_PROPERTIES ( )
override

Definition at line 95 of file dialog_sheet_properties.cpp.

96 {
97  auto cfg = dynamic_cast<EESCHEMA_SETTINGS*>( Kiface().KifaceSettings() );
98  wxASSERT( cfg );
99 
100  if( cfg )
101  cfg->m_Appearance.edit_sheet_visible_columns = m_grid->GetShownColumns();
102 
103  // Prevents crash bug in wxGrid's d'tor
105 
106  m_grid->Disconnect( wxEVT_GRID_CELL_CHANGING,
107  wxGridEventHandler( DIALOG_SHEET_PROPERTIES::OnGridCellChanging ),
108  nullptr, this );
109 
110  // Delete the GRID_TRICKS.
111  m_grid->PopEventHandler( true );
112 }
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
void DestroyTable(wxGridTableBase *aTable)
Work-around for a bug in wxGrid which crashes when deleting the table if the cell edit control was no...
Definition: wx_grid.cpp:104
void OnGridCellChanging(wxGridEvent &event)
wxString GetShownColumns()
Get a tokenized string containing the shown column indexes.
Definition: wx_grid.cpp:117
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References WX_GRID::DestroyTable(), WX_GRID::GetShownColumns(), Kiface(), m_fields, DIALOG_SHEET_PROPERTIES_BASE::m_grid, and OnGridCellChanging().

Member Function Documentation

◆ AdjustGridColumns()

void DIALOG_SHEET_PROPERTIES::AdjustGridColumns ( int  aWidth)
private

Definition at line 782 of file dialog_sheet_properties.cpp.

783 {
784  m_width = aWidth;
785  // Account for scroll bars
786  aWidth -= ( m_grid->GetSize().x - m_grid->GetClientSize().x );
787 
788  m_grid->AutoSizeColumn( 0 );
789 
790  int fixedColsWidth = m_grid->GetColSize( 0 );
791 
792  for( int i = 2; i < m_grid->GetNumberCols(); i++ )
793  fixedColsWidth += m_grid->GetColSize( i );
794 
795  int colSize = std::max( aWidth - fixedColsWidth, -1 );
796  colSize = ( colSize == 0 ) ? -1 : colSize; // don't hide the column!
797 
798  m_grid->SetColSize( 1, colSize );
799 }

References DIALOG_SHEET_PROPERTIES_BASE::m_grid, and m_width.

Referenced by OnSizeGrid(), OnUpdateUI(), and TransferDataToWindow().

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 312 of file dialog_shim.cpp.

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

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 480 of file dialog_shim.cpp.

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

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

Referenced by 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 151 of file dialog_shim.cpp.

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

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

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ horizPixelsFromDU()

int DIALOG_SHIM::horizPixelsFromDU ( int  x) const
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 169 of file dialog_shim.cpp.

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

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

◆ IsCtrl()

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

Definition at line 126 of file dialog_shim.h.

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

◆ IsQuasiModal()

◆ IsShiftCtrl()

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

Definition at line 132 of file dialog_shim.h.

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

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

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

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 53 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_kiway.

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

◆ OnAddField()

void DIALOG_SHEET_PROPERTIES::OnAddField ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SHEET_PROPERTIES_BASE.

Definition at line 684 of file dialog_sheet_properties.cpp.

685 {
686  if( !m_grid->CommitPendingChanges() )
687  return;
688 
689  int fieldID = m_fields->size();
690  SCH_FIELD newField( wxPoint( 0, 0 ), fieldID, m_sheet,
691  SCH_SHEET::GetDefaultFieldName( fieldID ) );
692 
693  newField.SetTextAngle( m_fields->at( SHEETNAME ).GetTextAngle() );
694 
695  m_fields->push_back( newField );
696 
697  // notify the grid
698  wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, 1 );
699  m_grid->ProcessTableMessage( msg );
700 
701  m_grid->MakeCellVisible( m_fields->size() - 1, 0 );
702  m_grid->SetGridCursor( m_fields->size() - 1, 0 );
703 
704  m_grid->EnableCellEditControl();
705  m_grid->ShowCellEditControl();
706 }
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
static const wxString GetDefaultFieldName(int aFieldNdx, bool aTranslated=true)
Definition: sch_sheet.cpp:50
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:190
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References WX_GRID::CommitPendingChanges(), SCH_SHEET::GetDefaultFieldName(), m_fields, DIALOG_SHEET_PROPERTIES_BASE::m_grid, m_sheet, EDA_TEXT::SetTextAngle(), and SHEETNAME.

◆ OnCharHook()

void DIALOG_SHIM::OnCharHook ( wxKeyEvent &  aEvt)
protectedvirtualinherited

Reimplemented in DIALOG_CHOOSE_SYMBOL, HK_PROMPT_DIALOG, and HTML_MESSAGE_BOX.

Definition at line 570 of file dialog_shim.cpp.

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

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

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

◆ OnDeleteField()

void DIALOG_SHEET_PROPERTIES::OnDeleteField ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SHEET_PROPERTIES_BASE.

Definition at line 709 of file dialog_sheet_properties.cpp.

710 {
711  int curRow = m_grid->GetGridCursorRow();
712 
713  if( curRow < 0 )
714  return;
715  else if( curRow < SHEET_MANDATORY_FIELDS )
716  {
717  DisplayError( this, wxString::Format( _( "The first %d fields are mandatory." ),
719  return;
720  }
721 
722  m_grid->CommitPendingChanges( true /* quiet mode */ );
723 
724  m_fields->erase( m_fields->begin() + curRow );
725 
726  // notify the grid
727  wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_DELETED, curRow, 1 );
728  m_grid->ProcessTableMessage( msg );
729 
730  if( m_grid->GetNumberRows() > 0 )
731  {
732  m_grid->MakeCellVisible( std::max( 0, curRow-1 ), m_grid->GetGridCursorCol() );
733  m_grid->SetGridCursor( std::max( 0, curRow-1 ), m_grid->GetGridCursorCol() );
734  }
735 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:279
The first 2 are mandatory, and must be instantiated in SCH_SHEET.
Definition: sch_sheet.h:47
#define _(s)
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:190
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References _, WX_GRID::CommitPendingChanges(), DisplayError(), Format(), m_fields, DIALOG_SHEET_PROPERTIES_BASE::m_grid, and SHEET_MANDATORY_FIELDS.

◆ OnGridCellChanging()

void DIALOG_SHEET_PROPERTIES::OnGridCellChanging ( wxGridEvent &  event)
private

Definition at line 644 of file dialog_sheet_properties.cpp.

645 {
646  bool success = true;
647  wxGridCellEditor* editor = m_grid->GetCellEditor( event.GetRow(), event.GetCol() );
648  wxControl* control = editor->GetControl();
649  wxTextEntry* textControl = dynamic_cast<wxTextEntry*>( control );
650 
651  // Short-circuit the validator's more generic "can't be empty" message for the
652  // two mandatory fields:
653  if( event.GetRow() == SHEETNAME && event.GetCol() == FDC_VALUE )
654  {
655  if( textControl && textControl->IsEmpty() )
656  {
657  wxMessageBox( _( "A sheet must have a name." ) );
658  success = false;
659  }
660  }
661  else if( event.GetRow() == SHEETFILENAME && event.GetCol() == FDC_VALUE && textControl )
662  {
663  if( textControl->IsEmpty() )
664  {
665  wxMessageBox( _( "A sheet must have a file specified." ) );
666  success = false;
667  }
668  }
669 
670  if( success && control && control->GetValidator() )
671  success = control->GetValidator()->Validate( control );
672 
673  if( !success )
674  {
675  event.Veto();
676  m_delayedFocusRow = event.GetRow();
677  m_delayedFocusColumn = event.GetCol();
678  }
679 
680  editor->DecRef();
681 }
#define _(s)

References _, editor, FDC_VALUE, m_delayedFocusColumn, m_delayedFocusRow, DIALOG_SHEET_PROPERTIES_BASE::m_grid, SHEETFILENAME, and SHEETNAME.

Referenced by DIALOG_SHEET_PROPERTIES(), and ~DIALOG_SHEET_PROPERTIES().

◆ OnInitDlg()

void DIALOG_SHEET_PROPERTIES::OnInitDlg ( wxInitDialogEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SHEET_PROPERTIES_BASE.

Definition at line 872 of file dialog_sheet_properties.cpp.

873 {
875 
876  // Now all widgets have the size fixed, call FinishDialogSettings
878 }
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...

References DIALOG_SHIM::finishDialogSettings(), and TransferDataToWindow().

◆ OnModify()

◆ OnMoveDown()

void DIALOG_SHEET_PROPERTIES::OnMoveDown ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SHEET_PROPERTIES_BASE.

Definition at line 760 of file dialog_sheet_properties.cpp.

761 {
762  if( !m_grid->CommitPendingChanges() )
763  return;
764 
765  int i = m_grid->GetGridCursorRow();
766 
767  if( i >= SHEET_MANDATORY_FIELDS && i < m_grid->GetNumberRows() - 1 )
768  {
769  SCH_FIELD tmp = m_fields->at( (unsigned) i );
770  m_fields->erase( m_fields->begin() + i, m_fields->begin() + i + 1 );
771  m_fields->insert( m_fields->begin() + i + 1, tmp );
772  m_grid->ForceRefresh();
773 
774  m_grid->SetGridCursor( i + 1, m_grid->GetGridCursorCol() );
775  m_grid->MakeCellVisible( m_grid->GetGridCursorRow(), m_grid->GetGridCursorCol() );
776  }
777  else
778  wxBell();
779 }
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
The first 2 are mandatory, and must be instantiated in SCH_SHEET.
Definition: sch_sheet.h:47
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:190
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References WX_GRID::CommitPendingChanges(), m_fields, DIALOG_SHEET_PROPERTIES_BASE::m_grid, and SHEET_MANDATORY_FIELDS.

◆ OnMoveUp()

void DIALOG_SHEET_PROPERTIES::OnMoveUp ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SHEET_PROPERTIES_BASE.

Definition at line 738 of file dialog_sheet_properties.cpp.

739 {
740  if( !m_grid->CommitPendingChanges() )
741  return;
742 
743  int i = m_grid->GetGridCursorRow();
744 
745  if( i > SHEET_MANDATORY_FIELDS )
746  {
747  SCH_FIELD tmp = m_fields->at( (unsigned) i );
748  m_fields->erase( m_fields->begin() + i, m_fields->begin() + i + 1 );
749  m_fields->insert( m_fields->begin() + i - 1, tmp );
750  m_grid->ForceRefresh();
751 
752  m_grid->SetGridCursor( i - 1, m_grid->GetGridCursorCol() );
753  m_grid->MakeCellVisible( m_grid->GetGridCursorRow(), m_grid->GetGridCursorCol() );
754  }
755  else
756  wxBell();
757 }
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
The first 2 are mandatory, and must be instantiated in SCH_SHEET.
Definition: sch_sheet.h:47
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:190
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References WX_GRID::CommitPendingChanges(), m_fields, DIALOG_SHEET_PROPERTIES_BASE::m_grid, and SHEET_MANDATORY_FIELDS.

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 380 of file dialog_shim.cpp.

381 {
382  if( m_firstPaintEvent )
383  {
385 
386  selectAllInTextCtrls( GetChildren() );
387 
390  else
391  KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
392 
393  m_firstPaintEvent = false;
394  }
395 
396  event.Skip();
397 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:211
bool m_firstPaintEvent
Definition: dialog_shim.h:210
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
static void selectAllInTextCtrls(wxWindowList &children)

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

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ onSheetFilenameChanged()

bool DIALOG_SHEET_PROPERTIES::onSheetFilenameChanged ( const wxString &  aNewFilename)
private

Definition at line 393 of file dialog_sheet_properties.cpp.

394 {
395  wxString msg;
396 
397  // Sheet file names are relative to the path of the current sheet. This allows for
398  // nesting of schematic files in subfolders. Screen file names are always absolute.
399  wxFileName sheetFileName( aNewFilename );
400 
401  if( sheetFileName.GetExt().IsEmpty() )
402  {
403  sheetFileName.SetExt( KiCadSchematicFileExtension );
404  }
405  else if( sheetFileName.GetExt().CmpNoCase( KiCadSchematicFileExtension ) != 0 )
406  {
407  msg = wxString::Format( _( "The file '%s' does not appear to be a valid schematic file." ),
408  sheetFileName.GetFullName() );
409  wxMessageDialog badSchFileDialog( this, msg, _( "Invalid Schematic File" ),
410  wxOK | wxCENTRE | wxICON_EXCLAMATION );
411  badSchFileDialog.ShowModal();
412  return false;
413  }
414 
415  wxFileName screenFileName( sheetFileName );
416  wxFileName tmp( sheetFileName );
417 
418  SCH_SCREEN* currentScreen = m_frame->GetCurrentSheet().LastScreen();
419 
420  wxCHECK( currentScreen, false );
421 
422  // SCH_SCREEN file names are always absolute.
423  wxFileName currentScreenFileName = currentScreen->GetFileName();
424 
425  if( !screenFileName.Normalize( wxPATH_NORM_ALL, currentScreenFileName.GetPath() ) )
426  {
427  msg = wxString::Format( _( "Cannot normalize new sheet schematic file path:\n"
428  "'%s'\n"
429  "against parent sheet schematic file path:\n"
430  "'%s'." ),
431  sheetFileName.GetPath(),
432  currentScreenFileName.GetPath() );
433  DisplayError( this, msg );
434  return false;
435  }
436 
437  wxString newAbsoluteFilename = screenFileName.GetFullPath();
438 
439  // Inside Eeschema, filenames are stored using unix notation
440  newAbsoluteFilename.Replace( wxT( "\\" ), wxT( "/" ) );
441 
442  bool renameFile = false;
443  bool loadFromFile = false;
444  bool clearAnnotation = false;
445  bool restoreSheet = false;
446  bool isExistingSheet = false;
447  SCH_SCREEN* useScreen = nullptr;
448  SCH_SCREEN* oldScreen = nullptr;
449 
450  // Search for a schematic file having the same filename already in use in the hierarchy
451  // or on disk, in order to reuse it.
452  if( !m_frame->Schematic().Root().SearchHierarchy( newAbsoluteFilename, &useScreen ) )
453  {
454  loadFromFile = wxFileExists( newAbsoluteFilename );
455 
456  wxLogTrace( tracePathsAndFiles, "\n Sheet requested file '%s', %s",
457  newAbsoluteFilename,
458  loadFromFile ? "found" : "not found" );
459  }
460 
461  if( m_sheet->GetScreen() == nullptr ) // New just created sheet.
462  {
463  if( !m_frame->AllowCaseSensitiveFileNameClashes( newAbsoluteFilename ) )
464  return false;
465 
466  if( useScreen || loadFromFile ) // Load from existing file.
467  {
468  clearAnnotation = true;
469 
470  if( !IsOK( this, wxString::Format( _( "'%s' already exists." ),
471  sheetFileName.GetFullName() )
472  + wxT( "\n\n" )
473  + wxString::Format( _( "Link '%s' to this file?" ),
474  newAbsoluteFilename ) ) )
475  {
476  return false;
477  }
478  }
479  else // New file.
480  {
481  m_frame->InitSheet( m_sheet, newAbsoluteFilename );
482  }
483  }
484  else // Existing sheet.
485  {
486  bool isUndoable = true;
487  isExistingSheet = true;
488 
489  if( !m_frame->AllowCaseSensitiveFileNameClashes( newAbsoluteFilename ) )
490  return false;
491 
492  // We are always using here a case insensitive comparison to avoid issues
493  // under Windows, although under Unix filenames are case sensitive.
494  // But many users create schematic under both Unix and Windows
495  // **
496  // N.B. 1: aSheet->GetFileName() will return a relative path
497  // aSheet->GetScreen()->GetFileName() returns a full path
498  //
499  // N.B. 2: newFilename uses the unix notation for separator.
500  // so we must use it also to compare the old and new filenames
501  wxString oldAbsoluteFilename = m_sheet->GetScreen()->GetFileName();
502  oldAbsoluteFilename.Replace( wxT( "\\" ), wxT( "/" ) );
503 
504  if( newAbsoluteFilename.Cmp( oldAbsoluteFilename ) != 0 )
505  {
506  // Sheet file name changes cannot be undone.
507  isUndoable = false;
508 
509  if( useScreen || loadFromFile ) // Load from existing file.
510  {
511  clearAnnotation = true;
512 
513  if( !IsOK( this, wxString::Format( _( "Change '%s' link from '%s' to '%s'?" ),
514  newAbsoluteFilename,
515  m_sheet->GetFileName(),
516  sheetFileName.GetFullName() )
517  + wxT( "\n\n" )
518  + _( "This action cannot be undone." ) ) )
519  {
520  return false;
521  }
522 
523  if( loadFromFile )
524  m_sheet->SetScreen( nullptr );
525  }
526  else // Save to new file name.
527  {
528  if( m_sheet->GetScreenCount() > 1 )
529  {
530  if( !IsOK( this, wxString::Format( _( "Create new file '%s' with contents of '%s'?" ),
531  sheetFileName.GetFullName(),
532  m_sheet->GetFileName() )
533  + wxT( "\n\n" )
534  + _( "This action cannot be undone." ) ) )
535  {
536  return false;
537  }
538  }
539 
540  renameFile = true;
541  }
542  }
543 
544  if( isUndoable )
546 
547  if( renameFile )
548  {
549  SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( SCH_IO_MGR::SCH_KICAD ) );
550 
551  // If the associated screen is shared by more than one sheet, do not
552  // change the filename of the corresponding screen here.
553  // (a new screen will be created later)
554  // if it is not shared, update the filename
555  if( m_sheet->GetScreenCount() <= 1 )
556  m_sheet->GetScreen()->SetFileName( newAbsoluteFilename );
557 
558  try
559  {
560  pi->Save( newAbsoluteFilename, m_sheet, &m_frame->Schematic() );
561  }
562  catch( const IO_ERROR& ioe )
563  {
564  msg = wxString::Format( _( "Error occurred saving schematic file '%s'." ),
565  newAbsoluteFilename );
566  DisplayErrorMessage( this, msg, ioe.What() );
567 
568  msg = wxString::Format( _( "Failed to save schematic '%s'" ),
569  newAbsoluteFilename );
570  m_frame->SetMsgPanel( wxEmptyString, msg );
571  return false;
572  }
573 
574  // If the associated screen is shared by more than one sheet, remove the
575  // screen and reload the file to a new screen. Failure to do this will trash
576  // the screen reference counting in complex hierarchies.
577  if( m_sheet->GetScreenCount() > 1 )
578  {
579  oldScreen = m_sheet->GetScreen();
580  m_sheet->SetScreen( nullptr );
581  loadFromFile = true;
582  }
583  }
584  }
585 
586  SCH_SHEET_PATH& currentSheet = m_frame->GetCurrentSheet();
587 
588  if( useScreen )
589  {
590  // Create a temporary sheet for recursion testing to prevent a possible recursion error.
591  std::unique_ptr< SCH_SHEET> tmpSheet = std::make_unique<SCH_SHEET>();
592  tmpSheet->GetFields()[SHEETNAME] = m_fields->at( SHEETNAME );
593  tmpSheet->GetFields()[SHEETFILENAME].SetText( sheetFileName.GetFullPath() );
594  tmpSheet->SetScreen( useScreen );
595 
596  // No need to check for valid library IDs if we are using an existing screen.
597  if( m_frame->CheckSheetForRecursion( tmpSheet.get(), &currentSheet ) )
598  {
599  if( restoreSheet )
600  currentSheet.LastScreen()->Append( m_sheet );
601 
602  return false;
603  }
604 
605  // It's safe to set the sheet screen now.
606  m_sheet->SetScreen( useScreen );
607  }
608  else if( loadFromFile )
609  {
610  if( isExistingSheet )
611  {
612  // Temporarily remove the sheet from the current schematic page so that recursion
613  // and symbol library link tests can be performed with the modified sheet settings.
614  restoreSheet = true;
615  currentSheet.LastScreen()->Remove( m_sheet );
616  }
617 
618  if( !m_frame->LoadSheetFromFile( m_sheet, &currentSheet, newAbsoluteFilename )
619  || m_frame->CheckSheetForRecursion( m_sheet, &currentSheet ) )
620  {
621  if( restoreSheet )
622  {
623  // If we cleared the previous screen, restore it before returning to the user
624  if( oldScreen )
625  m_sheet->SetScreen( oldScreen );
626 
627  currentSheet.LastScreen()->Append( m_sheet );
628  }
629 
630  return false;
631  }
632 
633  if( restoreSheet )
634  currentSheet.LastScreen()->Append( m_sheet );
635  }
636 
638  *m_clearAnnotationNewItems = clearAnnotation;
639 
640  return true;
641 }
bool CheckSheetForRecursion(SCH_SHEET *aSheet, SCH_SHEET_PATH *aHierarchy)
Verify that aSheet will not cause a recursion error in aHierarchy.
Definition: sheet.cpp:47
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:279
const wxString & GetFileName() const
Definition: sch_screen.h:145
bool Remove(SCH_ITEM *aItem)
Remove aItem from the schematic associated with this screen.
Definition: sch_screen.cpp:273
bool SearchHierarchy(const wxString &aFilename, SCH_SCREEN **aScreen)
Search the existing hierarchy for an instance of screen loaded from aFileName.
Definition: sch_sheet.cpp:652
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:292
void SetScreen(SCH_SCREEN *aScreen)
Set the SCH_SCREEN associated with this sheet to aScreen.
Definition: sch_sheet.cpp:172
const wxChar *const tracePathsAndFiles
Flag to enable path and file name debug output.
void InitSheet(SCH_SHEET *aSheet, const wxString &aNewFilename)
Definition: sheet.cpp:97
SCH_SCREEN * GetScreen() const
Definition: sch_sheet.h:105
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
int GetScreenCount() const
Return the number of times the associated screen for the sheet is being used.
Definition: sch_sheet.cpp:195
bool LoadSheetFromFile(SCH_SHEET *aSheet, SCH_SHEET_PATH *aHierarchy, const wxString &aFileName)
Load a the KiCad schematic file aFileName into the sheet aSheet.
Definition: sheet.cpp:105
bool AllowCaseSensitiveFileNameClashes(const wxString &aSchematicFileName)
Check aSchematicFileName for a potential file name case sensitivity clashes.
Definition: sheet.cpp:550
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:30
void SetMsgPanel(const std::vector< MSG_PANEL_ITEM > &aList)
Clear the message panel and populates it with the contents of aList.
SCHEMATIC & Schematic() const
#define _(s)
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
wxString GetFileName() const
Return the filename corresponding to this sheet.
Definition: sch_sheet.h:317
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
Helper object to release a SCH_PLUGIN in the context of a potential thrown exception through its dest...
Definition: sch_io_mgr.h:479
SCH_SHEET & Root() const
Definition: schematic.h:92
SCH_SCREEN * LastScreen()
void Append(SCH_ITEM *aItem)
Definition: sch_screen.cpp:146
void SaveCopyInUndoList(SCH_SCREEN *aScreen, SCH_ITEM *aItemToCopy, UNDO_REDO aTypeCommand, bool aAppend)
Create a copy of the current schematic item, and put it in the undo list.
const std::string KiCadSchematicFileExtension
SCH_SHEET_PATH & GetCurrentSheet() const
void SetFileName(const wxString &aFileName)
Set the file name for this screen to aFileName.
Definition: sch_screen.cpp:110
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75
bool IsOK(wxWindow *aParent, const wxString &aMessage)
Display a yes/no dialog with aMessage and returns the user response.
Definition: confirm.cpp:323

References _, SCH_EDIT_FRAME::AllowCaseSensitiveFileNameClashes(), SCH_SCREEN::Append(), CHANGED, SCH_EDIT_FRAME::CheckSheetForRecursion(), DisplayError(), DisplayErrorMessage(), Format(), SCH_EDIT_FRAME::GetCurrentSheet(), SCH_SCREEN::GetFileName(), SCH_SHEET::GetFileName(), SCH_SHEET::GetScreen(), SCH_EDIT_FRAME::GetScreen(), SCH_SHEET::GetScreenCount(), SCH_EDIT_FRAME::InitSheet(), IsOK(), KiCadSchematicFileExtension, SCH_SHEET_PATH::LastScreen(), SCH_EDIT_FRAME::LoadSheetFromFile(), m_clearAnnotationNewItems, m_fields, m_frame, m_sheet, SCH_SCREEN::Remove(), SCHEMATIC::Root(), SCH_EDIT_FRAME::SaveCopyInUndoList(), SCH_EDIT_FRAME::Schematic(), SCH_SHEET::SearchHierarchy(), SCH_SCREEN::SetFileName(), EDA_DRAW_FRAME::SetMsgPanel(), SCH_SHEET::SetScreen(), SHEETFILENAME, SHEETNAME, tracePathsAndFiles, and IO_ERROR::What().

Referenced by TransferDataFromWindow().

◆ OnSizeGrid()

void DIALOG_SHEET_PROPERTIES::OnSizeGrid ( wxSizeEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SHEET_PROPERTIES_BASE.

Definition at line 858 of file dialog_sheet_properties.cpp.

859 {
860  auto new_size = event.GetSize().GetX();
861 
862  if( m_width != new_size )
863  {
864  AdjustGridColumns( new_size );
865  }
866 
867  // Always propagate for a grid repaint (needed if the height changes, as well as width)
868  event.Skip();
869 }

References AdjustGridColumns(), and m_width.

◆ OnUpdateUI()

void DIALOG_SHEET_PROPERTIES::OnUpdateUI ( wxUpdateUIEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SHEET_PROPERTIES_BASE.

Definition at line 802 of file dialog_sheet_properties.cpp.

803 {
804  wxString shownColumns = m_grid->GetShownColumns();
805 
806  if( shownColumns != m_shownColumns )
807  {
808  m_shownColumns = shownColumns;
809 
810  if( !m_grid->IsCellEditControlShown() )
811  AdjustGridColumns( m_grid->GetRect().GetWidth() );
812  }
813 
814  // Propagate changes in sheetname to displayed hierarchical path
815  wxString hierarchicalPath = _( "Hierarchical path: " );
816 
817  hierarchicalPath += m_frame->GetCurrentSheet().PathHumanReadable( false );
818 
819  if( hierarchicalPath.Last() != '/' )
820  hierarchicalPath.Append( '/' );
821 
822  wxGridCellEditor* editor = m_grid->GetCellEditor( SHEETNAME, FDC_VALUE );
823  wxControl* control = editor->GetControl();
824  wxTextEntry* textControl = dynamic_cast<wxTextEntry*>( control );
825  wxString sheetName;
826 
827  if( textControl )
828  sheetName = textControl->GetValue();
829  else
830  sheetName = m_grid->GetCellValue( SHEETNAME, FDC_VALUE );
831 
833  m_dummySheetNameField.SetText( sheetName );
834  hierarchicalPath += m_dummySheetNameField.GetShownText();
835 
836  editor->DecRef();
837 
838  if( m_hierarchicalPathLabel->GetLabel() != hierarchicalPath )
839  m_hierarchicalPathLabel->SetLabel( hierarchicalPath );
840 
841  // Handle a delayed focus
842  if( m_delayedFocusRow >= 0 )
843  {
844  m_grid->SetFocus();
845  m_grid->MakeCellVisible( m_delayedFocusRow, m_delayedFocusColumn );
846  m_grid->SetGridCursor( m_delayedFocusRow, m_delayedFocusColumn );
847 
848 
849  m_grid->EnableCellEditControl( true );
850  m_grid->ShowCellEditControl();
851 
852  m_delayedFocusRow = -1;
854  }
855 }
void SetFields(const std::vector< SCH_FIELD > &aFields)
Set multiple schematic fields.
Definition: sch_sheet.h:98
wxString PathHumanReadable(bool aUseShortRootName=true) const
Return the sheet path in a human readable form made from the sheet names.
wxString GetShownText(int aDepth=0) const override
Return the string actually shown after processing of the base text.
Definition: sch_field.cpp:105
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:124
#define _(s)
wxString GetShownColumns()
Get a tokenized string containing the shown column indexes.
Definition: wx_grid.cpp:117
SCH_SHEET_PATH & GetCurrentSheet() const
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References _, AdjustGridColumns(), editor, FDC_VALUE, SCH_EDIT_FRAME::GetCurrentSheet(), WX_GRID::GetShownColumns(), SCH_FIELD::GetShownText(), m_delayedFocusColumn, m_delayedFocusRow, m_dummySheet, m_dummySheetNameField, m_fields, m_frame, DIALOG_SHEET_PROPERTIES_BASE::m_grid, DIALOG_SHEET_PROPERTIES_BASE::m_hierarchicalPathLabel, m_shownColumns, SCH_SHEET_PATH::PathHumanReadable(), SCH_SHEET::SetFields(), EDA_TEXT::SetText(), and SHEETNAME.

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Return a reference to the PROJECT associated with this KIWAY.

Definition at line 36 of file kiway_holder.cpp.

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

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

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

◆ resetSize()

void DIALOG_SHIM::resetSize ( )
protectedinherited

Clear the existing dialog size and position.

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

Definition at line 287 of file dialog_shim.cpp.

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

References class_map, and DIALOG_SHIM::m_hash_key.

Referenced by DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES().

◆ SetInitialFocus()

void DIALOG_SHIM::SetInitialFocus ( wxWindow *  aWindow)
inlineinherited

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

Definition at line 97 of file dialog_shim.h.

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

References DIALOG_SHIM::m_initialFocusTarget.

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

◆ SetKiway()

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

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

"this" is a KIWAY_HOLDER mix-in.

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

Definition at line 43 of file kiway_holder.cpp.

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

References ignore_unused(), KIWAY_HOLDER::m_kiway, and name.

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

◆ SetPosition()

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

Force the position of the dialog to a new position.

Parameters
aNewPositionis the new forced position

Definition at line 190 of file dialog_shim.cpp.

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

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

Referenced by PCB_BASE_FRAME::SelectOneLayer().

◆ setSizeInDU()

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

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

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

Definition at line 162 of file dialog_shim.cpp.

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

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

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 219 of file dialog_shim.cpp.

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

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

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

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 430 of file dialog_shim.cpp.

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

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

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

◆ TransferDataFromWindow()

bool DIALOG_SHEET_PROPERTIES::TransferDataFromWindow ( )
overrideprivate

Definition at line 237 of file dialog_sheet_properties.cpp.

238 {
239  if( !wxDialog::TransferDataFromWindow() ) // Calls our Validate() method.
240  return false;
241 
242  // Sheet file names can be relative or absolute.
243  wxString sheetFileName = m_fields->at( SHEETFILENAME ).GetText();
244 
245  // Ensure filepath is not empty. (In normal use will be caught by grid validators,
246  // but unedited data from existing files can be bad.)
247  if( sheetFileName.IsEmpty() )
248  {
249  DisplayError( this, _( "A sheet must have a valid file name." ) );
250  return false;
251  }
252 
253  // Ensure the filename extension is OK. In normal use will be caught by grid validators,
254  // but unedited data from existing files can be bad.
255  wxFileName fn( sheetFileName );
256 
257  if( fn.GetExt().CmpNoCase( KiCadSchematicFileExtension ) != 0 )
258  {
259  DisplayError( this, _( "Sheet file must have a '.kicad_sch' extension." ) );
260  return false;
261  }
262 
263  wxString newRelativeFilename = fn.GetFullPath();
264 
265  // Inside Eeschema, filenames are stored using unix notation
266  newRelativeFilename.Replace( wxT( "\\" ), wxT( "/" ) );
267 
268  wxString oldFilename = m_sheet->GetFields()[ SHEETFILENAME ].GetText();
269  oldFilename.Replace( wxT( "\\" ), wxT( "/" ) );
270 
271  bool filename_changed = oldFilename != newRelativeFilename;
272 
273  if( filename_changed || m_sheet->IsNew() )
274  {
275  SCH_SCREEN* currentScreen = m_frame->GetCurrentSheet().LastScreen();
276 
277  wxCHECK( currentScreen, false );
278 
279  bool clearFileName = false;
280 
281  // This can happen for the root sheet when opening Eeschema in the stand alone mode.
282  if( currentScreen->GetFileName().IsEmpty() )
283  {
284  clearFileName = true;
285  currentScreen->SetFileName( m_frame->Prj().AbsolutePath( wxT( "noname.kicad_sch" ) ) );
286  }
287 
288  wxFileName tmp( fn );
289  wxFileName screenFileName = currentScreen->GetFileName();
290 
291  if( fn.IsAbsolute() && fn.MakeRelativeTo( screenFileName.GetPath() ) )
292  {
293  wxMessageDialog makeRelDlg( this, _( "Use relative path for sheet file?" ),
294  _( "Sheet File Path" ),
295  wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION | wxCENTER );
296 
297  makeRelDlg.SetExtendedMessage( _( "Using relative hierarchical sheet file name paths "
298  "improves schematic portability across systems and "
299  "platforms. Using absolute paths can result in "
300  "portability issues." ) );
301  makeRelDlg.SetYesNoLabels( wxMessageDialog::ButtonLabel( _( "Use Relative Path" ) ),
302  wxMessageDialog::ButtonLabel( _( "Use Absolute Path" ) ) );
303 
304  if( makeRelDlg.ShowModal() == wxID_YES )
305  {
306  wxLogTrace( tracePathsAndFiles, "\n Converted absolute path: '%s'"
307  "\n to relative path: '%s'",
308  tmp.GetPath(),
309  fn.GetPath() );
310  m_fields->at( SHEETFILENAME ).SetText( fn.GetFullPath() );
311  newRelativeFilename = fn.GetFullPath();
312  }
313  }
314 
315  if( !onSheetFilenameChanged( newRelativeFilename ) )
316  {
317  if( clearFileName )
318  currentScreen->SetFileName( wxEmptyString );
319 
320  return false;
321  }
322 
323  if( clearFileName )
324  currentScreen->SetFileName( wxEmptyString );
325 
326  // One last validity check (and potential repair) just to be sure to be sure
327  SCH_SHEET_LIST repairedList( &m_frame->Schematic().Root(), true );
328  }
329 
330  wxString newSheetname = m_fields->at( SHEETNAME ).GetText();
331 
332  if( newSheetname.IsEmpty() )
333  newSheetname = _( "Untitled Sheet" );
334 
335  m_fields->at( SHEETNAME ).SetText( newSheetname );
336 
337  // change all field positions from relative to absolute
338  for( unsigned i = 0; i < m_fields->size(); ++i )
339  m_fields->at( i ).Offset( m_sheet->GetPosition() );
340 
343 
345 
347 
348  COLOR_SETTINGS* colorSettings = m_frame->GetColorSettings();
349 
350  if( colorSettings->GetOverrideSchItemColors()
353  {
354  wxPanel temp( this );
355  temp.Hide();
356  PANEL_EESCHEMA_COLOR_SETTINGS prefs( m_frame, &temp );
357  wxString checkboxLabel = prefs.m_optOverrideColors->GetLabel();
358 
359  KIDIALOG dlg( this, _( "Note: item colors are overridden in the current color theme." ),
361  dlg.ShowDetailedText( wxString::Format( _( "To see individual item colors uncheck '%s'\n"
362  "in Preferences > Eeschema > Colors." ),
363  checkboxLabel ) );
364  dlg.DoNotShowCheckbox( __FILE__, __LINE__ );
365  dlg.ShowModal();
366  }
367 
370 
372  SCH_SHEET_PATH instance = m_frame->GetCurrentSheet();
373 
374  instance.push_back( m_sheet );
375 
376  if( m_sheet->IsNew() )
377  m_sheet->AddInstance( instance.Path() );
378 
379  m_sheet->SetPageNumber( instance, m_pageNumberTextCtrl->GetValue() );
380 
382 
383  // Refresh all sheets in case ordering changed.
384  for( SCH_ITEM* item : m_frame->GetScreen()->Items().OfType( SCH_SHEET_T ) )
385  m_frame->UpdateItem( item );
386 
387  m_frame->OnModify();
388 
389  return true;
390 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:279
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
EE_TYPE OfType(KICAD_T aType) const
Definition: sch_rtree.h:230
const wxString & GetFileName() const
Definition: sch_screen.h:145
KIGFX::COLOR4D GetSwatchColor() const
Helper class to create more flexible dialogs, including 'do not show again' checkbox handling.
Definition: confirm.h:45
void SetFields(const std::vector< SCH_FIELD > &aFields)
Set multiple schematic fields.
Definition: sch_sheet.h:98
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
KIID_PATH Path() const
Get the sheet path as an KIID_PATH.
const wxChar *const tracePathsAndFiles
Flag to enable path and file name debug output.
KIGFX::COLOR4D GetBorderColor() const
Definition: sch_sheet.h:113
void SetPageNumber(const SCH_SHEET_PATH &aInstance, const wxString &aPageNumber)
Set the page number for the sheet instance aInstance.
Definition: sch_sheet.cpp:1166
virtual const wxString AbsolutePath(const wxString &aFileName) const
Fix up aFileName if it is relative to the project's directory to be an absolute path and filename.
Definition: project.cpp:269
bool IsNew() const
Definition: eda_item.h:118
KIGFX::COLOR4D GetBackgroundColor() const
Definition: sch_sheet.h:116
void SetBorderWidth(int aWidth)
Definition: sch_sheet.h:111
std::vector< SCH_FIELD > & GetFields()
Definition: sch_sheet.h:90
SCH_SCREEN * GetScreen() const override
Return a pointer to a BASE_SCREEN or one of its derivatives.
void SetBackgroundColor(KIGFX::COLOR4D aColor)
Definition: sch_sheet.h:117
void TestDanglingEnds()
Test all of the connectable objects in the schematic for unused connection points.
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
SCHEMATIC & Schematic() const
void SetBorderColor(KIGFX::COLOR4D aColor)
Definition: sch_sheet.h:114
static bool positioningChanged(const SCH_FIELD &a, const SCH_FIELD &b)
void ClearFieldsAutoplaced()
Definition: sch_item.h:427
#define _(s)
void UpdateItem(EDA_ITEM *aItem, bool isAddOrDelete=false, bool aUpdateRtree=false)
Mark an item for refresh.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
wxPoint GetPosition() const override
Definition: sch_sheet.h:382
COLOR_SETTINGS * GetColorSettings() const override
Returns a pointer to the active color theme settings.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
SCH_SHEET & Root() const
Definition: schematic.h:92
SCH_SCREEN * LastScreen()
EE_RTREE & Items()
Gets the full RTree, usually for iterating.
Definition: sch_screen.h:110
const std::string KiCadSchematicFileExtension
virtual long long int GetValue()
Return the current value in Internal Units.
Color settings are a bit different than most of the settings objects in that there can be more than o...
SCH_SHEET_PATH & GetCurrentSheet() const
bool GetOverrideSchItemColors() const
void OnModify() override
Must be called after a schematic change in order to set the "modify" flag of the current screen and u...
void SetFileName(const wxString &aFileName)
Set the file name for this screen to aFileName.
Definition: sch_screen.cpp:110
bool onSheetFilenameChanged(const wxString &aNewFilename)
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition: sch_item.h:182
SCH_SHEET_LIST & GetFullHierarchy() const
Return the full schematic flattened hierarchical sheet list.
Definition: schematic.cpp:395
bool AddInstance(const KIID_PATH &aInstance)
Add a new instance aSheetPath to the instance list.
Definition: sch_sheet.cpp:1124

References _, PROJECT::AbsolutePath(), SCH_SHEET::AddInstance(), SCH_ITEM::ClearFieldsAutoplaced(), DisplayError(), KIDIALOG::DoNotShowCheckbox(), Format(), SCH_SHEET::GetBackgroundColor(), SCH_SHEET::GetBorderColor(), SCH_BASE_FRAME::GetColorSettings(), SCH_EDIT_FRAME::GetCurrentSheet(), SCH_SHEET::GetFields(), SCH_SCREEN::GetFileName(), SCHEMATIC::GetFullHierarchy(), COLOR_SETTINGS::GetOverrideSchItemColors(), SCH_SHEET::GetPosition(), SCH_EDIT_FRAME::GetScreen(), COLOR_SWATCH::GetSwatchColor(), UNIT_BINDER::GetValue(), EDA_ITEM::IsNew(), SCH_SCREEN::Items(), KIDIALOG::KD_WARNING, KiCadSchematicFileExtension, SCH_SHEET_PATH::LastScreen(), DIALOG_SHEET_PROPERTIES_BASE::m_backgroundSwatch, DIALOG_SHEET_PROPERTIES_BASE::m_borderSwatch, m_borderWidth, m_fields, m_frame, PANEL_COLOR_SETTINGS_BASE::m_optOverrideColors, DIALOG_SHEET_PROPERTIES_BASE::m_pageNumberTextCtrl, m_sheet, EE_RTREE::OfType(), SCH_EDIT_FRAME::OnModify(), onSheetFilenameChanged(), SCH_SHEET_PATH::Path(), positioningChanged(), KIWAY_HOLDER::Prj(), SCH_SHEET_PATH::push_back(), SCHEMATIC::Root(), SCH_SHEET_T, SCH_EDIT_FRAME::Schematic(), SCH_SHEET::SetBackgroundColor(), SCH_SHEET::SetBorderColor(), SCH_SHEET::SetBorderWidth(), SCH_SHEET::SetFields(), SCH_SCREEN::SetFileName(), SCH_SHEET::SetPageNumber(), SHEETFILENAME, SHEETNAME, KIDIALOG::ShowModal(), SCH_EDIT_FRAME::TestDanglingEnds(), tracePathsAndFiles, and SCH_BASE_FRAME::UpdateItem().

◆ TransferDataToWindow()

bool DIALOG_SHEET_PROPERTIES::TransferDataToWindow ( )
overrideprivate

Definition at line 115 of file dialog_sheet_properties.cpp.

116 {
117  if( !wxDialog::TransferDataToWindow() )
118  return false;
119 
120  // Push a copy of each field into m_updateFields
121  for( SCH_FIELD& field : m_sheet->GetFields() )
122  {
123  SCH_FIELD field_copy( field );
124 
125 #ifdef __WINDOWS__
126  // Filenames are stored using unix notation
127  if( field_copy.GetId() == SHEETFILENAME )
128  {
129  wxString filename = field_copy.GetText();
130  filename.Replace( wxT( "/" ), wxT( "\\" ) );
131  field_copy.SetText( filename );
132  }
133 #endif
134 
135  // change offset to be symbol-relative
136  field_copy.Offset( -m_sheet->GetPosition() );
137 
138  m_fields->push_back( field_copy );
139  }
140 
141  // notify the grid
142  wxGridTableMessage msg( m_fields, wxGRIDTABLE_NOTIFY_ROWS_APPENDED, m_fields->size() );
143  m_grid->ProcessTableMessage( msg );
144  AdjustGridColumns( m_grid->GetRect().GetWidth() );
145 
146  // border width
148 
149  // set up color swatches
150  KIGFX::COLOR4D borderColor = m_sheet->GetBorderColor();
151  KIGFX::COLOR4D backgroundColor = m_sheet->GetBackgroundColor();
152 
153  m_borderSwatch->SetDefaultColor( COLOR4D::UNSPECIFIED );
154  m_backgroundSwatch->SetDefaultColor( COLOR4D::UNSPECIFIED );
155 
156  m_borderSwatch->SetSwatchColor( borderColor, false );
157  m_backgroundSwatch->SetSwatchColor( backgroundColor, false );
158 
162 
164  SCH_SHEET_PATH instance = m_frame->GetCurrentSheet();
165 
166  instance.push_back( m_sheet );
167 
168  wxString nextPageNumber = m_sheet->GetPageNumber( instance );
169 
170  m_pageNumberTextCtrl->ChangeValue( nextPageNumber );
171 
172  Layout();
173 
174  return true;
175 }
void SetSwatchColor(const KIGFX::COLOR4D &aColor, bool aSendEvent)
Set the current swatch color directly.
A container for handling SCH_SHEET_PATH objects in a flattened hierarchy.
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
void push_back(SCH_SHEET *aSheet)
Forwarded method from std::vector.
KIGFX::COLOR4D GetBorderColor() const
Definition: sch_sheet.h:113
KIGFX::COLOR4D GetBackgroundColor() const
Definition: sch_sheet.h:116
std::vector< SCH_FIELD > & GetFields()
Definition: sch_sheet.h:90
int GetBorderWidth() const
Definition: sch_sheet.h:110
SCHEMATIC & Schematic() const
void SetDefaultColor(const KIGFX::COLOR4D &aColor)
Sets the color that will be chosen with the "Reset to Default" button in the chooser.
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
wxPoint GetPosition() const override
Definition: sch_sheet.h:382
COLOR_SETTINGS * GetColorSettings() const override
Returns a pointer to the active color theme settings.
COLOR4D GetColor(int aLayer) const
virtual void SetValue(int aValue)
Set new value (in Internal Units) for the text field, taking care of units conversion.
SCH_SHEET_PATH & GetCurrentSheet() const
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields
SCH_SHEET_LIST & GetFullHierarchy() const
Return the full schematic flattened hierarchical sheet list.
Definition: schematic.cpp:395
wxString GetPageNumber(const SCH_SHEET_PATH &aInstance) const
Return the sheet page number for aInstance.
Definition: sch_sheet.cpp:1148
void SetSwatchBackground(const KIGFX::COLOR4D &aBackground)
Set the swatch background color.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References AdjustGridColumns(), SCH_SHEET::GetBackgroundColor(), SCH_SHEET::GetBorderColor(), SCH_SHEET::GetBorderWidth(), COLOR_SETTINGS::GetColor(), SCH_BASE_FRAME::GetColorSettings(), SCH_EDIT_FRAME::GetCurrentSheet(), SCH_SHEET::GetFields(), SCHEMATIC::GetFullHierarchy(), SCH_FIELD::GetId(), SCH_SHEET::GetPageNumber(), SCH_SHEET::GetPosition(), EDA_TEXT::GetText(), LAYER_SCHEMATIC_BACKGROUND, DIALOG_SHEET_PROPERTIES_BASE::m_backgroundSwatch, DIALOG_SHEET_PROPERTIES_BASE::m_borderSwatch, m_borderWidth, m_fields, m_frame, DIALOG_SHEET_PROPERTIES_BASE::m_grid, DIALOG_SHEET_PROPERTIES_BASE::m_pageNumberTextCtrl, m_sheet, EDA_TEXT::Offset(), SCH_SHEET_PATH::push_back(), SCH_EDIT_FRAME::Schematic(), COLOR_SWATCH::SetDefaultColor(), COLOR_SWATCH::SetSwatchBackground(), COLOR_SWATCH::SetSwatchColor(), EDA_TEXT::SetText(), UNIT_BINDER::SetValue(), and SHEETFILENAME.

Referenced by OnInitDlg().

◆ Validate()

bool DIALOG_SHEET_PROPERTIES::Validate ( )
overrideprivate

Definition at line 178 of file dialog_sheet_properties.cpp.

179 {
180  wxString msg;
181  LIB_ID id;
182 
183  if( !m_grid->CommitPendingChanges() || !m_grid->Validate() )
184  return false;
185 
186  // Check for missing field names.
187  for( size_t i = SHEET_MANDATORY_FIELDS; i < m_fields->size(); ++i )
188  {
189  SCH_FIELD& field = m_fields->at( i );
190  wxString fieldName = field.GetName( false );
191 
192  if( fieldName.IsEmpty() )
193  {
194  DisplayErrorMessage( this, _( "Fields must have a name." ) );
195 
197  m_delayedFocusRow = i;
198 
199  return false;
200  }
201  }
202 
203  return true;
204 }
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:292
The first 2 are mandatory, and must be instantiated in SCH_SHEET.
Definition: sch_sheet.h:47
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
#define _(s)
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:190
wxString GetName(bool aUseDefaultName=true) const
Return the field name.
Definition: sch_field.cpp:678
FIELDS_GRID_TABLE< SCH_FIELD > * m_fields

References _, WX_GRID::CommitPendingChanges(), DisplayErrorMessage(), FDC_NAME, SCH_FIELD::GetName(), m_delayedFocusColumn, m_delayedFocusRow, m_fields, DIALOG_SHEET_PROPERTIES_BASE::m_grid, and SHEET_MANDATORY_FIELDS.

◆ vertPixelsFromDU()

int DIALOG_SHIM::vertPixelsFromDU ( int  y) const
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 176 of file dialog_shim.cpp.

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

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

Member Data Documentation

◆ m_backgroundColorLabel

wxStaticText* DIALOG_SHEET_PROPERTIES_BASE::m_backgroundColorLabel
protectedinherited

◆ m_backgroundSwatch

COLOR_SWATCH* DIALOG_SHEET_PROPERTIES_BASE::m_backgroundSwatch
protectedinherited

◆ m_borderColorLabel

wxStaticText* DIALOG_SHEET_PROPERTIES_BASE::m_borderColorLabel
protectedinherited

◆ m_borderSwatch

COLOR_SWATCH* DIALOG_SHEET_PROPERTIES_BASE::m_borderSwatch
protectedinherited

◆ m_borderWidth

UNIT_BINDER DIALOG_SHEET_PROPERTIES::m_borderWidth
private

Definition at line 56 of file dialog_sheet_properties.h.

Referenced by TransferDataFromWindow(), and TransferDataToWindow().

◆ m_borderWidthCtrl

wxTextCtrl* DIALOG_SHEET_PROPERTIES_BASE::m_borderWidthCtrl
protectedinherited

◆ m_borderWidthLabel

wxStaticText* DIALOG_SHEET_PROPERTIES_BASE::m_borderWidthLabel
protectedinherited

◆ m_borderWidthUnits

wxStaticText* DIALOG_SHEET_PROPERTIES_BASE::m_borderWidthUnits
protectedinherited

◆ m_bpAdd

wxBitmapButton* DIALOG_SHEET_PROPERTIES_BASE::m_bpAdd
protectedinherited

◆ m_bpDelete

wxBitmapButton* DIALOG_SHEET_PROPERTIES_BASE::m_bpDelete
protectedinherited

◆ m_bpMoveDown

wxBitmapButton* DIALOG_SHEET_PROPERTIES_BASE::m_bpMoveDown
protectedinherited

◆ m_bpMoveUp

wxBitmapButton* DIALOG_SHEET_PROPERTIES_BASE::m_bpMoveUp
protectedinherited

◆ m_clearAnnotationNewItems

bool* DIALOG_SHEET_PROPERTIES::m_clearAnnotationNewItems
private

Definition at line 48 of file dialog_sheet_properties.h.

Referenced by onSheetFilenameChanged().

◆ m_delayedFocusColumn

int DIALOG_SHEET_PROPERTIES::m_delayedFocusColumn
private

◆ m_delayedFocusRow

int DIALOG_SHEET_PROPERTIES::m_delayedFocusRow
private

◆ m_dummySheet

SCH_SHEET DIALOG_SHEET_PROPERTIES::m_dummySheet
private

Definition at line 58 of file dialog_sheet_properties.h.

Referenced by OnUpdateUI().

◆ m_dummySheetNameField

SCH_FIELD DIALOG_SHEET_PROPERTIES::m_dummySheetNameField
private

Definition at line 59 of file dialog_sheet_properties.h.

Referenced by OnUpdateUI().

◆ m_fields

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 210 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_frame

SCH_EDIT_FRAME* DIALOG_SHEET_PROPERTIES::m_frame
private

◆ m_grid

◆ m_hash_key

◆ m_hierarchicalPathLabel

wxStaticText* DIALOG_SHEET_PROPERTIES_BASE::m_hierarchicalPathLabel
protectedinherited

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 211 of file dialog_shim.h.

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

◆ m_initialSize

wxSize DIALOG_SHIM::m_initialSize
protectedinherited

Definition at line 223 of file dialog_shim.h.

Referenced by DIALOG_SHIM::Show().

◆ m_longForm

wxBoxSizer* DIALOG_SHEET_PROPERTIES_BASE::m_longForm
protectedinherited

◆ m_pageNumberStaticText

wxStaticText* DIALOG_SHEET_PROPERTIES_BASE::m_pageNumberStaticText
protectedinherited

◆ m_pageNumberTextCtrl

wxTextCtrl* DIALOG_SHEET_PROPERTIES_BASE::m_pageNumberTextCtrl
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 213 of file dialog_shim.h.

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

◆ m_qmodal_parent_disabler

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited

◆ m_qmodal_showing

bool DIALOG_SHIM::m_qmodal_showing
protectedinherited

Definition at line 215 of file dialog_shim.h.

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

◆ m_sheet

SCH_SHEET* DIALOG_SHEET_PROPERTIES::m_sheet
private

◆ m_shownColumns

wxString DIALOG_SHEET_PROPERTIES::m_shownColumns
private

Definition at line 53 of file dialog_sheet_properties.h.

Referenced by DIALOG_SHEET_PROPERTIES(), and OnUpdateUI().

◆ m_staticline1

wxStaticLine* DIALOG_SHEET_PROPERTIES_BASE::m_staticline1
protectedinherited

◆ m_stdDialogButtonSizer

wxStdDialogButtonSizer* DIALOG_SHEET_PROPERTIES_BASE::m_stdDialogButtonSizer
protectedinherited

◆ m_stdDialogButtonSizerCancel

wxButton* DIALOG_SHEET_PROPERTIES_BASE::m_stdDialogButtonSizerCancel
protectedinherited

◆ m_stdDialogButtonSizerOK

wxButton* DIALOG_SHEET_PROPERTIES_BASE::m_stdDialogButtonSizerOK
protectedinherited

◆ m_tabOrder

◆ m_units

◆ m_useCalculatedSize

bool DIALOG_SHIM::m_useCalculatedSize
protectedinherited

◆ m_width

int DIALOG_SHEET_PROPERTIES::m_width
private

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