From 1b56e2e95d7007191d68593c2e16771081b788b3 Mon Sep 17 00:00:00 2001 From: Janvi Date: Tue, 15 Sep 2020 14:03:07 +0000 Subject: [PATCH] ADDED: E-Series Resistor Calculator Fixes https://gitlab.com/kicad/code/kicad/issues/2155 --- pcb_calculator/CMakeLists.txt | 5 +- .../dialogs/pcb_calculator_frame_base.cpp | 1745 +- .../dialogs/pcb_calculator_frame_base.fbp | 18993 +++++++++------- .../dialogs/pcb_calculator_frame_base.h | 405 +- pcb_calculator/eserie.cpp | 409 + pcb_calculator/eserie.h | 241 + pcb_calculator/eserie_help.h | 33 + pcb_calculator/eserie_help.md | 31 + pcb_calculator/pcb_calculator.h | 21 +- pcb_calculator/pcb_calculator_frame.cpp | 5 +- 10 files changed, 12402 insertions(+), 9486 deletions(-) create mode 100644 pcb_calculator/eserie.cpp create mode 100644 pcb_calculator/eserie.h create mode 100644 pcb_calculator/eserie_help.h create mode 100644 pcb_calculator/eserie_help.md diff --git a/pcb_calculator/CMakeLists.txt b/pcb_calculator/CMakeLists.txt index ecf308338a..dfe08f41eb 100644 --- a/pcb_calculator/CMakeLists.txt +++ b/pcb_calculator/CMakeLists.txt @@ -1,4 +1,3 @@ - include_directories( BEFORE ${INC_BEFORE} ) include_directories( bitmaps @@ -10,6 +9,7 @@ include_directories( ) set( PCB_CALCULATOR_SRCS + eserie.cpp attenuators.cpp board_classes_values.cpp colorcode.cpp @@ -162,7 +162,6 @@ make_lexer( function( html_doc2h inputFile ) add_custom_command( OUTPUT ${inputFile}.h - COMMAND ${CMAKE_COMMAND} -DinputFile=${inputFile}.html -DoutputFile=${inputFile}.h -P ${CMAKE_MODULE_PATH}/Html2C.cmake DEPENDS ${inputFile}.html ${CMAKE_MODULE_PATH}/Html2C.cmake @@ -189,6 +188,7 @@ endfunction() md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/attenuators/pi_formula ) md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/attenuators/tee_formula ) md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/tracks_width_versus_current_formula ) + md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/eserie_help ) set( DOCS_LIST ${CMAKE_CURRENT_SOURCE_DIR}/attenuators/pi_formula.h @@ -196,6 +196,7 @@ set( DOCS_LIST ${CMAKE_CURRENT_SOURCE_DIR}/attenuators/bridget_tee_formula.h ${CMAKE_CURRENT_SOURCE_DIR}/attenuators/splitter_formula.h ${CMAKE_CURRENT_SOURCE_DIR}/tracks_width_versus_current_formula.h + ${CMAKE_CURRENT_SOURCE_DIR}/eserie_help.h ) set_source_files_properties( attenuators/attenuator_classes.cpp diff --git a/pcb_calculator/dialogs/pcb_calculator_frame_base.cpp b/pcb_calculator/dialogs/pcb_calculator_frame_base.cpp index 7c1ab16b0e..1aea749631 100644 --- a/pcb_calculator/dialogs/pcb_calculator_frame_base.cpp +++ b/pcb_calculator/dialogs/pcb_calculator_frame_base.cpp @@ -259,707 +259,419 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow m_panelRegulators->Layout(); bSizerMainReg->Fit( m_panelRegulators ); m_Notebook->AddPage( m_panelRegulators, _("Regulators"), false ); - m_panelTrackWidth = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizerTrackWidth; - bSizerTrackWidth = new wxBoxSizer( wxHORIZONTAL ); + m_panelAttenuators = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizerAtt; + bSizerAtt = new wxBoxSizer( wxHORIZONTAL ); - wxBoxSizer* bSizeLeft; - bSizeLeft = new wxBoxSizer( wxVERTICAL ); + wxBoxSizer* bLeftSizerAtt; + bLeftSizerAtt = new wxBoxSizer( wxVERTICAL ); - wxStaticBoxSizer* sbSizerTW_Prms; - sbSizerTW_Prms = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("Parameters:") ), wxVERTICAL ); + wxString m_AttenuatorsSelectionChoices[] = { _("PI"), _("Tee"), _("Bridged Tee"), _("Resistive Splitter") }; + int m_AttenuatorsSelectionNChoices = sizeof( m_AttenuatorsSelectionChoices ) / sizeof( wxString ); + m_AttenuatorsSelection = new wxRadioBox( m_panelAttenuators, wxID_ANY, _("Attenuators:"), wxDefaultPosition, wxDefaultSize, m_AttenuatorsSelectionNChoices, m_AttenuatorsSelectionChoices, 1, wxRA_SPECIFY_COLS ); + m_AttenuatorsSelection->SetSelection( 0 ); + bLeftSizerAtt->Add( m_AttenuatorsSelection, 0, wxEXPAND|wxALL, 5 ); - wxFlexGridSizer* fgSizerTWprms; - fgSizerTWprms = new wxFlexGridSizer( 4, 3, 0, 0 ); - fgSizerTWprms->AddGrowableCol( 1 ); - fgSizerTWprms->SetFlexibleDirection( wxBOTH ); - fgSizerTWprms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + m_panelDisplayAttenuator = new wxPanel( m_panelAttenuators, wxID_ANY, wxDefaultPosition, wxSize( 256,256 ), wxTAB_TRAVERSAL|wxBORDER_SIMPLE ); + bLeftSizerAtt->Add( m_panelDisplayAttenuator, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); - m_staticTextCurrent = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Current:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCurrent->Wrap( -1 ); - m_staticTextCurrent->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); - fgSizerTWprms->Add( m_staticTextCurrent, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxALIGN_RIGHT, 5 ); + bSizerAtt->Add( bLeftSizerAtt, 0, wxEXPAND, 5 ); - m_TrackCurrentValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTWprms->Add( m_TrackCurrentValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + wxBoxSizer* bMiddleSizerAtt; + bMiddleSizerAtt = new wxBoxSizer( wxVERTICAL ); - m_staticText62 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText62->Wrap( -1 ); - fgSizerTWprms->Add( m_staticText62, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + wxStaticBoxSizer* sbSizerAttPrms; + sbSizerAttPrms = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Parameters:") ), wxVERTICAL ); - m_staticText63 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Temperature rise:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText63->Wrap( -1 ); - fgSizerTWprms->Add( m_staticText63, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + wxFlexGridSizer* fgSizerAttPrms; + fgSizerAttPrms = new wxFlexGridSizer( 3, 3, 0, 0 ); + fgSizerAttPrms->AddGrowableRow( 1 ); + fgSizerAttPrms->SetFlexibleDirection( wxBOTH ); + fgSizerAttPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_TrackDeltaTValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTWprms->Add( m_TrackDeltaTValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + m_attenuationLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Attenuation"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attenuationLabel->Wrap( -1 ); + fgSizerAttPrms->Add( m_attenuationLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticText64 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("deg C"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText64->Wrap( -1 ); - fgSizerTWprms->Add( m_staticText64, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + m_AttValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttPrms->Add( m_AttValueCtrl, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - m_staticText66 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Conductor length:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText66->Wrap( -1 ); - fgSizerTWprms->Add( m_staticText66, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 ); + m_attUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("dB"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attUnit->Wrap( -1 ); + fgSizerAttPrms->Add( m_attUnit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_TrackLengthValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTWprms->Add( m_TrackLengthValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + m_attenuationZinLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Zin"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attenuationZinLabel->Wrap( -1 ); + fgSizerAttPrms->Add( m_attenuationZinLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - wxArrayString m_TW_CuLength_choiceUnitChoices; - m_TW_CuLength_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_CuLength_choiceUnitChoices, 0 ); - m_TW_CuLength_choiceUnit->SetSelection( 0 ); - fgSizerTWprms->Add( m_TW_CuLength_choiceUnit, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + m_ZinValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttPrms->Add( m_ZinValueCtrl, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - m_staticText103 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Resistivity:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText103->Wrap( -1 ); - fgSizerTWprms->Add( m_staticText103, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_attZinUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attZinUnit->Wrap( -1 ); + fgSizerAttPrms->Add( m_attZinUnit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_TWResistivity = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTWprms->Add( m_TWResistivity, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + m_ZoutLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Zout"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ZoutLabel->Wrap( -1 ); + fgSizerAttPrms->Add( m_ZoutLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticText104 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Ohm-meter"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText104->Wrap( -1 ); - fgSizerTWprms->Add( m_staticText104, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_ZoutValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttPrms->Add( m_ZoutValueCtrl, 0, wxALL, 5 ); + m_attZoutUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attZoutUnit->Wrap( -1 ); + fgSizerAttPrms->Add( m_attZoutUnit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - sbSizerTW_Prms->Add( fgSizerTWprms, 0, wxEXPAND, 5 ); + sbSizerAttPrms->Add( fgSizerAttPrms, 0, wxEXPAND, 5 ); - bSizeLeft->Add( sbSizerTW_Prms, 0, wxALL|wxEXPAND, 5 ); - m_htmlWinFormulas = new wxHtmlWindow( m_panelTrackWidth, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO|wxBORDER_SIMPLE ); - bSizeLeft->Add( m_htmlWinFormulas, 1, wxTOP|wxEXPAND, 5 ); + bMiddleSizerAtt->Add( sbSizerAttPrms, 0, wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + wxBoxSizer* bSizerAttButt; + bSizerAttButt = new wxBoxSizer( wxHORIZONTAL ); - bSizerTrackWidth->Add( bSizeLeft, 1, wxEXPAND, 5 ); + m_buttonAlcAtt = new wxButton( m_panelAttenuators, wxID_ANY, _("Calculate"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerAttButt->Add( m_buttonAlcAtt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxBoxSizer* bSizeRight; - bSizeRight = new wxBoxSizer( wxVERTICAL ); + m_bpButtonCalcAtt = new wxBitmapButton( m_panelAttenuators, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); - wxStaticBoxSizer* sbSizerTW_Result; - sbSizerTW_Result = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("External layer traces:") ), wxVERTICAL ); + m_bpButtonCalcAtt->SetBitmap( wxBitmap( arrow_bottom_xpm ) ); + bSizerAttButt->Add( m_bpButtonCalcAtt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxFlexGridSizer* fgSizerTW_Results; - fgSizerTW_Results = new wxFlexGridSizer( 0, 3, 0, 0 ); - fgSizerTW_Results->AddGrowableCol( 1 ); - fgSizerTW_Results->SetFlexibleDirection( wxBOTH ); - fgSizerTW_Results->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_staticTextExtWidth = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Trace width:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextExtWidth->Wrap( -1 ); - m_staticTextExtWidth->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + bMiddleSizerAtt->Add( bSizerAttButt, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); - fgSizerTW_Results->Add( m_staticTextExtWidth, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + wxStaticBoxSizer* sbSizerAttValues; + sbSizerAttValues = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Values") ), wxVERTICAL ); - m_ExtTrackWidthValue = new wxTextCtrl( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTW_Results->Add( m_ExtTrackWidthValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + wxFlexGridSizer* fgSizerAttResults; + fgSizerAttResults = new wxFlexGridSizer( 3, 3, 0, 0 ); + fgSizerAttResults->AddGrowableRow( 1 ); + fgSizerAttResults->SetFlexibleDirection( wxBOTH ); + fgSizerAttResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - wxArrayString m_TW_ExtTrackWidth_choiceUnitChoices; - m_TW_ExtTrackWidth_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_ExtTrackWidth_choiceUnitChoices, 0 ); - m_TW_ExtTrackWidth_choiceUnit->SetSelection( 0 ); - fgSizerTW_Results->Add( m_TW_ExtTrackWidth_choiceUnit, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_attenuatorR1Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R1"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attenuatorR1Label->Wrap( -1 ); + fgSizerAttResults->Add( m_attenuatorR1Label, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticText65 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Trace thickness:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText65->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticText65, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 ); + m_Att_R1_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttResults->Add( m_Att_R1_Value, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - m_ExtTrackThicknessValue = new wxTextCtrl( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTW_Results->Add( m_ExtTrackThicknessValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + m_attR1Unit = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attR1Unit->Wrap( -1 ); + fgSizerAttResults->Add( m_attR1Unit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - wxArrayString m_ExtTrackThicknessUnitChoices; - m_ExtTrackThicknessUnit = new UNIT_SELECTOR_THICKNESS( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ExtTrackThicknessUnitChoices, 0 ); - m_ExtTrackThicknessUnit->SetSelection( 0 ); - fgSizerTW_Results->Add( m_ExtTrackThicknessUnit, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + m_attenuatorR2Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R2"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attenuatorR2Label->Wrap( -1 ); + fgSizerAttResults->Add( m_attenuatorR2Label, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticline3 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - fgSizerTW_Results->Add( m_staticline3, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + m_Att_R2_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttResults->Add( m_Att_R2_Value, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - m_staticline4 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - fgSizerTW_Results->Add( m_staticline4, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + m_attR2Unit1 = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attR2Unit1->Wrap( -1 ); + fgSizerAttResults->Add( m_attR2Unit1, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticline5 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - fgSizerTW_Results->Add( m_staticline5, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + m_attenuatorR3Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R3"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attenuatorR3Label->Wrap( -1 ); + fgSizerAttResults->Add( m_attenuatorR3Label, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticTextArea = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Cross-section area:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextArea->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticTextArea, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_Att_R3_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttResults->Add( m_Att_R3_Value, 0, wxALL, 5 ); - m_ExtTrackAreaValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ExtTrackAreaValue->Wrap( -1 ); - fgSizerTW_Results->Add( m_ExtTrackAreaValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + m_attR3Unit = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); + m_attR3Unit->Wrap( -1 ); + fgSizerAttResults->Add( m_attR3Unit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_ExtTrackAreaUnitLabel = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("mm ^ 2"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ExtTrackAreaUnitLabel->Wrap( -1 ); - fgSizerTW_Results->Add( m_ExtTrackAreaUnitLabel, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - m_staticText651 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText651->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticText651, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + sbSizerAttValues->Add( fgSizerAttResults, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); - m_ExtTrackResistValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ExtTrackResistValue->Wrap( -1 ); - fgSizerTW_Results->Add( m_ExtTrackResistValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); - m_staticText84 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText84->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticText84, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + bMiddleSizerAtt->Add( sbSizerAttValues, 0, wxEXPAND|wxTOP, 5 ); - m_staticText661 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText661->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticText661, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_staticTextAttMsg = new wxStaticText( m_panelAttenuators, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextAttMsg->Wrap( -1 ); + bMiddleSizerAtt->Add( m_staticTextAttMsg, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - m_ExtTrackVDropValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ExtTrackVDropValue->Wrap( -1 ); - fgSizerTW_Results->Add( m_ExtTrackVDropValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + m_Attenuator_Messages = new wxHtmlWindow( m_panelAttenuators, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO|wxBORDER_SIMPLE ); + bMiddleSizerAtt->Add( m_Attenuator_Messages, 1, wxALL|wxEXPAND, 5 ); - m_staticText83 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Volt"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText83->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticText83, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - m_staticText79 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText79->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticText79, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + bSizerAtt->Add( bMiddleSizerAtt, 0, wxEXPAND, 5 ); - m_ExtTrackLossValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ExtTrackLossValue->Wrap( -1 ); - fgSizerTW_Results->Add( m_ExtTrackLossValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + wxStaticBoxSizer* sbRightSizerFormula; + sbRightSizerFormula = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Formula") ), wxVERTICAL ); - m_staticText791 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Watt"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText791->Wrap( -1 ); - fgSizerTW_Results->Add( m_staticText791, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_panelAttFormula = new wxHtmlWindow( sbRightSizerFormula->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); + sbRightSizerFormula->Add( m_panelAttFormula, 1, wxALL|wxEXPAND, 5 ); - sbSizerTW_Result->Add( fgSizerTW_Results, 0, wxEXPAND, 5 ); + bSizerAtt->Add( sbRightSizerFormula, 1, wxEXPAND|wxTOP|wxBOTTOM, 5 ); - bSizeRight->Add( sbSizerTW_Result, 1, wxEXPAND|wxALL, 5 ); + m_panelAttenuators->SetSizer( bSizerAtt ); + m_panelAttenuators->Layout(); + bSizerAtt->Fit( m_panelAttenuators ); + m_Notebook->AddPage( m_panelAttenuators, _("RF Attenuators"), false ); + m_panelESeries = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizerESerie; + bSizerESerie = new wxBoxSizer( wxVERTICAL ); - wxStaticBoxSizer* sbSizerTW_Result1; - sbSizerTW_Result1 = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("Internal layer traces:") ), wxVERTICAL ); + wxBoxSizer* bUpperESerie; + bUpperESerie = new wxBoxSizer( wxHORIZONTAL ); - wxFlexGridSizer* fgSizerTW_Results1; - fgSizerTW_Results1 = new wxFlexGridSizer( 6, 3, 0, 0 ); - fgSizerTW_Results1->AddGrowableCol( 1 ); - fgSizerTW_Results1->SetFlexibleDirection( wxBOTH ); - fgSizerTW_Results1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + wxBoxSizer* bUpperSizerESeries1; + bUpperSizerESeries1 = new wxBoxSizer( wxHORIZONTAL ); - m_staticTextIntWidth = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Trace width:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextIntWidth->Wrap( -1 ); - m_staticTextIntWidth->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + wxBoxSizer* bSizer3811; + bSizer3811 = new wxBoxSizer( wxVERTICAL ); - fgSizerTW_Results1->Add( m_staticTextIntWidth, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_staticTextESeriesMsg111 = new wxStaticText( m_panelESeries, wxID_ANY, _("E-Series Resistor Calculator"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextESeriesMsg111->Wrap( -1 ); + m_staticTextESeriesMsg111->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); - m_IntTrackWidthValue = new wxTextCtrl( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTW_Results1->Add( m_IntTrackWidthValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + bSizer3811->Add( m_staticTextESeriesMsg111, 0, wxALIGN_CENTER_HORIZONTAL|wxALL|wxBOTTOM|wxTOP, 5 ); - wxArrayString m_TW_IntTrackWidth_choiceUnitChoices; - m_TW_IntTrackWidth_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_IntTrackWidth_choiceUnitChoices, 0 ); - m_TW_IntTrackWidth_choiceUnit->SetSelection( 0 ); - fgSizerTW_Results1->Add( m_TW_IntTrackWidth_choiceUnit, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); - m_staticText652 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Trace thickness:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText652->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticText652, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + bUpperSizerESeries1->Add( bSizer3811, 1, wxALIGN_CENTER, 5 ); - m_IntTrackThicknessValue = new wxTextCtrl( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerTW_Results1->Add( m_IntTrackThicknessValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - wxArrayString m_IntTrackThicknessUnitChoices; - m_IntTrackThicknessUnit = new UNIT_SELECTOR_THICKNESS( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_IntTrackThicknessUnitChoices, 0 ); - m_IntTrackThicknessUnit->SetSelection( 0 ); - fgSizerTW_Results1->Add( m_IntTrackThicknessUnit, 0, wxALL, 5 ); + bUpperESerie->Add( bUpperSizerESeries1, 1, wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxTOP, 5 ); - m_staticTextArea1 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Cross-section area:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextArea1->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticTextArea1, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_IntTrackAreaValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_IntTrackAreaValue->Wrap( -1 ); - fgSizerTW_Results1->Add( m_IntTrackAreaValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + bSizerESerie->Add( bUpperESerie, 0, wxALIGN_CENTER, 5 ); - m_IntTrackAreaUnitLabel = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("mm ^ 2"), wxDefaultPosition, wxDefaultSize, 0 ); - m_IntTrackAreaUnitLabel->Wrap( -1 ); - fgSizerTW_Results1->Add( m_IntTrackAreaUnitLabel, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + wxBoxSizer* bMiddleSizerESeries; + bMiddleSizerESeries = new wxBoxSizer( wxHORIZONTAL ); - m_staticText6511 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText6511->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticText6511, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + wxStaticBoxSizer* sbSizerESeriesInput; + sbSizerESeriesInput = new wxStaticBoxSizer( new wxStaticBox( m_panelESeries, wxID_ANY, _("Inputs") ), wxVERTICAL ); - m_IntTrackResistValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_IntTrackResistValue->Wrap( -1 ); - fgSizerTW_Results1->Add( m_IntTrackResistValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + wxFlexGridSizer* fgSizerAttPrms1; + fgSizerAttPrms1 = new wxFlexGridSizer( 4, 3, 0, 0 ); + fgSizerAttPrms1->AddGrowableRow( 1 ); + fgSizerAttPrms1->SetFlexibleDirection( wxBOTH ); + fgSizerAttPrms1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_staticText841 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText841->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticText841, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_ESrequired = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("Required Resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESrequired->Wrap( -1 ); + fgSizerAttPrms1->Add( m_ESrequired, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticText6611 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText6611->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticText6611, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_ResRequired = new wxTextCtrl( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttPrms1->Add( m_ResRequired, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - m_IntTrackVDropValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_IntTrackVDropValue->Wrap( -1 ); - fgSizerTW_Results1->Add( m_IntTrackVDropValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + m_UnitRegultR111 = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("KOhm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_UnitRegultR111->Wrap( -1 ); + fgSizerAttPrms1->Add( m_UnitRegultR111, 0, wxALL, 5 ); - m_staticText831 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Volt"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText831->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticText831, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_ESrequired1 = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("Exclude Value 1:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESrequired1->Wrap( -1 ); + fgSizerAttPrms1->Add( m_ESrequired1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticText792 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText792->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticText792, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_ResExclude1 = new wxTextCtrl( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttPrms1->Add( m_ResExclude1, 0, wxALL, 5 ); - m_IntTrackLossValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_IntTrackLossValue->Wrap( -1 ); - fgSizerTW_Results1->Add( m_IntTrackLossValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + m_UnitRegultR1111 = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("KOhm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_UnitRegultR1111->Wrap( -1 ); + fgSizerAttPrms1->Add( m_UnitRegultR1111, 0, wxALL, 5 ); - m_staticText7911 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Watt"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText7911->Wrap( -1 ); - fgSizerTW_Results1->Add( m_staticText7911, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_ESrequired11 = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("Exclude Value 2:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESrequired11->Wrap( -1 ); + fgSizerAttPrms1->Add( m_ESrequired11, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + m_ResExclude2 = new wxTextCtrl( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerAttPrms1->Add( m_ResExclude2, 0, wxALL, 5 ); - sbSizerTW_Result1->Add( fgSizerTW_Results1, 0, wxEXPAND, 5 ); + m_UnitRegultR1112 = new wxStaticText( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("KOhm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_UnitRegultR1112->Wrap( -1 ); + fgSizerAttPrms1->Add( m_UnitRegultR1112, 0, wxALL, 5 ); + wxString m_rbESerieSelectionChoices[] = { _("E1"), _("E3"), _("E6"), _("E12") }; + int m_rbESerieSelectionNChoices = sizeof( m_rbESerieSelectionChoices ) / sizeof( wxString ); + m_rbESerieSelection = new wxRadioBox( sbSizerESeriesInput->GetStaticBox(), wxID_ANY, _("Available Values:"), wxDefaultPosition, wxDefaultSize, m_rbESerieSelectionNChoices, m_rbESerieSelectionChoices, 4, wxRA_SPECIFY_COLS ); + m_rbESerieSelection->SetSelection( 2 ); + fgSizerAttPrms1->Add( m_rbESerieSelection, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - bSizeRight->Add( sbSizerTW_Result1, 1, wxEXPAND|wxALL, 5 ); - m_buttonTrackWidthReset = new wxButton( m_panelTrackWidth, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizeRight->Add( m_buttonTrackWidthReset, 0, wxALIGN_RIGHT|wxALL, 5 ); + sbSizerESeriesInput->Add( fgSizerAttPrms1, 0, wxEXPAND, 5 ); - bSizerTrackWidth->Add( bSizeRight, 0, wxEXPAND, 5 ); + bMiddleSizerESeries->Add( sbSizerESeriesInput, 0, wxRIGHT|wxTOP, 5 ); + wxStaticBoxSizer* sbSizerESeriesSolutions; + sbSizerESeriesSolutions = new wxStaticBoxSizer( new wxStaticBox( m_panelESeries, wxID_ANY, _("Solutions") ), wxVERTICAL ); - m_panelTrackWidth->SetSizer( bSizerTrackWidth ); - m_panelTrackWidth->Layout(); - bSizerTrackWidth->Fit( m_panelTrackWidth ); - m_Notebook->AddPage( m_panelTrackWidth, _("Track Width"), false ); - m_panelViaSize = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizerViaSize; - bSizerViaSize = new wxBoxSizer( wxHORIZONTAL ); + wxFlexGridSizer* fgSizerESerieResults; + fgSizerESerieResults = new wxFlexGridSizer( 6, 5, 0, 0 ); + fgSizerESerieResults->AddGrowableRow( 1 ); + fgSizerESerieResults->SetFlexibleDirection( wxBOTH ); + fgSizerESerieResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - wxStaticBoxSizer* sbSizerVS_Inputs; - sbSizerVS_Inputs = new wxStaticBoxSizer( new wxStaticBox( m_panelViaSize, wxID_ANY, _("Parameters:") ), wxVERTICAL ); + m_ESerieSimpleSolution = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Simple Solution:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESerieSimpleSolution->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESerieSimpleSolution, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - wxFlexGridSizer* fgSizerVS_Inputs; - fgSizerVS_Inputs = new wxFlexGridSizer( 0, 3, 0, 0 ); - fgSizerVS_Inputs->AddGrowableCol( 1 ); - fgSizerVS_Inputs->SetFlexibleDirection( wxBOTH ); - fgSizerVS_Inputs->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + m_ESeries_Sol2R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeries_Sol2R->SetMinSize( wxSize( 150,-1 ) ); - m_staticTextHoleDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Finished hole diameter (D):"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextHoleDia->Wrap( -1 ); - m_staticTextHoleDia->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + fgSizerESerieResults->Add( m_ESeries_Sol2R, 0, wxTOP|wxRIGHT|wxLEFT|wxALIGN_BOTTOM, 5 ); - fgSizerVS_Inputs->Add( m_staticTextHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + m_ESeriesSimpleErr = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Error:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeriesSimpleErr->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESeriesSimpleErr, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_textCtrlHoleDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_ESeriesError2R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerESerieResults->Add( m_ESeriesError2R, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - wxArrayString m_choiceHoleDiaChoices; - m_choiceHoleDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceHoleDiaChoices, 0 ); - m_choiceHoleDia->SetSelection( 0 ); - fgSizerVS_Inputs->Add( m_choiceHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_ESeriesSimplePercent = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeriesSimplePercent->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESeriesSimplePercent, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticTextPlatingThickness = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Plating thickness (T):"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextPlatingThickness->Wrap( -1 ); - fgSizerVS_Inputs->Add( m_staticTextPlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 ); + m_ESerie3RSolution1 = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("3R Solution:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESerie3RSolution1->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESerie3RSolution1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_textCtrlPlatingThickness = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlPlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + m_ESeries_Sol3R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeries_Sol3R->SetMinSize( wxSize( 220,-1 ) ); - wxArrayString m_choicePlatingThicknessChoices; - m_choicePlatingThickness = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choicePlatingThicknessChoices, 0 ); - m_choicePlatingThickness->SetSelection( 0 ); - fgSizerVS_Inputs->Add( m_choicePlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + fgSizerESerieResults->Add( m_ESeries_Sol3R, 0, wxALL|wxALIGN_BOTTOM, 5 ); - m_staticTextViaLength = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Via length:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextViaLength->Wrap( -1 ); - m_staticTextViaLength->SetToolTip( _("Via length is the board thickness for through hole vias") ); + m_ESeriesAltErr = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Error:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeriesAltErr->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESeriesAltErr, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - fgSizerVS_Inputs->Add( m_staticTextViaLength, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + m_ESeriesError3R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerESerieResults->Add( m_ESeriesError3R, 0, wxALL, 5 ); - m_textCtrlViaLength = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlViaLength, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_ESeriesAltPercent = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeriesAltPercent->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESeriesAltPercent, 0, wxALL, 5 ); - wxArrayString m_choiceViaLengthChoices; - m_choiceViaLength = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceViaLengthChoices, 0 ); - m_choiceViaLength->SetSelection( 0 ); - fgSizerVS_Inputs->Add( m_choiceViaLength, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_ESeries4RSolution = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("4R Solution:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeries4RSolution->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESeries4RSolution, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); - m_staticTextViaPadDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Via pad diameter:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextViaPadDia->Wrap( -1 ); - m_staticTextViaPadDia->SetToolTip( _("Diameter of pad surrounding via (annular ring)") ); + m_ESeries_Sol4R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeries_Sol4R->SetMinSize( wxSize( 290,-1 ) ); - fgSizerVS_Inputs->Add( m_staticTextViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + fgSizerESerieResults->Add( m_ESeries_Sol4R, 0, wxALL|wxALIGN_BOTTOM, 5 ); - m_textCtrlViaPadDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_ESeriesAltErr1 = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Error:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeriesAltErr1->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESeriesAltErr1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - wxArrayString m_choiceViaPadDiaChoices; - m_choiceViaPadDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceViaPadDiaChoices, 0 ); - m_choiceViaPadDia->SetSelection( 0 ); - fgSizerVS_Inputs->Add( m_choiceViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_ESeriesError4R = new wxTextCtrl( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerESerieResults->Add( m_ESeriesError4R, 0, wxALL, 5 ); - m_staticTextClearanceDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Clearance hole diameter:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextClearanceDia->Wrap( -1 ); - m_staticTextClearanceDia->SetToolTip( _("Diameter of clearance hole in ground plane(s)") ); + m_ESeriesAltPercent1 = new wxStaticText( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("%"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ESeriesAltPercent1->Wrap( -1 ); + fgSizerESerieResults->Add( m_ESeriesAltPercent1, 0, wxALL, 5 ); - fgSizerVS_Inputs->Add( m_staticTextClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + m_buttonEScalculate = new wxButton( sbSizerESeriesSolutions->GetStaticBox(), wxID_ANY, _("Calculate"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerESerieResults->Add( m_buttonEScalculate, 0, wxALL, 5 ); - m_textCtrlClearanceDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - wxArrayString m_choiceClearanceDiaChoices; - m_choiceClearanceDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceClearanceDiaChoices, 0 ); - m_choiceClearanceDia->SetSelection( 0 ); - fgSizerVS_Inputs->Add( m_choiceClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + sbSizerESeriesSolutions->Add( fgSizerESerieResults, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); - m_staticTextImpedance = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Z0:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextImpedance->Wrap( -1 ); - m_staticTextImpedance->SetToolTip( _("Characteristic impedance of conductor") ); - fgSizerVS_Inputs->Add( m_staticTextImpedance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + bMiddleSizerESeries->Add( sbSizerESeriesSolutions, 0, wxRIGHT|wxTOP, 5 ); - m_textCtrlImpedance = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlImpedance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + wxBoxSizer* bSizer47; + bSizer47 = new wxBoxSizer( wxVERTICAL ); - wxArrayString m_choiceImpedanceChoices; - m_choiceImpedance = new UNIT_SELECTOR_RESISTOR( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceImpedanceChoices, 0 ); - m_choiceImpedance->SetSelection( 0 ); - fgSizerVS_Inputs->Add( m_choiceImpedance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_staticAppliedCurrent = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Applied current:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticAppliedCurrent->Wrap( -1 ); - fgSizerVS_Inputs->Add( m_staticAppliedCurrent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + bMiddleSizerESeries->Add( bSizer47, 1, wxALIGN_BOTTOM, 5 ); - m_textCtrlAppliedCurrent = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlAppliedCurrent, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_staticTextAppliedCurrentUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextAppliedCurrentUnits->Wrap( -1 ); - fgSizerVS_Inputs->Add( m_staticTextAppliedCurrentUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + bSizerESerie->Add( bMiddleSizerESeries, 0, wxEXPAND|wxTOP, 5 ); - m_staticTextResistivity = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Plating resistivity (Ohm.m):"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextResistivity->Wrap( -1 ); - m_staticTextResistivity->SetToolTip( _("Specific resistance in ohms * meters") ); + wxBoxSizer* bLowerESerie; + bLowerESerie = new wxBoxSizer( wxHORIZONTAL ); - fgSizerVS_Inputs->Add( m_staticTextResistivity, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + wxStaticBoxSizer* sbLowerSizerEseriesHelp; + sbLowerSizerEseriesHelp = new wxStaticBoxSizer( new wxStaticBox( m_panelESeries, wxID_ANY, _("Help") ), wxVERTICAL ); - m_textCtrlPlatingResistivity = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlPlatingResistivity, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_panelESeriesHelp = new wxHtmlWindow( sbLowerSizerEseriesHelp->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); + sbLowerSizerEseriesHelp->Add( m_panelESeriesHelp, 1, wxALL|wxEXPAND, 5 ); - m_button_ResistivityVia = new wxButton( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT ); - fgSizerVS_Inputs->Add( m_button_ResistivityVia, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_staticTextPermittivity = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Er:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextPermittivity->Wrap( -1 ); - m_staticTextPermittivity->SetToolTip( _("Relative dielectric constant (epsilon r)") ); + bLowerESerie->Add( sbLowerSizerEseriesHelp, 1, wxEXPAND, 5 ); - fgSizerVS_Inputs->Add( m_staticTextPermittivity, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_textCtrlPlatingPermittivity = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlPlatingPermittivity, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + bSizerESerie->Add( bLowerESerie, 1, wxEXPAND, 5 ); - m_button_Permittivity = new wxButton( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT ); - fgSizerVS_Inputs->Add( m_button_Permittivity, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_staticTextTemperatureDiff = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Temperature rise:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextTemperatureDiff->Wrap( -1 ); - m_staticTextTemperatureDiff->SetToolTip( _("Maximum acceptable rise in temperature") ); + m_panelESeries->SetSizer( bSizerESerie ); + m_panelESeries->Layout(); + bSizerESerie->Fit( m_panelESeries ); + m_Notebook->AddPage( m_panelESeries, _("E-Series"), true ); + m_panelColorCode = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizerPanelColorCode; + bSizerPanelColorCode = new wxBoxSizer( wxHORIZONTAL ); - fgSizerVS_Inputs->Add( m_staticTextTemperatureDiff, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + wxString m_rbToleranceSelectionChoices[] = { _("10% / 5%"), _("<= 2%") }; + int m_rbToleranceSelectionNChoices = sizeof( m_rbToleranceSelectionChoices ) / sizeof( wxString ); + m_rbToleranceSelection = new wxRadioBox( m_panelColorCode, wxID_ANY, _("Tolerance"), wxDefaultPosition, wxDefaultSize, m_rbToleranceSelectionNChoices, m_rbToleranceSelectionChoices, 1, wxRA_SPECIFY_COLS ); + m_rbToleranceSelection->SetSelection( 0 ); + bSizerPanelColorCode->Add( m_rbToleranceSelection, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - m_textCtrlTemperatureDiff = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlTemperatureDiff, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + wxFlexGridSizer* fgSizerColoCode; + fgSizerColoCode = new wxFlexGridSizer( 2, 6, 0, 0 ); + fgSizerColoCode->SetFlexibleDirection( wxBOTH ); + fgSizerColoCode->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_staticTextTemperatureUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("deg C"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextTemperatureUnits->Wrap( -1 ); - fgSizerVS_Inputs->Add( m_staticTextTemperatureUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_staticText31 = new wxStaticText( m_panelColorCode, wxID_ANY, _("1st Band"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText31->Wrap( -1 ); + fgSizerColoCode->Add( m_staticText31, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - m_staticTextRiseTime = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Pulse rise time:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextRiseTime->Wrap( -1 ); - m_staticTextRiseTime->SetToolTip( _("Pulse rise time to calculate reactance") ); + m_staticText34 = new wxStaticText( m_panelColorCode, wxID_ANY, _("2nd Band"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText34->Wrap( -1 ); + fgSizerColoCode->Add( m_staticText34, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - fgSizerVS_Inputs->Add( m_staticTextRiseTime, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_staticText35 = new wxStaticText( m_panelColorCode, wxID_ANY, _("3rd Band"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText35->Wrap( -1 ); + fgSizerColoCode->Add( m_staticText35, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - m_textCtrlRiseTime = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerVS_Inputs->Add( m_textCtrlRiseTime, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_Band4Label = new wxStaticText( m_panelColorCode, wxID_ANY, _("4th Band"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Band4Label->Wrap( -1 ); + fgSizerColoCode->Add( m_Band4Label, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - m_staticTextRiseTimeUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("ns"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextRiseTimeUnits->Wrap( -1 ); - m_staticTextRiseTimeUnits->SetToolTip( _("nanoseconds") ); + m_staticText37 = new wxStaticText( m_panelColorCode, wxID_ANY, _("Multiplier"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText37->Wrap( -1 ); + fgSizerColoCode->Add( m_staticText37, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - fgSizerVS_Inputs->Add( m_staticTextRiseTimeUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_staticText38 = new wxStaticText( m_panelColorCode, wxID_ANY, _("Tolerance"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText38->Wrap( -1 ); + fgSizerColoCode->Add( m_staticText38, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + m_Band1bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_and_name_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerColoCode->Add( m_Band1bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); - sbSizerVS_Inputs->Add( fgSizerVS_Inputs, 0, wxEXPAND, 5 ); + m_Band2bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerColoCode->Add( m_Band2bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); - m_staticline31 = new wxStaticLine( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - sbSizerVS_Inputs->Add( m_staticline31, 0, wxALL|wxEXPAND, 5 ); + m_Band3bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerColoCode->Add( m_Band3bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); - m_bitmap10 = new wxStaticBitmap( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxBitmap( via_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); - m_bitmap10->SetToolTip( _("Top view of via") ); + m_Band4bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerColoCode->Add( m_Band4bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); - sbSizerVS_Inputs->Add( m_bitmap10, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + m_Band_mult_bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_multiplier_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerColoCode->Add( m_Band_mult_bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + m_Band_tol_bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_tolerance_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerColoCode->Add( m_Band_tol_bitmap, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - bSizerViaSize->Add( sbSizerVS_Inputs, 1, wxEXPAND|wxALL, 5 ); - wxBoxSizer* bSizerRight; - bSizerRight = new wxBoxSizer( wxVERTICAL ); + bSizerPanelColorCode->Add( fgSizerColoCode, 1, wxEXPAND|wxLEFT, 5 ); - wxStaticBoxSizer* sbSizerVS_Result; - sbSizerVS_Result = new wxStaticBoxSizer( new wxStaticBox( m_panelViaSize, wxID_ANY, _("Results:") ), wxVERTICAL ); - wxFlexGridSizer* fgSizerTW_Results11; - fgSizerTW_Results11 = new wxFlexGridSizer( 0, 3, 0, 0 ); - fgSizerTW_Results11->AddGrowableCol( 1 ); - fgSizerTW_Results11->SetFlexibleDirection( wxBOTH ); - fgSizerTW_Results11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_staticTextArea11 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextArea11->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticTextArea11, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_ViaResistance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ViaResistance->Wrap( -1 ); - fgSizerTW_Results11->Add( m_ViaResistance, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - - m_IntTrackAreaUnitLabel1 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); - m_IntTrackAreaUnitLabel1->Wrap( -1 ); - fgSizerTW_Results11->Add( m_IntTrackAreaUnitLabel1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_staticText65111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText65111->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticText65111, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_ViaVoltageDrop = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ViaVoltageDrop->Wrap( -1 ); - fgSizerTW_Results11->Add( m_ViaVoltageDrop, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - - m_staticText8411 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Volt"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText8411->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticText8411, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_staticText66111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText66111->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticText66111, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_ViaPowerLoss = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ViaPowerLoss->Wrap( -1 ); - fgSizerTW_Results11->Add( m_ViaPowerLoss, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - - m_staticText8311 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Watt"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText8311->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticText8311, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_staticText79211 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Thermal resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText79211->Wrap( -1 ); - m_staticText79211->SetToolTip( _("Using thermal conductivity value 401 Watts/(meter-Kelvin)") ); - - fgSizerTW_Results11->Add( m_staticText79211, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_ViaThermalResistance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ViaThermalResistance->Wrap( -1 ); - fgSizerTW_Results11->Add( m_ViaThermalResistance, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - - m_staticText791111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("deg C/Watt"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText791111->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticText791111, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_staticTextAmpacity = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Estimated ampacity:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextAmpacity->Wrap( -1 ); - m_staticTextAmpacity->SetToolTip( _("Based on temperature rise") ); - - fgSizerTW_Results11->Add( m_staticTextAmpacity, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_ViaAmpacity = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ViaAmpacity->Wrap( -1 ); - fgSizerTW_Results11->Add( m_ViaAmpacity, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - - m_staticTextAmpacityUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextAmpacityUnits->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticTextAmpacityUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - - m_staticTextCapacitance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Capacitance:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCapacitance->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticTextCapacitance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_ViaCapacitance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ViaCapacitance->Wrap( -1 ); - fgSizerTW_Results11->Add( m_ViaCapacitance, 0, wxALL, 5 ); - - m_staticTextCapacitanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("pF"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextCapacitanceUnits->Wrap( -1 ); - m_staticTextCapacitanceUnits->SetToolTip( _("pico-Farad") ); - - fgSizerTW_Results11->Add( m_staticTextCapacitanceUnits, 0, wxALL, 5 ); - - m_staticTextRiseTimeOutput = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Rise time degradation:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextRiseTimeOutput->Wrap( -1 ); - m_staticTextRiseTimeOutput->SetToolTip( _("Rise time degradation for given Z0 and calculated capacitance") ); - - fgSizerTW_Results11->Add( m_staticTextRiseTimeOutput, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_RiseTimeOutput = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_RiseTimeOutput->Wrap( -1 ); - fgSizerTW_Results11->Add( m_RiseTimeOutput, 0, wxALL, 5 ); - - m_staticTextRiseTimeOutputUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("ps"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextRiseTimeOutputUnits->Wrap( -1 ); - m_staticTextRiseTimeOutputUnits->SetToolTip( _("picoseconds") ); - - fgSizerTW_Results11->Add( m_staticTextRiseTimeOutputUnits, 0, wxALL, 5 ); - - m_staticTextInductance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Inductance:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextInductance->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticTextInductance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_Inductance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Inductance->Wrap( -1 ); - fgSizerTW_Results11->Add( m_Inductance, 0, wxALL, 5 ); - - m_staticTextInductanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("nH"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextInductanceUnits->Wrap( -1 ); - m_staticTextInductanceUnits->SetToolTip( _("nano-Henry") ); - - fgSizerTW_Results11->Add( m_staticTextInductanceUnits, 0, wxALL, 5 ); - - m_staticTextReactance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Reactance:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextReactance->Wrap( -1 ); - m_staticTextReactance->SetToolTip( _("Inductive reactance for given rise time and calculated inductance") ); - - fgSizerTW_Results11->Add( m_staticTextReactance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - - m_Reactance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Reactance->Wrap( -1 ); - fgSizerTW_Results11->Add( m_Reactance, 0, wxALL, 5 ); - - m_staticTextReactanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextReactanceUnits->Wrap( -1 ); - fgSizerTW_Results11->Add( m_staticTextReactanceUnits, 0, wxALL, 5 ); - - - sbSizerVS_Result->Add( fgSizerTW_Results11, 0, wxEXPAND, 5 ); - - - sbSizerVS_Result->Add( 30, 30, 0, 0, 5 ); - - m_staticTextWarning = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Warning:\nVia pad diameter >= Clearance hole diameter.\nSome parameters cannot be calculated for a via\ninside a copper zone."), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextWarning->Wrap( -1 ); - m_staticTextWarning->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); - - sbSizerVS_Result->Add( m_staticTextWarning, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - - bSizerRight->Add( sbSizerVS_Result, 1, wxEXPAND|wxALL, 5 ); - - m_buttonViaReset = new wxButton( m_panelViaSize, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerRight->Add( m_buttonViaReset, 0, wxALIGN_RIGHT|wxALL, 5 ); - - - bSizerViaSize->Add( bSizerRight, 1, wxEXPAND, 5 ); - - - m_panelViaSize->SetSizer( bSizerViaSize ); - m_panelViaSize->Layout(); - bSizerViaSize->Fit( m_panelViaSize ); - m_Notebook->AddPage( m_panelViaSize, _("Via Size"), true ); - m_panelElectricalSpacing = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizerElectricalClearance; - bSizerElectricalClearance = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bLeftSizerElectricalClearance; - bLeftSizerElectricalClearance = new wxBoxSizer( wxVERTICAL ); - - wxArrayString m_ElectricalSpacingUnitsSelectorChoices; - m_ElectricalSpacingUnitsSelector = new UNIT_SELECTOR_LEN( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ElectricalSpacingUnitsSelectorChoices, 0 ); - m_ElectricalSpacingUnitsSelector->SetSelection( -1 ); - bLeftSizerElectricalClearance->Add( m_ElectricalSpacingUnitsSelector, 0, wxALL|wxEXPAND, 5 ); - - m_staticline2 = new wxStaticLine( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); - bLeftSizerElectricalClearance->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 ); - - m_staticText891 = new wxStaticText( m_panelElectricalSpacing, wxID_ANY, _("Voltage > 500V:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText891->Wrap( -1 ); - bLeftSizerElectricalClearance->Add( m_staticText891, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_ElectricalSpacingVoltage = new wxTextCtrl( m_panelElectricalSpacing, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizerElectricalClearance->Add( m_ElectricalSpacingVoltage, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_buttonElectSpacingRefresh = new wxButton( m_panelElectricalSpacing, wxID_ANY, _("Update Values"), wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizerElectricalClearance->Add( m_buttonElectSpacingRefresh, 0, wxALL|wxEXPAND, 5 ); - - - bSizerElectricalClearance->Add( bLeftSizerElectricalClearance, 0, wxEXPAND, 5 ); - - wxBoxSizer* bElectricalSpacingSizerRight; - bElectricalSpacingSizerRight = new wxBoxSizer( wxVERTICAL ); - - m_staticTextElectricalSpacing = new wxStaticText( m_panelElectricalSpacing, wxID_ANY, _("Note: Values are minimal values (from IPC 2221)"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextElectricalSpacing->Wrap( -1 ); - m_staticTextElectricalSpacing->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); - - bElectricalSpacingSizerRight->Add( m_staticTextElectricalSpacing, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_gridElectricalSpacingValues = new wxGrid( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - - // Grid - m_gridElectricalSpacingValues->CreateGrid( 10, 7 ); - m_gridElectricalSpacingValues->EnableEditing( false ); - m_gridElectricalSpacingValues->EnableGridLines( true ); - m_gridElectricalSpacingValues->EnableDragGridSize( false ); - m_gridElectricalSpacingValues->SetMargins( 0, 0 ); - - // Columns - m_gridElectricalSpacingValues->EnableDragColMove( false ); - m_gridElectricalSpacingValues->EnableDragColSize( true ); - m_gridElectricalSpacingValues->SetColLabelSize( 70 ); - m_gridElectricalSpacingValues->SetColLabelValue( 0, _("B1") ); - m_gridElectricalSpacingValues->SetColLabelValue( 1, _("B2") ); - m_gridElectricalSpacingValues->SetColLabelValue( 2, _("B3") ); - m_gridElectricalSpacingValues->SetColLabelValue( 3, _("B4") ); - m_gridElectricalSpacingValues->SetColLabelValue( 4, _("A5") ); - m_gridElectricalSpacingValues->SetColLabelValue( 5, _("A6") ); - m_gridElectricalSpacingValues->SetColLabelValue( 6, _("A7") ); - m_gridElectricalSpacingValues->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); - - // Rows - m_gridElectricalSpacingValues->AutoSizeRows(); - m_gridElectricalSpacingValues->EnableDragRowSize( false ); - m_gridElectricalSpacingValues->SetRowLabelSize( 100 ); - m_gridElectricalSpacingValues->SetRowLabelValue( 0, _("0 ... 15V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 1, _("16 ... 30V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 2, _("31 ... 50V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 3, _("51 ... 100V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 4, _("101 ... 150V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 5, _("151 ... 170V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 6, _("171 ... 250V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 7, _("251 ... 300V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 8, _("301 ... 500V") ); - m_gridElectricalSpacingValues->SetRowLabelValue( 9, _(" > 500V") ); - m_gridElectricalSpacingValues->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER ); - - // Label Appearance - - // Cell Defaults - m_gridElectricalSpacingValues->SetDefaultCellAlignment( wxALIGN_CENTER, wxALIGN_TOP ); - bElectricalSpacingSizerRight->Add( m_gridElectricalSpacingValues, 0, wxALL|wxEXPAND, 5 ); - - 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 ); - m_staticText88->Wrap( -1 ); - bElectricalSpacingSizerRight->Add( m_staticText88, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bSizerElectricalClearance->Add( bElectricalSpacingSizerRight, 1, wxEXPAND, 5 ); - - - m_panelElectricalSpacing->SetSizer( bSizerElectricalClearance ); - m_panelElectricalSpacing->Layout(); - bSizerElectricalClearance->Fit( m_panelElectricalSpacing ); - m_Notebook->AddPage( m_panelElectricalSpacing, _("Electrical Spacing"), false ); + m_panelColorCode->SetSizer( bSizerPanelColorCode ); + m_panelColorCode->Layout(); + bSizerPanelColorCode->Fit( m_panelColorCode ); + m_Notebook->AddPage( m_panelColorCode, _("Color Code"), false ); m_panelTransline = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxBoxSizer* bSizeTransline; bSizeTransline = new wxBoxSizer( wxHORIZONTAL ); @@ -970,7 +682,7 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow wxString m_TranslineSelectionChoices[] = { _("Microstrip Line"), _("Coplanar wave guide"), _("Coplanar wave guide with ground plane"), _("Rectangular Waveguide"), _("Coaxial Line"), _("Coupled Microstrip Line"), _("Stripline"), _("Twisted Pair") }; int m_TranslineSelectionNChoices = sizeof( m_TranslineSelectionChoices ) / sizeof( wxString ); m_TranslineSelection = new wxRadioBox( m_panelTransline, wxID_ANY, _("Transmission Line Type:"), wxDefaultPosition, wxDefaultSize, m_TranslineSelectionNChoices, m_TranslineSelectionChoices, 1, wxRA_SPECIFY_COLS ); - m_TranslineSelection->SetSelection( 0 ); + m_TranslineSelection->SetSelection( 1 ); bLeftSizer->Add( m_TranslineSelection, 0, wxTOP|wxRIGHT|wxLEFT|wxEXPAND, 5 ); m_panelDisplayshape = new wxPanel( m_panelTransline, wxID_ANY, wxDefaultPosition, wxSize( 205,205 ), wxTAB_TRAVERSAL ); @@ -1394,227 +1106,707 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow m_panelTransline->Layout(); bSizeTransline->Fit( m_panelTransline ); m_Notebook->AddPage( m_panelTransline, _("TransLine"), false ); - m_panelAttenuators = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizerAtt; - bSizerAtt = new wxBoxSizer( wxHORIZONTAL ); + m_panelViaSize = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizerViaSize; + bSizerViaSize = new wxBoxSizer( wxHORIZONTAL ); - wxBoxSizer* bLeftSizerAtt; - bLeftSizerAtt = new wxBoxSizer( wxVERTICAL ); + wxStaticBoxSizer* sbSizerVS_Inputs; + sbSizerVS_Inputs = new wxStaticBoxSizer( new wxStaticBox( m_panelViaSize, wxID_ANY, _("Parameters:") ), wxVERTICAL ); - wxString m_AttenuatorsSelectionChoices[] = { _("PI"), _("Tee"), _("Bridged Tee"), _("Resistive Splitter") }; - int m_AttenuatorsSelectionNChoices = sizeof( m_AttenuatorsSelectionChoices ) / sizeof( wxString ); - m_AttenuatorsSelection = new wxRadioBox( m_panelAttenuators, wxID_ANY, _("Attenuators:"), wxDefaultPosition, wxDefaultSize, m_AttenuatorsSelectionNChoices, m_AttenuatorsSelectionChoices, 1, wxRA_SPECIFY_COLS ); - m_AttenuatorsSelection->SetSelection( 0 ); - bLeftSizerAtt->Add( m_AttenuatorsSelection, 0, wxEXPAND|wxALL, 5 ); + wxFlexGridSizer* fgSizerVS_Inputs; + fgSizerVS_Inputs = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizerVS_Inputs->AddGrowableCol( 1 ); + fgSizerVS_Inputs->SetFlexibleDirection( wxBOTH ); + fgSizerVS_Inputs->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_panelDisplayAttenuator = new wxPanel( m_panelAttenuators, wxID_ANY, wxDefaultPosition, wxSize( 256,256 ), wxTAB_TRAVERSAL|wxBORDER_SIMPLE ); - bLeftSizerAtt->Add( m_panelDisplayAttenuator, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + m_staticTextHoleDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Finished hole diameter (D):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextHoleDia->Wrap( -1 ); + m_staticTextHoleDia->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + fgSizerVS_Inputs->Add( m_staticTextHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); - bSizerAtt->Add( bLeftSizerAtt, 0, wxEXPAND, 5 ); + m_textCtrlHoleDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - wxBoxSizer* bMiddleSizerAtt; - bMiddleSizerAtt = new wxBoxSizer( wxVERTICAL ); + wxArrayString m_choiceHoleDiaChoices; + m_choiceHoleDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceHoleDiaChoices, 0 ); + m_choiceHoleDia->SetSelection( 0 ); + fgSizerVS_Inputs->Add( m_choiceHoleDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - wxStaticBoxSizer* sbSizerAttPrms; - sbSizerAttPrms = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Parameters:") ), wxVERTICAL ); + m_staticTextPlatingThickness = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Plating thickness (T):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextPlatingThickness->Wrap( -1 ); + fgSizerVS_Inputs->Add( m_staticTextPlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 ); - wxFlexGridSizer* fgSizerAttPrms; - fgSizerAttPrms = new wxFlexGridSizer( 3, 3, 0, 0 ); - fgSizerAttPrms->AddGrowableRow( 1 ); - fgSizerAttPrms->SetFlexibleDirection( wxBOTH ); - fgSizerAttPrms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + m_textCtrlPlatingThickness = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlPlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); - m_attenuationLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Attenuation"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attenuationLabel->Wrap( -1 ); - fgSizerAttPrms->Add( m_attenuationLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + wxArrayString m_choicePlatingThicknessChoices; + m_choicePlatingThickness = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choicePlatingThicknessChoices, 0 ); + m_choicePlatingThickness->SetSelection( 0 ); + fgSizerVS_Inputs->Add( m_choicePlatingThickness, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); - m_AttValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerAttPrms->Add( m_AttValueCtrl, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + m_staticTextViaLength = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Via length:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextViaLength->Wrap( -1 ); + m_staticTextViaLength->SetToolTip( _("Via length is the board thickness for through hole vias") ); - m_attUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("dB"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attUnit->Wrap( -1 ); - fgSizerAttPrms->Add( m_attUnit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + fgSizerVS_Inputs->Add( m_staticTextViaLength, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); - m_attenuationZinLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Zin"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attenuationZinLabel->Wrap( -1 ); - fgSizerAttPrms->Add( m_attenuationZinLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + m_textCtrlViaLength = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlViaLength, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_ZinValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerAttPrms->Add( m_ZinValueCtrl, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + wxArrayString m_choiceViaLengthChoices; + m_choiceViaLength = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceViaLengthChoices, 0 ); + m_choiceViaLength->SetSelection( 0 ); + fgSizerVS_Inputs->Add( m_choiceViaLength, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_attZinUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attZinUnit->Wrap( -1 ); - fgSizerAttPrms->Add( m_attZinUnit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + m_staticTextViaPadDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Via pad diameter:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextViaPadDia->Wrap( -1 ); + m_staticTextViaPadDia->SetToolTip( _("Diameter of pad surrounding via (annular ring)") ); - m_ZoutLabel = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Zout"), wxDefaultPosition, wxDefaultSize, 0 ); - m_ZoutLabel->Wrap( -1 ); - fgSizerAttPrms->Add( m_ZoutLabel, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + fgSizerVS_Inputs->Add( m_staticTextViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); - m_ZoutValueCtrl = new wxTextCtrl( sbSizerAttPrms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerAttPrms->Add( m_ZoutValueCtrl, 0, wxALL, 5 ); + m_textCtrlViaPadDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_attZoutUnit = new wxStaticText( sbSizerAttPrms->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attZoutUnit->Wrap( -1 ); - fgSizerAttPrms->Add( m_attZoutUnit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + wxArrayString m_choiceViaPadDiaChoices; + m_choiceViaPadDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceViaPadDiaChoices, 0 ); + m_choiceViaPadDia->SetSelection( 0 ); + fgSizerVS_Inputs->Add( m_choiceViaPadDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_staticTextClearanceDia = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Clearance hole diameter:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextClearanceDia->Wrap( -1 ); + m_staticTextClearanceDia->SetToolTip( _("Diameter of clearance hole in ground plane(s)") ); - sbSizerAttPrms->Add( fgSizerAttPrms, 0, wxEXPAND, 5 ); + fgSizerVS_Inputs->Add( m_staticTextClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + m_textCtrlClearanceDia = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - bMiddleSizerAtt->Add( sbSizerAttPrms, 0, wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5 ); + wxArrayString m_choiceClearanceDiaChoices; + m_choiceClearanceDia = new UNIT_SELECTOR_LEN( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceClearanceDiaChoices, 0 ); + m_choiceClearanceDia->SetSelection( 0 ); + fgSizerVS_Inputs->Add( m_choiceClearanceDia, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - wxBoxSizer* bSizerAttButt; - bSizerAttButt = new wxBoxSizer( wxHORIZONTAL ); + m_staticTextImpedance = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Z0:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextImpedance->Wrap( -1 ); + m_staticTextImpedance->SetToolTip( _("Characteristic impedance of conductor") ); - m_buttonAlcAtt = new wxButton( m_panelAttenuators, wxID_ANY, _("Calculate"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerAttButt->Add( m_buttonAlcAtt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + fgSizerVS_Inputs->Add( m_staticTextImpedance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); - m_bpButtonCalcAtt = new wxBitmapButton( m_panelAttenuators, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 ); + m_textCtrlImpedance = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlImpedance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_bpButtonCalcAtt->SetBitmap( wxBitmap( arrow_bottom_xpm ) ); - bSizerAttButt->Add( m_bpButtonCalcAtt, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + wxArrayString m_choiceImpedanceChoices; + m_choiceImpedance = new UNIT_SELECTOR_RESISTOR( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceImpedanceChoices, 0 ); + m_choiceImpedance->SetSelection( 0 ); + fgSizerVS_Inputs->Add( m_choiceImpedance, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + m_staticAppliedCurrent = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Applied current:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticAppliedCurrent->Wrap( -1 ); + fgSizerVS_Inputs->Add( m_staticAppliedCurrent, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); - bMiddleSizerAtt->Add( bSizerAttButt, 0, wxALIGN_CENTER_HORIZONTAL, 5 ); + m_textCtrlAppliedCurrent = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlAppliedCurrent, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - wxStaticBoxSizer* sbSizerAttValues; - sbSizerAttValues = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Values") ), wxVERTICAL ); + m_staticTextAppliedCurrentUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextAppliedCurrentUnits->Wrap( -1 ); + fgSizerVS_Inputs->Add( m_staticTextAppliedCurrentUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - wxFlexGridSizer* fgSizerAttResults; - fgSizerAttResults = new wxFlexGridSizer( 3, 3, 0, 0 ); - fgSizerAttResults->AddGrowableRow( 1 ); - fgSizerAttResults->SetFlexibleDirection( wxBOTH ); - fgSizerAttResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + m_staticTextResistivity = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Plating resistivity (Ohm.m):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextResistivity->Wrap( -1 ); + m_staticTextResistivity->SetToolTip( _("Specific resistance in ohms * meters") ); - m_attenuatorR1Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R1"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attenuatorR1Label->Wrap( -1 ); - fgSizerAttResults->Add( m_attenuatorR1Label, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + fgSizerVS_Inputs->Add( m_staticTextResistivity, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_Att_R1_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerAttResults->Add( m_Att_R1_Value, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + m_textCtrlPlatingResistivity = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlPlatingResistivity, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_attR1Unit = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attR1Unit->Wrap( -1 ); - fgSizerAttResults->Add( m_attR1Unit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + m_button_ResistivityVia = new wxButton( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT ); + fgSizerVS_Inputs->Add( m_button_ResistivityVia, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_attenuatorR2Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R2"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attenuatorR2Label->Wrap( -1 ); - fgSizerAttResults->Add( m_attenuatorR2Label, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + m_staticTextPermittivity = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Er:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextPermittivity->Wrap( -1 ); + m_staticTextPermittivity->SetToolTip( _("Relative dielectric constant (epsilon r)") ); - m_Att_R2_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerAttResults->Add( m_Att_R2_Value, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + fgSizerVS_Inputs->Add( m_staticTextPermittivity, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_attR2Unit1 = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attR2Unit1->Wrap( -1 ); - fgSizerAttResults->Add( m_attR2Unit1, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + m_textCtrlPlatingPermittivity = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlPlatingPermittivity, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_attenuatorR3Label = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("R3"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attenuatorR3Label->Wrap( -1 ); - fgSizerAttResults->Add( m_attenuatorR3Label, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + m_button_Permittivity = new wxButton( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("..."), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT ); + fgSizerVS_Inputs->Add( m_button_Permittivity, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_Att_R3_Value = new wxTextCtrl( sbSizerAttValues->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerAttResults->Add( m_Att_R3_Value, 0, wxALL, 5 ); + m_staticTextTemperatureDiff = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Temperature rise:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextTemperatureDiff->Wrap( -1 ); + m_staticTextTemperatureDiff->SetToolTip( _("Maximum acceptable rise in temperature") ); - m_attR3Unit = new wxStaticText( sbSizerAttValues->GetStaticBox(), wxID_ANY, _("Ohms"), wxDefaultPosition, wxDefaultSize, 0 ); - m_attR3Unit->Wrap( -1 ); - fgSizerAttResults->Add( m_attR3Unit, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + fgSizerVS_Inputs->Add( m_staticTextTemperatureDiff, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_textCtrlTemperatureDiff = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlTemperatureDiff, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - sbSizerAttValues->Add( fgSizerAttResults, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + m_staticTextTemperatureUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("deg C"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextTemperatureUnits->Wrap( -1 ); + fgSizerVS_Inputs->Add( m_staticTextTemperatureUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_staticTextRiseTime = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("Pulse rise time:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextRiseTime->Wrap( -1 ); + m_staticTextRiseTime->SetToolTip( _("Pulse rise time to calculate reactance") ); - bMiddleSizerAtt->Add( sbSizerAttValues, 0, wxEXPAND|wxTOP, 5 ); + fgSizerVS_Inputs->Add( m_staticTextRiseTime, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_staticTextAttMsg = new wxStaticText( m_panelAttenuators, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextAttMsg->Wrap( -1 ); - bMiddleSizerAtt->Add( m_staticTextAttMsg, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + m_textCtrlRiseTime = new wxTextCtrl( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerVS_Inputs->Add( m_textCtrlRiseTime, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); - m_Attenuator_Messages = new wxHtmlWindow( m_panelAttenuators, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO|wxBORDER_SIMPLE ); - bMiddleSizerAtt->Add( m_Attenuator_Messages, 1, wxALL|wxEXPAND, 5 ); + m_staticTextRiseTimeUnits = new wxStaticText( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, _("ns"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextRiseTimeUnits->Wrap( -1 ); + m_staticTextRiseTimeUnits->SetToolTip( _("nanoseconds") ); + fgSizerVS_Inputs->Add( m_staticTextRiseTimeUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - bSizerAtt->Add( bMiddleSizerAtt, 0, wxEXPAND, 5 ); - wxStaticBoxSizer* sbRightSizerFormula; - sbRightSizerFormula = new wxStaticBoxSizer( new wxStaticBox( m_panelAttenuators, wxID_ANY, _("Formula") ), wxVERTICAL ); + sbSizerVS_Inputs->Add( fgSizerVS_Inputs, 0, wxEXPAND, 5 ); - m_panelAttFormula = new wxHtmlWindow( sbRightSizerFormula->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); - sbRightSizerFormula->Add( m_panelAttFormula, 1, wxALL|wxEXPAND, 5 ); + m_staticline31 = new wxStaticLine( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + sbSizerVS_Inputs->Add( m_staticline31, 0, wxALL|wxEXPAND, 5 ); + m_bitmap10 = new wxStaticBitmap( sbSizerVS_Inputs->GetStaticBox(), wxID_ANY, wxBitmap( via_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); + m_bitmap10->SetToolTip( _("Top view of via") ); - bSizerAtt->Add( sbRightSizerFormula, 1, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + sbSizerVS_Inputs->Add( m_bitmap10, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); - m_panelAttenuators->SetSizer( bSizerAtt ); - m_panelAttenuators->Layout(); - bSizerAtt->Fit( m_panelAttenuators ); - m_Notebook->AddPage( m_panelAttenuators, _("RF Attenuators"), false ); - m_panelColorCode = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - wxBoxSizer* bSizerPanelColorCode; - bSizerPanelColorCode = new wxBoxSizer( wxHORIZONTAL ); + bSizerViaSize->Add( sbSizerVS_Inputs, 1, wxEXPAND|wxALL, 5 ); - wxString m_rbToleranceSelectionChoices[] = { _("10% / 5%"), _("<= 2%") }; - int m_rbToleranceSelectionNChoices = sizeof( m_rbToleranceSelectionChoices ) / sizeof( wxString ); - m_rbToleranceSelection = new wxRadioBox( m_panelColorCode, wxID_ANY, _("Tolerance"), wxDefaultPosition, wxDefaultSize, m_rbToleranceSelectionNChoices, m_rbToleranceSelectionChoices, 1, wxRA_SPECIFY_COLS ); - m_rbToleranceSelection->SetSelection( 0 ); - bSizerPanelColorCode->Add( m_rbToleranceSelection, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + wxBoxSizer* bSizerRight; + bSizerRight = new wxBoxSizer( wxVERTICAL ); - wxFlexGridSizer* fgSizerColoCode; - fgSizerColoCode = new wxFlexGridSizer( 2, 6, 0, 0 ); - fgSizerColoCode->SetFlexibleDirection( wxBOTH ); - fgSizerColoCode->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + wxStaticBoxSizer* sbSizerVS_Result; + sbSizerVS_Result = new wxStaticBoxSizer( new wxStaticBox( m_panelViaSize, wxID_ANY, _("Results:") ), wxVERTICAL ); - m_staticText31 = new wxStaticText( m_panelColorCode, wxID_ANY, _("1st Band"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText31->Wrap( -1 ); - fgSizerColoCode->Add( m_staticText31, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + wxFlexGridSizer* fgSizerTW_Results11; + fgSizerTW_Results11 = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizerTW_Results11->AddGrowableCol( 1 ); + fgSizerTW_Results11->SetFlexibleDirection( wxBOTH ); + fgSizerTW_Results11->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - m_staticText34 = new wxStaticText( m_panelColorCode, wxID_ANY, _("2nd Band"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText34->Wrap( -1 ); - fgSizerColoCode->Add( m_staticText34, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + m_staticTextArea11 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextArea11->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticTextArea11, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_staticText35 = new wxStaticText( m_panelColorCode, wxID_ANY, _("3rd Band"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText35->Wrap( -1 ); - fgSizerColoCode->Add( m_staticText35, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + m_ViaResistance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaResistance->Wrap( -1 ); + fgSizerTW_Results11->Add( m_ViaResistance, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - m_Band4Label = new wxStaticText( m_panelColorCode, wxID_ANY, _("4th Band"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Band4Label->Wrap( -1 ); - fgSizerColoCode->Add( m_Band4Label, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + m_IntTrackAreaUnitLabel1 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_IntTrackAreaUnitLabel1->Wrap( -1 ); + fgSizerTW_Results11->Add( m_IntTrackAreaUnitLabel1, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - m_staticText37 = new wxStaticText( m_panelColorCode, wxID_ANY, _("Multiplier"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText37->Wrap( -1 ); - fgSizerColoCode->Add( m_staticText37, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + m_staticText65111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText65111->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticText65111, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_staticText38 = new wxStaticText( m_panelColorCode, wxID_ANY, _("Tolerance"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText38->Wrap( -1 ); - fgSizerColoCode->Add( m_staticText38, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + m_ViaVoltageDrop = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaVoltageDrop->Wrap( -1 ); + fgSizerTW_Results11->Add( m_ViaVoltageDrop, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - m_Band1bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_and_name_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerColoCode->Add( m_Band1bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + m_staticText8411 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Volt"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText8411->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticText8411, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - m_Band2bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerColoCode->Add( m_Band2bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + m_staticText66111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText66111->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticText66111, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); - m_Band3bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerColoCode->Add( m_Band3bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + m_ViaPowerLoss = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaPowerLoss->Wrap( -1 ); + fgSizerTW_Results11->Add( m_ViaPowerLoss, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - m_Band4bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_value_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerColoCode->Add( m_Band4bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + m_staticText8311 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Watt"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText8311->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticText8311, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); - m_Band_mult_bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_multiplier_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerColoCode->Add( m_Band_mult_bitmap, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); + m_staticText79211 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Thermal resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText79211->Wrap( -1 ); + m_staticText79211->SetToolTip( _("Using thermal conductivity value 401 Watts/(meter-Kelvin)") ); - m_Band_tol_bitmap = new wxStaticBitmap( m_panelColorCode, wxID_ANY, wxBitmap( color_code_tolerance_xpm ), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerColoCode->Add( m_Band_tol_bitmap, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + fgSizerTW_Results11->Add( m_staticText79211, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + m_ViaThermalResistance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaThermalResistance->Wrap( -1 ); + fgSizerTW_Results11->Add( m_ViaThermalResistance, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); - bSizerPanelColorCode->Add( fgSizerColoCode, 1, wxEXPAND|wxLEFT, 5 ); + m_staticText791111 = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("deg C/Watt"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText791111->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticText791111, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + m_staticTextAmpacity = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Estimated ampacity:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextAmpacity->Wrap( -1 ); + m_staticTextAmpacity->SetToolTip( _("Based on temperature rise") ); - m_panelColorCode->SetSizer( bSizerPanelColorCode ); - m_panelColorCode->Layout(); - bSizerPanelColorCode->Fit( m_panelColorCode ); - m_Notebook->AddPage( m_panelColorCode, _("Color Code"), false ); + fgSizerTW_Results11->Add( m_staticTextAmpacity, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_ViaAmpacity = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaAmpacity->Wrap( -1 ); + fgSizerTW_Results11->Add( m_ViaAmpacity, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + m_staticTextAmpacityUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextAmpacityUnits->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticTextAmpacityUnits, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticTextCapacitance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Capacitance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCapacitance->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticTextCapacitance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_ViaCapacitance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ViaCapacitance->Wrap( -1 ); + fgSizerTW_Results11->Add( m_ViaCapacitance, 0, wxALL, 5 ); + + m_staticTextCapacitanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("pF"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCapacitanceUnits->Wrap( -1 ); + m_staticTextCapacitanceUnits->SetToolTip( _("pico-Farad") ); + + fgSizerTW_Results11->Add( m_staticTextCapacitanceUnits, 0, wxALL, 5 ); + + m_staticTextRiseTimeOutput = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Rise time degradation:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextRiseTimeOutput->Wrap( -1 ); + m_staticTextRiseTimeOutput->SetToolTip( _("Rise time degradation for given Z0 and calculated capacitance") ); + + fgSizerTW_Results11->Add( m_staticTextRiseTimeOutput, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_RiseTimeOutput = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_RiseTimeOutput->Wrap( -1 ); + fgSizerTW_Results11->Add( m_RiseTimeOutput, 0, wxALL, 5 ); + + m_staticTextRiseTimeOutputUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("ps"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextRiseTimeOutputUnits->Wrap( -1 ); + m_staticTextRiseTimeOutputUnits->SetToolTip( _("picoseconds") ); + + fgSizerTW_Results11->Add( m_staticTextRiseTimeOutputUnits, 0, wxALL, 5 ); + + m_staticTextInductance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Inductance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextInductance->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticTextInductance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_Inductance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Inductance->Wrap( -1 ); + fgSizerTW_Results11->Add( m_Inductance, 0, wxALL, 5 ); + + m_staticTextInductanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("nH"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextInductanceUnits->Wrap( -1 ); + m_staticTextInductanceUnits->SetToolTip( _("nano-Henry") ); + + fgSizerTW_Results11->Add( m_staticTextInductanceUnits, 0, wxALL, 5 ); + + m_staticTextReactance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Reactance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextReactance->Wrap( -1 ); + m_staticTextReactance->SetToolTip( _("Inductive reactance for given rise time and calculated inductance") ); + + fgSizerTW_Results11->Add( m_staticTextReactance, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_Reactance = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Reactance->Wrap( -1 ); + fgSizerTW_Results11->Add( m_Reactance, 0, wxALL, 5 ); + + m_staticTextReactanceUnits = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextReactanceUnits->Wrap( -1 ); + fgSizerTW_Results11->Add( m_staticTextReactanceUnits, 0, wxALL, 5 ); + + + sbSizerVS_Result->Add( fgSizerTW_Results11, 0, wxEXPAND, 5 ); + + + sbSizerVS_Result->Add( 30, 30, 0, 0, 5 ); + + m_staticTextWarning = new wxStaticText( sbSizerVS_Result->GetStaticBox(), wxID_ANY, _("Warning:\nVia pad diameter >= Clearance hole diameter.\nSome parameters cannot be calculated for a via\ninside a copper zone."), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextWarning->Wrap( -1 ); + m_staticTextWarning->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + sbSizerVS_Result->Add( m_staticTextWarning, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + + bSizerRight->Add( sbSizerVS_Result, 1, wxEXPAND|wxALL, 5 ); + + m_buttonViaReset = new wxButton( m_panelViaSize, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerRight->Add( m_buttonViaReset, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizerViaSize->Add( bSizerRight, 1, wxEXPAND, 5 ); + + + m_panelViaSize->SetSizer( bSizerViaSize ); + m_panelViaSize->Layout(); + bSizerViaSize->Fit( m_panelViaSize ); + m_Notebook->AddPage( m_panelViaSize, _("Via Size"), false ); + m_panelTrackWidth = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizerTrackWidth; + bSizerTrackWidth = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizeLeft; + bSizeLeft = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* sbSizerTW_Prms; + sbSizerTW_Prms = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("Parameters:") ), wxVERTICAL ); + + wxFlexGridSizer* fgSizerTWprms; + fgSizerTWprms = new wxFlexGridSizer( 4, 3, 0, 0 ); + fgSizerTWprms->AddGrowableCol( 1 ); + fgSizerTWprms->SetFlexibleDirection( wxBOTH ); + fgSizerTWprms->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextCurrent = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Current:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextCurrent->Wrap( -1 ); + m_staticTextCurrent->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + + fgSizerTWprms->Add( m_staticTextCurrent, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxALIGN_RIGHT, 5 ); + + m_TrackCurrentValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTWprms->Add( m_TrackCurrentValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + m_staticText62 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("A"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText62->Wrap( -1 ); + fgSizerTWprms->Add( m_staticText62, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText63 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Temperature rise:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText63->Wrap( -1 ); + fgSizerTWprms->Add( m_staticText63, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_TrackDeltaTValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTWprms->Add( m_TrackDeltaTValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + + m_staticText64 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("deg C"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText64->Wrap( -1 ); + fgSizerTWprms->Add( m_staticText64, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticText66 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Conductor length:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText66->Wrap( -1 ); + fgSizerTWprms->Add( m_staticText66, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 ); + + m_TrackLengthValue = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTWprms->Add( m_TrackLengthValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + wxArrayString m_TW_CuLength_choiceUnitChoices; + m_TW_CuLength_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_CuLength_choiceUnitChoices, 0 ); + m_TW_CuLength_choiceUnit->SetSelection( 0 ); + fgSizerTWprms->Add( m_TW_CuLength_choiceUnit, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + m_TWResistivity = new wxTextCtrl( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTWprms->Add( m_TWResistivity, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + m_staticText103 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Resistivity:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText103->Wrap( -1 ); + fgSizerTWprms->Add( m_staticText103, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_staticText104 = new wxStaticText( sbSizerTW_Prms->GetStaticBox(), wxID_ANY, _("Ohm-meter"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText104->Wrap( -1 ); + fgSizerTWprms->Add( m_staticText104, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + sbSizerTW_Prms->Add( fgSizerTWprms, 0, wxEXPAND, 5 ); + + + bSizeLeft->Add( sbSizerTW_Prms, 0, wxALL|wxEXPAND, 5 ); + + m_htmlWinFormulas = new wxHtmlWindow( m_panelTrackWidth, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO|wxBORDER_SIMPLE ); + bSizeLeft->Add( m_htmlWinFormulas, 1, wxTOP|wxEXPAND, 5 ); + + + bSizerTrackWidth->Add( bSizeLeft, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizeRight; + bSizeRight = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* sbSizerTW_Result; + sbSizerTW_Result = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("External layer traces:") ), wxVERTICAL ); + + wxFlexGridSizer* fgSizerTW_Results; + fgSizerTW_Results = new wxFlexGridSizer( 0, 3, 0, 0 ); + fgSizerTW_Results->AddGrowableCol( 1 ); + fgSizerTW_Results->SetFlexibleDirection( wxBOTH ); + fgSizerTW_Results->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextExtWidth = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Trace width:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextExtWidth->Wrap( -1 ); + m_staticTextExtWidth->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + + fgSizerTW_Results->Add( m_staticTextExtWidth, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT, 5 ); + + m_ExtTrackWidthValue = new wxTextCtrl( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTW_Results->Add( m_ExtTrackWidthValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + + wxArrayString m_TW_ExtTrackWidth_choiceUnitChoices; + m_TW_ExtTrackWidth_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_ExtTrackWidth_choiceUnitChoices, 0 ); + m_TW_ExtTrackWidth_choiceUnit->SetSelection( 0 ); + fgSizerTW_Results->Add( m_TW_ExtTrackWidth_choiceUnit, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + + m_staticText65 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Trace thickness:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText65->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticText65, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT, 5 ); + + m_ExtTrackThicknessValue = new wxTextCtrl( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTW_Results->Add( m_ExtTrackThicknessValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + + wxArrayString m_ExtTrackThicknessUnitChoices; + m_ExtTrackThicknessUnit = new UNIT_SELECTOR_THICKNESS( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ExtTrackThicknessUnitChoices, 0 ); + m_ExtTrackThicknessUnit->SetSelection( 0 ); + fgSizerTW_Results->Add( m_ExtTrackThicknessUnit, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_staticline3 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + fgSizerTW_Results->Add( m_staticline3, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + + m_staticline4 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + fgSizerTW_Results->Add( m_staticline4, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + + m_staticline5 = new wxStaticLine( sbSizerTW_Result->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + fgSizerTW_Results->Add( m_staticline5, 0, wxEXPAND|wxTOP|wxBOTTOM, 5 ); + + m_staticTextArea = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Cross-section area:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextArea->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticTextArea, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_ExtTrackAreaValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ExtTrackAreaValue->Wrap( -1 ); + fgSizerTW_Results->Add( m_ExtTrackAreaValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + + m_ExtTrackAreaUnitLabel = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("mm ^ 2"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ExtTrackAreaUnitLabel->Wrap( -1 ); + fgSizerTW_Results->Add( m_ExtTrackAreaUnitLabel, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticText651 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText651->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticText651, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_ExtTrackResistValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ExtTrackResistValue->Wrap( -1 ); + fgSizerTW_Results->Add( m_ExtTrackResistValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_staticText84 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText84->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticText84, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticText661 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText661->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticText661, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_ExtTrackVDropValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ExtTrackVDropValue->Wrap( -1 ); + fgSizerTW_Results->Add( m_ExtTrackVDropValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + + m_staticText83 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Volt"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText83->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticText83, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticText79 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText79->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticText79, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_ExtTrackLossValue = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_ExtTrackLossValue->Wrap( -1 ); + fgSizerTW_Results->Add( m_ExtTrackLossValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + m_staticText791 = new wxStaticText( sbSizerTW_Result->GetStaticBox(), wxID_ANY, _("Watt"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText791->Wrap( -1 ); + fgSizerTW_Results->Add( m_staticText791, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + sbSizerTW_Result->Add( fgSizerTW_Results, 0, wxEXPAND, 5 ); + + + bSizeRight->Add( sbSizerTW_Result, 1, wxEXPAND|wxALL, 5 ); + + wxStaticBoxSizer* sbSizerTW_Result1; + sbSizerTW_Result1 = new wxStaticBoxSizer( new wxStaticBox( m_panelTrackWidth, wxID_ANY, _("Internal layer traces:") ), wxVERTICAL ); + + wxFlexGridSizer* fgSizerTW_Results1; + fgSizerTW_Results1 = new wxFlexGridSizer( 6, 3, 0, 0 ); + fgSizerTW_Results1->AddGrowableCol( 1 ); + fgSizerTW_Results1->SetFlexibleDirection( wxBOTH ); + fgSizerTW_Results1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextIntWidth = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Trace width:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextIntWidth->Wrap( -1 ); + m_staticTextIntWidth->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); + + fgSizerTW_Results1->Add( m_staticTextIntWidth, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_IntTrackWidthValue = new wxTextCtrl( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTW_Results1->Add( m_IntTrackWidthValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 ); + + wxArrayString m_TW_IntTrackWidth_choiceUnitChoices; + m_TW_IntTrackWidth_choiceUnit = new UNIT_SELECTOR_LEN( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_TW_IntTrackWidth_choiceUnitChoices, 0 ); + m_TW_IntTrackWidth_choiceUnit->SetSelection( 0 ); + fgSizerTW_Results1->Add( m_TW_IntTrackWidth_choiceUnit, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_staticText652 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Trace thickness:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText652->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticText652, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_IntTrackThicknessValue = new wxTextCtrl( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerTW_Results1->Add( m_IntTrackThicknessValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + wxArrayString m_IntTrackThicknessUnitChoices; + m_IntTrackThicknessUnit = new UNIT_SELECTOR_THICKNESS( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_IntTrackThicknessUnitChoices, 0 ); + m_IntTrackThicknessUnit->SetSelection( 0 ); + fgSizerTW_Results1->Add( m_IntTrackThicknessUnit, 0, wxALL, 5 ); + + m_staticTextArea1 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Cross-section area:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextArea1->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticTextArea1, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_IntTrackAreaValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_IntTrackAreaValue->Wrap( -1 ); + fgSizerTW_Results1->Add( m_IntTrackAreaValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + + m_IntTrackAreaUnitLabel = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("mm ^ 2"), wxDefaultPosition, wxDefaultSize, 0 ); + m_IntTrackAreaUnitLabel->Wrap( -1 ); + fgSizerTW_Results1->Add( m_IntTrackAreaUnitLabel, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticText6511 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Resistance:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText6511->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticText6511, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_IntTrackResistValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_IntTrackResistValue->Wrap( -1 ); + fgSizerTW_Results1->Add( m_IntTrackResistValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + + m_staticText841 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Ohm"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText841->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticText841, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticText6611 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Voltage drop:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText6611->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticText6611, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5 ); + + m_IntTrackVDropValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_IntTrackVDropValue->Wrap( -1 ); + fgSizerTW_Results1->Add( m_IntTrackVDropValue, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL, 5 ); + + m_staticText831 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Volt"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText831->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticText831, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_staticText792 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Power loss:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText792->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticText792, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + m_IntTrackLossValue = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 ); + m_IntTrackLossValue->Wrap( -1 ); + fgSizerTW_Results1->Add( m_IntTrackLossValue, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 5 ); + + m_staticText7911 = new wxStaticText( sbSizerTW_Result1->GetStaticBox(), wxID_ANY, _("Watt"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText7911->Wrap( -1 ); + fgSizerTW_Results1->Add( m_staticText7911, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); + + + sbSizerTW_Result1->Add( fgSizerTW_Results1, 0, wxEXPAND, 5 ); + + + bSizeRight->Add( sbSizerTW_Result1, 1, wxEXPAND|wxALL, 5 ); + + m_buttonTrackWidthReset = new wxButton( m_panelTrackWidth, wxID_ANY, _("Reset to Defaults"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizeRight->Add( m_buttonTrackWidthReset, 0, wxALIGN_RIGHT|wxALL, 5 ); + + + bSizerTrackWidth->Add( bSizeRight, 0, wxEXPAND, 5 ); + + + m_panelTrackWidth->SetSizer( bSizerTrackWidth ); + m_panelTrackWidth->Layout(); + bSizerTrackWidth->Fit( m_panelTrackWidth ); + m_Notebook->AddPage( m_panelTrackWidth, _("Track Width"), false ); + m_panelElectricalSpacing = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + wxBoxSizer* bSizerElectricalClearance; + bSizerElectricalClearance = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bLeftSizerElectricalClearance; + bLeftSizerElectricalClearance = new wxBoxSizer( wxVERTICAL ); + + wxArrayString m_ElectricalSpacingUnitsSelectorChoices; + m_ElectricalSpacingUnitsSelector = new UNIT_SELECTOR_LEN( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ElectricalSpacingUnitsSelectorChoices, 0 ); + m_ElectricalSpacingUnitsSelector->SetSelection( -1 ); + bLeftSizerElectricalClearance->Add( m_ElectricalSpacingUnitsSelector, 0, wxALL|wxEXPAND, 5 ); + + m_staticline2 = new wxStaticLine( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL ); + bLeftSizerElectricalClearance->Add( m_staticline2, 0, wxEXPAND | wxALL, 5 ); + + m_staticText891 = new wxStaticText( m_panelElectricalSpacing, wxID_ANY, _("Voltage > 500V:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText891->Wrap( -1 ); + bLeftSizerElectricalClearance->Add( m_staticText891, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_ElectricalSpacingVoltage = new wxTextCtrl( m_panelElectricalSpacing, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bLeftSizerElectricalClearance->Add( m_ElectricalSpacingVoltage, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_buttonElectSpacingRefresh = new wxButton( m_panelElectricalSpacing, wxID_ANY, _("Update Values"), wxDefaultPosition, wxDefaultSize, 0 ); + bLeftSizerElectricalClearance->Add( m_buttonElectSpacingRefresh, 0, wxALL|wxEXPAND, 5 ); + + + bSizerElectricalClearance->Add( bLeftSizerElectricalClearance, 0, wxEXPAND, 5 ); + + wxBoxSizer* bElectricalSpacingSizerRight; + bElectricalSpacingSizerRight = new wxBoxSizer( wxVERTICAL ); + + m_staticTextElectricalSpacing = new wxStaticText( m_panelElectricalSpacing, wxID_ANY, _("Note: Values are minimal values (from IPC 2221)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextElectricalSpacing->Wrap( -1 ); + m_staticTextElectricalSpacing->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + + bElectricalSpacingSizerRight->Add( m_staticTextElectricalSpacing, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_gridElectricalSpacingValues = new wxGrid( m_panelElectricalSpacing, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + + // Grid + m_gridElectricalSpacingValues->CreateGrid( 10, 7 ); + m_gridElectricalSpacingValues->EnableEditing( false ); + m_gridElectricalSpacingValues->EnableGridLines( true ); + m_gridElectricalSpacingValues->EnableDragGridSize( false ); + m_gridElectricalSpacingValues->SetMargins( 0, 0 ); + + // Columns + m_gridElectricalSpacingValues->EnableDragColMove( false ); + m_gridElectricalSpacingValues->EnableDragColSize( true ); + m_gridElectricalSpacingValues->SetColLabelSize( 70 ); + m_gridElectricalSpacingValues->SetColLabelValue( 0, _("B1") ); + m_gridElectricalSpacingValues->SetColLabelValue( 1, _("B2") ); + m_gridElectricalSpacingValues->SetColLabelValue( 2, _("B3") ); + m_gridElectricalSpacingValues->SetColLabelValue( 3, _("B4") ); + m_gridElectricalSpacingValues->SetColLabelValue( 4, _("A5") ); + m_gridElectricalSpacingValues->SetColLabelValue( 5, _("A6") ); + m_gridElectricalSpacingValues->SetColLabelValue( 6, _("A7") ); + m_gridElectricalSpacingValues->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); + + // Rows + m_gridElectricalSpacingValues->AutoSizeRows(); + m_gridElectricalSpacingValues->EnableDragRowSize( false ); + m_gridElectricalSpacingValues->SetRowLabelSize( 100 ); + m_gridElectricalSpacingValues->SetRowLabelValue( 0, _("0 ... 15V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 1, _("16 ... 30V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 2, _("31 ... 50V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 3, _("51 ... 100V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 4, _("101 ... 150V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 5, _("151 ... 170V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 6, _("171 ... 250V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 7, _("251 ... 300V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 8, _("301 ... 500V") ); + m_gridElectricalSpacingValues->SetRowLabelValue( 9, _(" > 500V") ); + m_gridElectricalSpacingValues->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER ); + + // Label Appearance + + // Cell Defaults + m_gridElectricalSpacingValues->SetDefaultCellAlignment( wxALIGN_CENTER, wxALIGN_TOP ); + bElectricalSpacingSizerRight->Add( m_gridElectricalSpacingValues, 0, wxALL|wxEXPAND, 5 ); + + 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 ); + m_staticText88->Wrap( -1 ); + bElectricalSpacingSizerRight->Add( m_staticText88, 0, wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bSizerElectricalClearance->Add( bElectricalSpacingSizerRight, 1, wxEXPAND, 5 ); + + + m_panelElectricalSpacing->SetSizer( bSizerElectricalClearance ); + m_panelElectricalSpacing->Layout(); + bSizerElectricalClearance->Fit( m_panelElectricalSpacing ); + m_Notebook->AddPage( m_panelElectricalSpacing, _("Electrical Spacing"), false ); m_panelBoardClass = new wxPanel( m_Notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxBoxSizer* bSizerBoardClass; bSizerBoardClass = new wxBoxSizer( wxHORIZONTAL ); @@ -1688,7 +1880,6 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow this->SetSizer( bmainFrameSizer ); this->Layout(); - bmainFrameSizer->Fit( this ); this->Centre( wxBOTH ); @@ -1702,20 +1893,23 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow m_buttonEditItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnEditRegulator ), NULL, this ); m_buttonAddItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAddRegulator ), NULL, this ); m_buttonRemoveItem->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRemoveRegulator ), NULL, this ); - m_TrackCurrentValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromCurrent ), NULL, this ); - m_TrackDeltaTValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_TrackLengthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_TW_CuLength_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_TWResistivity->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_ExtTrackWidthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromExtWidth ), NULL, this ); - m_TW_ExtTrackWidth_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_ExtTrackThicknessValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_ExtTrackThicknessUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_IntTrackWidthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromIntWidth ), NULL, this ); - m_TW_IntTrackWidth_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_IntTrackThicknessValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_IntTrackThicknessUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_buttonTrackWidthReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWResetButtonClick ), NULL, this ); + m_AttenuatorsSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAttenuatorSelection ), NULL, this ); + m_panelDisplayAttenuator->Connect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintAttenuatorPanel ), NULL, this ); + m_buttonAlcAtt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); + m_bpButtonCalcAtt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); + m_rbESerieSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESerieSelection ), NULL, this ); + m_buttonEScalculate->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateESeries ), NULL, this ); + m_rbToleranceSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnToleranceSelection ), NULL, this ); + m_TranslineSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSelection ), NULL, this ); + m_panelDisplayshape->Connect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintTranslinePanel ), NULL, this ); + m_button_EpsilonR->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineEpsilonR_Button ), NULL, this ); + m_button_TanD->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineTanD_Button ), NULL, this ); + m_button_Rho->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineRho_Button ), NULL, this ); + m_bpButtonAnalyze->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); + m_AnalyseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); + m_SynthetizeButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); + m_bpButtonSynthetize->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); + m_buttonTransLineReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTransLineResetButtonClick ), NULL, this ); m_textCtrlHoleDia->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); m_choiceHoleDia->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); m_textCtrlPlatingThickness->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); @@ -1737,23 +1931,22 @@ PCB_CALCULATOR_FRAME_BASE::PCB_CALCULATOR_FRAME_BASE( wxWindow* parent, wxWindow m_textCtrlRiseTime->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); m_staticTextWarning->Connect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PCB_CALCULATOR_FRAME_BASE::onUpdateViaCalcErrorText ), NULL, this ); m_buttonViaReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaResetButtonClick ), NULL, this ); + m_TrackCurrentValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromCurrent ), NULL, this ); + m_TrackDeltaTValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_TrackLengthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_TW_CuLength_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_TWResistivity->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_ExtTrackWidthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromExtWidth ), NULL, this ); + m_TW_ExtTrackWidth_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_ExtTrackThicknessValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_ExtTrackThicknessUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_IntTrackWidthValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromIntWidth ), NULL, this ); + m_TW_IntTrackWidth_choiceUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_IntTrackThicknessValue->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_IntTrackThicknessUnit->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_buttonTrackWidthReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWResetButtonClick ), NULL, this ); m_ElectricalSpacingUnitsSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingUnitsSelection ), NULL, this ); m_buttonElectSpacingRefresh->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingRefresh ), NULL, this ); - m_TranslineSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSelection ), NULL, this ); - m_panelDisplayshape->Connect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintTranslinePanel ), NULL, this ); - m_button_EpsilonR->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineEpsilonR_Button ), NULL, this ); - m_button_TanD->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineTanD_Button ), NULL, this ); - m_button_Rho->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineRho_Button ), NULL, this ); - m_bpButtonAnalyze->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); - m_AnalyseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); - m_SynthetizeButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); - m_bpButtonSynthetize->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); - m_buttonTransLineReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTransLineResetButtonClick ), NULL, this ); - m_AttenuatorsSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAttenuatorSelection ), NULL, this ); - m_panelDisplayAttenuator->Connect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintAttenuatorPanel ), NULL, this ); - m_buttonAlcAtt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); - m_bpButtonCalcAtt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); - m_rbToleranceSelection->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnToleranceSelection ), NULL, this ); m_BoardClassesUnitsSelector->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnBoardClassesUnitsSelection ), NULL, this ); } @@ -1769,20 +1962,23 @@ PCB_CALCULATOR_FRAME_BASE::~PCB_CALCULATOR_FRAME_BASE() m_buttonEditItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnEditRegulator ), NULL, this ); m_buttonAddItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAddRegulator ), NULL, this ); m_buttonRemoveItem->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnRemoveRegulator ), NULL, this ); - m_TrackCurrentValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromCurrent ), NULL, this ); - m_TrackDeltaTValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_TrackLengthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_TW_CuLength_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_TWResistivity->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_ExtTrackWidthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromExtWidth ), NULL, this ); - m_TW_ExtTrackWidth_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_ExtTrackThicknessValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_ExtTrackThicknessUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_IntTrackWidthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromIntWidth ), NULL, this ); - m_TW_IntTrackWidth_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_IntTrackThicknessValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_IntTrackThicknessUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); - m_buttonTrackWidthReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWResetButtonClick ), NULL, this ); + m_AttenuatorsSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAttenuatorSelection ), NULL, this ); + m_panelDisplayAttenuator->Disconnect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintAttenuatorPanel ), NULL, this ); + m_buttonAlcAtt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); + m_bpButtonCalcAtt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); + m_rbESerieSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnESerieSelection ), NULL, this ); + m_buttonEScalculate->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateESeries ), NULL, this ); + m_rbToleranceSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnToleranceSelection ), NULL, this ); + m_TranslineSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSelection ), NULL, this ); + m_panelDisplayshape->Disconnect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintTranslinePanel ), NULL, this ); + m_button_EpsilonR->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineEpsilonR_Button ), NULL, this ); + m_button_TanD->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineTanD_Button ), NULL, this ); + m_button_Rho->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineRho_Button ), NULL, this ); + m_bpButtonAnalyze->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); + m_AnalyseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); + m_SynthetizeButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); + m_bpButtonSynthetize->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); + m_buttonTransLineReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTransLineResetButtonClick ), NULL, this ); m_textCtrlHoleDia->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); m_choiceHoleDia->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); m_textCtrlPlatingThickness->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); @@ -1804,23 +2000,22 @@ PCB_CALCULATOR_FRAME_BASE::~PCB_CALCULATOR_FRAME_BASE() m_textCtrlRiseTime->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaCalculate ), NULL, this ); m_staticTextWarning->Disconnect( wxEVT_UPDATE_UI, wxUpdateUIEventHandler( PCB_CALCULATOR_FRAME_BASE::onUpdateViaCalcErrorText ), NULL, this ); m_buttonViaReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnViaResetButtonClick ), NULL, this ); + m_TrackCurrentValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromCurrent ), NULL, this ); + m_TrackDeltaTValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_TrackLengthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_TW_CuLength_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_TWResistivity->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_ExtTrackWidthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromExtWidth ), NULL, this ); + m_TW_ExtTrackWidth_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_ExtTrackThicknessValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_ExtTrackThicknessUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_IntTrackWidthValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWCalculateFromIntWidth ), NULL, this ); + m_TW_IntTrackWidth_choiceUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_IntTrackThicknessValue->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_IntTrackThicknessUnit->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWParametersChanged ), NULL, this ); + m_buttonTrackWidthReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTWResetButtonClick ), NULL, this ); m_ElectricalSpacingUnitsSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingUnitsSelection ), NULL, this ); m_buttonElectSpacingRefresh->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnElectricalSpacingRefresh ), NULL, this ); - m_TranslineSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSelection ), NULL, this ); - m_panelDisplayshape->Disconnect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintTranslinePanel ), NULL, this ); - m_button_EpsilonR->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineEpsilonR_Button ), NULL, this ); - m_button_TanD->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineTanD_Button ), NULL, this ); - m_button_Rho->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineRho_Button ), NULL, this ); - m_bpButtonAnalyze->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); - m_AnalyseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineAnalyse ), NULL, this ); - m_SynthetizeButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); - m_bpButtonSynthetize->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTranslineSynthetize ), NULL, this ); - m_buttonTransLineReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnTransLineResetButtonClick ), NULL, this ); - m_AttenuatorsSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnAttenuatorSelection ), NULL, this ); - m_panelDisplayAttenuator->Disconnect( wxEVT_PAINT, wxPaintEventHandler( PCB_CALCULATOR_FRAME_BASE::OnPaintAttenuatorPanel ), NULL, this ); - m_buttonAlcAtt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); - m_bpButtonCalcAtt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnCalculateAttenuator ), NULL, this ); - m_rbToleranceSelection->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnToleranceSelection ), NULL, this ); m_BoardClassesUnitsSelector->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( PCB_CALCULATOR_FRAME_BASE::OnBoardClassesUnitsSelection ), NULL, this ); } diff --git a/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp b/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp index b48ccdd154..2d5b65450b 100644 --- a/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp +++ b/pcb_calculator/dialogs/pcb_calculator_frame_base.fbp @@ -45,7 +45,7 @@ PCB_CALCULATOR_FRAME_BASE - -1,-1 + 999,715 wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER KIWAY_PLAYER; kiway_player.h PCB Calculator @@ -2534,7 +2534,7 @@ - Track Width + RF Attenuators 0 1 @@ -2571,7 +2571,7 @@ 0 1 - m_panelTrackWidth + m_panelAttenuators 1 @@ -2589,27 +2589,163 @@ wxTAB_TRAVERSAL - bSizerTrackWidth + bSizerAtt wxHORIZONTAL none 5 wxEXPAND - 1 + 0 - bSizeLeft + bLeftSizerAtt wxVERTICAL none 5 - wxALL|wxEXPAND + wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + "PI" "Tee" "Bridged Tee" "Resistive Splitter" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Attenuators: + 1 + + 0 + + + 0 + + 1 + m_AttenuatorsSelection + 1 + + + protected + 1 + + Resizable + 0 + 1 + + wxRA_SPECIFY_COLS + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnAttenuatorSelection + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + -1,-1 + 1 + m_panelDisplayAttenuator + 1 + + + protected + 1 + + Resizable + 1 + 256,256 + + 0 + + + + wxTAB_TRAVERSAL|wxBORDER_SIMPLE + OnPaintAttenuatorPanel + + + + + + 5 + wxEXPAND + 0 + + + bMiddleSizerAtt + wxVERTICAL + none + + 5 + wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT 0 wxID_ANY Parameters: - sbSizerTW_Prms + sbSizerAttPrms wxVERTICAL 1 none @@ -2620,18 +2756,18 @@ 3 wxBOTH - 1 - + + 1 0 - fgSizerTWprms + fgSizerAttPrms wxFLEX_GROWMODE_SPECIFIED none - 4 + 3 0 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxALIGN_RIGHT + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL 0 1 @@ -2657,11 +2793,11 @@ 1 1 - ,90,90,-1,70,0 + 0 0 wxID_ANY - Current: + Attenuation 0 0 @@ -2670,7 +2806,7 @@ 0 1 - m_staticTextCurrent + m_attenuationLabel 1 @@ -2692,7 +2828,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + wxTOP|wxRIGHT|wxLEFT 0 1 @@ -2730,7 +2866,7 @@ 0 1 - m_TrackCurrentValue + m_AttValueCtrl 1 @@ -2752,7 +2888,6 @@ - OnTWCalculateFromCurrent @@ -2787,7 +2922,7 @@ 0 0 wxID_ANY - A + dB 0 0 @@ -2796,7 +2931,7 @@ 0 1 - m_staticText62 + m_attUnit 1 @@ -2816,132 +2951,6 @@ -1 - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Temperature rise: - 0 - - 0 - - - 0 - - 1 - m_staticText63 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_TrackDeltaTValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnTWParametersChanged - - 5 wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL @@ -2974,7 +2983,7 @@ 0 0 wxID_ANY - deg C + Zin 0 0 @@ -2983,7 +2992,7 @@ 0 1 - m_staticText64 + m_attenuationZinLabel 1 @@ -3005,68 +3014,7 @@ 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Conductor length: - 0 - - 0 - - - 0 - - 1 - m_staticText66 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + wxTOP|wxRIGHT|wxLEFT 0 1 @@ -3104,7 +3052,7 @@ 0 1 - m_TrackLengthValue + m_ZinValueCtrl 1 @@ -3126,77 +3074,11 @@ - OnTWParametersChanged 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_TW_CuLength_choiceUnit - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTWParametersChanged - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL 0 1 @@ -3226,7 +3108,7 @@ 0 0 wxID_ANY - Resistivity: + Ohms 0 0 @@ -3235,7 +3117,7 @@ 0 1 - m_staticText103 + m_attZinUnit 1 @@ -3257,7 +3139,68 @@ 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Zout + 0 + + 0 + + + 0 + + 1 + m_ZoutLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL 0 1 @@ -3295,7 +3238,7 @@ 0 1 - m_TWResistivity + m_ZoutValueCtrl 1 @@ -3317,12 +3260,11 @@ - OnTWParametersChanged 5 - wxALIGN_CENTER_VERTICAL|wxALL + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL 0 1 @@ -3352,7 +3294,7 @@ 0 0 wxID_ANY - Ohm-meter + Ohms 0 0 @@ -3361,7 +3303,7 @@ 0 1 - m_staticText104 + m_attZoutUnit 1 @@ -3387,7 +3329,815 @@ 5 - wxTOP|wxEXPAND + wxALIGN_CENTER_HORIZONTAL + 0 + + + bSizerAttButt + wxHORIZONTAL + none + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Calculate + + 0 + + 0 + + + 0 + + 1 + m_buttonAlcAtt + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnCalculateAttenuator + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/arrow_bottom.xpm + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Calculate + + 0 + + 0 + + + 0 + + 1 + m_bpButtonCalcAtt + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnCalculateAttenuator + + + + + + 5 + wxEXPAND|wxTOP + 0 + + wxID_ANY + Values + + sbSizerAttValues + wxVERTICAL + 1 + none + + 5 + wxEXPAND|wxTOP|wxBOTTOM + 0 + + 3 + wxBOTH + + 1 + 0 + + fgSizerAttResults + wxFLEX_GROWMODE_SPECIFIED + none + 3 + 0 + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + R1 + 0 + + 0 + + + 0 + + 1 + m_attenuatorR1Label + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_Att_R1_Value + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Ohms + 0 + + 0 + + + 0 + + 1 + m_attR1Unit + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + R2 + 0 + + 0 + + + 0 + + 1 + m_attenuatorR2Label + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_Att_R2_Value + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Ohms + 0 + + 0 + + + 0 + + 1 + m_attR2Unit1 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + R3 + 0 + + 0 + + + 0 + + 1 + m_attenuatorR3Label + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_Att_R3_Value + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Ohms + 0 + + 0 + + + 0 + + 1 + m_attR3Unit + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Messages: + 0 + + 0 + + + 0 + + 1 + m_staticTextAttMsg + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxEXPAND 1 1 @@ -3424,7 +4174,7 @@ 0 1 - m_htmlWinFormulas + m_Attenuator_Messages 1 @@ -3447,2484 +4197,21 @@ 5 - wxEXPAND - 0 - + wxEXPAND|wxTOP|wxBOTTOM + 1 + + wxID_ANY + Formula - bSizeRight + sbRightSizerFormula wxVERTICAL + 1 none 5 - wxEXPAND|wxALL + wxALL|wxEXPAND 1 - - wxID_ANY - External layer traces: - - sbSizerTW_Result - wxVERTICAL - 1 - none - - 5 - wxEXPAND - 0 - - 3 - wxBOTH - 1 - - 0 - - fgSizerTW_Results - wxFLEX_GROWMODE_SPECIFIED - none - 0 - 0 - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,90,-1,70,0 - 0 - 0 - wxID_ANY - Trace width: - 0 - - 0 - - - 0 - - 1 - m_staticTextExtWidth - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_ExtTrackWidthValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnTWCalculateFromExtWidth - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_TW_ExtTrackWidth_choiceUnit - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTWParametersChanged - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Trace thickness: - 0 - - 0 - - - 0 - - 1 - m_staticText65 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_ExtTrackThicknessValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnTWParametersChanged - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_ExtTrackThicknessUnit - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_THICKNESS; UnitSelector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTWParametersChanged - - - - 5 - wxEXPAND|wxTOP|wxBOTTOM - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline3 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - - 0 - - - - - - - - 5 - wxEXPAND|wxTOP|wxBOTTOM - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline4 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - - 0 - - - - - - - - 5 - wxEXPAND|wxTOP|wxBOTTOM - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline5 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - - 0 - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Cross-section area: - 0 - - 0 - - - 0 - - 1 - m_staticTextArea - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ExtTrackAreaValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - mm ^ 2 - 0 - - 0 - - - 0 - - 1 - m_ExtTrackAreaUnitLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Resistance: - 0 - - 0 - - - 0 - - 1 - m_staticText651 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ExtTrackResistValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Ohm - 0 - - 0 - - - 0 - - 1 - m_staticText84 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Voltage drop: - 0 - - 0 - - - 0 - - 1 - m_staticText661 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ExtTrackVDropValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Volt - 0 - - 0 - - - 0 - - 1 - m_staticText83 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Power loss: - 0 - - 0 - - - 0 - - 1 - m_staticText79 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ExtTrackLossValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Watt - 0 - - 0 - - - 0 - - 1 - m_staticText791 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - 5 - wxEXPAND|wxALL - 1 - - wxID_ANY - Internal layer traces: - - sbSizerTW_Result1 - wxVERTICAL - 1 - none - - 5 - wxEXPAND - 0 - - 3 - wxBOTH - 1 - - 0 - - fgSizerTW_Results1 - wxFLEX_GROWMODE_SPECIFIED - none - 6 - 0 - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,90,-1,70,0 - 0 - 0 - wxID_ANY - Trace width: - 0 - - 0 - - - 0 - - 1 - m_staticTextIntWidth - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_IntTrackWidthValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnTWCalculateFromIntWidth - - - - 5 - wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_TW_IntTrackWidth_choiceUnit - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTWParametersChanged - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Trace thickness: - 0 - - 0 - - - 0 - - 1 - m_staticText652 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_IntTrackThicknessValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnTWParametersChanged - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_IntTrackThicknessUnit - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_THICKNESS; UnitSelector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnTWParametersChanged - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Cross-section area: - 0 - - 0 - - - 0 - - 1 - m_staticTextArea1 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_IntTrackAreaValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - mm ^ 2 - 0 - - 0 - - - 0 - - 1 - m_IntTrackAreaUnitLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Resistance: - 0 - - 0 - - - 0 - - 1 - m_staticText6511 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_IntTrackResistValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Ohm - 0 - - 0 - - - 0 - - 1 - m_staticText841 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Voltage drop: - 0 - - 0 - - - 0 - - 1 - m_staticText6611 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_IntTrackVDropValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Volt - 0 - - 0 - - - 0 - - 1 - m_staticText831 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Power loss: - 0 - - 0 - - - 0 - - 1 - m_staticText792 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_IntTrackLossValue - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Watt - 0 - - 0 - - - 0 - - 1 - m_staticText7911 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - - - - - 5 - wxALIGN_RIGHT|wxALL - 0 - + 1 1 1 @@ -5935,31 +4222,23 @@ - 1 0 1 1 - - 0 0 - Dock 0 Left 1 1 - 0 0 wxID_ANY - Reset to Defaults - - 0 0 @@ -5967,30 +4246,23 @@ 0 1 - m_buttonTrackWidthReset + m_panelAttFormula 1 protected 1 - - Resizable 1 - - ; ; forward_declare + wxHW_SCROLLBAR_AUTO + 0 - - wxFILTER_NONE - wxDefaultValidator - - OnTWResetButtonClick @@ -5998,9 +4270,9 @@ - + - Via Size + E-Series 1 1 @@ -6037,7 +4309,7 @@ 0 1 - m_panelViaSize + m_panelESeries 1 @@ -6055,2280 +4327,121 @@ wxTAB_TRAVERSAL - bSizerViaSize - wxHORIZONTAL + bSizerESerie + wxVERTICAL none 5 - wxEXPAND|wxALL - 1 - - wxID_ANY - Parameters: - - sbSizerVS_Inputs - wxVERTICAL - 1 + wxALIGN_CENTER + 0 + + -1,-1 + bUpperESerie + wxHORIZONTAL none 5 - wxEXPAND - 0 - - 3 - wxBOTH - 1 - - 0 + wxALIGN_CENTER|wxALIGN_CENTER_HORIZONTAL|wxTOP + 1 + - fgSizerVS_Inputs - wxFLEX_GROWMODE_SPECIFIED + bUpperSizerESeries1 + wxHORIZONTAL none - 0 - 0 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,90,90,-1,70,0 - 0 - 0 - wxID_ANY - Finished hole diameter (D): - 0 - - 0 - - - 0 + wxALIGN_CENTER + 1 + - 1 - m_staticTextHoleDia - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 + bSizer3811 + wxVERTICAL + none + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL|wxBOTTOM|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + E-Series Resistor Calculator + 0 + + 0 + + + 0 + + 1 + m_staticTextESeriesMsg111 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlHoleDia - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_choiceHoleDia - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plating thickness (T): - 0 - - 0 - - - 0 - - 1 - m_staticTextPlatingThickness - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlPlatingThickness - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_choicePlatingThickness - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Via length: - 0 - - 0 - - - 0 - - 1 - m_staticTextViaLength - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Via length is the board thickness for through hole vias - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlViaLength - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_choiceViaLength - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Via pad diameter: - 0 - - 0 - - - 0 - - 1 - m_staticTextViaPadDia - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Diameter of pad surrounding via (annular ring) - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlViaPadDia - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_choiceViaPadDia - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Clearance hole diameter: - 0 - - 0 - - - 0 - - 1 - m_staticTextClearanceDia - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Diameter of clearance hole in ground plane(s) - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlClearanceDia - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_choiceClearanceDia - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Z0: - 0 - - 0 - - - 0 - - 1 - m_staticTextImpedance - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Characteristic impedance of conductor - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlImpedance - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_choiceImpedance - 1 - - - protected - 1 - - Resizable - 0 - 1 - - - UNIT_SELECTOR_RESISTOR; UnitSelector.h; Not forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Applied current: - 0 - - 0 - - - 0 - - 1 - m_staticAppliedCurrent - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlAppliedCurrent - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - A - 0 - - 0 - - - 0 - - 1 - m_staticTextAppliedCurrentUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plating resistivity (Ohm.m): - 0 - - 0 - - - 0 - - 1 - m_staticTextResistivity - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Specific resistance in ohms * meters - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlPlatingResistivity - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 1 - - 1 - - - 0 - 0 - wxID_ANY - ... - - 0 - - 0 - - - 0 - - 1 - m_button_ResistivityVia - 1 - - - protected - 1 - - - - Resizable - 1 - - wxBU_EXACTFIT - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaRho_Button - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Er: - 0 - - 0 - - - 0 - - 1 - m_staticTextPermittivity - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Relative dielectric constant (epsilon r) - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlPlatingPermittivity - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 1 - - 1 - - - 0 - 0 - wxID_ANY - ... - - 0 - - 0 - - - 0 - - 1 - m_button_Permittivity - 1 - - - protected - 1 - - - - Resizable - 1 - - wxBU_EXACTFIT - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaEpsilonR_Button - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Temperature rise: - 0 - - 0 - - - 0 - - 1 - m_staticTextTemperatureDiff - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Maximum acceptable rise in temperature - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlTemperatureDiff - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - deg C - 0 - - 0 - - - 0 - - 1 - m_staticTextTemperatureUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Pulse rise time: - 0 - - 0 - - - 0 - - 1 - m_staticTextRiseTime - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Pulse rise time to calculate reactance - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_textCtrlRiseTime - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - OnViaCalculate - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - ns - 0 - - 0 - - - 0 - - 1 - m_staticTextRiseTimeUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - nanoseconds - - - - -1 - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline31 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - - 0 - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ../bitmaps/via.xpm - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_bitmap10 - 1 - - - protected - 1 - - Resizable - 1 - - ; ; forward_declare - 0 - Top view of via - - - 5 - wxEXPAND - 1 + wxEXPAND|wxTOP + 0 - bSizerRight - wxVERTICAL + bMiddleSizerESeries + wxHORIZONTAL none 5 - wxEXPAND|wxALL - 1 + wxRIGHT|wxTOP + 0 wxID_ANY - Results: + Inputs - sbSizerVS_Result + sbSizerESeriesInput wxVERTICAL 1 none @@ -8339,18 +4452,18 @@ 3 wxBOTH - 1 - + + 1 0 - fgSizerTW_Results11 + fgSizerAttPrms1 wxFLEX_GROWMODE_SPECIFIED none - 0 + 4 0 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL 0 1 @@ -8380,16 +4493,16 @@ 0 0 wxID_ANY - Resistance: + Required Resistance: 0 0 0 - + -1,-1 1 - m_staticTextArea11 + m_ESrequired 1 @@ -8411,9 +4524,9 @@ 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -8441,16 +4554,15 @@ 0 0 wxID_ANY - dummy - 0 0 + 0 0 1 - m_ViaResistance + m_ResRequired 1 @@ -8464,864 +4576,14 @@ 0 + + wxFILTER_NONE + wxDefaultValidator + + - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Ohm - 0 - - 0 - - - 0 - - 1 - m_IntTrackAreaUnitLabel1 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Voltage drop: - 0 - - 0 - - - 0 - - 1 - m_staticText65111 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ViaVoltageDrop - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Volt - 0 - - 0 - - - 0 - - 1 - m_staticText8411 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Power loss: - 0 - - 0 - - - 0 - - 1 - m_staticText66111 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ViaPowerLoss - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Watt - 0 - - 0 - - - 0 - - 1 - m_staticText8311 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Thermal resistance: - 0 - - 0 - - - 0 - - 1 - m_staticText79211 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Using thermal conductivity value 401 Watts/(meter-Kelvin) - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ViaThermalResistance - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - deg C/Watt - 0 - - 0 - - - 0 - - 1 - m_staticText791111 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Estimated ampacity: - 0 - - 0 - - - 0 - - 1 - m_staticTextAmpacity - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Based on temperature rise - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_ViaAmpacity - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - A - 0 - - 0 - - - 0 - - 1 - m_staticTextAmpacityUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Capacitance: - 0 - - 0 - - - 0 - - 1 - m_staticTextCapacitance - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 @@ -9356,7 +4618,7 @@ 0 0 wxID_ANY - dummy + KOhm 0 0 @@ -9365,7 +4627,68 @@ 0 1 - m_ViaCapacitance + m_UnitRegultR111 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Exclude Value 1: + 0 + + 0 + + + 0 + -1,-1 + 1 + m_ESrequired1 1 @@ -9389,7 +4712,7 @@ 5 wxALL 0 - + 1 1 1 @@ -9417,16 +4740,15 @@ 0 0 wxID_ANY - pF - 0 0 + 0 0 1 - m_staticTextCapacitanceUnits + m_ResExclude1 1 @@ -9439,72 +4761,15 @@ 0 - pico-Farad + + + wxFILTER_NONE + wxDefaultValidator + + - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Rise time degradation: - 0 - - 0 - - - 0 - - 1 - m_staticTextRiseTimeOutput - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Rise time degradation for given Z0 and calculated capacitance - - - - -1 @@ -9539,7 +4804,7 @@ 0 0 wxID_ANY - dummy + KOhm 0 0 @@ -9548,7 +4813,68 @@ 0 1 - m_RiseTimeOutput + m_UnitRegultR1111 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Exclude Value 2: + 0 + + 0 + + + 0 + -1,-1 + 1 + m_ESrequired11 1 @@ -9572,7 +4898,7 @@ 5 wxALL 0 - + 1 1 1 @@ -9600,77 +4926,15 @@ 0 0 wxID_ANY - ps - 0 0 + 0 0 1 - m_staticTextRiseTimeOutputUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - picoseconds - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Inductance: - 0 - - 0 - - - 0 - - 1 - m_staticTextInductance + m_ResExclude2 1 @@ -9684,10 +4948,14 @@ 0 + + wxFILTER_NONE + wxDefaultValidator + + - -1 @@ -9722,7 +4990,7 @@ 0 0 wxID_ANY - dummy + KOhm 0 0 @@ -9731,7 +4999,7 @@ 0 1 - m_Inductance + m_UnitRegultR1112 1 @@ -9753,9 +5021,9 @@ 5 - wxALL + wxALL|wxALIGN_CENTER_VERTICAL 0 - + 1 1 1 @@ -9769,6 +5037,7 @@ 1 0 + "E1" "E3" "E6" "E12" 1 1 @@ -9783,8 +5052,8 @@ 0 0 wxID_ANY - nH - 0 + Available Values: + 4 0 @@ -9792,7 +5061,7 @@ 0 1 - m_staticTextInductanceUnits + m_rbESerieSelection 1 @@ -9800,218 +5069,1104 @@ 1 Resizable + 2 1 - - - 0 - nano-Henry - - - - -1 - - - - 5 - wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Reactance: - 0 - - 0 - - - 0 - - 1 - m_staticTextReactance - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - Inductive reactance for given rise time and calculated inductance - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dummy - 0 - - 0 - - - 0 - - 1 - m_Reactance - 1 - - - protected - 1 - - Resizable - 1 - - + wxRA_SPECIFY_COLS 0 + + wxFILTER_NONE + wxDefaultValidator + - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Ohm - 0 - - 0 - - - 0 - - 1 - m_staticTextReactanceUnits - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 + OnESerieSelection + + + + 5 + wxRIGHT|wxTOP + 0 + + wxID_ANY + Solutions + + sbSizerESeriesSolutions + wxVERTICAL + 1 + none 5 - + wxEXPAND|wxTOP|wxBOTTOM 0 - - 30 - protected - 30 + + 5 + wxBOTH + + 1 + 0 + + fgSizerESerieResults + wxFLEX_GROWMODE_SPECIFIED + none + 6 + 0 + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Simple Solution: + 0 + + 0 + + + 0 + + 1 + m_ESerieSimpleSolution + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxTOP|wxRIGHT|wxLEFT|wxALIGN_BOTTOM + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + 150,-1 + 1 + m_ESeries_Sol2R + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Error: + 0 + + 0 + + + 0 + + 1 + m_ESeriesSimpleErr + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_ESeriesError2R + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + 0 + + 0 + + + 0 + + 1 + m_ESeriesSimplePercent + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 3R Solution: + 0 + + 0 + + + 0 + + 1 + m_ESerie3RSolution1 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_BOTTOM + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + 220,-1 + 1 + m_ESeries_Sol3R + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Error: + 0 + + 0 + + + 0 + + 1 + m_ESeriesAltErr + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_ESeriesError3R + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + 0 + + 0 + + + 0 + + 1 + m_ESeriesAltPercent + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 4R Solution: + 0 + + 0 + + + 0 + + 1 + m_ESeries4RSolution + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_BOTTOM + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + 290,-1 + 1 + m_ESeries_Sol4R + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Error: + 0 + + 0 + + + 0 + + 1 + m_ESeriesAltErr1 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_ESeriesError4R + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + % + 0 + + 0 + + + 0 + + 1 + m_ESeriesAltPercent1 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Calculate + + 0 + + 0 + + + 0 + + 1 + m_buttonEScalculate + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnCalculateESeries + + + + + + 5 + wxALIGN_BOTTOM + 1 + + + bSizer47 + wxVERTICAL + none + + + + + + 5 + wxEXPAND + 1 + + + bLowerESerie + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + wxID_ANY + Help + + sbLowerSizerEseriesHelp + wxVERTICAL + 1 + none 5 - wxALL|wxALIGN_CENTER_HORIZONTAL - 0 - + wxALL|wxEXPAND + 1 + 1 1 1 @@ -10035,12 +6190,10 @@ 1 1 - ,90,92,-1,70,0 + 0 0 wxID_ANY - Warning: Via pad diameter >= Clearance hole diameter. Some parameters cannot be calculated for a via inside a copper zone. - 0 0 @@ -10048,7 +6201,7 @@ 0 1 - m_staticTextWarning + m_panelESeriesHelp 1 @@ -10058,92 +6211,17 @@ Resizable 1 - - ; ; forward_declare + wxHW_SCROLLBAR_AUTO + 0 - -1 - onUpdateViaCalcErrorText - - 5 - wxALIGN_RIGHT|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 1 - - 1 - - - 0 - 0 - wxID_ANY - Reset to Defaults - - 0 - - 0 - - - 0 - - 1 - m_buttonViaReset - 1 - - - protected - 1 - - - - Resizable - 1 - - - ; ; forward_declare - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnViaResetButtonClick - - @@ -10151,7 +6229,7 @@ - Electrical Spacing + Color Code 0 1 @@ -10188,7 +6266,7 @@ 0 1 - m_panelElectricalSpacing + m_panelColorCode 1 @@ -10206,502 +6284,95 @@ wxTAB_TRAVERSAL - bSizerElectricalClearance + bSizerPanelColorCode wxHORIZONTAL none 5 - wxEXPAND + wxALL|wxALIGN_CENTER_VERTICAL 0 - + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + "10% / 5%" "<= 2%" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Tolerance + 1 + + 0 + + + 0 - bLeftSizerElectricalClearance - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_ElectricalSpacingUnitsSelector - 1 - - - protected - 1 - - Resizable - -1 - 1 - - - UNIT_SELECTOR_LEN; UnitSelector.h - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnElectricalSpacingUnitsSelection - - - - 5 - wxEXPAND | wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_staticline2 - 1 - - - protected - 1 - - Resizable - 1 - - wxLI_HORIZONTAL - - 0 - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Voltage > 500V: - 0 - - 0 - - - 0 - - 1 - m_staticText891 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_ElectricalSpacingVoltage - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - - 1 - 0 - 1 - - 1 - - 0 - 0 - - Dock - 0 - Left - 1 - - 1 - - - 0 - 0 - wxID_ANY - Update Values - - 0 - - 0 - - - 0 - - 1 - m_buttonElectSpacingRefresh - 1 - - - protected - 1 - - - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnElectricalSpacingRefresh - - + 1 + m_rbToleranceSelection + 1 + + + protected + 1 + + Resizable + 0 + 1 + + wxRA_SPECIFY_COLS + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnToleranceSelection 5 - wxEXPAND + wxEXPAND|wxLEFT 1 - + + 6 + wxBOTH + + + 0 - bElectricalSpacingSizerRight - wxVERTICAL + fgSizerColoCode + wxFLEX_GROWMODE_SPECIFIED none + 2 + 0 5 - wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - ,93,92,-1,70,0 - 0 - 0 - wxID_ANY - Note: Values are minimal values (from IPC 2221) - 0 - - 0 - - - 0 - - 1 - m_staticTextElectricalSpacing - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - 0 - 1 - - - - 1 - - - wxALIGN_CENTER - - wxALIGN_TOP - 0 - 1 - wxALIGN_CENTER - 70 - "B1" "B2" "B3" "B4" "A5" "A6" "A7" - wxALIGN_CENTER - 7 - - - 1 - 0 - Dock - 0 - Left - 0 - 1 - 0 - 0 - 0 - 1 - - 1 - - - 1 - 0 - 0 - wxID_ANY - - - - 0 - 0 - - 0 - - - 0 - - 1 - m_gridElectricalSpacingValues - 1 - - - protected - 1 - - Resizable - wxALIGN_RIGHT - 100 - "0 ... 15V" "16 ... 30V" "31 ... 50V" "51 ... 100V" "101 ... 150V" "151 ... 170V" "171 ... 250V" "251 ... 300V" "301 ... 500V" " > 500V" - wxALIGN_CENTER - - 10 - 1 - - - 0 - - - - - - - - 5 - wxBOTTOM|wxRIGHT|wxLEFT + wxALL|wxALIGN_CENTER_HORIZONTAL 0 1 @@ -10731,7 +6402,7 @@ 0 0 wxID_ANY - * B1 - Internal Conductors * B2 - External Conductors, uncoated, sea level to 3050 m * B3 - External Conductors, uncoated, over 3050 m * B4 - External Conductors, with permanent polymer coating (any elevation) * A5 - External Conductors, with conformal coating over assembly (any elevation) * A6 - External Component lead/termination, uncoated * A7 - External Component lead termination, with conformal coating (any elevation) + 1st Band 0 0 @@ -10740,7 +6411,7 @@ 0 1 - m_staticText88 + m_staticText31 1 @@ -10760,12 +6431,665 @@ -1 + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 2nd Band + 0 + + 0 + + + 0 + + 1 + m_staticText34 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 3rd Band + 0 + + 0 + + + 0 + + 1 + m_staticText35 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + 4th Band + 0 + + 0 + + + 0 + + 1 + m_Band4Label + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Multiplier + 0 + + 0 + + + 0 + + 1 + m_staticText37 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Tolerance + 0 + + 0 + + + 0 + + 1 + m_staticText38 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/color_code_value_and_name.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_Band1bitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/color_code_value.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_Band2bitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/color_code_value.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_Band3bitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/color_code_value.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_Band4bitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/color_code_multiplier.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_Band_mult_bitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/color_code_tolerance.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_Band_tol_bitmap + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + + + - + TransLine 0 @@ -10884,7 +7208,7 @@ 1 Resizable - 0 + 1 1 wxRA_SPECIFY_COLS @@ -15856,7 +12180,7 @@ - RF Attenuators + Via Size 0 1 @@ -15893,7 +12217,7 @@ 0 1 - m_panelAttenuators + m_panelViaSize 1 @@ -15911,756 +12235,1499 @@ wxTAB_TRAVERSAL - bSizerAtt + bSizerViaSize wxHORIZONTAL none 5 - wxEXPAND - 0 - + wxEXPAND|wxALL + 1 + + wxID_ANY + Parameters: - bLeftSizerAtt + sbSizerVS_Inputs wxVERTICAL + 1 none 5 - wxEXPAND|wxALL + wxEXPAND 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - "PI" "Tee" "Bridged Tee" "Resistive Splitter" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Attenuators: - 1 - - 0 - - - 0 + + 3 + wxBOTH + 1 + + 0 - 1 - m_AttenuatorsSelection - 1 - - - protected - 1 - - Resizable - 0 - 1 - - wxRA_SPECIFY_COLS - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnAttenuatorSelection - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - -1,-1 - 1 - m_panelDisplayAttenuator - 1 - - - protected - 1 - - Resizable - 1 - 256,256 - - 0 - - - - wxTAB_TRAVERSAL|wxBORDER_SIMPLE - OnPaintAttenuatorPanel - - - - - - 5 - wxEXPAND - 0 - - - bMiddleSizerAtt - wxVERTICAL - none - - 5 - wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT - 0 - - wxID_ANY - Parameters: - - sbSizerAttPrms - wxVERTICAL - 1 + fgSizerVS_Inputs + wxFLEX_GROWMODE_SPECIFIED none + 0 + 0 5 - wxEXPAND + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT 0 - - 3 - wxBOTH - - 1 - 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,90,-1,70,0 + 0 + 0 + wxID_ANY + Finished hole diameter (D): + 0 + + 0 + + + 0 - fgSizerAttPrms - wxFLEX_GROWMODE_SPECIFIED - none - 3 - 0 - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Attenuation - 0 - - 0 - - - 0 - - 1 - m_attenuationLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_AttValueCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - dB - 0 - - 0 - - - 0 - - 1 - m_attUnit - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Zin - 0 - - 0 - - - 0 - - 1 - m_attenuationZinLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_ZinValueCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Ohms - 0 - - 0 - - - 0 - - 1 - m_attZinUnit - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Zout - 0 - - 0 - - - 0 - - 1 - m_ZoutLabel - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_ZoutValueCtrl - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Ohms - 0 - - 0 - - - 0 - - 1 - m_attZoutUnit - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - + 1 + m_staticTextHoleDia + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 - - - - 5 - wxALIGN_CENTER_HORIZONTAL - 0 - - - bSizerAttButt - wxHORIZONTAL - none 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlHoleDia + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_choiceHoleDia + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plating thickness (T): + 0 + + 0 + + + 0 + + 1 + m_staticTextPlatingThickness + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlPlatingThickness + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_choicePlatingThickness + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Via length: + 0 + + 0 + + + 0 + + 1 + m_staticTextViaLength + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Via length is the board thickness for through hole vias + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlViaLength + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_choiceViaLength + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Via pad diameter: + 0 + + 0 + + + 0 + + 1 + m_staticTextViaPadDia + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Diameter of pad surrounding via (annular ring) + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlViaPadDia + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_choiceViaPadDia + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Clearance hole diameter: + 0 + + 0 + + + 0 + + 1 + m_staticTextClearanceDia + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Diameter of clearance hole in ground plane(s) + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlClearanceDia + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_choiceClearanceDia + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Z0: + 0 + + 0 + + + 0 + + 1 + m_staticTextImpedance + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Characteristic impedance of conductor + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlImpedance + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_choiceImpedance + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_RESISTOR; UnitSelector.h; Not forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Applied current: + 0 + + 0 + + + 0 + + 1 + m_staticAppliedCurrent + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlAppliedCurrent + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + A + 0 + + 0 + + + 0 + + 1 + m_staticTextAppliedCurrentUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plating resistivity (Ohm.m): + 0 + + 0 + + + 0 + + 1 + m_staticTextResistivity + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Specific resistance in ohms * meters + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlPlatingResistivity + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP 0 1 @@ -16695,7 +13762,7 @@ 0 0 wxID_ANY - Calculate + ... 0 @@ -16705,7 +13772,7 @@ 0 1 - m_buttonAlcAtt + m_button_ResistivityVia 1 @@ -16717,7 +13784,7 @@ Resizable 1 - + wxBU_EXACTFIT 0 @@ -16728,14 +13795,14 @@ - OnCalculateAttenuator + OnViaRho_Button 5 - wxALL|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 - + 1 1 1 @@ -16746,7 +13813,133 @@ - Load From File; ../bitmaps/arrow_bottom.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Er: + 0 + + 0 + + + 0 + + 1 + m_staticTextPermittivity + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Relative dielectric constant (epsilon r) + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlPlatingPermittivity + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + 1 0 @@ -16768,7 +13961,7 @@ 0 0 wxID_ANY - Calculate + ... 0 @@ -16778,7 +13971,7 @@ 0 1 - m_bpButtonCalcAtt + m_button_Permittivity 1 @@ -16790,7 +13983,7 @@ Resizable 1 - + wxBU_EXACTFIT 0 @@ -16801,42 +13994,543 @@ - OnCalculateAttenuator + OnViaEpsilonR_Button + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Temperature rise: + 0 + + 0 + + + 0 + + 1 + m_staticTextTemperatureDiff + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Maximum acceptable rise in temperature + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlTemperatureDiff + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + deg C + 0 + + 0 + + + 0 + + 1 + m_staticTextTemperatureUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Pulse rise time: + 0 + + 0 + + + 0 + + 1 + m_staticTextRiseTime + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Pulse rise time to calculate reactance + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_textCtrlRiseTime + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnViaCalculate + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + ns + 0 + + 0 + + + 0 + + 1 + m_staticTextRiseTimeUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + nanoseconds + + + + -1 5 - wxEXPAND|wxTOP + wxALL|wxEXPAND 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline31 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + + 0 + + + + + + + + 5 + wxALIGN_CENTER_HORIZONTAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + Load From File; ../bitmaps/via.xpm + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_bitmap10 + 1 + + + protected + 1 + + Resizable + 1 + + ; ; forward_declare + 0 + Top view of via + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizerRight + wxVERTICAL + none + + 5 + wxEXPAND|wxALL + 1 wxID_ANY - Values + Results: - sbSizerAttValues + sbSizerVS_Result wxVERTICAL 1 none 5 - wxEXPAND|wxTOP|wxBOTTOM + wxEXPAND 0 3 wxBOTH - - 1 + 1 + 0 - fgSizerAttResults + fgSizerTW_Results11 wxFLEX_GROWMODE_SPECIFIED none - 3 + 0 0 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -16866,7 +14560,7 @@ 0 0 wxID_ANY - R1 + Resistance: 0 0 @@ -16875,7 +14569,7 @@ 0 1 - m_attenuatorR1Label + m_staticTextArea11 1 @@ -16897,71 +14591,7 @@ 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_Att_R1_Value - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND 0 1 @@ -16991,7 +14621,7 @@ 0 0 wxID_ANY - Ohms + dummy 0 0 @@ -17000,7 +14630,7 @@ 0 1 - m_attR1Unit + m_ViaResistance 1 @@ -17022,7 +14652,7 @@ 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALL 0 1 @@ -17052,7 +14682,7 @@ 0 0 wxID_ANY - R2 + Ohm 0 0 @@ -17061,7 +14691,7 @@ 0 1 - m_attenuatorR2Label + m_IntTrackAreaUnitLabel1 1 @@ -17083,71 +14713,7 @@ 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - - 0 - - 1 - m_Att_R2_Value - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL 0 1 @@ -17177,7 +14743,7 @@ 0 0 wxID_ANY - Ohms + Voltage drop: 0 0 @@ -17186,7 +14752,7 @@ 0 1 - m_attR2Unit1 + m_staticText65111 1 @@ -17208,7 +14774,7 @@ 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND 0 1 @@ -17238,7 +14804,7 @@ 0 0 wxID_ANY - R3 + dummy 0 0 @@ -17247,7 +14813,678 @@ 0 1 - m_attenuatorR3Label + m_ViaVoltageDrop + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Volt + 0 + + 0 + + + 0 + + 1 + m_staticText8411 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Power loss: + 0 + + 0 + + + 0 + + 1 + m_staticText66111 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_ViaPowerLoss + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Watt + 0 + + 0 + + + 0 + + 1 + m_staticText8311 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Thermal resistance: + 0 + + 0 + + + 0 + + 1 + m_staticText79211 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Using thermal conductivity value 401 Watts/(meter-Kelvin) + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_ViaThermalResistance + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + deg C/Watt + 0 + + 0 + + + 0 + + 1 + m_staticText791111 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Estimated ampacity: + 0 + + 0 + + + 0 + + 1 + m_staticTextAmpacity + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Based on temperature rise + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_ViaAmpacity + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + A + 0 + + 0 + + + 0 + + 1 + m_staticTextAmpacityUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Capacitance: + 0 + + 0 + + + 0 + + 1 + m_staticTextCapacitance 1 @@ -17271,7 +15508,7 @@ 5 wxALL 0 - + 1 1 1 @@ -17299,15 +15536,16 @@ 0 0 wxID_ANY + dummy + 0 0 - 0 0 1 - m_Att_R3_Value + m_ViaCapacitance 1 @@ -17321,19 +15559,15 @@ 0 - - wxFILTER_NONE - wxDefaultValidator - - + -1 5 - wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + wxALL 0 1 @@ -17363,7 +15597,7 @@ 0 0 wxID_ANY - Ohms + pF 0 0 @@ -17372,7 +15606,556 @@ 0 1 - m_attR3Unit + m_staticTextCapacitanceUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + pico-Farad + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Rise time degradation: + 0 + + 0 + + + 0 + + 1 + m_staticTextRiseTimeOutput + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Rise time degradation for given Z0 and calculated capacitance + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_RiseTimeOutput + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + ps + 0 + + 0 + + + 0 + + 1 + m_staticTextRiseTimeOutputUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + picoseconds + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Inductance: + 0 + + 0 + + + 0 + + 1 + m_staticTextInductance + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_Inductance + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + nH + 0 + + 0 + + + 0 + + 1 + m_staticTextInductanceUnits + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + nano-Henry + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Reactance: + 0 + + 0 + + + 0 + + 1 + m_staticTextReactance + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + Inductive reactance for given rise time and calculated inductance + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_Reactance + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Ohm + 0 + + 0 + + + 0 + + 1 + m_staticTextReactanceUnits 1 @@ -17394,13 +16177,85 @@ + + 5 + + 0 + + 30 + protected + 30 + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,92,-1,70,0 + 0 + 0 + wxID_ANY + Warning: Via pad diameter >= Clearance hole diameter. Some parameters cannot be calculated for a via inside a copper zone. + 0 + + 0 + + + 0 + + 1 + m_staticTextWarning + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + onUpdateViaCalcErrorText + + 5 - wxTOP|wxRIGHT|wxLEFT + wxALIGN_RIGHT|wxALL 0 - + 1 1 1 @@ -17411,24 +16266,30 @@ + 1 0 1 1 + + 0 0 + Dock 0 Left 1 1 + 0 0 wxID_ANY - Messages: + Reset to Defaults + 0 0 @@ -17437,154 +16298,30 @@ 0 1 - m_staticTextAttMsg + m_buttonViaReset 1 protected 1 + + Resizable 1 - - 0 - - - - - -1 - - - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_Attenuator_Messages - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO - - 0 - - - - wxBORDER_SIMPLE - - - - - - 5 - wxEXPAND|wxTOP|wxBOTTOM - 1 - - wxID_ANY - Formula - - sbRightSizerFormula - wxVERTICAL - 1 - none - - 5 - wxALL|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_panelAttFormula - 1 - - - protected - 1 - - Resizable - 1 - - wxHW_SCROLLBAR_AUTO - + ; ; forward_declare 0 + + wxFILTER_NONE + wxDefaultValidator + + OnViaResetButtonClick @@ -17594,7 +16331,7 @@ - Color Code + Track Width 0 1 @@ -17631,7 +16368,7 @@ 0 1 - m_panelColorCode + m_panelTrackWidth 1 @@ -17649,95 +16386,3610 @@ wxTAB_TRAVERSAL - bSizerPanelColorCode + bSizerTrackWidth wxHORIZONTAL none 5 - wxALL|wxALIGN_CENTER_VERTICAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - "10% / 5%" "<= 2%" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Tolerance - 1 - - 0 - - - 0 + wxEXPAND + 1 + - 1 - m_rbToleranceSelection - 1 - - - protected - 1 - - Resizable - 0 - 1 - - wxRA_SPECIFY_COLS - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnToleranceSelection + bSizeLeft + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + wxID_ANY + Parameters: + + sbSizerTW_Prms + wxVERTICAL + 1 + none + + 5 + wxEXPAND + 0 + + 3 + wxBOTH + 1 + + 0 + + fgSizerTWprms + wxFLEX_GROWMODE_SPECIFIED + none + 4 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxALIGN_RIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,90,-1,70,0 + 0 + 0 + wxID_ANY + Current: + 0 + + 0 + + + 0 + + 1 + m_staticTextCurrent + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_TrackCurrentValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWCalculateFromCurrent + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + A + 0 + + 0 + + + 0 + + 1 + m_staticText62 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Temperature rise: + 0 + + 0 + + + 0 + + 1 + m_staticText63 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_TrackDeltaTValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWParametersChanged + + + + 5 + wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + deg C + 0 + + 0 + + + 0 + + 1 + m_staticText64 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Conductor length: + 0 + + 0 + + + 0 + + 1 + m_staticText66 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_TrackLengthValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWParametersChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_TW_CuLength_choiceUnit + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnTWParametersChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_TWResistivity + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWParametersChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Resistivity: + 0 + + 0 + + + 0 + + 1 + m_staticText103 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Ohm-meter + 0 + + 0 + + + 0 + + 1 + m_staticText104 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + 5 + wxTOP|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_htmlWinFormulas + 1 + + + protected + 1 + + Resizable + 1 + + wxHW_NO_SELECTION|wxHW_SCROLLBAR_AUTO + + 0 + + + + wxBORDER_SIMPLE + + 5 - wxEXPAND|wxLEFT - 1 - - 6 - wxBOTH - - - 0 + wxEXPAND + 0 + - fgSizerColoCode - wxFLEX_GROWMODE_SPECIFIED + bSizeRight + wxVERTICAL none - 2 - 0 5 - wxALL|wxALIGN_CENTER_HORIZONTAL + wxEXPAND|wxALL + 1 + + wxID_ANY + External layer traces: + + sbSizerTW_Result + wxVERTICAL + 1 + none + + 5 + wxEXPAND + 0 + + 3 + wxBOTH + 1 + + 0 + + fgSizerTW_Results + wxFLEX_GROWMODE_SPECIFIED + none + 0 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxLEFT|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,90,-1,70,0 + 0 + 0 + wxID_ANY + Trace width: + 0 + + 0 + + + 0 + + 1 + m_staticTextExtWidth + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_ExtTrackWidthValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWCalculateFromExtWidth + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_TW_ExtTrackWidth_choiceUnit + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnTWParametersChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Trace thickness: + 0 + + 0 + + + 0 + + 1 + m_staticText65 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_ExtTrackThicknessValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWParametersChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_ExtTrackThicknessUnit + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_THICKNESS; UnitSelector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnTWParametersChanged + + + + 5 + wxEXPAND|wxTOP|wxBOTTOM + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline3 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + + 0 + + + + + + + + 5 + wxEXPAND|wxTOP|wxBOTTOM + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline4 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + + 0 + + + + + + + + 5 + wxEXPAND|wxTOP|wxBOTTOM + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline5 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + + 0 + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Cross-section area: + 0 + + 0 + + + 0 + + 1 + m_staticTextArea + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_ExtTrackAreaValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm ^ 2 + 0 + + 0 + + + 0 + + 1 + m_ExtTrackAreaUnitLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Resistance: + 0 + + 0 + + + 0 + + 1 + m_staticText651 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_ExtTrackResistValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Ohm + 0 + + 0 + + + 0 + + 1 + m_staticText84 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Voltage drop: + 0 + + 0 + + + 0 + + 1 + m_staticText661 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_ExtTrackVDropValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Volt + 0 + + 0 + + + 0 + + 1 + m_staticText83 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Power loss: + 0 + + 0 + + + 0 + + 1 + m_staticText79 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_ExtTrackLossValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Watt + 0 + + 0 + + + 0 + + 1 + m_staticText791 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + 5 + wxEXPAND|wxALL + 1 + + wxID_ANY + Internal layer traces: + + sbSizerTW_Result1 + wxVERTICAL + 1 + none + + 5 + wxEXPAND + 0 + + 3 + wxBOTH + 1 + + 0 + + fgSizerTW_Results1 + wxFLEX_GROWMODE_SPECIFIED + none + 6 + 0 + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,90,90,-1,70,0 + 0 + 0 + wxID_ANY + Trace width: + 0 + + 0 + + + 0 + + 1 + m_staticTextIntWidth + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_IntTrackWidthValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWCalculateFromIntWidth + + + + 5 + wxEXPAND|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_TW_IntTrackWidth_choiceUnit + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnTWParametersChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Trace thickness: + 0 + + 0 + + + 0 + + 1 + m_staticText652 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_IntTrackThicknessValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnTWParametersChanged + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_IntTrackThicknessUnit + 1 + + + protected + 1 + + Resizable + 0 + 1 + + + UNIT_SELECTOR_THICKNESS; UnitSelector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnTWParametersChanged + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Cross-section area: + 0 + + 0 + + + 0 + + 1 + m_staticTextArea1 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_IntTrackAreaValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + mm ^ 2 + 0 + + 0 + + + 0 + + 1 + m_IntTrackAreaUnitLabel + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Resistance: + 0 + + 0 + + + 0 + + 1 + m_staticText6511 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_IntTrackResistValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Ohm + 0 + + 0 + + + 0 + + 1 + m_staticText841 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Voltage drop: + 0 + + 0 + + + 0 + + 1 + m_staticText6611 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_IntTrackVDropValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Volt + 0 + + 0 + + + 0 + + 1 + m_staticText831 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Power loss: + 0 + + 0 + + + 0 + + 1 + m_staticText792 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + dummy + 0 + + 0 + + + 0 + + 1 + m_IntTrackLossValue + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALIGN_CENTER_VERTICAL|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Watt + 0 + + 0 + + + 0 + + 1 + m_staticText7911 + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + 5 + wxALIGN_RIGHT|wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Reset to Defaults + + 0 + + 0 + + + 0 + + 1 + m_buttonTrackWidthReset + 1 + + + protected + 1 + + + + Resizable + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnTWResetButtonClick + + + + + + + + + + Electrical Spacing + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_panelElectricalSpacing + 1 + + + protected + 1 + + Resizable + 1 + + + 0 + + + + wxTAB_TRAVERSAL + + + bSizerElectricalClearance + wxHORIZONTAL + none + + 5 + wxEXPAND + 0 + + + bLeftSizerElectricalClearance + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_ElectricalSpacingUnitsSelector + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + UNIT_SELECTOR_LEN; UnitSelector.h + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnElectricalSpacingUnitsSelection + + + + 5 + wxEXPAND | wxALL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_staticline2 + 1 + + + protected + 1 + + Resizable + 1 + + wxLI_HORIZONTAL + + 0 + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT 0 1 @@ -17767,7 +20019,7 @@ 0 0 wxID_ANY - 1st Band + Voltage > 500V: 0 0 @@ -17776,7 +20028,7 @@ 0 1 - m_staticText31 + m_staticText891 1 @@ -17798,7 +20050,304 @@ 5 - wxALL|wxALIGN_CENTER_HORIZONTAL + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 0 + + 1 + m_ElectricalSpacingVoltage + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + + + + + 1 + 0 + 1 + + 1 + + 0 + 0 + + Dock + 0 + Left + 1 + + 1 + + + 0 + 0 + wxID_ANY + Update Values + + 0 + + 0 + + + 0 + + 1 + m_buttonElectSpacingRefresh + 1 + + + protected + 1 + + + + Resizable + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnElectricalSpacingRefresh + + + + + + 5 + wxEXPAND + 1 + + + bElectricalSpacingSizerRight + wxVERTICAL + none + + 5 + wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + ,93,92,-1,70,0 + 0 + 0 + wxID_ANY + Note: Values are minimal values (from IPC 2221) + 0 + + 0 + + + 0 + + 1 + m_staticTextElectricalSpacing + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + 5 + wxALL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + + 0 + 1 + + + + 1 + + + wxALIGN_CENTER + + wxALIGN_TOP + 0 + 1 + wxALIGN_CENTER + 70 + "B1" "B2" "B3" "B4" "A5" "A6" "A7" + wxALIGN_CENTER + 7 + + + 1 + 0 + Dock + 0 + Left + 0 + 1 + 0 + 0 + 0 + 1 + + 1 + + + 1 + 0 + 0 + wxID_ANY + + + + 0 + 0 + + 0 + + + 0 + + 1 + m_gridElectricalSpacingValues + 1 + + + protected + 1 + + Resizable + wxALIGN_RIGHT + 100 + "0 ... 15V" "16 ... 30V" "31 ... 50V" "51 ... 100V" "101 ... 150V" "151 ... 170V" "171 ... 250V" "251 ... 300V" "301 ... 500V" " > 500V" + wxALIGN_CENTER + + 10 + 1 + + + 0 + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT 0 1 @@ -17828,7 +20377,7 @@ 0 0 wxID_ANY - 2nd Band + * B1 - Internal Conductors * B2 - External Conductors, uncoated, sea level to 3050 m * B3 - External Conductors, uncoated, over 3050 m * B4 - External Conductors, with permanent polymer coating (any elevation) * A5 - External Conductors, with conformal coating over assembly (any elevation) * A6 - External Component lead/termination, uncoated * A7 - External Component lead termination, with conformal coating (any elevation) 0 0 @@ -17837,7 +20386,7 @@ 0 1 - m_staticText34 + m_staticText88 1 @@ -17857,598 +20406,6 @@ -1 - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - 3rd Band - 0 - - 0 - - - 0 - - 1 - m_staticText35 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - 4th Band - 0 - - 0 - - - 0 - - 1 - m_Band4Label - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Multiplier - 0 - - 0 - - - 0 - - 1 - m_staticText37 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Tolerance - 0 - - 0 - - - 0 - - 1 - m_staticText38 - 1 - - - protected - 1 - - Resizable - 1 - - - - 0 - - - - - -1 - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ../bitmaps/color_code_value_and_name.xpm - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_Band1bitmap - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ../bitmaps/color_code_value.xpm - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_Band2bitmap - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ../bitmaps/color_code_value.xpm - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_Band3bitmap - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ../bitmaps/color_code_value.xpm - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_Band4bitmap - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALIGN_CENTER_HORIZONTAL|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ../bitmaps/color_code_multiplier.xpm - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_Band_mult_bitmap - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL - 0 - - 1 - 1 - 1 - 1 - - - - - - - Load From File; ../bitmaps/color_code_tolerance.xpm - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 - - 1 - m_Band_tol_bitmap - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - - - - diff --git a/pcb_calculator/dialogs/pcb_calculator_frame_base.h b/pcb_calculator/dialogs/pcb_calculator_frame_base.h index b70a86f113..8b296d650c 100644 --- a/pcb_calculator/dialogs/pcb_calculator_frame_base.h +++ b/pcb_calculator/dialogs/pcb_calculator_frame_base.h @@ -37,11 +37,11 @@ class UNIT_SELECTOR_THICKNESS; #include #include #include +#include +#include #include #include #include -#include -#include #include #include @@ -93,134 +93,75 @@ class PCB_CALCULATOR_FRAME_BASE : public KIWAY_PLAYER wxButton* m_buttonAddItem; wxButton* m_buttonRemoveItem; wxStaticText* m_RegulMessage; - wxPanel* m_panelTrackWidth; - wxStaticText* m_staticTextCurrent; - wxTextCtrl* m_TrackCurrentValue; - wxStaticText* m_staticText62; - wxStaticText* m_staticText63; - wxTextCtrl* m_TrackDeltaTValue; - wxStaticText* m_staticText64; - wxStaticText* m_staticText66; - wxTextCtrl* m_TrackLengthValue; - UNIT_SELECTOR_LEN* m_TW_CuLength_choiceUnit; - wxStaticText* m_staticText103; - wxTextCtrl* m_TWResistivity; - wxStaticText* m_staticText104; - wxHtmlWindow* m_htmlWinFormulas; - wxStaticText* m_staticTextExtWidth; - wxTextCtrl* m_ExtTrackWidthValue; - UNIT_SELECTOR_LEN* m_TW_ExtTrackWidth_choiceUnit; - wxStaticText* m_staticText65; - wxTextCtrl* m_ExtTrackThicknessValue; - UNIT_SELECTOR_THICKNESS* m_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_staticText84; - 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_LEN* m_TW_IntTrackWidth_choiceUnit; - wxStaticText* m_staticText652; - wxTextCtrl* m_IntTrackThicknessValue; - UNIT_SELECTOR_THICKNESS* m_IntTrackThicknessUnit; - wxStaticText* m_staticTextArea1; - wxStaticText* m_IntTrackAreaValue; - wxStaticText* m_IntTrackAreaUnitLabel; - wxStaticText* m_staticText6511; - wxStaticText* m_IntTrackResistValue; - wxStaticText* m_staticText841; - wxStaticText* m_staticText6611; - wxStaticText* m_IntTrackVDropValue; - wxStaticText* m_staticText831; - wxStaticText* m_staticText792; - wxStaticText* m_IntTrackLossValue; - wxStaticText* m_staticText7911; - wxButton* m_buttonTrackWidthReset; - wxPanel* m_panelViaSize; - wxStaticText* m_staticTextHoleDia; - wxTextCtrl* m_textCtrlHoleDia; - UNIT_SELECTOR_LEN* m_choiceHoleDia; - wxStaticText* m_staticTextPlatingThickness; - wxTextCtrl* m_textCtrlPlatingThickness; - UNIT_SELECTOR_LEN* m_choicePlatingThickness; - wxStaticText* m_staticTextViaLength; - wxTextCtrl* m_textCtrlViaLength; - UNIT_SELECTOR_LEN* m_choiceViaLength; - wxStaticText* m_staticTextViaPadDia; - wxTextCtrl* m_textCtrlViaPadDia; - UNIT_SELECTOR_LEN* m_choiceViaPadDia; - wxStaticText* m_staticTextClearanceDia; - wxTextCtrl* m_textCtrlClearanceDia; - UNIT_SELECTOR_LEN* m_choiceClearanceDia; - wxStaticText* m_staticTextImpedance; - wxTextCtrl* m_textCtrlImpedance; - UNIT_SELECTOR_RESISTOR* m_choiceImpedance; - wxStaticText* m_staticAppliedCurrent; - wxTextCtrl* m_textCtrlAppliedCurrent; - wxStaticText* m_staticTextAppliedCurrentUnits; - wxStaticText* m_staticTextResistivity; - wxTextCtrl* m_textCtrlPlatingResistivity; - wxButton* m_button_ResistivityVia; - wxStaticText* m_staticTextPermittivity; - wxTextCtrl* m_textCtrlPlatingPermittivity; - wxButton* m_button_Permittivity; - wxStaticText* m_staticTextTemperatureDiff; - wxTextCtrl* m_textCtrlTemperatureDiff; - wxStaticText* m_staticTextTemperatureUnits; - wxStaticText* m_staticTextRiseTime; - wxTextCtrl* m_textCtrlRiseTime; - wxStaticText* m_staticTextRiseTimeUnits; - wxStaticLine* m_staticline31; - wxStaticBitmap* m_bitmap10; - wxStaticText* m_staticTextArea11; - wxStaticText* m_ViaResistance; - wxStaticText* m_IntTrackAreaUnitLabel1; - 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_staticText791111; - 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_staticTextReactanceUnits; - wxStaticText* m_staticTextWarning; - wxButton* m_buttonViaReset; - wxPanel* m_panelElectricalSpacing; - UNIT_SELECTOR_LEN* m_ElectricalSpacingUnitsSelector; - wxStaticLine* m_staticline2; - wxStaticText* m_staticText891; - wxTextCtrl* m_ElectricalSpacingVoltage; - wxButton* m_buttonElectSpacingRefresh; - wxStaticText* m_staticTextElectricalSpacing; - wxGrid* m_gridElectricalSpacingValues; - wxStaticText* m_staticText88; + wxPanel* m_panelAttenuators; + wxRadioBox* m_AttenuatorsSelection; + wxPanel* m_panelDisplayAttenuator; + 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_attR2Unit1; + 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_staticTextESeriesMsg111; + wxStaticText* m_ESrequired; + wxTextCtrl* m_ResRequired; + wxStaticText* m_UnitRegultR111; + wxStaticText* m_ESrequired1; + wxTextCtrl* m_ResExclude1; + wxStaticText* m_UnitRegultR1111; + wxStaticText* m_ESrequired11; + wxTextCtrl* m_ResExclude2; + wxStaticText* m_UnitRegultR1112; + wxRadioBox* m_rbESerieSelection; + 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; + 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; wxPanel* m_panelDisplayshape; @@ -298,46 +239,134 @@ class PCB_CALCULATOR_FRAME_BASE : public KIWAY_PLAYER wxStaticText* m_left_message7; wxStaticText* m_Message7; wxButton* m_buttonTransLineReset; - wxPanel* m_panelAttenuators; - wxRadioBox* m_AttenuatorsSelection; - wxPanel* m_panelDisplayAttenuator; - 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_attR2Unit1; - wxStaticText* m_attenuatorR3Label; - wxTextCtrl* m_Att_R3_Value; - wxStaticText* m_attR3Unit; - wxStaticText* m_staticTextAttMsg; - wxHtmlWindow* m_Attenuator_Messages; - wxHtmlWindow* m_panelAttFormula; - 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_panelViaSize; + wxStaticText* m_staticTextHoleDia; + wxTextCtrl* m_textCtrlHoleDia; + UNIT_SELECTOR_LEN* m_choiceHoleDia; + wxStaticText* m_staticTextPlatingThickness; + wxTextCtrl* m_textCtrlPlatingThickness; + UNIT_SELECTOR_LEN* m_choicePlatingThickness; + wxStaticText* m_staticTextViaLength; + wxTextCtrl* m_textCtrlViaLength; + UNIT_SELECTOR_LEN* m_choiceViaLength; + wxStaticText* m_staticTextViaPadDia; + wxTextCtrl* m_textCtrlViaPadDia; + UNIT_SELECTOR_LEN* m_choiceViaPadDia; + wxStaticText* m_staticTextClearanceDia; + wxTextCtrl* m_textCtrlClearanceDia; + UNIT_SELECTOR_LEN* m_choiceClearanceDia; + wxStaticText* m_staticTextImpedance; + wxTextCtrl* m_textCtrlImpedance; + UNIT_SELECTOR_RESISTOR* m_choiceImpedance; + wxStaticText* m_staticAppliedCurrent; + wxTextCtrl* m_textCtrlAppliedCurrent; + wxStaticText* m_staticTextAppliedCurrentUnits; + wxStaticText* m_staticTextResistivity; + wxTextCtrl* m_textCtrlPlatingResistivity; + wxButton* m_button_ResistivityVia; + wxStaticText* m_staticTextPermittivity; + wxTextCtrl* m_textCtrlPlatingPermittivity; + wxButton* m_button_Permittivity; + wxStaticText* m_staticTextTemperatureDiff; + wxTextCtrl* m_textCtrlTemperatureDiff; + wxStaticText* m_staticTextTemperatureUnits; + wxStaticText* m_staticTextRiseTime; + wxTextCtrl* m_textCtrlRiseTime; + wxStaticText* m_staticTextRiseTimeUnits; + wxStaticLine* m_staticline31; + wxStaticBitmap* m_bitmap10; + wxStaticText* m_staticTextArea11; + wxStaticText* m_ViaResistance; + wxStaticText* m_IntTrackAreaUnitLabel1; + 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_staticText791111; + 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_staticTextReactanceUnits; + wxStaticText* m_staticTextWarning; + wxButton* m_buttonViaReset; + wxPanel* m_panelTrackWidth; + wxStaticText* m_staticTextCurrent; + wxTextCtrl* m_TrackCurrentValue; + wxStaticText* m_staticText62; + wxStaticText* m_staticText63; + wxTextCtrl* m_TrackDeltaTValue; + wxStaticText* m_staticText64; + wxStaticText* m_staticText66; + wxTextCtrl* m_TrackLengthValue; + UNIT_SELECTOR_LEN* m_TW_CuLength_choiceUnit; + wxTextCtrl* m_TWResistivity; + wxStaticText* m_staticText103; + wxStaticText* m_staticText104; + wxHtmlWindow* m_htmlWinFormulas; + wxStaticText* m_staticTextExtWidth; + wxTextCtrl* m_ExtTrackWidthValue; + UNIT_SELECTOR_LEN* m_TW_ExtTrackWidth_choiceUnit; + wxStaticText* m_staticText65; + wxTextCtrl* m_ExtTrackThicknessValue; + UNIT_SELECTOR_THICKNESS* m_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_staticText84; + 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_LEN* m_TW_IntTrackWidth_choiceUnit; + wxStaticText* m_staticText652; + wxTextCtrl* m_IntTrackThicknessValue; + UNIT_SELECTOR_THICKNESS* m_IntTrackThicknessUnit; + wxStaticText* m_staticTextArea1; + wxStaticText* m_IntTrackAreaValue; + wxStaticText* m_IntTrackAreaUnitLabel; + wxStaticText* m_staticText6511; + wxStaticText* m_IntTrackResistValue; + wxStaticText* m_staticText841; + 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_LEN* m_ElectricalSpacingUnitsSelector; + wxStaticLine* m_staticline2; + wxStaticText* m_staticText891; + wxTextCtrl* m_ElectricalSpacingVoltage; + wxButton* m_buttonElectSpacingRefresh; + wxStaticText* m_staticTextElectricalSpacing; + wxGrid* m_gridElectricalSpacingValues; + wxStaticText* m_staticText88; wxPanel* m_panelBoardClass; UNIT_SELECTOR_LEN* m_BoardClassesUnitsSelector; wxStaticText* m_staticTextBrdClass; @@ -354,18 +383,12 @@ class PCB_CALCULATOR_FRAME_BASE : public KIWAY_PLAYER virtual void OnEditRegulator( wxCommandEvent& event ) { event.Skip(); } virtual void OnAddRegulator( wxCommandEvent& event ) { event.Skip(); } virtual void OnRemoveRegulator( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTWCalculateFromCurrent( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTWParametersChanged( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTWCalculateFromExtWidth( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTWCalculateFromIntWidth( wxCommandEvent& event ) { event.Skip(); } - virtual void OnTWResetButtonClick( wxCommandEvent& event ) { event.Skip(); } - virtual void OnViaCalculate( wxCommandEvent& event ) { event.Skip(); } - virtual void OnViaRho_Button( wxCommandEvent& event ) { event.Skip(); } - virtual void OnViaEpsilonR_Button( wxCommandEvent& event ) { event.Skip(); } - virtual void onUpdateViaCalcErrorText( wxUpdateUIEvent& event ) { event.Skip(); } - virtual void OnViaResetButtonClick( wxCommandEvent& event ) { event.Skip(); } - virtual void OnElectricalSpacingUnitsSelection( wxCommandEvent& event ) { event.Skip(); } - virtual void OnElectricalSpacingRefresh( wxCommandEvent& event ) { event.Skip(); } + virtual void OnAttenuatorSelection( wxCommandEvent& event ) { event.Skip(); } + virtual void OnPaintAttenuatorPanel( wxPaintEvent& event ) { event.Skip(); } + virtual void OnCalculateAttenuator( wxCommandEvent& event ) { event.Skip(); } + virtual void OnESerieSelection( wxCommandEvent& event ) { event.Skip(); } + virtual void OnCalculateESeries( wxCommandEvent& event ) { event.Skip(); } + virtual void OnToleranceSelection( wxCommandEvent& event ) { event.Skip(); } virtual void OnTranslineSelection( wxCommandEvent& event ) { event.Skip(); } virtual void OnPaintTranslinePanel( wxPaintEvent& event ) { event.Skip(); } virtual void OnTranslineEpsilonR_Button( wxCommandEvent& event ) { event.Skip(); } @@ -374,16 +397,24 @@ class PCB_CALCULATOR_FRAME_BASE : public KIWAY_PLAYER virtual void OnTranslineAnalyse( wxCommandEvent& event ) { event.Skip(); } virtual void OnTranslineSynthetize( wxCommandEvent& event ) { event.Skip(); } virtual void OnTransLineResetButtonClick( wxCommandEvent& event ) { event.Skip(); } - virtual void OnAttenuatorSelection( wxCommandEvent& event ) { event.Skip(); } - virtual void OnPaintAttenuatorPanel( wxPaintEvent& event ) { event.Skip(); } - virtual void OnCalculateAttenuator( wxCommandEvent& event ) { event.Skip(); } - virtual void OnToleranceSelection( wxCommandEvent& event ) { event.Skip(); } + virtual void OnViaCalculate( wxCommandEvent& event ) { event.Skip(); } + virtual void OnViaRho_Button( wxCommandEvent& event ) { event.Skip(); } + virtual void OnViaEpsilonR_Button( wxCommandEvent& event ) { event.Skip(); } + virtual void onUpdateViaCalcErrorText( wxUpdateUIEvent& event ) { event.Skip(); } + virtual void OnViaResetButtonClick( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTWCalculateFromCurrent( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTWParametersChanged( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTWCalculateFromExtWidth( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTWCalculateFromIntWidth( wxCommandEvent& event ) { event.Skip(); } + virtual void OnTWResetButtonClick( wxCommandEvent& event ) { event.Skip(); } + virtual void OnElectricalSpacingUnitsSelection( wxCommandEvent& event ) { event.Skip(); } + virtual void OnElectricalSpacingRefresh( wxCommandEvent& event ) { event.Skip(); } virtual void OnBoardClassesUnitsSelection( wxCommandEvent& event ) { event.Skip(); } public: - 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( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("PCB Calculator"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 999,715 ), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL, const wxString& name = wxT("pcb_calculator") ); ~PCB_CALCULATOR_FRAME_BASE(); diff --git a/pcb_calculator/eserie.cpp b/pcb_calculator/eserie.cpp new file mode 100644 index 0000000000..5864ad2e16 --- /dev/null +++ b/pcb_calculator/eserie.cpp @@ -0,0 +1,409 @@ +/* + * This program source code file + * is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2020 + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "eserie.h" +#include "profile.h" + +wxString eseries_help = +#include "eserie_help.h" + + eserie r; + +void eserie::set_reqR( double aR ) +{ + reqR = aR; +} + +void eserie::set_rb( uint32_t a_rb ) +{ + rb_state = a_rb; +} + +uint32_t eserie::get_rb( void ) +{ + return rb_state; +} + +std::array eserie::get_rslt( void ) +{ + return results; +} + +void eserie::exclude( double aValue ) +{ + if( aValue ) // if there is a value to exclude other than a wire jumper + { + for( r_data& i : luts[rb_state] ) // then search it in the selected E-Serie lookup table + { + if( i.e_value == aValue ) // if value to exclude found + { + i.e_use = false; // disable its use + } + } + } +} + +void eserie::simple_solution( uint32_t aSize ) +{ + uint32_t i; + + results[S2R].e_value = std::numeric_limits::max(); // assume no 2R solution or max deviation + + for( i = 0; i < aSize; i++ ) + { + if( abs( cmb_lut[i].e_value - reqR ) < abs( results[S2R].e_value ) ) + { + results[S2R].e_value = cmb_lut[i].e_value - reqR; // save signed deviation in Ohms + results[S2R].e_name = cmb_lut[i].e_name; // save combination text + results[S2R].e_use = true; // this is a possible solution + } + } +} + +void eserie::combine4( uint32_t aSize ) +{ + uint32_t i,j; + double tmp; + std::string s; + + results[S4R].e_use = false; // disable 4R solution, until + results[S4R].e_value = results[S3R].e_value; // 4R becomes better than 3R solution + + #ifdef BENCHMARK + PROF_COUNTER combine4_timer; // start timer to count execution time + #endif + + for( i = 0; i < aSize; i++ ) // 4R search outer loop + { // scan valid intermediate 2R solutions + for( j = 0; j < aSize; j++ ) // inner loop combines all with itself + { + tmp = cmb_lut[i].e_value + cmb_lut[j].e_value; // calculate 2R+2R serial + tmp -= reqR; // calculate 4R deviation + + if( abs( tmp ) < abs( results[S4R].e_value ) ) // if new 4R is better + { + results[S4R].e_value = tmp; // save amount of benefit + std::string s = "( "; + s.append( cmb_lut[i].e_name ); // mention 1st 2 component + s.append( " ) + ( " ); // in series + s.append( cmb_lut[j].e_name ); // with 2nd 2 components + s.append( " )" ); + results[S4R].e_name = s; // save the result and + results[S4R].e_use = true; // enable for later use + } + + tmp = ( cmb_lut[i].e_value * cmb_lut[j].e_value ) / + ( cmb_lut[i].e_value + cmb_lut[j].e_value ); // calculate 2R|2R parallel + tmp -= reqR; // calculate 4R deviation + + if( abs( tmp ) < abs( results[S4R].e_value ) ) // if new 4R is better + { + results[S4R].e_value = tmp; // save amount of benefit + std::string s = "( "; + s.append( cmb_lut[i].e_name ); // mention 1st 2 component + s.append( " ) | ( " ); // in parallel + s.append( cmb_lut[j].e_name ); // with 2nd 2 components + s.append( " )" ); + results[S4R].e_name = s; // save the result + results[S4R].e_use = true; // enable later use + } + } + } + + #ifdef BENCHMARK + if( rb_state == E12 ) + { + std::cout<<"4R Time = "<GetValue() ) ); + r.set_reqR(reqr); // keep a local copy of requred resistor value + r.new_calc(); // assume all values available + /* + * Exclude itself. For the case, a value from the available series is found as required value, + * the calculator assumes this value needs a replacement for the reason of being not available. + * Two further exclude values can be entered to exclude and are skipped as not being availabe. + * All values entered in KiloOhms are converted to Ohm for internal calculation + */ + r.exclude( 1000 * DoubleFromString( m_ResRequired->GetValue() ) ); + r.exclude( 1000 * DoubleFromString( m_ResExclude1->GetValue() ) ); + r.exclude( 1000 * DoubleFromString( m_ResExclude2->GetValue() ) ); + r.calculate(); + + fs = r.get_rslt()[S2R].e_name; // show 2R solution formula string + m_ESeries_Sol2R->SetValue( fs ); + error = reqr + r.get_rslt()[S2R].e_value; // absolute value of solution + error = ( reqr / error - 1 ) * 100; // error in percent + + if( error ) + { + es.Printf( "%+.2f",error); // if 2R solution with error + } + else + { + es = "Exact"; // 2R solution is already exact + } + + m_ESeriesError2R->SetValue( es ); // anyway show 2R error string + + if( r.get_rslt()[S3R].e_use ) // if 3R solution available + { + err3 = reqr + r.get_rslt()[S3R].e_value; // calculate the 3R + err3 = ( reqr / err3 - 1 ) * 100; // error in percent + + if( err3 ) // build 3R error string + { + es.Printf( "%+.2f",err3); + } + else + { + es = "Exact"; + } + + m_ESeriesError3R->SetValue( es ); // show 3R error string + fs = r.get_rslt()[S3R].e_name; + m_ESeries_Sol3R->SetValue( fs ); // show 3R formula string + } + else // nothing better than 2R found + { + fs = "Not worth using"; + m_ESeries_Sol3R->SetValue( fs ); + m_ESeriesError3R->SetValue( wxEmptyString ); + } + + fs = wxEmptyString; + + if( r.get_rslt()[S4R].e_use ) // show 4R solution if available + { + fs = r.get_rslt()[S4R].e_name; + + error = reqr + r.get_rslt()[S4R].e_value; // absolute value of solution + error = ( reqr / error - 1 ) * 100; // error in percent + + if( error ) + { + es.Printf( "%+.2f",error ); + } + else + { + es = "Exact"; + } + + m_ESeriesError4R->SetValue( es ); + } + else // no 4R solution + { + fs = "Not worth using"; + es = wxEmptyString; + m_ESeriesError4R->SetValue( es ); + } + + m_ESeries_Sol4R->SetValue( fs ); +} + +void PCB_CALCULATOR_FRAME::OnESerieSelection( wxCommandEvent& event ) +{ + r.set_rb ( event.GetSelection() ); +} + +void PCB_CALCULATOR_FRAME::ES_Init() // initialize ESeries tab at each pcb-calculator start +{ + wxString msg; + + // show markdown formula explanation in lower help panel + ConvertMarkdown2Html( wxGetTranslation( eseries_help ), msg ); + m_panelESeriesHelp->SetPage( msg ); +} diff --git a/pcb_calculator/eserie.h b/pcb_calculator/eserie.h new file mode 100644 index 0000000000..3e874da0cc --- /dev/null +++ b/pcb_calculator/eserie.h @@ -0,0 +1,241 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2020 + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +/** + * @file eserie.h + */ + +extern double DoubleFromString( const wxString& TextValue ); + +/** + * If BENCHMARK is defined, any 4R E12 calculations will print its execution time to console + * My Hasswell Enthusiast reports 225 mSec what are reproducable within plusminus 2 percent + */ + +#define BENCHMARK + +/** + * E-Values derived from a geometric sequence formula by Charles Renard were already + * accepted and widely used before the ISO recommendation no. 3 has been published. + * For this historical reason, rounding rules of some values are sometimes irregular. + * Although all E-Values could be calculated at runtime, we initialize them in a lookup table + * what seems the most easy way to consider any inconvenient irregular rules. Same table is + * also used to lookup non calculatable but readable BOM value strings. Supported E-series are: + */ + +enum { E1, E3, E6, E12 }; + +/** + * This calculator suggests solutions for 2R, 3R and 4R replacement combinations + */ + +enum { S2R, S3R, S4R }; + +/** + * 6 decade E-series values from 10 Ohms to 1M and its associated BOM strings. + * Series E3,E6,E12 are defined by additional values for cumulative use with previous series + */ + +#define E1_VAL { true, "1K", 1000 },\ + { true, "10K", 10000 },\ + { true, "100K", 100000 },\ + { true, "10R", 10 },\ + { true, "100R", 100 },\ + { true, "1M", 1000000 } + +#define E3_ADD { true, "22R", 22 },\ + { true, "47R", 47 },\ + { true, "220R", 220 },\ + { true, "470R", 470 },\ + { true, "2K2", 2200 },\ + { true, "4K7", 4700 },\ + { true, "22K", 22000 },\ + { true, "47K", 47000 },\ + { true, "220K", 220000 },\ + { true, "470K", 470000 } + +#define E6_ADD { true, "15R", 15 },\ + { true, "33R", 33 },\ + { true, "68R", 68 },\ + { true, "150R", 150 },\ + { true, "330R", 330 },\ + { true, "680R", 680 },\ + { true, "1K5", 1500 },\ + { true, "3K3", 3300 },\ + { true, "6K8", 6800 },\ + { true, "15K", 15000 },\ + { true, "33K", 33000 },\ + { true, "68K", 68000 },\ + { true, "150K", 150000 },\ + { true, "330K", 330000 },\ + { true, "680K", 680000 } + +#define E12_ADD { true, "12R", 12 },\ + { true, "18R", 18 },\ + { true, "27R", 27 },\ + { true, "39R", 39 },\ + { true, "56R", 56 },\ + { true, "82R", 82 },\ + { true, "120R", 120 },\ + { true, "180R", 180 },\ + { true, "270R", 270 },\ + { true, "390R", 390 },\ + { true, "560R", 560 },\ + { true, "820R", 820 },\ + { true, "1K2", 1200 },\ + { true, "1K8", 1800 },\ + { true, "2K7", 2700 },\ + { true, "3K9", 3900 },\ + { true, "5K6", 5600 },\ + { true, "8K2", 8200 },\ + { true, "12K", 12000 },\ + { true, "18K", 18000 },\ + { true, "27K", 27000 },\ + { true, "39K", 39000 },\ + { true, "56K", 56000 },\ + { true, "82K", 82000 },\ + { true, "120K", 120000 },\ + { true, "180K", 180000 },\ + { true, "270K", 270000 },\ + { true, "390K", 390000 },\ + { true, "560K", 560000 },\ + { true, "820K", 820000 } + +struct r_data { + bool e_use; + std::string e_name; + double e_value; + }; + +class eserie +{ + private: + std::vector> luts { + { E1_VAL }, + { E1_VAL, E3_ADD }, + { E1_VAL, E3_ADD, E6_ADD }, + { E1_VAL, E3_ADD, E6_ADD, E12_ADD } + }; +/* + * TODO: Manual array size calculation is dangerous. Unlike legacy ANSI-C Arrays + * std::array can not drop length param by providing aggregate init list up + * to C++17. Reserved array size should be 2*E12² of std::vector primary list. + * Exceeding memory limit 7442 will crash the calculator without any warnings ! + * Compare to previous MAX_COMB macro for legacy ANSI-C array automatic solution + * #define E12_SIZE sizeof ( e12_lut ) / sizeof ( r_data ) + * #define MAX_COMB (2 * E12_SIZE * E12_SIZE) + * 2 component combinations including redundant swappable terms are for the moment + * 72 combinations for E1 + * 512 combinations for E3 + * 1922 combinations for E6 + * 7442 combinations for E12 + */ + +#define MAX_CMB 7442 // maximum combinations for E12 + + std::array cmb_lut; // intermediate 2R combinations + std::array results; // 2R, 3R and 4R results + uint32_t rb_state = E6; // Radio Button State + uint32_t cb_state = false; // Check Box 4R enable + double reqR; // required Resistor + +/** + * Build all 2R combinations from the selected E-serie values + * + * Pre-calculated value combinations are saved in intermediate look up table cmb_lut + * @return is the number of found combinations what also depends from exclude values +*/ + uint32_t combine2( void ); + +/** + * Search for closest two component solution + * + * @param aSize is the number of valid 2R combinations in cmb_lut on where to search + * The 2R result with smallest deviation will be saved in results +*/ + void simple_solution( uint32_t aSize ); + +/** + * Check if there is a better 3 R solution than previous one using only two components. + * + * @param aSize gives the number of available combinations to be checked inside cmb_lut + * Therefore cmb_lut is combinated with the primary E-serie look up table + * The 3R result with smallest deviation will be saved in results if better than 2R + */ + void combine3( uint32_t aSize ); + +/** + * Check if there is a better four component solution. + * + * @param aSsize gives the number of 2R combinations to be checked inside cmb_lut + * Occupied calculation time depends from number of available E-serie values + * with the power of 4 why execution for E12 is conditional with 4R check box + * for the case the previously found 3R solution is already exact +*/ + void combine4( uint32_t aSize ); + +/* + * Strip redundant braces from three component result + * + * Example: R1+(R2+R3) become R1+R2+R3 + * and R1|(R2|R3) become R1|R2|R3 + * while R1+(R2|R3) or (R1+R2)|R3) remains untouched + */ + void strip3( void ); + +/* + * Strip redundant braces from four component result + * + * Example: (R1+R2)+(R3+R4) become R1+R2+R3+R4 + * and (R1|R2)|(R2|R3) become R1|R2|R3|R4 + * while (R1+R2)|(R3+R4) remains untouched + */ + void strip4( void ); + +public: + +/** + * If any value of the selected E-serie not available, it can be entered as an exclude value. + * + * @param aValue is the value to exclude from calculation + * Values to exclude are set to false in the selected E-serie source lookup table + */ + void exclude( double aValue ); + +/** + * initialize next calculation and erase results from previous calculation + */ + void new_calc( void ); + +/** + * called on calculate button to execute all the 2R, 3R and 4R calculations + */ + void calculate( void ); + +/** + * Interface for CheckBox, RadioButton, RequriedResistor and calculated Results + */ + void set_4R_cb ( bool a_tb ); + bool get_4R_cb ( void ); + void set_rb ( uint32_t a_rb ); + uint32_t get_rb ( void ); + void set_reqR ( double aR ); + std::array get_rslt ( void ); +}; diff --git a/pcb_calculator/eserie_help.h b/pcb_calculator/eserie_help.h new file mode 100644 index 0000000000..29866e8be6 --- /dev/null +++ b/pcb_calculator/eserie_help.h @@ -0,0 +1,33 @@ +// Do not edit this file, it is autogenerated by CMake from the .md file +_HKI( "E-series defined in IEC 60063 are a widely accepted system of preferred\n" +"numbers for electronic components. Available values are approximately\n" +"equally spaced in a logarithmic scale. Although E-series are used for\n" +"Zener diodes, inductors and other components, this calculator is mainly\n" +"intended for resistors.\n" +"\n" +" E12: 1,0 1,2 1,5 1,8 2,2 2,7 3,3 3,9 4,7 5,6 6,8 8,2\n" +" E6: 1,0 - 1,5 - 2,2 - 3,3 - 4,7 - 6,8 -\n" +" E3: 1,0 - - - 2,2 - - - 4,7 - - -\n" +" E1: 1,0 - - - - - - - - - - -\n" +"If your design requires any resistor value which is not readily available,\n" +"this calculator will find a combination of standard E-series components to\n" +"create it. You can enter the required resistance from 0,0025 to 4000 KOhm. \n" +"Solutions using 3 or 4 resistors are given if a better match can be found. \n" +"The 4R checkbox option will take longer to process is considered for the E12\n" +"series only. Optionally it is possible to exclude up to two additional\n" +"values from the solution for the reason of being not available. If a\n" +"E-series value is entered to the required input field, it is always excluded\n" +"from any solution as it is assumed that this value is unavailable.\n" +"\n" +"Solutions are given in the following formats:\n" +"\n" +" R1 + R2 +...+ Rn resistors in series\n" +" R1 | R2 |...| Rn resistors in parallel\n" +" R1 + (R2|R3)... any combination of the above\n" +"__Example:__ Voltage dividers, commonly used for 1:10 range selection\n" +"require resistor ratio values 1:9. Unfortunately the \"9\" is a value, what\n" +"is not even in the E192 series available. Deviation of 1% and more is yet\n" +"unacceptable for 8 bit accuracy. For a required resistor value of 9 KOhm,\n" +"the calculator suggests the E6 values 2k2 + 6k8 in series as a possible\n" +"exact solution.\n" +"" ); diff --git a/pcb_calculator/eserie_help.md b/pcb_calculator/eserie_help.md new file mode 100644 index 0000000000..a634beb1d2 --- /dev/null +++ b/pcb_calculator/eserie_help.md @@ -0,0 +1,31 @@ +E-series defined in IEC 60063 are a widely accepted system of preferred +numbers for electronic components. Available values are approximately +equally spaced in a logarithmic scale. Although E-series are used for +Zener diodes, inductors and other components, this calculator is mainly +intended for resistors. + + E12: 1,0 1,2 1,5 1,8 2,2 2,7 3,3 3,9 4,7 5,6 6,8 8,2 + E6: 1,0 - 1,5 - 2,2 - 3,3 - 4,7 - 6,8 - + E3: 1,0 - - - 2,2 - - - 4,7 - - - + E1: 1,0 - - - - - - - - - - - +If your design requires any resistor value which is not readily available, +this calculator will find a combination of standard E-series components to +create it. You can enter the required resistance from 0,0025 to 4000 KOhm. +Solutions using 3 or 4 resistors are given if a better match can be found. +The 4R checkbox option will take longer to process is considered for the E12 +series only. Optionally it is possible to exclude up to two additional +values from the solution for the reason of being not available. If a +E-series value is entered to the required input field, it is always excluded +from any solution as it is assumed that this value is unavailable. + +Solutions are given in the following formats: + + R1 + R2 +...+ Rn resistors in series + R1 | R2 |...| Rn resistors in parallel + R1 + (R2|R3)... any combination of the above +__Example:__ Voltage dividers, commonly used for 1:10 range selection +require resistor ratio values 1:9. Unfortunately the "9" is a value, what +is not even in the E192 series available. Deviation of 1% and more is yet +unacceptable for 8 bit accuracy. For a required resistor value of 9 KOhm, +the calculator suggests the E6 values 2k2 + 6k8 in series as a possible +exact solution. diff --git a/pcb_calculator/pcb_calculator.h b/pcb_calculator/pcb_calculator.h index 742ae5a754..0f792f0158 100644 --- a/pcb_calculator/pcb_calculator.h +++ b/pcb_calculator/pcb_calculator.h @@ -67,7 +67,6 @@ private: std::vector m_attenuator_list; wxString m_lastSelectedRegulatorName; // last regulator name selected - public: PCB_CALCULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ); ~PCB_CALCULATOR_FRAME(); @@ -102,13 +101,31 @@ private: void SetDataFilename( const wxString& aFilename ); // Trace width / maximum current capability calculations. - /** * Function TW_Init * Read config and init dialog widgets values */ void TW_Init(); + /** + * E-Series Resistor calculator Panel + * Called on calculator start to display markdown formula explanations + */ + void ES_Init( void ); + + /** + * Called on calculate button and executes all E-series calculations + * + */ + + void OnCalculateESeries( wxCommandEvent& event ) override; + + /** + * Radio Buttons to select the E-serie for the resistor calculator + * @param event contains the radio button state + */ + void OnESerieSelection( wxCommandEvent& event ) override; + /** * Function TW_WriteConfig * Write Track width parameters in config diff --git a/pcb_calculator/pcb_calculator_frame.cpp b/pcb_calculator/pcb_calculator_frame.cpp index 039f15df02..af6b87660c 100644 --- a/pcb_calculator/pcb_calculator_frame.cpp +++ b/pcb_calculator/pcb_calculator_frame.cpp @@ -70,8 +70,9 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) : TranslineTypeSelection( m_currTransLineType ); m_TranslineSelection->SetSelection( m_currTransLineType ); - TW_Init(); - VS_Init(); + TW_Init(); // Track Width + VS_Init(); // Via Size + ES_Init(); // E-Series SetAttenuator( m_AttenuatorsSelection->GetSelection() );