KiCad PCB EDA Suite
DIALOG_LIB_EDIT_PIN_TABLE Class Reference

#include <dialog_lib_edit_pin_table.h>

Inheritance diagram for DIALOG_LIB_EDIT_PIN_TABLE:
DIALOG_LIB_EDIT_PIN_TABLE_BASE DIALOG_SHIM KIWAY_HOLDER

Public Member Functions

 DIALOG_LIB_EDIT_PIN_TABLE (wxWindow *parent, LIB_PART *aPart)
 
 ~DIALOG_LIB_EDIT_PIN_TABLE () override
 
bool TransferDataToWindow () override
 
bool TransferDataFromWindow () override
 
void OnColSort (wxGridEvent &aEvent)
 
void OnAddRow (wxCommandEvent &event) override
 
void OnDeleteRow (wxCommandEvent &event) override
 
void OnSize (wxSizeEvent &event) override
 
void OnCellEdited (wxGridEvent &event) override
 
void OnRebuildRows (wxCommandEvent &event) override
 
void OnUpdateUI (wxUpdateUIEvent &event) override
 
void OnCancel (wxCommandEvent &event) override
 
void OnClose (wxCloseEvent &event) 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 ()
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
EDA_UNITS_T GetUserUnits () const override
 
KIWAYKiway () const
 Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Function Prj returns a reference to the PROJECT "associated with" this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 Function SetKiway. More...
 

Protected Member Functions

void updateSummary ()
 
void adjustGridColumns (int aWidth)
 
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)
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int VertPixelsFromDU (int y)
 Convert an integer number of dialog units to pixels, vertically. More...
 

Protected Attributes

wxConfigBase * m_config
 
bool m_initialized = false
 
int m_originalColWidths [COL_COUNT]
 
wxString m_columnsShown
 
LIB_PARTm_part
 
LIB_PINS m_pins
 
bool m_modified
 true when there are unsaved changes More...
 
PIN_TABLE_DATA_MODELm_dataModel
 
WX_GRIDm_grid
 
wxBitmapButton * m_addButton
 
wxBitmapButton * m_deleteButton
 
wxStaticLine * m_staticline1
 
wxCheckBox * m_cbGroup
 
wxBitmapButton * m_refreshButton
 
wxStaticLine * m_staticline2
 
wxStaticText * m_staticText1
 
wxStaticText * m_summary
 
wxStdDialogButtonSizer * m_Buttons
 
wxButton * m_ButtonsOK
 
wxButton * m_ButtonsCancel
 
EDA_UNITS_T m_units
 
std::string m_hash_key
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 

Detailed Description

Definition at line 25 of file dialog_lib_edit_pin_table.h.

Constructor & Destructor Documentation

◆ DIALOG_LIB_EDIT_PIN_TABLE()

DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE ( wxWindow *  parent,
LIB_PART aPart 
)

Definition at line 363 of file dialog_lib_edit_pin_table.cpp.

References COL_COUNT, COL_ORIENTATION, COL_SHAPE, COL_TYPE, g_orientationIcons, g_orientationNames, g_shapeIcons, g_shapeNames, g_typeIcons, g_typeNames, GetBitmap(), LIB_PIN::GetOrientationNames(), LIB_PIN::GetOrientationSymbols(), GetText(), DIALOG_SHIM::GetUserUnits(), i, INDETERMINATE, KiBitmap(), Kiface(), KIFACE_I::KifaceSettings(), DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_addButton, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_ButtonsOK, m_columnsShown, m_config, m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_deleteButton, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_initialized, m_modified, m_originalColWidths, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_refreshButton, OnColSort(), PINSHAPE_COUNT, PinTableShownColumnsKey, PINTYPE_COUNT, WX_GRID::SetTable(), and WX_GRID::ShowHideColumns().

363  :
365  m_part( aPart )
366 {
368 
369  if( g_typeNames.empty())
370  {
371  for( unsigned i = 0; i < PINTYPE_COUNT; ++i )
372  g_typeIcons.push_back( GetBitmap( static_cast<ELECTRICAL_PINTYPE>( i ) ) );
373  for( unsigned i = 0; i < PINTYPE_COUNT; ++i )
374  g_typeNames.push_back( GetText( static_cast<ELECTRICAL_PINTYPE>( i ) ) );
375  g_typeNames.push_back( INDETERMINATE );
376 
377  for( unsigned i = 0; i < PINSHAPE_COUNT; ++i )
378  g_shapeIcons.push_back( GetBitmap( static_cast<GRAPHIC_PINSHAPE>( i ) ) );
379  for( unsigned i = 0; i < PINSHAPE_COUNT; ++i )
380  g_shapeNames.push_back( GetText( static_cast<GRAPHIC_PINSHAPE>( i ) ) );
381  g_shapeNames.push_back( INDETERMINATE );
382 
383  for( unsigned i = 0; i < LIB_PIN::GetOrientationNames().size(); ++i )
386  g_orientationNames.push_back( INDETERMINATE );
387  }
388 
390 
391  // Save original columns widths so we can do proportional sizing.
392  for( int i = 0; i < COL_COUNT; ++i )
393  m_originalColWidths[ i ] = m_grid->GetColSize( i );
394 
395  // Give a bit more room for combobox editors
396  m_grid->SetDefaultRowSize( m_grid->GetDefaultRowSize() + 4 );
397 
399  m_grid->PushEventHandler( new GRID_TRICKS( m_grid ) );
400 
401  // Show/hide columns according to the user's preference
402  m_config->Read( PinTableShownColumnsKey, &m_columnsShown, wxT( "0 1 2 3 4 8 9" ) );
404 
405  // Set special attributes
406  wxGridCellAttr* attr;
407 
408  attr = new wxGridCellAttr;
409  attr->SetRenderer( new GRID_CELL_ICON_TEXT_RENDERER( g_typeIcons, g_typeNames ) );
410  attr->SetEditor( new GRID_CELL_ICON_TEXT_POPUP( g_typeIcons, g_typeNames ) );
411  m_grid->SetColAttr( COL_TYPE, attr );
412 
413  attr = new wxGridCellAttr;
414  attr->SetRenderer( new GRID_CELL_ICON_TEXT_RENDERER( g_shapeIcons, g_shapeNames ) );
415  attr->SetEditor( new GRID_CELL_ICON_TEXT_POPUP( g_shapeIcons, g_shapeNames ) );
416  m_grid->SetColAttr( COL_SHAPE, attr );
417 
418  attr = new wxGridCellAttr;
421  m_grid->SetColAttr( COL_ORIENTATION, attr );
422 
423  /* Right-aligned position values look much better, but only MSW and GTK2+
424  * currently support righ-aligned textEditCtrls, so the text jumps on all
425  * the other platforms when you edit it.
426  attr = new wxGridCellAttr;
427  attr->SetAlignment( wxALIGN_RIGHT, wxALIGN_TOP );
428  m_grid->SetColAttr( COL_POSX, attr );
429 
430  attr = new wxGridCellAttr;
431  attr->SetAlignment( wxALIGN_RIGHT, wxALIGN_TOP );
432  m_grid->SetColAttr( COL_POSY, attr );
433  */
434 
435  m_addButton->SetBitmap( KiBitmap( small_plus_xpm ) );
436  m_deleteButton->SetBitmap( KiBitmap( trash_xpm ) );
437  m_refreshButton->SetBitmap( KiBitmap( refresh_xpm ) );
438 
439  GetSizer()->SetSizeHints(this);
440  Centre();
441 
442  m_ButtonsOK->SetDefault();
443  m_initialized = true;
444  m_modified = false;
445 
446  // Connect Events
447  m_grid->Connect( wxEVT_GRID_COL_SORT, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE::OnColSort ), nullptr, this );
448 }
static wxArrayString g_typeNames
DIALOG_LIB_EDIT_PIN_TABLE_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Pin Table"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
static std::vector< BITMAP_DEF > g_orientationIcons
static wxArrayString g_shapeNames
static std::vector< BITMAP_DEF > g_shapeIcons
static wxArrayString GetOrientationNames()
Get a list of pin orientation names.
Definition: lib_pin.cpp:1890
void ShowHideColumns(const wxString &shownColumns)
Show/hide the grid columns based on a tokenized string of shown column indexes.
Definition: wx_grid.cpp:108
wxConfigBase * KifaceSettings() const
Definition: kiface_i.h:103
Class GRID_TRICKS is used to add cut, copy, and paste to an otherwise unmodied wxGrid instance...
Definition: grid_tricks.h:51
static const BITMAP_DEF * GetOrientationSymbols()
Get a list of pin orientation bitmaps for menus and dialogs.
Definition: lib_pin.cpp:1952
void SetTable(wxGridTableBase *table, bool aTakeOwnership=false)
Hide wxGrid&#39;s SetTable() method with one which doesn&#39;t mess up the grid column widths when setting th...
Definition: wx_grid.cpp:46
KIFACE_I & Kiface()
Global KIFACE_I "get" accessor.
Definition: kicad.cpp:52
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:79
bool m_modified
true when there are unsaved changes
#define INDETERMINATE
wxString GetText(GRAPHIC_PINSHAPE shape)
Definition: pin_shape.cpp:33
static wxArrayString g_orientationNames
PIN_TABLE_DATA_MODEL * m_dataModel
#define PinTableShownColumnsKey
size_t i
Definition: json11.cpp:597
void OnColSort(wxGridEvent &aEvent)
static std::vector< BITMAP_DEF > g_typeIcons
BITMAP_DEF GetBitmap(GRAPHIC_PINSHAPE shape)
Definition: pin_shape.cpp:70
EDA_UNITS_T GetUserUnits() const override
Definition: dialog_shim.h:133

◆ ~DIALOG_LIB_EDIT_PIN_TABLE()

DIALOG_LIB_EDIT_PIN_TABLE::~DIALOG_LIB_EDIT_PIN_TABLE ( )
override

Definition at line 451 of file dialog_lib_edit_pin_table.cpp.

References WX_GRID::DestroyTable(), WX_GRID::GetShownColumns(), m_config, m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_pins, OnColSort(), and PinTableShownColumnsKey.

452 {
454 
455  // Disconnect Events
456  m_grid->Disconnect( wxEVT_GRID_COL_SORT, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE::OnColSort ), nullptr, this );
457 
458  // Prevents crash bug in wxGrid's d'tor
460 
461  // Delete the GRID_TRICKS.
462  m_grid->PopEventHandler( true );
463 
464  // This is our copy of the pins. If they were transfered to the part on an OK, then
465  // m_pins will already be empty.
466  for( auto pin : m_pins )
467  delete pin;
468 }
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:77
PIN_TABLE_DATA_MODEL * m_dataModel
#define PinTableShownColumnsKey
wxString GetShownColumns()
Get a tokenized string containing the shown column indexes.
Definition: wx_grid.cpp:90
void OnColSort(wxGridEvent &aEvent)

Member Function Documentation

◆ adjustGridColumns()

void DIALOG_LIB_EDIT_PIN_TABLE::adjustGridColumns ( int  aWidth)
protected

Definition at line 584 of file dialog_lib_edit_pin_table.cpp.

References COL_COUNT, COL_NAME, COL_NUMBER, i, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, and m_originalColWidths.

Referenced by OnRebuildRows(), OnSize(), and OnUpdateUI().

585 {
586  // Account for scroll bars
587  aWidth -= ( m_grid->GetSize().x - m_grid->GetClientSize().x );
588 
589  wxGridUpdateLocker deferRepaintsTillLeavingScope;
590 
591  // The Number and Name columns must be at least wide enough to hold their contents, but
592  // no less wide than their original widths.
593 
594  m_grid->AutoSizeColumn( COL_NUMBER );
595 
596  if( m_grid->GetColSize( COL_NUMBER ) < m_originalColWidths[ COL_NUMBER ] )
597  m_grid->SetColSize( COL_NUMBER, m_originalColWidths[ COL_NUMBER ] );
598 
599  m_grid->AutoSizeColumn( COL_NAME );
600 
601  if( m_grid->GetColSize( COL_NAME ) < m_originalColWidths[ COL_NAME ] )
602  m_grid->SetColSize( COL_NAME, m_originalColWidths[ COL_NAME ] );
603 
604  // If the grid is still wider than the columns, then stretch the Number and Name columns
605  // to fit.
606 
607  for( int i = 0; i < COL_COUNT; ++i )
608  aWidth -= m_grid->GetColSize( i );
609 
610  if( aWidth > 0 )
611  {
612  m_grid->SetColSize( COL_NUMBER, m_grid->GetColSize( COL_NUMBER ) + aWidth / 2 );
613  m_grid->SetColSize( COL_NAME, m_grid->GetColSize( COL_NAME ) + aWidth / 2 );
614  }
615 }
size_t i
Definition: json11.cpp:597

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 230 of file dialog_shim.cpp.

231 {
232  // so we can do logging of this state change:
233 
234 #if defined(DEBUG)
235  const char* type_id = typeid( *this ).name();
236  printf( "wxDialog %s: %s\n", type_id, enable ? "enabled" : "disabled" );
237 #endif
238 
239  return wxDialog::Enable( enable );
240 }

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 390 of file dialog_shim.cpp.

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

Referenced by HK_PROMPT_DIALOG::EndFlexible(), DIALOG_SHIM::OnButton(), OnClose(), DIALOG_PRINT_GENERIC::onCloseButton(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_CHOOSE_COMPONENT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_CHOOSE_COMPONENT::OnUseBrowser(), and DIALOG_SHIM::~DIALOG_SHIM().

391 {
392  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
393  // handle validation in the same way as other dialogs.
394  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
395  return;
396 
397  SetReturnCode( retCode );
398 
399  if( !IsQuasiModal() )
400  {
401  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal wasn't called" ) );
402  return;
403  }
404 
405  if( m_qmodal_loop )
406  {
407  if( m_qmodal_loop->IsRunning() )
408  m_qmodal_loop->Exit( 0 );
409  else
410  m_qmodal_loop->ScheduleExit( 0 );
411 
412  m_qmodal_loop = NULL;
413  }
414 
417 
418  Show( false );
419 }
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:183
bool IsQuasiModal()
Definition: dialog_shim.h:125
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:185

◆ 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, when all widgets are initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at end of TransferDataToWindow, or better at end of a wxInitDialogEvent handler

In any case, the best way is to call it in a wxInitDialogEvent handler after calling TransfertDataToWindow(), which is the default wxInitDialogEvent handler wxDialog

Definition at line 129 of file dialog_shim.cpp.

References PCAD2KICAD::Center.

Referenced by DIALOG_3D_VIEW_OPTIONS::DIALOG_3D_VIEW_OPTIONS(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC(), DIALOG_EDIT_COMPONENTS_LIBID::DIALOG_EDIT_COMPONENTS_LIBID(), DIALOG_EDIT_LINE_STYLE::DIALOG_EDIT_LINE_STYLE(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXIT::DIALOG_EXIT(), 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_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_FOOTPRINTS_DISPLAY_OPTIONS::DIALOG_FOOTPRINTS_DISPLAY_OPTIONS(), DIALOG_FP_BROWSER_DISPLAY_OPTIONS::DIALOG_FP_BROWSER_DISPLAY_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_IMAGE_EDITOR::DIALOG_IMAGE_EDITOR(), DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LIB_NEW_COMPONENT::DIALOG_LIB_NEW_COMPONENT(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_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_SCH_EDIT_SHEET_PIN::DIALOG_SCH_EDIT_SHEET_PIN(), DIALOG_SCH_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS(), DIALOG_SELECT_NET_FROM_LIST::DIALOG_SELECT_NET_FROM_LIST(), DIALOG_SET_GRID::DIALOG_SET_GRID(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PAGED_DIALOG::finishInitialization(), DIALOG_EDIT_ONE_FIELD::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_UPDATE_FIELDS::TransferDataToWindow(), and DIALOG_COLOR_PICKER::TransferDataToWindow().

130 {
131  // must be called from the constructor of derived classes,
132  // when all widgets are initialized, and therefore their size fixed
133 
134  // SetSizeHints fixes the minimal size of sizers in the dialog
135  // (SetSizeHints calls Fit(), so no need to call it)
136  GetSizer()->SetSizeHints( this );
137 
138  // the default position, when calling the first time the dlg
139  Center();
140 }

◆ GetUserUnits()

◆ HorizPixelsFromDU()

int DIALOG_SHIM::HorizPixelsFromDU ( int  x)
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 150 of file dialog_shim.cpp.

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

151 {
152  wxSize sz( x, 0 );
153  return ConvertDialogToPixels( sz ).x;
154 }

◆ IsQuasiModal()

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Function Kiway returns 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 60 of file kiway_player.h.

References KIWAY_HOLDER::m_kiway.

Referenced by TREEPROJECT_ITEM::Activate(), PCB_BASE_EDIT_FRAME::AddLibrary(), SCH_EDIT_FRAME::AppendSchematic(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), CVPCB_MAINFRAME::CreateScreenCmp(), SCH_EDIT_FRAME::CreateScreens(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), SCH_EDIT_FRAME::doUpdatePcb(), EDIT_TOOL::editFootprintInFpEditor(), SCH_EDIT_FRAME::EditSheet(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), LIB_MANAGER::GetBufferedPart(), LIB_MANAGER::getLibraryBuffer(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::KiwayMailIn(), KIWAY_PLAYER::language_change(), KICAD_MANAGER_FRAME::language_change(), CVPCB_MAINFRAME::LoadFootprintFiles(), KICAD_MANAGER_FRAME::LoadProject(), TEXT_BUTTON_SYMBOL_CHOOSER::OnButtonClick(), TEXT_BUTTON_FP_CHOOSER::OnButtonClick(), KICAD_MANAGER_FRAME::OnCloseWindow(), SCH_EDIT_FRAME::OnCloseWindow(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), KICAD_MANAGER_FRAME::OnEditFpLibTable(), SCH_BASE_FRAME::OnEditSymbolLibTable(), KICAD_MANAGER_FRAME::OnEditSymLibTable(), KICAD_MANAGER_FRAME::OnImportEagleFiles(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnLeftClick(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenLibraryEditor(), SCH_BASE_FRAME::OnOpenLibraryViewer(), SCH_EDIT_FRAME::OnOpenPcbModuleEditor(), SCH_EDIT_FRAME::OnOpenPcbnew(), KICAD_MANAGER_FRAME::OnRunPcbFpEditor(), KICAD_MANAGER_FRAME::OnRunSchLibEditor(), SCH_EDIT_FRAME::OnSimulate(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard(), SCH_EDIT_FRAME::OpenProjectFiles(), KIWAY_HOLDER::Prj(), PCB_EDIT_FRAME::Process_Config(), PCB_EDIT_FRAME::Process_Special_Functions(), FOOTPRINT_EDIT_FRAME::ProcessPreferences(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_EDIT_FRAME::refreshSchematic(), SCH_EDIT_FRAME::rescueProject(), KICAD_MANAGER_FRAME::RunEeschema(), KICAD_MANAGER_FRAME::RunPcbNew(), SCH_EDIT_FRAME::SaveEEFile(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), SCH_EDIT_FRAME::SendCrossProbeNetName(), PCB_EDIT_FRAME::SendCrossProbeNetName(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_EDIT_FRAME::SetPlotSettings(), FOOTPRINT_VIEWER_FRAME::Show3D_Frame(), FOOTPRINT_WIZARD_FRAME::Show3D_Frame(), EDA_BASE_FRAME::ShowPreferences(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), LIB_MANAGER::UpdatePart(), and DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint().

61  {
62  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
63  return *m_kiway;
64  }
KIWAY * m_kiway
Definition: kiway_player.h:94

◆ OnAddRow()

void DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 525 of file dialog_lib_edit_pin_table.cpp.

References PIN_TABLE_DATA_MODEL::AppendRow(), WX_GRID::CommitPendingChanges(), m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_pins, and updateSummary().

526 {
527  if( !m_grid->CommitPendingChanges() )
528  return;
529 
530  m_pins.push_back( new LIB_PIN( nullptr ) );
531 
532  m_dataModel->AppendRow( m_pins[ m_pins.size() - 1 ] );
533 
534  m_grid->MakeCellVisible( m_grid->GetNumberRows() - 1, 0 );
535  m_grid->SetGridCursor( m_grid->GetNumberRows() - 1, 0 );
536 
537  m_grid->EnableCellEditControl( true );
538  m_grid->ShowCellEditControl();
539 
540  updateSummary();
541 }
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:156
PIN_TABLE_DATA_MODEL * m_dataModel

◆ OnCancel()

void DIALOG_LIB_EDIT_PIN_TABLE::OnCancel ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 641 of file dialog_lib_edit_pin_table.cpp.

642 {
643  Close();
644 }

◆ OnCellEdited()

void DIALOG_LIB_EDIT_PIN_TABLE::OnCellEdited ( wxGridEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 567 of file dialog_lib_edit_pin_table.cpp.

References updateSummary().

◆ OnClose()

void DIALOG_LIB_EDIT_PIN_TABLE::OnClose ( wxCloseEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 647 of file dialog_lib_edit_pin_table.cpp.

References WX_GRID::CommitPendingChanges(), DIALOG_SHIM::EndQuasiModal(), HandleUnsavedChanges(), PIN_TABLE_DATA_MODEL::IsEdited(), DIALOG_SHIM::IsQuasiModal(), m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, and TransferDataFromWindow().

648 {
649  // This is a cancel, so commit quietly as we're going to throw the results away anyway.
650  m_grid->CommitPendingChanges( true );
651 
652  if( m_dataModel->IsEdited() )
653  {
654  if( !HandleUnsavedChanges( this, wxEmptyString,
655  [&]()->bool { return TransferDataFromWindow(); } ) )
656  {
657  event.Veto();
658  return;
659  }
660  }
661 
662  if( IsQuasiModal() )
663  EndQuasiModal( wxID_CANCEL );
664  else if( IsModal() )
665  EndModal( wxID_CANCEL );
666  else
667  event.Skip();
668 }
bool HandleUnsavedChanges(wxWindow *aParent, const wxString &aMessage, const std::function< bool()> &aSaveFunction)
Function HandleUnsavedChanges displays a dialog with Save, Cancel and Discard Changes buttons...
Definition: confirm.cpp:213
bool IsQuasiModal()
Definition: dialog_shim.h:125
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:156
PIN_TABLE_DATA_MODEL * m_dataModel
void EndQuasiModal(int retCode)

◆ OnColSort()

void DIALOG_LIB_EDIT_PIN_TABLE::OnColSort ( wxGridEvent &  aEvent)

Definition at line 507 of file dialog_lib_edit_pin_table.cpp.

References m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, and PIN_TABLE_DATA_MODEL::SortRows().

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

508 {
509  int sortCol = aEvent.GetCol();
510  bool ascending;
511 
512  // This is bonkers, but wxWidgets doesn't tell us ascending/descending in the
513  // event, and if we ask it will give us pre-event info.
514  if( m_grid->IsSortingBy( sortCol ) )
515  // same column; invert ascending
516  ascending = !m_grid->IsSortOrderAscending();
517  else
518  // different column; start with ascending
519  ascending = true;
520 
521  m_dataModel->SortRows( sortCol, ascending );
522 }
void SortRows(int aSortCol, bool ascending)
PIN_TABLE_DATA_MODEL * m_dataModel

◆ OnDeleteRow()

void DIALOG_LIB_EDIT_PIN_TABLE::OnDeleteRow ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 544 of file dialog_lib_edit_pin_table.cpp.

References WX_GRID::CommitPendingChanges(), m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_pins, max, PIN_TABLE_DATA_MODEL::RemoveRow(), and updateSummary().

545 {
546  if( !m_grid->CommitPendingChanges() )
547  return;
548 
549  int curRow = m_grid->GetGridCursorRow();
550 
551  if( curRow < 0 )
552  return;
553 
554  LIB_PINS removedRow = m_dataModel->RemoveRow( curRow );
555 
556  for( auto pin : removedRow )
557  m_pins.erase( std::find( m_pins.begin(), m_pins.end(), pin ) );
558 
559  curRow = std::max( 0, curRow - 1 );
560  m_grid->MakeCellVisible( curRow, m_grid->GetGridCursorCol() );
561  m_grid->SetGridCursor( curRow, m_grid->GetGridCursorCol() );
562 
563  updateSummary();
564 }
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:156
PIN_TABLE_DATA_MODEL * m_dataModel
std::vector< LIB_PIN *> LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_draw_item.h:61
#define max(a, b)
Definition: auxiliary.h:86

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 292 of file dialog_shim.cpp.

References DIALOG_SHIM::m_firstPaintEvent, and DIALOG_SHIM::m_initialFocusTarget.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

293 {
294  if( m_firstPaintEvent )
295  {
296 #ifdef __WXMAC__
297  fixOSXCancelButtonIssue( this );
298  selectAllInTextCtrls( GetChildren() );
299 #endif
300 
302  m_initialFocusTarget->SetFocus();
303  else
304  SetFocus(); // Focus the dialog itself
305 
306  m_firstPaintEvent = false;
307  }
308 
309  event.Skip();
310 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:180
bool m_firstPaintEvent
Definition: dialog_shim.h:179

◆ OnRebuildRows()

void DIALOG_LIB_EDIT_PIN_TABLE::OnRebuildRows ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 573 of file dialog_lib_edit_pin_table.cpp.

References adjustGridColumns(), WX_GRID::CommitPendingChanges(), DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_cbGroup, m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_pins, and PIN_TABLE_DATA_MODEL::RebuildRows().

574 {
575  if( !m_grid->CommitPendingChanges() )
576  return;
577 
578  m_dataModel->RebuildRows( m_pins, m_cbGroup->GetValue() );
579 
580  adjustGridColumns( m_grid->GetRect().GetWidth() );
581 }
void RebuildRows(LIB_PINS &aPins, bool groupByName)
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:156
PIN_TABLE_DATA_MODEL * m_dataModel

◆ OnSize()

void DIALOG_LIB_EDIT_PIN_TABLE::OnSize ( wxSizeEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 618 of file dialog_lib_edit_pin_table.cpp.

References adjustGridColumns(), and m_initialized.

619 {
620  if( m_initialized )
621  adjustGridColumns( event.GetSize().GetX() );
622 
623  event.Skip();
624 }

◆ OnUpdateUI()

void DIALOG_LIB_EDIT_PIN_TABLE::OnUpdateUI ( wxUpdateUIEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 627 of file dialog_lib_edit_pin_table.cpp.

References adjustGridColumns(), WX_GRID::GetShownColumns(), m_columnsShown, and DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid.

628 {
629  wxString columnsShown = m_grid->GetShownColumns();
630 
631  if( columnsShown != m_columnsShown )
632  {
633  m_columnsShown = columnsShown;
634 
635  if( !m_grid->IsCellEditControlShown() )
636  adjustGridColumns( m_grid->GetRect().GetWidth() );
637  }
638 }
wxString GetShownColumns()
Get a tokenized string containing the shown column indexes.
Definition: wx_grid.cpp:90

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Function Prj returns a reference to the PROJECT "associated with" this KIWAY.

Definition at line 34 of file kiway_holder.cpp.

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

Referenced by PCB_BASE_EDIT_FRAME::AddLibrary(), LIB_MANAGER::addLibrary(), SCH_EDIT_FRAME::AppendSchematic(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), DIALOG_SYMBOL_REMAP::backupProject(), LIB_VIEW_FRAME::BestZoom(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_FOOTPRINT_FP_EDITOR::Cfg3DPath(), DIALOG_FOOTPRINT_BOARD_EDITOR::Cfg3DPath(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::checkAliasName(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), KICAD_MANAGER_FRAME::CreateNewProject(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromLibrary(), DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), LIB_VIEW_FRAME::DisplayLibInfos(), SCH_BASE_FRAME::DisplayListComponentsInLib(), PCB_EDIT_FRAME::doAutoSave(), SCH_EDIT_FRAME::doUpdatePcb(), SCH_EDIT_FRAME::EditSheet(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportVRML_File(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), NETLIST_DIALOG::GenNetlist(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), LIB_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SCH_BASE_FRAME::GetLibAlias(), SCH_BASE_FRAME::GetLibPart(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), KICAD_MANAGER_FRAME::GetProjectFileName(), LIB_VIEW_FRAME::getSelectedAlias(), FP_THREAD_IFACE::GetTable(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), PCB_EDIT_FRAME::InstallNetlistFrame(), SCH_EDIT_FRAME::IsSearchCacheObsolete(), LIB_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), SCH_EDIT_FRAME::Load_Component(), SCH_EDIT_FRAME::LoadCmpToFootprintLinkFile(), LIB_EDIT_FRAME::LoadComponentFromCurrentLib(), CVPCB_MAINFRAME::LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), LIB_EDIT_FRAME::LoadOneSymbol(), KICAD_MANAGER_FRAME::LoadProject(), CVPCB_MAINFRAME::LoadProjectFile(), SCH_EDIT_FRAME::LoadProjectFile(), PCB_EDIT_FRAME::LoadProjectSettings(), DIALOG_DRC_CONTROL::makeValidFileNameReport(), DIALOG_FOOTPRINT_FP_EDITOR::On3DModelCellChanged(), DIALOG_FOOTPRINT_BOARD_EDITOR::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_FOOTPRINT_FP_EDITOR::OnAdd3DModel(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAdd3DModel(), DIALOG_GENCAD_EXPORT_OPTIONS::onBrowse(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), DIALOG_DRC_CONTROL::OnButtonBrowseRptFileClick(), DIALOG_EDIT_COMPONENTS_LIBID::onClickOrphansButton(), SCH_EDIT_FRAME::OnCloseWindow(), CVPCB_MAINFRAME::OnConfigurePaths(), FOOTPRINT_EDIT_FRAME::OnConfigurePaths(), KICAD_MANAGER_FRAME::OnCreateProjectFromTemplate(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), DIALOG_GENDRILL::OnGenReportFile(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnLoadProject(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), SCH_EDIT_FRAME::OnOpenLibraryEditor(), DIALOG_NETLIST::OnOpenNetlistClick(), SCH_EDIT_FRAME::OnOpenPcbModuleEditor(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), LIB_EDIT_FRAME::OnPlotCurrentComponent(), SCH_EDIT_FRAME::OnPrint(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), SCH_EDIT_FRAME::OnRightClick(), KICAD_MANAGER_FRAME::OnRunGerbview(), DIALOG_BOM::OnRunPlugin(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), KICAD_MANAGER_FRAME::OnSaveProject(), DIALOG_SPICE_MODEL::onSelectLibrary(), LIB_VIEW_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), LIB_EDIT_FRAME::OnViewEntryDoc(), LIB_VIEW_FRAME::onViewSymbolDocument(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PANEL_PREV_3D::PANEL_PREV_3D(), SCH_EDIT_FRAME::PasteListOfItems(), PCB_BASE_EDIT_FRAME::PCB_BASE_EDIT_FRAME(), DIALOG_CHOOSE_COMPONENT::PopulateFootprintSelector(), SCH_EDIT_FRAME::PrintPage(), SCH_EDIT_FRAME::Process_Config(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), LIB_VIEW_FRAME::ReCreateListCmp(), LIB_VIEW_FRAME::ReCreateListLib(), EDA_3D_VIEWER::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SCH_EDIT_FRAME::RescueLegacyProject(), SCH_EDIT_FRAME::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), FOOTPRINT_EDIT_FRAME::saveFootprintInLibrary(), LIB_EDIT_FRAME::saveLibrary(), LIB_EDIT_FRAME::SaveOneSymbol(), LIB_EDIT_FRAME::savePartAs(), SCH_EDIT_FRAME::SaveProject(), CVPCB_MAINFRAME::SaveProjectFile(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), SCH_BASE_FRAME::saveSymbolLibTables(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectComponentFromLibTree(), PCB_BASE_FRAME::SelectLibrary(), SCH_BASE_FRAME::SelectLibraryFromList(), LIB_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), KICAD_MANAGER_FRAME::SetProjectFileName(), DIALOG_CHOOSE_COMPONENT::ShowFootprintFor(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), LIB_MANAGER::symTable(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER::takeScreenshot(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), DIALOG_FOOTPRINT_FP_EDITOR::TransferDataToWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataToWindow(), SIM_PLOT_FRAME::updateNetlistExporter(), SCH_SCREEN::UpdateSymbolLinks(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), FOOTPRINT_EDIT_FRAME::updateTitle(), SCH_EDIT_FRAME::UpdateTitle(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::Validate(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_FOOTPRINT_BOARD_EDITOR::~DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::~DIALOG_FOOTPRINT_FP_EDITOR(), and PCB_BASE_EDIT_FRAME::~PCB_BASE_EDIT_FRAME().

35 {
36  return Kiway().Prj();
37 }
KIWAY & Kiway() const
Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in...
Definition: kiway_player.h:60
VTBL_ENTRY PROJECT & Prj() const
Function Prj returns the PROJECT associated with this KIWAY.
Definition: kiway.cpp:142

◆ 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 116 of file dialog_shim.h.

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by DIALOG_BOM::DIALOG_BOM(), DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_EDIT_LINE_STYLE::DIALOG_EDIT_LINE_STYLE(), DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_SET_GRID::DIALOG_SET_GRID(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_EDIT_ONE_FIELD::init(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchAllClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchIDClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchRefClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchSelectedClicked(), DIALOG_EXCHANGE_FOOTPRINTS::OnMatchValueClicked(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), and LIB_EDIT_FRAME::savePartAs().

117  {
118  m_initialFocusTarget = aWindow;
119  }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:180

◆ SetKiway()

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

Function SetKiway.

Parameters
aDestis the recipient of aKiway pointer. It is only used for debugging, since "this" is not a wxWindow*. "this" is a KIWAY_HOLDER mix-in.
aKiwayis often from a parent window, or from KIFACE::CreateWindow().

Definition at line 47 of file kiway_holder.cpp.

References KIWAY_HOLDER::m_kiway, and name.

Referenced by InvokePcbLibTableEditor(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

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

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

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

144 {
145  wxSize sz( x, y );
146  SetSize( ConvertDialogToPixels( sz ) );
147 }

◆ Show()

bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 171 of file dialog_shim.cpp.

References class_map, EDA_RECT::GetPosition(), EDA_RECT::GetSize(), DIALOG_SHIM::m_hash_key, and max.

Referenced by DIALOG_SHIM::EndQuasiModal(), InvokeDialogERC(), SCH_EDIT_FRAME::OnAnnotate(), DIALOG_SCH_FIND::OnCancel(), SCH_EDIT_FRAME::OnFindItems(), DIALOG_DRC_CONTROL::OnLeftDClickClearance(), DIALOG_DRC_CONTROL::OnLeftDClickUnconnected(), POSITION_RELATIVE_TOOL::PositionRelative(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), DRC::ShowDRCDialog(), DIALOG_SHIM::ShowQuasiModal(), and DIALOG_POSITION_RELATIVE::UpdateAnchor().

172 {
173  bool ret;
174  const char* hash_key;
175 
176  if( m_hash_key.size() )
177  {
178  // a special case like EDA_LIST_DIALOG, which has multiple uses.
179  hash_key = m_hash_key.c_str();
180  }
181  else
182  {
183  hash_key = typeid(*this).name();
184  }
185 
186  // Show or hide the window. If hiding, save current position and size.
187  // If showing, use previous position and size.
188  if( show )
189  {
190 #ifndef __WINDOWS__
191  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
192 #endif
193  ret = wxDialog::Show( show );
194 
195  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
196  EDA_RECT savedDialogRect = class_map[ hash_key ];
197 
198  if( savedDialogRect.GetSize().x != 0 && savedDialogRect.GetSize().y != 0 )
199  {
200  SetSize( savedDialogRect.GetPosition().x,
201  savedDialogRect.GetPosition().y,
202  std::max( wxDialog::GetSize().x, savedDialogRect.GetSize().x ),
203  std::max( wxDialog::GetSize().y, savedDialogRect.GetSize().y ),
204  0 );
205  }
206 
207  // Be sure that the dialog appears in a visible area
208  // (the dialog position might have been stored at the time when it was
209  // shown on another display)
210  if( wxDisplay::GetFromWindow( this ) == wxNOT_FOUND )
211  Centre();
212  }
213  else
214  {
215  // Save the dialog's position & size before hiding, using classname as key
216  class_map[ hash_key ] = EDA_RECT( wxDialog::GetPosition(), wxDialog::GetSize() );
217 
218 #ifdef __WXMAC__
219  if ( m_eventLoop )
220  m_eventLoop->Exit( GetReturnCode() ); // Needed for APP-MODAL dlgs on OSX
221 #endif
222 
223  ret = wxDialog::Show( show );
224  }
225 
226  return ret;
227 }
std::string m_hash_key
Definition: dialog_shim.h:174
static RECT_MAP class_map
const wxPoint GetPosition() const
Definition: eda_rect.h:113
#define max(a, b)
Definition: auxiliary.h:86
Class EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44
const wxSize GetSize() const
Definition: eda_rect.h:101

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 336 of file dialog_shim.cpp.

References DBG, DIALOG_SHIM::m_qmodal_loop, DIALOG_SHIM::m_qmodal_parent_disabler, DIALOG_SHIM::m_qmodal_showing, DIALOG_SHIM::Show(), and WX_EVENT_LOOP.

Referenced by SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), LIB_EDIT_FRAME::EditField(), EDIT_TOOL::ExchangeFootprints(), PCB_EDIT_FRAME::InstallExchangeModuleFrame(), SCH_EDIT_FRAME::InstallHierarchyFrame(), PCB_BASE_FRAME::InstallPadOptionsFrame(), InvokeDialogEditComponentsLibId(), InvokeDialogUpdateFields(), LIB_EDIT_FRAME::OnEditComponentProperties(), PCB_EDIT_FRAME::OnEditTracksAndVias(), SCH_EDIT_FRAME::OnLaunchBomManager(), SCH_EDIT_FRAME::OnRemapSymbols(), LIB_VIEW_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), EDIT_TOOL::Properties(), SCH_BASE_FRAME::SelectComponentFromLibTree(), and PCB_BASE_FRAME::SelectFootprintFromLibTree().

337 {
338  // This is an exception safe way to zero a pointer before returning.
339  // Yes, even though DismissModal() clears this first normally, this is
340  // here in case there's an exception before the dialog is dismissed.
341  struct NULLER
342  {
343  void*& m_what;
344  NULLER( void*& aPtr ) : m_what( aPtr ) {}
345  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
346  } clear_this( (void*&) m_qmodal_loop );
347 
348  // release the mouse if it's currently captured as the window having it
349  // will be disabled when this dialog is shown -- but will still keep the
350  // capture making it impossible to do anything in the modal dialog itself
351  wxWindow* win = wxWindow::GetCapture();
352  if( win )
353  win->ReleaseMouse();
354 
355  // Get the optimal parent
356  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
357 
358  // Show the optimal parent
359  DBG( if( parent ) printf( "%s: optimal parent: %s\n", __func__, typeid(*parent).name() );)
360 
361  wxASSERT_MSG( !m_qmodal_parent_disabler,
362  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
363 
364  // quasi-modal: disable only my "optimal" parent
366 
367 #ifdef __WXMAC__
368  // Apple in its infinite wisdom will raise a disabled window before even passing
369  // us the event, so we have no way to stop it. Instead, we must set an order on
370  // the windows so that the quasi-modal will be pushed in front of the disabled
371  // window when it is raised.
372  ReparentQuasiModal();
373 #endif
374  Show( true );
375 
376  m_qmodal_showing = true;
377 
378  WX_EVENT_LOOP event_loop;
379 
380  m_qmodal_loop = &event_loop;
381 
382  event_loop.Run();
383 
384  m_qmodal_showing = false;
385 
386  return GetReturnCode();
387 }
bool m_qmodal_showing
Definition: dialog_shim.h:184
#define WX_EVENT_LOOP
Definition: kiway_player.h:100
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:183
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:185
Toggle a window&#39;s "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:34
#define DBG(x)
Definition: fctsys.h:33

◆ TransferDataFromWindow()

bool DIALOG_LIB_EDIT_PIN_TABLE::TransferDataFromWindow ( )
override

Definition at line 485 of file dialog_lib_edit_pin_table.cpp.

References LIB_PART::AddDrawItem(), WX_GRID::CommitPendingChanges(), LIB_PART::GetNextPin(), DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_part, m_pins, and LIB_PART::RemoveDrawItem().

Referenced by OnClose().

486 {
487  if( !m_grid->CommitPendingChanges() )
488  return false;
489 
490  // Delete the part's pins
491  while( LIB_PIN* pin = m_part->GetNextPin( nullptr ) )
492  m_part->RemoveDrawItem( pin );
493 
494  // Transfer our pins to the part
495  for( LIB_PIN* pin : m_pins )
496  {
497  pin->SetParent( m_part );
498  m_part->AddDrawItem( pin );
499  }
500 
501  m_pins.clear();
502 
503  return true;
504 }
void AddDrawItem(LIB_ITEM *aItem)
Add a new draw aItem to the draw object list.
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:156
LIB_PIN * GetNextPin(LIB_PIN *aItem=NULL)
Return the next pin object from the draw list.
void RemoveDrawItem(LIB_ITEM *aItem, EDA_DRAW_PANEL *aPanel=NULL, wxDC *aDc=NULL)
Remove draw aItem from list.

◆ TransferDataToWindow()

bool DIALOG_LIB_EDIT_PIN_TABLE::TransferDataToWindow ( )
override

Definition at line 471 of file dialog_lib_edit_pin_table.cpp.

References LIB_PART::GetNextPin(), DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_cbGroup, m_dataModel, m_part, m_pins, PIN_TABLE_DATA_MODEL::RebuildRows(), and updateSummary().

472 {
473  // Make a copy of the pins for editing
474  for( LIB_PIN* pin = m_part->GetNextPin( nullptr ); pin; pin = m_part->GetNextPin( pin ) )
475  m_pins.push_back( new LIB_PIN( *pin ) );
476 
477  m_dataModel->RebuildRows( m_pins, m_cbGroup->GetValue() );
478 
479  updateSummary();
480 
481  return true;
482 }
void RebuildRows(LIB_PINS &aPins, bool groupByName)
PIN_TABLE_DATA_MODEL * m_dataModel
LIB_PIN * GetNextPin(LIB_PIN *aItem=NULL)
Return the next pin object from the draw list.

◆ updateSummary()

void DIALOG_LIB_EDIT_PIN_TABLE::updateSummary ( )
protected

Definition at line 671 of file dialog_lib_edit_pin_table.cpp.

References PinNumbers::GetSummary(), PinNumbers::insert(), m_pins, and DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_summary.

Referenced by OnAddRow(), OnCellEdited(), OnDeleteRow(), and TransferDataToWindow().

672 {
673  PinNumbers pinNumbers;
674 
675  for( LIB_PIN* pin : m_pins )
676  {
677  if( pin->GetNumber().Length() )
678  pinNumbers.insert( pin->GetNumber() );
679  }
680 
681  m_summary->SetLabel( pinNumbers.GetSummary() );
682 }
wxString GetSummary() const
Definition: pin_number.cpp:70
void insert(value_type const &v)
Definition: pin_number.h:57

◆ VertPixelsFromDU()

int DIALOG_SHIM::VertPixelsFromDU ( int  y)
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 157 of file dialog_shim.cpp.

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

158 {
159  wxSize sz( 0, y );
160  return ConvertDialogToPixels( sz ).y;
161 }

Member Data Documentation

◆ m_addButton

wxBitmapButton* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_addButton
protectedinherited

◆ m_Buttons

wxStdDialogButtonSizer* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_Buttons
protectedinherited

◆ m_ButtonsCancel

wxButton* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_ButtonsCancel
protectedinherited

◆ m_ButtonsOK

wxButton* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_ButtonsOK
protectedinherited

◆ m_cbGroup

◆ m_columnsShown

wxString DIALOG_LIB_EDIT_PIN_TABLE::m_columnsShown
protected

Definition at line 52 of file dialog_lib_edit_pin_table.h.

Referenced by DIALOG_LIB_EDIT_PIN_TABLE(), and OnUpdateUI().

◆ m_config

wxConfigBase* DIALOG_LIB_EDIT_PIN_TABLE::m_config
protected

◆ m_dataModel

◆ m_deleteButton

wxBitmapButton* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_deleteButton
protectedinherited

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 179 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_grid

◆ m_hash_key

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 180 of file dialog_shim.h.

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

◆ m_initialized

bool DIALOG_LIB_EDIT_PIN_TABLE::m_initialized = false
protected

Definition at line 50 of file dialog_lib_edit_pin_table.h.

Referenced by DIALOG_LIB_EDIT_PIN_TABLE(), and OnSize().

◆ m_modified

bool DIALOG_LIB_EDIT_PIN_TABLE::m_modified
protected

true when there are unsaved changes

Definition at line 55 of file dialog_lib_edit_pin_table.h.

Referenced by DIALOG_LIB_EDIT_PIN_TABLE().

◆ m_originalColWidths

int DIALOG_LIB_EDIT_PIN_TABLE::m_originalColWidths[COL_COUNT]
protected

Definition at line 51 of file dialog_lib_edit_pin_table.h.

Referenced by adjustGridColumns(), and DIALOG_LIB_EDIT_PIN_TABLE().

◆ m_part

LIB_PART* DIALOG_LIB_EDIT_PIN_TABLE::m_part
protected

Definition at line 53 of file dialog_lib_edit_pin_table.h.

Referenced by TransferDataFromWindow(), and TransferDataToWindow().

◆ m_pins

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

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

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

◆ m_refreshButton

wxBitmapButton* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_refreshButton
protectedinherited

◆ m_staticline1

wxStaticLine* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_staticline1
protectedinherited

◆ m_staticline2

wxStaticLine* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_staticline2
protectedinherited

◆ m_staticText1

wxStaticText* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_staticText1
protectedinherited

◆ m_summary

wxStaticText* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_summary
protectedinherited

◆ m_units


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