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
 

Public Member Functions

 DIALOG_SPICE_MODEL (wxWindow *aParent, SCH_COMPONENT &aComponent, SCH_FIELDS *aSchFields)
 
 DIALOG_SPICE_MODEL (wxWindow *aParent, SCH_COMPONENT &aComponent, LIB_FIELDS *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 ()
 
bool Show (bool show) override
 
bool Enable (bool enable) override
 
void OnPaint (wxPaintEvent &event)
 
EDA_UNITS_T GetUserUnits () const override
 
KIWAYKiway () const
 Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in. More...
 
PROJECTPrj () const
 Function Prj returns a reference to the PROJECT "associated with" this KIWAY. More...
 
void SetKiway (wxWindow *aDest, KIWAY *aKiway)
 Function SetKiway. More...
 

Protected Member Functions

void FinishDialogSettings ()
 In all dialogs, we must call the same functions to fix minimal dlg size, the default position and perhaps some others to fix a few issues depending on Windows Managers this helper function does these calls. More...
 
void SetSizeInDU (int x, int y)
 Set the dialog to the given dimensions in "dialog units". More...
 
int HorizPixelsFromDU (int x)
 Convert an integer number of dialog units to pixels, horizontally. More...
 
int VertPixelsFromDU (int y)
 Convert an integer number of dialog units to pixels, vertically. More...
 

Protected Attributes

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_staticText341
 
wxStaticText * m_staticText_femto
 
wxStaticText * m_staticText36
 
wxStaticText * m_staticText37
 
wxStaticText * m_staticText38
 
wxStaticText * m_staticText39
 
wxStaticText * m_staticText40
 
wxStaticText * m_staticText41
 
wxStaticText * m_staticText42
 
wxStaticText * m_staticText43
 
wxStaticText * m_staticText44
 
wxStaticText * m_staticText46
 
wxStaticText * m_staticText47
 
wxStaticText * m_staticText48
 
wxStaticText * m_staticText45
 
wxStaticText * m_staticText49
 
wxStaticText * m_staticText50
 
wxStaticText * m_staticText51
 
wxStaticText * m_staticText52
 
wxStaticText * m_staticText53
 
wxStaticText * m_staticText54
 
wxStaticText * m_staticText55
 
wxStaticText * m_staticText56
 
wxStaticText * m_staticText57
 
wxStaticText * m_staticText58
 
wxStaticText * m_staticText59
 
wxStaticText * m_staticText60
 
wxPanel * m_model
 
wxStaticText * m_staticText7
 
wxTextCtrl * m_modelLibrary
 
wxButton * m_selectLibrary
 
wxStaticText * m_staticText5
 
wxComboBox * m_modelName
 
wxStaticText * m_staticText4
 
wxComboBox * m_modelType
 
wxTextCtrl * 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
 
wxPanel * m_pwrAm
 
wxPanel * m_pwrTransNoise
 
wxPanel * m_pwrRandom
 
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_T m_units
 
std::string m_hash_key
 
bool m_firstPaintEvent
 
wxWindow * m_initialFocusTarget
 
WX_EVENT_LOOPm_qmodal_loop
 
bool m_qmodal_showing
 
WDO_ENABLE_DISABLEm_qmodal_parent_disabler
 

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) const
 Generates a string to describe power source parameters, basing on the current selection. More...
 
void loadLibrary (const wxString &aFilePath)
 Loads a list of components (.model and .subckt) from a spice library file and adds them to a combo box. More...
 
SCH_FIELDgetSchField (int aFieldType)
 Returns or creates a field in the edited schematic fields vector. More...
 
LIB_FIELDgetLibField (int aFieldType)
 
bool addPwlValue (const wxString &aTime, const wxString &aValue)
 Adds 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 ()
 Initializes the internal settings. More...
 
void onSelectLibrary (wxCommandEvent &event) override
 
void onModelSelected (wxCommandEvent &event) override
 
void onPwlAdd (wxCommandEvent &event) override
 
void onPwlRemove (wxCommandEvent &event) override
 

Private Attributes

SCH_COMPONENTm_component
 

Edited component

More...
 
SCH_FIELDSm_schfields
 

Fields from the component properties dialog

More...
 
LIB_FIELDSm_libfields
 
bool m_useSchFields
 
std::map< int, wxString > m_fieldsTmp
 

Temporary field values

More...
 
std::map< wxString, MODELm_models
 

Models available in the selected library file

More...
 
long m_pwlTimeCol
 

Column identifiers for PWL power source value list

More...
 
long m_pwlValueCol
 
SPICE_VALIDATOR m_spiceValidator
 
SPICE_VALIDATOR m_spiceEmptyValidator
 
wxTextValidator m_notEmptyValidator
 

Detailed Description

Definition at line 38 of file dialog_spice_model.h.

Constructor & Destructor Documentation

DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL ( wxWindow *  aParent,
SCH_COMPONENT aComponent,
SCH_FIELDS aSchFields 
)

Definition at line 95 of file dialog_spice_model.cpp.

References Init().

96  : DIALOG_SPICE_MODEL_BASE( aParent ), m_component( aComponent ), m_schfields( aFields ),
97  m_useSchFields( true ),
98  m_spiceEmptyValidator( true ), m_notEmptyValidator( wxFILTER_EMPTY )
99 {
100  Init();
101 }
void Init()
Initializes the internal settings.
SCH_COMPONENT & m_component
Edited component
SCH_FIELDS * m_schfields
Fields from the component 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(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
SPICE_VALIDATOR m_spiceEmptyValidator
DIALOG_SPICE_MODEL::DIALOG_SPICE_MODEL ( wxWindow *  aParent,
SCH_COMPONENT aComponent,
LIB_FIELDS aLibFields 
)

Definition at line 104 of file dialog_spice_model.cpp.

References Init().

105  : DIALOG_SPICE_MODEL_BASE( aParent ), m_component( aComponent ),
106  m_libfields( aFields ), m_useSchFields( false ),
107  m_spiceEmptyValidator( true ), m_notEmptyValidator( wxFILTER_EMPTY )
108 {
109  Init();
110 }
void Init()
Initializes the internal settings.
SCH_COMPONENT & m_component
Edited component
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(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
SPICE_VALIDATOR m_spiceEmptyValidator

Member Function Documentation

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

Adds 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 792 of file dialog_spice_model.cpp.

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

Referenced by onPwlAdd(), and parsePowerSource().

793 {
794  // TODO execute validators
795  if( aTime.IsEmpty() || aValue.IsEmpty() )
796  return false;
797 
798  long idx = m_pwlValList->InsertItem( m_pwlTimeCol, aTime );
799  m_pwlValList->SetItem( idx, m_pwlValueCol, aValue );
800 
801  // There is no wxString::ToFloat, but we need to guarantee it fits in 4 bytes
802  double timeD;
803  float timeF;
804  m_pwlTime->GetValue().ToDouble( &timeD );
805  timeF = timeD;
806 
807  // Store the time value, so the entries can be sorted
808  m_pwlValList->SetItemData( idx, *reinterpret_cast<long*>( &timeF ) );
809 
810  // Sort items by timestamp
811  m_pwlValList->SortItems( comparePwlValues, -1 );
812 
813  return true;
814 }
long m_pwlTimeCol
Column identifiers for PWL power source value list
static int wxCALLBACK comparePwlValues(wxIntPtr aItem1, wxIntPtr aItem2, wxIntPtr WXUNUSED(aSortData))
bool DIALOG_SHIM::Enable ( bool  enable)
overrideinherited

Definition at line 221 of file dialog_shim.cpp.

222 {
223  // so we can do logging of this state change:
224 
225 #if defined(DEBUG)
226  const char* type_id = typeid( *this ).name();
227  printf( "wxDialog %s: %s\n", type_id, enable ? "enabled" : "disabled" );
228 #endif
229 
230  return wxDialog::Enable( enable );
231 }
void DIALOG_SHIM::EndQuasiModal ( int  retCode)
inherited

Definition at line 381 of file dialog_shim.cpp.

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

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

382 {
383  // Hook up validator and transfer data from controls handling so quasi-modal dialogs
384  // handle validation in the same way as other dialogs.
385  if( ( retCode == wxID_OK ) && ( !Validate() || !TransferDataFromWindow() ) )
386  return;
387 
388  SetReturnCode( retCode );
389 
390  if( !IsQuasiModal() )
391  {
392  wxFAIL_MSG( wxT( "either DIALOG_SHIM::EndQuasiModal called twice or ShowQuasiModal wasn't called" ) );
393  return;
394  }
395 
396  if( m_qmodal_loop )
397  {
398  if( m_qmodal_loop->IsRunning() )
399  m_qmodal_loop->Exit( 0 );
400  else
401  m_qmodal_loop->ScheduleExit( 0 );
402 
403  m_qmodal_loop = NULL;
404  }
405 
408 
409  Show( false );
410 }
WX_EVENT_LOOP * m_qmodal_loop
Definition: dialog_shim.h:182
bool IsQuasiModal()
Definition: dialog_shim.h:124
bool Show(bool show) override
WDO_ENABLE_DISABLE * m_qmodal_parent_disabler
Definition: dialog_shim.h:184
void DIALOG_SHIM::FinishDialogSettings ( )
protectedinherited

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

FinishDialogSettings must be called from derived classes, when all widgets are initialized, and therefore their size fixed. If TransferDataToWindow() is used to initialize widgets, at end of TransferDataToWindow, or better at end of a wxInitDialogEvent handler

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

Definition at line 120 of file dialog_shim.cpp.

References PCAD2KICAD::Center.

Referenced by DIALOG_3D_VIEW_OPTIONS::DIALOG_3D_VIEW_OPTIONS(), DIALOG_ANNOTATE::DIALOG_ANNOTATE(), DIALOG_BOM::DIALOG_BOM(), DIALOG_COPPER_ZONE::DIALOG_COPPER_ZONE(), DIALOG_DRC_CONTROL::DIALOG_DRC_CONTROL(), DIALOG_EDIT_COMPONENT_IN_LIBRARY::DIALOG_EDIT_COMPONENT_IN_LIBRARY(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::DIALOG_EDIT_COMPONENT_IN_SCHEMATIC(), DIALOG_EDIT_COMPONENTS_LIBID::DIALOG_EDIT_COMPONENTS_LIBID(), DIALOG_EDIT_LINE_STYLE::DIALOG_EDIT_LINE_STYLE(), DIALOG_ENUM_PADS::DIALOG_ENUM_PADS(), DIALOG_EXCHANGE_FOOTPRINTS::DIALOG_EXCHANGE_FOOTPRINTS(), DIALOG_EXPORT_3DFILE::DIALOG_EXPORT_3DFILE(), DIALOG_EXPORT_IDF3::DIALOG_EXPORT_IDF3(), DIALOG_EXPORT_STEP::DIALOG_EXPORT_STEP(), DIALOG_EXPORT_SVG::DIALOG_EXPORT_SVG(), DIALOG_FIELDS_EDITOR_GLOBAL::DIALOG_FIELDS_EDITOR_GLOBAL(), DIALOG_FOOTPRINT_BOARD_EDITOR::DIALOG_FOOTPRINT_BOARD_EDITOR(), DIALOG_FOOTPRINT_FP_EDITOR::DIALOG_FOOTPRINT_FP_EDITOR(), DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST(), DIALOG_FOOTPRINTS_DISPLAY_OPTIONS::DIALOG_FOOTPRINTS_DISPLAY_OPTIONS(), DIALOG_FP_BROWSER_DISPLAY_OPTIONS::DIALOG_FP_BROWSER_DISPLAY_OPTIONS(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS(), DIALOG_GLOBAL_SYM_LIB_TABLE_CONFIG::DIALOG_GLOBAL_SYM_LIB_TABLE_CONFIG(), DIALOG_IMAGE_EDITOR::DIALOG_IMAGE_EDITOR(), DIALOG_KEEPOUT_AREA_PROPERTIES::DIALOG_KEEPOUT_AREA_PROPERTIES(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_LIB_EDIT_DRAW_ITEM::DIALOG_LIB_EDIT_DRAW_ITEM(), DIALOG_LIB_EDIT_PIN::DIALOG_LIB_EDIT_PIN(), DIALOG_LIB_EDIT_TEXT::DIALOG_LIB_EDIT_TEXT(), DIALOG_LIB_NEW_COMPONENT::DIALOG_LIB_NEW_COMPONENT(), DIALOG_LIST_HOTKEYS::DIALOG_LIST_HOTKEYS(), DIALOG_MOVE_EXACT::DIALOG_MOVE_EXACT(), DIALOG_NETLIST::DIALOG_NETLIST(), DIALOG_NON_COPPER_ZONES_EDITOR::DIALOG_NON_COPPER_ZONES_EDITOR(), DIALOG_PAD_PRIMITIVES_PROPERTIES::DIALOG_PAD_PRIMITIVES_PROPERTIES(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), DIALOG_PLOT_SCHEMATIC::DIALOG_PLOT_SCHEMATIC(), DIALOG_POSITION_RELATIVE::DIALOG_POSITION_RELATIVE(), DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC(), DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER(), DIALOG_PUSH_PAD_PROPERTIES::DIALOG_PUSH_PAD_PROPERTIES(), DIALOG_SCH_EDIT_SHEET_PIN::DIALOG_SCH_EDIT_SHEET_PIN(), DIALOG_SCH_SHEET_PROPS::DIALOG_SCH_SHEET_PROPS(), DIALOG_SELECT_NET_FROM_LIST::DIALOG_SELECT_NET_FROM_LIST(), DIALOG_SET_GRID::DIALOG_SET_GRID(), DIALOG_SWAP_LAYERS::DIALOG_SWAP_LAYERS(), DIALOG_TARGET_PROPERTIES::DIALOG_TARGET_PROPERTIES(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), DIALOG_TRACK_VIA_PROPERTIES::DIALOG_TRACK_VIA_PROPERTIES(), DIALOG_TRACK_VIA_SIZE::DIALOG_TRACK_VIA_SIZE(), DIALOG_UPDATE_PCB::DIALOG_UPDATE_PCB(), PAGED_DIALOG::finishInitialization(), DIALOG_EDIT_ONE_FIELD::init(), DIALOG_EDIT_LIBRARY_TABLES::InstallPanel(), NETLIST_DIALOG::NETLIST_DIALOG(), DIALOG_GRAPHIC_ITEM_PROPERTIES::OnInitDlg(), DIALOG_SIM_SETTINGS::onInitDlg(), DIALOG_EDIT_COMPONENT_IN_SCHEMATIC::OnInitDlg(), onInitDlg(), DIALOG_SIGNAL_LIST::TransferDataToWindow(), DIALOG_UPDATE_FIELDS::TransferDataToWindow(), and DIALOG_COLOR_PICKER::TransferDataToWindow().

121 {
122  // must be called from the constructor of derived classes,
123  // when all widgets are initialized, and therefore their size fixed
124 
125  // SetSizeHints fixes the minimal size of sizers in the dialog
126  // (SetSizeHints calls Fit(), so no need to call it)
127  GetSizer()->SetSizeHints( this );
128 
129  // the default position, when calling the first time the dlg
130  Center();
131 }
bool DIALOG_SPICE_MODEL::generatePowerSource ( wxString &  aTarget) const
private

Generates 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 506 of file dialog_spice_model.cpp.

References DisplayError(), empty(), Format(), i, 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_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_pwrExp, DIALOG_SPICE_MODEL_BASE::m_pwrPulse, DIALOG_SPICE_MODEL_BASE::m_pwrPwl, DIALOG_SPICE_MODEL_BASE::m_pwrSin, 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().

507 {
508  wxString acdc, trans;
509  wxWindow* page = m_powerNotebook->GetCurrentPage();
510  bool useTrans = true; // shall we use the transient command part?
511 
512  // Variables for generic processing
513  bool genericProcessing = false;
514  unsigned int genericReqParamsCount = 0;
515  std::vector<wxTextCtrl*> genericControls;
516 
518  // If SPICE_VALUE can be properly constructed, then it is a valid value
519  try
520  {
521  if( !empty( m_genDc ) )
522  acdc += wxString::Format( "dc %s ", SPICE_VALUE( m_genDc->GetValue() ).ToSpiceString() );
523  }
524  catch( ... )
525  {
526  DisplayError( NULL, wxT( "Invalid DC value" ) );
527  return false;
528  }
529 
530  try
531  {
532  if( !empty( m_genAcMag ) )
533  {
534  acdc += wxString::Format( "ac %s ", SPICE_VALUE( m_genAcMag->GetValue() ).ToSpiceString() );
535 
536  if( !empty( m_genAcPhase ) )
537  acdc += wxString::Format( "%s ", SPICE_VALUE( m_genAcPhase->GetValue() ).ToSpiceString() );
538  }
539  }
540  catch( ... )
541  {
542  DisplayError( NULL, wxT( "Invalid AC magnitude or phase" ) );
543  return false;
544  }
545 
547  if( page == m_pwrPulse )
548  {
549  if( !m_pwrPulse->Validate() )
550  return false;
551 
552  genericProcessing = true;
553  trans += "pulse";
554  genericReqParamsCount = 2;
555  genericControls = { m_pulseInit, m_pulseNominal, m_pulseDelay,
557  }
558 
559 
560  else if( page == m_pwrSin )
561  {
562  if( !m_pwrSin->Validate() )
563  return false;
564 
565  genericProcessing = true;
566  trans += "sin";
567  genericReqParamsCount = 2;
569  }
570 
571 
572  else if( page == m_pwrExp )
573  {
574  if( !m_pwrExp->Validate() )
575  return false;
576 
577  genericProcessing = true;
578  trans += "exp";
579  genericReqParamsCount = 2;
580  genericControls = { m_expInit, m_expPulsed,
582  }
583 
584 
585  else if( page == m_pwrPwl )
586  {
587  if( m_pwlValList->GetItemCount() > 0 )
588  {
589  trans += "pwl(";
590 
591  for( int i = 0; i < m_pwlValList->GetItemCount(); ++i )
592  {
593  trans += wxString::Format( "%s %s ", m_pwlValList->GetItemText( i, m_pwlTimeCol ),
594  m_pwlValList->GetItemText( i, m_pwlValueCol ) );
595  }
596 
597  trans.Trim();
598  trans += ")";
599  }
600  }
601 
602  if( genericProcessing )
603  {
604  trans += "(";
605 
606  auto first_empty = std::find_if( genericControls.begin(), genericControls.end(), empty );
607  auto first_not_empty = std::find_if( genericControls.begin(), genericControls.end(),
608  []( const wxTextCtrl* c ){ return !empty( c ); } );
609 
610  if( std::distance( first_not_empty, genericControls.end() ) == 0 )
611  {
612  // all empty
613  useTrans = false;
614  }
615  else if( std::distance( genericControls.begin(), first_empty ) < (int)genericReqParamsCount )
616  {
617  DisplayError( nullptr,
618  wxString::Format( wxT( "You need to specify at least the "
619  "first %d parameters for the transient source" ),
620  genericReqParamsCount ) );
621 
622  return false;
623  }
624  else if( std::find_if_not( first_empty, genericControls.end(),
625  empty ) != genericControls.end() )
626  {
627  DisplayError( nullptr, wxT( "You cannot leave interleaved empty fields "
628  "when defining a transient source" ) );
629  return false;
630  }
631  else
632  {
633  std::for_each( genericControls.begin(), first_empty,
634  [&trans] ( wxTextCtrl* ctrl ) {
635  trans += wxString::Format( "%s ", ctrl->GetValue() );
636  } );
637  }
638 
639  trans.Trim();
640  trans += ")";
641  }
642 
643  aTarget = acdc;
644 
645  if( useTrans )
646  aTarget += trans;
647 
648  // Remove whitespaces from left and right side
649  aTarget.Trim( false );
650  aTarget.Trim( true );
651 
652  return true;
653 }
long m_pwlTimeCol
Column identifiers for PWL power source value list
static bool empty(const wxTextCtrl *aCtrl)
Helper class to handle Spice way of expressing values (e.g. 10.5 Meg)
Definition: spice_value.h:32
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, CPTREE &aTree)
Function Format outputs a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:205
size_t i
Definition: json11.cpp:597
void DisplayError(wxWindow *parent, const wxString &text, int displaytime)
Function DisplayError displays an error or warning message box with aMessage.
Definition: confirm.cpp:245
LIB_FIELD & DIALOG_SPICE_MODEL::getLibField ( int  aFieldType)
private

Definition at line 770 of file dialog_spice_model.cpp.

References NETLIST_EXPORTER_PSPICE::GetSpiceFieldName(), and m_libfields.

Referenced by TransferDataFromWindow().

771 {
772  const wxString& spiceField = NETLIST_EXPORTER_PSPICE::GetSpiceFieldName( (SPICE_FIELD) aFieldType );
773 
774  auto fieldIt = std::find_if( m_libfields->begin(), m_libfields->end(), [&]( const LIB_FIELD& f ) {
775  return f.GetName() == spiceField;
776  } );
777 
778  // Found one, so return it
779  if( fieldIt != m_libfields->end() )
780  return *fieldIt;
781 
782  // Create a new field with requested name
783  LIB_FIELD new_field( m_libfields->size() );
784  m_libfields->front().Copy( &new_field );
785  new_field.SetName( spiceField );
786 
787  m_libfields->push_back( new_field );
788  return m_libfields->back();
789 }
Field object used in symbol libraries.
Definition: lib_field.h:59
static const wxString & GetSpiceFieldName(SPICE_FIELD aField)
Returns a string used for a particular component field related to Spice simulation.
SCH_FIELD & DIALOG_SPICE_MODEL::getSchField ( int  aFieldType)
private

Returns or creates a field in the edited schematic fields vector.

Parameters
aFieldTypeis an SPICE_FIELD enum value.
Returns
Requested field.

Definition at line 752 of file dialog_spice_model.cpp.

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

Referenced by TransferDataFromWindow().

753 {
754  const wxString& spiceField = NETLIST_EXPORTER_PSPICE::GetSpiceFieldName( (SPICE_FIELD) aFieldType );
755 
756  auto fieldIt = std::find_if( m_schfields->begin(), m_schfields->end(), [&]( const SCH_FIELD& f ) {
757  return f.GetName() == spiceField;
758  } );
759 
760  // Found one, so return it
761  if( fieldIt != m_schfields->end() )
762  return *fieldIt;
763 
764  // Create a new field with requested name
765  m_schfields->emplace_back( wxPoint(), m_schfields->size(), &m_component, spiceField );
766  return m_schfields->back();
767 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
SCH_COMPONENT & m_component
Edited component
static const wxString & GetSpiceFieldName(SPICE_FIELD aField)
Returns a string used for a particular component field related to Spice simulation.
SCH_FIELDS * m_schfields
Fields from the component properties dialog
int DIALOG_SHIM::HorizPixelsFromDU ( int  x)
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 141 of file dialog_shim.cpp.

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

142 {
143  wxSize sz( x, 0 );
144  return ConvertDialogToPixels( sz ).x;
145 }
void DIALOG_SPICE_MODEL::Init ( )
private

Initializes the internal settings.

Definition at line 113 of file dialog_spice_model.cpp.

References 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_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_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_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, and m_spiceValidator.

Referenced by DIALOG_SPICE_MODEL(), and onInitDlg().

114 {
115  m_pasValue->SetValidator( m_spiceValidator );
116 
117  m_modelType->SetValidator( m_notEmptyValidator );
118  m_modelType->Clear();
119 
120  // Create a list of handled models
121  for( const auto& model : modelTypes )
122  m_modelType->Append( model.description );
123 
124  m_modelName->SetValidator( m_notEmptyValidator );
125 
126  m_genDc->SetValidator( m_spiceEmptyValidator );
127  m_genAcMag->SetValidator( m_spiceEmptyValidator );
128  m_genAcPhase->SetValidator( m_spiceEmptyValidator );
129 
130  m_pulseInit->SetValidator( m_spiceEmptyValidator );
131  m_pulseNominal->SetValidator( m_spiceEmptyValidator );
132  m_pulseDelay->SetValidator( m_spiceEmptyValidator );
133  m_pulseRise->SetValidator( m_spiceEmptyValidator );
134  m_pulseFall->SetValidator( m_spiceEmptyValidator );
135  m_pulseWidth->SetValidator( m_spiceEmptyValidator );
136  m_pulsePeriod->SetValidator( m_spiceEmptyValidator );
137 
138  m_sinOffset->SetValidator( m_spiceEmptyValidator );
139  m_sinAmplitude->SetValidator( m_spiceEmptyValidator );
140  m_sinFreq->SetValidator( m_spiceEmptyValidator );
141  m_sinDelay->SetValidator( m_spiceEmptyValidator );
142  m_sinDampFactor->SetValidator( m_spiceEmptyValidator );
143 
144  m_expInit->SetValidator( m_spiceEmptyValidator );
145  m_expPulsed->SetValidator( m_spiceEmptyValidator );
146  m_expRiseDelay->SetValidator( m_spiceEmptyValidator );
147  m_expRiseConst->SetValidator( m_spiceEmptyValidator );
148  m_expFallDelay->SetValidator( m_spiceEmptyValidator );
149  m_expFallConst->SetValidator( m_spiceEmptyValidator );
150 
151  m_pwlTimeCol = m_pwlValList->AppendColumn( "Time [s]", wxLIST_FORMAT_LEFT, 100 );
152  m_pwlValueCol = m_pwlValList->AppendColumn( "Value [V/A]", wxLIST_FORMAT_LEFT, 100 );
153 
154  m_sdbSizerOK->SetDefault();
155 }
SPICE_VALIDATOR m_spiceValidator
long m_pwlTimeCol
Column identifiers for PWL power source value list
wxTextValidator m_notEmptyValidator
SPICE_VALIDATOR m_spiceEmptyValidator
static const std::vector< SPICE_MODEL_INFO > modelTypes
KIWAY& KIWAY_HOLDER::Kiway ( ) const
inlineinherited

Function Kiway returns a reference to the KIWAY that this object has an opportunity to participate in.

A KIWAY_HOLDER is not necessarily a KIWAY_PLAYER.

Definition at line 60 of file kiway_player.h.

References KIWAY_HOLDER::GetUserUnits(), KIWAY_HOLDER::m_kiway, KIWAY_HOLDER::Prj(), KIWAY_HOLDER::SetKiway(), and VTBL_ENTRY.

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

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

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

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

Definition at line 656 of file dialog_spice_model.cpp.

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

Referenced by onSelectLibrary(), and TransferDataToWindow().

657 {
658  wxString curModel = m_modelName->GetValue();
659  m_models.clear();
660  wxFileName filePath( aFilePath );
661  bool in_subckt = false; // flag indicating that the parser is inside a .subckt section
662 
663  // Look for the file in the project path
664  if( !filePath.Exists() )
665  {
666  filePath.SetPath( Prj().GetProjectPath() + filePath.GetPath() );
667 
668  if( !filePath.Exists() )
669  return;
670  }
671 
672  // Display the library contents
673  wxWindowUpdateLocker updateLock( this );
674  m_libraryContents->Clear();
675  wxTextFile file;
676  file.Open( filePath.GetFullPath() );
677  int line_nr = 0;
678 
679  // Process the file, looking for components
680  while( !file.Eof() )
681  {
682  const wxString& line = line_nr == 0 ? file.GetFirstLine() : file.GetNextLine();
683  m_libraryContents->AppendText( line );
684  m_libraryContents->AppendText( "\n" );
685 
686  wxStringTokenizer tokenizer( line );
687 
688  while( tokenizer.HasMoreTokens() )
689  {
690  wxString token = tokenizer.GetNextToken().Lower();
691 
692  // some subckts contain .model clauses inside,
693  // skip them as they are a part of the subckt, not another model
694  if( token == ".model" && !in_subckt )
695  {
696  wxString name = tokenizer.GetNextToken();
697 
698  if( name.IsEmpty() )
699  break;
700 
701  token = tokenizer.GetNextToken();
702  SPICE_PRIMITIVE type = MODEL::parseModelType( token );
703 
704  if( type != SP_UNKNOWN )
705  m_models.emplace( name, MODEL( line_nr, type ) );
706  }
707 
708  else if( token == ".subckt" )
709  {
710  wxASSERT( !in_subckt );
711  in_subckt = true;
712 
713  wxString name = tokenizer.GetNextToken();
714 
715  if( name.IsEmpty() )
716  break;
717 
718  m_models.emplace( name, MODEL( line_nr, SP_SUBCKT ) );
719  }
720 
721  else if( token == ".ends" )
722  {
723  wxASSERT( in_subckt );
724  in_subckt = false;
725  }
726  }
727 
728  ++line_nr;
729  }
730 
731  wxArrayString modelsList;
732 
733  // Refresh the model name combobox values
734  m_modelName->Clear();
735 
736  for( const auto& model : m_models )
737  {
738  m_modelName->Append( model.first );
739  modelsList.Add( model.first );
740  }
741 
742  m_modelName->AutoComplete( modelsList );
743 
744  // Restore the previous value or if there is none - pick the first one from the loaded library
745  if( !curModel.IsEmpty() )
746  m_modelName->SetValue( curModel );
747  else if( m_modelName->GetCount() > 0 )
748  m_modelName->SetSelection( 0 );
749 }
static SPICE_PRIMITIVE parseModelType(const wxString &aValue)
Convert string to model
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
const char * name
Definition: DXF_plotter.cpp:61
SPICE_PRIMITIVE
Basic Spice component primitives
std::map< wxString, MODEL > m_models
Models available in the selected library file
virtual void DIALOG_SPICE_MODEL::onInitDlg ( wxInitDialogEvent &  event)
inlineoverrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 96 of file dialog_spice_model.h.

References DIALOG_SHIM::FinishDialogSettings(), Init(), onModelSelected(), onPwlAdd(), onPwlRemove(), onSelectLibrary(), and TransferDataToWindow().

97  {
98  // Call the default wxDialog handler of a wxInitDialogEvent
100 
101  // Now all widgets have the size fixed, call FinishDialogSettings
103  }
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
void DIALOG_SPICE_MODEL::onModelSelected ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 844 of file dialog_spice_model.cpp.

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

Referenced by onInitDlg().

845 {
846  // autoselect the model type
847  auto it = m_models.find( m_modelName->GetValue() );
848 
849  if( it != m_models.end() )
850  {
851  m_modelType->SetSelection( getModelTypeIdx( it->second.model ) );
852 
853  // scroll to the bottom, so the model definition is shown in the first line
854  m_libraryContents->ShowPosition(
855  m_libraryContents->XYToPosition( 0, m_libraryContents->GetNumberOfLines() ) );
856  m_libraryContents->ShowPosition( m_libraryContents->XYToPosition( 0, it->second.line ) );
857  }
858  else
859  {
860  m_libraryContents->ShowPosition( 0 );
861  }
862 }
static int getModelTypeIdx(char aPrimitive)
std::map< wxString, MODEL > m_models
Models available in the selected library file
void DIALOG_SHIM::OnPaint ( wxPaintEvent &  event)
inherited

Definition at line 283 of file dialog_shim.cpp.

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

Referenced by DIALOG_SHIM::DIALOG_SHIM().

284 {
285  if( m_firstPaintEvent )
286  {
287 #ifdef __WXMAC__
288  fixOSXCancelButtonIssue( this );
289  selectAllInTextCtrls( GetChildren() );
290 #endif
291 
293  m_initialFocusTarget->SetFocus();
294  else
295  SetFocus(); // Focus the dialog itself
296 
297  m_firstPaintEvent = false;
298  }
299 
300  event.Skip();
301 }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:179
bool m_firstPaintEvent
Definition: dialog_shim.h:178
void DIALOG_SPICE_MODEL::onPwlAdd ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 865 of file dialog_spice_model.cpp.

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

Referenced by onInitDlg().

866 {
867  addPwlValue( m_pwlTime->GetValue(), m_pwlValue->GetValue() );
868 }
bool addPwlValue(const wxString &aTime, const wxString &aValue)
Adds a value to the PWL values list.
void DIALOG_SPICE_MODEL::onPwlRemove ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 871 of file dialog_spice_model.cpp.

References DIALOG_SPICE_MODEL_BASE::m_pwlValList.

Referenced by onInitDlg().

872 {
873  long idx = m_pwlValList->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
874  m_pwlValList->DeleteItem( idx );
875 }
void DIALOG_SPICE_MODEL::onSelectLibrary ( wxCommandEvent &  event)
overrideprivatevirtual

Reimplemented from DIALOG_SPICE_MODEL_BASE.

Definition at line 817 of file dialog_spice_model.cpp.

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

Referenced by onInitDlg().

818 {
819  wxString searchPath = wxFileName( m_modelLibrary->GetValue() ).GetPath();
820 
821  if( searchPath.IsEmpty() )
822  searchPath = Prj().GetProjectPath();
823 
824  wxString wildcards = SpiceLibraryFileWildcard() + "|" + AllFilesWildcard();
825  wxFileDialog openDlg( this, _( "Select library" ), searchPath, "", wildcards,
826  wxFD_OPEN | wxFD_FILE_MUST_EXIST );
827 
828  if( openDlg.ShowModal() == wxID_CANCEL )
829  return;
830 
831  wxFileName libPath( openDlg.GetPath() );
832 
833  // Try to convert the path to relative to project
834  if( libPath.MakeRelativeTo( Prj().GetProjectPath() ) && !libPath.GetFullPath().StartsWith( ".." ) )
835  m_modelLibrary->SetValue( libPath.GetFullPath() );
836  else
837  m_modelLibrary->SetValue( openDlg.GetPath() );
838 
839  loadLibrary( openDlg.GetPath() );
840  m_modelName->Popup();
841 }
wxString AllFilesWildcard()
PROJECT & Prj() const
Function Prj returns a reference to the PROJECT "associated with" this KIWAY.
void loadLibrary(const wxString &aFilePath)
Loads a list of components (.model and .subckt) from a spice library file and adds them to a combo bo...
wxString SpiceLibraryFileWildcard()
VTBL_ENTRY const wxString GetProjectPath() const
Function GetProjectPath returns the full path of the project.
Definition: project.cpp:102
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 354 of file dialog_spice_model.cpp.

References addPwlValue(), i, 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_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_pwrExp, DIALOG_SPICE_MODEL_BASE::m_pwrPulse, DIALOG_SPICE_MODEL_BASE::m_pwrPwl, DIALOG_SPICE_MODEL_BASE::m_pwrSin, 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, and SPICE_VALUE::ToSpiceString().

Referenced by TransferDataToWindow().

355 {
356  if( aModel.IsEmpty() )
357  return false;
358 
359  wxStringTokenizer tokenizer( aModel, " ()" );
360  wxString tkn = tokenizer.GetNextToken().Lower();
361 
362  while( tokenizer.HasMoreTokens() )
363  {
364  // Variables used for generic values processing (filling out wxTextCtrls in sequence)
365  bool genericProcessing = false;
366  unsigned int genericReqParamsCount = 0;
367  std::vector<wxTextCtrl*> genericControls;
368 
369  if( tkn == "dc" )
370  {
371  // There might be an optional "dc" or "trans" directive, skip it
372  if( tkn == "dc" || tkn == "trans" )
373  tkn = tokenizer.GetNextToken().Lower();
374 
375  // DC value
376  try
377  {
378  m_genDc->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
379  }
380  catch( ... )
381  {
382  return false;
383  }
384  }
385 
386 
387  else if( tkn == "ac" )
388  {
389  // AC magnitude
390  try
391  {
392  tkn = tokenizer.GetNextToken().Lower();
393  m_genAcMag->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
394  }
395  catch( ... )
396  {
397  return false;
398  }
399 
400  // AC phase (optional)
401  try
402  {
403  tkn = tokenizer.GetNextToken().Lower();
404  m_genAcPhase->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
405  }
406  catch( ... )
407  {
408  continue; // perhaps another directive
409  }
410  }
411 
412 
413  else if( tkn == "pulse" )
414  {
415  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrPulse ) );
416 
417  genericProcessing = true;
418  genericReqParamsCount = 2;
419  genericControls = { m_pulseInit, m_pulseNominal, m_pulseDelay,
421  }
422 
423 
424  else if( tkn == "sin" )
425  {
426  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrSin ) );
427 
428  genericProcessing = true;
429  genericReqParamsCount = 2;
431  }
432 
433 
434  else if( tkn == "exp" )
435  {
436  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrExp ) );
437 
438  genericProcessing = true;
439  genericReqParamsCount = 2;
440  genericControls = { m_expInit, m_expPulsed,
442  }
443 
444 
445  else if( tkn == "pwl" )
446  {
447  m_powerNotebook->SetSelection( m_powerNotebook->FindPage( m_pwrPwl ) );
448 
449  try
450  {
451  while( tokenizer.HasMoreTokens() )
452  {
453  tkn = tokenizer.GetNextToken();
454  SPICE_VALUE time( tkn );
455 
456  tkn = tokenizer.GetNextToken();
457  SPICE_VALUE value( tkn );
458 
459  addPwlValue( time.ToSpiceString(), value.ToSpiceString() );
460  }
461  }
462  catch( ... )
463  {
464  return false;
465  }
466  }
467 
468 
469  else
470  {
471  // Unhandled power source type
472  wxASSERT_MSG( false, "Unhandled power source type" );
473  return false;
474  }
475 
476 
477  if( genericProcessing )
478  {
479  try
480  {
481  for( unsigned int i = 0; i < genericControls.size(); ++i )
482  {
483  // If there are no more tokens, let's check if we got at least required fields
484  if( !tokenizer.HasMoreTokens() )
485  return ( i >= genericReqParamsCount );
486 
487  tkn = tokenizer.GetNextToken().Lower();
488  genericControls[i]->SetValue( SPICE_VALUE( tkn ).ToSpiceString() );
489  }
490  }
491  catch( ... )
492  {
493  return false;
494  }
495  }
496 
497  // Get the next token now, so if any of the branches catches an expection, try to
498  // process it in another branch
499  tkn = tokenizer.GetNextToken().Lower();
500  }
501 
502  return true;
503 }
bool addPwlValue(const wxString &aTime, const wxString &aValue)
Adds a value to the PWL values list.
Helper class to handle Spice way of expressing values (e.g. 10.5 Meg)
Definition: spice_value.h:32
size_t i
Definition: json11.cpp:597
PROJECT & KIWAY_HOLDER::Prj ( ) const
inherited

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

Definition at line 34 of file kiway_holder.cpp.

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

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

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

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

Definition at line 115 of file dialog_shim.h.

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

116  {
117  m_initialFocusTarget = aWindow;
118  }
wxWindow * m_initialFocusTarget
Definition: dialog_shim.h:179
void KIWAY_HOLDER::SetKiway ( wxWindow *  aDest,
KIWAY aKiway 
)
inherited

Function SetKiway.

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

Definition at line 47 of file kiway_holder.cpp.

References KIWAY_HOLDER::m_kiway, and name.

Referenced by DIALOG_SHIM::DIALOG_SHIM(), InvokePcbLibTableEditor(), KIWAY_HOLDER::Kiway(), and SIM_PLOT_FRAME::SIM_PLOT_FRAME().

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

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

135 {
136  wxSize sz( x, y );
137  SetSize( ConvertDialogToPixels( sz ) );
138 }
bool DIALOG_SHIM::Show ( bool  show)
overrideinherited

Definition at line 162 of file dialog_shim.cpp.

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

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

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

Definition at line 327 of file dialog_shim.cpp.

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

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

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

Definition at line 158 of file dialog_spice_model.cpp.

References empty(), generatePowerSource(), getLibField(), getSchField(), NETLIST_EXPORTER_PSPICE::GetSpiceFieldName(), i, 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, EDA_TEXT::SetText(), LIB_FIELD::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.

159 {
160  if( !DIALOG_SPICE_MODEL_BASE::TransferDataFromWindow() )
161  return false;
162 
163  wxWindow* page = m_notebook->GetCurrentPage();
164 
165  // Passive
166  if( page == m_passive )
167  {
168  if( !m_passive->Validate() )
169  return false;
170 
171  switch( m_pasType->GetSelection() )
172  {
173  case 0: m_fieldsTmp[SF_PRIMITIVE] = (char) SP_RESISTOR; break;
174  case 1: m_fieldsTmp[SF_PRIMITIVE] = (char) SP_CAPACITOR; break;
175  case 2: m_fieldsTmp[SF_PRIMITIVE] = (char) SP_INDUCTOR; break;
176 
177  default:
178  wxASSERT_MSG( false, "Unhandled passive type" );
179  return false;
180  break;
181  }
182 
183  m_fieldsTmp[SF_MODEL] = m_pasValue->GetValue();
184  }
185 
186 
187  // Model
188  else if( page == m_model )
189  {
190  if( !m_model->Validate() )
191  return false;
192 
193  int modelIdx = m_modelType->GetSelection();
194 
195  if( modelIdx > 0 && modelIdx < (int)modelTypes.size() )
196  m_fieldsTmp[SF_PRIMITIVE] = static_cast<char>( modelTypes[modelIdx].type );
197 
198  m_fieldsTmp[SF_MODEL] = m_modelName->GetValue();
199 
200  if( !empty( m_modelLibrary ) )
201  m_fieldsTmp[SF_LIB_FILE] = m_modelLibrary->GetValue();
202  }
203 
204  // Power source
205  else if( page == m_power )
206  {
207  wxString model;
208 
209  if( !generatePowerSource( model ) )
210  return false;
211 
212  m_fieldsTmp[SF_PRIMITIVE] = (char)( m_pwrType->GetSelection() ? SP_ISOURCE : SP_VSOURCE );
213  m_fieldsTmp[SF_MODEL] = model;
214  }
215 
216 
217  else
218  {
219  wxASSERT_MSG( false, "Unhandled model type" );
220  return false;
221  }
222 
223  m_fieldsTmp[SF_ENABLED] = !m_disabled->GetValue() ? "Y" : "N"; // note bool inversion
224  m_fieldsTmp[SF_NODE_SEQUENCE] = m_nodeSeqCheck->IsChecked() ? m_nodeSeqVal->GetValue() : "";
225 
226  // Apply the settings
227  for( int i = 0; i < SF_END; ++i )
228  {
229  if( m_fieldsTmp.count( (SPICE_FIELD) i ) > 0 && !m_fieldsTmp.at( i ).IsEmpty() )
230  {
231  if( m_useSchFields )
232  getSchField( i ).SetText( m_fieldsTmp[i] );
233  else
234  getLibField( i ).SetText( m_fieldsTmp[i] );
235  }
236  else
237  {
238  // Erase empty fields (having empty fields causes a warning in the properties dialog)
239  const wxString& spiceField = NETLIST_EXPORTER_PSPICE::GetSpiceFieldName( (SPICE_FIELD) i );
240 
241  if( m_useSchFields )
242  m_schfields->erase( std::remove_if( m_schfields->begin(), m_schfields->end(),
243  [&]( const SCH_FIELD& f ) { return f.GetName() == spiceField; } ), m_schfields->end() );
244  else
245  m_libfields->erase( std::remove_if( m_libfields->begin(), m_libfields->end(),
246  [&]( const LIB_FIELD& f ) { return f.GetName() == spiceField; } ), m_libfields->end() );
247  }
248  }
249 
250  return true;
251 }
Class SCH_FIELD instances are attached to a component and provide a place for the component&#39;s value...
Definition: sch_field.h:56
Field object used in symbol libraries.
Definition: lib_field.h:59
static const wxString & GetSpiceFieldName(SPICE_FIELD aField)
Returns a string used for a particular component field related to Spice simulation.
LIB_FIELD & getLibField(int aFieldType)
bool generatePowerSource(wxString &aTarget) const
Generates a string to describe power source parameters, basing on the current selection.
static bool empty(const wxTextCtrl *aCtrl)
void SetText(const wxString &aText) override
Sets the field text to aText.
Definition: lib_field.cpp:518
SCH_FIELDS * m_schfields
Fields from the component properties dialog
SCH_FIELD & getSchField(int aFieldType)
Returns or creates a field in the edited schematic fields vector.
std::map< int, wxString > m_fieldsTmp
Temporary field values
size_t i
Definition: json11.cpp:597
static const std::vector< SPICE_MODEL_INFO > modelTypes
virtual void SetText(const wxString &aText)
Definition: eda_text.h:154
bool DIALOG_SPICE_MODEL::TransferDataToWindow ( )
overrideprivatevirtual

Definition at line 254 of file dialog_spice_model.cpp.

References empty(), getModelTypeIdx(), NETLIST_EXPORTER_PSPICE::GetSpiceFieldDefVal(), NETLIST_EXPORTER_PSPICE::GetSpiceFields(), loadLibrary(), m_component, 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, NET_ADJUST_INCLUDE_PATHS, NET_ADJUST_PASSIVE_VALS, parsePowerSource(), SF_ENABLED, SF_LIB_FILE, SF_MODEL, SF_NODE_SEQUENCE, SF_PRIMITIVE, 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().

255 {
256  const auto& spiceFields = NETLIST_EXPORTER_PSPICE::GetSpiceFields();
257 
258  // Fill out the working buffer
259  for( unsigned int idx = 0; idx < spiceFields.size(); ++idx )
260  {
261  const wxString& spiceField = spiceFields[idx];
262 
265 
266  // Do not modify the existing value, just add missing fields with default values
267  if( m_schfields )
268  {
269  for( auto field : *m_schfields )
270  {
271  if( field.GetName() == spiceField && !field.GetText().IsEmpty() )
272  {
273  m_fieldsTmp[idx] = field.GetText();
274  break;
275  }
276  }
277  }
278  else if( m_libfields)
279  {
280  // TODO: There must be a good way to template out these repetitive calls
281  for( auto field : *m_libfields )
282  {
283  if( field.GetName() == spiceField && !field.GetText().IsEmpty() )
284  {
285  m_fieldsTmp[idx] = field.GetText();
286  break;
287  }
288  }
289  }
290  }
291 
292  // Analyze the component fields to fill out the dialog
293  char primitive = toupper( m_fieldsTmp[SF_PRIMITIVE][0] );
294 
295  switch( primitive )
296  {
297  case SP_RESISTOR:
298  case SP_CAPACITOR:
299  case SP_INDUCTOR:
300  m_notebook->SetSelection( m_notebook->FindPage( m_passive ) );
301  m_pasType->SetSelection( primitive == SP_RESISTOR ? 0
302  : primitive == SP_CAPACITOR ? 1
303  : primitive == SP_INDUCTOR ? 2
304  : -1 );
305  m_pasValue->SetValue( m_fieldsTmp[SF_MODEL] );
306  break;
307 
308  case SP_DIODE:
309  case SP_BJT:
310  case SP_MOSFET:
311  case SP_JFET:
312  case SP_SUBCKT:
313  m_notebook->SetSelection( m_notebook->FindPage( m_model ) );
314  m_modelType->SetSelection( getModelTypeIdx( primitive ) );
315  m_modelName->SetValue( m_fieldsTmp[SF_MODEL] );
316  m_modelLibrary->SetValue( m_fieldsTmp[SF_LIB_FILE] );
317 
318  if( !empty( m_modelLibrary ) )
319  {
320  const wxString& libFile = m_modelLibrary->GetValue();
321  m_fieldsTmp[SF_LIB_FILE] = libFile;
322  loadLibrary( libFile );
323  }
324  break;
325 
326  case SP_VSOURCE:
327  case SP_ISOURCE:
328  if( !parsePowerSource( m_fieldsTmp[SF_MODEL] ) )
329  return false;
330 
331  m_notebook->SetSelection( m_notebook->FindPage( m_power ) );
332  m_pwrType->SetSelection( primitive == SP_ISOURCE ? 1 : 0 );
333  break;
334 
335  default:
336  //wxASSERT_MSG( false, "Unhandled Spice primitive type" );
337  break;
338  }
339 
341 
342  // Check if node sequence is different than the default one
345  {
346  m_nodeSeqCheck->SetValue( true );
348  }
349 
350  return DIALOG_SPICE_MODEL_BASE::TransferDataToWindow();
351 }
SCH_COMPONENT & m_component
Edited component
static bool StringToBool(const wxString &aStr)
Convertes 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)
static wxString GetSpiceFieldDefVal(SPICE_FIELD aField, SCH_COMPONENT *aComponent, unsigned aCtl)
Retrieves the default value for a given field.
static bool empty(const wxTextCtrl *aCtrl)
SCH_FIELDS * m_schfields
Fields from the component properties dialog
std::map< int, wxString > m_fieldsTmp
Temporary field values
void loadLibrary(const wxString &aFilePath)
Loads a list of components (.model and .subckt) from a spice library file and adds them to a combo bo...
static const std::vector< wxString > & GetSpiceFields()
Returns a vector of component field names related to Spice simulation.
virtual bool DIALOG_SPICE_MODEL::Validate ( )
inlineoverrideprivatevirtual

Definition at line 91 of file dialog_spice_model.h.

92  {
93  return true;
94  }
int DIALOG_SHIM::VertPixelsFromDU ( int  y)
protectedinherited

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

See SetSizeInDU or wxDialog documentation for more information.

Definition at line 148 of file dialog_shim.cpp.

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

149 {
150  wxSize sz( 0, y );
151  return ConvertDialogToPixels( sz ).y;
152 }

Member Data Documentation

SCH_COMPONENT& DIALOG_SPICE_MODEL::m_component
private

Edited component

Definition at line 117 of file dialog_spice_model.h.

Referenced by getSchField(), and TransferDataToWindow().

wxCheckBox* DIALOG_SPICE_MODEL_BASE::m_disabled
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expFallConst
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expFallDelay
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expInit
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expPulsed
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expRiseConst
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_expRiseDelay
protectedinherited
std::map<int, wxString> DIALOG_SPICE_MODEL::m_fieldsTmp
private

Temporary field values

Definition at line 125 of file dialog_spice_model.h.

Referenced by TransferDataFromWindow(), and TransferDataToWindow().

bool DIALOG_SHIM::m_firstPaintEvent
protectedinherited

Definition at line 178 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_genAcMag
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_genAcPhase
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_genDc
protectedinherited
wxWindow* DIALOG_SHIM::m_initialFocusTarget
protectedinherited

Definition at line 179 of file dialog_shim.h.

Referenced by DIALOG_SHIM::OnPaint().

LIB_FIELDS* DIALOG_SPICE_MODEL::m_libfields
private

Definition at line 121 of file dialog_spice_model.h.

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

wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_libraryContents
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_model
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_modelLibrary
protectedinherited
std::map<wxString, MODEL> DIALOG_SPICE_MODEL::m_models
private

Models available in the selected library file

Definition at line 145 of file dialog_spice_model.h.

Referenced by loadLibrary(), and onModelSelected().

wxComboBox* DIALOG_SPICE_MODEL_BASE::m_modelType
protectedinherited
wxCheckBox* DIALOG_SPICE_MODEL_BASE::m_nodeSeqCheck
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_nodeSeqVal
protectedinherited
wxNotebook* DIALOG_SPICE_MODEL_BASE::m_notebook
protectedinherited
wxTextValidator DIALOG_SPICE_MODEL::m_notEmptyValidator
private

Definition at line 152 of file dialog_spice_model.h.

Referenced by Init().

wxPanel* DIALOG_SPICE_MODEL_BASE::m_passive
protectedinherited
wxComboBox* DIALOG_SPICE_MODEL_BASE::m_pasType
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pasValue
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_power
protectedinherited
wxNotebook* DIALOG_SPICE_MODEL_BASE::m_powerNotebook
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseDelay
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseFall
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseInit
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseNominal
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulsePeriod
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseRise
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pulseWidth
protectedinherited
wxButton* DIALOG_SPICE_MODEL_BASE::m_pwlAddButton
protectedinherited
wxButton* DIALOG_SPICE_MODEL_BASE::m_pwlRemoveBtn
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pwlTime
protectedinherited
long DIALOG_SPICE_MODEL::m_pwlTimeCol
private

Column identifiers for PWL power source value list

Definition at line 148 of file dialog_spice_model.h.

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

wxListCtrl* DIALOG_SPICE_MODEL_BASE::m_pwlValList
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_pwlValue
protectedinherited
long DIALOG_SPICE_MODEL::m_pwlValueCol
private

Definition at line 148 of file dialog_spice_model.h.

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

wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrAm
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrExp
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrExtData
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrFm
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrPulse
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrPwl
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrRandom
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrSin
protectedinherited
wxPanel* DIALOG_SPICE_MODEL_BASE::m_pwrTransNoise
protectedinherited
wxRadioBox* DIALOG_SPICE_MODEL_BASE::m_pwrType
protectedinherited
WX_EVENT_LOOP* DIALOG_SHIM::m_qmodal_loop
protectedinherited

Definition at line 182 of file dialog_shim.h.

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

WDO_ENABLE_DISABLE* DIALOG_SHIM::m_qmodal_parent_disabler
protectedinherited
bool DIALOG_SHIM::m_qmodal_showing
protectedinherited

Definition at line 183 of file dialog_shim.h.

Referenced by DIALOG_SHIM::ShowQuasiModal().

SCH_FIELDS* DIALOG_SPICE_MODEL::m_schfields
private

Fields from the component properties dialog

Definition at line 120 of file dialog_spice_model.h.

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

wxStdDialogButtonSizer* DIALOG_SPICE_MODEL_BASE::m_sdbSizer
protectedinherited
wxButton* DIALOG_SPICE_MODEL_BASE::m_sdbSizerCancel
protectedinherited
wxButton* DIALOG_SPICE_MODEL_BASE::m_sdbSizerOK
protectedinherited
wxButton* DIALOG_SPICE_MODEL_BASE::m_selectLibrary
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinAmplitude
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinDampFactor
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinDelay
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinFreq
protectedinherited
wxTextCtrl* DIALOG_SPICE_MODEL_BASE::m_sinOffset
protectedinherited
SPICE_VALIDATOR DIALOG_SPICE_MODEL::m_spiceEmptyValidator
private

Definition at line 151 of file dialog_spice_model.h.

Referenced by Init().

SPICE_VALIDATOR DIALOG_SPICE_MODEL::m_spiceValidator
private

Definition at line 150 of file dialog_spice_model.h.

Referenced by Init().

wxStaticLine* DIALOG_SPICE_MODEL_BASE::m_staticline1
protectedinherited
wxStaticLine* DIALOG_SPICE_MODEL_BASE::m_staticline2
protectedinherited
wxStaticLine* DIALOG_SPICE_MODEL_BASE::m_staticline3
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText10
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText11
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText111
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText112
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText113
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText12
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText13
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText131
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText132
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText133
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText134
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText135
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText136
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText137
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText14
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText15
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText16
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText17
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText18
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText20
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText21
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText211
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText212
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText213
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText214
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText215
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText22
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText23
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText24
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText25
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText26
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText261
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText262
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText263
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText264
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText265
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText266
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText27
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText28
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText29
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText30
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText31
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText32
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText321
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText34
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText341
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText342
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText343
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText35
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText36
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText37
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText38
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText39
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText4
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText40
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText41
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText42
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText43
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText44
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText45
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText46
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText47
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText48
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText49
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText5
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText50
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText51
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText52
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText53
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText54
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText55
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText56
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText57
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText58
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText59
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText60
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText62
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText7
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticText_femto
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextPtype
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextPvalue
protectedinherited
wxStaticText* DIALOG_SPICE_MODEL_BASE::m_staticTextSpVal
protectedinherited
bool DIALOG_SPICE_MODEL::m_useSchFields
private

Definition at line 122 of file dialog_spice_model.h.

Referenced by TransferDataFromWindow().


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