KiCad PCB EDA Suite
DIALOG_SPICE_MODEL Class Reference

#include <dialog_spice_model.h>

Inheritance diagram for DIALOG_SPICE_MODEL:
DIALOG_SPICE_MODEL_BASE DIALOG_SHIM KIWAY_HOLDER

Classes

struct  MODEL
 Models available in the selected library file. More...
 

Public Types

enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 DIALOG_SPICE_MODEL (wxWindow *aParent, SCH_SYMBOL &aSymbol, std::vector< SCH_FIELD > *aSchFields)
 
 DIALOG_SPICE_MODEL (wxWindow *aParent, SCH_SYMBOL &aSymbol, std::vector< LIB_FIELD > *aLibFields)
 
void SetInitialFocus (wxWindow *aWindow)
 Sets the window (usually a wxTextCtrl) that should be focused when the dialog is shown. More...
 
int ShowQuasiModal ()
 
void EndQuasiModal (int retCode)
 
bool IsQuasiModal () const
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
void SetPosition (const wxPoint &aNewPosition)
 Force the position of the dialog to a new position. More...
 
EDA_UNITS GetUserUnits () const
 
HOLDER_TYPE GetType () const
 
KIWAYKiway () const
 Return a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Return a reference to the PROJECT associated with this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 It is only used for debugging, since "this" is not a wxWindow*. More...
 

Static Public Member Functions

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

Protected Member Functions

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

Protected Attributes

wxNotebook * m_notebook
 
wxPanel * m_passive
 
wxStaticText * m_staticTextPtype
 
wxComboBox * m_pasType
 
wxStaticText * m_staticText62
 
wxStaticText * m_staticTextPvalue
 
wxTextCtrl * m_pasValue
 
wxStaticText * m_staticTextSpVal
 
wxStaticLine * m_staticline1
 
wxStaticText * m_staticText32
 
wxStaticText * m_staticText321
 
wxStaticText * m_staticTextF1
 
wxStaticText * m_staticTextF2
 
wxStaticText * m_staticTextF3
 
wxStaticText * m_staticTextP1
 
wxStaticText * m_staticTextP2
 
wxStaticText * m_staticTextP3
 
wxStaticText * m_staticTextN1
 
wxStaticText * m_staticTextN2
 
wxStaticText * m_staticTextN3
 
wxStaticText * m_staticTextU1
 
wxStaticText * m_staticTextU2
 
wxStaticText * m_staticTextU3
 
wxStaticText * m_staticTextM1
 
wxStaticText * m_staticTextM2
 
wxStaticText * m_staticTextM3
 
wxStaticText * m_staticTextK1
 
wxStaticText * m_staticTextK2
 
wxStaticText * m_staticTextK3
 
wxStaticText * m_staticTextMeg1
 
wxStaticText * m_staticTextMeg2
 
wxStaticText * m_staticTextMeg3
 
wxStaticText * m_staticTextG1
 
wxStaticText * m_staticTextG2
 
wxStaticText * m_staticTextG3
 
wxStaticText * m_staticTextT1
 
wxStaticText * m_staticTextT2
 
wxStaticText * m_staticTextT3
 
wxPanel * m_model
 
wxStaticText * m_staticText7
 
wxTextCtrl * m_modelLibrary
 
wxButton * m_selectLibrary
 
wxStaticText * m_staticText5
 
wxComboBox * m_modelName
 
wxStaticText * m_staticText4
 
wxComboBox * m_modelType
 
wxStaticText * m_staticTextNote
 
wxStaticText * m_stInfoNote
 
wxStyledTextCtrl * m_libraryContents
 
wxPanel * m_power
 
wxStaticText * m_staticText10
 
wxTextCtrl * m_genDc
 
wxStaticText * m_staticText113
 
wxStaticText * m_staticText11
 
wxTextCtrl * m_genAcMag
 
wxStaticText * m_staticText111
 
wxStaticText * m_staticText12
 
wxTextCtrl * m_genAcPhase
 
wxStaticText * m_staticText112
 
wxNotebook * m_powerNotebook
 
wxPanel * m_pwrPulse
 
wxStaticText * m_staticText13
 
wxTextCtrl * m_pulseInit
 
wxStaticText * m_staticText131
 
wxStaticText * m_staticText14
 
wxTextCtrl * m_pulseNominal
 
wxStaticText * m_staticText132
 
wxStaticText * m_staticText15
 
wxTextCtrl * m_pulseDelay
 
wxStaticText * m_staticText133
 
wxStaticText * m_staticText16
 
wxTextCtrl * m_pulseRise
 
wxStaticText * m_staticText134
 
wxStaticText * m_staticText17
 
wxTextCtrl * m_pulseFall
 
wxStaticText * m_staticText135
 
wxStaticText * m_staticText18
 
wxTextCtrl * m_pulseWidth
 
wxStaticText * m_staticText136
 
wxStaticText * m_staticText20
 
wxTextCtrl * m_pulsePeriod
 
wxStaticText * m_staticText137
 
wxPanel * m_pwrSin
 
wxStaticText * m_staticText21
 
wxTextCtrl * m_sinOffset
 
wxStaticText * m_staticText211
 
wxStaticText * m_staticText22
 
wxTextCtrl * m_sinAmplitude
 
wxStaticText * m_staticText212
 
wxStaticText * m_staticText23
 
wxTextCtrl * m_sinFreq
 
wxStaticText * m_staticText213
 
wxStaticText * m_staticText24
 
wxTextCtrl * m_sinDelay
 
wxStaticText * m_staticText214
 
wxStaticText * m_staticText25
 
wxTextCtrl * m_sinDampFactor
 
wxStaticText * m_staticText215
 
wxPanel * m_pwrExp
 
wxStaticText * m_staticText26
 
wxTextCtrl * m_expInit
 
wxStaticText * m_staticText261
 
wxStaticText * m_staticText27
 
wxTextCtrl * m_expPulsed
 
wxStaticText * m_staticText262
 
wxStaticText * m_staticText28
 
wxTextCtrl * m_expRiseDelay
 
wxStaticText * m_staticText263
 
wxStaticText * m_staticText29
 
wxTextCtrl * m_expRiseConst
 
wxStaticText * m_staticText264
 
wxStaticText * m_staticText30
 
wxTextCtrl * m_expFallDelay
 
wxStaticText * m_staticText265
 
wxStaticText * m_staticText31
 
wxTextCtrl * m_expFallConst
 
wxStaticText * m_staticText266
 
wxPanel * m_pwrPwl
 
wxStaticText * m_staticText34
 
wxTextCtrl * m_pwlTime
 
wxStaticText * m_staticText342
 
wxStaticText * m_staticText35
 
wxTextCtrl * m_pwlValue
 
wxStaticText * m_staticText343
 
wxButton * m_pwlAddButton
 
wxListCtrl * m_pwlValList
 
wxButton * m_pwlRemoveBtn
 
wxPanel * m_pwrFm
 
wxStaticText * m_staticText138
 
wxTextCtrl * m_fmOffset
 
wxStaticText * m_staticText1311
 
wxStaticText * m_staticText141
 
wxTextCtrl * m_fmAmplitude
 
wxStaticText * m_staticText1321
 
wxStaticText * m_staticText151
 
wxTextCtrl * m_fmFcarrier
 
wxStaticText * m_staticText1331
 
wxStaticText * m_staticText161
 
wxTextCtrl * m_fmModIndex
 
wxStaticText * m_staticText1341
 
wxStaticText * m_staticText171
 
wxTextCtrl * m_fmFsignal
 
wxStaticText * m_staticText1351
 
wxStaticText * m_staticText181
 
wxTextCtrl * m_fmPhaseC
 
wxStaticText * m_staticText1361
 
wxStaticText * m_staticText201
 
wxTextCtrl * m_fmPhaseS
 
wxStaticText * m_staticText1371
 
wxPanel * m_pwrAm
 
wxStaticText * m_staticText1381
 
wxTextCtrl * m_amAmplitude
 
wxStaticText * m_staticText13111
 
wxStaticText * m_staticText1411
 
wxTextCtrl * m_amOffset
 
wxStaticText * m_staticText13211
 
wxStaticText * m_staticText1511
 
wxTextCtrl * m_amModulatingFreq
 
wxStaticText * m_staticText13311
 
wxStaticText * m_staticText1611
 
wxTextCtrl * m_amCarrierFreq
 
wxStaticText * m_staticText13411
 
wxStaticText * m_staticText1711
 
wxTextCtrl * m_amSignalDelay
 
wxStaticText * m_staticText13511
 
wxStaticText * m_staticText1811
 
wxTextCtrl * m_amPhase
 
wxStaticText * m_staticText13611
 
wxPanel * m_pwrTransNoise
 
wxPanel * m_pwrRandom
 
wxStaticText * m_staticText27111
 
wxChoice * m_rnType
 
wxStaticText * m_staticText26711
 
wxTextCtrl * m_rnTS
 
wxStaticText * m_staticText262111
 
wxStaticText * m_staticText28111
 
wxTextCtrl * m_rnTD
 
wxStaticText * m_staticText263111
 
wxStaticText * m_rnParam1Text
 
wxTextCtrl * m_rnParam1
 
wxStaticText * m_rnParam2Text
 
wxTextCtrl * m_rnParam2
 
wxPanel * m_pwrExtData
 
wxRadioBox * m_pwrType
 
wxStaticLine * m_staticline2
 
wxCheckBox * m_disabled
 
wxCheckBox * m_nodeSeqCheck
 
wxTextCtrl * m_nodeSeqVal
 
wxStaticLine * m_staticline3
 
wxStdDialogButtonSizer * m_sdbSizer
 
wxButton * m_sdbSizerOK
 
wxButton * m_sdbSizerCancel
 
EDA_UNITS m_units
 
std::string m_hash_key
 
bool m_useCalculatedSize
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 
EDA_BASE_FRAMEm_parentFrame
 
std::vector< wxWindow * > m_tabOrder
 

Private Member Functions

bool parsePowerSource (const wxString &aModel)
 Parse a string describing a power source, so appropriate settings are checked in the dialog. More...
 
bool generatePowerSource (wxString &aTarget)
 Generate a string to describe power source parameters, basing on the current selection. More...
 
void loadLibrary (const wxString &aFilePath)
 Load a list of components (.model and .subckt) from a spice library file and add them to a combo box. More...
 
SCH_FIELDgetSchField (int aFieldType)
 Return or create a field in the edited schematic fields vector. More...
 
LIB_FIELDgetLibField (int aFieldType)
 
bool addPwlValue (const wxString &aTime, const wxString &aValue)
 Add a value to the PWL values list. More...
 
virtual bool TransferDataFromWindow () override
 
virtual bool TransferDataToWindow () override
 
virtual bool Validate () override
 
virtual void onInitDlg (wxInitDialogEvent &event) override
 
void Init ()
 Initialize the internal settings. More...
 
void showPinOrderNote (int aModelType)
 Display a note info about pin order. More...
 
void onSelectLibrary (wxCommandEvent &event) override
 
void onModelSelected (wxCommandEvent &event) override
 
void onPwlAdd (wxCommandEvent &event) override
 
void onPwlRemove (wxCommandEvent &event) override
 
void onRandomSourceType (wxCommandEvent &event) override
 
void onTypeSelected (wxCommandEvent &event) override
 Edited symbol. More...
 

Private Attributes

SCH_SYMBOLm_symbol
 Fields from the symbol properties dialog. More...
 
std::vector< SCH_FIELD > * m_schfields
 
std::vector< LIB_FIELD > * m_libfields
 
bool m_useSchFields
 Temporary field values. More...
 
std::map< int, wxString > m_fieldsTmp
 
std::map< wxString, MODELm_models
 Column identifiers for PWL power source value list. More...
 
long m_pwlTimeCol
 
long m_pwlValueCol
 
SPICE_VALIDATOR m_spiceValidator
 
SPICE_VALIDATOR m_spiceEmptyValidator
 
wxTextValidator m_notEmptyValidator
 

Detailed Description

Definition at line 40 of file dialog_spice_model.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 39 of file kiway_holder.h.

Constructor & Destructor Documentation

◆ DIALOG_SPICE_MODEL() [1/2]

DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL ( wxWindow *  aParent,
SCH_SYMBOL aSymbol,
std::vector< SCH_FIELD > *  aSchFields 
)

◆ DIALOG_SPICE_MODEL() [2/2]

DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL ( wxWindow *  aParent,
SCH_SYMBOL aSymbol,
std::vector< LIB_FIELD > *  aLibFields 
)

Definition at line 121 of file dialog_spice_model.cpp.

122  :
123  DIALOG_SPICE_MODEL_BASE( aParent ),
124  m_symbol( aSymbol ),
125  m_schfields( nullptr ),
126  m_libfields( aFields ),
127  m_useSchFields( false ),
128  m_spiceEmptyValidator( true ),
129  m_notEmptyValidator( wxFILTER_EMPTY )
130 {
131  Init();
132 }
void Init()
Initialize the internal settings.
std::vector< LIB_FIELD > * m_libfields
bool m_useSchFields
Temporary field values.
SCH_SYMBOL & m_symbol
Fields from the symbol properties dialog.
wxTextValidator m_notEmptyValidator
DIALOG_SPICE_MODEL_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Spice Model Editor"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(669, 861), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
std::vector< SCH_FIELD > * m_schfields
SPICE_VALIDATOR m_spiceEmptyValidator

References Init().

Member Function Documentation

◆ addPwlValue()

bool DIALOG_SPICE_MODEL::addPwlValue ( const wxString &  aTime,
const wxString &  aValue 
)
private

Add a value to the PWL values list.

Parameters
aTimeis the time value.
aValueis the source value at the given time.
Returns
True if request has completed successfully, false if the data is invalid.

Definition at line 984 of file dialog_spice_model.cpp.

985 {
986  // TODO execute validators
987  if( aTime.IsEmpty() || aValue.IsEmpty() )
988  return false;
989 
990  long idx = m_pwlValList->InsertItem( m_pwlTimeCol, aTime );
991  m_pwlValList->SetItem( idx, m_pwlValueCol, aValue );
992 
993  // There is no wxString::ToFloat, but we need to guarantee it fits in 4 bytes
994  double timeD;
995  float timeF;
996  m_pwlTime->GetValue().ToDouble( &timeD );
997  timeF = timeD;
998  long data;
999  std::memcpy( &data, &timeF, sizeof( timeF ) );
1000 
1001  // Store the time value, so the entries can be sorted
1002  m_pwlValList->SetItemData( idx, data );
1003 
1004  // Sort items by timestamp
1005  m_pwlValList->SortItems( comparePwlValues, -1 );
1006 
1007  return true;
1008 }
static int wxCALLBACK comparePwlValues(wxIntPtr aItem1, wxIntPtr aItem2, wxIntPtr WXUNUSED(aSortData))

References comparePwlValues(), DIALOG_SPICE_MODEL_BASE::m_pwlTime, m_pwlTimeCol, DIALOG_SPICE_MODEL_BASE::m_pwlValList, and m_pwlValueCol.

Referenced by onPwlAdd(), and parsePowerSource().

◆ Enable()

bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 307 of file dialog_shim.cpp.

308 {
309  // so we can do logging of this state change:
310  return wxDialog::Enable( enable );
311 }

◆ EndQuasiModal()

void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 447 of file dialog_shim.cpp.

448 {
449  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
450  // handle validation in the same way as other dialogs.
451  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
452  return;
453 
454  SetReturnCode( retCode );
455 
456  if( !IsQuasiModal() )
457  {
458  wxFAIL_MSG( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal"
459  "wasn't called" );
460  return;
461  }
462 
463  if( m_qmodal_loop )
464  {
465  if( m_qmodal_loop->IsRunning() )
466  m_qmodal_loop->Exit( 0 );
467  else
468  m_qmodal_loop->ScheduleExit( 0 );
469 
470  m_qmodal_loop = nullptr;
471  }
472 
474  m_qmodal_parent_disabler = nullptr;
475 
476  Show( false );
477 }
bool IsQuasiModal() const
Definition: dialog_shim.h:106
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:211
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:214

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

Referenced by NETLIST_DIALOG::OnAddGenerator(), DIALOG_SHIM::OnButton(), DIALOG_EDIT_SYMBOLS_LIBID::onCancel(), DIALOG_LIB_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_SYMBOL_PROPERTIES::OnCancelButtonClick(), DIALOG_LIB_EDIT_PIN_TABLE::OnClose(), DIALOG_CHOOSE_FOOTPRINT::OnCloseTimer(), DIALOG_SHIM::OnCloseWindow(), NETLIST_DIALOG::OnDelGenerator(), DIALOG_SYMBOL_PROPERTIES::OnEditLibrarySymbol(), DIALOG_SYMBOL_PROPERTIES::OnEditSymbol(), DIALOG_SYMBOL_PROPERTIES::OnExchangeSymbol(), PCB_ONE_LAYER_SELECTOR::OnLeftGridCellClick(), PCB_ONE_LAYER_SELECTOR::OnRightGridCellClick(), DIALOG_SYMBOL_PROPERTIES::OnUpdateSymbol(), DIALOG_CHOOSE_FOOTPRINT::OnUseBrowser(), DIALOG_PUSH_PAD_PROPERTIES::PadPropertiesAccept(), and DIALOG_SHIM::~DIALOG_SHIM().

◆ finishDialogSettings()

void DIALOG_SHIM::finishDialogSettings ( )
protectedinherited

In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls.

finishDialogSettings must be called from derived classes after all widgets have been initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at the end of TransferDataToWindow, or better yet, at end of a wxInitDialogEvent handler.

Definition at line 148 of file dialog_shim.cpp.

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

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

◆ generatePowerSource()

bool DIALOG_SPICE_MODEL::generatePowerSource ( wxString &  aTarget)
private

Generate a string to describe power source parameters, basing on the current selection.

If there are missing fields, it will not modify the target string.

Parameters
aTargetis the destination for the generated string.
Returns
True if the string was saved successfully.

DC / AC section

Transient section

Definition at line 657 of file dialog_spice_model.cpp.

658 {
659  wxString acdc, trans;
660  wxWindow* page = m_powerNotebook->GetCurrentPage();
661  bool useTrans = true; // shall we use the transient command part?
662 
663  // Variables for generic processing
664  bool genericProcessing = false;
665  unsigned int genericReqParamsCount = 0;
666  std::vector<wxTextCtrl*> genericControls;
667 
669  // If SPICE_VALUE can be properly constructed, then it is a valid value
670  try
671  {
672  if( !empty( m_genDc ) )
673  acdc += wxString::Format( "dc %s ",
674  SPICE_VALUE( m_genDc->GetValue() ).ToSpiceString() );
675  }
676  catch( ... )
677  {
678  DisplayError( this, wxT( "Invalid DC value" ) );
679  return false;
680  }
681 
682  try
683  {
684  if( !empty( m_genAcMag ) )
685  {
686  acdc += wxString::Format( "ac %s ",
687  SPICE_VALUE( m_genAcMag->GetValue() ).ToSpiceString() );
688 
689  if( !empty( m_genAcPhase ) )
690  acdc += wxString::Format( "%s ",
691  SPICE_VALUE( m_genAcPhase->GetValue() ).ToSpiceString() );
692  }
693  }
694  catch( ... )
695  {
696  DisplayError( this, wxT( "Invalid AC magnitude or phase" ) );
697  return false;
698  }
699 
701  if( page == m_pwrPulse )
702  {
703  if( !m_pwrPulse->Validate() )
704  return false;
705 
706  genericProcessing = true;
707  trans += "pulse(";
708  genericReqParamsCount = 2;
709  genericControls = { m_pulseInit, m_pulseNominal, m_pulseDelay,
711  }
712  else if( page == m_pwrSin )
713  {
714  if( !m_pwrSin->Validate() )
715  return false;
716 
717  genericProcessing = true;
718  trans += "sin(";
719  genericReqParamsCount = 2;
721  }
722  else if( page == m_pwrExp )
723  {
724  if( !m_pwrExp->Validate() )
725  return false;
726 
727  genericProcessing = true;
728  trans += "exp(";
729  genericReqParamsCount = 2;
730  genericControls = { m_expInit, m_expPulsed,
732  }
733  else if( page == m_pwrPwl )
734  {
735  if( m_pwlValList->GetItemCount() > 0 )
736  {
737  trans += "pwl(";
738 
739  for( int i = 0; i < m_pwlValList->GetItemCount(); ++i )
740  {
741  trans += wxString::Format( "%s %s ", m_pwlValList->GetItemText( i, m_pwlTimeCol ),
742  m_pwlValList->GetItemText( i, m_pwlValueCol ) );
743  }
744 
745  trans.Trim();
746  trans += ")";
747  }
748  }
749  else if( page == m_pwrFm )
750  {
751  if( !m_pwrFm->Validate() )
752  return false;
753 
754  genericProcessing = true;
755  trans += "sffm(";
756  genericReqParamsCount = 4;
759  }
760  else if( page == m_pwrAm )
761  {
762  if( !m_pwrAm->Validate() )
763  return false;
764 
765  genericProcessing = true;
766  trans += "am(";
767  genericReqParamsCount = 5;
770  }
771  else if( page == m_pwrRandom )
772  {
773  if( !m_pwrRandom->Validate() )
774  return false;
775 
776  // first parameter must be retrieved from drop-down list selection
777  trans += "trrandom(";
778  trans.Append( wxString::Format( wxT( "%i " ), ( m_rnType->GetSelection() + 1 ) ) );
779 
780  genericProcessing = true;
781  genericReqParamsCount = 4;
782  genericControls = { m_rnTS, m_rnTD, m_rnParam1, m_rnParam2 };
783  }
784  if( genericProcessing )
785  {
786  auto first_empty = std::find_if( genericControls.begin(), genericControls.end(), empty );
787  auto first_not_empty = std::find_if( genericControls.begin(), genericControls.end(),
788  []( const wxTextCtrl* c ){ return !empty( c ); } );
789 
790  if( std::distance( first_not_empty, genericControls.end() ) == 0 )
791  {
792  // all empty
793  useTrans = false;
794  }
795  else if( std::distance( genericControls.begin(),
796  first_empty ) < (int)genericReqParamsCount )
797  {
798  DisplayError( nullptr,
799  wxString::Format( _( "You need to specify at least the "
800  "first %d parameters for the transient source" ),
801  genericReqParamsCount ) );
802 
803  return false;
804  }
805  else if( std::find_if_not( first_empty, genericControls.end(),
806  empty ) != genericControls.end() )
807  {
808  DisplayError( nullptr, _( "You cannot leave interleaved empty fields "
809  "when defining a transient source" ) );
810  return false;
811  }
812  else
813  {
814  std::for_each( genericControls.begin(), first_empty, [&trans] ( wxTextCtrl* ctrl ) {
815  trans += wxString::Format( "%s ", ctrl->GetValue() );
816  } );
817  }
818 
819  trans.Trim();
820  trans += ")";
821  }
822 
823  aTarget = acdc;
824 
825  if( useTrans )
826  aTarget += trans;
827 
828  // Remove whitespaces from left and right side
829  aTarget.Trim( false );
830  aTarget.Trim( true );
831 
832  return true;
833 }
void DisplayError(wxWindow *aParent, const wxString &aText, int aDisplayTime)
Display an error or warning message box with aMessage.
Definition: confirm.cpp:252
static bool empty(const wxTextCtrl *aCtrl)
< Helper class to handle Spice way of expressing values (e.g. 10.5 Meg) Helper class to recognize Spi...
Definition: spice_value.h:34
#define _(s)
static float distance(const SFVEC2UI &a, const SFVEC2UI &b)
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200

References _, DisplayError(), distance(), empty(), Format(), DIALOG_SPICE_MODEL_BASE::m_amAmplitude, DIALOG_SPICE_MODEL_BASE::m_amCarrierFreq, DIALOG_SPICE_MODEL_BASE::m_amModulatingFreq, DIALOG_SPICE_MODEL_BASE::m_amOffset, DIALOG_SPICE_MODEL_BASE::m_amPhase, DIALOG_SPICE_MODEL_BASE::m_amSignalDelay, DIALOG_SPICE_MODEL_BASE::m_expFallConst, DIALOG_SPICE_MODEL_BASE::m_expFallDelay, DIALOG_SPICE_MODEL_BASE::m_expInit, DIALOG_SPICE_MODEL_BASE::m_expPulsed, DIALOG_SPICE_MODEL_BASE::m_expRiseConst, DIALOG_SPICE_MODEL_BASE::m_expRiseDelay, DIALOG_SPICE_MODEL_BASE::m_fmAmplitude, DIALOG_SPICE_MODEL_BASE::m_fmFcarrier, DIALOG_SPICE_MODEL_BASE::m_fmFsignal, DIALOG_SPICE_MODEL_BASE::m_fmModIndex, DIALOG_SPICE_MODEL_BASE::m_fmOffset, DIALOG_SPICE_MODEL_BASE::m_fmPhaseC, DIALOG_SPICE_MODEL_BASE::m_fmPhaseS, DIALOG_SPICE_MODEL_BASE::m_genAcMag, DIALOG_SPICE_MODEL_BASE::m_genAcPhase, DIALOG_SPICE_MODEL_BASE::m_genDc, DIALOG_SPICE_MODEL_BASE::m_powerNotebook, DIALOG_SPICE_MODEL_BASE::m_pulseDelay, DIALOG_SPICE_MODEL_BASE::m_pulseFall, DIALOG_SPICE_MODEL_BASE::m_pulseInit, DIALOG_SPICE_MODEL_BASE::m_pulseNominal, DIALOG_SPICE_MODEL_BASE::m_pulsePeriod, DIALOG_SPICE_MODEL_BASE::m_pulseRise, DIALOG_SPICE_MODEL_BASE::m_pulseWidth, m_pwlTimeCol, DIALOG_SPICE_MODEL_BASE::m_pwlValList, m_pwlValueCol, DIALOG_SPICE_MODEL_BASE::m_pwrAm, DIALOG_SPICE_MODEL_BASE::m_pwrExp, DIALOG_SPICE_MODEL_BASE::m_pwrFm, DIALOG_SPICE_MODEL_BASE::m_pwrPulse, DIALOG_SPICE_MODEL_BASE::m_pwrPwl, DIALOG_SPICE_MODEL_BASE::m_pwrRandom, DIALOG_SPICE_MODEL_BASE::m_pwrSin, DIALOG_SPICE_MODEL_BASE::m_rnParam1, DIALOG_SPICE_MODEL_BASE::m_rnParam2, DIALOG_SPICE_MODEL_BASE::m_rnTD, DIALOG_SPICE_MODEL_BASE::m_rnTS, DIALOG_SPICE_MODEL_BASE::m_rnType, DIALOG_SPICE_MODEL_BASE::m_sinAmplitude, DIALOG_SPICE_MODEL_BASE::m_sinDampFactor, DIALOG_SPICE_MODEL_BASE::m_sinDelay, DIALOG_SPICE_MODEL_BASE::m_sinFreq, and DIALOG_SPICE_MODEL_BASE::m_sinOffset.

Referenced by TransferDataFromWindow().

◆ getLibField()

LIB_FIELD & DIALOG_SPICE_MODEL::getLibField ( int  aFieldType)
private

Definition at line 959 of file dialog_spice_model.cpp.

960 {
961  const wxString& spiceField =
963 
964  auto fieldIt = std::find_if( m_libfields->begin(), m_libfields->end(),
965  [&]( const LIB_FIELD& f )
966  {
967  return f.GetName() == spiceField;
968  } );
969 
970  // Found one, so return it
971  if( fieldIt != m_libfields->end() )
972  return *fieldIt;
973 
974  // Create a new field with requested name
975  LIB_FIELD new_field( m_libfields->size() );
976  m_libfields->front().Copy( &new_field );
977  new_field.SetName( spiceField );
978 
979  m_libfields->push_back( new_field );
980  return m_libfields->back();
981 }
std::vector< LIB_FIELD > * m_libfields
Field object used in symbol libraries.
Definition: lib_field.h:59
static const wxString & GetSpiceFieldName(SPICE_FIELD aField)
Return a string used for a particular component field related to Spice simulation.

References NETLIST_EXPORTER_PSPICE::GetSpiceFieldName(), and m_libfields.

Referenced by TransferDataFromWindow().

◆ getSchField()

SCH_FIELD & DIALOG_SPICE_MODEL::getSchField ( int  aFieldType)
private

Return or create a field in the edited schematic fields vector.

Parameters
aFieldTypeis an SPICE_FIELD enum value.
Returns
Requested field.

Definition at line 938 of file dialog_spice_model.cpp.

939 {
940  const wxString& spiceField =
942 
943  auto fieldIt = std::find_if( m_schfields->begin(), m_schfields->end(),
944  [&]( const SCH_FIELD& f )
945  {
946  return f.GetName() == spiceField;
947  } );
948 
949  // Found one, so return it
950  if( fieldIt != m_schfields->end() )
951  return *fieldIt;
952 
953  // Create a new field with requested name
954  m_schfields->emplace_back( wxPoint(), m_schfields->size(), &m_symbol, spiceField );
955  return m_schfields->back();
956 }
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
static const wxString & GetSpiceFieldName(SPICE_FIELD aField)
Return a string used for a particular component field related to Spice simulation.
SCH_SYMBOL & m_symbol
Fields from the symbol properties dialog.
std::vector< SCH_FIELD > * m_schfields

References NETLIST_EXPORTER_PSPICE::GetSpiceFieldName(), m_schfields, and m_symbol.

Referenced by TransferDataFromWindow().

◆ GetType()

HOLDER_TYPE KIWAY_HOLDER::GetType ( ) const
inlineinherited

Definition at line 46 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_type.

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ GetUserUnits()

◆ horizPixelsFromDU()

int DIALOG_SHIM::horizPixelsFromDU ( int  x) const
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 166 of file dialog_shim.cpp.

167 {
168  wxSize sz( x, 0 );
169  return ConvertDialogToPixels( sz ).x;
170 }

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

◆ Init()

void DIALOG_SPICE_MODEL::Init ( )
private

Initialize the internal settings.

Definition at line 135 of file dialog_spice_model.cpp.

136 {
137  m_pasValue->SetValidator( m_spiceValidator );
138 
139  m_modelType->SetValidator( m_notEmptyValidator );
140  m_modelType->Clear();
141 
142  // Create a list of handled models
143  for( const auto& model : modelTypes )
144  m_modelType->Append( model.description );
145 
146  m_modelName->SetValidator( m_notEmptyValidator );
147 
148  m_genDc->SetValidator( m_spiceEmptyValidator );
149  m_genAcMag->SetValidator( m_spiceEmptyValidator );
150  m_genAcPhase->SetValidator( m_spiceEmptyValidator );
151 
152  m_pulseInit->SetValidator( m_spiceEmptyValidator );
153  m_pulseNominal->SetValidator( m_spiceEmptyValidator );
154  m_pulseDelay->SetValidator( m_spiceEmptyValidator );
155  m_pulseRise->SetValidator( m_spiceEmptyValidator );
156  m_pulseFall->SetValidator( m_spiceEmptyValidator );
157  m_pulseWidth->SetValidator( m_spiceEmptyValidator );
158  m_pulsePeriod->SetValidator( m_spiceEmptyValidator );
159 
160  m_sinOffset->SetValidator( m_spiceEmptyValidator );
161  m_sinAmplitude->SetValidator( m_spiceEmptyValidator );
162  m_sinFreq->SetValidator( m_spiceEmptyValidator );
163  m_sinDelay->SetValidator( m_spiceEmptyValidator );
164  m_sinDampFactor->SetValidator( m_spiceEmptyValidator );
165 
166  m_expInit->SetValidator( m_spiceEmptyValidator );
167  m_expPulsed->SetValidator( m_spiceEmptyValidator );
168  m_expRiseDelay->SetValidator( m_spiceEmptyValidator );
169  m_expRiseConst->SetValidator( m_spiceEmptyValidator );
170  m_expFallDelay->SetValidator( m_spiceEmptyValidator );
171  m_expFallConst->SetValidator( m_spiceEmptyValidator );
172 
173  m_fmOffset->SetValidator( m_spiceEmptyValidator );
174  m_fmAmplitude->SetValidator( m_spiceEmptyValidator );
175  m_fmFcarrier->SetValidator( m_spiceEmptyValidator );
176  m_fmModIndex->SetValidator( m_spiceEmptyValidator );
177  m_fmFsignal->SetValidator( m_spiceEmptyValidator );
178  m_fmPhaseC->SetValidator( m_spiceEmptyValidator );
179  m_fmPhaseS->SetValidator( m_spiceEmptyValidator );
180 
181  m_amAmplitude->SetValidator( m_spiceEmptyValidator );
182  m_amOffset->SetValidator( m_spiceEmptyValidator );
183  m_amModulatingFreq->SetValidator( m_spiceEmptyValidator );
184  m_amCarrierFreq->SetValidator( m_spiceEmptyValidator );
185  m_amSignalDelay->SetValidator( m_spiceEmptyValidator );
186  m_amPhase->SetValidator( m_spiceEmptyValidator );
187 
188  m_rnTS->SetValidator( m_spiceEmptyValidator );
189  m_rnTD->SetValidator( m_spiceEmptyValidator );
190  m_rnParam1->SetValidator( m_spiceEmptyValidator );
191  m_rnParam2->SetValidator( m_spiceEmptyValidator );
192 
193  m_pwlTimeCol = m_pwlValList->AppendColumn( "Time [s]", wxLIST_FORMAT_LEFT, 100 );
194  m_pwlValueCol = m_pwlValList->AppendColumn( "Value [V/A]", wxLIST_FORMAT_LEFT, 100 );
195 
196  m_sdbSizerOK->SetDefault();
197 
198  m_staticTextF1->SetLabel( wxS( "f" ) );
199  m_staticTextP1->SetLabel( wxS( "p" ) );
200  m_staticTextN1->SetLabel( wxS( "n" ) );
201  m_staticTextU1->SetLabel( wxS( "u" ) );
202  m_staticTextM1->SetLabel( wxS( "m" ) );
203  m_staticTextK1->SetLabel( wxS( "k" ) );
204  m_staticTextMeg1->SetLabel( wxS( "meg" ) );
205  m_staticTextG1->SetLabel( wxS( "g" ) );
206  m_staticTextT1->SetLabel( wxS( "t" ) );
207 
208  m_staticTextF2->SetLabel( wxS( "femto" ) );
209  m_staticTextP2->SetLabel( wxS( "pico" ) );
210  m_staticTextN2->SetLabel( wxS( "nano" ) );
211  m_staticTextU2->SetLabel( wxS( "micro" ) );
212  m_staticTextM2->SetLabel( wxS( "milli" ) );
213  m_staticTextK2->SetLabel( wxS( "kilo" ) );
214  m_staticTextMeg2->SetLabel( wxS( "mega" ) );
215  m_staticTextG2->SetLabel( wxS( "giga" ) );
216  m_staticTextT2->SetLabel( wxS( "terra" ) );
217 
218  m_staticTextF3->SetLabel( wxS( "1e-15" ) );
219  m_staticTextP3->SetLabel( wxS( "1e-12" ) );
220  m_staticTextN3->SetLabel( wxS( "1e-9" ) );
221  m_staticTextU3->SetLabel( wxS( "1e-6" ) );
222  m_staticTextM3->SetLabel( wxS( "1e-3" ) );
223  m_staticTextK3->SetLabel( wxS( "1e3" ) );
224  m_staticTextMeg3->SetLabel( wxS( "1e6" ) );
225  m_staticTextG3->SetLabel( wxS( "1e9" ) );
226  m_staticTextT3->SetLabel( wxS( "1e12" ) );
227 
228  // Hide pages that aren't fully implemented yet
229  // wxPanel::Hide() isn't enough on some platforms
230  m_powerNotebook->RemovePage( m_powerNotebook->FindPage( m_pwrTransNoise ) );
231  m_powerNotebook->RemovePage( m_powerNotebook->FindPage( m_pwrExtData ) );
232 }
SPICE_VALIDATOR m_spiceValidator
wxTextValidator m_notEmptyValidator
SPICE_VALIDATOR m_spiceEmptyValidator
static const std::vector< SPICE_MODEL_INFO > modelTypes

References DIALOG_SPICE_MODEL_BASE::m_amAmplitude, DIALOG_SPICE_MODEL_BASE::m_amCarrierFreq, DIALOG_SPICE_MODEL_BASE::m_amModulatingFreq, DIALOG_SPICE_MODEL_BASE::m_amOffset, DIALOG_SPICE_MODEL_BASE::m_amPhase, DIALOG_SPICE_MODEL_BASE::m_amSignalDelay, DIALOG_SPICE_MODEL_BASE::m_expFallConst, DIALOG_SPICE_MODEL_BASE::m_expFallDelay, DIALOG_SPICE_MODEL_BASE::m_expInit, DIALOG_SPICE_MODEL_BASE::m_expPulsed, DIALOG_SPICE_MODEL_BASE::m_expRiseConst, DIALOG_SPICE_MODEL_BASE::m_expRiseDelay, DIALOG_SPICE_MODEL_BASE::m_fmAmplitude, DIALOG_SPICE_MODEL_BASE::m_fmFcarrier, DIALOG_SPICE_MODEL_BASE::m_fmFsignal, DIALOG_SPICE_MODEL_BASE::m_fmModIndex, DIALOG_SPICE_MODEL_BASE::m_fmOffset, DIALOG_SPICE_MODEL_BASE::m_fmPhaseC, DIALOG_SPICE_MODEL_BASE::m_fmPhaseS, DIALOG_SPICE_MODEL_BASE::m_genAcMag, DIALOG_SPICE_MODEL_BASE::m_genAcPhase, DIALOG_SPICE_MODEL_BASE::m_genDc, DIALOG_SPICE_MODEL_BASE::m_modelName, DIALOG_SPICE_MODEL_BASE::m_modelType, m_notEmptyValidator, DIALOG_SPICE_MODEL_BASE::m_pasValue, DIALOG_SPICE_MODEL_BASE::m_powerNotebook, DIALOG_SPICE_MODEL_BASE::m_pulseDelay, DIALOG_SPICE_MODEL_BASE::m_pulseFall, DIALOG_SPICE_MODEL_BASE::m_pulseInit, DIALOG_SPICE_MODEL_BASE::m_pulseNominal, DIALOG_SPICE_MODEL_BASE::m_pulsePeriod, DIALOG_SPICE_MODEL_BASE::m_pulseRise, DIALOG_SPICE_MODEL_BASE::m_pulseWidth, m_pwlTimeCol, DIALOG_SPICE_MODEL_BASE::m_pwlValList, m_pwlValueCol, DIALOG_SPICE_MODEL_BASE::m_pwrExtData, DIALOG_SPICE_MODEL_BASE::m_pwrTransNoise, DIALOG_SPICE_MODEL_BASE::m_rnParam1, DIALOG_SPICE_MODEL_BASE::m_rnParam2, DIALOG_SPICE_MODEL_BASE::m_rnTD, DIALOG_SPICE_MODEL_BASE::m_rnTS, DIALOG_SPICE_MODEL_BASE::m_sdbSizerOK, DIALOG_SPICE_MODEL_BASE::m_sinAmplitude, DIALOG_SPICE_MODEL_BASE::m_sinDampFactor, DIALOG_SPICE_MODEL_BASE::m_sinDelay, DIALOG_SPICE_MODEL_BASE::m_sinFreq, DIALOG_SPICE_MODEL_BASE::m_sinOffset, m_spiceEmptyValidator, m_spiceValidator, DIALOG_SPICE_MODEL_BASE::m_staticTextF1, DIALOG_SPICE_MODEL_BASE::m_staticTextF2, DIALOG_SPICE_MODEL_BASE::m_staticTextF3, DIALOG_SPICE_MODEL_BASE::m_staticTextG1, DIALOG_SPICE_MODEL_BASE::m_staticTextG2, DIALOG_SPICE_MODEL_BASE::m_staticTextG3, DIALOG_SPICE_MODEL_BASE::m_staticTextK1, DIALOG_SPICE_MODEL_BASE::m_staticTextK2, DIALOG_SPICE_MODEL_BASE::m_staticTextK3, DIALOG_SPICE_MODEL_BASE::m_staticTextM1, DIALOG_SPICE_MODEL_BASE::m_staticTextM2, DIALOG_SPICE_MODEL_BASE::m_staticTextM3, DIALOG_SPICE_MODEL_BASE::m_staticTextMeg1, DIALOG_SPICE_MODEL_BASE::m_staticTextMeg2, DIALOG_SPICE_MODEL_BASE::m_staticTextMeg3, DIALOG_SPICE_MODEL_BASE::m_staticTextN1, DIALOG_SPICE_MODEL_BASE::m_staticTextN2, DIALOG_SPICE_MODEL_BASE::m_staticTextN3, DIALOG_SPICE_MODEL_BASE::m_staticTextP1, DIALOG_SPICE_MODEL_BASE::m_staticTextP2, DIALOG_SPICE_MODEL_BASE::m_staticTextP3, DIALOG_SPICE_MODEL_BASE::m_staticTextT1, DIALOG_SPICE_MODEL_BASE::m_staticTextT2, DIALOG_SPICE_MODEL_BASE::m_staticTextT3, DIALOG_SPICE_MODEL_BASE::m_staticTextU1, DIALOG_SPICE_MODEL_BASE::m_staticTextU2, DIALOG_SPICE_MODEL_BASE::m_staticTextU3, and modelTypes.

Referenced by DIALOG_SPICE_MODEL().

◆ IsCtrl()

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

Definition at line 124 of file dialog_shim.h.

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

◆ IsQuasiModal()

◆ IsShiftCtrl()

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

Definition at line 130 of file dialog_shim.h.

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

◆ Kiway()

KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

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

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 53 of file kiway_holder.h.

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

References KIWAY_HOLDER::m_kiway.

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

◆ loadLibrary()

void DIALOG_SPICE_MODEL::loadLibrary ( const wxString &  aFilePath)
private

Load a list of components (.model and .subckt) from a spice library file and add them to a combo box.

Parameters
aComboBoxis the target combo box
aFilePathis path to the library file

Definition at line 836 of file dialog_spice_model.cpp.

837 {
838  //First, expand env vars, if any
839  wxString libname = ExpandEnvVarSubstitutions( aFilePath, &Prj() );
840 
841  // Make path absolute, especially if it is relative to the project path
842  libname = Prj().AbsolutePath( libname );
843 
844  wxString curModel = m_modelName->GetValue();
845  m_models.clear();
846  wxFileName filePath( libname );
847  bool in_subckt = false; // flag indicating that the parser is inside a .subckt section
848 
849  if( !filePath.Exists() )
850  return;
851 
852  // Display the library contents
853  wxWindowUpdateLocker updateLock( this );
854 
855  m_libraryContents->SetReadOnly( false );
856  m_libraryContents->Clear();
857  wxTextFile file;
858  file.Open( filePath.GetFullPath() );
859  int line_nr = 0;
860 
861  // Stores the library content. It will be displayed after reading the full library
862  wxString fullText;
863 
864  // Process the file, looking for symbols.
865  while( !file.Eof() )
866  {
867  const wxString& line = line_nr == 0 ? file.GetFirstLine() : file.GetNextLine();
868  fullText << line << '\n';
869 
870  wxStringTokenizer tokenizer( line );
871 
872  while( tokenizer.HasMoreTokens() )
873  {
874  wxString token = tokenizer.GetNextToken().Lower();
875 
876  // some subckts contain .model clauses inside,
877  // skip them as they are a part of the subckt, not another model
878  if( token == ".model" && !in_subckt )
879  {
880  wxString name = tokenizer.GetNextToken();
881 
882  if( name.IsEmpty() )
883  break;
884 
885  token = tokenizer.GetNextToken();
886  SPICE_PRIMITIVE type = MODEL::parseModelType( token );
887 
888  if( type != SP_UNKNOWN )
889  m_models.emplace( name, MODEL( line_nr, type ) );
890  }
891  else if( token == ".subckt" )
892  {
893  wxASSERT( !in_subckt );
894  in_subckt = true;
895 
896  wxString name = tokenizer.GetNextToken();
897 
898  if( name.IsEmpty() )
899  break;
900 
901  m_models.emplace( name, MODEL( line_nr, SP_SUBCKT ) );
902  }
903  else if( token == ".ends" )
904  {
905  wxASSERT( in_subckt );
906  in_subckt = false;
907  }
908  }
909 
910  ++line_nr;
911  }
912 
913  // display the full library content:
914  m_libraryContents->AppendText( fullText );
915  m_libraryContents->SetReadOnly( true );
916 
917  wxArrayString modelsList;
918 
919  // Refresh the model name combobox values
920  m_modelName->Clear();
921 
922  for( const auto& model : m_models )
923  {
924  m_modelName->Append( model.first );
925  modelsList.Add( model.first );
926  }
927 
928  m_modelName->AutoComplete( modelsList );
929 
930  // Restore the previous value or if there is none - pick the first one from the loaded library
931  if( !curModel.IsEmpty() )
932  m_modelName->SetValue( curModel );
933  else if( m_modelName->GetCount() > 0 )
934  m_modelName->SetSelection( 0 );
935 }
static SPICE_PRIMITIVE parseModelType(const wxString &aValue)
const wxString ExpandEnvVarSubstitutions(const wxString &aString, PROJECT *aProject)
Replace any environment variable & text variable references with their values.
Definition: common.cpp:279
virtual const wxString AbsolutePath(const wxString &aFileName) const
Fix up aFileName if it is relative to the project's directory to be an absolute path and filename.
Definition: project.cpp:269
wxStyledTextCtrl * m_libraryContents
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
const char * name
Definition: DXF_plotter.cpp:59
std::map< wxString, MODEL > m_models
Column identifiers for PWL power source value list.

References PROJECT::AbsolutePath(), ExpandEnvVarSubstitutions(), DIALOG_SPICE_MODEL_BASE::m_libraryContents, DIALOG_SPICE_MODEL_BASE::m_modelName, m_models, MODEL, name, DIALOG_SPICE_MODEL::MODEL::parseModelType(), KIWAY_HOLDER::Prj(), SP_SUBCKT, and SP_UNKNOWN.

Referenced by onSelectLibrary(), and TransferDataToWindow().

◆ OnCharHook()

void DIALOG_SHIM::OnCharHook ( wxKeyEvent &  aEvt)
protectedvirtualinherited

Reimplemented in DIALOG_CHOOSE_SYMBOL, HK_PROMPT_DIALOG, and HTML_MESSAGE_BOX.

Definition at line 538 of file dialog_shim.cpp.

539 {
540  if( aEvt.GetKeyCode() == 'U' && aEvt.GetModifiers() == wxMOD_CONTROL )
541  {
542  if( m_parentFrame )
543  {
545  return;
546  }
547  }
548  // shift-return (Mac default) or Ctrl-Return (GTK) for OK
549  else if( aEvt.GetKeyCode() == WXK_RETURN && ( aEvt.ShiftDown() || aEvt.ControlDown() ) )
550  {
551  wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
552  return;
553  }
554  else if( aEvt.GetKeyCode() == WXK_TAB && !aEvt.ControlDown() )
555  {
556  wxWindow* currentWindow = wxWindow::FindFocus();
557  int currentIdx = -1;
558  int delta = aEvt.ShiftDown() ? -1 : 1;
559 
560  auto advance = [&]( int& idx )
561  {
562  // Wrap-around modulus
563  int size = m_tabOrder.size();
564  idx = ( ( idx + delta ) % size + size ) % size;
565  };
566 
567  for( size_t i = 0; i < m_tabOrder.size(); ++i )
568  {
569  if( m_tabOrder[i] == currentWindow )
570  {
571  currentIdx = (int) i;
572  break;
573  }
574  }
575 
576  if( currentIdx >= 0 )
577  {
578  advance( currentIdx );
579 
580  //todo: We don't currently have non-textentry dialog boxes but this will break if
581  // we add them.
582 #ifdef __APPLE__
583  while( dynamic_cast<wxTextEntry*>( m_tabOrder[ currentIdx ] ) == nullptr )
584  advance( currentIdx );
585 #endif
586 
587  m_tabOrder[ currentIdx ]->SetFocus();
588  return;
589  }
590  }
591 
592  aEvt.Skip();
593 }
std::vector< wxWindow * > m_tabOrder
Definition: dialog_shim.h:218
EDA_BASE_FRAME * m_parentFrame
Definition: dialog_shim.h:216
virtual void ToggleUserUnits()

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

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

◆ onInitDlg()

virtual void DIALOG_SPICE_MODEL::onInitDlg ( wxInitDialogEvent &  event)
inlineoverrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 106 of file dialog_spice_model.h.

107  {
108  // Call the default wxDialog handler of a wxInitDialogEvent
110 
111  // Now all widgets have the size fixed, call FinishDialogSettings
113  }
void finishDialogSettings()
In all dialogs, we must call the same functions to fix minimal dlg size, the default position and per...
virtual bool TransferDataToWindow() override

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

◆ onModelSelected()

void DIALOG_SPICE_MODEL::onModelSelected ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 1045 of file dialog_spice_model.cpp.

1046 {
1047  // autoselect the model type
1048  auto it = m_models.find( m_modelName->GetValue() );
1049 
1050  if( it != m_models.end() )
1051  {
1052  m_modelType->SetSelection( getModelTypeIdx( it->second.model ) );
1053 
1054  // scroll to the bottom, so the model definition is shown in the first line
1055  m_libraryContents->ShowPosition(
1056  m_libraryContents->XYToPosition( 0, m_libraryContents->GetNumberOfLines() ) );
1057  m_libraryContents->ShowPosition( m_libraryContents->XYToPosition( 0, it->second.line ) );
1058  }
1059  else
1060  {
1061  m_libraryContents->ShowPosition( 0 );
1062  }
1063 }
static int getModelTypeIdx(char aPrimitive)
wxStyledTextCtrl * m_libraryContents
std::map< wxString, MODEL > m_models
Column identifiers for PWL power source value list.

References getModelTypeIdx(), DIALOG_SPICE_MODEL_BASE::m_libraryContents, DIALOG_SPICE_MODEL_BASE::m_modelName, m_models, and DIALOG_SPICE_MODEL_BASE::m_modelType.

◆ OnPaint()

void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 354 of file dialog_shim.cpp.

355 {
356  if( m_firstPaintEvent )
357  {
359 
360  selectAllInTextCtrls( GetChildren() );
361 
364  else
365  KIPLATFORM::UI::ForceFocus( this ); // Focus the dialog itself
366 
367  m_firstPaintEvent = false;
368  }
369 
370  event.Skip();
371 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:209
bool m_firstPaintEvent
Definition: dialog_shim.h:208
void ForceFocus(wxWindow *aWindow)
Pass the current focus to the window.
Definition: gtk/ui.cpp:44
void FixupCancelButtonCmdKeyCollision(wxWindow *aWindow)
Definition: gtk/ui.cpp:71
static void selectAllInTextCtrls(wxWindowList &children)

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

Referenced by DIALOG_SHIM::DIALOG_SHIM().

◆ onPwlAdd()

void DIALOG_SPICE_MODEL::onPwlAdd ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 1074 of file dialog_spice_model.cpp.

1075 {
1076  addPwlValue( m_pwlTime->GetValue(), m_pwlValue->GetValue() );
1077 }
bool addPwlValue(const wxString &aTime, const wxString &aValue)
Add a value to the PWL values list.

References addPwlValue(), DIALOG_SPICE_MODEL_BASE::m_pwlTime, and DIALOG_SPICE_MODEL_BASE::m_pwlValue.

◆ onPwlRemove()

void DIALOG_SPICE_MODEL::onPwlRemove ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 1080 of file dialog_spice_model.cpp.

1081 {
1082  long idx = m_pwlValList->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
1083  m_pwlValList->DeleteItem( idx );
1084 }

References DIALOG_SPICE_MODEL_BASE::m_pwlValList.

◆ onRandomSourceType()

void DIALOG_SPICE_MODEL::onRandomSourceType ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 1087 of file dialog_spice_model.cpp.

1088 {
1089  switch( m_rnType->GetSelection() )
1090  {
1091  case TRRANDOM_UNIFORM:
1092  // uniform white noise
1093  m_rnParam1Text->SetLabel( _( "Range:" ) );
1094  m_rnParam2Text->SetLabel( _( "Offset:" ) );
1095  break;
1096 
1097  case TRRANDOM_GAUSSIAN:
1098  // Gaussian
1099  m_rnParam1Text->SetLabel( _( "Standard deviation:" ) );
1100  m_rnParam2Text->SetLabel( _( "Mean:" ) );
1101  break;
1102 
1103  case TRRANDOM_EXPONENTIAL:
1104  // exponential
1105  m_rnParam1Text->SetLabel( _( "Mean:" ) );
1106  m_rnParam2Text->SetLabel( _( "Offset:" ) );
1107  break;
1108 
1109  case TRRANDOM_POISSON:
1110  // Poisson
1111  m_rnParam1Text->SetLabel( _( "Lambda:" ) );
1112  m_rnParam2Text->SetLabel( _( "Offset:" ) );
1113  break;
1114 
1115  default:
1116  wxFAIL_MSG( _( "type of random generator for source is invalid" ) );
1117  break;
1118  }
1119 }
#define _(s)

References _, DIALOG_SPICE_MODEL_BASE::m_rnParam1Text, DIALOG_SPICE_MODEL_BASE::m_rnParam2Text, DIALOG_SPICE_MODEL_BASE::m_rnType, TRRANDOM_EXPONENTIAL, TRRANDOM_GAUSSIAN, TRRANDOM_POISSON, and TRRANDOM_UNIFORM.

Referenced by parsePowerSource().

◆ onSelectLibrary()

void DIALOG_SPICE_MODEL::onSelectLibrary ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 1011 of file dialog_spice_model.cpp.

1012 {
1013  //First, expand env vars, if any, in lib path
1014  wxString libname = ExpandEnvVarSubstitutions( m_modelLibrary->GetValue(), &Prj() );
1015 
1016  // Make path absolute, especially if it is relative to the project path
1017  libname = Prj().AbsolutePath( libname );
1018 
1019  wxString searchPath = wxFileName( libname ).GetPath();
1020 
1021  if( searchPath.IsEmpty() )
1022  searchPath = Prj().GetProjectPath();
1023 
1024  wxString wildcards = SpiceLibraryFileWildcard() + "|" + AllFilesWildcard();
1025  wxFileDialog openDlg( this, _( "Select library" ), searchPath, "", wildcards,
1026  wxFD_OPEN | wxFD_FILE_MUST_EXIST );
1027 
1028  if( openDlg.ShowModal() == wxID_CANCEL )
1029  return;
1030 
1031  wxFileName libPath( openDlg.GetPath() );
1032 
1033  // Try to convert the path to relative to project
1034  if( libPath.MakeRelativeTo( Prj().GetProjectPath() )
1035  && !libPath.GetFullPath().StartsWith( ".." ) )
1036  m_modelLibrary->SetValue( libPath.GetFullPath() );
1037  else
1038  m_modelLibrary->SetValue( openDlg.GetPath() );
1039 
1040  loadLibrary( openDlg.GetPath() );
1041  m_modelName->Popup();
1042 }
const wxString ExpandEnvVarSubstitutions(const wxString &aString, PROJECT *aProject)
Replace any environment variable & text variable references with their values.
Definition: common.cpp:279
virtual const wxString GetProjectPath() const
Return the full path of the project.
Definition: project.cpp:122
wxString AllFilesWildcard()
virtual const wxString AbsolutePath(const wxString &aFileName) const
Fix up aFileName if it is relative to the project's directory to be an absolute path and filename.
Definition: project.cpp:269
PROJECT & Prj() const
Return a reference to the PROJECT associated with this KIWAY.
#define _(s)
void loadLibrary(const wxString &aFilePath)
Load a list of components (.model and .subckt) from a spice library file and add them to a combo box.
wxString SpiceLibraryFileWildcard()

References _, PROJECT::AbsolutePath(), AllFilesWildcard(), ExpandEnvVarSubstitutions(), PROJECT::GetProjectPath(), loadLibrary(), DIALOG_SPICE_MODEL_BASE::m_modelLibrary, DIALOG_SPICE_MODEL_BASE::m_modelName, KIWAY_HOLDER::Prj(), and SpiceLibraryFileWildcard().

◆ onTypeSelected()

void DIALOG_SPICE_MODEL::onTypeSelected ( wxCommandEvent &  event)
overrideprivatevirtual

Edited symbol.

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 1066 of file dialog_spice_model.cpp.

1067 {
1068  int type = m_modelType->GetSelection();
1069  int primitive = type >= 0 ? modelTypes[type].type : SP_SUBCKT;
1070  showPinOrderNote( primitive );
1071 }
void showPinOrderNote(int aModelType)
Display a note info about pin order.
static const std::vector< SPICE_MODEL_INFO > modelTypes

References DIALOG_SPICE_MODEL_BASE::m_modelType, modelTypes, showPinOrderNote(), and SP_SUBCKT.

◆ parsePowerSource()

bool DIALOG_SPICE_MODEL::parsePowerSource ( const wxString &  aModel)
private

Parse a string describing a power source, so appropriate settings are checked in the dialog.

Parameters
aModelcontains the string to be parse (e.g. sin(0 1 10k))
Returns
True if the input string was parsed without errors.

Definition at line 477 of file dialog_spice_model.cpp.

478 {
479  if( aModel.IsEmpty() )
480  return false;
481 
482  wxStringTokenizer tokenizer( aModel, " ()" );
483  wxString tkn = tokenizer.GetNextToken().Lower();
484 
485  while( tokenizer.HasMoreTokens() )
486  {
487  // Variables used for generic values processing (filling out wxTextCtrls in sequence)
488  bool genericProcessing = false;
489  unsigned int genericReqParamsCount = 0;
490  std::vector<wxTextCtrl*> genericControls;
491 
492  if( tkn == "dc" )
493  {
494  // There might be an optional "dc" or "trans" directive, skip it
495  if( tkn == "dc" || tkn == "trans" )
496  tkn = tokenizer.GetNextToken().Lower();
497 
498  // DC value
499  try
500  {
501  m_genDc->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
502  }
503  catch( ... )
504  {
505  return false;
506  }
507  }
508  else if( tkn == "ac" )
509  {
510  // AC magnitude
511  try
512  {
513  tkn = tokenizer.GetNextToken().Lower();
514  m_genAcMag->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
515  }
516  catch( ... )
517  {
518  return false;
519  }
520 
521  // AC phase (optional)
522  try
523  {
524  tkn = tokenizer.GetNextToken().Lower();
525  m_genAcPhase->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
526  }
527  catch( ... )
528  {
529  continue; // perhaps another directive
530  }
531  }
532  else if( tkn == "pulse" )
533  {
534  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrPulse ) );
535 
536  genericProcessing = true;
537  genericReqParamsCount = 2;
538  genericControls = { m_pulseInit, m_pulseNominal, m_pulseDelay,
540  }
541  else if( tkn == "sin" )
542  {
543  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrSin ) );
544 
545  genericProcessing = true;
546  genericReqParamsCount = 2;
547  genericControls = { m_sinOffset, m_sinAmplitude, m_sinFreq, m_sinDelay,
548  m_sinDampFactor };
549  }
550  else if( tkn == "exp" )
551  {
552  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrExp ) );
553 
554  genericProcessing = true;
555  genericReqParamsCount = 2;
556  genericControls = { m_expInit, m_expPulsed,
558  }
559  else if( tkn == "pwl" )
560  {
561  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrPwl ) );
562 
563  try
564  {
565  while( tokenizer.HasMoreTokens() )
566  {
567  tkn = tokenizer.GetNextToken();
568  SPICE_VALUE time( tkn );
569 
570  tkn = tokenizer.GetNextToken();
571  SPICE_VALUE value( tkn );
572 
573  addPwlValue( time.ToSpiceString(), value.ToSpiceString() );
574  }
575  }
576  catch( ... )
577  {
578  return false;
579  }
580  }
581  else if( tkn == "sffm" )
582  {
583  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrFm ) );
584 
585  genericProcessing = true;
586  genericReqParamsCount = 4;
589  }
590  else if( tkn == "am" )
591  {
592  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrAm ) );
593 
594  genericProcessing = true;
595  genericReqParamsCount = 5;
598  }
599  else if( tkn == "trrandom" )
600  {
601  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrRandom ) );
602 
603  // first token will configure drop-down list
604  if( !tokenizer.HasMoreTokens() )
605  return false;
606 
607  tkn = tokenizer.GetNextToken().Lower();
608  long type;
609  if( !tkn.ToLong( &type ) )
610  return false;
611 
612  m_rnType->SetSelection( type - 1 );
613  wxCommandEvent dummy;
615 
616  // remaining parameters can be handled in generic way
617  genericProcessing = true;
618  genericReqParamsCount = 4;
619  genericControls = { m_rnTS, m_rnTD, m_rnParam1, m_rnParam2 };
620  }
621  else
622  {
623  // Unhandled power source type
624  wxASSERT_MSG( false, "Unhandled power source type" );
625  return false;
626  }
627 
628  if( genericProcessing )
629  {
630  try
631  {
632  for( unsigned int i = 0; i < genericControls.size(); ++i )
633  {
634  // If there are no more tokens, let's check if we got at least required fields
635  if( !tokenizer.HasMoreTokens() )
636  return ( i >= genericReqParamsCount );
637 
638  tkn = tokenizer.GetNextToken().Lower();
639  genericControls[i]->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
640  }
641  }
642  catch( ... )
643  {
644  return false;
645  }
646  }
647 
648  // Get the next token now, so if any of the branches catches an exception, try to
649  // process it in another branch
650  tkn = tokenizer.GetNextToken().Lower();
651  }
652 
653  return true;
654 }
bool addPwlValue(const wxString &aTime, const wxString &aValue)
Add a value to the PWL values list.
static LIB_SYMBOL * dummy()
Used to draw a dummy shape when a LIB_SYMBOL is not found in library.
Definition: sch_symbol.cpp:71
void onRandomSourceType(wxCommandEvent &event) override
< Helper class to handle Spice way of expressing values (e.g. 10.5 Meg) Helper class to recognize Spi...
Definition: spice_value.h:34

References addPwlValue(), dummy(), DIALOG_SPICE_MODEL_BASE::m_amAmplitude, DIALOG_SPICE_MODEL_BASE::m_amCarrierFreq, DIALOG_SPICE_MODEL_BASE::m_amModulatingFreq, DIALOG_SPICE_MODEL_BASE::m_amOffset, DIALOG_SPICE_MODEL_BASE::m_amPhase, DIALOG_SPICE_MODEL_BASE::m_amSignalDelay, DIALOG_SPICE_MODEL_BASE::m_expFallConst, DIALOG_SPICE_MODEL_BASE::m_expFallDelay, DIALOG_SPICE_MODEL_BASE::m_expInit, DIALOG_SPICE_MODEL_BASE::m_expPulsed, DIALOG_SPICE_MODEL_BASE::m_expRiseConst, DIALOG_SPICE_MODEL_BASE::m_expRiseDelay, DIALOG_SPICE_MODEL_BASE::m_fmAmplitude, DIALOG_SPICE_MODEL_BASE::m_fmFcarrier, DIALOG_SPICE_MODEL_BASE::m_fmFsignal, DIALOG_SPICE_MODEL_BASE::m_fmModIndex, DIALOG_SPICE_MODEL_BASE::m_fmOffset, DIALOG_SPICE_MODEL_BASE::m_fmPhaseC, DIALOG_SPICE_MODEL_BASE::m_fmPhaseS, DIALOG_SPICE_MODEL_BASE::m_genAcMag, DIALOG_SPICE_MODEL_BASE::m_genAcPhase, DIALOG_SPICE_MODEL_BASE::m_genDc, DIALOG_SPICE_MODEL_BASE::m_powerNotebook, DIALOG_SPICE_MODEL_BASE::m_pulseDelay, DIALOG_SPICE_MODEL_BASE::m_pulseFall, DIALOG_SPICE_MODEL_BASE::m_pulseInit, DIALOG_SPICE_MODEL_BASE::m_pulseNominal, DIALOG_SPICE_MODEL_BASE::m_pulsePeriod, DIALOG_SPICE_MODEL_BASE::m_pulseRise, DIALOG_SPICE_MODEL_BASE::m_pulseWidth, DIALOG_SPICE_MODEL_BASE::m_pwrAm, DIALOG_SPICE_MODEL_BASE::m_pwrExp, DIALOG_SPICE_MODEL_BASE::m_pwrFm, DIALOG_SPICE_MODEL_BASE::m_pwrPulse, DIALOG_SPICE_MODEL_BASE::m_pwrPwl, DIALOG_SPICE_MODEL_BASE::m_pwrRandom, DIALOG_SPICE_MODEL_BASE::m_pwrSin, DIALOG_SPICE_MODEL_BASE::m_rnParam1, DIALOG_SPICE_MODEL_BASE::m_rnParam2, DIALOG_SPICE_MODEL_BASE::m_rnTD, DIALOG_SPICE_MODEL_BASE::m_rnTS, DIALOG_SPICE_MODEL_BASE::m_rnType, DIALOG_SPICE_MODEL_BASE::m_sinAmplitude, DIALOG_SPICE_MODEL_BASE::m_sinDampFactor, DIALOG_SPICE_MODEL_BASE::m_sinDelay, DIALOG_SPICE_MODEL_BASE::m_sinFreq, DIALOG_SPICE_MODEL_BASE::m_sinOffset, onRandomSourceType(), and SPICE_VALUE::ToSpiceString().

Referenced by TransferDataToWindow().

◆ Prj()

PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

Return 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
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:189

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

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

◆ resetSize()

void DIALOG_SHIM::resetSize ( )
protectedinherited

Clear the existing dialog size and position.

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

Definition at line 282 of file dialog_shim.cpp.

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

References class_map, and DIALOG_SHIM::m_hash_key.

Referenced by DIALOG_LIB_SYMBOL_PROPERTIES::DIALOG_LIB_SYMBOL_PROPERTIES().

◆ SetInitialFocus()

void DIALOG_SHIM::SetInitialFocus ( wxWindow *  aWindow)
inlineinherited

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

Definition at line 97 of file dialog_shim.h.

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

References DIALOG_SHIM::m_initialFocusTarget.

Referenced by DIALOG_BOM::DIALOG_BOM(), DIALOG_CHOOSE_FOOTPRINT::DIALOG_CHOOSE_FOOTPRINT(), DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL(), DIALOG_CONFIGURE_PATHS::DIALOG_CONFIGURE_PATHS(), DIALOG_FIND::DIALOG_FIND(), DIALOG_FOOTPRINT_PROPERTIES::DIALOG_FOOTPRINT_PROPERTIES(), DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR::DIALOG_FOOTPRINT_PROPERTIES_FP_EDITOR(), DIALOG_FP_PLUGIN_OPTIONS::DIALOG_FP_PLUGIN_OPTIONS(), DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES(), DIALOG_GRID_SETTINGS::DIALOG_GRID_SETTINGS(), DIALOG_GROUP_PROPERTIES::DIALOG_GROUP_PROPERTIES(), DIALOG_IMPORT_GFX::DIALOG_IMPORT_GFX(), DIALOG_INSPECTION_REPORTER::DIALOG_INSPECTION_REPORTER(), DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS(), 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_LINE_WIRE_BUS_PROPERTIES::DIALOG_LINE_WIRE_BUS_PROPERTIES(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PIN_PROPERTIES::DIALOG_PIN_PROPERTIES(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_SCH_FIND::DIALOG_SCH_FIND(), DIALOG_SHEET_PIN_PROPERTIES::DIALOG_SHEET_PIN_PROPERTIES(), DIALOG_SYMBOL_FIELDS_TABLE::DIALOG_SYMBOL_FIELDS_TABLE(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), EDA_VIEW_SWITCHER::EDA_VIEW_SWITCHER(), HK_PROMPT_DIALOG::HK_PROMPT_DIALOG(), DIALOG_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(), SYMBOL_EDIT_FRAME::saveSymbolAs(), DIALOG_RULE_AREA_PROPERTIES::TransferDataToWindow(), DIALOG_NON_COPPER_ZONES_EDITOR::TransferDataToWindow(), DIALOG_COPPER_ZONE::TransferDataToWindow(), and WX_TEXT_ENTRY_DIALOG::WX_TEXT_ENTRY_DIALOG().

◆ SetKiway()

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

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

"this" is a KIWAY_HOLDER mix-in.

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

Definition at line 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:75
const char * name
Definition: DXF_plotter.cpp:59

References KIWAY_HOLDER::m_kiway, and name.

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

◆ SetPosition()

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

Force the position of the dialog to a new position.

Parameters
aNewPositionis the new forced position

Definition at line 187 of file dialog_shim.cpp.

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

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

Referenced by DIALOG_SCH_FIND::DIALOG_SCH_FIND(), and PCB_BASE_FRAME::SelectOneLayer().

◆ setSizeInDU()

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

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

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

Definition at line 159 of file dialog_shim.cpp.

160 {
161  wxSize sz( x, y );
162  SetSize( ConvertDialogToPixels( sz ) );
163 }

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

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

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

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

◆ showPinOrderNote()

void DIALOG_SPICE_MODEL::showPinOrderNote ( int  aModelType)
private

Display a note info about pin order.

Definition at line 440 of file dialog_spice_model.cpp.

441 {
442  // Display a note info about pin order, according to aModelType
443  wxString msg;
444 
445  msg = _( "Symbol pin numbering don't always match the required SPICE pin order\n"
446  "Check the symbol and use \"Alternate node sequence\" to reorder the pins"
447  ", if necessary" );
448 
449  msg += '\n';
450 
451  switch( aModelType )
452  {
453  case SP_DIODE:
454  msg += _( "For a Diode, pin order is anode, cathode" );
455  break;
456 
457  case SP_BJT:
458  msg += _( "For a BJT, pin order is collector, base, emitter, substrate (optional)" );
459  break;
460 
461  case SP_MOSFET:
462  msg += _( "For a MOSFET, pin order is drain, gate, source" );
463  break;
464 
465  case SP_JFET:
466  msg += _( "For a JFET, pin order is drain, gate, source" );
467  break;
468 
469  default:
470  break;
471  }
472 
473  m_stInfoNote->SetLabel( msg );
474 }
#define _(s)

References _, DIALOG_SPICE_MODEL_BASE::m_stInfoNote, SP_BJT, SP_DIODE, SP_JFET, and SP_MOSFET.

Referenced by onTypeSelected(), and TransferDataToWindow().

◆ ShowQuasiModal()

int DIALOG_SHIM::ShowQuasiModal ( )
inherited

Definition at line 397 of file dialog_shim.cpp.

398 {
399  // This is an exception safe way to zero a pointer before returning.
400  // Yes, even though DismissModal() clears this first normally, this is
401  // here in case there's an exception before the dialog is dismissed.
402  struct NULLER
403  {
404  void*& m_what;
405  NULLER( void*& aPtr ) : m_what( aPtr ) {}
406  ~NULLER() { m_what = nullptr; } // indeed, set it to NULL on destruction
407  } clear_this( (void*&) m_qmodal_loop );
408 
409  // release the mouse if it's currently captured as the window having it
410  // will be disabled when this dialog is shown -- but will still keep the
411  // capture making it impossible to do anything in the modal dialog itself
412  wxWindow* win = wxWindow::GetCapture();
413  if( win )
414  win->ReleaseMouse();
415 
416  // Get the optimal parent
417  wxWindow* parent = GetParentForModalDialog( GetParent(), GetWindowStyle() );
418 
419  wxASSERT_MSG( !m_qmodal_parent_disabler,
420  wxT( "Caller using ShowQuasiModal() twice on same window?" ) );
421 
422  // quasi-modal: disable only my "optimal" parent
424 
425  // Apple in its infinite wisdom will raise a disabled window before even passing
426  // us the event, so we have no way to stop it. Instead, we must set an order on
427  // the windows so that the quasi-modal will be pushed in front of the disabled
428  // window when it is raised.
430 
431  Show( true );
432 
433  m_qmodal_showing = true;
434 
435  WX_EVENT_LOOP event_loop;
436 
437  m_qmodal_loop = &event_loop;
438 
439  event_loop.Run();
440 
441  m_qmodal_showing = false;
442 
443  return GetReturnCode();
444 }
bool m_qmodal_showing
Definition: dialog_shim.h:213
#define WX_EVENT_LOOP
Definition: kiway_player.h:41
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:211
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:214
Toggle a window's "enable" status to disabled, then enabled on destruction.
Definition: dialog_shim.cpp:42
void ReparentQuasiModal(wxNonOwnedWindow *aWindow)
Move a window's parent to be the top-level window and force the window to be on top.
Definition: gtk/ui.cpp:65

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

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

◆ TransferDataFromWindow()

bool DIALOG_SPICE_MODEL::TransferDataFromWindow ( )
overrideprivatevirtual

Definition at line 235 of file dialog_spice_model.cpp.

236 {
237  if( !DIALOG_SPICE_MODEL_BASE::TransferDataFromWindow() )
238  return false;
239 
240  wxWindow* page = m_notebook->GetCurrentPage();
241 
242  // Passive
243  if( page == m_passive )
244  {
245  if( !m_disabled->GetValue() && !m_passive->Validate() )
246  return false;
247 
248  switch( m_pasType->GetSelection() )
249  {
250  case 0: m_fieldsTmp[SF_PRIMITIVE] = (char) SP_RESISTOR; break;
251  case 1: m_fieldsTmp[SF_PRIMITIVE] = (char) SP_CAPACITOR; break;
252  case 2: m_fieldsTmp[SF_PRIMITIVE] = (char) SP_INDUCTOR; break;
253 
254  default:
255  wxASSERT_MSG( false, "Unhandled passive type" );
256  return false;
257  break;
258  }
259 
260  m_fieldsTmp[SF_MODEL] = m_pasValue->GetValue();
261  }
262  else if( page == m_model ) // Model
263  {
264  if( !m_model->Validate() )
265  return false;
266 
267  int modelIdx = m_modelType->GetSelection();
268 
269  if( modelIdx > 0 && modelIdx < (int)modelTypes.size() )
270  m_fieldsTmp[SF_PRIMITIVE] = static_cast<char>( modelTypes[modelIdx].type );
271 
272  m_fieldsTmp[SF_MODEL] = m_modelName->GetValue();
273 
274  if( !empty( m_modelLibrary ) )
275  m_fieldsTmp[SF_LIB_FILE] = m_modelLibrary->GetValue();
276  }
277  else if( page == m_power ) // Power source
278  {
279  wxString model;
280 
281  if( !generatePowerSource( model ) )
282  return false;
283 
284  m_fieldsTmp[SF_PRIMITIVE] = (char)( m_pwrType->GetSelection() ? SP_ISOURCE : SP_VSOURCE );
285  m_fieldsTmp[SF_MODEL] = model;
286  }
287  else
288  {
289  wxASSERT_MSG( false, "Unhandled model type" );
290  return false;
291  }
292 
293  m_fieldsTmp[SF_ENABLED] = !m_disabled->GetValue() ? "Y" : "N"; // note bool inversion
294  m_fieldsTmp[SF_NODE_SEQUENCE] = m_nodeSeqCheck->IsChecked() ? m_nodeSeqVal->GetValue() : "";
295 
296  // Apply the settings
297  for( int i = 0; i < SF_END; ++i )
298  {
299  if( m_fieldsTmp.count( (SPICE_FIELD) i ) > 0 && !m_fieldsTmp.at( i ).IsEmpty() )
300  {
301  if( m_useSchFields )
302  getSchField( i ).SetText( m_fieldsTmp[i] );
303  else
304  getLibField( i ).SetText( m_fieldsTmp[i] );
305  }
306  else
307  {
308  // Erase empty fields (having empty fields causes a warning in the properties dialog)
309  const wxString& spiceField =
311 
312  if( m_useSchFields )
313  {
314  m_schfields->erase( std::remove_if( m_schfields->begin(), m_schfields->end(),
315  [&]( const SCH_FIELD& f )
316  {
317  return f.GetName() == spiceField;
318  } ),
319  m_schfields->end() );
320  }
321  else
322  {
323  m_libfields->erase( std::remove_if( m_libfields->begin(), m_libfields->end(),
324  [&]( const LIB_FIELD& f )
325  {
326  return f.GetName() == spiceField;
327  } ),
328  m_libfields->end() );
329  }
330  }
331  }
332 
333  return true;
334 }
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
std::vector< LIB_FIELD > * m_libfields
bool m_useSchFields
Temporary field values.
Field object used in symbol libraries.
Definition: lib_field.h:59
static const wxString & GetSpiceFieldName(SPICE_FIELD aField)
Return a string used for a particular component field related to Spice simulation.
LIB_FIELD & getLibField(int aFieldType)
static bool empty(const wxTextCtrl *aCtrl)
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:114
SCH_FIELD & getSchField(int aFieldType)
Return or create a field in the edited schematic fields vector.
bool generatePowerSource(wxString &aTarget)
Generate a string to describe power source parameters, basing on the current selection.
std::map< int, wxString > m_fieldsTmp
std::vector< SCH_FIELD > * m_schfields
static const std::vector< SPICE_MODEL_INFO > modelTypes

References empty(), generatePowerSource(), getLibField(), getSchField(), NETLIST_EXPORTER_PSPICE::GetSpiceFieldName(), DIALOG_SPICE_MODEL_BASE::m_disabled, m_fieldsTmp, m_libfields, DIALOG_SPICE_MODEL_BASE::m_model, DIALOG_SPICE_MODEL_BASE::m_modelLibrary, DIALOG_SPICE_MODEL_BASE::m_modelName, DIALOG_SPICE_MODEL_BASE::m_modelType, DIALOG_SPICE_MODEL_BASE::m_nodeSeqCheck, DIALOG_SPICE_MODEL_BASE::m_nodeSeqVal, DIALOG_SPICE_MODEL_BASE::m_notebook, DIALOG_SPICE_MODEL_BASE::m_passive, DIALOG_SPICE_MODEL_BASE::m_pasType, DIALOG_SPICE_MODEL_BASE::m_pasValue, DIALOG_SPICE_MODEL_BASE::m_power, DIALOG_SPICE_MODEL_BASE::m_pwrType, m_schfields, m_useSchFields, modelTypes, EDA_TEXT::SetText(), SF_ENABLED, SF_END, SF_LIB_FILE, SF_MODEL, SF_NODE_SEQUENCE, SF_PRIMITIVE, SP_CAPACITOR, SP_INDUCTOR, SP_ISOURCE, SP_RESISTOR, and SP_VSOURCE.

◆ TransferDataToWindow()

bool DIALOG_SPICE_MODEL::TransferDataToWindow ( )
overrideprivatevirtual

Definition at line 337 of file dialog_spice_model.cpp.

338 {
339  const auto& spiceFields = NETLIST_EXPORTER_PSPICE::GetSpiceFields();
340 
341  // Fill out the working buffer
342  for( unsigned int idx = 0; idx < spiceFields.size(); ++idx )
343  {
344  const wxString& spiceField = spiceFields[idx];
345 
347  (SPICE_FIELD ) idx, &m_symbol,
349 
350  // Do not modify the existing value, just add missing fields with default values
351  if( m_useSchFields && m_schfields )
352  {
353  for( const auto& field : *m_schfields )
354  {
355  if( field.GetName() == spiceField && !field.GetText().IsEmpty() )
356  {
357  m_fieldsTmp[idx] = field.GetText();
358  break;
359  }
360  }
361  }
362  else if( m_libfields )
363  {
364  // TODO: There must be a good way to template out these repetitive calls
365  for( const LIB_FIELD& field : *m_libfields )
366  {
367  if( field.GetName() == spiceField && !field.GetText().IsEmpty() )
368  {
369  m_fieldsTmp[idx] = field.GetText();
370  break;
371  }
372  }
373  }
374  }
375 
376  // Analyze the symbol fields to fill out the dialog.
377  unsigned int primitive = toupper( m_fieldsTmp[SF_PRIMITIVE][0] );
378 
379  switch( primitive )
380  {
381  case SP_RESISTOR:
382  case SP_CAPACITOR:
383  case SP_INDUCTOR:
384  m_notebook->SetSelection( m_notebook->FindPage( m_passive ) );
385  m_pasType->SetSelection( primitive == SP_RESISTOR ? 0
386  : primitive == SP_CAPACITOR ? 1
387  : primitive == SP_INDUCTOR ? 2
388  : -1 );
389  m_pasValue->SetValue( m_fieldsTmp[SF_MODEL] );
390  break;
391 
392  case SP_DIODE:
393  case SP_BJT:
394  case SP_MOSFET:
395  case SP_JFET:
396  case SP_SUBCKT:
397  m_notebook->SetSelection( m_notebook->FindPage( m_model ) );
398  m_modelType->SetSelection( getModelTypeIdx( primitive ) );
399  m_modelName->SetValue( m_fieldsTmp[SF_MODEL] );
400  m_modelLibrary->SetValue( m_fieldsTmp[SF_LIB_FILE] );
401 
402  if( !empty( m_modelLibrary ) )
403  {
404  const wxString& libFile = m_modelLibrary->GetValue();
405  m_fieldsTmp[SF_LIB_FILE] = libFile;
406  loadLibrary( libFile );
407  }
408  break;
409 
410  case SP_VSOURCE:
411  case SP_ISOURCE:
413  return false;
414 
415  m_notebook->SetSelection( m_notebook->FindPage( m_power ) );
416  m_pwrType->SetSelection( primitive == SP_ISOURCE ? 1 : 0 );
417  break;
418 
419  default:
420  //wxASSERT_MSG( false, "Unhandled Spice primitive type" );
421  break;
422  }
423 
425 
426  // Check if node sequence is different than the default one
429  {
430  m_nodeSeqCheck->SetValue( true );
432  }
433 
434  showPinOrderNote( primitive );
435 
436  return DIALOG_SPICE_MODEL_BASE::TransferDataToWindow();
437 }
std::vector< LIB_FIELD > * m_libfields
bool m_useSchFields
Temporary field values.
Field object used in symbol libraries.
Definition: lib_field.h:59
static bool StringToBool(const wxString &aStr)
Convert typical boolean string values (no/yes, true/false, 1/0) to a boolean value.
bool parsePowerSource(const wxString &aModel)
Parse a string describing a power source, so appropriate settings are checked in the dialog.
static int getModelTypeIdx(char aPrimitive)
SCH_SYMBOL & m_symbol
Fields from the symbol properties dialog.
static bool empty(const wxTextCtrl *aCtrl)
void showPinOrderNote(int aModelType)
Display a note info about pin order.
static wxString GetSpiceFieldDefVal(SPICE_FIELD aField, SCH_SYMBOL *aSymbol, unsigned aCtl)
Retrieve the default value for a given field.
std::map< int, wxString > m_fieldsTmp
void loadLibrary(const wxString &aFilePath)
Load a list of components (.model and .subckt) from a spice library file and add them to a combo box.
static const std::vector< wxString > & GetSpiceFields()
Return a vector of component field names related to Spice simulation.
std::vector< SCH_FIELD > * m_schfields

References empty(), getModelTypeIdx(), NETLIST_EXPORTER_PSPICE::GetSpiceFieldDefVal(), NETLIST_EXPORTER_PSPICE::GetSpiceFields(), loadLibrary(), DIALOG_SPICE_MODEL_BASE::m_disabled, m_fieldsTmp, m_libfields, DIALOG_SPICE_MODEL_BASE::m_model, DIALOG_SPICE_MODEL_BASE::m_modelLibrary, DIALOG_SPICE_MODEL_BASE::m_modelName, DIALOG_SPICE_MODEL_BASE::m_modelType, DIALOG_SPICE_MODEL_BASE::m_nodeSeqCheck, DIALOG_SPICE_MODEL_BASE::m_nodeSeqVal, DIALOG_SPICE_MODEL_BASE::m_notebook, DIALOG_SPICE_MODEL_BASE::m_passive, DIALOG_SPICE_MODEL_BASE::m_pasType, DIALOG_SPICE_MODEL_BASE::m_pasValue, DIALOG_SPICE_MODEL_BASE::m_power, DIALOG_SPICE_MODEL_BASE::m_pwrType, m_schfields, m_symbol, m_useSchFields, NET_ADJUST_INCLUDE_PATHS, NET_ADJUST_PASSIVE_VALS, parsePowerSource(), SF_ENABLED, SF_LIB_FILE, SF_MODEL, SF_NODE_SEQUENCE, SF_PRIMITIVE, showPinOrderNote(), SP_BJT, SP_CAPACITOR, SP_DIODE, SP_INDUCTOR, SP_ISOURCE, SP_JFET, SP_MOSFET, SP_RESISTOR, SP_SUBCKT, SP_VSOURCE, and NETLIST_EXPORTER_PSPICE::StringToBool().

Referenced by onInitDlg().

◆ Validate()

virtual bool DIALOG_SPICE_MODEL::Validate ( )
inlineoverrideprivatevirtual

Definition at line 101 of file dialog_spice_model.h.

102  {
103  return true;
104  }

◆ vertPixelsFromDU()

int DIALOG_SHIM::vertPixelsFromDU ( int  y) const
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 173 of file dialog_shim.cpp.

174 {
175  wxSize sz( 0, y );
176  return ConvertDialogToPixels( sz ).y;
177 }

Referenced by DIALOG_CHOOSE_SYMBOL::DIALOG_CHOOSE_SYMBOL().

Member Data Documentation

◆ m_amAmplitude

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_amAmplitude
protectedinherited

◆ m_amCarrierFreq

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_amCarrierFreq
protectedinherited

◆ m_amModulatingFreq

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_amModulatingFreq
protectedinherited

◆ m_amOffset

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_amOffset
protectedinherited

◆ m_amPhase

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_amPhase
protectedinherited

◆ m_amSignalDelay

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_amSignalDelay
protectedinherited

◆ m_disabled

wxCheckBox* DIALOG_SPICE_MODEL_BASE::m_disabled
protectedinherited

◆ m_expFallConst

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expFallConst
protectedinherited

◆ m_expFallDelay

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expFallDelay
protectedinherited

◆ m_expInit

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expInit
protectedinherited

◆ m_expPulsed

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expPulsed
protectedinherited

◆ m_expRiseConst

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expRiseConst
protectedinherited

◆ m_expRiseDelay

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expRiseDelay
protectedinherited

◆ m_fieldsTmp

std::map<int, wxString> DIALOG_SPICE_MODEL::m_fieldsTmp
private

Definition at line 142 of file dialog_spice_model.h.

Referenced by TransferDataFromWindow(), and TransferDataToWindow().

◆ m_firstPaintEvent

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 208 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

◆ m_fmAmplitude

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_fmAmplitude
protectedinherited

◆ m_fmFcarrier

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_fmFcarrier
protectedinherited

◆ m_fmFsignal

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_fmFsignal
protectedinherited

◆ m_fmModIndex

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_fmModIndex
protectedinherited

◆ m_fmOffset

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_fmOffset
protectedinherited

◆ m_fmPhaseC

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_fmPhaseC
protectedinherited

◆ m_fmPhaseS

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_fmPhaseS
protectedinherited

◆ m_genAcMag

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_genAcMag
protectedinherited

◆ m_genAcPhase

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_genAcPhase
protectedinherited

◆ m_genDc

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_genDc
protectedinherited

◆ m_hash_key

◆ m_initialFocusTarget

wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 209 of file dialog_shim.h.

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

◆ m_libfields

std::vector<LIB_FIELD>* DIALOG_SPICE_MODEL::m_libfields
private

Definition at line 138 of file dialog_spice_model.h.

Referenced by getLibField(), TransferDataFromWindow(), and TransferDataToWindow().

◆ m_libraryContents

wxStyledTextCtrl* DIALOG_SPICE_MODEL_BASE::m_libraryContents
protectedinherited

◆ m_model

wxPanel* DIALOG_SPICE_MODEL_BASE::m_model
protectedinherited

◆ m_modelLibrary

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_modelLibrary
protectedinherited

◆ m_modelName

◆ m_models

std::map<wxString, MODEL> DIALOG_SPICE_MODEL::m_models
private

Column identifiers for PWL power source value list.

Definition at line 162 of file dialog_spice_model.h.

Referenced by loadLibrary(), and onModelSelected().

◆ m_modelType

◆ m_nodeSeqCheck

wxCheckBox* DIALOG_SPICE_MODEL_BASE::m_nodeSeqCheck
protectedinherited

◆ m_nodeSeqVal

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_nodeSeqVal
protectedinherited

◆ m_notebook

wxNotebook* DIALOG_SPICE_MODEL_BASE::m_notebook
protectedinherited

◆ m_notEmptyValidator

wxTextValidator DIALOG_SPICE_MODEL::m_notEmptyValidator
private

Definition at line 169 of file dialog_spice_model.h.

Referenced by Init().

◆ m_parentFrame

EDA_BASE_FRAME* DIALOG_SHIM::m_parentFrame
protectedinherited

◆ m_passive

wxPanel* DIALOG_SPICE_MODEL_BASE::m_passive
protectedinherited

◆ m_pasType

wxComboBox* DIALOG_SPICE_MODEL_BASE::m_pasType
protectedinherited

◆ m_pasValue

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pasValue
protectedinherited

◆ m_power

wxPanel* DIALOG_SPICE_MODEL_BASE::m_power
protectedinherited

◆ m_powerNotebook

wxNotebook* DIALOG_SPICE_MODEL_BASE::m_powerNotebook
protectedinherited

◆ m_pulseDelay

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseDelay
protectedinherited

◆ m_pulseFall

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseFall
protectedinherited

◆ m_pulseInit

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseInit
protectedinherited

◆ m_pulseNominal

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseNominal
protectedinherited

◆ m_pulsePeriod

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulsePeriod
protectedinherited

◆ m_pulseRise

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseRise
protectedinherited

◆ m_pulseWidth

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseWidth
protectedinherited

◆ m_pwlAddButton

wxButton* DIALOG_SPICE_MODEL_BASE::m_pwlAddButton
protectedinherited

◆ m_pwlRemoveBtn

wxButton* DIALOG_SPICE_MODEL_BASE::m_pwlRemoveBtn
protectedinherited

◆ m_pwlTime

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pwlTime
protectedinherited

◆ m_pwlTimeCol

long DIALOG_SPICE_MODEL::m_pwlTimeCol
private

Definition at line 165 of file dialog_spice_model.h.

Referenced by addPwlValue(), generatePowerSource(), and Init().

◆ m_pwlValList

wxListCtrl* DIALOG_SPICE_MODEL_BASE::m_pwlValList
protectedinherited

◆ m_pwlValue

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pwlValue
protectedinherited

◆ m_pwlValueCol

long DIALOG_SPICE_MODEL::m_pwlValueCol
private

Definition at line 165 of file dialog_spice_model.h.

Referenced by addPwlValue(), generatePowerSource(), and Init().

◆ m_pwrAm

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrAm
protectedinherited

◆ m_pwrExp

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrExp
protectedinherited

◆ m_pwrExtData

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrExtData
protectedinherited

◆ m_pwrFm

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrFm
protectedinherited

◆ m_pwrPulse

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrPulse
protectedinherited

◆ m_pwrPwl

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrPwl
protectedinherited

◆ m_pwrRandom

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrRandom
protectedinherited

◆ m_pwrSin

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrSin
protectedinherited

◆ m_pwrTransNoise

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrTransNoise
protectedinherited

◆ m_pwrType

wxRadioBox* DIALOG_SPICE_MODEL_BASE::m_pwrType
protectedinherited

◆ m_qmodal_loop

WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

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

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

◆ m_rnParam1

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_rnParam1
protectedinherited

◆ m_rnParam1Text

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_rnParam1Text
protectedinherited

◆ m_rnParam2

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_rnParam2
protectedinherited

◆ m_rnParam2Text

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_rnParam2Text
protectedinherited

◆ m_rnTD

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_rnTD
protectedinherited

◆ m_rnTS

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_rnTS
protectedinherited

◆ m_rnType

◆ m_schfields

std::vector<SCH_FIELD>* DIALOG_SPICE_MODEL::m_schfields
private

Definition at line 137 of file dialog_spice_model.h.

Referenced by getSchField(), TransferDataFromWindow(), and TransferDataToWindow().

◆ m_sdbSizer

wxStdDialogButtonSizer* DIALOG_SPICE_MODEL_BASE::m_sdbSizer
protectedinherited

◆ m_sdbSizerCancel

wxButton* DIALOG_SPICE_MODEL_BASE::m_sdbSizerCancel
protectedinherited

◆ m_sdbSizerOK

wxButton* DIALOG_SPICE_MODEL_BASE::m_sdbSizerOK
protectedinherited

◆ m_selectLibrary

wxButton* DIALOG_SPICE_MODEL_BASE::m_selectLibrary
protectedinherited

◆ m_sinAmplitude

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinAmplitude
protectedinherited

◆ m_sinDampFactor

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinDampFactor
protectedinherited

◆ m_sinDelay

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinDelay
protectedinherited

◆ m_sinFreq

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinFreq
protectedinherited

◆ m_sinOffset

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinOffset
protectedinherited

◆ m_spiceEmptyValidator

SPICE_VALIDATOR DIALOG_SPICE_MODEL::m_spiceEmptyValidator
private

Definition at line 168 of file dialog_spice_model.h.

Referenced by Init().

◆ m_spiceValidator

SPICE_VALIDATOR DIALOG_SPICE_MODEL::m_spiceValidator
private

Definition at line 167 of file dialog_spice_model.h.

Referenced by Init().

◆ m_staticline1

wxStaticLine* DIALOG_SPICE_MODEL_BASE::m_staticline1
protectedinherited

◆ m_staticline2

wxStaticLine* DIALOG_SPICE_MODEL_BASE::m_staticline2
protectedinherited

◆ m_staticline3

wxStaticLine* DIALOG_SPICE_MODEL_BASE::m_staticline3
protectedinherited

◆ m_staticText10

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText10
protectedinherited

◆ m_staticText11

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText11
protectedinherited

◆ m_staticText111

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText111
protectedinherited

◆ m_staticText112

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText112
protectedinherited

◆ m_staticText113

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText113
protectedinherited

◆ m_staticText12

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText12
protectedinherited

◆ m_staticText13

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13
protectedinherited

◆ m_staticText131

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText131
protectedinherited

◆ m_staticText1311

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1311
protectedinherited

◆ m_staticText13111

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13111
protectedinherited

◆ m_staticText132

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText132
protectedinherited

◆ m_staticText1321

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1321
protectedinherited

◆ m_staticText13211

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13211
protectedinherited

◆ m_staticText133

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText133
protectedinherited

◆ m_staticText1331

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1331
protectedinherited

◆ m_staticText13311

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13311
protectedinherited

◆ m_staticText134

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText134
protectedinherited

◆ m_staticText1341

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1341
protectedinherited

◆ m_staticText13411

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13411
protectedinherited

◆ m_staticText135

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText135
protectedinherited

◆ m_staticText1351

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1351
protectedinherited

◆ m_staticText13511

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13511
protectedinherited

◆ m_staticText136

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText136
protectedinherited

◆ m_staticText1361

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1361
protectedinherited

◆ m_staticText13611

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13611
protectedinherited

◆ m_staticText137

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText137
protectedinherited

◆ m_staticText1371

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1371
protectedinherited

◆ m_staticText138

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText138
protectedinherited

◆ m_staticText1381

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1381
protectedinherited

◆ m_staticText14

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText14
protectedinherited

◆ m_staticText141

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText141
protectedinherited

◆ m_staticText1411

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1411
protectedinherited

◆ m_staticText15

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText15
protectedinherited

◆ m_staticText151

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText151
protectedinherited

◆ m_staticText1511

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1511
protectedinherited

◆ m_staticText16

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText16
protectedinherited

◆ m_staticText161

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText161
protectedinherited

◆ m_staticText1611

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1611
protectedinherited

◆ m_staticText17

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText17
protectedinherited

◆ m_staticText171

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText171
protectedinherited

◆ m_staticText1711

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1711
protectedinherited

◆ m_staticText18

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText18
protectedinherited

◆ m_staticText181

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText181
protectedinherited

◆ m_staticText1811

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText1811
protectedinherited

◆ m_staticText20

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText20
protectedinherited

◆ m_staticText201

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText201
protectedinherited

◆ m_staticText21

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText21
protectedinherited

◆ m_staticText211

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText211
protectedinherited

◆ m_staticText212

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText212
protectedinherited

◆ m_staticText213

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText213
protectedinherited

◆ m_staticText214

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText214
protectedinherited

◆ m_staticText215

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText215
protectedinherited

◆ m_staticText22

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText22
protectedinherited

◆ m_staticText23

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText23
protectedinherited

◆ m_staticText24

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText24
protectedinherited

◆ m_staticText25

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText25
protectedinherited

◆ m_staticText26

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText26
protectedinherited

◆ m_staticText261

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText261
protectedinherited

◆ m_staticText262

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText262
protectedinherited

◆ m_staticText262111

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText262111
protectedinherited

◆ m_staticText263

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText263
protectedinherited

◆ m_staticText263111

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText263111
protectedinherited

◆ m_staticText264

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText264
protectedinherited

◆ m_staticText265

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText265
protectedinherited

◆ m_staticText266

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText266
protectedinherited

◆ m_staticText26711

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText26711
protectedinherited

◆ m_staticText27

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText27
protectedinherited

◆ m_staticText27111

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText27111
protectedinherited

◆ m_staticText28

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText28
protectedinherited

◆ m_staticText28111

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText28111
protectedinherited

◆ m_staticText29

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText29
protectedinherited

◆ m_staticText30

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText30
protectedinherited

◆ m_staticText31

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText31
protectedinherited

◆ m_staticText32

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText32
protectedinherited

◆ m_staticText321

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText321
protectedinherited

◆ m_staticText34

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText34
protectedinherited

◆ m_staticText342

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText342
protectedinherited

◆ m_staticText343

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText343
protectedinherited

◆ m_staticText35

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText35
protectedinherited

◆ m_staticText4

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText4
protectedinherited

◆ m_staticText5

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText5
protectedinherited

◆ m_staticText62

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText62
protectedinherited

◆ m_staticText7

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText7
protectedinherited

◆ m_staticTextF1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextF1
protectedinherited

◆ m_staticTextF2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextF2
protectedinherited

◆ m_staticTextF3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextF3
protectedinherited

◆ m_staticTextG1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextG1
protectedinherited

◆ m_staticTextG2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextG2
protectedinherited

◆ m_staticTextG3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextG3
protectedinherited

◆ m_staticTextK1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextK1
protectedinherited

◆ m_staticTextK2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextK2
protectedinherited

◆ m_staticTextK3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextK3
protectedinherited

◆ m_staticTextM1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextM1
protectedinherited

◆ m_staticTextM2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextM2
protectedinherited

◆ m_staticTextM3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextM3
protectedinherited

◆ m_staticTextMeg1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextMeg1
protectedinherited

◆ m_staticTextMeg2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextMeg2
protectedinherited

◆ m_staticTextMeg3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextMeg3
protectedinherited

◆ m_staticTextN1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextN1
protectedinherited

◆ m_staticTextN2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextN2
protectedinherited

◆ m_staticTextN3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextN3
protectedinherited

◆ m_staticTextNote

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextNote
protectedinherited

◆ m_staticTextP1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextP1
protectedinherited

◆ m_staticTextP2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextP2
protectedinherited

◆ m_staticTextP3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextP3
protectedinherited

◆ m_staticTextPtype

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextPtype
protectedinherited

◆ m_staticTextPvalue

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextPvalue
protectedinherited

◆ m_staticTextSpVal

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextSpVal
protectedinherited

◆ m_staticTextT1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextT1
protectedinherited

◆ m_staticTextT2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextT2
protectedinherited

◆ m_staticTextT3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextT3
protectedinherited

◆ m_staticTextU1

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextU1
protectedinherited

◆ m_staticTextU2

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextU2
protectedinherited

◆ m_staticTextU3

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextU3
protectedinherited

◆ m_stInfoNote

wxStaticText* DIALOG_SPICE_MODEL_BASE::m_stInfoNote
protectedinherited

◆ m_symbol

SCH_SYMBOL& DIALOG_SPICE_MODEL::m_symbol
private

Fields from the symbol properties dialog.

Definition at line 134 of file dialog_spice_model.h.

Referenced by getSchField(), and TransferDataToWindow().

◆ m_tabOrder

◆ m_units

◆ m_useCalculatedSize

bool DIALOG_SHIM::m_useCalculatedSize
protectedinherited

◆ m_useSchFields

bool DIALOG_SPICE_MODEL::m_useSchFields
private

Temporary field values.

Definition at line 139 of file dialog_spice_model.h.

Referenced by TransferDataFromWindow(), and TransferDataToWindow().


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