pcb_calculator, transmission lines: some fixes:
- ensure settings are correctly saved after change in dialog - make reinit to defaults working - cosmetic enhancement
This commit is contained in:
parent
730cf80960
commit
f3eac6a12f
|
@ -74,6 +74,10 @@ void PANEL_TRANSLINE::ThemeChanged()
|
||||||
|
|
||||||
void PANEL_TRANSLINE::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg )
|
void PANEL_TRANSLINE::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg )
|
||||||
{
|
{
|
||||||
|
// Ensure parameters from current selection are up to date before saving
|
||||||
|
if( m_currTransLine )
|
||||||
|
TransfDlgDataToTranslineParams();
|
||||||
|
|
||||||
aCfg->m_TransLine.type = m_currTransLineType;
|
aCfg->m_TransLine.type = m_currTransLineType;
|
||||||
|
|
||||||
for( TRANSLINE_IDENT* transline : m_transline_list )
|
for( TRANSLINE_IDENT* transline : m_transline_list )
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This program source code file is part of KICAD, a free EDA CAD application.
|
* This program source code file is part of KICAD, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019 jean-pierre.charras
|
* Copyright (C) 2019 jean-pierre.charras
|
||||||
* Copyright (C) 1992-2019 Kicad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2023 Kicad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -30,23 +30,23 @@ wxArrayString StandardRelativeDielectricConstantList()
|
||||||
wxArrayString list;
|
wxArrayString list;
|
||||||
|
|
||||||
// EpsilonR ( relative dielectric constant) list
|
// EpsilonR ( relative dielectric constant) list
|
||||||
list.Add( wxT( "4.5 FR4" ) );
|
list.Add( wxT( "4.5 \tFR4" ) );
|
||||||
list.Add( wxT( "3.67 Isola FR408" ) );
|
list.Add( wxT( "3.67 \tIsola FR408" ) );
|
||||||
list.Add( wxT( "4.04 Isola 370HR" ) );
|
list.Add( wxT( "4.04 \tIsola 370HR" ) );
|
||||||
list.Add( wxT( "3.55 Rogers RO4003C" ) );
|
list.Add( wxT( "3.55 \tRogers RO4003C" ) );
|
||||||
list.Add( wxT( "3.66 Rogers R4350B" ) );
|
list.Add( wxT( "3.66 \tRogers R4350B" ) );
|
||||||
list.Add( wxT( "9.8 alumina (Al2O3)" ) );
|
list.Add( wxT( "9.8 \talumina (Al2O3)" ) );
|
||||||
list.Add( wxT( "3.78 fused quartz" ) );
|
list.Add( wxT( "3.78 \tfused quartz" ) );
|
||||||
list.Add( wxT( "3.38 RO4003" ) );
|
list.Add( wxT( "3.38 \tRO4003" ) );
|
||||||
list.Add( wxT( "2.2 RT/duroid 5880" ) );
|
list.Add( wxT( "2.2 \tRT/duroid 5880" ) );
|
||||||
list.Add( wxT( "10.2 RT/duroid 6010LM" ) );
|
list.Add( wxT( "10.2 \tRT/duroid 6010LM" ) );
|
||||||
list.Add( wxT( "2.1 teflon (PTFE)" ) );
|
list.Add( wxT( "2.1 \tteflon (PTFE)" ) );
|
||||||
list.Add( wxT( "4.0 PVC" ) );
|
list.Add( wxT( "4.0 \tPVC" ) );
|
||||||
list.Add( wxT( "2.3 PE" ) );
|
list.Add( wxT( "2.3 \tPE" ) );
|
||||||
list.Add( wxT( "6.6 beryllia (BeO)" ) );
|
list.Add( wxT( "6.6 \tberyllia (BeO)" ) );
|
||||||
list.Add( wxT( "8.7 aluminum nitride" ) );
|
list.Add( wxT( "8.7 \taluminum nitride" ) );
|
||||||
list.Add( wxT( "11.9 silicon" ) );
|
list.Add( wxT( "11.9 \tsilicon" ) );
|
||||||
list.Add( wxT( "12.9 GaAs" ) );
|
list.Add( wxT( "12.9 \tGaAs" ) );
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -58,24 +58,24 @@ wxArrayString StandardLossTangentList()
|
||||||
|
|
||||||
// List of current dielectric loss factor (tangent delta)
|
// List of current dielectric loss factor (tangent delta)
|
||||||
list.Clear();
|
list.Clear();
|
||||||
list.Add( wxT( "2e-2 FR4 @ 1GHz" ) );
|
list.Add( wxT( "2e-2 \tFR4 @ 1GHz" ) );
|
||||||
list.Add( wxT( "12e-3 Isola FR408 @ 2 GHz" ) );
|
list.Add( wxT( "12e-3 \tIsola FR408 @ 2 GHz" ) );
|
||||||
list.Add( wxT( "21e-3 Isola 370HR @ 2 GHz" ) );
|
list.Add( wxT( "21e-3 \tIsola 370HR @ 2 GHz" ) );
|
||||||
list.Add( wxT( "27e-4 Rogers RO4003C @ 10 GHz" ) );
|
list.Add( wxT( "27e-4 \tRogers RO4003C @ 10 GHz" ) );
|
||||||
list.Add( wxT( "21e-4 Rogers RO4003C @ 2.5 GHz" ) );
|
list.Add( wxT( "21e-4 \tRogers RO4003C @ 2.5 GHz" ) );
|
||||||
list.Add( wxT( "37e-4 Rogers RO4350B @ 10 GHz" ) );
|
list.Add( wxT( "37e-4 \tRogers RO4350B @ 10 GHz" ) );
|
||||||
list.Add( wxT( "31e-4 Rogers RO4350B @ 2.5 GHz" ) );
|
list.Add( wxT( "31e-4 \tRogers RO4350B @ 2.5 GHz" ) );
|
||||||
list.Add( wxT( "3e-4 beryllia @ 10GHz" ) );
|
list.Add( wxT( "3e-4 \tberyllia @ 10GHz" ) );
|
||||||
list.Add( wxT( "2e-4 aluminia (Al2O3) @ 10GHz" ) );
|
list.Add( wxT( "2e-4 \taluminia (Al2O3) @ 10GHz" ) );
|
||||||
list.Add( wxT( "1e-4 fused quartz @ 10GHz" ) );
|
list.Add( wxT( "1e-4 \tfused quartz @ 10GHz" ) );
|
||||||
list.Add( wxT( "2e-3 RO4003 @ 10GHz" ) );
|
list.Add( wxT( "2e-3 \tRO4003 @ 10GHz" ) );
|
||||||
list.Add( wxT( "9e-4 RT/duroid 5880 @ 10GHz" ) );
|
list.Add( wxT( "9e-4 \tRT/duroid 5880 @ 10GHz" ) );
|
||||||
list.Add( wxT( "2e-4 teflon (PTFE) @ 1MHz" ) );
|
list.Add( wxT( "2e-4 \tteflon (PTFE) @ 1MHz" ) );
|
||||||
list.Add( wxT( "5e-2 PVC @ 1MHz" ) );
|
list.Add( wxT( "5e-2 \tPVC @ 1MHz" ) );
|
||||||
list.Add( wxT( "2e-4 PE @ 1MHz" ) );
|
list.Add( wxT( "2e-4 \tPE @ 1MHz" ) );
|
||||||
list.Add( wxT( "1e-3 aluminum nitride @ 10GHz" ) );
|
list.Add( wxT( "1e-3 \taluminum nitride @ 10GHz" ) );
|
||||||
list.Add( wxT( "0.015 silicon @ 10GHz" ) );
|
list.Add( wxT( "0.015 \tsilicon @ 10GHz" ) );
|
||||||
list.Add( wxT( "0.002 GaAs @ 10GHz" ) );
|
list.Add( wxT( "0.002 \tGaAs @ 10GHz" ) );
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -87,16 +87,16 @@ wxArrayString StandardResistivityList()
|
||||||
|
|
||||||
// Specific resistance list in ohms*meters (rho):
|
// Specific resistance list in ohms*meters (rho):
|
||||||
list.Clear();
|
list.Clear();
|
||||||
list.Add( wxT( "2.4e-8 gold" ) );
|
list.Add( wxT( "2.4e-8 \tgold" ) );
|
||||||
list.Add( wxT( "1.72e-8 copper" ) );
|
list.Add( wxT( "1.72e-8 \tcopper" ) );
|
||||||
list.Add( wxT( "1.62e-8 silver" ) );
|
list.Add( wxT( "1.62e-8 \tsilver" ) );
|
||||||
list.Add( wxT( "12.4e-8 tin" ) );
|
list.Add( wxT( "12.4e-8 \ttin" ) );
|
||||||
list.Add( wxT( "10.5e-8 platinum" ) );
|
list.Add( wxT( "10.5e-8 \tplatinum" ) );
|
||||||
list.Add( wxT( "2.62e-8 aluminum" ) );
|
list.Add( wxT( "2.62e-8 \taluminum" ) );
|
||||||
list.Add( wxT( "6.9e-8 nickel" ) );
|
list.Add( wxT( "6.9e-8 \tnickel" ) );
|
||||||
list.Add( wxT( "3.9e-8 brass (66Cu 34Zn)" ) );
|
list.Add( wxT( "3.9e-8 \tbrass (66Cu 34Zn)" ) );
|
||||||
list.Add( wxT( "9.71e-8 iron" ) );
|
list.Add( wxT( "9.71e-8 \tiron" ) );
|
||||||
list.Add( wxT( "6.0e-8 zinc" ) );
|
list.Add( wxT( "6.0e-8 \tzinc" ) );
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -108,11 +108,11 @@ wxArrayString StandardCableConductorList()
|
||||||
// Lined the same as StandardCableTempCoefList
|
// Lined the same as StandardCableTempCoefList
|
||||||
// Specific resistance list in ohms*meters (rho):
|
// Specific resistance list in ohms*meters (rho):
|
||||||
list.Clear();
|
list.Clear();
|
||||||
list.Add( wxT( "1.72e-8 Cu, Copper" ) );
|
list.Add( wxT( "1.72e-8 \tCu, Copper" ) );
|
||||||
list.Add( wxT( "2.62e-8 Al, Aluminum" ) );
|
list.Add( wxT( "2.62e-8 \tAl, Aluminum" ) );
|
||||||
list.Add( wxT( "100e-8 NiCr, Nichrome" ) );
|
list.Add( wxT( "100e-8 \tNiCr, Nichrome" ) );
|
||||||
list.Add( wxT( "9.71e-8 Fe, Iron" ) );
|
list.Add( wxT( "9.71e-8 \tFe, Iron" ) );
|
||||||
list.Add( wxT( "5.6e-8 W, Tungsten" ) );
|
list.Add( wxT( "5.6e-8 \tW, Tungsten" ) );
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -123,11 +123,11 @@ wxArrayString StandardCableTempCoefList()
|
||||||
// Lined the same as StandardCableConductorList
|
// Lined the same as StandardCableConductorList
|
||||||
// Specific temperature coefficient (20C):
|
// Specific temperature coefficient (20C):
|
||||||
list.Clear();
|
list.Clear();
|
||||||
list.Add( wxT( "3.93e-3 Cu, Copper" ) );
|
list.Add( wxT( "3.93e-3 \tCu, Copper" ) );
|
||||||
list.Add( wxT( "4.29e-3 Al, Aluminum" ) );
|
list.Add( wxT( "4.29e-3 \tAl, Aluminum" ) );
|
||||||
list.Add( wxT( "0.4e-3 NiCr, Nichrome" ) );
|
list.Add( wxT( "0.4e-3 \tNiCr, Nichrome" ) );
|
||||||
list.Add( wxT( "5e-3 Fe, Iron" ) );
|
list.Add( wxT( "5e-3 \tFe, Iron" ) );
|
||||||
list.Add( wxT( "4.5e-3 W, Tungsten" ) );
|
list.Add( wxT( "4.5e-3 \tW, Tungsten" ) );
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,7 +150,7 @@ PCB_CALCULATOR_SETTINGS::PCB_CALCULATOR_SETTINGS() :
|
||||||
new PARAM<double>( "wavelength.permeability", &m_wavelength.permeability, 1 ) );
|
new PARAM<double>( "wavelength.permeability", &m_wavelength.permeability, 1 ) );
|
||||||
|
|
||||||
m_params.emplace_back(
|
m_params.emplace_back(
|
||||||
new PARAM<double>( "wavelength.permittivity", &m_wavelength.permittivity, 4.6 ) );
|
new PARAM<double>( "wavelength.permittivity", &m_wavelength.permittivity, 4.5 ) );
|
||||||
|
|
||||||
m_params.emplace_back(
|
m_params.emplace_back(
|
||||||
new PARAM<int>( "wavelength.frequencyUnit", &m_wavelength.frequencyUnit, 0 ) );
|
new PARAM<int>( "wavelength.frequencyUnit", &m_wavelength.frequencyUnit, 0 ) );
|
||||||
|
|
|
@ -340,6 +340,10 @@ void PANEL_TRANSLINE::TransfDlgDataToTranslineParams()
|
||||||
|
|
||||||
void PANEL_TRANSLINE::OnTranslineSelection( wxCommandEvent& event )
|
void PANEL_TRANSLINE::OnTranslineSelection( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
|
// Ensure parameters from current selection are taken in account before switching to a new selection
|
||||||
|
if( m_currTransLine )
|
||||||
|
TransfDlgDataToTranslineParams();
|
||||||
|
|
||||||
enum TRANSLINE_TYPE_ID id = (enum TRANSLINE_TYPE_ID) event.GetSelection();
|
enum TRANSLINE_TYPE_ID id = (enum TRANSLINE_TYPE_ID) event.GetSelection();
|
||||||
|
|
||||||
TranslineTypeSelection( id );
|
TranslineTypeSelection( id );
|
||||||
|
@ -353,9 +357,17 @@ void PANEL_TRANSLINE::OnTranslineSelection( wxCommandEvent& event )
|
||||||
|
|
||||||
void PANEL_TRANSLINE::OnTransLineResetButtonClick( wxCommandEvent& event )
|
void PANEL_TRANSLINE::OnTransLineResetButtonClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
TranslineTypeSelection( DEFAULT_TYPE );
|
// Initialize param values to default value
|
||||||
m_TranslineSelection->SetSelection( DEFAULT_TYPE );
|
TRANSLINE_IDENT* tr_ident = m_transline_list[m_currTransLineType];
|
||||||
|
|
||||||
|
for( unsigned ii = 0; ii < tr_ident->GetPrmsCount(); ii++ )
|
||||||
|
{
|
||||||
|
TRANSLINE_PRM* prm = tr_ident->GetPrm( ii );
|
||||||
|
prm->m_Value = prm->m_DefaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reinit displayed values
|
||||||
|
TranslineTypeSelection( m_currTransLineType );
|
||||||
|
|
||||||
GetSizer()->Layout();
|
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,7 @@ TRANSLINE_PRM::TRANSLINE_PRM( PRM_TYPE aType, PRMS_ID aId, const char* aKeywordC
|
||||||
m_KeyWord = aKeywordCfg;
|
m_KeyWord = aKeywordCfg;
|
||||||
m_ToolTip = aToolTip;
|
m_ToolTip = aToolTip;
|
||||||
m_Value = aValue;
|
m_Value = aValue;
|
||||||
|
m_DefaultValue = aValue;
|
||||||
m_ConvUnit = aConvUnit;
|
m_ConvUnit = aConvUnit;
|
||||||
m_ValueCtrl = nullptr;
|
m_ValueCtrl = nullptr;
|
||||||
m_UnitCtrl = nullptr;
|
m_UnitCtrl = nullptr;
|
||||||
|
@ -90,7 +91,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
|
||||||
AddPrm( new TRANSLINE_PRM( PRM_TYPE_SUBS, EPSILONR_PRM,
|
AddPrm( new TRANSLINE_PRM( PRM_TYPE_SUBS, EPSILONR_PRM,
|
||||||
"Er", wxT( "εr" ),
|
"Er", wxT( "εr" ),
|
||||||
_( "Substrate relative permittivity (dielectric constant)" ),
|
_( "Substrate relative permittivity (dielectric constant)" ),
|
||||||
4.6, false ) );
|
4.5, false ) );
|
||||||
AddPrm( new TRANSLINE_PRM( PRM_TYPE_SUBS, TAND_PRM,
|
AddPrm( new TRANSLINE_PRM( PRM_TYPE_SUBS, TAND_PRM,
|
||||||
"TanD", wxT( "tan δ" ),
|
"TanD", wxT( "tan δ" ),
|
||||||
_( "Dielectric loss (dissipation factor)" ),
|
_( "Dielectric loss (dissipation factor)" ),
|
||||||
|
|
|
@ -82,6 +82,7 @@ public:
|
||||||
wxString m_DlgLabel; // name for this parameter in dialog (usually translated
|
wxString m_DlgLabel; // name for this parameter in dialog (usually translated
|
||||||
wxString m_ToolTip; // Tool tip for this parameter in dialog
|
wxString m_ToolTip; // Tool tip for this parameter in dialog
|
||||||
double m_Value; // Value for this parameter in dialog
|
double m_Value; // Value for this parameter in dialog
|
||||||
|
double m_DefaultValue; // Default value for this parameter from CTOR build
|
||||||
double m_NormalizedValue; // actual value for this parameter
|
double m_NormalizedValue; // actual value for this parameter
|
||||||
bool m_ConvUnit; // true if an unit selector must be used
|
bool m_ConvUnit; // true if an unit selector must be used
|
||||||
void* m_ValueCtrl; // The text ctrl containing the value in dialog
|
void* m_ValueCtrl; // The text ctrl containing the value in dialog
|
||||||
|
|
Loading…
Reference in New Issue