KiCad PCB EDA Suite
PCB_CALCULATOR_FRAME_BASE Class Referenceabstract

Class PCB_CALCULATOR_FRAME_BASE. More...

#include <pcb_calculator_frame_base.h>

Inheritance diagram for PCB_CALCULATOR_FRAME_BASE:
KIWAY_PLAYER EDA_BASE_FRAME TOOLS_HOLDER KIWAY_HOLDER PCB_CALCULATOR_FRAME

Public Types

enum  UNDO_REDO_LIST { UNDO_LIST, REDO_LIST }
 Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if needed. More...
 
enum  HOLDER_TYPE { DIALOG, FRAME, PANEL }
 

Public Member Functions

 PCB_CALCULATOR_FRAME_BASE (wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("PCB Calculator"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL, const wxString &name=wxT("pcb_calculator"))
 
 ~PCB_CALCULATOR_FRAME_BASE ()
 
virtual bool OpenProjectFiles (const std::vector< wxString > &aFileList, int aCtl=0)
 Open a project or set of files given by aFileList. More...
 
virtual void ParseArgs (wxCmdLineParser &aParser)
 Handle command-line arguments in a frame-specific way. More...
 
virtual bool ShowModal (wxString *aResult=nullptr, wxWindow *aResultantFocusWindow=nullptr)
 Show this wxFrame as if it were a modal dialog, with all other instantiated wxFrames disabled until this KIWAY_PLAYER derivative calls DismissModal(). More...
 
virtual void KiwayMailIn (KIWAY_EXPRESS &aEvent)
 Receive KIWAY_EXPRESS messages from other players. More...
 
bool Destroy () override
 Our version of Destroy() which is virtual from wxWidgets. More...
 
bool IsModal () const override
 Return true if the frame is shown in our modal mode and false if the frame is shown as an usual frame. More...
 
void SetModal (bool aIsModal)
 
bool IsDismissed ()
 
void DismissModal (bool aRetVal, const wxString &aResult=wxEmptyString)
 
EDA_UNITS GetUserUnits () const
 Return the user units currently in use. More...
 
void SetUserUnits (EDA_UNITS aUnits)
 
void ChangeUserUnits (EDA_UNITS aUnits)
 
virtual void ToggleUserUnits ()
 
SETTINGS_MANAGERGetSettingsManager () const
 
virtual SEVERITY GetSeverity (int aErrorCode) const
 
bool ProcessEvent (wxEvent &aEvent) override
 Override the default process event handler to implement the auto save feature. More...
 
virtual void OnCharHook (wxKeyEvent &event)
 Capture the key event before it is sent to the GUI. More...
 
void OnMenuEvent (wxMenuEvent &event)
 The TOOL_DISPATCHER needs these to work around some issues in wxWidgets where the menu events aren't captured by the menus themselves. More...
 
virtual void RegisterUIUpdateHandler (int aID, const ACTION_CONDITIONS &aConditions) override
 Register a UI update handler for the control with ID aID. More...
 
virtual void RegisterUIUpdateHandler (const TOOL_ACTION &aAction, const ACTION_CONDITIONS &aConditions)
 Register an action's update conditions with the UI layer to allow the UI to appropriately display the state of its controls. More...
 
virtual void UnregisterUIUpdateHandler (int aID) override
 Unregister a UI handler for a given ID that was registered using RegisterUIUpdateHandler. More...
 
virtual void UnregisterUIUpdateHandler (const TOOL_ACTION &aAction)
 Unregister a UI handler for an action that was registered using RegisterUIUpdateHandler. More...
 
virtual void OnMove (wxMoveEvent &aEvent)
 
void OnMaximize (wxMaximizeEvent &aEvent)
 
void SetAutoSaveInterval (int aInterval)
 
int GetAutoSaveInterval () const
 
bool IsType (FRAME_T aType) const
 
virtual const SEARCH_STACKsys_search ()
 Return a SEARCH_STACK pertaining to entire program. More...
 
virtual wxString help_name ()
 
void OnKicadAbout (wxCommandEvent &event)
 
void OnPreferences (wxCommandEvent &event)
 
void PrintMsg (const wxString &text)
 
void CreateInfoBar ()
 
void FinishAUIInitialization ()
 
WX_INFOBARGetInfoBar ()
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarError (const wxString &aErrorMsg, bool aShowCloseButton, std::function< void(void)> aCallback)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an error icon on the left of the infobar, and an optional closebox to the right. More...
 
void ShowInfoBarWarning (const wxString &aWarningMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and a warning icon on the left of the infobar. More...
 
void ShowInfoBarMsg (const wxString &aMsg, bool aShowCloseButton=false)
 Show the WX_INFOBAR displayed on the top of the canvas with a message and an info icon on the left of the infobar. More...
 
virtual APP_SETTINGS_BASEconfig () const
 Returns the settings object used in SaveSettings(), and is overloaded in KICAD_MANAGER_FRAME. More...
 
virtual void InstallPreferences (PAGED_DIALOG *, PANEL_HOTKEYS_EDITOR *)
 Allow a frame to load its preference panels (if any) into the preferences dialog. More...
 
void LoadWindowState (const wxString &aFileName)
 
virtual void LoadWindowState (const WINDOW_STATE &aState)
 Load frame state info from a configuration file. More...
 
void LoadWindowSettings (const WINDOW_SETTINGS *aCfg)
 Load window settings from the given settings object. More...
 
void SaveWindowSettings (WINDOW_SETTINGS *aCfg)
 Save window settings to the given settings object. More...
 
virtual void LoadSettings (APP_SETTINGS_BASE *aCfg)
 Load common frame parameters from a configuration file. More...
 
virtual void SaveSettings (APP_SETTINGS_BASE *aCfg)
 Save common frame parameters to a configuration data file. More...
 
virtual WINDOW_SETTINGSGetWindowSettings (APP_SETTINGS_BASE *aCfg)
 Return a pointer to the window settings for this frame. More...
 
wxString ConfigBaseName () override
 Get the configuration base name. More...
 
virtual void SaveProjectSettings ()
 Save changes to the project settings to the project (.pro) file. More...
 
void ImportHotkeyConfigFromFile (std::map< std::string, TOOL_ACTION * > aActionMap, const wxString &aDefaultShortname)
 Prompt the user for a hotkey file to read, and read it. More...
 
wxString GetFileFromHistory (int cmdId, const wxString &type, FILE_HISTORY *aFileHistory=nullptr)
 Fetches the file name from the file history list. More...
 
void ClearFileHistory (FILE_HISTORY *aFileHistory=nullptr)
 Removes all files from the file history. More...
 
void UpdateFileHistory (const wxString &FullFileName, FILE_HISTORY *aFileHistory=nullptr)
 Update the list of recently opened files. More...
 
FILE_HISTORYGetFileHistory ()
 Get the frame's main file history. More...
 
void SetMruPath (const wxString &aPath)
 
wxString GetMruPath () const
 
virtual wxString GetCurrentFileName () const
 Get the full filename + path of the currently opened file in the frame. More...
 
virtual void ReCreateMenuBar ()
 Recreates the menu bar. More...
 
void AddStandardHelpMenu (wxMenuBar *aMenuBar)
 Adds the standard KiCad help menu to the menubar. More...
 
bool IsWritable (const wxFileName &aFileName)
 Checks if aFileName can be written. More...
 
void CheckForAutoSaveFile (const wxFileName &aFileName)
 Check if an auto save file exists for aFileName and takes the appropriate action depending on the user input. More...
 
virtual void UpdateStatusBar ()
 Update the status bar information. More...
 
virtual void ShowChangedLanguage ()
 Redraw the menus and what not in current language. More...
 
void CommonSettingsChanged (bool aEnvVarsChanged, bool aTextVarsChanged) override
 Notification event that some of the common (suite-wide) settings have changed. More...
 
virtual void ThemeChanged ()
 Process light/dark theme change. More...
 
virtual void ProjectChanged ()
 Notification event that the project has changed. More...
 
const wxString & GetAboutTitle () const
 
virtual bool IsContentModified ()
 Get if the contents of the frame have been modified since the last save. More...
 
wxSize GetWindowSize ()
 Get the undecorated window size that can be used for restoring the window size. More...
 
virtual void ClearUndoORRedoList (UNDO_REDO_LIST aList, int aItemCount=-1)
 
virtual void ClearUndoRedoList ()
 Clear the undo and redo list using ClearUndoORRedoList() More...
 
virtual void PushCommandToUndoList (PICKED_ITEMS_LIST *aItem)
 Add a command to undo in the undo list. More...
 
virtual void PushCommandToRedoList (PICKED_ITEMS_LIST *aItem)
 Add a command to redo in the redo list. More...
 
virtual PICKED_ITEMS_LISTPopCommandFromUndoList ()
 Return the last command to undo and remove it from list, nothing is deleted. More...
 
virtual PICKED_ITEMS_LISTPopCommandFromRedoList ()
 Return the last command to undo and remove it from list, nothing is deleted. More...
 
virtual int GetUndoCommandCount () const
 
virtual int GetRedoCommandCount () const
 
int GetMaxUndoItems () const
 
bool NonUserClose (bool aForce)
 
virtual void HandleSystemColorChange ()
 Update the UI in response to a change in the system colors. More...
 
TOOL_MANAGERGetToolManager () const
 Return the MVC controller. More...
 
virtual SELECTIONGetCurrentSelection ()
 Get the current selection from the canvas area. More...
 
virtual void PushTool (const std::string &actionName)
 NB: the definition of "tool" is different at the user level. More...
 
virtual void PopTool (const std::string &actionName)
 
bool ToolStackIsEmpty ()
 
std::string CurrentToolName () const
 
bool IsCurrentTool (const TOOL_ACTION &aAction) const
 
virtual void DisplayToolMsg (const wxString &msg)
 
bool GetDoImmediateActions () const
 Indicate that hotkeys should perform an immediate action even if another tool is currently active. More...
 
MOUSE_DRAG_ACTION GetDragAction () const
 Indicates whether a drag should draw a selection rectangle or drag selected (or unselected) objects. More...
 
bool GetMoveWarpsCursor () const
 Indicate that a move operation should warp the mouse pointer to the origin of the move object. More...
 
virtual wxWindow * GetToolCanvas () const =0
 Canvas access. More...
 
virtual void RefreshCanvas ()
 
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 void HandleUpdateUIEvent (wxUpdateUIEvent &aEvent, EDA_BASE_FRAME *aFrame, ACTION_CONDITIONS aCond)
 Handle events generated when the UI is trying to figure out the current state of the UI controls related to TOOL_ACTIONS (e.g. More...
 

Protected Member Functions

virtual void OnClosePcbCalc (wxCloseEvent &event)
 
virtual void OnUpdateUI (wxUpdateUIEvent &event)
 
virtual void OnRegulTypeSelection (wxCommandEvent &event)
 
virtual void OnRegulatorCalcButtonClick (wxCommandEvent &event)
 
virtual void OnRegulatorResetButtonClick (wxCommandEvent &event)
 
virtual void OnRegulatorSelection (wxCommandEvent &event)
 
virtual void OnDataFileSelection (wxCommandEvent &event)
 
virtual void OnEditRegulator (wxCommandEvent &event)
 
virtual void OnAddRegulator (wxCommandEvent &event)
 
virtual void OnRemoveRegulator (wxCommandEvent &event)
 
virtual void OnAttenuatorSelection (wxCommandEvent &event)
 
virtual void OnCalculateAttenuator (wxCommandEvent &event)
 
virtual void OnESeriesSelection (wxCommandEvent &event)
 
virtual void OnCalculateESeries (wxCommandEvent &event)
 
virtual void OnToleranceSelection (wxCommandEvent &event)
 
virtual void OnTranslineSelection (wxCommandEvent &event)
 
virtual void OnTranslineEpsilonR_Button (wxCommandEvent &event)
 
virtual void OnTranslineTanD_Button (wxCommandEvent &event)
 
virtual void OnTranslineRho_Button (wxCommandEvent &event)
 
virtual void OnTranslineAnalyse (wxCommandEvent &event)
 
virtual void OnTranslineSynthetize (wxCommandEvent &event)
 
virtual void OnTransLineResetButtonClick (wxCommandEvent &event)
 
virtual void OnViaCalculate (wxCommandEvent &event)
 
virtual void OnViaRho_Button (wxCommandEvent &event)
 
virtual void OnViaEpsilonR_Button (wxCommandEvent &event)
 
virtual void onUpdateViaCalcErrorText (wxUpdateUIEvent &event)
 
virtual void OnViaResetButtonClick (wxCommandEvent &event)
 
virtual void OnTWCalculateFromCurrent (wxCommandEvent &event)
 
virtual void OnTWParametersChanged (wxCommandEvent &event)
 
virtual void OnTWCalculateFromExtWidth (wxCommandEvent &event)
 
virtual void OnTWCalculateFromIntWidth (wxCommandEvent &event)
 
virtual void OnTWResetButtonClick (wxCommandEvent &event)
 
virtual void OnElectricalSpacingUnitsSelection (wxCommandEvent &event)
 
virtual void OnElectricalSpacingRefresh (wxCommandEvent &event)
 
virtual void OnBoardClassesUnitsSelection (wxCommandEvent &event)
 
void kiway_express (KIWAY_EXPRESS &aEvent)
 event handler, routes to derivative specific virtual KiwayMailIn() More...
 
void language_change (wxCommandEvent &event)
 An event handler called on a language menu selection. More...
 
void onAutoSaveTimer (wxTimerEvent &aEvent)
 Handle the auto save timer event. More...
 
virtual bool isAutoSaveRequired () const
 Return the auto save status of the application. More...
 
virtual bool doAutoSave ()
 This should be overridden by the derived class to handle the auto save feature. More...
 
virtual bool canCloseWindow (wxCloseEvent &aCloseEvent)
 
virtual void doCloseWindow ()
 
void onSystemColorChange (wxSysColourChangedEvent &aEvent)
 
virtual void unitsChangeRefresh ()
 Called when when the units setting has changed to allow for any derived classes to handle refreshing and controls that have units based measurements in them. More...
 
virtual void setupUIConditions ()
 Setup the UI conditions for the various actions and their controls in this frame. More...
 
void initExitKey ()
 Sets the common key-pair for exiting the application (Ctrl-Q) and ties it to the wxID_EXIT event id. More...
 

Static Protected Member Functions

static wxString GetAutoSaveFilePrefix ()
 

Protected Attributes

wxMenuBar * m_menubar
 
wxNotebook * m_Notebook
 
wxPanel * m_panelRegulators
 
wxStaticText * m_staticTextRegType
 
wxChoice * m_choiceRegType
 
wxStaticBitmap * m_bitmapRegul4pins
 
wxStaticBitmap * m_bitmapRegul3pins
 
wxStaticText * m_RegulFormula
 
wxRadioButton * m_rbRegulR1
 
wxStaticText * m_labelRegultR1
 
wxTextCtrl * m_RegulR1Value
 
wxStaticText * m_r1Units
 
wxRadioButton * m_rbRegulR2
 
wxStaticText * m_labelRegultR2
 
wxTextCtrl * m_RegulR2Value
 
wxStaticText * m_r2Units
 
wxRadioButton * m_rbRegulVout
 
wxStaticText * m_labelVout
 
wxTextCtrl * m_RegulVoutValue
 
wxStaticText * m_unitsVout
 
wxStaticText * m_labelVRef
 
wxTextCtrl * m_RegulVrefValue
 
wxStaticText * m_unitsVref
 
wxStaticText * m_RegulIadjTitle
 
wxTextCtrl * m_RegulIadjValue
 
wxStaticText * m_IadjUnitLabel
 
wxButton * m_buttonCalculate
 
wxButton * m_buttonRegulReset
 
wxStaticText * m_RegulMessage
 
wxChoice * m_choiceRegulatorSelector
 
wxStaticText * m_staticTextRegFile
 
wxTextCtrl * m_regulators_fileNameCtrl
 
wxButton * m_buttonDataFile
 
wxButton * m_buttonEditItem
 
wxButton * m_buttonAddItem
 
wxButton * m_buttonRemoveItem
 
wxPanel * m_panelAttenuators
 
wxRadioBox * m_AttenuatorsSelection
 
wxStaticBitmap * m_attenuatorBitmap
 
wxStaticText * m_attenuationLabel
 
wxTextCtrl * m_AttValueCtrl
 
wxStaticText * m_attUnit
 
wxStaticText * m_attenuationZinLabel
 
wxTextCtrl * m_ZinValueCtrl
 
wxStaticText * m_attZinUnit
 
wxStaticText * m_ZoutLabel
 
wxTextCtrl * m_ZoutValueCtrl
 
wxStaticText * m_attZoutUnit
 
wxButton * m_buttonAlcAtt
 
wxBitmapButton * m_bpButtonCalcAtt
 
wxStaticText * m_attenuatorR1Label
 
wxTextCtrl * m_Att_R1_Value
 
wxStaticText * m_attR1Unit
 
wxStaticText * m_attenuatorR2Label
 
wxTextCtrl * m_Att_R2_Value
 
wxStaticText * m_attR2Unit
 
wxStaticText * m_attenuatorR3Label
 
wxTextCtrl * m_Att_R3_Value
 
wxStaticText * m_attR3Unit
 
wxStaticText * m_staticTextAttMsg
 
wxHtmlWindow * m_Attenuator_Messages
 
wxHtmlWindow * m_panelAttFormula
 
wxPanel * m_panelESeries
 
wxStaticText * m_ESrequired
 
wxTextCtrl * m_ResRequired
 
wxStaticText * m_reqResUnits
 
wxStaticText * m_ESrequired1
 
wxTextCtrl * m_ResExclude1
 
wxStaticText * m_exclude1Units
 
wxStaticText * m_ESrequired11
 
wxTextCtrl * m_ResExclude2
 
wxStaticText * m_exclude2Units
 
wxStaticLine * m_staticline6
 
wxRadioButton * m_e1
 
wxRadioButton * m_e3
 
wxRadioButton * m_e6
 
wxRadioButton * m_e12
 
wxStaticText * m_ESerieSimpleSolution
 
wxTextCtrl * m_ESeries_Sol2R
 
wxStaticText * m_ESeriesSimpleErr
 
wxTextCtrl * m_ESeriesError2R
 
wxStaticText * m_ESeriesSimplePercent
 
wxStaticText * m_ESerie3RSolution1
 
wxTextCtrl * m_ESeries_Sol3R
 
wxStaticText * m_ESeriesAltErr
 
wxTextCtrl * m_ESeriesError3R
 
wxStaticText * m_ESeriesAltPercent
 
wxStaticText * m_ESeries4RSolution
 
wxTextCtrl * m_ESeries_Sol4R
 
wxStaticText * m_ESeriesAltErr1
 
wxTextCtrl * m_ESeriesError4R
 
wxStaticText * m_ESeriesAltPercent1
 
wxStaticLine * m_staticline7
 
wxButton * m_buttonEScalculate
 
wxHtmlWindow * m_panelESeriesHelp
 
wxPanel * m_panelColorCode
 
wxRadioBox * m_rbToleranceSelection
 
wxStaticText * m_staticText31
 
wxStaticText * m_staticText34
 
wxStaticText * m_staticText35
 
wxStaticText * m_Band4Label
 
wxStaticText * m_staticText37
 
wxStaticText * m_staticText38
 
wxStaticBitmap * m_Band1bitmap
 
wxStaticBitmap * m_Band2bitmap
 
wxStaticBitmap * m_Band3bitmap
 
wxStaticBitmap * m_Band4bitmap
 
wxStaticBitmap * m_Band_mult_bitmap
 
wxStaticBitmap * m_Band_tol_bitmap
 
wxPanel * m_panelTransline
 
wxRadioBox * m_TranslineSelection
 
wxStaticBitmap * m_translineBitmap
 
wxStaticText * m_EpsilonR_label
 
wxTextCtrl * m_Value_EpsilonR
 
wxButton * m_button_EpsilonR
 
wxStaticText * m_TanD_label
 
wxTextCtrl * m_Value_TanD
 
wxButton * m_button_TanD
 
wxStaticText * m_Rho_label
 
wxTextCtrl * m_Value_Rho
 
wxButton * m_button_Rho
 
wxStaticText * m_substrate_prm4_label
 
wxTextCtrl * m_Substrate_prm4_Value
 
UNIT_SELECTOR_LENm_SubsPrm4_choiceUnit
 
wxStaticText * m_substrate_prm5_label
 
wxTextCtrl * m_Substrate_prm5_Value
 
UNIT_SELECTOR_LENm_SubsPrm5_choiceUnit
 
wxStaticText * m_substrate_prm6_label
 
wxTextCtrl * m_Substrate_prm6_Value
 
UNIT_SELECTOR_LENm_SubsPrm6_choiceUnit
 
wxStaticText * m_substrate_prm7_label
 
wxTextCtrl * m_Substrate_prm7_Value
 
UNIT_SELECTOR_LENm_SubsPrm7_choiceUnit
 
wxStaticText * m_substrate_prm8_label
 
wxTextCtrl * m_Substrate_prm8_Value
 
UNIT_SELECTOR_LENm_SubsPrm8_choiceUnit
 
wxStaticText * m_substrate_prm9_label
 
wxTextCtrl * m_Substrate_prm9_Value
 
UNIT_SELECTOR_LENm_SubsPrm9_choiceUnit
 
wxStaticText * m_Frequency_label
 
wxTextCtrl * m_Value_Frequency_Ctrl
 
UNIT_SELECTOR_FREQUENCYm_choiceUnit_Frequency
 
wxStaticBitmap * m_bmCMicrostripZoddZeven
 
wxFlexGridSizer * m_fgSizerZcomment
 
wxStaticText * m_staticTextZdiff
 
wxStaticText * m_staticTextZcommon
 
wxStaticText * m_phys_prm1_label
 
wxTextCtrl * m_Phys_prm1_Value
 
UNIT_SELECTOR_LENm_choiceUnit_Param1
 
wxRadioButton * m_radioBtnPrm1
 
wxStaticText * m_phys_prm2_label
 
wxTextCtrl * m_Phys_prm2_Value
 
UNIT_SELECTOR_LENm_choiceUnit_Param2
 
wxRadioButton * m_radioBtnPrm2
 
wxStaticText * m_phys_prm3_label
 
wxTextCtrl * m_Phys_prm3_Value
 
UNIT_SELECTOR_LENm_choiceUnit_Param3
 
wxBitmapButton * m_bpButtonAnalyze
 
wxButton * m_AnalyseButton
 
wxButton * m_SynthetizeButton
 
wxBitmapButton * m_bpButtonSynthetize
 
wxStaticText * m_elec_prm1_label
 
wxTextCtrl * m_Elec_prm1_Value
 
UNIT_SELECTOR_RESISTORm_choiceUnit_ElecPrm1
 
wxStaticText * m_elec_prm2_label
 
wxTextCtrl * m_Elec_prm2_Value
 
UNIT_SELECTOR_RESISTORm_choiceUnit_ElecPrm2
 
wxStaticText * m_elec_prm3_label
 
wxTextCtrl * m_Elec_prm3_Value
 
UNIT_SELECTOR_ANGLEm_choiceUnit_ElecPrm3
 
wxStaticText * m_left_message1
 
wxStaticText * m_Message1
 
wxStaticText * m_left_message2
 
wxStaticText * m_Message2
 
wxStaticText * m_left_message3
 
wxStaticText * m_Message3
 
wxStaticText * m_left_message4
 
wxStaticText * m_Message4
 
wxStaticText * m_left_message5
 
wxStaticText * m_Message5
 
wxStaticText * m_left_message6
 
wxStaticText * m_Message6
 
wxStaticText * m_left_message7
 
wxStaticText * m_Message7
 
wxButton * m_buttonTransLineReset
 
wxPanel * m_panelViaSize
 
wxStaticText * m_staticTextHoleDia
 
wxTextCtrl * m_textCtrlHoleDia
 
UNIT_SELECTOR_LENm_choiceHoleDia
 
wxStaticText * m_staticTextPlatingThickness
 
wxTextCtrl * m_textCtrlPlatingThickness
 
UNIT_SELECTOR_LENm_choicePlatingThickness
 
wxStaticText * m_staticTextViaLength
 
wxTextCtrl * m_textCtrlViaLength
 
UNIT_SELECTOR_LENm_choiceViaLength
 
wxStaticText * m_staticTextViaPadDia
 
wxTextCtrl * m_textCtrlViaPadDia
 
UNIT_SELECTOR_LENm_choiceViaPadDia
 
wxStaticText * m_staticTextClearanceDia
 
wxTextCtrl * m_textCtrlClearanceDia
 
UNIT_SELECTOR_LENm_choiceClearanceDia
 
wxStaticText * m_staticTextImpedance
 
wxTextCtrl * m_textCtrlImpedance
 
UNIT_SELECTOR_RESISTORm_choiceImpedance
 
wxStaticText * m_staticAppliedCurrent
 
wxTextCtrl * m_textCtrlAppliedCurrent
 
wxStaticText * m_staticTextAppliedCurrentUnits
 
wxStaticText * m_staticTextResistivity
 
wxTextCtrl * m_textCtrlPlatingResistivity
 
wxButton * m_button_ResistivityVia
 
wxStaticText * m_viaResistivityUnits
 
wxStaticText * m_staticTextPermittivity
 
wxTextCtrl * m_textCtrlPlatingPermittivity
 
wxButton * m_button_Permittivity
 
wxStaticText * m_staticTextTemperatureDiff
 
wxTextCtrl * m_textCtrlTemperatureDiff
 
wxStaticText * m_viaTempUnits
 
wxStaticText * m_staticTextRiseTime
 
wxTextCtrl * m_textCtrlRiseTime
 
wxStaticText * m_staticTextRiseTimeUnits
 
wxStaticText * m_staticTextWarning
 
wxStaticText * m_staticTextArea11
 
wxStaticText * m_ViaResistance
 
wxStaticText * m_viaResUnits
 
wxStaticText * m_staticText65111
 
wxStaticText * m_ViaVoltageDrop
 
wxStaticText * m_staticText8411
 
wxStaticText * m_staticText66111
 
wxStaticText * m_ViaPowerLoss
 
wxStaticText * m_staticText8311
 
wxStaticText * m_staticText79211
 
wxStaticText * m_ViaThermalResistance
 
wxStaticText * m_viaThermalResUnits
 
wxStaticText * m_staticTextAmpacity
 
wxStaticText * m_ViaAmpacity
 
wxStaticText * m_staticTextAmpacityUnits
 
wxStaticText * m_staticTextCapacitance
 
wxStaticText * m_ViaCapacitance
 
wxStaticText * m_staticTextCapacitanceUnits
 
wxStaticText * m_staticTextRiseTimeOutput
 
wxStaticText * m_RiseTimeOutput
 
wxStaticText * m_staticTextRiseTimeOutputUnits
 
wxStaticText * m_staticTextInductance
 
wxStaticText * m_Inductance
 
wxStaticText * m_staticTextInductanceUnits
 
wxStaticText * m_staticTextReactance
 
wxStaticText * m_Reactance
 
wxStaticText * m_viaReactanceUnits
 
wxStaticBitmap * m_viaBitmap
 
wxButton * m_buttonViaReset
 
wxPanel * m_panelTrackWidth
 
wxStaticText * m_staticTextCurrent
 
wxTextCtrl * m_TrackCurrentValue
 
wxStaticText * m_staticText62
 
wxStaticText * m_staticText63
 
wxTextCtrl * m_TrackDeltaTValue
 
wxStaticText * m_trackTempUnits
 
wxStaticText * m_staticText66
 
wxTextCtrl * m_TrackLengthValue
 
UNIT_SELECTOR_LENm_TW_CuLength_choiceUnit
 
wxStaticText * m_staticText103
 
wxTextCtrl * m_TWResistivity
 
wxStaticText * m_resistivityUnits
 
wxHtmlWindow * m_htmlWinFormulas
 
wxStaticText * m_staticTextExtWidth
 
wxTextCtrl * m_ExtTrackWidthValue
 
UNIT_SELECTOR_LENm_TW_ExtTrackWidth_choiceUnit
 
wxStaticText * m_staticText65
 
wxTextCtrl * m_ExtTrackThicknessValue
 
UNIT_SELECTOR_THICKNESSm_ExtTrackThicknessUnit
 
wxStaticLine * m_staticline3
 
wxStaticLine * m_staticline4
 
wxStaticLine * m_staticline5
 
wxStaticText * m_staticTextArea
 
wxStaticText * m_ExtTrackAreaValue
 
wxStaticText * m_extTrackAreaUnitLabel
 
wxStaticText * m_staticText651
 
wxStaticText * m_ExtTrackResistValue
 
wxStaticText * m_extTrackResUnits
 
wxStaticText * m_staticText661
 
wxStaticText * m_ExtTrackVDropValue
 
wxStaticText * m_staticText83
 
wxStaticText * m_staticText79
 
wxStaticText * m_ExtTrackLossValue
 
wxStaticText * m_staticText791
 
wxStaticText * m_staticTextIntWidth
 
wxTextCtrl * m_IntTrackWidthValue
 
UNIT_SELECTOR_LENm_TW_IntTrackWidth_choiceUnit
 
wxStaticText * m_staticText652
 
wxTextCtrl * m_IntTrackThicknessValue
 
UNIT_SELECTOR_THICKNESSm_IntTrackThicknessUnit
 
wxStaticLine * m_staticline8
 
wxStaticLine * m_staticline9
 
wxStaticLine * m_staticline10
 
wxStaticText * m_staticTextArea1
 
wxStaticText * m_IntTrackAreaValue
 
wxStaticText * m_intTrackAreaUnitLabel
 
wxStaticText * m_staticText6511
 
wxStaticText * m_IntTrackResistValue
 
wxStaticText * m_intTrackResUnits
 
wxStaticText * m_staticText6611
 
wxStaticText * m_IntTrackVDropValue
 
wxStaticText * m_staticText831
 
wxStaticText * m_staticText792
 
wxStaticText * m_IntTrackLossValue
 
wxStaticText * m_staticText7911
 
wxButton * m_buttonTrackWidthReset
 
wxPanel * m_panelElectricalSpacing
 
UNIT_SELECTOR_LENm_ElectricalSpacingUnitsSelector
 
wxStaticLine * m_staticline2
 
wxStaticText * m_staticText891
 
wxTextCtrl * m_ElectricalSpacingVoltage
 
wxButton * m_buttonElectSpacingRefresh
 
wxBoxSizer * m_electricalSpacingSizer
 
wxStaticText * m_staticTextElectricalSpacing
 
wxGrid * m_gridElectricalSpacingValues
 
wxStaticText * m_staticText88
 
wxPanel * m_panelBoardClass
 
UNIT_SELECTOR_LENm_BoardClassesUnitsSelector
 
wxStaticText * m_staticTextBrdClass
 
wxGrid * m_gridClassesValuesDisplay
 
wxPanel * m_panelShowClassPrms
 
bool m_modal
 
WX_EVENT_LOOPm_modal_loop
 < Points to nested event_loop. NULL means not modal and dismissed. More...
 
wxWindow * m_modal_resultant_parent
 
wxString m_modal_string
 
bool m_modal_ret_val
 
FRAME_T m_ident
 
wxPoint m_framePos
 
wxSize m_frameSize
 
bool m_maximizeByDefault
 
wxPoint m_normalFramePos
 
wxSize m_normalFrameSize
 
wxString m_aboutTitle
 
wxAuiManager m_auimgr
 
wxString m_perspective
 
WX_INFOBARm_infoBar
 
wxString m_configName
 
SETTINGS_MANAGERm_settingsManager
 
FILE_HISTORYm_fileHistory
 
bool m_hasAutoSave
 
bool m_autoSaveState
 
int m_autoSaveInterval
 
wxTimer * m_autoSaveTimer
 
int m_undoRedoCountMax
 
UNDO_REDO_CONTAINER m_undoList
 
UNDO_REDO_CONTAINER m_redoList
 
wxString m_mruPath
 
EDA_UNITS m_userUnits
 Map containing the UI update handlers registered with wx for each action. More...
 
std::map< int, UIUpdateHandlerm_uiUpdateMap
 Set by the close window event handler after frames are asked if they can close. More...
 
bool m_isClosing
 Set by NonUserClose() to indicate that the user did not request the current close. More...
 
bool m_isNonUserClose
 
TOOL_MANAGERm_toolManager
 
ACTIONSm_actions
 
TOOL_DISPATCHERm_toolDispatcher
 
SELECTION m_dummySelection
 
std::vector< std::string > m_toolStack
 
bool m_immediateActions
 
MOUSE_DRAG_ACTION m_dragAction
 
bool m_moveWarpsCursor
 

Static Protected Attributes

static constexpr int KICAD_AUI_TB_STYLE = wxAUI_TB_DEFAULT_STYLE | wxAUI_TB_PLAIN_BACKGROUND
 < Default style flags used for wxAUI toolbars. More...
 

Detailed Description

Class PCB_CALCULATOR_FRAME_BASE.

Definition at line 53 of file pcb_calculator_frame_base.h.

Member Enumeration Documentation

◆ HOLDER_TYPE

enum KIWAY_HOLDER::HOLDER_TYPE
inherited
Enumerator
DIALOG 
FRAME 
PANEL 

Definition at line 42 of file kiway_holder.h.

◆ UNDO_REDO_LIST

Remove the aItemCount of old commands from aList and delete commands, pickers and picked items if needed.

Because picked items must be deleted only if they are not in use, this is a virtual pure function that must be created for SCH_SCREEN and PCB_SCREEN. Commands are deleted from the older to the last.

Parameters
aList= the UNDO_REDO_CONTAINER of commands.
aItemCountnumber of old commands to delete. -1 to remove all old commands this will empty the list of commands.
Enumerator
UNDO_LIST 
REDO_LIST 

Definition at line 524 of file eda_base_frame.h.

Constructor & Destructor Documentation

◆ PCB_CALCULATOR_FRAME_BASE()

PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE ( wxWindow *  parent,
wxWindowID  id = wxID_ANY,
const wxString &  title = _("PCB Calculator"),
const wxPoint &  pos = wxDefaultPosition,
const wxSize &  size = wxSize( -1,-1 ),
long  style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL,
const wxString &  name = wxT("pcb_calculator") 
)

Definition at line 14 of file pcb_calculator_frame_base.cpp.

14  : KIWAY_PLAYER( parent, id, title, pos, size, style, name )
15 {
16  this->SetSizeHints( wxDefaultSize, wxDefaultSize );
17 
18  m_menubar = new wxMenuBar( 0 );
19  this->SetMenuBar( m_menubar );
20 
21  wxBoxSizer* bmainFrameSizer;
22  bmainFrameSizer = new wxBoxSizer( wxVERTICAL );
23 
24  m_Notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
25  m_panelRegulators = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
26  wxBoxSizer* bSizerMainReg;
27  bSizerMainReg = new wxBoxSizer( wxVERTICAL );
28 
29  wxBoxSizer* bSizerColBalancer;
30  bSizerColBalancer = new wxBoxSizer( wxHORIZONTAL );
31 
32  wxBoxSizer* bSizeLeftpReg;
33  bSizeLeftpReg = new wxBoxSizer( wxVERTICAL );
34 
35  bSizeLeftpReg->SetMinSize( wxSize( 400,-1 ) );
36  wxBoxSizer* bSizerType;
37  bSizerType = new wxBoxSizer( wxHORIZONTAL );
38 
39  m_staticTextRegType = new wxStaticText( m_panelRegulators, wxID_ANY, _("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
40  m_staticTextRegType->Wrap( -1 );
41  m_staticTextRegType->SetToolTip( _("Type of the regulator.\nThere are 2 types:\n- regulators which have a dedicated sense pin for the voltage regulation.\n- 3 terminal pins.") );
42 
43  bSizerType->Add( m_staticTextRegType, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
44 
45  wxString m_choiceRegTypeChoices[] = { _("Standard Type"), _("3 Terminal Type") };
46  int m_choiceRegTypeNChoices = sizeof( m_choiceRegTypeChoices ) / sizeof( wxString );
47  m_choiceRegType = new wxChoice( m_panelRegulators, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceRegTypeNChoices, m_choiceRegTypeChoices, 0 );
48  m_choiceRegType->SetSelection( 0 );
49  bSizerType->Add( m_choiceRegType, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
50 
51 
52  bSizeLeftpReg->Add( bSizerType, 0, wxEXPAND|wxALL, 5 );
53 
54 
55  bSizeLeftpReg->Add( 0, 10, 0, wxEXPAND, 5 );
56 
57  m_bitmapRegul4pins = new wxStaticBitmap( m_panelRegulators, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
58  bSizeLeftpReg->Add( m_bitmapRegul4pins, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 10 );
59 
60  m_bitmapRegul3pins = new wxStaticBitmap( m_panelRegulators, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
61  bSizeLeftpReg->Add( m_bitmapRegul3pins, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 10 );
62 
63 
64  bSizeLeftpReg->Add( 0, 0, 1, wxEXPAND, 5 );
65 
66  wxStaticBoxSizer* sbSizerRegFormula;
67  sbSizerRegFormula = new wxStaticBoxSizer( new wxStaticBox( m_panelRegulators, wxID_ANY, _("Formula") ), wxVERTICAL );
68 
69  m_RegulFormula = new wxStaticText( sbSizerRegFormula->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
70  m_RegulFormula->Wrap( -1 );
71  m_RegulFormula->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
72 
73  sbSizerRegFormula->Add( m_RegulFormula, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
74 
75 
76  bSizeLeftpReg->Add( sbSizerRegFormula, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
77 
78 
79  bSizerColBalancer->Add( bSizeLeftpReg, 0, wxTOP|wxRIGHT|wxEXPAND, 6 );
80 
81 
82  bSizerColBalancer->Add( 10, 0, 0, wxEXPAND, 5 );
83 
84  wxBoxSizer* bSizerRegulRight;
85  bSizerRegulRight = new wxBoxSizer( wxVERTICAL );
86 
87  wxFlexGridSizer* fgSizerRegParams;
88  fgSizerRegParams = new wxFlexGridSizer( 6, 4, 4, 0 );
89  fgSizerRegParams->AddGrowableCol( 2 );
90  fgSizerRegParams->SetFlexibleDirection( wxBOTH );
91  fgSizerRegParams->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
92 
93  m_rbRegulR1 = new wxRadioButton( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
94  m_rbRegulR1->SetValue( true );
95  fgSizerRegParams->Add( m_rbRegulR1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
96 
97  m_labelRegultR1 = new wxStaticText( m_panelRegulators, wxID_ANY, _("R1:"), wxDefaultPosition, wxDefaultSize, 0 );
98  m_labelRegultR1->Wrap( -1 );
99  fgSizerRegParams->Add( m_labelRegultR1, 0, wxALIGN_CENTER_VERTICAL, 5 );
100 
101  m_RegulR1Value = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
102  fgSizerRegParams->Add( m_RegulR1Value, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
103 
104  m_r1Units = new wxStaticText( m_panelRegulators, wxID_ANY, _("kOhm"), wxDefaultPosition, wxDefaultSize, 0 );
105  m_r1Units->Wrap( -1 );
106  fgSizerRegParams->Add( m_r1Units, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
107 
108  m_rbRegulR2 = new wxRadioButton( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
109  fgSizerRegParams->Add( m_rbRegulR2, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
110 
111  m_labelRegultR2 = new wxStaticText( m_panelRegulators, wxID_ANY, _("R2:"), wxDefaultPosition, wxDefaultSize, 0 );
112  m_labelRegultR2->Wrap( -1 );
113  fgSizerRegParams->Add( m_labelRegultR2, 0, wxALIGN_CENTER_VERTICAL, 5 );
114 
115  m_RegulR2Value = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
116  fgSizerRegParams->Add( m_RegulR2Value, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
117 
118  m_r2Units = new wxStaticText( m_panelRegulators, wxID_ANY, _("kOhm"), wxDefaultPosition, wxDefaultSize, 0 );
119  m_r2Units->Wrap( -1 );
120  fgSizerRegParams->Add( m_r2Units, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
121 
122  m_rbRegulVout = new wxRadioButton( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
123  fgSizerRegParams->Add( m_rbRegulVout, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
124 
125  m_labelVout = new wxStaticText( m_panelRegulators, wxID_ANY, _("Vout:"), wxDefaultPosition, wxDefaultSize, 0 );
126  m_labelVout->Wrap( -1 );
127  fgSizerRegParams->Add( m_labelVout, 0, wxALIGN_CENTER_VERTICAL, 5 );
128 
129  m_RegulVoutValue = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
130  fgSizerRegParams->Add( m_RegulVoutValue, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
131 
132  m_unitsVout = new wxStaticText( m_panelRegulators, wxID_ANY, _("V"), wxDefaultPosition, wxDefaultSize, 0 );
133  m_unitsVout->Wrap( -1 );
134  fgSizerRegParams->Add( m_unitsVout, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
135 
136 
137  fgSizerRegParams->Add( 0, 0, 1, wxEXPAND, 5 );
138 
139  m_labelVRef = new wxStaticText( m_panelRegulators, wxID_ANY, _("Vref:"), wxDefaultPosition, wxDefaultSize, 0 );
140  m_labelVRef->Wrap( -1 );
141  m_labelVRef->SetToolTip( _("The internal reference voltage of the regulator.\nShould not be 0.") );
142 
143  fgSizerRegParams->Add( m_labelVRef, 0, wxALIGN_CENTER_VERTICAL, 5 );
144 
145  m_RegulVrefValue = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
146  fgSizerRegParams->Add( m_RegulVrefValue, 0, wxEXPAND|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
147 
148  m_unitsVref = new wxStaticText( m_panelRegulators, wxID_ANY, _("V"), wxDefaultPosition, wxDefaultSize, 0 );
149  m_unitsVref->Wrap( -1 );
150  fgSizerRegParams->Add( m_unitsVref, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
151 
152 
153  fgSizerRegParams->Add( 0, 0, 1, wxEXPAND, 5 );
154 
155  m_RegulIadjTitle = new wxStaticText( m_panelRegulators, wxID_ANY, _("Iadj:"), wxDefaultPosition, wxDefaultSize, 0 );
156  m_RegulIadjTitle->Wrap( -1 );
157  m_RegulIadjTitle->SetToolTip( _("For 3 terminal regulators only, the Adjust pin current.") );
158 
159  fgSizerRegParams->Add( m_RegulIadjTitle, 0, wxALIGN_CENTER_VERTICAL, 5 );
160 
161  m_RegulIadjValue = new wxTextCtrl( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
162  fgSizerRegParams->Add( m_RegulIadjValue, 0, wxEXPAND|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
163 
164  m_IadjUnitLabel = new wxStaticText( m_panelRegulators, wxID_ANY, _("uA"), wxDefaultPosition, wxDefaultSize, 0 );
165  m_IadjUnitLabel->Wrap( -1 );
166  fgSizerRegParams->Add( m_IadjUnitLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
167 
168 
169  bSizerRegulRight->Add( fgSizerRegParams, 0, wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
170 
171  wxBoxSizer* bSizerRegulButtonCalcReset;
172  bSizerRegulButtonCalcReset = new wxBoxSizer( wxHORIZONTAL );
173 
174 
175  bSizerRegulButtonCalcReset->Add( 0, 0, 3, wxEXPAND, 5 );
176 
177  m_buttonCalculate = new wxButton( m_panelRegulators, wxID_ANY, _("Calculate"), wxDefaultPosition, wxDefaultSize, 0 );
178  bSizerRegulButtonCalcReset->Add( m_buttonCalculate, 6, wxTOP, 10 );
179 
180 
181  bSizerRegulButtonCalcReset->Add( 0, 0, 2, wxEXPAND, 5 );
182 
183  m_buttonRegulReset = new wxButton( m_panelRegulators, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
184  bSizerRegulButtonCalcReset->Add( m_buttonRegulReset, 6, wxTOP, 10 );
185 
186 
187  bSizerRegulButtonCalcReset->Add( 0, 0, 3, wxEXPAND, 5 );
188 
189 
190  bSizerRegulRight->Add( bSizerRegulButtonCalcReset, 0, wxEXPAND|wxLEFT, 30 );
191 
192  m_RegulMessage = new wxStaticText( m_panelRegulators, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
193  m_RegulMessage->Wrap( -1 );
194  bSizerRegulRight->Add( m_RegulMessage, 0, wxALL, 10 );
195 
196  wxStaticBoxSizer* sbSizerRegulatorsChooser;
197  sbSizerRegulatorsChooser = new wxStaticBoxSizer( new wxStaticBox( m_panelRegulators, wxID_ANY, _("Regulator") ), wxVERTICAL );
198 
199  wxArrayString m_choiceRegulatorSelectorChoices;
200  m_choiceRegulatorSelector = new wxChoice( sbSizerRegulatorsChooser->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceRegulatorSelectorChoices, 0 );
201  m_choiceRegulatorSelector->SetSelection( 0 );
202  sbSizerRegulatorsChooser->Add( m_choiceRegulatorSelector, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
203 
204  m_staticTextRegFile = new wxStaticText( sbSizerRegulatorsChooser->GetStaticBox(), wxID_ANY, _("Regulators data file:"), wxDefaultPosition, wxDefaultSize, 0 );
205  m_staticTextRegFile->Wrap( -1 );
206  m_staticTextRegFile->SetToolTip( _("The name of the data file which stores known regulators parameters.") );
207 
208  sbSizerRegulatorsChooser->Add( m_staticTextRegFile, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
209 
210  wxBoxSizer* bSizerDataFile;
211  bSizerDataFile = new wxBoxSizer( wxHORIZONTAL );
212 
213  m_regulators_fileNameCtrl = new wxTextCtrl( sbSizerRegulatorsChooser->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
214  bSizerDataFile->Add( m_regulators_fileNameCtrl, 1, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
215 
216  m_buttonDataFile = new wxButton( sbSizerRegulatorsChooser->GetStaticBox(), wxID_ANY, _("Browse"), wxDefaultPosition, wxDefaultSize, 0 );
217  bSizerDataFile->Add( m_buttonDataFile, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
218 
219 
220  sbSizerRegulatorsChooser->Add( bSizerDataFile, 1, wxEXPAND, 5 );
221 
222  wxBoxSizer* bSizerReulBtn;
223  bSizerReulBtn = new wxBoxSizer( wxHORIZONTAL );
224 
225  m_buttonEditItem = new wxButton( sbSizerRegulatorsChooser->GetStaticBox(), wxID_ANY, _("Edit Regulator"), wxDefaultPosition, wxDefaultSize, 0 );
226  m_buttonEditItem->SetToolTip( _("Edit the current selected regulator.") );
227 
228  bSizerReulBtn->Add( m_buttonEditItem, 1, wxALL, 5 );
229 
230  m_buttonAddItem = new wxButton( sbSizerRegulatorsChooser->GetStaticBox(), wxID_ANY, _("Add Regulator"), wxDefaultPosition, wxDefaultSize, 0 );
231  m_buttonAddItem->SetToolTip( _("Enter a new item to the current list of available regulators") );
232 
233  bSizerReulBtn->Add( m_buttonAddItem, 1, wxALL, 5 );
234 
235  m_buttonRemoveItem = new wxButton( sbSizerRegulatorsChooser->GetStaticBox(), wxID_ANY, _("Remove Regulator"), wxDefaultPosition, wxDefaultSize, 0 );
236  m_buttonRemoveItem->SetToolTip( _("Remove an item from the current list of available regulators") );
237 
238  bSizerReulBtn->Add( m_buttonRemoveItem, 1, wxALL, 5 );
239 
240 
241  sbSizerRegulatorsChooser->Add( bSizerReulBtn, 1, wxEXPAND, 5 );
242 
243 
244  bSizerRegulRight->Add( sbSizerRegulatorsChooser, 0, wxEXPAND|wxRIGHT, 10 );
245 
246 
247  bSizerColBalancer->Add( bSizerRegulRight, 1, wxEXPAND|wxTOP|wxLEFT, 10 );
248 
249 
250  bSizerMainReg->Add( bSizerColBalancer, 0, wxEXPAND, 5 );
251 
252 
253  m_panelRegulators->SetSizer( bSizerMainReg );
254  m_panelRegulators->Layout();
255  bSizerMainReg->Fit( m_panelRegulators );
256  m_Notebook->AddPage( m_panelRegulators, _("Regulators"), false );
257  m_panelAttenuators = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
258  wxBoxSizer* bSizerAtt;
259  bSizerAtt = new wxBoxSizer( wxHORIZONTAL );
260 
261  wxBoxSizer* bLeftSizerAtt;
262  bLeftSizerAtt = new wxBoxSizer( wxVERTICAL );
263 
264  bLeftSizerAtt->SetMinSize( wxSize( 260,-1 ) );
265  wxString m_AttenuatorsSelectionChoices[] = { _("PI"), _("Tee"), _("Bridged tee"), _("Resistive splitter") };
266  int m_AttenuatorsSelectionNChoices = sizeof( m_AttenuatorsSelectionChoices ) / sizeof( wxString );
267  m_AttenuatorsSelection = new wxRadioBox( m_panelAttenuators, wxID_ANY, _("Attenuators"), wxDefaultPosition, wxDefaultSize, m_AttenuatorsSelectionNChoices, m_AttenuatorsSelectionChoices, 1, wxRA_SPECIFY_COLS );
268  m_AttenuatorsSelection->SetSelection( 2 );
269  bLeftSizerAtt->Add( m_AttenuatorsSelection, 0, wxEXPAND|wxALL, 5 );
270 
271 
272  bLeftSizerAtt->Add( 0, 5, 0, wxEXPAND, 5 );
273 
274  m_attenuatorBitmap = new wxStaticBitmap( m_panelAttenuators, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
275  bLeftSizerAtt->Add( m_attenuatorBitmap, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 10 );
276 
277 
278  bSizerAtt->Add( bLeftSizerAtt, 0, wxEXPAND|wxRIGHT, 5 );
279 
280  wxBoxSizer* bMiddleSizerAtt;
281  bMiddleSizerAtt = new wxBoxSizer( wxVERTICAL );
282 
283  wxStaticBoxSizer* sbSizerAttPrms;
284  sbSizerAttPrms = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Parameters") ), wxVERTICAL );
285 
286  wxFlexGridSizer* fgSizerAttPrms;
287  fgSizerAttPrms = new wxFlexGridSizer( 3, 3, 3, 0 );
288  fgSizerAttPrms->AddGrowableRow( 1 );
289  fgSizerAttPrms->SetFlexibleDirection( wxBOTH );
290  fgSizerAttPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
291 
292  m_attenuationLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Attenuation:"), wxDefaultPosition, wxDefaultSize, 0 );
293  m_attenuationLabel->Wrap( -1 );
294  fgSizerAttPrms->Add( m_attenuationLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
295 
296  m_AttValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
297  fgSizerAttPrms->Add( m_AttValueCtrl, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
298 
299  m_attUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("dB"), wxDefaultPosition, wxDefaultSize, 0 );
300  m_attUnit->Wrap( -1 );
301  fgSizerAttPrms->Add( m_attUnit, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
302 
303  m_attenuationZinLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Zin:"), wxDefaultPosition, wxDefaultSize, 0 );
304  m_attenuationZinLabel->Wrap( -1 );
305  fgSizerAttPrms->Add( m_attenuationZinLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
306 
307  m_ZinValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
308  fgSizerAttPrms->Add( m_ZinValueCtrl, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
309 
310  m_attZinUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 );
311  m_attZinUnit->Wrap( -1 );
312  fgSizerAttPrms->Add( m_attZinUnit, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
313 
314  m_ZoutLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Zout:"), wxDefaultPosition, wxDefaultSize, 0 );
315  m_ZoutLabel->Wrap( -1 );
316  fgSizerAttPrms->Add( m_ZoutLabel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
317 
318  m_ZoutValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
319  fgSizerAttPrms->Add( m_ZoutValueCtrl, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
320 
321  m_attZoutUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 );
322  m_attZoutUnit->Wrap( -1 );
323  fgSizerAttPrms->Add( m_attZoutUnit, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
324 
325 
326  sbSizerAttPrms->Add( fgSizerAttPrms, 0, wxEXPAND|wxBOTTOM, 5 );
327 
328 
329  bMiddleSizerAtt->Add( sbSizerAttPrms, 0, wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 );
330 
331  wxBoxSizer* bSizerAttButt;
332  bSizerAttButt = new wxBoxSizer( wxHORIZONTAL );
333 
334  m_buttonAlcAtt = new wxButton( m_panelAttenuators, wxID_ANY, _("Calculate"), wxDefaultPosition, wxDefaultSize, 0 );
335  bSizerAttButt->Add( m_buttonAlcAtt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
336 
337  m_bpButtonCalcAtt = new wxBitmapButton( m_panelAttenuators, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
338  bSizerAttButt->Add( m_bpButtonCalcAtt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
339 
340 
341  bMiddleSizerAtt->Add( bSizerAttButt, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
342 
343  wxStaticBoxSizer* sbSizerAttValues;
344  sbSizerAttValues = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Values") ), wxVERTICAL );
345 
346  wxFlexGridSizer* fgSizerAttResults;
347  fgSizerAttResults = new wxFlexGridSizer( 3, 3, 3, 0 );
348  fgSizerAttResults->AddGrowableCol( 1 );
349  fgSizerAttResults->SetFlexibleDirection( wxBOTH );
350  fgSizerAttResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
351 
352  m_attenuatorR1Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R1:"), wxDefaultPosition, wxDefaultSize, 0 );
353  m_attenuatorR1Label->Wrap( -1 );
354  fgSizerAttResults->Add( m_attenuatorR1Label, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
355 
356  m_Att_R1_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
357  fgSizerAttResults->Add( m_Att_R1_Value, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxEXPAND, 5 );
358 
359  m_attR1Unit = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 );
360  m_attR1Unit->Wrap( -1 );
361  fgSizerAttResults->Add( m_attR1Unit, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
362 
363  m_attenuatorR2Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R2:"), wxDefaultPosition, wxDefaultSize, 0 );
364  m_attenuatorR2Label->Wrap( -1 );
365  fgSizerAttResults->Add( m_attenuatorR2Label, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
366 
367  m_Att_R2_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
368  fgSizerAttResults->Add( m_Att_R2_Value, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxEXPAND, 5 );
369 
370  m_attR2Unit = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 );
371  m_attR2Unit->Wrap( -1 );
372  fgSizerAttResults->Add( m_attR2Unit, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
373 
374  m_attenuatorR3Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R3:"), wxDefaultPosition, wxDefaultSize, 0 );
375  m_attenuatorR3Label->Wrap( -1 );
376  fgSizerAttResults->Add( m_attenuatorR3Label, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
377 
378  m_Att_R3_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
379  fgSizerAttResults->Add( m_Att_R3_Value, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
380 
381  m_attR3Unit = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 );
382  m_attR3Unit->Wrap( -1 );
383  fgSizerAttResults->Add( m_attR3Unit, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
384 
385 
386  sbSizerAttValues->Add( fgSizerAttResults, 0, wxEXPAND|wxBOTTOM, 5 );
387 
388 
389  bMiddleSizerAtt->Add( sbSizerAttValues, 0, wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 );
390 
391  wxBoxSizer* bSizerMessages;
392  bSizerMessages = new wxBoxSizer( wxVERTICAL );
393 
394  wxBoxSizer* bSizerIndentLabel;
395  bSizerIndentLabel = new wxBoxSizer( wxHORIZONTAL );
396 
397  m_staticTextAttMsg = new wxStaticText( m_panelAttenuators, wxID_ANY, _("Messages"), wxDefaultPosition, wxDefaultSize, 0 );
398  m_staticTextAttMsg->Wrap( -1 );
399  bSizerIndentLabel->Add( m_staticTextAttMsg, 0, wxALL, 2 );
400 
401 
402  bSizerMessages->Add( bSizerIndentLabel, 0, wxLEFT, 6 );
403 
404  m_Attenuator_Messages = new wxHtmlWindow( m_panelAttenuators, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO );
405  bSizerMessages->Add( m_Attenuator_Messages, 1, wxEXPAND|wxBOTTOM|wxRIGHT, 8 );
406 
407 
408  bMiddleSizerAtt->Add( bSizerMessages, 1, wxEXPAND|wxLEFT, 3 );
409 
410 
411  bSizerAtt->Add( bMiddleSizerAtt, 0, wxEXPAND|wxRIGHT|wxLEFT, 5 );
412 
413  wxStaticBoxSizer* sbRightSizerFormula;
414  sbRightSizerFormula = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Formula") ), wxVERTICAL );
415 
416  m_panelAttFormula = new wxHtmlWindow( sbRightSizerFormula->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
417  sbRightSizerFormula->Add( m_panelAttFormula, 1, wxEXPAND|wxBOTTOM, 5 );
418 
419 
420  bSizerAtt->Add( sbRightSizerFormula, 1, wxEXPAND|wxALL, 5 );
421 
422 
423  m_panelAttenuators->SetSizer( bSizerAtt );
424  m_panelAttenuators->Layout();
425  bSizerAtt->Fit( m_panelAttenuators );
426  m_Notebook->AddPage( m_panelAttenuators, _("RF Attenuators"), false );
427  m_panelESeries = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
428  wxBoxSizer* bSizerESerie;
429  bSizerESerie = new wxBoxSizer( wxVERTICAL );
430 
431  wxBoxSizer* bMiddleSizerESeries;
432  bMiddleSizerESeries = new wxBoxSizer( wxHORIZONTAL );
433 
434  wxStaticBoxSizer* sbSizerESeriesInput;
435  sbSizerESeriesInput = new wxStaticBoxSizer( new wxStaticBox( m_panelESeries, wxID_ANY, _("Inputs") ), wxVERTICAL );
436 
437  wxFlexGridSizer* fgSizerAttPrms1;
438  fgSizerAttPrms1 = new wxFlexGridSizer( 4, 3, 3, 0 );
439  fgSizerAttPrms1->AddGrowableRow( 1 );
440  fgSizerAttPrms1->SetFlexibleDirection( wxBOTH );
441  fgSizerAttPrms1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
442 
443  m_ESrequired = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("Required resistance:"), wxDefaultPosition, wxDefaultSize, 0 );
444  m_ESrequired->Wrap( -1 );
445  fgSizerAttPrms1->Add( m_ESrequired, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
446 
447  m_ResRequired = new wxTextCtrl( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
448  fgSizerAttPrms1->Add( m_ResRequired, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
449 
450  m_reqResUnits = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("kOhm"), wxDefaultPosition, wxDefaultSize, 0 );
451  m_reqResUnits->Wrap( -1 );
452  fgSizerAttPrms1->Add( m_reqResUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
453 
454  m_ESrequired1 = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("Exclude value 1:"), wxDefaultPosition, wxDefaultSize, 0 );
455  m_ESrequired1->Wrap( -1 );
456  fgSizerAttPrms1->Add( m_ESrequired1, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
457 
458  m_ResExclude1 = new wxTextCtrl( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
459  fgSizerAttPrms1->Add( m_ResExclude1, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
460 
461  m_exclude1Units = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("kOhm"), wxDefaultPosition, wxDefaultSize, 0 );
462  m_exclude1Units->Wrap( -1 );
463  fgSizerAttPrms1->Add( m_exclude1Units, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
464 
465  m_ESrequired11 = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("Exclude value 2:"), wxDefaultPosition, wxDefaultSize, 0 );
466  m_ESrequired11->Wrap( -1 );
467  fgSizerAttPrms1->Add( m_ESrequired11, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
468 
469  m_ResExclude2 = new wxTextCtrl( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
470  fgSizerAttPrms1->Add( m_ResExclude2, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
471 
472  m_exclude2Units = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("kOhm"), wxDefaultPosition, wxDefaultSize, 0 );
473  m_exclude2Units->Wrap( -1 );
474  fgSizerAttPrms1->Add( m_exclude2Units, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
475 
476 
477  sbSizerESeriesInput->Add( fgSizerAttPrms1, 0, wxEXPAND|wxBOTTOM, 5 );
478 
479  m_staticline6 = new wxStaticLine( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
480  sbSizerESeriesInput->Add( m_staticline6, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
481 
482  wxBoxSizer* bSizer40;
483  bSizer40 = new wxBoxSizer( wxHORIZONTAL );
484 
485  m_e1 = new wxRadioButton( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("E1"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
486  bSizer40->Add( m_e1, 1, wxALL, 5 );
487 
488  m_e3 = new wxRadioButton( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("E3"), wxDefaultPosition, wxDefaultSize, 0 );
489  bSizer40->Add( m_e3, 1, wxALL, 5 );
490 
491  m_e6 = new wxRadioButton( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("E6"), wxDefaultPosition, wxDefaultSize, 0 );
492  m_e6->SetValue( true );
493  bSizer40->Add( m_e6, 1, wxALL, 5 );
494 
495  m_e12 = new wxRadioButton( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("E12"), wxDefaultPosition, wxDefaultSize, 0 );
496  bSizer40->Add( m_e12, 1, wxALL, 5 );
497 
498 
499  sbSizerESeriesInput->Add( bSizer40, 1, wxEXPAND, 5 );
500 
501 
502  bMiddleSizerESeries->Add( sbSizerESeriesInput, 0, wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 5 );
503 
504  wxStaticBoxSizer* sbSizerESeriesSolutions;
505  sbSizerESeriesSolutions = new wxStaticBoxSizer( new wxStaticBox( m_panelESeries, wxID_ANY, _("Solutions") ), wxVERTICAL );
506 
507  wxFlexGridSizer* fgSizerESerieResults;
508  fgSizerESerieResults = new wxFlexGridSizer( 6, 5, 3, 0 );
509  fgSizerESerieResults->AddGrowableCol( 1 );
510  fgSizerESerieResults->SetFlexibleDirection( wxBOTH );
511  fgSizerESerieResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
512 
513  m_ESerieSimpleSolution = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Simple solution:"), wxDefaultPosition, wxDefaultSize, 0 );
514  m_ESerieSimpleSolution->Wrap( -1 );
515  fgSizerESerieResults->Add( m_ESerieSimpleSolution, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
516 
517  m_ESeries_Sol2R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
518  m_ESeries_Sol2R->SetMinSize( wxSize( 150,-1 ) );
519 
520  fgSizerESerieResults->Add( m_ESeries_Sol2R, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxEXPAND, 5 );
521 
522  m_ESeriesSimpleErr = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Error:"), wxDefaultPosition, wxDefaultSize, 0 );
523  m_ESeriesSimpleErr->Wrap( -1 );
524  fgSizerESerieResults->Add( m_ESeriesSimpleErr, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
525 
526  m_ESeriesError2R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
527  fgSizerESerieResults->Add( m_ESeriesError2R, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
528 
529  m_ESeriesSimplePercent = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
530  m_ESeriesSimplePercent->Wrap( -1 );
531  fgSizerESerieResults->Add( m_ESeriesSimplePercent, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
532 
533  m_ESerie3RSolution1 = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("3R solution:"), wxDefaultPosition, wxDefaultSize, 0 );
534  m_ESerie3RSolution1->Wrap( -1 );
535  fgSizerESerieResults->Add( m_ESerie3RSolution1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
536 
537  m_ESeries_Sol3R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
538  m_ESeries_Sol3R->SetMinSize( wxSize( 220,-1 ) );
539 
540  fgSizerESerieResults->Add( m_ESeries_Sol3R, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxEXPAND, 5 );
541 
542  m_ESeriesAltErr = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Error:"), wxDefaultPosition, wxDefaultSize, 0 );
543  m_ESeriesAltErr->Wrap( -1 );
544  fgSizerESerieResults->Add( m_ESeriesAltErr, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
545 
546  m_ESeriesError3R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
547  fgSizerESerieResults->Add( m_ESeriesError3R, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
548 
549  m_ESeriesAltPercent = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
550  m_ESeriesAltPercent->Wrap( -1 );
551  fgSizerESerieResults->Add( m_ESeriesAltPercent, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
552 
553  m_ESeries4RSolution = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("4R solution:"), wxDefaultPosition, wxDefaultSize, 0 );
554  m_ESeries4RSolution->Wrap( -1 );
555  fgSizerESerieResults->Add( m_ESeries4RSolution, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
556 
557  m_ESeries_Sol4R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
558  m_ESeries_Sol4R->SetMinSize( wxSize( 290,-1 ) );
559 
560  fgSizerESerieResults->Add( m_ESeries_Sol4R, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxEXPAND, 5 );
561 
562  m_ESeriesAltErr1 = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Error:"), wxDefaultPosition, wxDefaultSize, 0 );
563  m_ESeriesAltErr1->Wrap( -1 );
564  fgSizerESerieResults->Add( m_ESeriesAltErr1, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
565 
566  m_ESeriesError4R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
567  fgSizerESerieResults->Add( m_ESeriesError4R, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
568 
569  m_ESeriesAltPercent1 = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 );
570  m_ESeriesAltPercent1->Wrap( -1 );
571  fgSizerESerieResults->Add( m_ESeriesAltPercent1, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
572 
573 
574  sbSizerESeriesSolutions->Add( fgSizerESerieResults, 0, wxBOTTOM|wxEXPAND, 5 );
575 
576  m_staticline7 = new wxStaticLine( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
577  sbSizerESeriesSolutions->Add( m_staticline7, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
578 
579  m_buttonEScalculate = new wxButton( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Calculate"), wxDefaultPosition, wxDefaultSize, 0 );
580  sbSizerESeriesSolutions->Add( m_buttonEScalculate, 0, wxALL, 5 );
581 
582 
583  bMiddleSizerESeries->Add( sbSizerESeriesSolutions, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
584 
585  wxBoxSizer* bSizer47;
586  bSizer47 = new wxBoxSizer( wxVERTICAL );
587 
588 
589  bMiddleSizerESeries->Add( bSizer47, 1, wxALIGN_BOTTOM, 5 );
590 
591 
592  bSizerESerie->Add( bMiddleSizerESeries, 0, wxEXPAND|wxTOP, 5 );
593 
594  wxBoxSizer* bLowerESerie;
595  bLowerESerie = new wxBoxSizer( wxHORIZONTAL );
596 
597  wxStaticBoxSizer* sbLowerSizerEseriesHelp;
598  sbLowerSizerEseriesHelp = new wxStaticBoxSizer( new wxStaticBox( m_panelESeries, wxID_ANY, _("Help") ), wxVERTICAL );
599 
600  m_panelESeriesHelp = new wxHtmlWindow( sbLowerSizerEseriesHelp->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
601  sbLowerSizerEseriesHelp->Add( m_panelESeriesHelp, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
602 
603 
604  bLowerESerie->Add( sbLowerSizerEseriesHelp, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
605 
606 
607  bSizerESerie->Add( bLowerESerie, 1, wxEXPAND, 5 );
608 
609 
610  m_panelESeries->SetSizer( bSizerESerie );
611  m_panelESeries->Layout();
612  bSizerESerie->Fit( m_panelESeries );
613  m_Notebook->AddPage( m_panelESeries, _("E-Series"), false );
614  m_panelColorCode = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
615  wxBoxSizer* bSizerPanelColorCode;
616  bSizerPanelColorCode = new wxBoxSizer( wxHORIZONTAL );
617 
618  wxBoxSizer* bSizer38;
619  bSizer38 = new wxBoxSizer( wxVERTICAL );
620 
621  wxString m_rbToleranceSelectionChoices[] = { _("10% / 5%"), _("<= 2%") };
622  int m_rbToleranceSelectionNChoices = sizeof( m_rbToleranceSelectionChoices ) / sizeof( wxString );
623  m_rbToleranceSelection = new wxRadioBox( m_panelColorCode, wxID_ANY, _("Tolerance"), wxDefaultPosition, wxDefaultSize, m_rbToleranceSelectionNChoices, m_rbToleranceSelectionChoices, 1, wxRA_SPECIFY_COLS );
624  m_rbToleranceSelection->SetSelection( 0 );
625  bSizer38->Add( m_rbToleranceSelection, 0, wxBOTTOM|wxRIGHT, 30 );
626 
627 
628  bSizerPanelColorCode->Add( bSizer38, 0, wxALL, 8 );
629 
630  wxFlexGridSizer* fgSizerColoCode;
631  fgSizerColoCode = new wxFlexGridSizer( 2, 6, 0, 0 );
632  fgSizerColoCode->SetFlexibleDirection( wxBOTH );
633  fgSizerColoCode->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
634 
635  m_staticText31 = new wxStaticText( m_panelColorCode, wxID_ANY, _("1st Band"), wxDefaultPosition, wxDefaultSize, 0 );
636  m_staticText31->Wrap( -1 );
637  fgSizerColoCode->Add( m_staticText31, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 );
638 
639  m_staticText34 = new wxStaticText( m_panelColorCode, wxID_ANY, _("2nd Band"), wxDefaultPosition, wxDefaultSize, 0 );
640  m_staticText34->Wrap( -1 );
641  fgSizerColoCode->Add( m_staticText34, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 );
642 
643  m_staticText35 = new wxStaticText( m_panelColorCode, wxID_ANY, _("3rd Band"), wxDefaultPosition, wxDefaultSize, 0 );
644  m_staticText35->Wrap( -1 );
645  fgSizerColoCode->Add( m_staticText35, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 );
646 
647  m_Band4Label = new wxStaticText( m_panelColorCode, wxID_ANY, _("4th Band"), wxDefaultPosition, wxDefaultSize, 0 );
648  m_Band4Label->Wrap( -1 );
649  fgSizerColoCode->Add( m_Band4Label, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 );
650 
651  m_staticText37 = new wxStaticText( m_panelColorCode, wxID_ANY, _("Multiplier"), wxDefaultPosition, wxDefaultSize, 0 );
652  m_staticText37->Wrap( -1 );
653  fgSizerColoCode->Add( m_staticText37, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 );
654 
655  m_staticText38 = new wxStaticText( m_panelColorCode, wxID_ANY, _("Tolerance"), wxDefaultPosition, wxDefaultSize, 0 );
656  m_staticText38->Wrap( -1 );
657  fgSizerColoCode->Add( m_staticText38, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 );
658 
659  m_Band1bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
660  fgSizerColoCode->Add( m_Band1bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
661 
662  m_Band2bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
663  fgSizerColoCode->Add( m_Band2bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
664 
665  m_Band3bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
666  fgSizerColoCode->Add( m_Band3bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
667 
668  m_Band4bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
669  fgSizerColoCode->Add( m_Band4bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
670 
671  m_Band_mult_bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
672  fgSizerColoCode->Add( m_Band_mult_bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 );
673 
674  m_Band_tol_bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
675  fgSizerColoCode->Add( m_Band_tol_bitmap, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
676 
677 
678  bSizerPanelColorCode->Add( fgSizerColoCode, 1, wxEXPAND|wxLEFT, 5 );
679 
680 
681  m_panelColorCode->SetSizer( bSizerPanelColorCode );
682  m_panelColorCode->Layout();
683  bSizerPanelColorCode->Fit( m_panelColorCode );
684  m_Notebook->AddPage( m_panelColorCode, _("Color Code"), false );
685  m_panelTransline = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
686  wxBoxSizer* bSizeTransline;
687  bSizeTransline = new wxBoxSizer( wxHORIZONTAL );
688 
689  wxBoxSizer* bLeftSizer;
690  bLeftSizer = new wxBoxSizer( wxVERTICAL );
691 
692  wxString m_TranslineSelectionChoices[] = { _("Microstrip Line"), _("Coplanar wave guide"), _("Coplanar wave guide w/ ground plane"), _("Rectangular Waveguide"), _("Coaxial Line"), _("Coupled Microstrip Line"), _("Stripline"), _("Twisted Pair") };
693  int m_TranslineSelectionNChoices = sizeof( m_TranslineSelectionChoices ) / sizeof( wxString );
694  m_TranslineSelection = new wxRadioBox( m_panelTransline, wxID_ANY, _("Transmission Line Type"), wxDefaultPosition, wxDefaultSize, m_TranslineSelectionNChoices, m_TranslineSelectionChoices, 1, wxRA_SPECIFY_COLS );
695  m_TranslineSelection->SetSelection( 2 );
696  bLeftSizer->Add( m_TranslineSelection, 0, wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 5 );
697 
698 
699  bLeftSizer->Add( 0, 5, 0, wxEXPAND, 5 );
700 
701  m_translineBitmap = new wxStaticBitmap( m_panelTransline, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
702  bLeftSizer->Add( m_translineBitmap, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 10 );
703 
704 
705  bSizeTransline->Add( bLeftSizer, 0, wxEXPAND, 5 );
706 
707  wxBoxSizer* bMiddleSizer;
708  bMiddleSizer = new wxBoxSizer( wxVERTICAL );
709 
710  wxStaticBoxSizer* sbSubstrateBoxSizer;
711  sbSubstrateBoxSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelTransline, wxID_ANY, _("Substrate Parameters") ), wxVERTICAL );
712 
713  wxFlexGridSizer* fgSizerSubstPrms;
714  fgSizerSubstPrms = new wxFlexGridSizer( 9, 3, 3, 0 );
715  fgSizerSubstPrms->AddGrowableCol( 1 );
716  fgSizerSubstPrms->SetFlexibleDirection( wxBOTH );
717  fgSizerSubstPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
718 
719  m_EpsilonR_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("Er:"), wxDefaultPosition, wxDefaultSize, 0 );
720  m_EpsilonR_label->Wrap( -1 );
721  fgSizerSubstPrms->Add( m_EpsilonR_label, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
722 
723  wxBoxSizer* bSizer441;
724  bSizer441 = new wxBoxSizer( wxHORIZONTAL );
725 
726  m_Value_EpsilonR = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
727  bSizer441->Add( m_Value_EpsilonR, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
728 
729  m_button_EpsilonR = new wxButton( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
730  bSizer441->Add( m_button_EpsilonR, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
731 
732 
733  fgSizerSubstPrms->Add( bSizer441, 1, wxEXPAND, 5 );
734 
735 
736  fgSizerSubstPrms->Add( 0, 0, 1, wxEXPAND, 5 );
737 
738  m_TanD_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("Tan delta:"), wxDefaultPosition, wxDefaultSize, 0 );
739  m_TanD_label->Wrap( -1 );
740  fgSizerSubstPrms->Add( m_TanD_label, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
741 
742  wxBoxSizer* bSizer442;
743  bSizer442 = new wxBoxSizer( wxHORIZONTAL );
744 
745  m_Value_TanD = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
746  bSizer442->Add( m_Value_TanD, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
747 
748  m_button_TanD = new wxButton( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
749  bSizer442->Add( m_button_TanD, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
750 
751 
752  fgSizerSubstPrms->Add( bSizer442, 1, wxEXPAND, 5 );
753 
754 
755  fgSizerSubstPrms->Add( 0, 0, 1, wxEXPAND, 5 );
756 
757  m_Rho_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("Rho:"), wxDefaultPosition, wxDefaultSize, 0 );
758  m_Rho_label->Wrap( -1 );
759  m_Rho_label->SetToolTip( _("Specific resistance in ohms * meters") );
760 
761  fgSizerSubstPrms->Add( m_Rho_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
762 
763  wxBoxSizer* bSizer443;
764  bSizer443 = new wxBoxSizer( wxHORIZONTAL );
765 
766  m_Value_Rho = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
767  bSizer443->Add( m_Value_Rho, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
768 
769  m_button_Rho = new wxButton( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
770  bSizer443->Add( m_button_Rho, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
771 
772 
773  fgSizerSubstPrms->Add( bSizer443, 1, wxEXPAND, 5 );
774 
775 
776  fgSizerSubstPrms->Add( 0, 0, 1, wxEXPAND, 5 );
777 
778  m_substrate_prm4_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("H:"), wxDefaultPosition, wxDefaultSize, 0 );
779  m_substrate_prm4_label->Wrap( -1 );
780  fgSizerSubstPrms->Add( m_substrate_prm4_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
781 
782  m_Substrate_prm4_Value = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
783  fgSizerSubstPrms->Add( m_Substrate_prm4_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
784 
785  wxArrayString m_SubsPrm4_choiceUnitChoices;
786  m_SubsPrm4_choiceUnit = new UNIT_SELECTOR_LEN( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_SubsPrm4_choiceUnitChoices, 0 );
787  m_SubsPrm4_choiceUnit->SetSelection( 0 );
788  fgSizerSubstPrms->Add( m_SubsPrm4_choiceUnit, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
789 
790  m_substrate_prm5_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("H_t:"), wxDefaultPosition, wxDefaultSize, 0 );
791  m_substrate_prm5_label->Wrap( -1 );
792  fgSizerSubstPrms->Add( m_substrate_prm5_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
793 
794  m_Substrate_prm5_Value = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
795  fgSizerSubstPrms->Add( m_Substrate_prm5_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
796 
797  wxArrayString m_SubsPrm5_choiceUnitChoices;
798  m_SubsPrm5_choiceUnit = new UNIT_SELECTOR_LEN( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_SubsPrm5_choiceUnitChoices, 0 );
799  m_SubsPrm5_choiceUnit->SetSelection( 0 );
800  fgSizerSubstPrms->Add( m_SubsPrm5_choiceUnit, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
801 
802  m_substrate_prm6_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("T:"), wxDefaultPosition, wxDefaultSize, 0 );
803  m_substrate_prm6_label->Wrap( -1 );
804  fgSizerSubstPrms->Add( m_substrate_prm6_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
805 
806  m_Substrate_prm6_Value = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
807  fgSizerSubstPrms->Add( m_Substrate_prm6_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
808 
809  wxArrayString m_SubsPrm6_choiceUnitChoices;
810  m_SubsPrm6_choiceUnit = new UNIT_SELECTOR_LEN( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_SubsPrm6_choiceUnitChoices, 0 );
811  m_SubsPrm6_choiceUnit->SetSelection( 0 );
812  fgSizerSubstPrms->Add( m_SubsPrm6_choiceUnit, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
813 
814  m_substrate_prm7_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("Rough:"), wxDefaultPosition, wxDefaultSize, 0 );
815  m_substrate_prm7_label->Wrap( -1 );
816  fgSizerSubstPrms->Add( m_substrate_prm7_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
817 
818  m_Substrate_prm7_Value = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
819  fgSizerSubstPrms->Add( m_Substrate_prm7_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
820 
821  wxArrayString m_SubsPrm7_choiceUnitChoices;
822  m_SubsPrm7_choiceUnit = new UNIT_SELECTOR_LEN( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_SubsPrm7_choiceUnitChoices, 0 );
823  m_SubsPrm7_choiceUnit->SetSelection( 0 );
824  fgSizerSubstPrms->Add( m_SubsPrm7_choiceUnit, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
825 
826  m_substrate_prm8_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("Insulator mu:"), wxDefaultPosition, wxDefaultSize, 0 );
827  m_substrate_prm8_label->Wrap( -1 );
828  fgSizerSubstPrms->Add( m_substrate_prm8_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
829 
830  m_Substrate_prm8_Value = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
831  fgSizerSubstPrms->Add( m_Substrate_prm8_Value, 0, wxEXPAND|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
832 
833  wxArrayString m_SubsPrm8_choiceUnitChoices;
834  m_SubsPrm8_choiceUnit = new UNIT_SELECTOR_LEN( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_SubsPrm8_choiceUnitChoices, 0 );
835  m_SubsPrm8_choiceUnit->SetSelection( 0 );
836  fgSizerSubstPrms->Add( m_SubsPrm8_choiceUnit, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
837 
838  m_substrate_prm9_label = new wxStaticText( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, _("Conductor mu:"), wxDefaultPosition, wxDefaultSize, 0 );
839  m_substrate_prm9_label->Wrap( -1 );
840  fgSizerSubstPrms->Add( m_substrate_prm9_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
841 
842  m_Substrate_prm9_Value = new wxTextCtrl( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
843  fgSizerSubstPrms->Add( m_Substrate_prm9_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
844 
845  wxArrayString m_SubsPrm9_choiceUnitChoices;
846  m_SubsPrm9_choiceUnit = new UNIT_SELECTOR_LEN( sbSubstrateBoxSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_SubsPrm9_choiceUnitChoices, 0 );
847  m_SubsPrm9_choiceUnit->SetSelection( 0 );
848  fgSizerSubstPrms->Add( m_SubsPrm9_choiceUnit, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
849 
850 
851  sbSubstrateBoxSizer->Add( fgSizerSubstPrms, 1, wxEXPAND|wxBOTTOM, 5 );
852 
853 
854  bMiddleSizer->Add( sbSubstrateBoxSizer, 0, wxEXPAND|wxBOTTOM, 5 );
855 
856  wxStaticBoxSizer* sbCmpPrmsSizer;
857  sbCmpPrmsSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelTransline, wxID_ANY, _("Component Parameters") ), wxVERTICAL );
858 
859  wxFlexGridSizer* fgSizeCmpPrms;
860  fgSizeCmpPrms = new wxFlexGridSizer( 1, 3, 0, 0 );
861  fgSizeCmpPrms->AddGrowableCol( 1 );
862  fgSizeCmpPrms->SetFlexibleDirection( wxBOTH );
863  fgSizeCmpPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
864 
865  m_Frequency_label = new wxStaticText( sbCmpPrmsSizer->GetStaticBox(), wxID_ANY, _("Frequency:"), wxDefaultPosition, wxDefaultSize, 0 );
866  m_Frequency_label->Wrap( -1 );
867  fgSizeCmpPrms->Add( m_Frequency_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
868 
869  m_Value_Frequency_Ctrl = new wxTextCtrl( sbCmpPrmsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
870  fgSizeCmpPrms->Add( m_Value_Frequency_Ctrl, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
871 
872  wxArrayString m_choiceUnit_FrequencyChoices;
873  m_choiceUnit_Frequency = new UNIT_SELECTOR_FREQUENCY( sbCmpPrmsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnit_FrequencyChoices, 0 );
874  m_choiceUnit_Frequency->SetSelection( 0 );
875  fgSizeCmpPrms->Add( m_choiceUnit_Frequency, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
876 
877 
878  sbCmpPrmsSizer->Add( fgSizeCmpPrms, 0, wxEXPAND|wxBOTTOM, 5 );
879 
880 
881  bMiddleSizer->Add( sbCmpPrmsSizer, 0, wxEXPAND|wxTOP, 5 );
882 
883  wxBoxSizer* bSizerHelpBitmaps;
884  bSizerHelpBitmaps = new wxBoxSizer( wxVERTICAL );
885 
886  m_bmCMicrostripZoddZeven = new wxStaticBitmap( m_panelTransline, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
887  bSizerHelpBitmaps->Add( m_bmCMicrostripZoddZeven, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 10 );
888 
889  m_fgSizerZcomment = new wxFlexGridSizer( 0, 2, 0, 15 );
890  m_fgSizerZcomment->AddGrowableCol( 0 );
891  m_fgSizerZcomment->AddGrowableCol( 1 );
892  m_fgSizerZcomment->SetFlexibleDirection( wxBOTH );
893  m_fgSizerZcomment->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
894 
895  m_staticTextZdiff = new wxStaticText( m_panelTransline, wxID_ANY, _("Zdiff = Zodd * 2"), wxDefaultPosition, wxDefaultSize, 0 );
896  m_staticTextZdiff->Wrap( -1 );
897  m_staticTextZdiff->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
898 
899  m_fgSizerZcomment->Add( m_staticTextZdiff, 0, wxALL, 5 );
900 
901  m_staticTextZcommon = new wxStaticText( m_panelTransline, wxID_ANY, _("Zcommon = Zeven / 2"), wxDefaultPosition, wxDefaultSize, 0 );
902  m_staticTextZcommon->Wrap( -1 );
903  m_staticTextZcommon->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
904 
905  m_fgSizerZcomment->Add( m_staticTextZcommon, 0, wxALL, 5 );
906 
907 
908  bSizerHelpBitmaps->Add( m_fgSizerZcomment, 0, wxEXPAND, 5 );
909 
910 
911  bMiddleSizer->Add( bSizerHelpBitmaps, 1, wxALIGN_CENTER_HORIZONTAL, 5 );
912 
913 
914  bSizeTransline->Add( bMiddleSizer, 1, wxALL|wxEXPAND, 5 );
915 
916  wxBoxSizer* bRightSizer;
917  bRightSizer = new wxBoxSizer( wxVERTICAL );
918 
919  wxStaticBoxSizer* btranslineRightSizer;
920  btranslineRightSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelTransline, wxID_ANY, _("Physical Parameters") ), wxVERTICAL );
921 
922  wxFlexGridSizer* fgSizerPhysPrms;
923  fgSizerPhysPrms = new wxFlexGridSizer( 4, 4, 3, 0 );
924  fgSizerPhysPrms->AddGrowableCol( 1 );
925  fgSizerPhysPrms->SetFlexibleDirection( wxBOTH );
926  fgSizerPhysPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
927 
928  m_phys_prm1_label = new wxStaticText( btranslineRightSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
929  m_phys_prm1_label->Wrap( -1 );
930  fgSizerPhysPrms->Add( m_phys_prm1_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
931 
932  m_Phys_prm1_Value = new wxTextCtrl( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
933  fgSizerPhysPrms->Add( m_Phys_prm1_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
934 
935  wxArrayString m_choiceUnit_Param1Choices;
936  m_choiceUnit_Param1 = new UNIT_SELECTOR_LEN( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnit_Param1Choices, 0 );
937  m_choiceUnit_Param1->SetSelection( 0 );
938  fgSizerPhysPrms->Add( m_choiceUnit_Param1, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
939 
940  m_radioBtnPrm1 = new wxRadioButton( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
941  fgSizerPhysPrms->Add( m_radioBtnPrm1, 0, wxALIGN_CENTER_VERTICAL, 5 );
942 
943  m_phys_prm2_label = new wxStaticText( btranslineRightSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
944  m_phys_prm2_label->Wrap( -1 );
945  fgSizerPhysPrms->Add( m_phys_prm2_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
946 
947  m_Phys_prm2_Value = new wxTextCtrl( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
948  fgSizerPhysPrms->Add( m_Phys_prm2_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
949 
950  wxArrayString m_choiceUnit_Param2Choices;
951  m_choiceUnit_Param2 = new UNIT_SELECTOR_LEN( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnit_Param2Choices, 0 );
952  m_choiceUnit_Param2->SetSelection( 0 );
953  fgSizerPhysPrms->Add( m_choiceUnit_Param2, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
954 
955  m_radioBtnPrm2 = new wxRadioButton( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
956  fgSizerPhysPrms->Add( m_radioBtnPrm2, 0, wxALIGN_CENTER_VERTICAL, 5 );
957 
958  m_phys_prm3_label = new wxStaticText( btranslineRightSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
959  m_phys_prm3_label->Wrap( -1 );
960  fgSizerPhysPrms->Add( m_phys_prm3_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
961 
962  m_Phys_prm3_Value = new wxTextCtrl( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
963  fgSizerPhysPrms->Add( m_Phys_prm3_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
964 
965  wxArrayString m_choiceUnit_Param3Choices;
966  m_choiceUnit_Param3 = new UNIT_SELECTOR_LEN( btranslineRightSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnit_Param3Choices, 0 );
967  m_choiceUnit_Param3->SetSelection( 0 );
968  fgSizerPhysPrms->Add( m_choiceUnit_Param3, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
969 
970 
971  fgSizerPhysPrms->Add( 0, 0, 0, 0, 5 );
972 
973 
974  btranslineRightSizer->Add( fgSizerPhysPrms, 0, wxEXPAND|wxBOTTOM, 5 );
975 
976 
977  bRightSizer->Add( btranslineRightSizer, 0, wxALL|wxEXPAND, 5 );
978 
979  wxBoxSizer* btranslineButtonsSizer;
980  btranslineButtonsSizer = new wxBoxSizer( wxVERTICAL );
981 
982  wxBoxSizer* bSizerButtons;
983  bSizerButtons = new wxBoxSizer( wxHORIZONTAL );
984 
985  m_bpButtonAnalyze = new wxBitmapButton( m_panelTransline, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
986  bSizerButtons->Add( m_bpButtonAnalyze, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
987 
988  m_AnalyseButton = new wxButton( m_panelTransline, wxID_ANY, _("Analyze"), wxDefaultPosition, wxDefaultSize, 0 );
989  bSizerButtons->Add( m_AnalyseButton, 0, wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
990 
991  m_SynthetizeButton = new wxButton( m_panelTransline, wxID_ANY, _("Synthesize"), wxDefaultPosition, wxDefaultSize, 0 );
992  bSizerButtons->Add( m_SynthetizeButton, 0, wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
993 
994  m_bpButtonSynthetize = new wxBitmapButton( m_panelTransline, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
995  bSizerButtons->Add( m_bpButtonSynthetize, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
996 
997 
998  btranslineButtonsSizer->Add( bSizerButtons, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
999 
1000 
1001  bRightSizer->Add( btranslineButtonsSizer, 0, wxALIGN_CENTER_HORIZONTAL, 5 );
1002 
1003  wxStaticBoxSizer* sbElectricalResultsSizer;
1004  sbElectricalResultsSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelTransline, wxID_ANY, _("Electrical Parameters") ), wxVERTICAL );
1005 
1006  wxFlexGridSizer* fgSizerResults;
1007  fgSizerResults = new wxFlexGridSizer( 3, 3, 3, 0 );
1008  fgSizerResults->AddGrowableCol( 1 );
1009  fgSizerResults->SetFlexibleDirection( wxBOTH );
1010  fgSizerResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
1011 
1012  m_elec_prm1_label = new wxStaticText( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, _("Z:"), wxDefaultPosition, wxDefaultSize, 0 );
1013  m_elec_prm1_label->Wrap( -1 );
1014  fgSizerResults->Add( m_elec_prm1_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1015 
1016  m_Elec_prm1_Value = new wxTextCtrl( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1017  fgSizerResults->Add( m_Elec_prm1_Value, 0, wxRIGHT|wxLEFT|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5 );
1018 
1019  wxArrayString m_choiceUnit_ElecPrm1Choices;
1020  m_choiceUnit_ElecPrm1 = new UNIT_SELECTOR_RESISTOR( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnit_ElecPrm1Choices, 0 );
1021  m_choiceUnit_ElecPrm1->SetSelection( 0 );
1022  fgSizerResults->Add( m_choiceUnit_ElecPrm1, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1023 
1024  m_elec_prm2_label = new wxStaticText( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, _("Z:"), wxDefaultPosition, wxDefaultSize, 0 );
1025  m_elec_prm2_label->Wrap( -1 );
1026  fgSizerResults->Add( m_elec_prm2_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1027 
1028  m_Elec_prm2_Value = new wxTextCtrl( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1029  fgSizerResults->Add( m_Elec_prm2_Value, 0, wxEXPAND|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
1030 
1031  wxArrayString m_choiceUnit_ElecPrm2Choices;
1032  m_choiceUnit_ElecPrm2 = new UNIT_SELECTOR_RESISTOR( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnit_ElecPrm2Choices, 0 );
1033  m_choiceUnit_ElecPrm2->SetSelection( 0 );
1034  fgSizerResults->Add( m_choiceUnit_ElecPrm2, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1035 
1036  m_elec_prm3_label = new wxStaticText( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, _("Angle:"), wxDefaultPosition, wxDefaultSize, 0 );
1037  m_elec_prm3_label->Wrap( -1 );
1038  fgSizerResults->Add( m_elec_prm3_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
1039 
1040  m_Elec_prm3_Value = new wxTextCtrl( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1041  fgSizerResults->Add( m_Elec_prm3_Value, 0, wxEXPAND|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
1042 
1043  wxArrayString m_choiceUnit_ElecPrm3Choices;
1044  m_choiceUnit_ElecPrm3 = new UNIT_SELECTOR_ANGLE( sbElectricalResultsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceUnit_ElecPrm3Choices, 0 );
1045  m_choiceUnit_ElecPrm3->SetSelection( 0 );
1046  fgSizerResults->Add( m_choiceUnit_ElecPrm3, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1047 
1048 
1049  sbElectricalResultsSizer->Add( fgSizerResults, 0, wxEXPAND|wxBOTTOM, 5 );
1050 
1051 
1052  bRightSizer->Add( sbElectricalResultsSizer, 0, wxEXPAND|wxALL, 5 );
1053 
1054  wxStaticBoxSizer* sbMessagesSizer;
1055  sbMessagesSizer = new wxStaticBoxSizer( new wxStaticBox( m_panelTransline, wxID_ANY, _("Results") ), wxVERTICAL );
1056 
1057  wxFlexGridSizer* fgSizerTranslResults;
1058  fgSizerTranslResults = new wxFlexGridSizer( 7, 2, 0, 0 );
1059  fgSizerTranslResults->AddGrowableCol( 1 );
1060  fgSizerTranslResults->SetFlexibleDirection( wxBOTH );
1061  fgSizerTranslResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
1062 
1063  m_left_message1 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1064  m_left_message1->Wrap( -1 );
1065  fgSizerTranslResults->Add( m_left_message1, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
1066 
1067  m_Message1 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1068  m_Message1->Wrap( -1 );
1069  fgSizerTranslResults->Add( m_Message1, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
1070 
1071  m_left_message2 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1072  m_left_message2->Wrap( -1 );
1073  fgSizerTranslResults->Add( m_left_message2, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
1074 
1075  m_Message2 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1076  m_Message2->Wrap( -1 );
1077  fgSizerTranslResults->Add( m_Message2, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
1078 
1079  m_left_message3 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1080  m_left_message3->Wrap( -1 );
1081  fgSizerTranslResults->Add( m_left_message3, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
1082 
1083  m_Message3 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1084  m_Message3->Wrap( -1 );
1085  fgSizerTranslResults->Add( m_Message3, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
1086 
1087  m_left_message4 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1088  m_left_message4->Wrap( -1 );
1089  fgSizerTranslResults->Add( m_left_message4, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
1090 
1091  m_Message4 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1092  m_Message4->Wrap( -1 );
1093  fgSizerTranslResults->Add( m_Message4, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
1094 
1095  m_left_message5 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1096  m_left_message5->Wrap( -1 );
1097  fgSizerTranslResults->Add( m_left_message5, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT|wxALIGN_RIGHT, 5 );
1098 
1099  m_Message5 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1100  m_Message5->Wrap( -1 );
1101  fgSizerTranslResults->Add( m_Message5, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
1102 
1103  m_left_message6 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1104  m_left_message6->Wrap( -1 );
1105  fgSizerTranslResults->Add( m_left_message6, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
1106 
1107  m_Message6 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1108  m_Message6->Wrap( -1 );
1109  fgSizerTranslResults->Add( m_Message6, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
1110 
1111  m_left_message7 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1112  m_left_message7->Wrap( -1 );
1113  fgSizerTranslResults->Add( m_left_message7, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 );
1114 
1115  m_Message7 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1116  m_Message7->Wrap( -1 );
1117  fgSizerTranslResults->Add( m_Message7, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 );
1118 
1119 
1120  sbMessagesSizer->Add( fgSizerTranslResults, 1, wxEXPAND, 5 );
1121 
1122 
1123  bRightSizer->Add( sbMessagesSizer, 1, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
1124 
1125  m_buttonTransLineReset = new wxButton( m_panelTransline, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
1126  bRightSizer->Add( m_buttonTransLineReset, 0, wxALIGN_RIGHT|wxALL, 5 );
1127 
1128 
1129  bSizeTransline->Add( bRightSizer, 1, wxEXPAND, 5 );
1130 
1131 
1132  m_panelTransline->SetSizer( bSizeTransline );
1133  m_panelTransline->Layout();
1134  bSizeTransline->Fit( m_panelTransline );
1135  m_Notebook->AddPage( m_panelTransline, _("TransLine"), false );
1136  m_panelViaSize = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1137  wxBoxSizer* bSizerViaSize;
1138  bSizerViaSize = new wxBoxSizer( wxHORIZONTAL );
1139 
1140  wxBoxSizer* bSizerViaLeftColumn;
1141  bSizerViaLeftColumn = new wxBoxSizer( wxVERTICAL );
1142 
1143  wxStaticBoxSizer* sbSizerVS_Inputs;
1144  sbSizerVS_Inputs = new wxStaticBoxSizer( new wxStaticBox( m_panelViaSize, wxID_ANY, _("Parameters") ), wxVERTICAL );
1145 
1146  wxFlexGridSizer* fgSizerVS_Inputs;
1147  fgSizerVS_Inputs = new wxFlexGridSizer( 0, 3, 4, 0 );
1148  fgSizerVS_Inputs->AddGrowableCol( 1 );
1149  fgSizerVS_Inputs->SetFlexibleDirection( wxBOTH );
1150  fgSizerVS_Inputs->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
1151 
1152  m_staticTextHoleDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Finished hole diameter (D):"), wxDefaultPosition, wxDefaultSize, 0 );
1153  m_staticTextHoleDia->Wrap( -1 );
1154  m_staticTextHoleDia->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
1155 
1156  fgSizerVS_Inputs->Add( m_staticTextHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1157 
1158  m_textCtrlHoleDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1159  fgSizerVS_Inputs->Add( m_textCtrlHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1160 
1161  wxArrayString m_choiceHoleDiaChoices;
1162  m_choiceHoleDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceHoleDiaChoices, 0 );
1163  m_choiceHoleDia->SetSelection( 0 );
1164  fgSizerVS_Inputs->Add( m_choiceHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
1165 
1166  m_staticTextPlatingThickness = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Plating thickness (T):"), wxDefaultPosition, wxDefaultSize, 0 );
1167  m_staticTextPlatingThickness->Wrap( -1 );
1168  fgSizerVS_Inputs->Add( m_staticTextPlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1169 
1170  m_textCtrlPlatingThickness = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1171  fgSizerVS_Inputs->Add( m_textCtrlPlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1172 
1173  wxArrayString m_choicePlatingThicknessChoices;
1174  m_choicePlatingThickness = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choicePlatingThicknessChoices, 0 );
1175  m_choicePlatingThickness->SetSelection( 0 );
1176  fgSizerVS_Inputs->Add( m_choicePlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
1177 
1178  m_staticTextViaLength = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Via length:"), wxDefaultPosition, wxDefaultSize, 0 );
1179  m_staticTextViaLength->Wrap( -1 );
1180  m_staticTextViaLength->SetToolTip( _("Via length is the board thickness for through hole vias") );
1181 
1182  fgSizerVS_Inputs->Add( m_staticTextViaLength, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1183 
1184  m_textCtrlViaLength = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1185  fgSizerVS_Inputs->Add( m_textCtrlViaLength, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1186 
1187  wxArrayString m_choiceViaLengthChoices;
1188  m_choiceViaLength = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceViaLengthChoices, 0 );
1189  m_choiceViaLength->SetSelection( 0 );
1190  fgSizerVS_Inputs->Add( m_choiceViaLength, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
1191 
1192  m_staticTextViaPadDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Via pad diameter:"), wxDefaultPosition, wxDefaultSize, 0 );
1193  m_staticTextViaPadDia->Wrap( -1 );
1194  m_staticTextViaPadDia->SetToolTip( _("Diameter of pad surrounding via (annular ring)") );
1195 
1196  fgSizerVS_Inputs->Add( m_staticTextViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1197 
1198  m_textCtrlViaPadDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1199  fgSizerVS_Inputs->Add( m_textCtrlViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1200 
1201  wxArrayString m_choiceViaPadDiaChoices;
1202  m_choiceViaPadDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceViaPadDiaChoices, 0 );
1203  m_choiceViaPadDia->SetSelection( 0 );
1204  fgSizerVS_Inputs->Add( m_choiceViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
1205 
1206  m_staticTextClearanceDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Clearance hole diameter:"), wxDefaultPosition, wxDefaultSize, 0 );
1207  m_staticTextClearanceDia->Wrap( -1 );
1208  m_staticTextClearanceDia->SetToolTip( _("Diameter of clearance hole in ground plane(s)") );
1209 
1210  fgSizerVS_Inputs->Add( m_staticTextClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1211 
1212  m_textCtrlClearanceDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1213  fgSizerVS_Inputs->Add( m_textCtrlClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1214 
1215  wxArrayString m_choiceClearanceDiaChoices;
1216  m_choiceClearanceDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceClearanceDiaChoices, 0 );
1217  m_choiceClearanceDia->SetSelection( 0 );
1218  fgSizerVS_Inputs->Add( m_choiceClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
1219 
1220  m_staticTextImpedance = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Z0:"), wxDefaultPosition, wxDefaultSize, 0 );
1221  m_staticTextImpedance->Wrap( -1 );
1222  m_staticTextImpedance->SetToolTip( _("Characteristic impedance of conductor") );
1223 
1224  fgSizerVS_Inputs->Add( m_staticTextImpedance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1225 
1226  m_textCtrlImpedance = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1227  fgSizerVS_Inputs->Add( m_textCtrlImpedance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1228 
1229  wxArrayString m_choiceImpedanceChoices;
1230  m_choiceImpedance = new UNIT_SELECTOR_RESISTOR( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceImpedanceChoices, 0 );
1231  m_choiceImpedance->SetSelection( 0 );
1232  fgSizerVS_Inputs->Add( m_choiceImpedance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT, 5 );
1233 
1234  m_staticAppliedCurrent = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Applied current:"), wxDefaultPosition, wxDefaultSize, 0 );
1235  m_staticAppliedCurrent->Wrap( -1 );
1236  fgSizerVS_Inputs->Add( m_staticAppliedCurrent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1237 
1238  m_textCtrlAppliedCurrent = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1239  fgSizerVS_Inputs->Add( m_textCtrlAppliedCurrent, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1240 
1241  m_staticTextAppliedCurrentUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 );
1242  m_staticTextAppliedCurrentUnits->Wrap( -1 );
1243  fgSizerVS_Inputs->Add( m_staticTextAppliedCurrentUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1244 
1245  m_staticTextResistivity = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Plating resistivity:"), wxDefaultPosition, wxDefaultSize, 0 );
1246  m_staticTextResistivity->Wrap( -1 );
1247  m_staticTextResistivity->SetToolTip( _("Specific resistance in ohms * meters") );
1248 
1249  fgSizerVS_Inputs->Add( m_staticTextResistivity, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1250 
1251  wxBoxSizer* bSizer422;
1252  bSizer422 = new wxBoxSizer( wxHORIZONTAL );
1253 
1254  m_textCtrlPlatingResistivity = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1255  bSizer422->Add( m_textCtrlPlatingResistivity, 1, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT, 5 );
1256 
1257  m_button_ResistivityVia = new wxButton( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
1258  bSizer422->Add( m_button_ResistivityVia, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1259 
1260 
1261  fgSizerVS_Inputs->Add( bSizer422, 1, wxEXPAND, 5 );
1262 
1263  m_viaResistivityUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("ohm-meter"), wxDefaultPosition, wxDefaultSize, 0 );
1264  m_viaResistivityUnits->Wrap( -1 );
1265  fgSizerVS_Inputs->Add( m_viaResistivityUnits, 0, wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 );
1266 
1267  m_staticTextPermittivity = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Substrate relative permittivity:"), wxDefaultPosition, wxDefaultSize, 0 );
1268  m_staticTextPermittivity->Wrap( -1 );
1269  m_staticTextPermittivity->SetToolTip( _("Relative dielectric constant (epsilon r)") );
1270 
1271  fgSizerVS_Inputs->Add( m_staticTextPermittivity, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1272 
1273  wxBoxSizer* bSizer423;
1274  bSizer423 = new wxBoxSizer( wxHORIZONTAL );
1275 
1276  m_textCtrlPlatingPermittivity = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1277  bSizer423->Add( m_textCtrlPlatingPermittivity, 1, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT, 5 );
1278 
1279  m_button_Permittivity = new wxButton( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
1280  bSizer423->Add( m_button_Permittivity, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1281 
1282 
1283  fgSizerVS_Inputs->Add( bSizer423, 1, wxEXPAND, 5 );
1284 
1285 
1286  fgSizerVS_Inputs->Add( 0, 0, 1, wxEXPAND, 5 );
1287 
1288  m_staticTextTemperatureDiff = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Temperature rise:"), wxDefaultPosition, wxDefaultSize, 0 );
1289  m_staticTextTemperatureDiff->Wrap( -1 );
1290  m_staticTextTemperatureDiff->SetToolTip( _("Maximum acceptable rise in temperature") );
1291 
1292  fgSizerVS_Inputs->Add( m_staticTextTemperatureDiff, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1293 
1294  m_textCtrlTemperatureDiff = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1295  fgSizerVS_Inputs->Add( m_textCtrlTemperatureDiff, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1296 
1297  m_viaTempUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("deg C"), wxDefaultPosition, wxDefaultSize, 0 );
1298  m_viaTempUnits->Wrap( -1 );
1299  fgSizerVS_Inputs->Add( m_viaTempUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1300 
1301  m_staticTextRiseTime = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Pulse rise time:"), wxDefaultPosition, wxDefaultSize, 0 );
1302  m_staticTextRiseTime->Wrap( -1 );
1303  m_staticTextRiseTime->SetToolTip( _("Pulse rise time to calculate reactance") );
1304 
1305  fgSizerVS_Inputs->Add( m_staticTextRiseTime, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT, 5 );
1306 
1307  m_textCtrlRiseTime = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1308  fgSizerVS_Inputs->Add( m_textCtrlRiseTime, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1309 
1310  m_staticTextRiseTimeUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("ns"), wxDefaultPosition, wxDefaultSize, 0 );
1311  m_staticTextRiseTimeUnits->Wrap( -1 );
1312  m_staticTextRiseTimeUnits->SetToolTip( _("nanoseconds") );
1313 
1314  fgSizerVS_Inputs->Add( m_staticTextRiseTimeUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1315 
1316 
1317  sbSizerVS_Inputs->Add( fgSizerVS_Inputs, 0, wxEXPAND, 5 );
1318 
1319 
1320  bSizerViaLeftColumn->Add( sbSizerVS_Inputs, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
1321 
1322  m_staticTextWarning = new wxStaticText( m_panelViaSize, wxID_ANY, _("Warning:\nVia pad diameter >= Clearance hole diameter.\nSome parameters cannot be calculated for a via inside a copper zone."), wxDefaultPosition, wxDefaultSize, 0 );
1323  m_staticTextWarning->Wrap( -1 );
1324  m_staticTextWarning->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
1325 
1326  bSizerViaLeftColumn->Add( m_staticTextWarning, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 10 );
1327 
1328 
1329  bSizerViaSize->Add( bSizerViaLeftColumn, 1, wxEXPAND, 5 );
1330 
1331  wxBoxSizer* bSizerRight;
1332  bSizerRight = new wxBoxSizer( wxVERTICAL );
1333 
1334  bSizerRight->SetMinSize( wxSize( -1,460 ) );
1335  wxStaticBoxSizer* sbSizerVS_Result;
1336  sbSizerVS_Result = new wxStaticBoxSizer( new wxStaticBox( m_panelViaSize, wxID_ANY, _("Results") ), wxVERTICAL );
1337 
1338  wxFlexGridSizer* fgSizerTW_Results11;
1339  fgSizerTW_Results11 = new wxFlexGridSizer( 0, 3, 3, 0 );
1340  fgSizerTW_Results11->AddGrowableCol( 1 );
1341  fgSizerTW_Results11->AddGrowableCol( 2 );
1342  fgSizerTW_Results11->SetFlexibleDirection( wxBOTH );
1343  fgSizerTW_Results11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
1344 
1345  m_staticTextArea11 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 );
1346  m_staticTextArea11->Wrap( -1 );
1347  fgSizerTW_Results11->Add( m_staticTextArea11, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1348 
1349  m_ViaResistance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1350  m_ViaResistance->Wrap( -1 );
1351  fgSizerTW_Results11->Add( m_ViaResistance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1352 
1353  m_viaResUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("ohm"), wxDefaultPosition, wxDefaultSize, 0 );
1354  m_viaResUnits->Wrap( -1 );
1355  fgSizerTW_Results11->Add( m_viaResUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1356 
1357  m_staticText65111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 );
1358  m_staticText65111->Wrap( -1 );
1359  fgSizerTW_Results11->Add( m_staticText65111, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1360 
1361  m_ViaVoltageDrop = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1362  m_ViaVoltageDrop->Wrap( -1 );
1363  fgSizerTW_Results11->Add( m_ViaVoltageDrop, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1364 
1365  m_staticText8411 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("V"), wxDefaultPosition, wxDefaultSize, 0 );
1366  m_staticText8411->Wrap( -1 );
1367  fgSizerTW_Results11->Add( m_staticText8411, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1368 
1369  m_staticText66111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 );
1370  m_staticText66111->Wrap( -1 );
1371  fgSizerTW_Results11->Add( m_staticText66111, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1372 
1373  m_ViaPowerLoss = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1374  m_ViaPowerLoss->Wrap( -1 );
1375  fgSizerTW_Results11->Add( m_ViaPowerLoss, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1376 
1377  m_staticText8311 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("W"), wxDefaultPosition, wxDefaultSize, 0 );
1378  m_staticText8311->Wrap( -1 );
1379  fgSizerTW_Results11->Add( m_staticText8311, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1380 
1381  m_staticText79211 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Thermal resistance:"), wxDefaultPosition, wxDefaultSize, 0 );
1382  m_staticText79211->Wrap( -1 );
1383  m_staticText79211->SetToolTip( _("Using thermal conductivity value 401 Watts/(meter-Kelvin)") );
1384 
1385  fgSizerTW_Results11->Add( m_staticText79211, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1386 
1387  m_ViaThermalResistance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1388  m_ViaThermalResistance->Wrap( -1 );
1389  fgSizerTW_Results11->Add( m_ViaThermalResistance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1390 
1391  m_viaThermalResUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("deg C/W"), wxDefaultPosition, wxDefaultSize, 0 );
1392  m_viaThermalResUnits->Wrap( -1 );
1393  fgSizerTW_Results11->Add( m_viaThermalResUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1394 
1395  m_staticTextAmpacity = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Estimated ampacity:"), wxDefaultPosition, wxDefaultSize, 0 );
1396  m_staticTextAmpacity->Wrap( -1 );
1397  m_staticTextAmpacity->SetToolTip( _("Based on temperature rise") );
1398 
1399  fgSizerTW_Results11->Add( m_staticTextAmpacity, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
1400 
1401  m_ViaAmpacity = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1402  m_ViaAmpacity->Wrap( -1 );
1403  fgSizerTW_Results11->Add( m_ViaAmpacity, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1404 
1405  m_staticTextAmpacityUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 );
1406  m_staticTextAmpacityUnits->Wrap( -1 );
1407  fgSizerTW_Results11->Add( m_staticTextAmpacityUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
1408 
1409  m_staticTextCapacitance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Capacitance:"), wxDefaultPosition, wxDefaultSize, 0 );
1410  m_staticTextCapacitance->Wrap( -1 );
1411  fgSizerTW_Results11->Add( m_staticTextCapacitance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1412 
1413  m_ViaCapacitance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1414  m_ViaCapacitance->Wrap( -1 );
1415  fgSizerTW_Results11->Add( m_ViaCapacitance, 0, wxRIGHT|wxLEFT, 5 );
1416 
1417  m_staticTextCapacitanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("pF"), wxDefaultPosition, wxDefaultSize, 0 );
1418  m_staticTextCapacitanceUnits->Wrap( -1 );
1419  m_staticTextCapacitanceUnits->SetToolTip( _("pico-Farad") );
1420 
1421  fgSizerTW_Results11->Add( m_staticTextCapacitanceUnits, 0, wxRIGHT, 5 );
1422 
1423  m_staticTextRiseTimeOutput = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Rise time degradation:"), wxDefaultPosition, wxDefaultSize, 0 );
1424  m_staticTextRiseTimeOutput->Wrap( -1 );
1425  m_staticTextRiseTimeOutput->SetToolTip( _("Rise time degradation for given Z0 and calculated capacitance") );
1426 
1427  fgSizerTW_Results11->Add( m_staticTextRiseTimeOutput, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1428 
1429  m_RiseTimeOutput = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1430  m_RiseTimeOutput->Wrap( -1 );
1431  fgSizerTW_Results11->Add( m_RiseTimeOutput, 0, wxRIGHT|wxLEFT, 5 );
1432 
1433  m_staticTextRiseTimeOutputUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("ps"), wxDefaultPosition, wxDefaultSize, 0 );
1434  m_staticTextRiseTimeOutputUnits->Wrap( -1 );
1435  m_staticTextRiseTimeOutputUnits->SetToolTip( _("picoseconds") );
1436 
1437  fgSizerTW_Results11->Add( m_staticTextRiseTimeOutputUnits, 0, wxRIGHT, 5 );
1438 
1439  m_staticTextInductance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Inductance:"), wxDefaultPosition, wxDefaultSize, 0 );
1440  m_staticTextInductance->Wrap( -1 );
1441  fgSizerTW_Results11->Add( m_staticTextInductance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1442 
1443  m_Inductance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1444  m_Inductance->Wrap( -1 );
1445  fgSizerTW_Results11->Add( m_Inductance, 0, wxRIGHT|wxLEFT, 5 );
1446 
1447  m_staticTextInductanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("nH"), wxDefaultPosition, wxDefaultSize, 0 );
1448  m_staticTextInductanceUnits->Wrap( -1 );
1449  m_staticTextInductanceUnits->SetToolTip( _("nano-Henry") );
1450 
1451  fgSizerTW_Results11->Add( m_staticTextInductanceUnits, 0, wxRIGHT, 5 );
1452 
1453  m_staticTextReactance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Reactance:"), wxDefaultPosition, wxDefaultSize, 0 );
1454  m_staticTextReactance->Wrap( -1 );
1455  m_staticTextReactance->SetToolTip( _("Inductive reactance for given rise time and calculated inductance") );
1456 
1457  fgSizerTW_Results11->Add( m_staticTextReactance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1458 
1459  m_Reactance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1460  m_Reactance->Wrap( -1 );
1461  fgSizerTW_Results11->Add( m_Reactance, 0, wxRIGHT|wxLEFT, 5 );
1462 
1463  m_viaReactanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("ohm"), wxDefaultPosition, wxDefaultSize, 0 );
1464  m_viaReactanceUnits->Wrap( -1 );
1465  fgSizerTW_Results11->Add( m_viaReactanceUnits, 0, wxRIGHT, 5 );
1466 
1467 
1468  sbSizerVS_Result->Add( fgSizerTW_Results11, 0, wxEXPAND, 5 );
1469 
1470 
1471  bSizerRight->Add( sbSizerVS_Result, 0, wxEXPAND|wxALL, 5 );
1472 
1473  m_viaBitmap = new wxStaticBitmap( m_panelViaSize, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
1474  m_viaBitmap->SetToolTip( _("Top view of via") );
1475 
1476  bSizerRight->Add( m_viaBitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 10 );
1477 
1478 
1479  bSizerRight->Add( 0, 0, 1, 0, 5 );
1480 
1481  m_buttonViaReset = new wxButton( m_panelViaSize, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
1482  bSizerRight->Add( m_buttonViaReset, 0, wxALIGN_RIGHT|wxALL, 5 );
1483 
1484 
1485  bSizerViaSize->Add( bSizerRight, 0, wxEXPAND, 5 );
1486 
1487 
1488  m_panelViaSize->SetSizer( bSizerViaSize );
1489  m_panelViaSize->Layout();
1490  bSizerViaSize->Fit( m_panelViaSize );
1491  m_Notebook->AddPage( m_panelViaSize, _("Via Size"), false );
1492  m_panelTrackWidth = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1493  wxBoxSizer* bSizerTrackWidth;
1494  bSizerTrackWidth = new wxBoxSizer( wxHORIZONTAL );
1495 
1496  wxBoxSizer* bSizeLeft;
1497  bSizeLeft = new wxBoxSizer( wxVERTICAL );
1498 
1499  wxStaticBoxSizer* sbSizerTW_Prms;
1500  sbSizerTW_Prms = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("Parameters") ), wxVERTICAL );
1501 
1502  wxFlexGridSizer* fgSizerTWprms;
1503  fgSizerTWprms = new wxFlexGridSizer( 4, 3, 0, 0 );
1504  fgSizerTWprms->AddGrowableCol( 1 );
1505  fgSizerTWprms->SetFlexibleDirection( wxBOTH );
1506  fgSizerTWprms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
1507 
1508  m_staticTextCurrent = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Current:"), wxDefaultPosition, wxDefaultSize, 0 );
1509  m_staticTextCurrent->Wrap( -1 );
1510  fgSizerTWprms->Add( m_staticTextCurrent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM, 5 );
1511 
1512  m_TrackCurrentValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1513  fgSizerTWprms->Add( m_TrackCurrentValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1514 
1515  m_staticText62 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 );
1516  m_staticText62->Wrap( -1 );
1517  fgSizerTWprms->Add( m_staticText62, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1518 
1519  m_staticText63 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Temperature rise:"), wxDefaultPosition, wxDefaultSize, 0 );
1520  m_staticText63->Wrap( -1 );
1521  fgSizerTWprms->Add( m_staticText63, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM, 5 );
1522 
1523  m_TrackDeltaTValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1524  fgSizerTWprms->Add( m_TrackDeltaTValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1525 
1526  m_trackTempUnits = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("deg C"), wxDefaultPosition, wxDefaultSize, 0 );
1527  m_trackTempUnits->Wrap( -1 );
1528  fgSizerTWprms->Add( m_trackTempUnits, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1529 
1530  m_staticText66 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Conductor length:"), wxDefaultPosition, wxDefaultSize, 0 );
1531  m_staticText66->Wrap( -1 );
1532  fgSizerTWprms->Add( m_staticText66, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM, 5 );
1533 
1534  m_TrackLengthValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1535  fgSizerTWprms->Add( m_TrackLengthValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1536 
1537  wxArrayString m_TW_CuLength_choiceUnitChoices;
1538  m_TW_CuLength_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_CuLength_choiceUnitChoices, 0 );
1539  m_TW_CuLength_choiceUnit->SetSelection( 0 );
1540  fgSizerTWprms->Add( m_TW_CuLength_choiceUnit, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT, 5 );
1541 
1542  m_staticText103 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Resistivity:"), wxDefaultPosition, wxDefaultSize, 0 );
1543  m_staticText103->Wrap( -1 );
1544  fgSizerTWprms->Add( m_staticText103, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM, 5 );
1545 
1546  m_TWResistivity = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1547  fgSizerTWprms->Add( m_TWResistivity, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1548 
1549  m_resistivityUnits = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("ohm-meter"), wxDefaultPosition, wxDefaultSize, 0 );
1550  m_resistivityUnits->Wrap( -1 );
1551  fgSizerTWprms->Add( m_resistivityUnits, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1552 
1553 
1554  sbSizerTW_Prms->Add( fgSizerTWprms, 0, wxEXPAND, 5 );
1555 
1556 
1557  bSizeLeft->Add( sbSizerTW_Prms, 0, wxALL|wxEXPAND, 5 );
1558 
1559  m_htmlWinFormulas = new wxHtmlWindow( m_panelTrackWidth, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO );
1560  bSizeLeft->Add( m_htmlWinFormulas, 1, wxEXPAND|wxALL, 8 );
1561 
1562 
1563  bSizerTrackWidth->Add( bSizeLeft, 1, wxEXPAND, 5 );
1564 
1565  wxBoxSizer* bSizeRight;
1566  bSizeRight = new wxBoxSizer( wxVERTICAL );
1567 
1568  wxStaticBoxSizer* sbSizerTW_Result;
1569  sbSizerTW_Result = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("External Layer Traces") ), wxVERTICAL );
1570 
1571  wxFlexGridSizer* fgSizerTW_Results;
1572  fgSizerTW_Results = new wxFlexGridSizer( 0, 3, 0, 0 );
1573  fgSizerTW_Results->AddGrowableCol( 1 );
1574  fgSizerTW_Results->SetFlexibleDirection( wxBOTH );
1575  fgSizerTW_Results->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
1576 
1577  m_staticTextExtWidth = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Trace width:"), wxDefaultPosition, wxDefaultSize, 0 );
1578  m_staticTextExtWidth->Wrap( -1 );
1579  m_staticTextExtWidth->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
1580 
1581  fgSizerTW_Results->Add( m_staticTextExtWidth, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 );
1582 
1583  m_ExtTrackWidthValue = new wxTextCtrl( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1584  fgSizerTW_Results->Add( m_ExtTrackWidthValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1585 
1586  wxArrayString m_TW_ExtTrackWidth_choiceUnitChoices;
1587  m_TW_ExtTrackWidth_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_ExtTrackWidth_choiceUnitChoices, 0 );
1588  m_TW_ExtTrackWidth_choiceUnit->SetSelection( 0 );
1589  fgSizerTW_Results->Add( m_TW_ExtTrackWidth_choiceUnit, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1590 
1591  m_staticText65 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Trace thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
1592  m_staticText65->Wrap( -1 );
1593  fgSizerTW_Results->Add( m_staticText65, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1594 
1595  m_ExtTrackThicknessValue = new wxTextCtrl( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1596  fgSizerTW_Results->Add( m_ExtTrackThicknessValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 );
1597 
1598  wxArrayString m_ExtTrackThicknessUnitChoices;
1599  m_ExtTrackThicknessUnit = new UNIT_SELECTOR_THICKNESS( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ExtTrackThicknessUnitChoices, 0 );
1600  m_ExtTrackThicknessUnit->SetSelection( 0 );
1601  fgSizerTW_Results->Add( m_ExtTrackThicknessUnit, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 );
1602 
1603  m_staticline3 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
1604  fgSizerTW_Results->Add( m_staticline3, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
1605 
1606  m_staticline4 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
1607  fgSizerTW_Results->Add( m_staticline4, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
1608 
1609  m_staticline5 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
1610  fgSizerTW_Results->Add( m_staticline5, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
1611 
1612  m_staticTextArea = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Cross-section area:"), wxDefaultPosition, wxDefaultSize, 0 );
1613  m_staticTextArea->Wrap( -1 );
1614  fgSizerTW_Results->Add( m_staticTextArea, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1615 
1616  m_ExtTrackAreaValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1617  m_ExtTrackAreaValue->Wrap( -1 );
1618  fgSizerTW_Results->Add( m_ExtTrackAreaValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1619 
1620  m_extTrackAreaUnitLabel = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("mm ^ 2"), wxDefaultPosition, wxDefaultSize, 0 );
1621  m_extTrackAreaUnitLabel->Wrap( -1 );
1622  fgSizerTW_Results->Add( m_extTrackAreaUnitLabel, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1623 
1624  m_staticText651 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 );
1625  m_staticText651->Wrap( -1 );
1626  fgSizerTW_Results->Add( m_staticText651, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1627 
1628  m_ExtTrackResistValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1629  m_ExtTrackResistValue->Wrap( -1 );
1630  fgSizerTW_Results->Add( m_ExtTrackResistValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1631 
1632  m_extTrackResUnits = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("ohm"), wxDefaultPosition, wxDefaultSize, 0 );
1633  m_extTrackResUnits->Wrap( -1 );
1634  fgSizerTW_Results->Add( m_extTrackResUnits, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1635 
1636  m_staticText661 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 );
1637  m_staticText661->Wrap( -1 );
1638  fgSizerTW_Results->Add( m_staticText661, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1639 
1640  m_ExtTrackVDropValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1641  m_ExtTrackVDropValue->Wrap( -1 );
1642  fgSizerTW_Results->Add( m_ExtTrackVDropValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1643 
1644  m_staticText83 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("V"), wxDefaultPosition, wxDefaultSize, 0 );
1645  m_staticText83->Wrap( -1 );
1646  fgSizerTW_Results->Add( m_staticText83, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1647 
1648  m_staticText79 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 );
1649  m_staticText79->Wrap( -1 );
1650  fgSizerTW_Results->Add( m_staticText79, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1651 
1652  m_ExtTrackLossValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1653  m_ExtTrackLossValue->Wrap( -1 );
1654  fgSizerTW_Results->Add( m_ExtTrackLossValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1655 
1656  m_staticText791 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("W"), wxDefaultPosition, wxDefaultSize, 0 );
1657  m_staticText791->Wrap( -1 );
1658  fgSizerTW_Results->Add( m_staticText791, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1659 
1660 
1661  sbSizerTW_Result->Add( fgSizerTW_Results, 0, wxEXPAND, 5 );
1662 
1663 
1664  bSizeRight->Add( sbSizerTW_Result, 1, wxEXPAND|wxALL, 5 );
1665 
1666  wxStaticBoxSizer* sbSizerTW_Result1;
1667  sbSizerTW_Result1 = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("Internal Layer Traces") ), wxVERTICAL );
1668 
1669  wxFlexGridSizer* fgSizerTW_Results1;
1670  fgSizerTW_Results1 = new wxFlexGridSizer( 7, 3, 0, 0 );
1671  fgSizerTW_Results1->AddGrowableCol( 1 );
1672  fgSizerTW_Results1->SetFlexibleDirection( wxBOTH );
1673  fgSizerTW_Results1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
1674 
1675  m_staticTextIntWidth = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Trace width:"), wxDefaultPosition, wxDefaultSize, 0 );
1676  m_staticTextIntWidth->Wrap( -1 );
1677  m_staticTextIntWidth->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
1678 
1679  fgSizerTW_Results1->Add( m_staticTextIntWidth, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 );
1680 
1681  m_IntTrackWidthValue = new wxTextCtrl( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1682  fgSizerTW_Results1->Add( m_IntTrackWidthValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxRIGHT|wxLEFT, 5 );
1683 
1684  wxArrayString m_TW_IntTrackWidth_choiceUnitChoices;
1685  m_TW_IntTrackWidth_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_IntTrackWidth_choiceUnitChoices, 0 );
1686  m_TW_IntTrackWidth_choiceUnit->SetSelection( 0 );
1687  fgSizerTW_Results1->Add( m_TW_IntTrackWidth_choiceUnit, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 );
1688 
1689  m_staticText652 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Trace thickness:"), wxDefaultPosition, wxDefaultSize, 0 );
1690  m_staticText652->Wrap( -1 );
1691  fgSizerTW_Results1->Add( m_staticText652, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
1692 
1693  m_IntTrackThicknessValue = new wxTextCtrl( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1694  fgSizerTW_Results1->Add( m_IntTrackThicknessValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 );
1695 
1696  wxArrayString m_IntTrackThicknessUnitChoices;
1697  m_IntTrackThicknessUnit = new UNIT_SELECTOR_THICKNESS( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_IntTrackThicknessUnitChoices, 0 );
1698  m_IntTrackThicknessUnit->SetSelection( 0 );
1699  fgSizerTW_Results1->Add( m_IntTrackThicknessUnit, 0, wxALL, 5 );
1700 
1701  m_staticline8 = new wxStaticLine( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
1702  fgSizerTW_Results1->Add( m_staticline8, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
1703 
1704  m_staticline9 = new wxStaticLine( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
1705  fgSizerTW_Results1->Add( m_staticline9, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
1706 
1707  m_staticline10 = new wxStaticLine( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
1708  fgSizerTW_Results1->Add( m_staticline10, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 );
1709 
1710  m_staticTextArea1 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Cross-section area:"), wxDefaultPosition, wxDefaultSize, 0 );
1711  m_staticTextArea1->Wrap( -1 );
1712  fgSizerTW_Results1->Add( m_staticTextArea1, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 );
1713 
1714  m_IntTrackAreaValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1715  m_IntTrackAreaValue->Wrap( -1 );
1716  fgSizerTW_Results1->Add( m_IntTrackAreaValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 );
1717 
1718  m_intTrackAreaUnitLabel = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("mm ^ 2"), wxDefaultPosition, wxDefaultSize, 0 );
1719  m_intTrackAreaUnitLabel->Wrap( -1 );
1720  fgSizerTW_Results1->Add( m_intTrackAreaUnitLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 );
1721 
1722  m_staticText6511 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 );
1723  m_staticText6511->Wrap( -1 );
1724  fgSizerTW_Results1->Add( m_staticText6511, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1725 
1726  m_IntTrackResistValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1727  m_IntTrackResistValue->Wrap( -1 );
1728  fgSizerTW_Results1->Add( m_IntTrackResistValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1729 
1730  m_intTrackResUnits = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("ohm"), wxDefaultPosition, wxDefaultSize, 0 );
1731  m_intTrackResUnits->Wrap( -1 );
1732  fgSizerTW_Results1->Add( m_intTrackResUnits, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1733 
1734  m_staticText6611 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 );
1735  m_staticText6611->Wrap( -1 );
1736  fgSizerTW_Results1->Add( m_staticText6611, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1737 
1738  m_IntTrackVDropValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1739  m_IntTrackVDropValue->Wrap( -1 );
1740  fgSizerTW_Results1->Add( m_IntTrackVDropValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1741 
1742  m_staticText831 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("V"), wxDefaultPosition, wxDefaultSize, 0 );
1743  m_staticText831->Wrap( -1 );
1744  fgSizerTW_Results1->Add( m_staticText831, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1745 
1746  m_staticText792 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 );
1747  m_staticText792->Wrap( -1 );
1748  fgSizerTW_Results1->Add( m_staticText792, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1749 
1750  m_IntTrackLossValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
1751  m_IntTrackLossValue->Wrap( -1 );
1752  fgSizerTW_Results1->Add( m_IntTrackLossValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1753 
1754  m_staticText7911 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("W"), wxDefaultPosition, wxDefaultSize, 0 );
1755  m_staticText7911->Wrap( -1 );
1756  fgSizerTW_Results1->Add( m_staticText7911, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 5 );
1757 
1758 
1759  sbSizerTW_Result1->Add( fgSizerTW_Results1, 0, wxEXPAND, 5 );
1760 
1761 
1762  bSizeRight->Add( sbSizerTW_Result1, 1, wxEXPAND|wxALL, 5 );
1763 
1764  m_buttonTrackWidthReset = new wxButton( m_panelTrackWidth, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 );
1765  bSizeRight->Add( m_buttonTrackWidthReset, 0, wxALIGN_RIGHT|wxALL, 5 );
1766 
1767 
1768  bSizerTrackWidth->Add( bSizeRight, 0, wxEXPAND, 5 );
1769 
1770 
1771  m_panelTrackWidth->SetSizer( bSizerTrackWidth );
1772  m_panelTrackWidth->Layout();
1773  bSizerTrackWidth->Fit( m_panelTrackWidth );
1774  m_Notebook->AddPage( m_panelTrackWidth, _("Track Width"), false );
1775  m_panelElectricalSpacing = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1776  wxBoxSizer* bSizerElectricalClearance;
1777  bSizerElectricalClearance = new wxBoxSizer( wxHORIZONTAL );
1778 
1779  wxBoxSizer* bLeftSizerElectricalClearance;
1780  bLeftSizerElectricalClearance = new wxBoxSizer( wxVERTICAL );
1781 
1782  wxArrayString m_ElectricalSpacingUnitsSelectorChoices;
1783  m_ElectricalSpacingUnitsSelector = new UNIT_SELECTOR_LEN( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ElectricalSpacingUnitsSelectorChoices, 0 );
1784  m_ElectricalSpacingUnitsSelector->SetSelection( -1 );
1785  m_ElectricalSpacingUnitsSelector->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_LIGHT, false, wxEmptyString ) );
1786 
1787  bLeftSizerElectricalClearance->Add( m_ElectricalSpacingUnitsSelector, 0, wxEXPAND|wxALL, 10 );
1788 
1789  m_staticline2 = new wxStaticLine( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
1790  bLeftSizerElectricalClearance->Add( m_staticline2, 0, wxEXPAND|wxTOP|wxBOTTOM, 10 );
1791 
1792  m_staticText891 = new wxStaticText( m_panelElectricalSpacing, wxID_ANY, _("Voltage > 500 V:"), wxDefaultPosition, wxDefaultSize, 0 );
1793  m_staticText891->Wrap( -1 );
1794  bLeftSizerElectricalClearance->Add( m_staticText891, 0, wxTOP|wxRIGHT|wxLEFT, 5 );
1795 
1796  m_ElectricalSpacingVoltage = new wxTextCtrl( m_panelElectricalSpacing, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
1797  bLeftSizerElectricalClearance->Add( m_ElectricalSpacingVoltage, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1798 
1799  m_buttonElectSpacingRefresh = new wxButton( m_panelElectricalSpacing, wxID_ANY, _("Update Values"), wxDefaultPosition, wxDefaultSize, 0 );
1800  bLeftSizerElectricalClearance->Add( m_buttonElectSpacingRefresh, 0, wxEXPAND|wxALL, 5 );
1801 
1802 
1803  bSizerElectricalClearance->Add( bLeftSizerElectricalClearance, 0, wxEXPAND|wxTOP|wxBOTTOM|wxLEFT, 5 );
1804 
1805  m_electricalSpacingSizer = new wxBoxSizer( wxVERTICAL );
1806 
1807  m_staticTextElectricalSpacing = new wxStaticText( m_panelElectricalSpacing, wxID_ANY, _("Note: Values are minimal values (from IPC 2221)"), wxDefaultPosition, wxDefaultSize, 0 );
1808  m_staticTextElectricalSpacing->Wrap( -1 );
1809  m_staticTextElectricalSpacing->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
1810 
1811  m_electricalSpacingSizer->Add( m_staticTextElectricalSpacing, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 );
1812 
1813  m_gridElectricalSpacingValues = new wxGrid( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
1814 
1815  // Grid
1816  m_gridElectricalSpacingValues->CreateGrid( 10, 7 );
1817  m_gridElectricalSpacingValues->EnableEditing( false );
1818  m_gridElectricalSpacingValues->EnableGridLines( true );
1819  m_gridElectricalSpacingValues->EnableDragGridSize( false );
1820  m_gridElectricalSpacingValues->SetMargins( 0, 0 );
1821 
1822  // Columns
1823  m_gridElectricalSpacingValues->SetColSize( 0, 100 );
1824  m_gridElectricalSpacingValues->SetColSize( 1, 100 );
1825  m_gridElectricalSpacingValues->SetColSize( 2, 100 );
1826  m_gridElectricalSpacingValues->SetColSize( 3, 100 );
1827  m_gridElectricalSpacingValues->SetColSize( 4, 100 );
1828  m_gridElectricalSpacingValues->SetColSize( 5, 100 );
1829  m_gridElectricalSpacingValues->SetColSize( 6, 100 );
1830  m_gridElectricalSpacingValues->EnableDragColMove( false );
1831  m_gridElectricalSpacingValues->EnableDragColSize( true );
1832  m_gridElectricalSpacingValues->SetColLabelSize( 30 );
1833  m_gridElectricalSpacingValues->SetColLabelValue( 0, _("B1") );
1834  m_gridElectricalSpacingValues->SetColLabelValue( 1, _("B2") );
1835  m_gridElectricalSpacingValues->SetColLabelValue( 2, _("B3") );
1836  m_gridElectricalSpacingValues->SetColLabelValue( 3, _("B4") );
1837  m_gridElectricalSpacingValues->SetColLabelValue( 4, _("A5") );
1838  m_gridElectricalSpacingValues->SetColLabelValue( 5, _("A6") );
1839  m_gridElectricalSpacingValues->SetColLabelValue( 6, _("A7") );
1840  m_gridElectricalSpacingValues->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
1841 
1842  // Rows
1843  m_gridElectricalSpacingValues->SetRowSize( 0, 24 );
1844  m_gridElectricalSpacingValues->SetRowSize( 1, 24 );
1845  m_gridElectricalSpacingValues->SetRowSize( 2, 24 );
1846  m_gridElectricalSpacingValues->SetRowSize( 3, 24 );
1847  m_gridElectricalSpacingValues->SetRowSize( 4, 24 );
1848  m_gridElectricalSpacingValues->SetRowSize( 5, 24 );
1849  m_gridElectricalSpacingValues->SetRowSize( 6, 24 );
1850  m_gridElectricalSpacingValues->SetRowSize( 7, 24 );
1851  m_gridElectricalSpacingValues->SetRowSize( 8, 24 );
1852  m_gridElectricalSpacingValues->SetRowSize( 9, 24 );
1853  m_gridElectricalSpacingValues->EnableDragRowSize( false );
1854  m_gridElectricalSpacingValues->SetRowLabelSize( 100 );
1855  m_gridElectricalSpacingValues->SetRowLabelValue( 0, _("0 .. 15 V") );
1856  m_gridElectricalSpacingValues->SetRowLabelValue( 1, _("16 .. 30 V") );
1857  m_gridElectricalSpacingValues->SetRowLabelValue( 2, _("31 .. 50 V") );
1858  m_gridElectricalSpacingValues->SetRowLabelValue( 3, _("51 .. 100 V") );
1859  m_gridElectricalSpacingValues->SetRowLabelValue( 4, _("101 .. 150 V") );
1860  m_gridElectricalSpacingValues->SetRowLabelValue( 5, _("151 .. 170 V") );
1861  m_gridElectricalSpacingValues->SetRowLabelValue( 6, _("171 .. 250 V") );
1862  m_gridElectricalSpacingValues->SetRowLabelValue( 7, _("251 .. 300 V") );
1863  m_gridElectricalSpacingValues->SetRowLabelValue( 8, _("301 .. 500 V") );
1864  m_gridElectricalSpacingValues->SetRowLabelValue( 9, _(" > 500 V") );
1865  m_gridElectricalSpacingValues->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER );
1866 
1867  // Label Appearance
1868 
1869  // Cell Defaults
1870  m_gridElectricalSpacingValues->SetDefaultCellAlignment( wxALIGN_CENTER, wxALIGN_TOP );
1872 
1873  m_staticText88 = new wxStaticText( m_panelElectricalSpacing, wxID_ANY, _("* B1 - Internal Conductors\n* B2 - External Conductors, uncoated, sea level to 3050 m\n* B3 - External Conductors, uncoated, over 3050 m\n* B4 - External Conductors, with permanent polymer coating (any elevation)\n* A5 - External Conductors, with conformal coating over assembly (any elevation)\n* A6 - External Component lead/termination, uncoated\n* A7 - External Component lead termination, with conformal coating (any elevation)"), wxDefaultPosition, wxDefaultSize, 0 );
1874  m_staticText88->Wrap( -1 );
1875  m_electricalSpacingSizer->Add( m_staticText88, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 );
1876 
1877 
1878  bSizerElectricalClearance->Add( m_electricalSpacingSizer, 1, wxEXPAND|wxLEFT, 20 );
1879 
1880 
1881  m_panelElectricalSpacing->SetSizer( bSizerElectricalClearance );
1882  m_panelElectricalSpacing->Layout();
1883  bSizerElectricalClearance->Fit( m_panelElectricalSpacing );
1884  m_Notebook->AddPage( m_panelElectricalSpacing, _("Electrical Spacing"), false );
1885  m_panelBoardClass = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1886  wxBoxSizer* bSizerBoardClass;
1887  bSizerBoardClass = new wxBoxSizer( wxHORIZONTAL );
1888 
1889  wxBoxSizer* bSizerUnitsMargins;
1890  bSizerUnitsMargins = new wxBoxSizer( wxVERTICAL );
1891 
1892  wxArrayString m_BoardClassesUnitsSelectorChoices;
1893  m_BoardClassesUnitsSelector = new UNIT_SELECTOR_LEN( m_panelBoardClass, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_BoardClassesUnitsSelectorChoices, 0 );
1894  m_BoardClassesUnitsSelector->SetSelection( 0 );
1895  bSizerUnitsMargins->Add( m_BoardClassesUnitsSelector, 0, wxTOP|wxBOTTOM|wxRIGHT, 32 );
1896 
1897 
1898  bSizerBoardClass->Add( bSizerUnitsMargins, 0, wxLEFT, 10 );
1899 
1900  wxBoxSizer* brdclsSizerRight;
1901  brdclsSizerRight = new wxBoxSizer( wxVERTICAL );
1902 
1903  m_staticTextBrdClass = new wxStaticText( m_panelBoardClass, wxID_ANY, _("Note: Values are minimal values"), wxDefaultPosition, wxDefaultSize, 0 );
1904  m_staticTextBrdClass->Wrap( -1 );
1905  m_staticTextBrdClass->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) );
1906 
1907  brdclsSizerRight->Add( m_staticTextBrdClass, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 );
1908 
1909  m_gridClassesValuesDisplay = new wxGrid( m_panelBoardClass, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
1910 
1911  // Grid
1912  m_gridClassesValuesDisplay->CreateGrid( 5, 6 );
1913  m_gridClassesValuesDisplay->EnableEditing( false );
1914  m_gridClassesValuesDisplay->EnableGridLines( true );
1915  m_gridClassesValuesDisplay->EnableDragGridSize( false );
1916  m_gridClassesValuesDisplay->SetMargins( 0, 0 );
1917 
1918  // Columns
1919  m_gridClassesValuesDisplay->SetColSize( 0, 100 );
1920  m_gridClassesValuesDisplay->SetColSize( 1, 100 );
1921  m_gridClassesValuesDisplay->SetColSize( 2, 100 );
1922  m_gridClassesValuesDisplay->SetColSize( 3, 100 );
1923  m_gridClassesValuesDisplay->SetColSize( 4, 100 );
1924  m_gridClassesValuesDisplay->SetColSize( 5, 100 );
1925  m_gridClassesValuesDisplay->EnableDragColMove( false );
1926  m_gridClassesValuesDisplay->EnableDragColSize( true );
1927  m_gridClassesValuesDisplay->SetColLabelSize( 30 );
1928  m_gridClassesValuesDisplay->SetColLabelValue( 0, _("Class 1") );
1929  m_gridClassesValuesDisplay->SetColLabelValue( 1, _("Class 2") );
1930  m_gridClassesValuesDisplay->SetColLabelValue( 2, _("Class 3") );
1931  m_gridClassesValuesDisplay->SetColLabelValue( 3, _("Class 4") );
1932  m_gridClassesValuesDisplay->SetColLabelValue( 4, _("Class 5") );
1933  m_gridClassesValuesDisplay->SetColLabelValue( 5, _("Class 6") );
1934  m_gridClassesValuesDisplay->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER );
1935 
1936  // Rows
1937  m_gridClassesValuesDisplay->SetRowSize( 0, 24 );
1938  m_gridClassesValuesDisplay->SetRowSize( 1, 24 );
1939  m_gridClassesValuesDisplay->SetRowSize( 2, 24 );
1940  m_gridClassesValuesDisplay->SetRowSize( 3, 24 );
1941  m_gridClassesValuesDisplay->SetRowSize( 4, 24 );
1942  m_gridClassesValuesDisplay->EnableDragRowSize( false );
1943  m_gridClassesValuesDisplay->SetRowLabelSize( 160 );
1944  m_gridClassesValuesDisplay->SetRowLabelValue( 0, _("Lines width") );
1945  m_gridClassesValuesDisplay->SetRowLabelValue( 1, _("Min clearance") );
1946  m_gridClassesValuesDisplay->SetRowLabelValue( 2, _("Via: (diam - drill)") );
1947  m_gridClassesValuesDisplay->SetRowLabelValue( 3, _("Plated Pad: (diam - drill)") );
1948  m_gridClassesValuesDisplay->SetRowLabelValue( 4, _("NP Pad: (diam - drill)") );
1949  m_gridClassesValuesDisplay->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER );
1950 
1951  // Label Appearance
1952 
1953  // Cell Defaults
1954  m_gridClassesValuesDisplay->SetDefaultCellAlignment( wxALIGN_CENTER, wxALIGN_TOP );
1955  brdclsSizerRight->Add( m_gridClassesValuesDisplay, 0, wxALL|wxEXPAND, 5 );
1956 
1957  m_panelShowClassPrms = new wxPanel( m_panelBoardClass, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
1958  brdclsSizerRight->Add( m_panelShowClassPrms, 1, wxALL|wxEXPAND, 5 );
1959 
1960 
1961  bSizerBoardClass->Add( brdclsSizerRight, 1, wxEXPAND, 5 );
1962 
1963 
1964  m_panelBoardClass->SetSizer( bSizerBoardClass );
1965  m_panelBoardClass->Layout();
1966  bSizerBoardClass->Fit( m_panelBoardClass );
1967  m_Notebook->AddPage( m_panelBoardClass, _("Board Classes"), true );
1968 
1969  bmainFrameSizer->Add( m_Notebook, 1, wxEXPAND, 5 );
1970 
1971 
1972  this->SetSizer( bmainFrameSizer );
1973  this->Layout();
1974  bmainFrameSizer->Fit( this );
1975 
1976  this->Centre( wxBOTH );
1977 
1978  // Connect Events
1979  this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( PCB_CALCULATOR_FRAME_BASE::OnClosePcbCalc ) );
1980  this->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PCB_CALCULATOR_FRAME_BASE::OnUpdateUI ) );
1981  m_choiceRegType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulTypeSelection ), NULL, this );
1982  m_buttonCalculate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorCalcButtonClick ), NULL, this );
1983  m_buttonRegulReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorResetButtonClick ), NULL, this );
1984  m_choiceRegulatorSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorSelection ), NULL, this );
1985  m_buttonDataFile->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnDataFileSelection ), NULL, this );
1986  m_buttonEditItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnEditRegulator ), NULL, this );
1987  m_buttonAddItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAddRegulator ), NULL, this );
1988  m_buttonRemoveItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRemoveRegulator ), NULL, this );
1989  m_AttenuatorsSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAttenuatorSelection ), NULL, this );
1990  m_buttonAlcAtt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this );
1991  m_bpButtonCalcAtt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this );
1992  m_e1->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
1993  m_e3->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
1994  m_e6->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
1995  m_e12->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
1996  m_buttonEScalculate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateESeries ), NULL, this );
1997  m_rbToleranceSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnToleranceSelection ), NULL, this );
1998  m_TranslineSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSelection ), NULL, this );
1999  m_button_EpsilonR->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineEpsilonR_Button ), NULL, this );
2000  m_button_TanD->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineTanD_Button ), NULL, this );
2001  m_button_Rho->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineRho_Button ), NULL, this );
2002  m_bpButtonAnalyze->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this );
2003  m_AnalyseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this );
2004  m_SynthetizeButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this );
2005  m_bpButtonSynthetize->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this );
2006  m_buttonTransLineReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTransLineResetButtonClick ), NULL, this );
2007  m_textCtrlHoleDia->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2008  m_choiceHoleDia->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2009  m_textCtrlPlatingThickness->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2010  m_choicePlatingThickness->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2011  m_textCtrlViaLength->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2012  m_choiceViaLength->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2013  m_textCtrlViaPadDia->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2014  m_choiceViaPadDia->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2015  m_textCtrlClearanceDia->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2016  m_choiceClearanceDia->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2017  m_textCtrlImpedance->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2018  m_choiceImpedance->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2019  m_textCtrlAppliedCurrent->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2020  m_textCtrlPlatingResistivity->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2021  m_button_ResistivityVia->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaRho_Button ), NULL, this );
2022  m_textCtrlPlatingPermittivity->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2023  m_button_Permittivity->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaEpsilonR_Button ), NULL, this );
2024  m_textCtrlTemperatureDiff->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2025  m_textCtrlRiseTime->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2026  m_staticTextWarning->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PCB_CALCULATOR_FRAME_BASE::onUpdateViaCalcErrorText ), NULL, this );
2027  m_buttonViaReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaResetButtonClick ), NULL, this );
2028  m_TrackCurrentValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromCurrent ), NULL, this );
2029  m_TrackDeltaTValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2030  m_TrackLengthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2031  m_TW_CuLength_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2032  m_TWResistivity->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2033  m_ExtTrackWidthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromExtWidth ), NULL, this );
2034  m_TW_ExtTrackWidth_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2035  m_ExtTrackThicknessValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2036  m_ExtTrackThicknessUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2037  m_IntTrackWidthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromIntWidth ), NULL, this );
2038  m_TW_IntTrackWidth_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2039  m_IntTrackThicknessValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2040  m_IntTrackThicknessUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2041  m_buttonTrackWidthReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWResetButtonClick ), NULL, this );
2042  m_ElectricalSpacingUnitsSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingUnitsSelection ), NULL, this );
2043  m_buttonElectSpacingRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingRefresh ), NULL, this );
2044  m_BoardClassesUnitsSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnBoardClassesUnitsSelection ), NULL, this );
2045 }
virtual void OnRemoveRegulator(wxCommandEvent &event)
UNIT_SELECTOR_ANGLE * m_choiceUnit_ElecPrm3
virtual void OnAttenuatorSelection(wxCommandEvent &event)
virtual void OnRegulatorResetButtonClick(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_TW_ExtTrackWidth_choiceUnit
UNIT_SELECTOR_LEN * m_TW_IntTrackWidth_choiceUnit
virtual void OnViaCalculate(wxCommandEvent &event)
KIWAY_PLAYER(KIWAY *aKiway, wxWindow *aParent, FRAME_T aFrameType, const wxString &aTitle, const wxPoint &aPos, const wxSize &aSize, long aStyle, const wxString &aWdoName=wxFrameNameStr)
UNIT_SELECTOR_LEN * m_SubsPrm8_choiceUnit
virtual void OnViaResetButtonClick(wxCommandEvent &event)
virtual void OnViaRho_Button(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_SubsPrm5_choiceUnit
virtual void OnTWParametersChanged(wxCommandEvent &event)
UNIT_SELECTOR_FREQUENCY * m_choiceUnit_Frequency
virtual void OnTranslineTanD_Button(wxCommandEvent &event)
virtual void OnRegulatorCalcButtonClick(wxCommandEvent &event)
virtual void OnESeriesSelection(wxCommandEvent &event)
virtual void OnTranslineEpsilonR_Button(wxCommandEvent &event)
#define NULL
virtual void OnTWResetButtonClick(wxCommandEvent &event)
virtual void OnEditRegulator(wxCommandEvent &event)
virtual void OnElectricalSpacingUnitsSelection(wxCommandEvent &event)
virtual void OnCalculateAttenuator(wxCommandEvent &event)
virtual void OnRegulTypeSelection(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_choiceClearanceDia
UNIT_SELECTOR_LEN * m_choicePlatingThickness
virtual void OnAddRegulator(wxCommandEvent &event)
virtual void OnCalculateESeries(wxCommandEvent &event)
virtual void onUpdateViaCalcErrorText(wxUpdateUIEvent &event)
virtual void OnUpdateUI(wxUpdateUIEvent &event)
virtual void OnTransLineResetButtonClick(wxCommandEvent &event)
virtual void OnToleranceSelection(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_SubsPrm4_choiceUnit
UNIT_SELECTOR_RESISTOR * m_choiceUnit_ElecPrm2
UNIT_SELECTOR_RESISTOR * m_choiceUnit_ElecPrm1
UNIT_SELECTOR_THICKNESS * m_IntTrackThicknessUnit
UNIT_SELECTOR_LEN * m_SubsPrm7_choiceUnit
virtual void OnTWCalculateFromExtWidth(wxCommandEvent &event)
virtual void OnTranslineSelection(wxCommandEvent &event)
UNIT_SELECTOR_RESISTOR * m_choiceImpedance
const char * name
Definition: DXF_plotter.cpp:59
virtual void OnRegulatorSelection(wxCommandEvent &event)
virtual void OnTranslineSynthetize(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_SubsPrm9_choiceUnit
#define _(s)
Definition: 3d_actions.cpp:33
UNIT_SELECTOR_LEN * m_SubsPrm6_choiceUnit
virtual void OnClosePcbCalc(wxCloseEvent &event)
UNIT_SELECTOR_LEN * m_BoardClassesUnitsSelector
virtual void OnViaEpsilonR_Button(wxCommandEvent &event)
virtual void OnTWCalculateFromIntWidth(wxCommandEvent &event)
virtual void OnTranslineRho_Button(wxCommandEvent &event)
virtual void OnTranslineAnalyse(wxCommandEvent &event)
virtual void OnTWCalculateFromCurrent(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_ElectricalSpacingUnitsSelector
virtual void OnElectricalSpacingRefresh(wxCommandEvent &event)
virtual void OnDataFileSelection(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_TW_CuLength_choiceUnit
UNIT_SELECTOR_THICKNESS * m_ExtTrackThicknessUnit
virtual void OnBoardClassesUnitsSelection(wxCommandEvent &event)

References _, m_AnalyseButton, m_Att_R1_Value, m_Att_R2_Value, m_Att_R3_Value, m_attenuationLabel, m_attenuationZinLabel, m_Attenuator_Messages, m_attenuatorBitmap, m_attenuatorR1Label, m_attenuatorR2Label, m_attenuatorR3Label, m_AttenuatorsSelection, m_attR1Unit, m_attR2Unit, m_attR3Unit, m_attUnit, m_AttValueCtrl, m_attZinUnit, m_attZoutUnit, m_Band1bitmap, m_Band2bitmap, m_Band3bitmap, m_Band4bitmap, m_Band4Label, m_Band_mult_bitmap, m_Band_tol_bitmap, m_bitmapRegul3pins, m_bitmapRegul4pins, m_bmCMicrostripZoddZeven, m_BoardClassesUnitsSelector, m_bpButtonAnalyze, m_bpButtonCalcAtt, m_bpButtonSynthetize, m_button_EpsilonR, m_button_Permittivity, m_button_ResistivityVia, m_button_Rho, m_button_TanD, m_buttonAddItem, m_buttonAlcAtt, m_buttonCalculate, m_buttonDataFile, m_buttonEditItem, m_buttonElectSpacingRefresh, m_buttonEScalculate, m_buttonRegulReset, m_buttonRemoveItem, m_buttonTrackWidthReset, m_buttonTransLineReset, m_buttonViaReset, m_choiceClearanceDia, m_choiceHoleDia, m_choiceImpedance, m_choicePlatingThickness, m_choiceRegType, m_choiceRegulatorSelector, m_choiceUnit_ElecPrm1, m_choiceUnit_ElecPrm2, m_choiceUnit_ElecPrm3, m_choiceUnit_Frequency, m_choiceUnit_Param1, m_choiceUnit_Param2, m_choiceUnit_Param3, m_choiceViaLength, m_choiceViaPadDia, m_e1, m_e12, m_e3, m_e6, m_elec_prm1_label, m_Elec_prm1_Value, m_elec_prm2_label, m_Elec_prm2_Value, m_elec_prm3_label, m_Elec_prm3_Value, m_electricalSpacingSizer, m_ElectricalSpacingUnitsSelector, m_ElectricalSpacingVoltage, m_EpsilonR_label, m_ESerie3RSolution1, m_ESeries4RSolution, m_ESeries_Sol2R, m_ESeries_Sol3R, m_ESeries_Sol4R, m_ESeriesAltErr, m_ESeriesAltErr1, m_ESeriesAltPercent, m_ESeriesAltPercent1, m_ESeriesError2R, m_ESeriesError3R, m_ESeriesError4R, m_ESerieSimpleSolution, m_ESeriesSimpleErr, m_ESeriesSimplePercent, m_ESrequired, m_ESrequired1, m_ESrequired11, m_exclude1Units, m_exclude2Units, m_extTrackAreaUnitLabel, m_ExtTrackAreaValue, m_ExtTrackLossValue, m_ExtTrackResistValue, m_extTrackResUnits, m_ExtTrackThicknessUnit, m_ExtTrackThicknessValue, m_ExtTrackVDropValue, m_ExtTrackWidthValue, m_fgSizerZcomment, m_Frequency_label, m_gridClassesValuesDisplay, m_gridElectricalSpacingValues, m_htmlWinFormulas, m_IadjUnitLabel, m_Inductance, m_intTrackAreaUnitLabel, m_IntTrackAreaValue, m_IntTrackLossValue, m_IntTrackResistValue, m_intTrackResUnits, m_IntTrackThicknessUnit, m_IntTrackThicknessValue, m_IntTrackVDropValue, m_IntTrackWidthValue, m_labelRegultR1, m_labelRegultR2, m_labelVout, m_labelVRef, m_left_message1, m_left_message2, m_left_message3, m_left_message4, m_left_message5, m_left_message6, m_left_message7, m_menubar, m_Message1, m_Message2, m_Message3, m_Message4, m_Message5, m_Message6, m_Message7, m_Notebook, m_panelAttenuators, m_panelAttFormula, m_panelBoardClass, m_panelColorCode, m_panelElectricalSpacing, m_panelESeries, m_panelESeriesHelp, m_panelRegulators, m_panelShowClassPrms, m_panelTrackWidth, m_panelTransline, m_panelViaSize, m_phys_prm1_label, m_Phys_prm1_Value, m_phys_prm2_label, m_Phys_prm2_Value, m_phys_prm3_label, m_Phys_prm3_Value, m_r1Units, m_r2Units, m_radioBtnPrm1, m_radioBtnPrm2, m_rbRegulR1, m_rbRegulR2, m_rbRegulVout, m_rbToleranceSelection, m_Reactance, m_regulators_fileNameCtrl, m_RegulFormula, m_RegulIadjTitle, m_RegulIadjValue, m_RegulMessage, m_RegulR1Value, m_RegulR2Value, m_RegulVoutValue, m_RegulVrefValue, m_reqResUnits, m_ResExclude1, m_ResExclude2, m_resistivityUnits, m_ResRequired, m_Rho_label, m_RiseTimeOutput, m_staticAppliedCurrent, m_staticline10, m_staticline2, m_staticline3, m_staticline4, m_staticline5, m_staticline6, m_staticline7, m_staticline8, m_staticline9, m_staticText103, m_staticText31, m_staticText34, m_staticText35, m_staticText37, m_staticText38, m_staticText62, m_staticText63, m_staticText65, m_staticText651, m_staticText6511, m_staticText65111, m_staticText652, m_staticText66, m_staticText661, m_staticText6611, m_staticText66111, m_staticText79, m_staticText791, m_staticText7911, m_staticText792, m_staticText79211, m_staticText83, m_staticText831, m_staticText8311, m_staticText8411, m_staticText88, m_staticText891, m_staticTextAmpacity, m_staticTextAmpacityUnits, m_staticTextAppliedCurrentUnits, m_staticTextArea, m_staticTextArea1, m_staticTextArea11, m_staticTextAttMsg, m_staticTextBrdClass, m_staticTextCapacitance, m_staticTextCapacitanceUnits, m_staticTextClearanceDia, m_staticTextCurrent, m_staticTextElectricalSpacing, m_staticTextExtWidth, m_staticTextHoleDia, m_staticTextImpedance, m_staticTextInductance, m_staticTextInductanceUnits, m_staticTextIntWidth, m_staticTextPermittivity, m_staticTextPlatingThickness, m_staticTextReactance, m_staticTextRegFile, m_staticTextRegType, m_staticTextResistivity, m_staticTextRiseTime, m_staticTextRiseTimeOutput, m_staticTextRiseTimeOutputUnits, m_staticTextRiseTimeUnits, m_staticTextTemperatureDiff, m_staticTextViaLength, m_staticTextViaPadDia, m_staticTextWarning, m_staticTextZcommon, m_staticTextZdiff, m_SubsPrm4_choiceUnit, m_SubsPrm5_choiceUnit, m_SubsPrm6_choiceUnit, m_SubsPrm7_choiceUnit, m_SubsPrm8_choiceUnit, m_SubsPrm9_choiceUnit, m_substrate_prm4_label, m_Substrate_prm4_Value, m_substrate_prm5_label, m_Substrate_prm5_Value, m_substrate_prm6_label, m_Substrate_prm6_Value, m_substrate_prm7_label, m_Substrate_prm7_Value, m_substrate_prm8_label, m_Substrate_prm8_Value, m_substrate_prm9_label, m_Substrate_prm9_Value, m_SynthetizeButton, m_TanD_label, m_textCtrlAppliedCurrent, m_textCtrlClearanceDia, m_textCtrlHoleDia, m_textCtrlImpedance, m_textCtrlPlatingPermittivity, m_textCtrlPlatingResistivity, m_textCtrlPlatingThickness, m_textCtrlRiseTime, m_textCtrlTemperatureDiff, m_textCtrlViaLength, m_textCtrlViaPadDia, m_TrackCurrentValue, m_TrackDeltaTValue, m_TrackLengthValue, m_trackTempUnits, m_translineBitmap, m_TranslineSelection, m_TW_CuLength_choiceUnit, m_TW_ExtTrackWidth_choiceUnit, m_TW_IntTrackWidth_choiceUnit, m_TWResistivity, m_unitsVout, m_unitsVref, m_Value_EpsilonR, m_Value_Frequency_Ctrl, m_Value_Rho, m_Value_TanD, m_ViaAmpacity, m_viaBitmap, m_ViaCapacitance, m_ViaPowerLoss, m_viaReactanceUnits, m_ViaResistance, m_viaResistivityUnits, m_viaResUnits, m_viaTempUnits, m_ViaThermalResistance, m_viaThermalResUnits, m_ViaVoltageDrop, m_ZinValueCtrl, m_ZoutLabel, m_ZoutValueCtrl, NULL, OnAddRegulator(), OnAttenuatorSelection(), OnBoardClassesUnitsSelection(), OnCalculateAttenuator(), OnCalculateESeries(), OnClosePcbCalc(), OnDataFileSelection(), OnEditRegulator(), OnElectricalSpacingRefresh(), OnElectricalSpacingUnitsSelection(), OnESeriesSelection(), OnRegulatorCalcButtonClick(), OnRegulatorResetButtonClick(), OnRegulatorSelection(), OnRegulTypeSelection(), OnRemoveRegulator(), OnToleranceSelection(), OnTranslineAnalyse(), OnTranslineEpsilonR_Button(), OnTransLineResetButtonClick(), OnTranslineRho_Button(), OnTranslineSelection(), OnTranslineSynthetize(), OnTranslineTanD_Button(), OnTWCalculateFromCurrent(), OnTWCalculateFromExtWidth(), OnTWCalculateFromIntWidth(), OnTWParametersChanged(), OnTWResetButtonClick(), OnUpdateUI(), onUpdateViaCalcErrorText(), OnViaCalculate(), OnViaEpsilonR_Button(), OnViaResetButtonClick(), and OnViaRho_Button().

◆ ~PCB_CALCULATOR_FRAME_BASE()

PCB_CALCULATOR_FRAME_BASE::~PCB_CALCULATOR_FRAME_BASE ( )

Definition at line 2047 of file pcb_calculator_frame_base.cpp.

2048 {
2049  // Disconnect Events
2050  this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( PCB_CALCULATOR_FRAME_BASE::OnClosePcbCalc ) );
2051  this->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PCB_CALCULATOR_FRAME_BASE::OnUpdateUI ) );
2052  m_choiceRegType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulTypeSelection ), NULL, this );
2053  m_buttonCalculate->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorCalcButtonClick ), NULL, this );
2054  m_buttonRegulReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorResetButtonClick ), NULL, this );
2055  m_choiceRegulatorSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRegulatorSelection ), NULL, this );
2056  m_buttonDataFile->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnDataFileSelection ), NULL, this );
2057  m_buttonEditItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnEditRegulator ), NULL, this );
2058  m_buttonAddItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAddRegulator ), NULL, this );
2059  m_buttonRemoveItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRemoveRegulator ), NULL, this );
2060  m_AttenuatorsSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAttenuatorSelection ), NULL, this );
2061  m_buttonAlcAtt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this );
2062  m_bpButtonCalcAtt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this );
2063  m_e1->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
2064  m_e3->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
2065  m_e6->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
2066  m_e12->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESeriesSelection ), NULL, this );
2067  m_buttonEScalculate->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateESeries ), NULL, this );
2068  m_rbToleranceSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnToleranceSelection ), NULL, this );
2069  m_TranslineSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSelection ), NULL, this );
2070  m_button_EpsilonR->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineEpsilonR_Button ), NULL, this );
2071  m_button_TanD->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineTanD_Button ), NULL, this );
2072  m_button_Rho->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineRho_Button ), NULL, this );
2073  m_bpButtonAnalyze->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this );
2074  m_AnalyseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this );
2075  m_SynthetizeButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this );
2076  m_bpButtonSynthetize->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this );
2077  m_buttonTransLineReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTransLineResetButtonClick ), NULL, this );
2078  m_textCtrlHoleDia->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2079  m_choiceHoleDia->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2080  m_textCtrlPlatingThickness->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2081  m_choicePlatingThickness->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2082  m_textCtrlViaLength->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2083  m_choiceViaLength->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2084  m_textCtrlViaPadDia->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2085  m_choiceViaPadDia->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2086  m_textCtrlClearanceDia->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2087  m_choiceClearanceDia->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2088  m_textCtrlImpedance->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2089  m_choiceImpedance->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2090  m_textCtrlAppliedCurrent->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2091  m_textCtrlPlatingResistivity->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2092  m_button_ResistivityVia->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaRho_Button ), NULL, this );
2093  m_textCtrlPlatingPermittivity->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2094  m_button_Permittivity->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaEpsilonR_Button ), NULL, this );
2095  m_textCtrlTemperatureDiff->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2096  m_textCtrlRiseTime->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this );
2097  m_staticTextWarning->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PCB_CALCULATOR_FRAME_BASE::onUpdateViaCalcErrorText ), NULL, this );
2098  m_buttonViaReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaResetButtonClick ), NULL, this );
2099  m_TrackCurrentValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromCurrent ), NULL, this );
2100  m_TrackDeltaTValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2101  m_TrackLengthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2102  m_TW_CuLength_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2103  m_TWResistivity->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2104  m_ExtTrackWidthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromExtWidth ), NULL, this );
2105  m_TW_ExtTrackWidth_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2106  m_ExtTrackThicknessValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2107  m_ExtTrackThicknessUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2108  m_IntTrackWidthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromIntWidth ), NULL, this );
2109  m_TW_IntTrackWidth_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2110  m_IntTrackThicknessValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2111  m_IntTrackThicknessUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this );
2112  m_buttonTrackWidthReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWResetButtonClick ), NULL, this );
2113  m_ElectricalSpacingUnitsSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingUnitsSelection ), NULL, this );
2114  m_buttonElectSpacingRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingRefresh ), NULL, this );
2115  m_BoardClassesUnitsSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnBoardClassesUnitsSelection ), NULL, this );
2116 
2117 }
virtual void OnRemoveRegulator(wxCommandEvent &event)
virtual void OnAttenuatorSelection(wxCommandEvent &event)
virtual void OnRegulatorResetButtonClick(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_TW_ExtTrackWidth_choiceUnit
UNIT_SELECTOR_LEN * m_TW_IntTrackWidth_choiceUnit
virtual void OnViaCalculate(wxCommandEvent &event)
virtual void OnViaResetButtonClick(wxCommandEvent &event)
virtual void OnViaRho_Button(wxCommandEvent &event)
virtual void OnTWParametersChanged(wxCommandEvent &event)
virtual void OnTranslineTanD_Button(wxCommandEvent &event)
virtual void OnRegulatorCalcButtonClick(wxCommandEvent &event)
virtual void OnESeriesSelection(wxCommandEvent &event)
virtual void OnTranslineEpsilonR_Button(wxCommandEvent &event)
#define NULL
virtual void OnTWResetButtonClick(wxCommandEvent &event)
virtual void OnEditRegulator(wxCommandEvent &event)
virtual void OnElectricalSpacingUnitsSelection(wxCommandEvent &event)
virtual void OnCalculateAttenuator(wxCommandEvent &event)
virtual void OnRegulTypeSelection(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_choiceClearanceDia
UNIT_SELECTOR_LEN * m_choicePlatingThickness
virtual void OnAddRegulator(wxCommandEvent &event)
virtual void OnCalculateESeries(wxCommandEvent &event)
virtual void onUpdateViaCalcErrorText(wxUpdateUIEvent &event)
virtual void OnUpdateUI(wxUpdateUIEvent &event)
virtual void OnTransLineResetButtonClick(wxCommandEvent &event)
virtual void OnToleranceSelection(wxCommandEvent &event)
UNIT_SELECTOR_THICKNESS * m_IntTrackThicknessUnit
virtual void OnTWCalculateFromExtWidth(wxCommandEvent &event)
virtual void OnTranslineSelection(wxCommandEvent &event)
UNIT_SELECTOR_RESISTOR * m_choiceImpedance
virtual void OnRegulatorSelection(wxCommandEvent &event)
virtual void OnTranslineSynthetize(wxCommandEvent &event)
virtual void OnClosePcbCalc(wxCloseEvent &event)
UNIT_SELECTOR_LEN * m_BoardClassesUnitsSelector
virtual void OnViaEpsilonR_Button(wxCommandEvent &event)
virtual void OnTWCalculateFromIntWidth(wxCommandEvent &event)
virtual void OnTranslineRho_Button(wxCommandEvent &event)
virtual void OnTranslineAnalyse(wxCommandEvent &event)
virtual void OnTWCalculateFromCurrent(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_ElectricalSpacingUnitsSelector
virtual void OnElectricalSpacingRefresh(wxCommandEvent &event)
virtual void OnDataFileSelection(wxCommandEvent &event)
UNIT_SELECTOR_LEN * m_TW_CuLength_choiceUnit
UNIT_SELECTOR_THICKNESS * m_ExtTrackThicknessUnit
virtual void OnBoardClassesUnitsSelection(wxCommandEvent &event)

References m_AnalyseButton, m_AttenuatorsSelection, m_BoardClassesUnitsSelector, m_bpButtonAnalyze, m_bpButtonCalcAtt, m_bpButtonSynthetize, m_button_EpsilonR, m_button_Permittivity, m_button_ResistivityVia, m_button_Rho, m_button_TanD, m_buttonAddItem, m_buttonAlcAtt, m_buttonCalculate, m_buttonDataFile, m_buttonEditItem, m_buttonElectSpacingRefresh, m_buttonEScalculate, m_buttonRegulReset, m_buttonRemoveItem, m_buttonTrackWidthReset, m_buttonTransLineReset, m_buttonViaReset, m_choiceClearanceDia, m_choiceHoleDia, m_choiceImpedance, m_choicePlatingThickness, m_choiceRegType, m_choiceRegulatorSelector, m_choiceViaLength, m_choiceViaPadDia, m_e1, m_e12, m_e3, m_e6, m_ElectricalSpacingUnitsSelector, m_ExtTrackThicknessUnit, m_ExtTrackThicknessValue, m_ExtTrackWidthValue, m_IntTrackThicknessUnit, m_IntTrackThicknessValue, m_IntTrackWidthValue, m_rbToleranceSelection, m_staticTextWarning, m_SynthetizeButton, m_textCtrlAppliedCurrent, m_textCtrlClearanceDia, m_textCtrlHoleDia, m_textCtrlImpedance, m_textCtrlPlatingPermittivity, m_textCtrlPlatingResistivity, m_textCtrlPlatingThickness, m_textCtrlRiseTime, m_textCtrlTemperatureDiff, m_textCtrlViaLength, m_textCtrlViaPadDia, m_TrackCurrentValue, m_TrackDeltaTValue, m_TrackLengthValue, m_TranslineSelection, m_TW_CuLength_choiceUnit, m_TW_ExtTrackWidth_choiceUnit, m_TW_IntTrackWidth_choiceUnit, m_TWResistivity, NULL, OnAddRegulator(), OnAttenuatorSelection(), OnBoardClassesUnitsSelection(), OnCalculateAttenuator(), OnCalculateESeries(), OnClosePcbCalc(), OnDataFileSelection(), OnEditRegulator(), OnElectricalSpacingRefresh(), OnElectricalSpacingUnitsSelection(), OnESeriesSelection(), OnRegulatorCalcButtonClick(), OnRegulatorResetButtonClick(), OnRegulatorSelection(), OnRegulTypeSelection(), OnRemoveRegulator(), OnToleranceSelection(), OnTranslineAnalyse(), OnTranslineEpsilonR_Button(), OnTransLineResetButtonClick(), OnTranslineRho_Button(), OnTranslineSelection(), OnTranslineSynthetize(), OnTranslineTanD_Button(), OnTWCalculateFromCurrent(), OnTWCalculateFromExtWidth(), OnTWCalculateFromIntWidth(), OnTWParametersChanged(), OnTWResetButtonClick(), OnUpdateUI(), onUpdateViaCalcErrorText(), OnViaCalculate(), OnViaEpsilonR_Button(), OnViaResetButtonClick(), and OnViaRho_Button().

Member Function Documentation

◆ AddStandardHelpMenu()

void EDA_BASE_FRAME::AddStandardHelpMenu ( wxMenuBar *  aMenuBar)
inherited

Adds the standard KiCad help menu to the menubar.

Definition at line 417 of file eda_base_frame.cpp.

418 {
419  COMMON_CONTROL* commonControl = m_toolManager->GetTool<COMMON_CONTROL>();
420  ACTION_MENU* helpMenu = new ACTION_MENU( false, commonControl );
421 
422  helpMenu->Add( ACTIONS::help );
423  helpMenu->Add( ACTIONS::gettingStarted );
424  helpMenu->Add( ACTIONS::listHotKeys );
425  helpMenu->Add( ACTIONS::getInvolved );
426  helpMenu->Add( ACTIONS::donate );
427  helpMenu->Add( ACTIONS::reportBug );
428 
429  helpMenu->AppendSeparator();
430  helpMenu->Add( _( "&About KiCad" ), "", wxID_ABOUT, BITMAPS::about );
431 
432  aMenuBar->Append( helpMenu, _( "&Help" ) );
433 }
static TOOL_ACTION listHotKeys
Definition: actions.h:180
Defines the structure of a menu based on ACTIONs.
Definition: action_menu.h:47
static TOOL_ACTION reportBug
Cursor control event types.
Definition: actions.h:183
static TOOL_ACTION donate
Definition: actions.h:181
Handle actions that are shared between different applications.
TOOL_MANAGER * m_toolManager
Definition: tools_holder.h:157
#define _(s)
Definition: 3d_actions.cpp:33
static TOOL_ACTION help
Definition: actions.h:179
static TOOL_ACTION getInvolved
Definition: actions.h:182
static TOOL_ACTION gettingStarted
Definition: actions.h:178

References _, about, ACTIONS::donate, ACTIONS::getInvolved, ACTIONS::gettingStarted, TOOL_MANAGER::GetTool(), ACTIONS::help, ACTIONS::listHotKeys, TOOLS_HOLDER::m_toolManager, and ACTIONS::reportBug.

Referenced by EDA_3D_VIEWER::CreateMenuBar(), KICAD_MANAGER_FRAME::ReCreateMenuBar(), GERBVIEW_FRAME::ReCreateMenuBar(), SYMBOL_VIEWER_FRAME::ReCreateMenuBar(), SYMBOL_EDIT_FRAME::ReCreateMenuBar(), FOOTPRINT_EDIT_FRAME::ReCreateMenuBar(), FOOTPRINT_VIEWER_FRAME::ReCreateMenuBar(), SCH_EDIT_FRAME::ReCreateMenuBar(), PL_EDITOR_FRAME::ReCreateMenuBar(), CVPCB_MAINFRAME::ReCreateMenuBar(), and PCB_EDIT_FRAME::ReCreateMenuBar().

◆ canCloseWindow()

virtual bool EDA_BASE_FRAME::canCloseWindow ( wxCloseEvent &  aCloseEvent)
inlineprotectedvirtualinherited

◆ ChangeUserUnits()

void EDA_BASE_FRAME::ChangeUserUnits ( EDA_UNITS  aUnits)
inherited

Definition at line 1084 of file eda_base_frame.cpp.

1085 {
1086  SetUserUnits( aUnits );
1088 
1089  wxCommandEvent e( UNITS_CHANGED );
1090  ProcessEventLocally( e );
1091 }
virtual void unitsChangeRefresh()
Called when when the units setting has changed to allow for any derived classes to handle refreshing ...
void SetUserUnits(EDA_UNITS aUnits)

References EDA_BASE_FRAME::SetUserUnits(), and EDA_BASE_FRAME::unitsChangeRefresh().

Referenced by COMMON_TOOLS::SwitchUnits(), and COMMON_TOOLS::ToggleUnits().

◆ CheckForAutoSaveFile()

void EDA_BASE_FRAME::CheckForAutoSaveFile ( const wxFileName &  aFileName)
inherited

Check if an auto save file exists for aFileName and takes the appropriate action depending on the user input.

If an auto save file exists for aFileName, the user is prompted if they wish to replace file aFileName with the auto saved file. If the user chooses to replace the file, the backup file of aFileName is removed, aFileName is renamed to the backup file name, and the auto save file is renamed to aFileName. If user chooses to keep the existing version of aFileName, the auto save file is removed.

Parameters
aFileNameA wxFileName object containing the file name to check.

Definition at line 972 of file eda_base_frame.cpp.

973 {
974  wxCHECK_RET( aFileName.IsOk(), wxT( "Invalid file name!" ) );
975 
976  wxFileName autoSaveFileName = aFileName;
977 
978  // Check for auto save file.
979  autoSaveFileName.SetName( GetAutoSaveFilePrefix() + aFileName.GetName() );
980 
981  wxLogTrace( traceAutoSave,
982  wxT( "Checking for auto save file " ) + autoSaveFileName.GetFullPath() );
983 
984  if( !autoSaveFileName.FileExists() )
985  return;
986 
987  wxString msg = wxString::Format( _(
988  "Well this is potentially embarrassing!\n"
989  "It appears that the last time you were editing the file\n"
990  "\"%s\"\n"
991  "it was not saved properly. Do you wish to restore the last saved edits you made?" ),
992  aFileName.GetFullName()
993  );
994