49 const wxSize& size,
long style,
const wxString&
name ) :
57 int minWidth =
m_ResRequired->GetTextExtent( wxT(
"XXX.XXX" ) ).GetWidth();
64 minWidth =
m_ESeriesError2R->GetTextExtent( wxT(
"XX" ) +
_(
"Exact" ) ).GetWidth();
76 GetSizer()->SetSizeHints(
this );
106 if( std::isnan( reqr ) || reqr < min_target_value || reqr >
max_target_value )
108 wxMessageBox( wxString::Format(
_(
"Incorrect required resistance value: %s" ),
113 wxBusyCursor busyCursor;
130 catch(
const std::exception& exc )
132 wxMessageBox( wxString::Format(
"Internal error: %s", exc.what() ) );
136 auto showResult = [reqr](
const std::optional<RESISTANCE>& aResult, wxTextCtrl* aFormulaField,
137 wxTextCtrl* aErrorField )
144 double sol = aResult->value;
145 double error = ( sol / reqr - 1 ) * 100;
150 es.Printf(
"<%.2f", 0.01 );
152 es.Printf(
"%+.2f", error );
156 fs =
_(
"Not worth using" );
160 aFormulaField->SetValue( fs );
161 aErrorField->SetValue( es );
172 if( event.GetEventObject() ==
m_e1 )
174 else if( event.GetEventObject() ==
m_e3 )
176 else if( event.GetEventObject() ==
m_e12 )
178 else if( event.GetEventObject() ==
m_e24 )
bool SetPage(const wxString &aSource) override
Class PANEL_R_CALCULATOR_BASE.
wxTextCtrl * m_ResRequired
wxTextCtrl * m_ESeriesError4R
wxTextCtrl * m_ESeries_Sol3R
wxStaticText * m_reqResUnits
wxTextCtrl * m_ResExclude2
wxTextCtrl * m_ESeriesError3R
wxTextCtrl * m_ESeries_Sol4R
wxTextCtrl * m_ESeriesError2R
wxStaticText * m_exclude2Units
wxStaticText * m_exclude1Units
wxTextCtrl * m_ESeries_Sol2R
wxTextCtrl * m_ResExclude1
HTML_WINDOW * m_panelESeriesHelp
PANEL_R_CALCULATOR(wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxEmptyString)
void OnCalculateESeries(wxCommandEvent &event) override
Called on calculate button and executes all E-series calculations.
void LoadSettings(PCB_CALCULATOR_SETTINGS *aCfg) override
Load the settings into the panel.
void ThemeChanged() override
Update UI elements of the panel when the theme changes to ensure the images and fonts/colors are appr...
void OnESeriesSelection(wxCommandEvent &event) override
Radio Buttons to select the E-series for the resistor calculator.
void SaveSettings(PCB_CALCULATOR_SETTINGS *aCfg) override
Save the settings from the panel.
void Exclude(double aValue)
If any value of the selected E-series not available, it can be entered as an exclude value.
const std::array< std::optional< RESISTANCE >, NUMBER_OF_LEVELS > & GetResults()
Accessor to calculation results.
void SetSeries(uint32_t aSeries)
Set E-series to be used in calculations.
void Calculate()
Executes all the calculations.
void NewCalc(double aTargetValue)
Initialize next calculation, clear exclusion mask and erase results from previous calculation.
const int minSize
Push and Shove router track width and via size dialog.
Some functions to handle hotkeys in KiCad.
EDA_ANGLE abs(const EDA_ANGLE &aAngle)
double DoubleFromString(const wxString &TextValue)
static const double max_target_value
double DoubleFromString(const wxString &TextValue)
wxString r_calculator_help
#define RES_EQUIV_CALC_FIRST_VALUE
#define RES_EQUIV_CALC_LAST_VALUE
void ConvertMarkdown2Html(const wxString &aMarkdownInput, wxString &aHtmlOutput)