KiCad PCB EDA Suite
PANEL_WAVELENGTH Class Reference

#include <panel_wavelength.h>

Inheritance diagram for PANEL_WAVELENGTH:
PANEL_WAVELENGTH_BASE CALCULATOR_PANEL

Public Member Functions

 PANEL_WAVELENGTH (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
 
 ~PANEL_WAVELENGTH ()
 
void LoadSettings (PCB_CALCULATOR_SETTINGS *aCfg) override
 Load the settings into the panel. More...
 
void SaveSettings (PCB_CALCULATOR_SETTINGS *aCfg) override
 Save the settings from the panel. More...
 
void ThemeChanged () override
 Update UI elements of the panel when the theme changes to ensure the images and fonts/colors are appropriate for the new theme. More...
 
void OnFrequencyChange (wxCommandEvent &event) override
 
void OnPeriodChange (wxCommandEvent &event) override
 
void OnWavelengthVacuumChange (wxCommandEvent &event) override
 
void OnWavelengthMediumChange (wxCommandEvent &event) override
 
void OnPermittivityChange (wxCommandEvent &event) override
 
void OnPermeabilityChange (wxCommandEvent &event) override
 
void OnButtonPermittivity (wxCommandEvent &event) override
 

Protected Attributes

wxStaticText * m_staticText18
 
wxTextCtrl * m_frequencyCtrl
 
UNIT_SELECTOR_FREQUENCYm_frequencyUnit
 
wxStaticText * m_staticText181
 
wxTextCtrl * m_periodCtrl
 
UNIT_SELECTOR_TIMEm_periodUnit
 
wxStaticText * m_staticText1811
 
wxTextCtrl * m_wavelengthVacuumCtrl
 
UNIT_SELECTOR_LEN_CABLEm_wavelengthVacuumUnit
 
wxStaticText * m_staticText18111
 
wxTextCtrl * m_wavelengthMediumCtrl
 
UNIT_SELECTOR_LEN_CABLEm_wavelengthMediumUnit
 
wxStaticText * m_staticText181112
 
wxTextCtrl * m_speedCtrl
 
UNIT_SELECTOR_SPEEDm_speedUnit
 
wxStaticText * m_staticText181111
 
wxTextCtrl * m_permittivityCtrl
 
wxButton * m_button1
 
wxStaticText * m_staticText42
 
wxTextCtrl * m_permeabilityCtrl
 

Private Member Functions

void update (double aFrequency)
 
void updateUnits (wxCommandEvent &aEvent) override
 

Private Attributes

double m_permittivity = 1
 
double m_permeability = 1
 
double m_frequency = 1
 
bool m_updatingFrequency = false
 
bool m_updatingPeriod = false
 
bool m_updatingWavelengthVacuum = false
 
bool m_updatingWavelengthMedium = false
 
bool m_updatingSpeed = false
 
bool m_updatingUI = false
 

Detailed Description

Definition at line 27 of file panel_wavelength.h.

Constructor & Destructor Documentation

◆ PANEL_WAVELENGTH()

PANEL_WAVELENGTH::PANEL_WAVELENGTH ( wxWindow *  parent,
wxWindowID  id = wxID_ANY,
const wxPoint &  pos = wxDefaultPosition,
const wxSize &  size = wxDefaultSize,
long  style = wxTAB_TRAVERSAL,
const wxString &  name = wxEmptyString 
)

Definition at line 31 of file panel_wavelength.cpp.

32 :
33 PANEL_WAVELENGTH_BASE( parent, id, pos, size, style, name )
34{
35 // Set the min size of wxTextCtrls showing long values
36 wxSize minSize = m_speedCtrl->GetSize();
37 int minWidth = m_speedCtrl->GetTextExtent( wxT( "1.234567890E+99" ) ).x;
38
39 m_speedCtrl->SetMinSize( wxSize( minWidth, minSize.GetHeight() ) );
40
41 Layout();
42}
const char * name
Definition: DXF_plotter.cpp:56
PANEL_WAVELENGTH_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(538, 453), long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
const int minSize
Push and Shove router track width and via size dialog.

References PANEL_WAVELENGTH_BASE::m_speedCtrl, and minSize.

◆ ~PANEL_WAVELENGTH()

PANEL_WAVELENGTH::~PANEL_WAVELENGTH ( )
inline

Definition at line 33 of file panel_wavelength.h.

33{};

Member Function Documentation

◆ LoadSettings()

void PANEL_WAVELENGTH::LoadSettings ( PCB_CALCULATOR_SETTINGS aCfg)
overridevirtual

Load the settings into the panel.

Parameters
aCfgis the settings structure to load from

Implements CALCULATOR_PANEL.

Definition at line 58 of file panel_wavelength.cpp.

59{
60 m_frequencyUnit->SetSelection( aCfg->m_wavelength.frequencyUnit );
61 m_periodUnit->SetSelection( aCfg->m_wavelength.periodUnit );
64 m_speedUnit->SetSelection( aCfg->m_wavelength.speedUnit );
65
69
70 wxString value;
71 value = wxString( "" ) << m_permittivity;
72 m_permittivityCtrl->SetValue( value );
73 value = wxString( "" ) << m_permeability;
74 m_permeabilityCtrl->SetValue( value );
75
77}
UNIT_SELECTOR_FREQUENCY * m_frequencyUnit
UNIT_SELECTOR_TIME * m_periodUnit
UNIT_SELECTOR_LEN_CABLE * m_wavelengthVacuumUnit
UNIT_SELECTOR_LEN_CABLE * m_wavelengthMediumUnit
UNIT_SELECTOR_SPEED * m_speedUnit
void update(double aFrequency)

References PCB_CALCULATOR_SETTINGS::WAVELENGTH::frequency, PCB_CALCULATOR_SETTINGS::WAVELENGTH::frequencyUnit, m_frequency, PANEL_WAVELENGTH_BASE::m_frequencyUnit, PANEL_WAVELENGTH_BASE::m_periodUnit, m_permeability, PANEL_WAVELENGTH_BASE::m_permeabilityCtrl, m_permittivity, PANEL_WAVELENGTH_BASE::m_permittivityCtrl, PANEL_WAVELENGTH_BASE::m_speedUnit, PCB_CALCULATOR_SETTINGS::m_wavelength, PANEL_WAVELENGTH_BASE::m_wavelengthMediumUnit, PANEL_WAVELENGTH_BASE::m_wavelengthVacuumUnit, PCB_CALCULATOR_SETTINGS::WAVELENGTH::periodUnit, PCB_CALCULATOR_SETTINGS::WAVELENGTH::permeability, PCB_CALCULATOR_SETTINGS::WAVELENGTH::permittivity, PCB_CALCULATOR_SETTINGS::WAVELENGTH::speedUnit, update(), PCB_CALCULATOR_SETTINGS::WAVELENGTH::wavelengthMediumUnit, and PCB_CALCULATOR_SETTINGS::WAVELENGTH::wavelengthVacuumUnit.

◆ OnButtonPermittivity()

void PANEL_WAVELENGTH::OnButtonPermittivity ( wxCommandEvent &  event)
overridevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 248 of file panel_wavelength.cpp.

249{
250 wxArrayString list = StandardRelativeDielectricConstantList();
251 list.Add( "" ); // Add an empty line for no selection
252
253 // Find the previous choice index:
254 wxString prevChoiceStr = m_permittivityCtrl->GetValue();
255 int prevChoice = 0;
256 findMatch( list, prevChoiceStr, prevChoice );
257
258 int index = wxGetSingleChoiceIndex( wxEmptyString, _( "Relative Dielectric Constants" ), list,
259 prevChoice );
260
261 if( index >= 0 && !list.Item( index ).IsEmpty() )
262 {
263 m_permittivityCtrl->SetValue( list.Item( index ).BeforeFirst( ' ' ) );
264 // wx automatically calls onPermittivity()
265 }
266}
wxArrayString StandardRelativeDielectricConstantList()
Definition: common_data.cpp:28
#define _(s)
bool findMatch(wxArrayString &aList, const wxString &aValue, int &aIdx)

References _, findMatch(), PANEL_WAVELENGTH_BASE::m_permittivityCtrl, and StandardRelativeDielectricConstantList().

◆ OnFrequencyChange()

void PANEL_WAVELENGTH::OnFrequencyChange ( wxCommandEvent &  event)
overridevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 133 of file panel_wavelength.cpp.

134{
135 double value;
136
137 if( m_updatingUI )
138 {
139 return;
140 }
141
142 wxString input = m_frequencyCtrl->GetValue();
143
144 if( input.ToDouble( &value ) )
145 {
146 if( value > 0 )
147 {
148 m_updatingFrequency = true;
149 update( value * m_frequencyUnit->GetUnitScale() );
150 }
151 }
152}
double GetUnitScale() override
Function GetUnitScale.

References UNIT_SELECTOR_FREQUENCY::GetUnitScale(), PANEL_WAVELENGTH_BASE::m_frequencyCtrl, PANEL_WAVELENGTH_BASE::m_frequencyUnit, m_updatingFrequency, m_updatingUI, and update().

◆ OnPeriodChange()

void PANEL_WAVELENGTH::OnPeriodChange ( wxCommandEvent &  event)
overridevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 154 of file panel_wavelength.cpp.

155{
156 double value;
157
158 if( m_updatingUI )
159 {
160 return;
161 }
162
163 wxString input = m_periodCtrl->GetValue();
164
165 if( input.ToDouble( &value ) )
166 {
167 if( value > 0 )
168 {
169 m_updatingPeriod = true;
170 update( 1 / ( value * m_periodUnit->GetUnitScale() ) );
171 }
172 }
173}
double GetUnitScale() override
Function GetUnitScale.

References UNIT_SELECTOR_TIME::GetUnitScale(), PANEL_WAVELENGTH_BASE::m_periodCtrl, PANEL_WAVELENGTH_BASE::m_periodUnit, m_updatingPeriod, m_updatingUI, and update().

◆ OnPermeabilityChange()

void PANEL_WAVELENGTH::OnPermeabilityChange ( wxCommandEvent &  event)
overridevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 233 of file panel_wavelength.cpp.

234{
235 double value;
236 wxString input = m_permeabilityCtrl->GetValue();
237
238 if( input.ToDouble( &value ) )
239 {
240 if( value >= 1 )
241 {
242 m_permeability = value;
244 }
245 }
246}

References m_frequency, m_permeability, PANEL_WAVELENGTH_BASE::m_permeabilityCtrl, and update().

◆ OnPermittivityChange()

void PANEL_WAVELENGTH::OnPermittivityChange ( wxCommandEvent &  event)
overridevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 218 of file panel_wavelength.cpp.

219{
220 double value;
221 wxString input = m_permittivityCtrl->GetValue();
222
223 if( input.ToDouble( &value ) )
224 {
225 if( value >= 1 )
226 {
227 m_permittivity = value;
229 }
230 }
231}

References m_frequency, m_permittivity, PANEL_WAVELENGTH_BASE::m_permittivityCtrl, and update().

◆ OnWavelengthMediumChange()

void PANEL_WAVELENGTH::OnWavelengthMediumChange ( wxCommandEvent &  event)
overridevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 197 of file panel_wavelength.cpp.

198{
199 if( m_updatingUI )
200 {
201 return;
202 }
203
204 double value;
205 wxString input = m_wavelengthMediumCtrl->GetValue();
206
207 if( input.ToDouble( &value ) )
208 {
209 if( value > 0 )
210 {
213 update( SPEED_LIGHT / value / sqrt( m_permittivity * m_permeability ) );
214 }
215 }
216};
double GetUnitScale() override
Function GetUnitScale.
#define SPEED_LIGHT

References UNIT_SELECTOR_LEN_CABLE::GetUnitScale(), m_permeability, m_permittivity, m_updatingUI, m_updatingWavelengthMedium, PANEL_WAVELENGTH_BASE::m_wavelengthMediumCtrl, PANEL_WAVELENGTH_BASE::m_wavelengthMediumUnit, SPEED_LIGHT, and update().

◆ OnWavelengthVacuumChange()

void PANEL_WAVELENGTH::OnWavelengthVacuumChange ( wxCommandEvent &  event)
overridevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 175 of file panel_wavelength.cpp.

176{
177 if( m_updatingUI )
178 {
179 return;
180 }
181
182 double value;
183 wxString input = m_wavelengthVacuumCtrl->GetValue();
184
185 if( input.ToDouble( &value ) )
186 {
187 if( value > 0 )
188 {
191 update( SPEED_LIGHT / value );
192 }
193 }
194};

References UNIT_SELECTOR_LEN_CABLE::GetUnitScale(), m_updatingUI, m_updatingWavelengthVacuum, PANEL_WAVELENGTH_BASE::m_wavelengthVacuumCtrl, PANEL_WAVELENGTH_BASE::m_wavelengthVacuumUnit, SPEED_LIGHT, and update().

◆ SaveSettings()

void PANEL_WAVELENGTH::SaveSettings ( PCB_CALCULATOR_SETTINGS aCfg)
overridevirtual

◆ ThemeChanged()

void PANEL_WAVELENGTH::ThemeChanged ( )
inlineoverridevirtual

Update UI elements of the panel when the theme changes to ensure the images and fonts/colors are appropriate for the new theme.

Implements CALCULATOR_PANEL.

Definition at line 38 of file panel_wavelength.h.

38{};

◆ update()

void PANEL_WAVELENGTH::update ( double  aFrequency)
private

Definition at line 85 of file panel_wavelength.cpp.

86{
87 m_updatingUI = true;
88 wxString value;
89
91 {
92 value = wxString( "" ) << aFrequency / m_frequencyUnit->GetUnitScale();
93 m_frequencyCtrl->SetValue( value );
94 }
95
96 if( !m_updatingPeriod )
97 {
98 value = wxString( "" ) << 1 / aFrequency / m_periodUnit->GetUnitScale();
99 m_periodCtrl->SetValue( value );
100 }
101
103 {
104 value = wxString( "" ) << SPEED_LIGHT / aFrequency / m_wavelengthVacuumUnit->GetUnitScale();
105 m_wavelengthVacuumCtrl->SetValue( value );
106 }
107
109 {
110 value = wxString( "" ) << SPEED_LIGHT / aFrequency / sqrt( m_permittivity * m_permeability )
112 m_wavelengthMediumCtrl->SetValue( value );
113 }
114
115 if( !m_updatingSpeed )
116 {
117 value = wxString( "" ) << SPEED_LIGHT / sqrt( m_permittivity * m_permeability )
119 m_speedCtrl->SetValue( value );
120 }
121
122 m_frequency = aFrequency;
123
124 m_updatingFrequency = false;
125 m_updatingPeriod = false;
128 m_updatingSpeed = false;
129
130 m_updatingUI = false;
131}
double GetUnitScale() override
Function GetUnitScale.

References UNIT_SELECTOR_FREQUENCY::GetUnitScale(), UNIT_SELECTOR_LEN_CABLE::GetUnitScale(), UNIT_SELECTOR_SPEED::GetUnitScale(), UNIT_SELECTOR_TIME::GetUnitScale(), m_frequency, PANEL_WAVELENGTH_BASE::m_frequencyCtrl, PANEL_WAVELENGTH_BASE::m_frequencyUnit, PANEL_WAVELENGTH_BASE::m_periodCtrl, PANEL_WAVELENGTH_BASE::m_periodUnit, m_permeability, m_permittivity, PANEL_WAVELENGTH_BASE::m_speedCtrl, PANEL_WAVELENGTH_BASE::m_speedUnit, m_updatingFrequency, m_updatingPeriod, m_updatingSpeed, m_updatingUI, m_updatingWavelengthMedium, m_updatingWavelengthVacuum, PANEL_WAVELENGTH_BASE::m_wavelengthMediumCtrl, PANEL_WAVELENGTH_BASE::m_wavelengthMediumUnit, PANEL_WAVELENGTH_BASE::m_wavelengthVacuumCtrl, PANEL_WAVELENGTH_BASE::m_wavelengthVacuumUnit, and SPEED_LIGHT.

Referenced by LoadSettings(), OnFrequencyChange(), OnPeriodChange(), OnPermeabilityChange(), OnPermittivityChange(), OnWavelengthMediumChange(), OnWavelengthVacuumChange(), and updateUnits().

◆ updateUnits()

void PANEL_WAVELENGTH::updateUnits ( wxCommandEvent &  aEvent)
overrideprivatevirtual

Reimplemented from PANEL_WAVELENGTH_BASE.

Definition at line 79 of file panel_wavelength.cpp.

80{
82}

References m_frequency, and update().

Member Data Documentation

◆ m_button1

wxButton* PANEL_WAVELENGTH_BASE::m_button1
protectedinherited

◆ m_frequency

double PANEL_WAVELENGTH::m_frequency = 1
private

◆ m_frequencyCtrl

wxTextCtrl* PANEL_WAVELENGTH_BASE::m_frequencyCtrl
protectedinherited

◆ m_frequencyUnit

◆ m_periodCtrl

wxTextCtrl* PANEL_WAVELENGTH_BASE::m_periodCtrl
protectedinherited

◆ m_periodUnit

◆ m_permeability

double PANEL_WAVELENGTH::m_permeability = 1
private

◆ m_permeabilityCtrl

wxTextCtrl* PANEL_WAVELENGTH_BASE::m_permeabilityCtrl
protectedinherited

◆ m_permittivity

double PANEL_WAVELENGTH::m_permittivity = 1
private

◆ m_permittivityCtrl

wxTextCtrl* PANEL_WAVELENGTH_BASE::m_permittivityCtrl
protectedinherited

◆ m_speedCtrl

wxTextCtrl* PANEL_WAVELENGTH_BASE::m_speedCtrl
protectedinherited

◆ m_speedUnit

◆ m_staticText18

wxStaticText* PANEL_WAVELENGTH_BASE::m_staticText18
protectedinherited

◆ m_staticText181

wxStaticText* PANEL_WAVELENGTH_BASE::m_staticText181
protectedinherited

◆ m_staticText1811

wxStaticText* PANEL_WAVELENGTH_BASE::m_staticText1811
protectedinherited

◆ m_staticText18111

wxStaticText* PANEL_WAVELENGTH_BASE::m_staticText18111
protectedinherited

◆ m_staticText181111

wxStaticText* PANEL_WAVELENGTH_BASE::m_staticText181111
protectedinherited

◆ m_staticText181112

wxStaticText* PANEL_WAVELENGTH_BASE::m_staticText181112
protectedinherited

◆ m_staticText42

wxStaticText* PANEL_WAVELENGTH_BASE::m_staticText42
protectedinherited

◆ m_updatingFrequency

bool PANEL_WAVELENGTH::m_updatingFrequency = false
private

Definition at line 56 of file panel_wavelength.h.

Referenced by OnFrequencyChange(), and update().

◆ m_updatingPeriod

bool PANEL_WAVELENGTH::m_updatingPeriod = false
private

Definition at line 57 of file panel_wavelength.h.

Referenced by OnPeriodChange(), and update().

◆ m_updatingSpeed

bool PANEL_WAVELENGTH::m_updatingSpeed = false
private

Definition at line 60 of file panel_wavelength.h.

Referenced by update().

◆ m_updatingUI

bool PANEL_WAVELENGTH::m_updatingUI = false
private

◆ m_updatingWavelengthMedium

bool PANEL_WAVELENGTH::m_updatingWavelengthMedium = false
private

Definition at line 59 of file panel_wavelength.h.

Referenced by OnWavelengthMediumChange(), and update().

◆ m_updatingWavelengthVacuum

bool PANEL_WAVELENGTH::m_updatingWavelengthVacuum = false
private

Definition at line 58 of file panel_wavelength.h.

Referenced by OnWavelengthVacuumChange(), and update().

◆ m_wavelengthMediumCtrl

wxTextCtrl* PANEL_WAVELENGTH_BASE::m_wavelengthMediumCtrl
protectedinherited

◆ m_wavelengthMediumUnit

◆ m_wavelengthVacuumCtrl

wxTextCtrl* PANEL_WAVELENGTH_BASE::m_wavelengthVacuumCtrl
protectedinherited

◆ m_wavelengthVacuumUnit


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