KiCad PCB EDA Suite
DIALOG_FP_PLUGIN_OPTIONS Class Reference

Class DIALOG_FP_PLUGIN_OPTIONS is an options editor in the form of a two column name/value spreadsheet like (table) UI. More...

Inheritance diagram for DIALOG_FP_PLUGIN_OPTIONS:
DIALOG_FP_PLUGIN_OPTIONS_BASE DIALOG_SHIM KIWAY_HOLDER

Public Member Functions

 DIALOG_FP_PLUGIN_OPTIONS (wxTopLevelWindow *aParent, const wxString &aNickname, const wxString &aPluginType, const wxString &aOptions, wxString *aResult)
 
 ~DIALOG_FP_PLUGIN_OPTIONS ()
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal ()
 
bool Show (bool show) override
 
bool Enable (bool enable) 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 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 FixOSXCancelButtonIssue ()
 A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms. More...
 

Protected Attributes

wxGrid * m_grid
 
wxButton * m_add_row
 
wxButton * m_delete_row
 
wxButton * m_move_up
 
wxButton * m_move_down
 
wxListBox * m_listbox
 
wxButton * m_append_choice_button
 
wxStaticText * m_staticText1
 
wxHtmlWindow * m_html
 
wxStdDialogButtonSizer * m_sdbSizer1
 
wxButton * m_sdbSizer1OK
 
wxButton * m_sdbSizer1Cancel
 
std::string m_hash_key
 
EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 

Private Member Functions

int getCursorCol () const
 If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based column index. More...
 
int getCursorRow () const
 If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based row index. More...
 
wxArrayString getRow (int aRow)
 
void setRow (int aRow, const wxArrayString &aPair)
 
wxString makeResult ()
 
void saveColSizes ()
 
void abort ()
 
int appendRow ()
 
void appendOption ()
 
void onListBoxItemSelected (wxCommandEvent &event) override
 
void onListBoxItemDoubleClicked (wxCommandEvent &event) override
 
void onAppendOption (wxCommandEvent &event) override
 
void onAppendRow (wxMouseEvent &event) override
 
void onDeleteRow (wxMouseEvent &event) override
 
void onMoveUp (wxMouseEvent &event) override
 
void onMoveDown (wxMouseEvent &event) override
 
void onCancelButtonClick (wxCommandEvent &event) override
 
void onCancelCaptionButtonClick (wxCloseEvent &event) override
 
void onOKButtonClick (wxCommandEvent &event) override
 

Private Attributes

const wxString & m_callers_options
 
wxString * m_result
 
PROPERTIES m_choices
 
wxString m_initial_help
 

Detailed Description

Class DIALOG_FP_PLUGIN_OPTIONS is an options editor in the form of a two column name/value spreadsheet like (table) UI.

It takes hints from a pcbnew PLUGIN as to supported options.

Definition at line 51 of file dialog_fp_plugin_options.cpp.

Constructor & Destructor Documentation

DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS ( wxTopLevelWindow *  aParent,
const wxString &  aNickname,
const wxString &  aPluginType,
const wxString &  aOptions,
wxString *  aResult 
)
inline

Definition at line 55 of file dialog_fp_plugin_options.cpp.

References col_width_option, col_width_value, IO_MGR::EnumFromStr(), PLUGIN::FootprintLibOptions(), Format(), FROM_UTF8(), GetChars(), m_choices, DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid, DIALOG_FP_PLUGIN_OPTIONS_BASE::m_html, m_initial_help, DIALOG_FP_PLUGIN_OPTIONS_BASE::m_listbox, LIB_TABLE::ParseOptions(), IO_MGR::PluginFind(), and TO_UTF8.

57  :
59  m_callers_options( aOptions ),
60  m_result( aResult ),
62  {
63  wxString title = wxString::Format(
64  _( "Options for Library '%s'" ), GetChars( aNickname ) );
65 
66  SetTitle( title );
67 
68  // add Cut, Copy, and Paste to wxGrid
69  m_grid->PushEventHandler( new GRID_TRICKS( m_grid ) );
70 
71  m_grid->SetColMinimalWidth( 1, 250 );
72 
73  // Fill the grid with existing aOptions
74  string options = TO_UTF8( aOptions );
75 
76  PROPERTIES* props = LIB_TABLE::ParseOptions( options );
77 
78  if( props )
79  {
80  if( (int) props->size() > m_grid->GetNumberRows() )
81  m_grid->AppendRows( props->size() - m_grid->GetNumberRows() );
82 
83  int row = 0;
84  for( PROPERTIES::const_iterator it = props->begin(); it != props->end(); ++it, ++row )
85  {
86  m_grid->SetCellValue( row, 0, FROM_UTF8( it->first.c_str() ) );
87  m_grid->SetCellValue( row, 1, it->second );
88  }
89 
90  delete props;
91  }
92 
93  // Option Choices Panel:
94 
95  IO_MGR::PCB_FILE_T pi_type = IO_MGR::EnumFromStr( aPluginType );
96  PLUGIN::RELEASER pi( IO_MGR::PluginFind( pi_type ) );
97 
98  pi->FootprintLibOptions( &m_choices );
99 
100  if( m_choices.size() )
101  {
102  int row = 0;
103  for( PROPERTIES::const_iterator it = m_choices.begin(); it != m_choices.end(); ++it, ++row )
104  {
105  wxString item = FROM_UTF8( it->first.c_str() );
106 
107  m_listbox->InsertItems( 1, &item, row );
108  }
109  }
110 
111  m_html->SetPage( m_initial_help );
112 
113  if( !col_width_option )
114  {
115  m_grid->AutoSizeColumns( false );
116  }
117  else
118  {
119  m_grid->SetColSize( 0, col_width_option );
120  m_grid->SetColSize( 1, col_width_value );
121  }
122 
123  Fit();
124 
125  // initial focus on the grid please.
126  m_grid->SetFocus();
127  }
static wxString FROM_UTF8(const char *cstring)
function FROM_UTF8 converts a UTF8 encoded C string to a wxString for all wxWidgets build modes...
Definition: macros.h:53
#define INITIAL_HELP
Class GRID_TRICKS is used to add cut, copy, and paste to an otherwise unmodied wxGrid instance...
Definition: grid_tricks.h:34
Class PROPERTIES is a name/value tuple with unique names and optional values.
Definition: properties.h:34
static int col_width_option
DIALOG_FP_PLUGIN_OPTIONS_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=wxEmptyString, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(678, 342), long style=wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER)
Class RELEASER releases a PLUGIN in the context of a potential thrown exception, through its destruct...
Definition: io_mgr.h:474
#define TO_UTF8(wxstring)
Macro TO_UTF8 converts a wxString to a UTF8 encoded C string for all wxWidgets build modes...
Definition: macros.h:47
static PROPERTIES * ParseOptions(const std::string &aOptionsList)
Function ParseOptions.
static PCB_FILE_T EnumFromStr(const wxString &aFileType)
Function EnumFromStr returns the PCB_FILE_T from the corresponding plugin type name: "kicad"...
Definition: io_mgr.cpp:137
static int col_width_value
static const wxChar * GetChars(const wxString &s)
Function GetChars returns a wxChar* to the actual wxChar* data within a wxString, and is helpful for ...
Definition: macros.h:92
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
static PLUGIN * PluginFind(PCB_FILE_T aFileType)
Function PluginFind returns a PLUGIN which the caller can use to import, export, save, or load design documents.
Definition: io_mgr.cpp:58
PCB_FILE_T
Enum PCB_FILE_T is a set of file types that the IO_MGR knows about, and for which there has been a pl...
Definition: io_mgr.h:51
DIALOG_FP_PLUGIN_OPTIONS::~DIALOG_FP_PLUGIN_OPTIONS ( )
inline

Definition at line 129 of file dialog_fp_plugin_options.cpp.

References DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

130  {
131  // destroy GRID_TRICKS before m_grid.
132  m_grid->PopEventHandler( true );
133  }

Member Function Documentation

void DIALOG_FP_PLUGIN_OPTIONS::abort ( )
inlineprivate

Definition at line 204 of file dialog_fp_plugin_options.cpp.

References m_callers_options, and saveColSizes().

Referenced by onCancelButtonClick(), and onCancelCaptionButtonClick().

205  {
206  saveColSizes();
207 
208  *m_result = m_callers_options; // tell caller "no change"
209  EndModal( 0 );
210  }
void DIALOG_FP_PLUGIN_OPTIONS::appendOption ( )
inlineprivate

Definition at line 228 of file dialog_fp_plugin_options.cpp.

References appendRow(), DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid, and DIALOG_FP_PLUGIN_OPTIONS_BASE::m_listbox.

Referenced by onAppendOption(), and onListBoxItemDoubleClicked().

229  {
230  int selected_row = m_listbox->GetSelection();
231  if( selected_row != wxNOT_FOUND )
232  {
233  wxString option = m_listbox->GetString( selected_row );
234 
235  int row_count = m_grid->GetNumberRows();
236  int row;
237 
238  for( row=0; row<row_count; ++row )
239  {
240  wxString col0 = m_grid->GetCellValue( row, 0 );
241 
242  if( !col0 ) // empty col0
243  break;
244  }
245 
246  if( row == row_count )
247  row = appendRow();
248 
249  m_grid->SetCellValue( row, 0, option );
250  m_grid->AutoSizeColumns( false );
251  }
252  }
int DIALOG_FP_PLUGIN_OPTIONS::appendRow ( )
inlineprivate

Definition at line 212 of file dialog_fp_plugin_options.cpp.

References DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

Referenced by appendOption(), and onAppendRow().

213  {
214  if( m_grid->AppendRows( 1 ) )
215  {
216  int last_row = m_grid->GetNumberRows() - 1;
217 
218  // wx documentation is wrong, SetGridCursor does not make visible.
219  m_grid->MakeCellVisible( last_row, 0 );
220  m_grid->SetGridCursor( last_row, 0 );
221 
222  return last_row;
223  }
224 
225  return -1;
226  }
bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 182 of file dialog_shim.cpp.

Referenced by DIALOG_PRINT_USING_PRINTER::InitValues().

183 {
184  // so we can do logging of this state change:
185 
186 #if defined(DEBUG)
187  const char* type_id = typeid( *this ).name();
188  printf( "wxDialog %s: %s\n", type_id, enable ? "enabled" : "disabled" );
189 #endif
190 
191  return wxDialog::Enable( enable );
192 }
void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 540 of file dialog_shim.cpp.

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

Referenced by HK_PROMPT_DIALOG::EndFlexible(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnCancelButtonClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCancelButtonClick(), DIALOG_EDIT_ONE_FIELD::OnCancelClick(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnCloseDialog(), DIALOG_EDIT_ONE_FIELD::OnCloseDialog(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnCloseDialog(), DIALOG_CHOOSE_COMPONENT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnOKButtonClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), DIALOG_EDIT_ONE_FIELD::OnOkClick(), DIALOG_EXCHANGE_MODULE::OnQuit(), DIALOG_CHOOSE_COMPONENT::OnSchViewDClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), and DIALOG_SHIM::~DIALOG_SHIM().

541 {
542  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
543  // handle validation in the same way as other dialogs.
544  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
545  return;
546 
547  SetReturnCode( retCode );
548 
549  if( !IsQuasiModal() )
550  {
551  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal wasn't called" ) );
552  return;
553  }
554 
555  m_qmodal_showing = false;
556 
557  if( m_qmodal_loop )
558  {
559  if( m_qmodal_loop->IsRunning() )
560  m_qmodal_loop->Exit( 0 );
561  else
562  m_qmodal_loop->ScheduleExit( 0 );
563 
564  m_qmodal_loop = NULL;
565  }
566 
569 
570  Show( false );
571 }
bool m_qmodal_showing
Definition: dialog_shim.h:132
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:131
bool IsQuasiModal()
Definition: dialog_shim.h:93
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:133
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 104 of file dialog_shim.cpp.

References PCAD2KICAD::Center.

Referenced by COLOR4D_PICKER_DLG::COLOR4D_PICKER_DLG(), DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DESIGN_RULES::DIALOG_DESIGN_RULES(), DIALOG_DIMENSION_EDITOR::DIALOG_DIMENSION_EDITOR(), DIALOG_DISPLAY_OPTIONS::DIALOG_DISPLAY_OPTIONS(), DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY(), DIALOG_EESCHEMA_OPTIONS::DIALOG_EESCHEMA_OPTIONS(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_GLOBAL_SYM_LIB_TABLE_CONFIG::DIALOG_GLOBAL_SYM_LIB_TABLE_CONFIG(), 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_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LIB_NEW_COMPONENT::DIALOG_LIB_NEW_COMPONENT(), DIALOG_LIBEDIT_OPTIONS::DIALOG_LIBEDIT_OPTIONS(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_SCH_EDIT_SHEET_PIN::DIALOG_SCH_EDIT_SHEET_PIN(), DIALOG_SCH_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS(), DIALOG_SELECT_PRETTY_LIB::DIALOG_SELECT_PRETTY_LIB(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_EDIT_ONE_FIELD::init(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_LIB_EDIT_PIN::OnInitDialog(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::OnInitDialog(), DIALOG_TRACK_VIA_PROPERTIES::OnInitDlg(), DIALOG_GRAPHIC_ITEMS_OPTIONS::OnInitDlg(), DialogEditModuleText::OnInitDlg(), DIALOG_SET_GRID::OnInitDlg(), DIALOG_PCB_TEXT_PROPERTIES::OnInitDlg(), DIALOG_PRINT_FOR_MODEDIT::OnInitDlg(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_MODULE_MODULE_EDITOR::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_SPICE_MODEL::onInitDlg(), DIALOG_MODULE_BOARD_EDITOR::OnInitDlg(), DIALOG_PRINT_USING_PRINTER::OnInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), TARGET_PROPERTIES_DIALOG_EDITOR::TARGET_PROPERTIES_DIALOG_EDITOR(), and DIALOG_SIGNAL_LIST::TransferDataToWindow().

105 {
106  // must be called from the constructor of derived classes,
107  // when all widgets are initialized, and therefore their size fixed
108 
109  // SetSizeHints fixes the minimal size of sizers in the dialog
110  // (SetSizeHints calls Fit(), so no need to call it)
111  GetSizer()->SetSizeHints( this );
112 
113  // the default position, when calling the first time the dlg
114  Center();
115 }
void DIALOG_SHIM::FixOSXCancelButtonIssue ( )
protectedinherited

A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms.

Definition at line 117 of file dialog_shim.cpp.

Referenced by DIALOG_SHIM::Show().

118 {
119 #ifdef __WXMAC__
120  // A ugly hack to fix an issue on OSX: ctrl+c closes the dialog instead of
121  // copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer
122  // created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority
123  // to copy text standard accelerator, and the dlg is closed when trying to copy text
124  wxButton* button = dynamic_cast< wxButton* > ( wxWindow::FindWindowById( wxID_CANCEL, this ) );
125 
126  if( button )
127  button->SetLabel( _( "Cancel" ) );
128 #endif
129 }
int DIALOG_FP_PLUGIN_OPTIONS::getCursorCol ( ) const
inlineprivate

If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based column index.

Definition at line 145 of file dialog_fp_plugin_options.cpp.

References DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

Referenced by onDeleteRow(), onMoveDown(), and onMoveUp().

146  {
147  return m_grid->GetGridCursorCol();
148  }
int DIALOG_FP_PLUGIN_OPTIONS::getCursorRow ( ) const
inlineprivate

If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based row index.

Definition at line 152 of file dialog_fp_plugin_options.cpp.

References DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

Referenced by onDeleteRow(), onMoveDown(), and onMoveUp().

153  {
154  return m_grid->GetGridCursorRow();
155  }
wxArrayString DIALOG_FP_PLUGIN_OPTIONS::getRow ( int  aRow)
inlineprivate

Definition at line 157 of file dialog_fp_plugin_options.cpp.

References DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

Referenced by onMoveDown(), and onMoveUp().

158  {
159  wxArrayString row;
160 
161  const int col_count = m_grid->GetNumberCols();
162  for( int col = 0; col < col_count; ++col )
163  {
164  row.Add( m_grid->GetCellValue( aRow, col ) );
165  }
166 
167  return row;
168  }
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 SCH_EDIT_FRAME::AppendOneEEProject(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_CHOOSE_COMPONENT::ConstructRightPanel(), CVPCB_MAINFRAME::CreateScreenCmp(), CVPCB_MAINFRAME::CVPCB_MAINFRAME(), DIALOG_SHIM::DIALOG_SHIM(), EDIT_TOOL::editFootprintInFpEditor(), SCH_EDIT_FRAME::EditSheet(), DISPLAY_FOOTPRINTS_FRAME::Get_Module(), FOOTPRINT_EDIT_FRAME::GetPlotSettings(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::initBuffers(), LIB_EDIT_FRAME::InstallConfigFrame(), PCB_EDIT_FRAME::InstallModuleOptionsFrame(), KIWAY_PLAYER::language_change(), SCH_SHEET::Load(), CVPCB_MAINFRAME::LoadFootprintFiles(), KIWAY_PLAYER::OnChangeIconsOptions(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), SCH_BASE_FRAME::OnEditSymbolLibTable(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), SCH_EDIT_FRAME::OnLeftClick(), SCH_BASE_FRAME::OnOpenLibraryViewer(), SCH_EDIT_FRAME::OnSimulate(), DIALOG_EDIT_ONE_FIELD::OnTextValueSelectButtonClick(), FOOTPRINT_EDIT_FRAME::OnUpdateInsertModuleInBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateLoadModuleFromBoard(), FOOTPRINT_EDIT_FRAME::OnUpdateReplaceModuleInBoard(), 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::SaveEEFile(), CVPCB_MAINFRAME::SaveFootprintAssociation(), SCH_BASE_FRAME::SelectComponentFromLibBrowser(), CVPCB_MAINFRAME::SendMessageToEESCHEMA(), PCB_EDIT_FRAME::SendMessageToEESCHEMA(), SCH_EDIT_FRAME::SendMessageToPCBNEW(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_EDIT_FRAME::SetPlotSettings(), DISPLAY_FOOTPRINTS_FRAME::Show3D_Frame(), FOOTPRINT_VIEWER_FRAME::Show3D_Frame(), FOOTPRINT_EDIT_FRAME::Show3D_Frame(), FOOTPRINT_WIZARD_FRAME::Show3D_Frame(), DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB::showButtonHandler(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::showButtonHandler(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), and DIALOG_EXCHANGE_MODULE::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:85
wxString DIALOG_FP_PLUGIN_OPTIONS::makeResult ( )
inlineprivate

Definition at line 179 of file dialog_fp_plugin_options.cpp.

References LIB_TABLE::FormatOptions(), DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid, name, and TO_UTF8.

Referenced by onOKButtonClick().

180  {
181  PROPERTIES props;
182  const int rowCount = m_grid->GetNumberRows();
183 
184  for( int row = 0; row<rowCount; ++row )
185  {
186  string name = TO_UTF8( m_grid->GetCellValue( row, 0 ).Trim( false ).Trim() );
187  UTF8 value = m_grid->GetCellValue( row, 1 ).Trim( false ).Trim();
188 
189  if( name.size() )
190  {
191  props[name] = value;
192  }
193  }
194 
195  return LIB_TABLE::FormatOptions( &props );
196  }
Class UTF8 is an 8 bit string that is assuredly encoded in UTF8, and supplies special conversion supp...
Definition: utf8.h:73
Class PROPERTIES is a name/value tuple with unique names and optional values.
Definition: properties.h:34
static UTF8 FormatOptions(const PROPERTIES *aProperties)
Function FormatOptions.
#define TO_UTF8(wxstring)
Macro TO_UTF8 converts a wxString to a UTF8 encoded C string for all wxWidgets build modes...
Definition: macros.h:47
const char * name
void DIALOG_FP_PLUGIN_OPTIONS::onAppendOption ( wxCommandEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 282 of file dialog_fp_plugin_options.cpp.

References appendOption().

283  {
284  appendOption();
285  }
void DIALOG_FP_PLUGIN_OPTIONS::onAppendRow ( wxMouseEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 287 of file dialog_fp_plugin_options.cpp.

References appendRow().

288  {
289  appendRow();
290  }
void DIALOG_FP_PLUGIN_OPTIONS::onCancelButtonClick ( wxCommandEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 371 of file dialog_fp_plugin_options.cpp.

References abort().

372  {
373  abort();
374  }
void DIALOG_FP_PLUGIN_OPTIONS::onCancelCaptionButtonClick ( wxCloseEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 376 of file dialog_fp_plugin_options.cpp.

References abort().

377  {
378  abort();
379  }
void DIALOG_FP_PLUGIN_OPTIONS::onDeleteRow ( wxMouseEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 292 of file dialog_fp_plugin_options.cpp.

References getCursorCol(), getCursorRow(), and DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

293  {
294  int rowCount = m_grid->GetNumberRows();
295  int curRow = getCursorRow();
296 
297  m_grid->DeleteRows( curRow );
298 
299  if( curRow && curRow == rowCount - 1 )
300  {
301  m_grid->MakeCellVisible( curRow-1, getCursorCol() );
302  m_grid->SetGridCursor( curRow-1, getCursorCol() );
303  }
304  }
int getCursorCol() const
If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based column index.
int getCursorRow() const
If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based row index.
void DIALOG_FP_PLUGIN_OPTIONS::onListBoxItemDoubleClicked ( wxCommandEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 277 of file dialog_fp_plugin_options.cpp.

References appendOption().

278  {
279  appendOption();
280  }
void DIALOG_FP_PLUGIN_OPTIONS::onListBoxItemSelected ( wxCommandEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 256 of file dialog_fp_plugin_options.cpp.

References DIALOG_FP_PLUGIN_OPTIONS_BASE::m_html, TO_UTF8, and PROPERTIES::Value().

257  {
258  // change the help text based on the m_listbox selection:
259  if( event.IsSelection() )
260  {
261  string option = TO_UTF8( event.GetString() );
262  UTF8 help_text;
263 
264  if( m_choices.Value( option.c_str(), &help_text ) )
265  {
266  wxString page = help_text;
267 
268  m_html->SetPage( page );
269  }
270  else
271  {
272  m_html->SetPage( m_initial_help );
273  }
274  }
275  }
Class UTF8 is an 8 bit string that is assuredly encoded in UTF8, and supplies special conversion supp...
Definition: utf8.h:73
bool Value(const char *aName, UTF8 *aFetchedValue=NULL) const
Function Value fetches a property by aName and returns true if that property was found, else false.
Definition: properties.cpp:24
#define TO_UTF8(wxstring)
Macro TO_UTF8 converts a wxString to a UTF8 encoded C string for all wxWidgets build modes...
Definition: macros.h:47
void DIALOG_FP_PLUGIN_OPTIONS::onMoveDown ( wxMouseEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 339 of file dialog_fp_plugin_options.cpp.

References getCursorCol(), getCursorRow(), getRow(), DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid, and setRow().

340  {
341  int curRow = getCursorRow();
342  if( curRow + 1 < m_grid->GetNumberRows() )
343  {
344  int curCol = getCursorCol();
345 
346  wxArrayString move_me = getRow( curRow );
347 
348  m_grid->DeleteRows( curRow );
349  ++curRow;
350  m_grid->InsertRows( curRow );
351  setRow( curRow, move_me );
352 
353  wxGridTableBase* tbl = m_grid->GetTable();
354 
355  if( tbl->GetView() )
356  {
357  // fire a msg to cause redrawing
358  wxGridTableMessage msg( tbl,
359  wxGRIDTABLE_NOTIFY_ROWS_INSERTED,
360  curRow - 1,
361  0 );
362 
363  tbl->GetView()->ProcessTableMessage( msg );
364  }
365 
366  m_grid->MakeCellVisible( curRow, curCol );
367  m_grid->SetGridCursor( curRow, curCol );
368  }
369  }
int getCursorCol() const
If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based column index.
int getCursorRow() const
If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based row index.
void setRow(int aRow, const wxArrayString &aPair)
void DIALOG_FP_PLUGIN_OPTIONS::onMoveUp ( wxMouseEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 306 of file dialog_fp_plugin_options.cpp.

References getCursorCol(), getCursorRow(), getRow(), DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid, and setRow().

307  {
308  int curRow = getCursorRow();
309  if( curRow >= 1 )
310  {
311  int curCol = getCursorCol();
312 
313  wxArrayString move_me = getRow( curRow );
314 
315  m_grid->DeleteRows( curRow );
316  --curRow;
317  m_grid->InsertRows( curRow );
318 
319  setRow( curRow, move_me );
320 
321  wxGridTableBase* tbl = m_grid->GetTable();
322 
323  if( tbl->GetView() )
324  {
325  // fire a msg to cause redrawing
326  wxGridTableMessage msg( tbl,
327  wxGRIDTABLE_NOTIFY_ROWS_INSERTED,
328  curRow,
329  0 );
330 
331  tbl->GetView()->ProcessTableMessage( msg );
332  }
333 
334  m_grid->MakeCellVisible( curRow, curCol );
335  m_grid->SetGridCursor( curRow, curCol );
336  }
337  }
int getCursorCol() const
If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based column index.
int getCursorRow() const
If the cursor is not on a valid cell, because there are no rows at all, return -1, else return a 0 based row index.
void setRow(int aRow, const wxArrayString &aPair)
void DIALOG_FP_PLUGIN_OPTIONS::onOKButtonClick ( wxCommandEvent &  event)
inlineoverrideprivatevirtual

Implements DIALOG_FP_PLUGIN_OPTIONS_BASE.

Definition at line 381 of file dialog_fp_plugin_options.cpp.

References makeResult(), and saveColSizes().

382  {
383  saveColSizes();
384 
385  *m_result = makeResult(); // change from edits
386  EndModal( 1 );
387  }
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 SCH_EDIT_FRAME::AnnotateComponents(), SCH_EDIT_FRAME::AppendOneEEProject(), PCB_EDIT_FRAME::ArchiveModulesOnBoard(), SCH_EDIT_FRAME::backAnnotateFootprints(), LIB_VIEW_FRAME::BestZoom(), DIALOG_MODULE_MODULE_EDITOR::BrowseAndAdd3DShapeFile(), DIALOG_MODULE_BOARD_EDITOR::BrowseAndAdd3DShapeFile(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::BrowseAndSelectDocFile(), DIALOG_EXCHANGE_MODULE::BrowseAndSelectFootprint(), CVPCB_MAINFRAME::BuildLIBRARY_LISTBOX(), DIALOG_MODULE_MODULE_EDITOR::Cfg3DPath(), DIALOG_MODULE_BOARD_EDITOR::Cfg3DPath(), SCH_EDIT_FRAME::CheckAnnotate(), SCH_SCREEN::CheckComponentsToPartsLinks(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::copyPanelToOptions(), SCH_EDIT_FRAME::CreateArchiveLibrary(), PCB_BASE_EDIT_FRAME::CreateNewLibrary(), DIALOG_PLOT_SCHEMATIC::createPlotFileName(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), FOOTPRINT_EDIT_FRAME::DeleteModuleFromCurrentLibrary(), LIB_EDIT_FRAME::DeleteOnePart(), DIALOG_CONFIG_EQUFILES::DIALOG_CONFIG_EQUFILES(), DIALOG_EESCHEMA_CONFIG::DIALOG_EESCHEMA_CONFIG(), DIALOG_FP_LIB_TABLE::DIALOG_FP_LIB_TABLE(), DIALOG_MODULE_BOARD_EDITOR::DIALOG_MODULE_BOARD_EDITOR(), DIALOG_MODULE_MODULE_EDITOR::DIALOG_MODULE_MODULE_EDITOR(), DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_SYMBOL_LIB_TABLE::DIALOG_SYMBOL_LIB_TABLE(), LIB_VIEW_FRAME::DisplayLibInfos(), SCH_BASE_FRAME::DisplayListComponentsInLib(), PCB_EDIT_FRAME::doAutoSave(), DIALOG_MODULE_MODULE_EDITOR::Edit3DShapeFileName(), DIALOG_MODULE_BOARD_EDITOR::Edit3DShapeFileName(), SCH_EDIT_FRAME::EditComponentFieldText(), SCH_EDIT_FRAME::EditSheet(), PCB_EDIT_FRAME::Export_IDF3(), PCB_EDIT_FRAME::ExportToGenCAD(), 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(), LIB_EDIT_FRAME::GetCurPart(), FOOTPRINT_EDIT_FRAME::GetCurrentLib(), FOOTPRINT_EDIT_FRAME::getLibPath(), DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable(), DIALOG_BOM::getPluginFileName(), LIB_VIEW_FRAME::getSelectedAlias(), FP_THREAD_IFACE::GetTable(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::InitBuffers(), DIALOG_MODULE_MODULE_EDITOR::initModeditProperties(), DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties(), LIB_EDIT_FRAME::InstallConfigFrame(), SCH_EDIT_FRAME::InstallConfigFrame(), PCB_EDIT_FRAME::InstallNetlistFrame(), SCH_EDIT_FRAME::IsSearchCacheObsolete(), SCH_EDIT_FRAME::Load_Component(), SCH_EDIT_FRAME::LoadCmpToFootprintLinkFile(), DIALOG_BOM_EDITOR::LoadComponents(), CVPCB_MAINFRAME::LoadFootprintFiles(), SCH_EDIT_FRAME::LoadOneEEFile(), LIB_EDIT_FRAME::LoadOneLibraryPart(), LIB_EDIT_FRAME::LoadOneSymbol(), CVPCB_MAINFRAME::LoadProjectFile(), SCH_EDIT_FRAME::LoadProjectFile(), PCB_EDIT_FRAME::LoadProjectSettings(), DIALOG_DRC_CONTROL::makeValidFileNameReport(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_EESCHEMA_CONFIG::OnAddOrInsertLibClick(), DIALOG_EESCHEMA_CONFIG::OnAddOrInsertPath(), DIALOG_DRC_CONTROL::OnButtonBrowseRptFileClick(), LIB_EDIT_FRAME::OnCloseWindow(), CVPCB_MAINFRAME::OnEditFootprintLibraryTable(), SCH_BASE_FRAME::OnEditSymbolLibTable(), DIALOG_GENDRILL::OnGenReportFile(), DIALOG_CHOOSE_COMPONENT::OnInitDialog(), PCB_EDIT_FRAME::OnLeftClick(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnOKButtonClick(), DIALOG_NETLIST::OnOpenNetlistClick(), DIALOG_PLOT::OnOutputDirectoryBrowseClicked(), DIALOG_SVG_PRINT::OnOutputDirectoryBrowseClicked(), DIALOG_GENDRILL::OnOutputDirectoryBrowseClicked(), DIALOG_PLOT_SCHEMATIC::OnOutputDirectoryBrowseClicked(), DIALOG_GEN_MODULE_POSITION::OnOutputDirectoryBrowseClicked(), LIB_EDIT_FRAME::OnPlotCurrentComponent(), DIALOG_SYMBOL_REMAP::OnRemapSymbols(), SCH_EDIT_FRAME::OnRightClick(), DIALOG_BOM::OnRunPlugin(), DIALOG_NETLIST::OnSaveMessagesToFile(), SCH_EDIT_FRAME::OnSaveProject(), DIALOG_SPICE_MODEL::onSelectIcLib(), LIB_VIEW_FRAME::OnSelectSymbol(), SCH_EDIT_FRAME::OnSelectUnit(), DIALOG_SPICE_MODEL::onSemiSelectLib(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnTestChipName(), FOOTPRINT_EDIT_FRAME::OnUpdateSelectCurrentLib(), LIB_EDIT_FRAME::OnViewEntryDoc(), LIB_VIEW_FRAME::onViewSymbolDocument(), SCH_EDIT_FRAME::OpenProjectFiles(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_EDIT_FRAME::PasteListOfItems(), PCB_EDITOR_CONTROL::PlaceModule(), SCH_EDIT_FRAME::prepareForNetlist(), SCH_EDIT_FRAME::Process_Config(), PCB_EDIT_FRAME::Process_Config(), SCH_EDIT_FRAME::Process_Special_Functions(), SCH_EDIT_FRAME::ProcessCmpToFootprintLinkFile(), FOOTPRINT_EDIT_FRAME::ProcessPreferences(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), PCB_EDIT_FRAME::RecreateCmpFileFromBoard(), FOOTPRINT_VIEWER_FRAME::ReCreateFootprintList(), LIB_VIEW_FRAME::ReCreateHToolbar(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), LIB_VIEW_FRAME::ReCreateListCmp(), LIB_VIEW_FRAME::ReCreateListLib(), LIB_VIEW_FRAME::RedrawActiveWindow(), EDA_3D_VIEWER::ReloadRequest(), DIALOG_SYMBOL_REMAP::remapSymbolToLibTable(), SCH_EDIT_FRAME::RescueProject(), FOOTPRINT_EDIT_FRAME::restoreLastFootprint(), FOOTPRINT_EDIT_FRAME::retainLastFootprint(), SCH_SCREEN::Save(), LIB_EDIT_FRAME::SaveActiveLibrary(), SCH_EDIT_FRAME::SaveEEFile(), FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary(), LIB_EDIT_FRAME::SaveOneSymbol(), CVPCB_MAINFRAME::SaveProjectFile(), SCH_EDIT_FRAME::SaveProjectSettings(), PCB_EDIT_FRAME::SaveProjectSettings(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), SCH_BASE_FRAME::SelectComponentFromLibrary(), FOOTPRINT_VIEWER_FRAME::SelectCurrentFootprint(), PCB_BASE_FRAME::SelectLibrary(), SCH_BASE_FRAME::SelectLibraryFromList(), SCH_EDIT_FRAME::sendNetlist(), FOOTPRINT_VIEWER_FRAME::setCurFootprintName(), LIB_EDIT_FRAME::SetCurLib(), FOOTPRINT_VIEWER_FRAME::setCurNickname(), LIB_EDIT_FRAME::SetCurPart(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::SetInitCmp(), SIM_PLOT_FRAME::SIM_PLOT_FRAME(), EDA_3D_VIEWER::takeScreenshot(), DIALOG_ERC::TestErc(), DIALOG_SPICE_MODEL::updateFromFile(), SIM_PLOT_FRAME::updateNetlistExporter(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), CVPCB_MAINFRAME::UpdateTitle(), FOOTPRINT_EDIT_FRAME::updateTitle(), SCH_EDIT_FRAME::WriteNetListFile(), DIALOG_MODULE_BOARD_EDITOR::~DIALOG_MODULE_BOARD_EDITOR(), and DIALOG_MODULE_MODULE_EDITOR::~DIALOG_MODULE_MODULE_EDITOR().

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:144
void DIALOG_FP_PLUGIN_OPTIONS::saveColSizes ( )
inlineprivate

Definition at line 198 of file dialog_fp_plugin_options.cpp.

References col_width_option, col_width_value, and DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

Referenced by abort(), and onOKButtonClick().

199  {
200  col_width_option = m_grid->GetColSize( 0 );
201  col_width_value = m_grid->GetColSize( 1 );
202  }
static int col_width_option
static int col_width_value
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 41 of file kiway_holder.cpp.

References KIWAY_HOLDER::m_kiway, and name.

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

42 {
43 #if defined(DEBUG)
44  // offer a trap point for debugging most any window
45  wxASSERT( aDest );
46  if( !strcmp( typeid(aDest).name(), "DIALOG_EDIT_LIBENTRY_FIELDS_IN_LIB" ) )
47  {
48  int breakhere=1;
49  (void) breakhere;
50  }
51 #endif
52 
53  (void) aDest;
54 
55  m_kiway = aKiway;
56 }
KIWAY * m_kiway
Definition: kiway_player.h:85
const char * name
void DIALOG_FP_PLUGIN_OPTIONS::setRow ( int  aRow,
const wxArrayString &  aPair 
)
inlineprivate

Definition at line 170 of file dialog_fp_plugin_options.cpp.

References DIALOG_FP_PLUGIN_OPTIONS_BASE::m_grid.

Referenced by onMoveDown(), and onMoveUp().

171  {
172  const int col_count = m_grid->GetNumberCols();
173  for( int col = 0; col < col_count; ++col )
174  {
175  m_grid->SetCellValue( aRow, col, aPair[col] );
176  }
177  }
bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 139 of file dialog_shim.cpp.

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

Referenced by DisplayHotkeyList(), DIALOG_SHIM::EndQuasiModal(), InvokeDialogERC(), DIALOG_ANNOTATE::OnApplyClick(), DIALOG_SCH_FIND::OnCancel(), DIALOG_ANNOTATE::OnCancelClick(), DIALOG_DRC_CONTROL::OnLeftDClickClearance(), DIALOG_DRC_CONTROL::OnLeftDClickUnconnected(), DIALOG_DRC_CONTROL::OnPopupMenu(), DIALOG_EXCHANGE_MODULE::OnQuit(), POSITION_RELATIVE_TOOL::PositionRelative(), CVPCB_MAINFRAME::ReadNetListAndFpFiles(), DRC::ShowDRCDialog(), and DIALOG_SHIM::ShowQuasiModal().

140 {
141  bool ret;
142  const char* hash_key;
143 
144  if( m_hash_key.size() )
145  {
146  // a special case like EDA_LIST_DIALOG, which has multiple uses.
147  hash_key = m_hash_key.c_str();
148  }
149  else
150  {
151  hash_key = typeid(*this).name();
152  }
153 
154  // Show or hide the window. If hiding, save current position and size.
155  // If showing, use previous position and size.
156  if( show )
157  {
158  wxDialog::Raise(); // Needed on OS X and some other window managers (i.e. Unity)
159  ret = wxDialog::Show( show );
160 
161  // classname is key, returns a zeroed out default EDA_RECT if none existed before.
162  EDA_RECT r = class_map[ hash_key ];
163 
164  if( r.GetSize().x != 0 && r.GetSize().y != 0 )
165  SetSize( r.GetPosition().x, r.GetPosition().y, r.GetSize().x, r.GetSize().y, 0 );
166  }
167  else
168  {
169  // Save the dialog's position & size before hiding, using classname as key
170  EDA_RECT r( wxDialog::GetPosition(), wxDialog::GetSize() );
171  class_map[ hash_key ] = r;
172 
173  ret = wxDialog::Show( show );
174  }
175 
177 
178  return ret;
179 }
std::string m_hash_key
Definition: dialog_shim.h:128
void FixOSXCancelButtonIssue()
A ugly hack to fix an issue on OSX: when typing ctrl+c in a wxTextCtrl inside a dialog, it is closed instead of copying a text if a button with wxID_CANCEL is used in a wxStdDialogButtonSizer, when the dlg is created by wxFormBuilder: the label is &Cancel, and this accelerator key has priority to copy text standard accelerator, and the dlg is closed when trying to copy text this function do nothing on other platforms.
static RECT_MAP class_map
const wxPoint & GetPosition() const
Class EDA_RECT handles the component boundary box.
const wxSize & GetSize() const
int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 495 of file dialog_shim.cpp.

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

Referenced by LIB_EDIT_FRAME::DeleteOnePart(), SCH_EDIT_FRAME::EditComponent(), SCH_EDIT_FRAME::EditComponentFieldText(), LIB_EDIT_FRAME::EditField(), EDIT_TOOL::ExchangeFootprints(), PCB_EDIT_FRAME::InstallExchangeModuleFrame(), LIB_EDIT_FRAME::InstallFieldsEditorDialog(), SCH_EDIT_FRAME::InstallHierarchyFrame(), InvokeDialogCreateBOMEditor(), LIB_VIEW_FRAME::OnSelectSymbol(), and SCH_BASE_FRAME::SelectComponentFromLibrary().

496 {
497  // This is an exception safe way to zero a pointer before returning.
498  // Yes, even though DismissModal() clears this first normally, this is
499  // here in case there's an exception before the dialog is dismissed.
500  struct NULLER
501  {
502  void*& m_what;
503  NULLER( void*& aPtr ) : m_what( aPtr ) {}
504  ~NULLER() { m_what = 0; } // indeed, set it to NULL on destruction
505  } clear_this( (void*&) m_qmodal_loop );
506 
507  // release the mouse if it's currently captured as the window having it
508  // will be disabled when this dialog is shown -- but will still keep the
509  // capture making it impossible to do anything in the modal dialog itself
510  wxWindow* win = wxWindow::GetCapture();
511  if( win )
512  win->ReleaseMouse();
513 
514  // Get the optimal parent
515  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
516 
517  // Show the optimal parent
518  DBG( if( parent ) printf( "%s: optimal parent: %s\n", __func__, typeid(*parent).name() );)
519 
520  wxASSERT_MSG( !m_qmodal_parent_disabler,
521  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
522 
523  // quasi-modal: disable only my "optimal" parent
525 
526  Show( true );
527 
528  m_qmodal_showing = true;
529 
530  EVENT_LOOP event_loop;
531 
532  m_qmodal_loop = &event_loop;
533 
534  event_loop.Run();
535 
536  return GetReturnCode();
537 }
bool m_qmodal_showing
Definition: dialog_shim.h:132
EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:131
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:133
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:33
#define DBG(x)
Definition: fctsys.h:33

Member Data Documentation

wxButton* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_add_row
protectedinherited
wxButton* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_append_choice_button
protectedinherited
const wxString& DIALOG_FP_PLUGIN_OPTIONS::m_callers_options
private

Definition at line 137 of file dialog_fp_plugin_options.cpp.

Referenced by abort().

PROPERTIES DIALOG_FP_PLUGIN_OPTIONS::m_choices
private

Definition at line 139 of file dialog_fp_plugin_options.cpp.

Referenced by DIALOG_FP_PLUGIN_OPTIONS().

wxButton* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_delete_row
protectedinherited
std::string DIALOG_SHIM::m_hash_key
protectedinherited
wxHtmlWindow* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_html
protectedinherited
wxString DIALOG_FP_PLUGIN_OPTIONS::m_initial_help
private

Definition at line 140 of file dialog_fp_plugin_options.cpp.

Referenced by DIALOG_FP_PLUGIN_OPTIONS().

wxButton* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_move_down
protectedinherited
wxButton* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_move_up
protectedinherited
EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 131 of file dialog_shim.h.

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

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited
bool DIALOG_SHIM::m_qmodal_showing
protectedinherited
wxString* DIALOG_FP_PLUGIN_OPTIONS::m_result
private

Definition at line 138 of file dialog_fp_plugin_options.cpp.

wxStdDialogButtonSizer* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_sdbSizer1
protectedinherited
wxButton* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_sdbSizer1Cancel
protectedinherited
wxButton* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_sdbSizer1OK
protectedinherited
wxStaticText* DIALOG_FP_PLUGIN_OPTIONS_BASE::m_staticText1
protectedinherited

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