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 Types

enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 DIALOG_LIB_EDIT_PIN_TABLE (LIB_EDIT_FRAME *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 GetUserUnits () const
 
HOLDER_TYPE GetType ()
 
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...
 

Static Public Member Functions

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

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...
 
void ResetSize ()
 Clear the existing dialog size and position. More...
 

Protected Attributes

LIB_EDIT_FRAMEm_editFrame
 
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...
 
int m_width
 
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 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
 
EDA_BASE_FRAMEm_parentFrame
 
std::vector< wxWindow * > m_tabOrder
 

Detailed Description

Definition at line 50 of file dialog_lib_edit_pin_table.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 42 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ DIALOG_LIB_EDIT_PIN_TABLE()

DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE ( LIB_EDIT_FRAME parent,
LIB_PART aPart 
)

Definition at line 391 of file dialog_lib_edit_pin_table.cpp.

391  :
393  m_editFrame( parent ),
394  m_part( aPart )
395 {
396  if( g_typeNames.empty())
397  {
398  for( unsigned i = 0; i < ELECTRICAL_PINTYPES_TOTAL; ++i )
399  g_typeIcons.push_back( GetBitmap( static_cast<ELECTRICAL_PINTYPE>( i ) ) );
400 
401  for( unsigned i = 0; i < ELECTRICAL_PINTYPES_TOTAL; ++i )
402  g_typeNames.push_back( GetText( static_cast<ELECTRICAL_PINTYPE>( i ) ) );
403 
404  g_typeNames.push_back( INDETERMINATE_STATE );
405 
406  for( unsigned i = 0; i < GRAPHIC_PINSHAPES_TOTAL; ++i )
407  g_shapeIcons.push_back( GetBitmap( static_cast<GRAPHIC_PINSHAPE>( i ) ) );
408 
409  for( unsigned i = 0; i < GRAPHIC_PINSHAPES_TOTAL; ++i )
410  g_shapeNames.push_back( GetText( static_cast<GRAPHIC_PINSHAPE>( i ) ) );
411 
412  g_shapeNames.push_back( INDETERMINATE_STATE );
413 
414  for( unsigned i = 0; i < LIB_PIN::GetOrientationNames().size(); ++i )
416 
419  }
420 
422 
423  // Save original columns widths so we can do proportional sizing.
424  for( int i = 0; i < COL_COUNT; ++i )
425  m_originalColWidths[ i ] = m_grid->GetColSize( i );
426 
427  // Give a bit more room for combobox editors
428  m_grid->SetDefaultRowSize( m_grid->GetDefaultRowSize() + 4 );
429 
431  m_grid->PushEventHandler( new GRID_TRICKS( m_grid ) );
432 
433  // Show/hide columns according to the user's preference
434  auto cfg = parent->GetSettings();
435  m_columnsShown = cfg->m_PinTableVisibleColumns;
436 
438 
439  // Set special attributes
440  wxGridCellAttr* attr;
441 
442  attr = new wxGridCellAttr;
443  attr->SetRenderer( new GRID_CELL_ICON_TEXT_RENDERER( g_typeIcons, g_typeNames ) );
444  attr->SetEditor( new GRID_CELL_ICON_TEXT_POPUP( g_typeIcons, g_typeNames ) );
445  m_grid->SetColAttr( COL_TYPE, attr );
446 
447  attr = new wxGridCellAttr;
448  attr->SetRenderer( new GRID_CELL_ICON_TEXT_RENDERER( g_shapeIcons, g_shapeNames ) );
449  attr->SetEditor( new GRID_CELL_ICON_TEXT_POPUP( g_shapeIcons, g_shapeNames ) );
450  m_grid->SetColAttr( COL_SHAPE, attr );
451 
452  attr = new wxGridCellAttr;
455  m_grid->SetColAttr( COL_ORIENTATION, attr );
456 
457  /* Right-aligned position values look much better, but only MSW and GTK2+
458  * currently support righ-aligned textEditCtrls, so the text jumps on all
459  * the other platforms when you edit it.
460  attr = new wxGridCellAttr;
461  attr->SetAlignment( wxALIGN_RIGHT, wxALIGN_TOP );
462  m_grid->SetColAttr( COL_POSX, attr );
463 
464  attr = new wxGridCellAttr;
465  attr->SetAlignment( wxALIGN_RIGHT, wxALIGN_TOP );
466  m_grid->SetColAttr( COL_POSY, attr );
467  */
468 
469  m_addButton->SetBitmap( KiBitmap( small_plus_xpm ) );
470  m_deleteButton->SetBitmap( KiBitmap( trash_xpm ) );
471  m_refreshButton->SetBitmap( KiBitmap( refresh_xpm ) );
472 
473  GetSizer()->SetSizeHints(this);
474  Centre();
475 
476  m_ButtonsOK->SetDefault();
477  m_initialized = true;
478  m_modified = false;
479  m_width = 0;
480 
481  // Connect Events
482  m_grid->Connect( wxEVT_GRID_COL_SORT, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE::OnColSort ), nullptr, this );
483 }
const BITMAP_OPAQUE trash_xpm[1]
Definition: trash.cpp:46
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
#define INDETERMINATE_STATE
static wxArrayString GetOrientationNames()
Get a list of pin orientation names.
Definition: lib_pin.cpp:1612
void ShowHideColumns(const wxString &shownColumns)
Show/hide the grid columns based on a tokenized string of shown column indexes.
Definition: wx_grid.cpp:121
BITMAP_DEF GetBitmap(GRAPHIC_PINSHAPE aShape)
Definition: pin_shape.cpp:68
GRID_TRICKS is used to add mouse and command handling (such as cut, copy, and paste) to a WX_GRID ins...
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:1646
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:59
EDA_UNITS GetUserUnits() const
Definition: dialog_shim.h:132
wxBitmap KiBitmap(BITMAP_DEF aBitmap)
Construct a wxBitmap from a memory record, held in a BITMAP_DEF.
Definition: bitmap.cpp:80
bool m_modified
true when there are unsaved changes
wxString GetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_shape.cpp:58
static wxArrayString g_orientationNames
PIN_TABLE_DATA_MODEL * m_dataModel
const BITMAP_OPAQUE refresh_xpm[1]
Definition: refresh.cpp:32
void OnColSort(wxGridEvent &aEvent)
LIBEDIT_SETTINGS * GetSettings()
#define GRAPHIC_PINSHAPES_TOTAL
Definition: pin_shape.h:50
static std::vector< BITMAP_DEF > g_typeIcons
#define ELECTRICAL_PINTYPES_TOTAL
Definition: pin_type.h:54
const BITMAP_OPAQUE small_plus_xpm[1]
Definition: small_plus.cpp:20

References COL_COUNT, COL_ORIENTATION, COL_SHAPE, COL_TYPE, ELECTRICAL_PINTYPES_TOTAL, g_orientationIcons, g_orientationNames, g_shapeIcons, g_shapeNames, g_typeIcons, g_typeNames, GetBitmap(), LIB_PIN::GetOrientationNames(), LIB_PIN::GetOrientationSymbols(), LIB_EDIT_FRAME::GetSettings(), GetText(), DIALOG_SHIM::GetUserUnits(), GRAPHIC_PINSHAPES_TOTAL, INDETERMINATE_STATE, KiBitmap(), DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_addButton, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_ButtonsOK, m_columnsShown, 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, m_width, OnColSort(), refresh_xpm, WX_GRID::SetTable(), WX_GRID::ShowHideColumns(), small_plus_xpm, and trash_xpm.

◆ ~DIALOG_LIB_EDIT_PIN_TABLE()

DIALOG_LIB_EDIT_PIN_TABLE::~DIALOG_LIB_EDIT_PIN_TABLE ( )
override

Definition at line 486 of file dialog_lib_edit_pin_table.cpp.

487 {
488  auto cfg = m_editFrame->GetSettings();
489  cfg->m_PinTableVisibleColumns = m_grid->GetShownColumns().ToStdString();
490 
491  // Disconnect Events
492  m_grid->Disconnect( wxEVT_GRID_COL_SORT, wxGridEventHandler( DIALOG_LIB_EDIT_PIN_TABLE::OnColSort ), nullptr, this );
493 
494  // Prevents crash bug in wxGrid's d'tor
496 
497  // Delete the GRID_TRICKS.
498  m_grid->PopEventHandler( true );
499 
500  // This is our copy of the pins. If they were transfered to the part on an OK, then
501  // m_pins will already be empty.
502  for( auto pin : m_pins )
503  delete pin;
504 }
wxString m_PinTableVisibleColumns
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:90
PIN_TABLE_DATA_MODEL * m_dataModel
wxString GetShownColumns()
Get a tokenized string containing the shown column indexes.
Definition: wx_grid.cpp:103
void OnColSort(wxGridEvent &aEvent)
LIBEDIT_SETTINGS * GetSettings()

References WX_GRID::DestroyTable(), LIB_EDIT_FRAME::GetSettings(), WX_GRID::GetShownColumns(), m_dataModel, m_editFrame, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_pins, LIBEDIT_SETTINGS::m_PinTableVisibleColumns, and OnColSort().

Member Function Documentation

◆ adjustGridColumns()

void DIALOG_LIB_EDIT_PIN_TABLE::adjustGridColumns ( int  aWidth)
protected

Definition at line 645 of file dialog_lib_edit_pin_table.cpp.

646 {
647  m_width = aWidth;
648 
649  // Account for scroll bars
650  aWidth -= ( m_grid->GetSize().x - m_grid->GetClientSize().x );
651 
652  wxGridUpdateLocker deferRepaintsTillLeavingScope;
653 
654  // The Number and Name columns must be at least wide enough to hold their contents, but
655  // no less wide than their original widths.
656 
657  m_grid->AutoSizeColumn( COL_NUMBER );
658 
659  if( m_grid->GetColSize( COL_NUMBER ) < m_originalColWidths[ COL_NUMBER ] )
660  m_grid->SetColSize( COL_NUMBER, m_originalColWidths[ COL_NUMBER ] );
661 
662  m_grid->AutoSizeColumn( COL_NAME );
663 
664  if( m_grid->GetColSize( COL_NAME ) < m_originalColWidths[ COL_NAME ] )
665  m_grid->SetColSize( COL_NAME, m_originalColWidths[ COL_NAME ] );
666 
667  // If the grid is still wider than the columns, then stretch the Number and Name columns
668  // to fit.
669 
670  for( int i = 0; i < COL_COUNT; ++i )
671  aWidth -= m_grid->GetColSize( i );
672 
673  if( aWidth > 0 )
674  {
675  m_grid->SetColSize( COL_NUMBER, m_grid->GetColSize( COL_NUMBER ) + aWidth / 2 );
676  m_grid->SetColSize( COL_NAME, m_grid->GetColSize( COL_NAME ) + aWidth / 2 );
677  }
678 }

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

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

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 267 of file dialog_shim.cpp.

268 {
269  // so we can do logging of this state change:
270 
271 #if 0 && defined(DEBUG)
272  const char* type_id = typeid( *this ).name();
273  printf( "DIALOG_SHIM %s: %s\n", type_id, enable ? "enabled" : "disabled" );
274  fflush(0); //Needed on msys2 to immediately print the message
275 #endif
276 
277  return wxDialog::Enable( enable );
278 }

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 424 of file dialog_shim.cpp.

425 {
426  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
427  // handle validation in the same way as other dialogs.
428  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
429  return;
430 
431  SetReturnCode( retCode );
432 
433  if( !IsQuasiModal() )
434  {
435  wxFAIL_MSG( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal"
436  "wasn't called" );
437  return;
438  }
439 
440  if( m_qmodal_loop )
441  {
442  if( m_qmodal_loop->IsRunning() )
443  m_qmodal_loop->Exit( 0 );
444  else
445  m_qmodal_loop->ScheduleExit( 0 );
446 
448  }
449 
452 
453  Show( false );
454 }
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:205
#define NULL
bool IsQuasiModal()
Definition: dialog_shim.h:124
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:208

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

Referenced by HK_PROMPT_DIALOG::EndFlexible(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_COMPONENTS_LIBID::onCancel(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCancelButtonClick(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::OnCancelButtonClick(), OnClose(), DIALOG_PRINT_GENERIC::onCloseButton(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_CHOOSE_COMPONENT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), HTML_MESSAGE_BOX::OnOKButtonClick(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_CHOOSE_COMPONENT::OnUseBrowser(), 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, 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 142 of file dialog_shim.cpp.

143 {
144  // must be called from the constructor of derived classes,
145  // when all widgets are initialized, and therefore their size fixed
146 
147  // SetSizeHints fixes the minimal size of sizers in the dialog
148  // (SetSizeHints calls Fit(), so no need to call it)
149  GetSizer()->SetSizeHints( this );
150 
151  // the default position, when calling the first time the dlg
152  Center();
153 }

References PCAD2KICAD::Center.

Referenced by DIALOG_3D_VIEW_OPTIONS::DIALOG_3D_VIEW_OPTIONS(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DRC::DIALOG_DRC(), 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_EDIT_SHEET_PIN::DIALOG_EDIT_SHEET_PIN(), DIALOG_EDITOR_DATA::DIALOG_EDITOR_DATA(), 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_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_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_IMAGE_EDITOR::DIALOG_IMAGE_EDITOR(), DIALOG_INSPECTOR::DIALOG_INSPECTOR(), 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_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_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_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS(), DIALOG_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), 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_FROM_PCB::DIALOG_UPDATE_FROM_PCB(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), DLG_SELECT_3DMODEL::DLG_SELECT_3DMODEL(), PAGED_DIALOG::finishInitialization(), DIALOG_EDIT_ONE_FIELD::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_SCH_SHEET_PROPS::OnInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_UPDATE_FIELDS::TransferDataToWindow(), DIALOG_COLOR_PICKER::TransferDataToWindow(), and DIALOG_BOARD_STATISTICS::TransferDataToWindow().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( )
inlineinherited

Definition at line 49 of file kiway_holder.h.

49 { return m_type; }
HOLDER_TYPE m_type
Definition: kiway_holder.h:82

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

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

164 {
165  wxSize sz( x, 0 );
166  return ConvertDialogToPixels( sz ).x;
167 }

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

◆ IsCtrl()

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

Definition at line 137 of file dialog_shim.h.

138  {
139  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
140  !e.ShiftDown() && !e.MetaDown();
141  }

Referenced by DIALOG_TEXT_PROPERTIES::OnCharHook().

◆ IsQuasiModal()

◆ IsShiftCtrl()

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

Definition at line 143 of file dialog_shim.h.

144  {
145  return e.GetKeyCode() == aChar && e.ControlDown() && !e.AltDown() &&
146  e.ShiftDown() && !e.MetaDown();
147  }

Referenced by DIALOG_TEXT_PROPERTIES::OnCharHook().

◆ 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 56 of file kiway_holder.h.

57  {
58  wxASSERT( m_kiway ); // smoke out bugs in Debug build, then Release runs fine.
59  return *m_kiway;
60  }
KIWAY * m_kiway
Definition: kiway_holder.h:81

References KIWAY_HOLDER::m_kiway.

Referenced by TREEPROJECT_ITEM::Activate(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PCB_BASE_EDIT_FRAME::AddLibrary(), LIB_CONTROL::AddSymbolToSchematic(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), COMMON_CONTROL::ConfigurePaths(), DIALOG_CHOOSE_FOOTPRINT::ConstructRightPanel(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), PCB_BASE_FRAME::CreateAndShow3D_Frame(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH(), DIALOG_SHIM::DIALOG_SHIM(), CVPCB_MAINFRAME::DisplayStatus(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), EDIT_TOOL::EditFpInFpEditor(), SCH_EDITOR_CONTROL::EditWithLibEdit(), BACK_ANNOTATE::FetchNetlistFromPCB(), DISPLAY_FOOTPRINTS_FRAME::GetModule(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), PCB_EDIT_FRAME::importFile(), KICAD_MANAGER_FRAME::language_change(), KIWAY_PLAYER::language_change(), LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER(), 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(), PL_EDITOR_FRAME::OnExit(), SCH_EDIT_FRAME::OnExit(), FOOTPRINT_EDIT_FRAME::OnExitKiCad(), FOOTPRINT_VIEWER_FRAME::OnExitKiCad(), LIB_EDIT_FRAME::OnExitKiCad(), SAVE_AS_TRAVERSER::OnFile(), KICAD_MANAGER_FRAME::OnImportEagleFiles(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), SCH_EDIT_FRAME::OnOpenPcbnew(), EDA_BASE_FRAME::OnPreferences(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard(), SCH_EDIT_FRAME::OnUpdatePCB(), KIWAY_HOLDER::Prj(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_EDIT_FRAME::refreshSchematic(), SCH_EDITOR_CONTROL::rescueProject(), EE_INSPECTION_TOOL::RunSimulation(), CVPCB_MAINFRAME::SaveFootprintAssociation(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), LIB_TREE_MODEL_ADAPTER::SavePinnedItems(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), 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(), FOOTPRINT_EDIT_FRAME::SetPlotSettings(), CVPCB_CONTROL::ShowFootprintViewer(), COMMON_CONTROL::ShowLibraryTable(), COMMON_CONTROL::ShowPlayer(), KICAD_MANAGER_CONTROL::ShowPlayer(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), PCB_EDITOR_CONTROL::UpdateSchematicFromPCB(), and DIALOG_EXCHANGE_FOOTPRINTS::ViewAndSelectFootprint().

◆ OnAddRow()

void DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 561 of file dialog_lib_edit_pin_table.cpp.

562 {
563  if( !m_grid->CommitPendingChanges() )
564  return;
565 
566  LIB_PIN* newPin = new LIB_PIN( nullptr );
567 
568  if( m_pins.size() > 0 )
569  {
570  LIB_PIN* last = m_pins.back();
571 
572  newPin->SetOrientation( last->GetOrientation() );
573  newPin->SetType( last->GetType() );
574  newPin->SetShape( last->GetShape() );
575 
576  wxPoint pos = last->GetPosition();
577 
578  LIBEDIT_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<LIBEDIT_SETTINGS>();
579 
580  if( last->GetOrientation() == PIN_LEFT || last->GetOrientation() == PIN_RIGHT )
581  pos.y -= cfg->m_Repeat.pin_step;
582  else
583  pos.x += cfg->m_Repeat.pin_step;
584 
585  newPin->SetPosition( pos );
586  }
587 
588  m_pins.push_back( newPin );
589 
590  m_dataModel->AppendRow( m_pins[ m_pins.size() - 1 ] );
591 
592  m_grid->MakeCellVisible( m_grid->GetNumberRows() - 1, 0 );
593  m_grid->SetGridCursor( m_grid->GetNumberRows() - 1, 0 );
594 
595  m_grid->EnableCellEditControl( true );
596  m_grid->ShowCellEditControl();
597 
598  updateSummary();
599 }
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.
Definition: single_top.cpp:104
void SetPosition(const wxPoint &aPosition)
Definition: lib_item.h:248
int GetOrientation() const
Definition: lib_pin.h:206
void SetShape(GRAPHIC_PINSHAPE aShape)
Set the shape of the pin to aShape.
Definition: lib_pin.cpp:325
GRAPHIC_PINSHAPE GetShape() const
Definition: lib_pin.h:218
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:174
const wxPoint GetPosition() const override
Definition: lib_pin.h:430
PIN_TABLE_DATA_MODEL * m_dataModel
ELECTRICAL_PINTYPE GetType() const
Get the electrical type of the pin.
Definition: lib_pin.h:234
void SetType(ELECTRICAL_PINTYPE aType, bool aTestOtherPins=true)
Set the electrical type of the pin.
Definition: lib_pin.cpp:352
void SetOrientation(int aOrientation, bool aTestOtherPins=true)
Set orientation on the pin.
Definition: lib_pin.cpp:296

References PIN_TABLE_DATA_MODEL::AppendRow(), WX_GRID::CommitPendingChanges(), LIB_PIN::GetOrientation(), LIB_PIN::GetPosition(), LIB_PIN::GetShape(), LIB_PIN::GetType(), m_dataModel, DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_grid, m_pins, LIBEDIT_SETTINGS::m_Repeat, Pgm(), PIN_LEFT, PIN_RIGHT, LIBEDIT_SETTINGS::REPEAT::pin_step, LIB_PIN::SetOrientation(), LIB_ITEM::SetPosition(), LIB_PIN::SetShape(), LIB_PIN::SetType(), updateSummary(), wxPoint::x, and wxPoint::y.

◆ OnCancel()

void DIALOG_LIB_EDIT_PIN_TABLE::OnCancel ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 709 of file dialog_lib_edit_pin_table.cpp.

710 {
711  Close();
712 }

◆ OnCellEdited()

void DIALOG_LIB_EDIT_PIN_TABLE::OnCellEdited ( wxGridEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 628 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 715 of file dialog_lib_edit_pin_table.cpp.

716 {
717  // This is a cancel, so commit quietly as we're going to throw the results away anyway.
718  m_grid->CommitPendingChanges( true );
719 
720  if( m_dataModel->IsEdited() )
721  {
722  if( !HandleUnsavedChanges( this, wxEmptyString,
723  [&]()->bool { return TransferDataFromWindow(); } ) )
724  {
725  event.Veto();
726  return;
727  }
728  }
729 
730  if( IsQuasiModal() )
731  EndQuasiModal( wxID_CANCEL );
732  else if( IsModal() )
733  EndModal( wxID_CANCEL );
734  else
735  event.Skip();
736 }
bool HandleUnsavedChanges(wxWindow *aParent, const wxString &aMessage, const std::function< bool()> &aSaveFunction)
Display a dialog with Save, Cancel and Discard Changes buttons.
Definition: confirm.cpp:201
bool IsQuasiModal()
Definition: dialog_shim.h:124
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:174
PIN_TABLE_DATA_MODEL * m_dataModel
void EndQuasiModal(int retCode)

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

◆ OnColSort()

void DIALOG_LIB_EDIT_PIN_TABLE::OnColSort ( wxGridEvent &  aEvent)

Definition at line 543 of file dialog_lib_edit_pin_table.cpp.

544 {
545  int sortCol = aEvent.GetCol();
546  bool ascending;
547 
548  // This is bonkers, but wxWidgets doesn't tell us ascending/descending in the
549  // event, and if we ask it will give us pre-event info.
550  if( m_grid->IsSortingBy( sortCol ) )
551  // same column; invert ascending
552  ascending = !m_grid->IsSortOrderAscending();
553  else
554  // different column; start with ascending
555  ascending = true;
556 
557  m_dataModel->SortRows( sortCol, ascending );
558 }
void SortRows(int aSortCol, bool ascending)
PIN_TABLE_DATA_MODEL * m_dataModel

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

◆ OnDeleteRow()

void DIALOG_LIB_EDIT_PIN_TABLE::OnDeleteRow ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 602 of file dialog_lib_edit_pin_table.cpp.

603 {
604  if( !m_grid->CommitPendingChanges() )
605  return;
606 
607  if( m_pins.size() == 0 ) // empty table
608  return;
609 
610  int curRow = m_grid->GetGridCursorRow();
611 
612  if( curRow < 0 )
613  return;
614 
615  LIB_PINS removedRow = m_dataModel->RemoveRow( curRow );
616 
617  for( auto pin : removedRow )
618  m_pins.erase( std::find( m_pins.begin(), m_pins.end(), pin ) );
619 
620  curRow = std::max( 0, curRow - 1 );
621  m_grid->MakeCellVisible( curRow, m_grid->GetGridCursorCol() );
622  m_grid->SetGridCursor( curRow, m_grid->GetGridCursorCol() );
623 
624  updateSummary();
625 }
std::vector< LIB_PIN * > LIB_PINS
Helper for defining a list of pin object pointers.
Definition: lib_item.h:55
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:174
PIN_TABLE_DATA_MODEL * m_dataModel

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

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 325 of file dialog_shim.cpp.

326 {
327  if( m_firstPaintEvent )
328  {
329 #ifdef __WXMAC__
330  fixOSXCancelButtonIssue( this );
331 #endif
332 
333  selectAllInTextCtrls( GetChildren() );
334 
336  m_initialFocusTarget->SetFocus();
337  else
338  SetFocus(); // Focus the dialog itself
339 
340  m_firstPaintEvent = false;
341  }
342 
343  event.Skip();
344 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:203
bool m_firstPaintEvent
Definition: dialog_shim.h:202
static void selectAllInTextCtrls(wxWindowList &children)

References DIALOG_SHIM::m_firstPaintEvent, DIALOG_SHIM::m_initialFocusTarget, and selectAllInTextCtrls().

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ OnRebuildRows()

void DIALOG_LIB_EDIT_PIN_TABLE::OnRebuildRows ( wxCommandEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 634 of file dialog_lib_edit_pin_table.cpp.

635 {
636  if( !m_grid->CommitPendingChanges() )
637  return;
638 
639  m_dataModel->RebuildRows( m_pins, m_cbGroup->GetValue() );
640 
641  adjustGridColumns( m_grid->GetRect().GetWidth() );
642 }
void RebuildRows(LIB_PINS &aPins, bool groupByName)
bool CommitPendingChanges(bool aQuietMode=false)
Close any open cell edit controls.
Definition: wx_grid.cpp:174
PIN_TABLE_DATA_MODEL * m_dataModel

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

◆ OnSize()

void DIALOG_LIB_EDIT_PIN_TABLE::OnSize ( wxSizeEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 681 of file dialog_lib_edit_pin_table.cpp.

682 {
683  auto new_size = event.GetSize().GetX();
684 
685  if( m_initialized && m_width != new_size )
686  {
687  adjustGridColumns( new_size );
688  }
689 
690  // Always propagate for a grid repaint (needed if the height changes, as well as width)
691  event.Skip();
692 }

References adjustGridColumns(), m_initialized, and m_width.

◆ OnUpdateUI()

void DIALOG_LIB_EDIT_PIN_TABLE::OnUpdateUI ( wxUpdateUIEvent &  event)
overridevirtual

Implements DIALOG_LIB_EDIT_PIN_TABLE_BASE.

Definition at line 695 of file dialog_lib_edit_pin_table.cpp.

696 {
697  wxString columnsShown = m_grid->GetShownColumns();
698 
699  if( columnsShown != m_columnsShown )
700  {
701  m_columnsShown = columnsShown;
702 
703  if( !m_grid->IsCellEditControlShown() )
704  adjustGridColumns( m_grid->GetRect().GetWidth() );
705  }
706 }
wxString GetShownColumns()
Get a tokenized string containing the shown column indexes.
Definition: wx_grid.cpp:103

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

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

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

Definition at line 35 of file kiway_holder.cpp.

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

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(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_FOOTPRINT_FP_EDITOR::Cfg3DPath(), DIALOG_FOOTPRINT_BOARD_EDITOR::Cfg3DPath(), DIALOG_GEN_FOOTPRINT_POSITION::CreateGerberFiles(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), KICAD_MANAGER_FRAME::CreateNewProject(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromLibrary(), DIALOG_BOARD_SETUP::DIALOG_BOARD_SETUP(), DIALOG_BOARD_STATISTICS::DIALOG_BOARD_STATISTICS(), 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_SCHEMATIC_SETUP::DIALOG_SCHEMATIC_SETUP(), DIALOG_SYMBOL_REMAP::DIALOG_SYMBOL_REMAP(), LIB_VIEW_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), PL_DRAW_PANEL_GAL::DisplayWorksheet(), PCB_EDIT_FRAME::doAutoSave(), FIELDS_GRID_TRICKS::doPopupSelection(), FIELDS_EDITOR_GRID_TRICKS::doPopupSelection(), KICAD_MANAGER_CONTROL::Execute(), PCB_EDIT_FRAME::Export_IDF3(), DIALOG_EXPORT_SVG::ExportSVGFile(), LIB_CONTROL::ExportSymbolAsSVG(), LIB_CONTROL::ExportView(), PCB_EDIT_FRAME::ExportVRML_File(), PCB_EDIT_FRAME::Files_io_from_id(), PCB_EDIT_FRAME::GenD356File(), DIALOG_GENDRILL::GenDrillAndMapFiles(), FOOTPRINT_VIEWER_FRAME::getCurFootprintName(), LIB_EDIT_FRAME::GetCurLib(), FOOTPRINT_VIEWER_FRAME::getCurNickname(), SCH_BASE_FRAME::GetLibPart(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), DISPLAY_FOOTPRINTS_FRAME::GetModule(), KICAD_MANAGER_FRAME::GetProjectFileName(), LIB_VIEW_FRAME::GetSelectedSymbol(), FP_THREAD_IFACE::GetTable(), PCB_EDIT_FRAME::importFile(), SCH_EDIT_FRAME::importFile(), SCH_EDITOR_CONTROL::ImportFPAssignments(), FOOTPRINT_EDIT_FRAME::initLibraryTree(), LIB_EDIT_FRAME::KiwayMailIn(), EDA_DRAW_FRAME::LibraryFileBrowser(), LIB_EDIT_FRAME::LoadComponentFromCurrentLib(), CVPCB_MAINFRAME::LoadFootprintFiles(), DIALOG_SPICE_MODEL::loadLibrary(), LIB_EDIT_FRAME::LoadOneSymbol(), KICAD_MANAGER_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProject(), SCH_EDIT_FRAME::LoadProjectFile(), CVPCB_MAINFRAME::LoadProjectFile(), PCB_EDIT_FRAME::LoadProjectSettings(), DRC::LoadRules(), SCH_EDIT_FRAME::LoadSheetFromFile(), DIALOG_FOOTPRINT_FP_EDITOR::On3DModelCellChanged(), DIALOG_FOOTPRINT_BOARD_EDITOR::On3DModelCellChanged(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_FOOTPRINT_FP_EDITOR::OnAdd3DModel(), DIALOG_FOOTPRINT_BOARD_EDITOR::OnAdd3DModel(), KICAD_MANAGER_FRAME::OnBrowseInFileExplorer(), TEXT_BUTTON_URL::OnButtonClick(), TEXT_BUTTON_FILE_BROWSER::OnButtonClick(), DIALOG_EDIT_COMPONENTS_LIBID::onClickOrphansButton(), SCH_EDIT_FRAME::OnCloseWindow(), DIALOG_GENDRILL::OnGenReportFile(), SCH_EDIT_FRAME::OnImportProject(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnOpenCvpcb(), KICAD_MANAGER_FRAME::OnOpenFileInTextEditor(), DIALOG_NETLIST::OnOpenNetlistClick(), SCH_EDIT_FRAME::OnOpenPcbnew(), DIALOG_EXPORT_SVG::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_FOOTPRINT_POSITION::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), DIALOG_BOM::OnRunGenerator(), FOOTPRINT_EDIT_FRAME::OnSaveFootprintAsPng(), DIALOG_ERC::OnSaveReport(), DIALOG_DRC::OnSaveReport(), PROPERTIES_FRAME::onScintillaCharAdded(), DIALOG_LABEL_EDITOR::onScintillaCharAdded(), DIALOG_SCH_EDIT_ONE_FIELD::onScintillaCharAdded(), DIALOG_SPICE_MODEL::onSelectLibrary(), LIB_VIEW_FRAME::OnSelectSymbol(), KICAD_MANAGER_FRAME::OnUnarchiveFiles(), SCH_EDIT_FRAME::OnUpdatePCB(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), PANEL_PREV_3D::PANEL_PREV_3D(), SCH_EDITOR_CONTROL::Paste(), FOOTPRINT_EDITOR_TOOLS::PasteFootprint(), PCB_BASE_EDIT_FRAME::PCB_BASE_EDIT_FRAME(), DIALOG_PLOT::Plot(), DIALOG_PLOT_SCHEMATIC::Plot_1_Page_HPGL(), DIALOG_PLOT_SCHEMATIC::PlotOneSheetDXF(), DIALOG_CHOOSE_COMPONENT::PopulateFootprintSelector(), SCH_EDITOR_CONTROL::Print(), SCH_EDIT_FRAME::PrintPage(), EDA_DRAW_FRAME::PrintWorkSheet(), 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_EDITOR_CONTROL::RescueLegacyProject(), SCH_EDITOR_CONTROL::RescueSymbolLibTableProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), DIALOG_EDIT_COMPONENTS_LIBID::revertChanges(), 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(), DIALOG_BOARD_STATISTICS::saveReportClicked(), SCH_BASE_FRAME::saveSymbolLibTables(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectCompFromLibTree(), PCB_BASE_FRAME::SelectLibrary(), LIB_EDIT_FRAME::SelectLibraryFromList(), LIB_EDIT_FRAME::selectSymLibTable(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), GERBVIEW_FRAME::SetPageSettings(), KICAD_MANAGER_FRAME::SetProjectFileName(), EE_INSPECTION_TOOL::ShowDatasheet(), DIALOG_CHOOSE_COMPONENT::ShowFootprintFor(), COMMON_CONTROL::ShowHelp(), LIB_VIEW_FRAME::ShowModal(), FOOTPRINT_VIEWER_FRAME::ShowModal(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), LIB_MANAGER::symTable(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), FOOTPRINT_EDIT_FRAME::SyncLibraryTree(), EDA_3D_VIEWER::takeScreenshot(), PANEL_SETUP_RULES::TransferDataFromWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::TransferDataFromWindow(), NETLIST_DIALOG::TransferDataFromWindow(), DIALOG_EDIT_COMPONENTS_LIBID::TransferDataFromWindow(), PANEL_SETUP_RULES::TransferDataToWindow(), DIALOG_FOOTPRINT_FP_EDITOR::TransferDataToWindow(), DIALOG_FOOTPRINT_BOARD_EDITOR::TransferDataToWindow(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::UpdateFieldsFromLibrary(), DIALOG_PAGES_SETTINGS::UpdatePageLayoutExample(), 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().

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

243 {
244  const char* hash_key;
245 
246  if( m_hash_key.size() )
247  {
248  // a special case like EDA_LIST_DIALOG, which has multiple uses.
249  hash_key = m_hash_key.c_str();
250  }
251  else
252  {
253  hash_key = typeid(*this).name();
254  }
255 
256  RECT_MAP::iterator it = class_map.find( hash_key );
257 
258  if( it == class_map.end() )
259  return;
260 
261  EDA_RECT rect = it->second;
262  rect.SetSize( 0, 0 );
263  class_map[ hash_key ] = rect;
264 }
std::string m_hash_key
Definition: dialog_shim.h:197
static RECT_MAP class_map
void SetSize(const wxSize &size)
Definition: eda_rect.h:144
EDA_RECT handles the component boundary box.
Definition: eda_rect.h:44

References class_map, DIALOG_SHIM::m_hash_key, and EDA_RECT::SetSize().

Referenced by DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY().

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

116  {
117  m_initialFocusTarget = aWindow;
118  }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:203

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_EDIT_SHEET_PIN::DIALOG_EDIT_SHEET_PIN(), DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), DIALOG_FIND::DIALOG_FIND(), 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_IMPORT_GFX::DIALOG_IMPORT_GFX(), 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_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SCH_FIND::DIALOG_SCH_FIND(), 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(), LIB_EDIT_FRAME::savePartAs(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_KEEPOUT_AREA_PROPERTIES::TransferDataToWindow(), and DIALOG_COPPER_ZONE::TransferDataToWindow().

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

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

References KIWAY_HOLDER::m_kiway, and name.

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

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

157 {
158  wxSize sz( x, y );
159  SetSize( ConvertDialogToPixels( sz ) );
160 }

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

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

References class_map, EDA_RECT::GetPosition(), EDA_RECT::GetSize(), DIALOG_SHIM::m_hash_key, wxPoint::x, and wxPoint::y.

Referenced by DIALOG_SHIM::EndQuasiModal(), InvokeDialogERC(), SCH_EDIT_FRAME::OnAnnotate(), DIALOG_DRC::OnDRCItemDClick(), DIALOG_ERC::OnERCItemDClick(), DIALOG_CLEANUP_TRACKS_AND_VIAS::OnLeftDClickItem(), POSITION_RELATIVE_TOOL::PositionRelative(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), DRC::ShowDRCDialog(), SCH_EDIT_FRAME::ShowFindReplaceDialog(), DIALOG_SHIM::ShowQuasiModal(), DIALOG_POSITION_RELATIVE::UpdateAnchor(), and SCH_EDIT_FRAME::UpdateHierarchyNavigator().

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 370 of file dialog_shim.cpp.

371 {
372  // This is an exception safe way to zero a pointer before returning.
373  // Yes, even though DismissModal() clears this first normally, this is
374  // here in case there's an exception before the dialog is dismissed.
375  struct NULLER
376  {
377  void*& m_what;
378  NULLER( void*& aPtr ) : m_what( aPtr ) {}
379  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
380  } clear_this( (void*&) m_qmodal_loop );
381 
382  // release the mouse if it's currently captured as the window having it
383  // will be disabled when this dialog is shown -- but will still keep the
384  // capture making it impossible to do anything in the modal dialog itself
385  wxWindow* win = wxWindow::GetCapture();
386  if( win )
387  win->ReleaseMouse();
388 
389  // Get the optimal parent
390  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
391 
392  // Show the optimal parent
393  DBG( if( parent ) printf( "%s: optimal parent: %s\n", __func__, typeid(*parent).name() );)
394 
395  wxASSERT_MSG( !m_qmodal_parent_disabler,
396  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
397 
398  // quasi-modal: disable only my "optimal" parent
400 
401 
402  // Apple in its infinite wisdom will raise a disabled window before even passing
403  // us the event, so we have no way to stop it. Instead, we must set an order on
404  // the windows so that the quasi-modal will be pushed in front of the disabled
405  // window when it is raised.
407 
408  Show( true );
409 
410  m_qmodal_showing = true;
411 
412  WX_EVENT_LOOP event_loop;
413 
414  m_qmodal_loop = &event_loop;
415 
416  event_loop.Run();
417 
418  m_qmodal_showing = false;
419 
420  return GetReturnCode();
421 }
bool m_qmodal_showing
Definition: dialog_shim.h:207
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:205
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:208
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:38
#define DBG(x)
Definition: fctsys.h:33
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:32

References DBG, 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 LIB_EDIT_TOOL::editFieldProperties(), SCH_EDITOR_CONTROL::EditSymbolFields(), LIB_EDIT_TOOL::editSymbolProperties(), GLOBAL_EDIT_TOOL::EditTracksAndVias(), GLOBAL_EDIT_TOOL::ExchangeFootprints(), PCB_EDIT_FRAME::InstallExchangeModuleFrame(), PCB_BASE_FRAME::InstallPadOptionsFrame(), InvokeDialogEditComponentsLibId(), InvokeDialogRescueEach(), InvokeDialogUpdateFields(), LIB_VIEW_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_TOOL::Properties(), EDIT_TOOL::Properties(), SCH_EDITOR_CONTROL::RemapSymbols(), SCH_BASE_FRAME::SelectCompFromLibTree(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), PCB_EDIT_FRAME::ShowBoardSetupDialog(), and SCH_EDIT_FRAME::ShowSchematicSetupDialog().

◆ TransferDataFromWindow()

bool DIALOG_LIB_EDIT_PIN_TABLE::TransferDataFromWindow ( )
override

Definition at line 521 of file dialog_lib_edit_pin_table.cpp.

522 {
523  if( !m_grid->CommitPendingChanges() )
524  return false;
525 
526  // Delete the part's pins
527  while( LIB_PIN* pin = m_part->GetNextPin( nullptr ) )
528  m_part->RemoveDrawItem( pin );
529 
530  // Transfer our pins to the part
531  for( LIB_PIN* pin : m_pins )
532  {
533  pin->SetParent( m_part );
534  m_part->AddDrawItem( pin );
535  }
536 
537  m_pins.clear();
538 
539  return true;
540 }
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:174
LIB_PIN * GetNextPin(LIB_PIN *aItem=NULL)
Return the next pin object from the draw list.
void RemoveDrawItem(LIB_ITEM *aItem)
Remove draw aItem from list.

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

◆ TransferDataToWindow()

bool DIALOG_LIB_EDIT_PIN_TABLE::TransferDataToWindow ( )
override

Definition at line 507 of file dialog_lib_edit_pin_table.cpp.

508 {
509  // Make a copy of the pins for editing
510  for( LIB_PIN* pin = m_part->GetNextPin( nullptr ); pin; pin = m_part->GetNextPin( pin ) )
511  m_pins.push_back( new LIB_PIN( *pin ) );
512 
513  m_dataModel->RebuildRows( m_pins, m_cbGroup->GetValue() );
514 
515  updateSummary();
516 
517  return true;
518 }
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.

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

◆ updateSummary()

void DIALOG_LIB_EDIT_PIN_TABLE::updateSummary ( )
protected

Definition at line 739 of file dialog_lib_edit_pin_table.cpp.

740 {
741  PinNumbers pinNumbers;
742 
743  for( LIB_PIN* pin : m_pins )
744  {
745  if( pin->GetNumber().Length() )
746  pinNumbers.insert( pin->GetNumber() );
747  }
748 
749  m_summary->SetLabel( pinNumbers.GetSummary() );
750 }
wxString GetSummary() const
Definition: pin_number.cpp:71
void insert(value_type const &v)
Definition: pin_number.h:57

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

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

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

171 {
172  wxSize sz( 0, y );
173  return ConvertDialogToPixels( sz ).y;
174 }

Referenced by DIALOG_CHOOSE_COMPONENT::DIALOG_CHOOSE_COMPONENT().

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 77 of file dialog_lib_edit_pin_table.h.

Referenced by DIALOG_LIB_EDIT_PIN_TABLE(), and OnUpdateUI().

◆ m_dataModel

◆ m_deleteButton

wxBitmapButton* DIALOG_LIB_EDIT_PIN_TABLE_BASE::m_deleteButton
protectedinherited

◆ m_editFrame

LIB_EDIT_FRAME* DIALOG_LIB_EDIT_PIN_TABLE::m_editFrame
protected

Definition at line 74 of file dialog_lib_edit_pin_table.h.

Referenced by ~DIALOG_LIB_EDIT_PIN_TABLE().

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 202 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 203 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 75 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 80 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 76 of file dialog_lib_edit_pin_table.h.

Referenced by adjustGridColumns(), and DIALOG_LIB_EDIT_PIN_TABLE().

◆ m_parentFrame

EDA_BASE_FRAME* DIALOG_SHIM::m_parentFrame
protectedinherited

Definition at line 210 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnCharHook(), and DIALOG_DRC::OnDRCItemRClick().

◆ m_part

LIB_PART* DIALOG_LIB_EDIT_PIN_TABLE::m_part
protected

Definition at line 78 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 205 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 207 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_tabOrder

◆ m_units

◆ m_width

int DIALOG_LIB_EDIT_PIN_TABLE::m_width
protected

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