diff --git a/common/html_window.cpp b/common/html_window.cpp index c500575626..aa7847dc3f 100644 --- a/common/html_window.cpp +++ b/common/html_window.cpp @@ -49,7 +49,13 @@ bool HTML_WINDOW::SetPage( const wxString& aSource ) } -void HTML_WINDOW::onThemeChanged( wxSysColourChangedEvent &aEvent ) +void HTML_WINDOW::ThemeChanged() { SetPage( m_pageSource ); } + + +void HTML_WINDOW::onThemeChanged( wxSysColourChangedEvent &aEvent ) +{ + ThemeChanged(); +} diff --git a/include/html_window.h b/include/html_window.h index c952a86a18..250ee287b9 100644 --- a/include/html_window.h +++ b/include/html_window.h @@ -39,6 +39,11 @@ public: bool SetPage( const wxString& aSource ) override; + /* + * Notify the HTML window the theme has changed. + */ + void ThemeChanged(); + private: void onThemeChanged( wxSysColourChangedEvent &aEvent ); diff --git a/pcb_calculator/calculator_panels/calculator_panel.h b/pcb_calculator/calculator_panels/calculator_panel.h new file mode 100644 index 0000000000..a02e7b17c9 --- /dev/null +++ b/pcb_calculator/calculator_panels/calculator_panel.h @@ -0,0 +1,59 @@ +/* + * This program source code file is part of KICAD, a free EDA CAD application. + * + * Copyright (C) 2021 Ian McInerney + * Copyright (C) 2021 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 . + */ + +#ifndef CALCULATOR_PANEL_H_ +#define CALCULATOR_PANEL_H_ + +#include + +class PCB_CALCULATOR_SETTINGS; + +class CALCULATOR_PANEL : public wxPanel +{ +public: + CALCULATOR_PANEL( wxWindow* aParent, wxWindowID aId, const wxPoint& aPos, const wxSize& aSize, + long aStyle, const wxString& aName ) + : wxPanel( aParent, aId, aPos, aSize, aStyle, aName ) + {} + + ~CALCULATOR_PANEL() {} + + /** + * Load the settings into the panel + * + *@param aCfg is the settings structure to load from + */ + virtual void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) = 0; + + /** + * Save the settings from the panel + * + *@param aCfg is the settings structure to save to + */ + virtual void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) = 0; + + /** + * Update UI elements of the panel when the theme changes to ensure the images + * and fonts/colors are appropriate for the new theme. + */ + virtual void ThemeChanged() = 0; +}; + +#endif diff --git a/pcb_calculator/calculator_panels/panel_attenuators.cpp b/pcb_calculator/calculator_panels/panel_attenuators.cpp index c5e70eb32e..5c19c381e4 100644 --- a/pcb_calculator/calculator_panels/panel_attenuators.cpp +++ b/pcb_calculator/calculator_panels/panel_attenuators.cpp @@ -65,6 +65,24 @@ PANEL_ATTENUATORS::~PANEL_ATTENUATORS() } +void PANEL_ATTENUATORS::ThemeChanged() +{ + // Update the bitmaps + m_bpButtonCalcAtt->SetBitmap( KiBitmap( BITMAPS::small_down ) ); + m_attenuatorBitmap->SetBitmap( KiBitmap( m_CurrAttenuator->m_SchBitmapName ) ); + + // Update the font + m_staticTextAttMsg->SetFont( KIUI::GetInfoFont( this ).Italic() ); + + // Update the HTML windows + m_Attenuator_Messages->ThemeChanged(); + m_panelAttFormula->ThemeChanged(); + + Layout(); + Refresh(); +} + + void PANEL_ATTENUATORS::UpdateUI() { m_attenuatorBitmap->SetBitmap( KiBitmap( m_CurrAttenuator->m_SchBitmapName ) ); diff --git a/pcb_calculator/calculator_panels/panel_attenuators.h b/pcb_calculator/calculator_panels/panel_attenuators.h index 2c1d99cea3..3c805eefcc 100644 --- a/pcb_calculator/calculator_panels/panel_attenuators.h +++ b/pcb_calculator/calculator_panels/panel_attenuators.h @@ -37,8 +37,12 @@ public: ~PANEL_ATTENUATORS(); wxRadioBox* GetAttenuatorsSelector() { return m_AttenuatorsSelection; } - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; + void UpdateUI(); // Update bitmaps void OnAttenuatorSelection( wxCommandEvent& event ) override; diff --git a/pcb_calculator/calculator_panels/panel_attenuators_base.cpp b/pcb_calculator/calculator_panels/panel_attenuators_base.cpp index 658669be3a..1b59874a2b 100644 --- a/pcb_calculator/calculator_panels/panel_attenuators_base.cpp +++ b/pcb_calculator/calculator_panels/panel_attenuators_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 3.10.0) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -9,7 +9,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_ATTENUATORS_BASE::PANEL_ATTENUATORS_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_ATTENUATORS_BASE::PANEL_ATTENUATORS_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerAtt; bSizerAtt = new wxBoxSizer( wxHORIZONTAL ); diff --git a/pcb_calculator/calculator_panels/panel_attenuators_base.fbp b/pcb_calculator/calculator_panels/panel_attenuators_base.fbp index 1009f4ae2e..a330414d39 100644 --- a/pcb_calculator/calculator_panels/panel_attenuators_base.fbp +++ b/pcb_calculator/calculator_panels/panel_attenuators_base.fbp @@ -46,7 +46,7 @@ PANEL_ATTENUATORS_BASE 500,300 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panel.h; forward_declare 0 diff --git a/pcb_calculator/calculator_panels/panel_attenuators_base.h b/pcb_calculator/calculator_panels/panel_attenuators_base.h index 4fd5211b2d..10014dc8e7 100644 --- a/pcb_calculator/calculator_panels/panel_attenuators_base.h +++ b/pcb_calculator/calculator_panels/panel_attenuators_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 3.10.0) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,6 +11,7 @@ #include #include #include "html_window.h" +#include "calculator_panel.h" #include #include #include @@ -36,7 +37,7 @@ /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_ATTENUATORS_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_ATTENUATORS_BASE : public wxPanel +class PANEL_ATTENUATORS_BASE : public CALCULATOR_PANEL { private: diff --git a/pcb_calculator/calculator_panels/panel_board_class.cpp b/pcb_calculator/calculator_panels/panel_board_class.cpp index b0cdee7e93..bd5b48d4bf 100644 --- a/pcb_calculator/calculator_panels/panel_board_class.cpp +++ b/pcb_calculator/calculator_panels/panel_board_class.cpp @@ -38,6 +38,12 @@ PANEL_BOARD_CLASS::~PANEL_BOARD_CLASS() } +void PANEL_BOARD_CLASS::ThemeChanged() +{ + // TODO: Only the grid needs updating, but it isn't done automatically (https://trac.wxwidgets.org/ticket/19279) +} + + void PANEL_BOARD_CLASS::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) { aCfg->m_BoardClassUnits = m_BoardClassesUnitsSelector->GetSelection(); diff --git a/pcb_calculator/calculator_panels/panel_board_class.h b/pcb_calculator/calculator_panels/panel_board_class.h index 2f10ff0692..854df465a6 100644 --- a/pcb_calculator/calculator_panels/panel_board_class.h +++ b/pcb_calculator/calculator_panels/panel_board_class.h @@ -34,11 +34,13 @@ public: long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); ~PANEL_BOARD_CLASS(); - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; void OnBoardClassesUnitsSelection( wxCommandEvent& event ) override; void BoardClassesUpdateData( double aUnitScale ); }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_board_class_base.cpp b/pcb_calculator/calculator_panels/panel_board_class_base.cpp index d36644a1ca..9a66c289f1 100644 --- a/pcb_calculator/calculator_panels/panel_board_class_base.cpp +++ b/pcb_calculator/calculator_panels/panel_board_class_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,7 +11,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_BOARD_CLASS_BASE::PANEL_BOARD_CLASS_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_BOARD_CLASS_BASE::PANEL_BOARD_CLASS_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerBoardClass; bSizerBoardClass = new wxBoxSizer( wxHORIZONTAL ); @@ -32,7 +32,7 @@ PANEL_BOARD_CLASS_BASE::PANEL_BOARD_CLASS_BASE( wxWindow* parent, wxWindowID id, m_staticTextBrdClass = new wxStaticText( this, wxID_ANY, _("Note: Values are minimal values"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextBrdClass->Wrap( -1 ); - m_staticTextBrdClass->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + m_staticTextBrdClass->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); brdclsSizerRight->Add( m_staticTextBrdClass, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); @@ -54,13 +54,13 @@ PANEL_BOARD_CLASS_BASE::PANEL_BOARD_CLASS_BASE( wxWindow* parent, wxWindowID id, m_gridClassesValuesDisplay->SetColSize( 5, 100 ); m_gridClassesValuesDisplay->EnableDragColMove( false ); m_gridClassesValuesDisplay->EnableDragColSize( true ); - m_gridClassesValuesDisplay->SetColLabelSize( 30 ); m_gridClassesValuesDisplay->SetColLabelValue( 0, _("Class 1") ); m_gridClassesValuesDisplay->SetColLabelValue( 1, _("Class 2") ); m_gridClassesValuesDisplay->SetColLabelValue( 2, _("Class 3") ); m_gridClassesValuesDisplay->SetColLabelValue( 3, _("Class 4") ); m_gridClassesValuesDisplay->SetColLabelValue( 4, _("Class 5") ); m_gridClassesValuesDisplay->SetColLabelValue( 5, _("Class 6") ); + m_gridClassesValuesDisplay->SetColLabelSize( 30 ); m_gridClassesValuesDisplay->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); // Rows @@ -70,12 +70,12 @@ PANEL_BOARD_CLASS_BASE::PANEL_BOARD_CLASS_BASE( wxWindow* parent, wxWindowID id, m_gridClassesValuesDisplay->SetRowSize( 3, 24 ); m_gridClassesValuesDisplay->SetRowSize( 4, 24 ); m_gridClassesValuesDisplay->EnableDragRowSize( false ); - m_gridClassesValuesDisplay->SetRowLabelSize( 160 ); m_gridClassesValuesDisplay->SetRowLabelValue( 0, _("Lines width") ); m_gridClassesValuesDisplay->SetRowLabelValue( 1, _("Min clearance") ); m_gridClassesValuesDisplay->SetRowLabelValue( 2, _("Via: (diam - drill)") ); m_gridClassesValuesDisplay->SetRowLabelValue( 3, _("Plated Pad: (diam - drill)") ); m_gridClassesValuesDisplay->SetRowLabelValue( 4, _("NP Pad: (diam - drill)") ); + m_gridClassesValuesDisplay->SetRowLabelSize( 160 ); m_gridClassesValuesDisplay->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER ); // Label Appearance diff --git a/pcb_calculator/calculator_panels/panel_board_class_base.fbp b/pcb_calculator/calculator_panels/panel_board_class_base.fbp index 2e3a034764..a360ac74ba 100644 --- a/pcb_calculator/calculator_panels/panel_board_class_base.fbp +++ b/pcb_calculator/calculator_panels/panel_board_class_base.fbp @@ -1,6 +1,6 @@ - + C++ @@ -14,6 +14,7 @@ panel_board_class_base 1000 none + 1 panel_board_class_base @@ -25,6 +26,7 @@ 1 1 UI + 0 0 0 @@ -44,8 +46,9 @@ PANEL_BOARD_CLASS_BASE 701,347 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; + 0 wxTAB_TRAVERSAL diff --git a/pcb_calculator/calculator_panels/panel_board_class_base.h b/pcb_calculator/calculator_panels/panel_board_class_base.h index 5c7793a743..9e1a825172 100644 --- a/pcb_calculator/calculator_panels/panel_board_class_base.h +++ b/pcb_calculator/calculator_panels/panel_board_class_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -12,6 +12,7 @@ #include class UNIT_SELECTOR_LEN; +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -29,7 +30,7 @@ class UNIT_SELECTOR_LEN; /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_BOARD_CLASS_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_BOARD_CLASS_BASE : public wxPanel +class PANEL_BOARD_CLASS_BASE : public CALCULATOR_PANEL { private: @@ -39,13 +40,14 @@ class PANEL_BOARD_CLASS_BASE : public wxPanel wxGrid* m_gridClassesValuesDisplay; wxPanel* m_panelShowClassPrms; - // Virtual event handlers, overide them in your derived class + // Virtual event handlers, override them in your derived class virtual void OnBoardClassesUnitsSelection( wxCommandEvent& event ) { event.Skip(); } public: PANEL_BOARD_CLASS_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 701,347 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + ~PANEL_BOARD_CLASS_BASE(); }; diff --git a/pcb_calculator/calculator_panels/panel_color_code.cpp b/pcb_calculator/calculator_panels/panel_color_code.cpp index b46ed3392c..6160057e6e 100644 --- a/pcb_calculator/calculator_panels/panel_color_code.cpp +++ b/pcb_calculator/calculator_panels/panel_color_code.cpp @@ -42,6 +42,12 @@ PANEL_COLOR_CODE::~PANEL_COLOR_CODE() } +void PANEL_COLOR_CODE::ThemeChanged() +{ + // Nothing to do for this panel +} + + void PANEL_COLOR_CODE::LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) { m_rbToleranceSelection->SetSelection( aCfg->m_ColorCodeTolerance ); diff --git a/pcb_calculator/calculator_panels/panel_color_code.h b/pcb_calculator/calculator_panels/panel_color_code.h index ca767a9bab..e6d9a9315b 100644 --- a/pcb_calculator/calculator_panels/panel_color_code.h +++ b/pcb_calculator/calculator_panels/panel_color_code.h @@ -35,8 +35,11 @@ public: void OnToleranceSelection( wxCommandEvent& event ) override; void ToleranceSelection( int aSelection ); - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; private: void initColorCodePanel(); @@ -47,4 +50,4 @@ private: wxBitmap* m_ccTolerancesBitmap; }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_color_code_base.cpp b/pcb_calculator/calculator_panels/panel_color_code_base.cpp index 0d0816a9ce..0652c98137 100644 --- a/pcb_calculator/calculator_panels/panel_color_code_base.cpp +++ b/pcb_calculator/calculator_panels/panel_color_code_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -9,7 +9,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_COLOR_CODE_BASE::PANEL_COLOR_CODE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_COLOR_CODE_BASE::PANEL_COLOR_CODE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerPanelColorCode; bSizerPanelColorCode = new wxBoxSizer( wxHORIZONTAL ); diff --git a/pcb_calculator/calculator_panels/panel_color_code_base.fbp b/pcb_calculator/calculator_panels/panel_color_code_base.fbp index a68fdea5f5..0f9e841037 100644 --- a/pcb_calculator/calculator_panels/panel_color_code_base.fbp +++ b/pcb_calculator/calculator_panels/panel_color_code_base.fbp @@ -1,6 +1,6 @@ - + C++ @@ -14,6 +14,7 @@ panel_color_code_base 1000 none + 1 panel_color_code_base @@ -25,6 +26,7 @@ 1 1 UI + 0 0 0 @@ -44,8 +46,9 @@ PANEL_COLOR_CODE_BASE 500,300 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; + 0 wxTAB_TRAVERSAL diff --git a/pcb_calculator/calculator_panels/panel_color_code_base.h b/pcb_calculator/calculator_panels/panel_color_code_base.h index abef7e465a..0e2f0879e2 100644 --- a/pcb_calculator/calculator_panels/panel_color_code_base.h +++ b/pcb_calculator/calculator_panels/panel_color_code_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -10,6 +10,7 @@ #include #include #include +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -30,7 +31,7 @@ /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_COLOR_CODE_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_COLOR_CODE_BASE : public wxPanel +class PANEL_COLOR_CODE_BASE : public CALCULATOR_PANEL { private: @@ -49,13 +50,14 @@ class PANEL_COLOR_CODE_BASE : public wxPanel wxStaticBitmap* m_Band_mult_bitmap; wxStaticBitmap* m_Band_tol_bitmap; - // Virtual event handlers, overide them in your derived class + // Virtual event handlers, override them in your derived class virtual void OnToleranceSelection( wxCommandEvent& event ) { event.Skip(); } public: PANEL_COLOR_CODE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + ~PANEL_COLOR_CODE_BASE(); }; diff --git a/pcb_calculator/calculator_panels/panel_electrical_spacing.cpp b/pcb_calculator/calculator_panels/panel_electrical_spacing.cpp index 4bc05b13b7..033bd07df7 100644 --- a/pcb_calculator/calculator_panels/panel_electrical_spacing.cpp +++ b/pcb_calculator/calculator_panels/panel_electrical_spacing.cpp @@ -123,6 +123,12 @@ PANEL_ELECTRICAL_SPACING::~PANEL_ELECTRICAL_SPACING() } +void PANEL_ELECTRICAL_SPACING::ThemeChanged() +{ + // TODO: Only the grid needs updating, but it isn't done automatically (https://trac.wxwidgets.org/ticket/19279) +} + + void PANEL_ELECTRICAL_SPACING::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) { aCfg->m_Electrical.spacing_units = m_ElectricalSpacingUnitsSelector->GetSelection(); diff --git a/pcb_calculator/calculator_panels/panel_electrical_spacing.h b/pcb_calculator/calculator_panels/panel_electrical_spacing.h index 517ae2fdaa..3f67a6ff8b 100644 --- a/pcb_calculator/calculator_panels/panel_electrical_spacing.h +++ b/pcb_calculator/calculator_panels/panel_electrical_spacing.h @@ -34,12 +34,15 @@ public: long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); ~PANEL_ELECTRICAL_SPACING(); - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; void OnElectricalSpacingUnitsSelection( wxCommandEvent& event ) override; void OnElectricalSpacingRefresh( wxCommandEvent& event ) override; void ElectricalSpacingUpdateData( double aUnitScale ); + }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_electrical_spacing_base.cpp b/pcb_calculator/calculator_panels/panel_electrical_spacing_base.cpp index 5d0d5c8ee5..107c8dadf4 100644 --- a/pcb_calculator/calculator_panels/panel_electrical_spacing_base.cpp +++ b/pcb_calculator/calculator_panels/panel_electrical_spacing_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,7 +11,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerElectricalClearance; bSizerElectricalClearance = new wxBoxSizer( wxHORIZONTAL ); @@ -22,7 +22,7 @@ PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, wxArrayString m_ElectricalSpacingUnitsSelectorChoices; m_ElectricalSpacingUnitsSelector = new UNIT_SELECTOR_LEN( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ElectricalSpacingUnitsSelectorChoices, 0 ); m_ElectricalSpacingUnitsSelector->SetSelection( -1 ); - m_ElectricalSpacingUnitsSelector->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_LIGHT, false, wxEmptyString ) ); + m_ElectricalSpacingUnitsSelector->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); bLeftSizerElectricalClearance->Add( m_ElectricalSpacingUnitsSelector, 0, wxEXPAND|wxALL, 10 ); @@ -46,7 +46,7 @@ PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, m_staticTextElectricalSpacing = new wxStaticText( this, 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 ) ); + m_staticTextElectricalSpacing->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); m_electricalSpacingSizer->Add( m_staticTextElectricalSpacing, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxRIGHT|wxLEFT, 5 ); @@ -69,7 +69,6 @@ PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, m_gridElectricalSpacingValues->SetColSize( 6, 100 ); m_gridElectricalSpacingValues->EnableDragColMove( false ); m_gridElectricalSpacingValues->EnableDragColSize( true ); - m_gridElectricalSpacingValues->SetColLabelSize( 30 ); m_gridElectricalSpacingValues->SetColLabelValue( 0, _("B1") ); m_gridElectricalSpacingValues->SetColLabelValue( 1, _("B2") ); m_gridElectricalSpacingValues->SetColLabelValue( 2, _("B3") ); @@ -77,6 +76,7 @@ PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, m_gridElectricalSpacingValues->SetColLabelValue( 4, _("A5") ); m_gridElectricalSpacingValues->SetColLabelValue( 5, _("A6") ); m_gridElectricalSpacingValues->SetColLabelValue( 6, _("A7") ); + m_gridElectricalSpacingValues->SetColLabelSize( 30 ); m_gridElectricalSpacingValues->SetColLabelAlignment( wxALIGN_CENTER, wxALIGN_CENTER ); // Rows @@ -91,7 +91,6 @@ PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, m_gridElectricalSpacingValues->SetRowSize( 8, 24 ); m_gridElectricalSpacingValues->SetRowSize( 9, 24 ); m_gridElectricalSpacingValues->EnableDragRowSize( false ); - m_gridElectricalSpacingValues->SetRowLabelSize( 100 ); m_gridElectricalSpacingValues->SetRowLabelValue( 0, _("0 .. 15 V") ); m_gridElectricalSpacingValues->SetRowLabelValue( 1, _("16 .. 30 V") ); m_gridElectricalSpacingValues->SetRowLabelValue( 2, _("31 .. 50 V") ); @@ -102,6 +101,7 @@ PANEL_ELECTRICAL_SPACING_BASE::PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, m_gridElectricalSpacingValues->SetRowLabelValue( 7, _("251 .. 300 V") ); m_gridElectricalSpacingValues->SetRowLabelValue( 8, _("301 .. 500 V") ); m_gridElectricalSpacingValues->SetRowLabelValue( 9, _(" > 500 V") ); + m_gridElectricalSpacingValues->SetRowLabelSize( 100 ); m_gridElectricalSpacingValues->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER ); // Label Appearance diff --git a/pcb_calculator/calculator_panels/panel_electrical_spacing_base.fbp b/pcb_calculator/calculator_panels/panel_electrical_spacing_base.fbp index 6cbc7e3ead..aef03779ea 100644 --- a/pcb_calculator/calculator_panels/panel_electrical_spacing_base.fbp +++ b/pcb_calculator/calculator_panels/panel_electrical_spacing_base.fbp @@ -1,6 +1,6 @@ - + C++ @@ -14,6 +14,7 @@ panel_electrical_spacing_base 1000 none + 1 panel_electrical_spacing_base @@ -25,6 +26,7 @@ 1 1 UI + 0 0 0 @@ -44,8 +46,9 @@ PANEL_ELECTRICAL_SPACING_BASE 500,300 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; + 0 wxTAB_TRAVERSAL @@ -324,6 +327,7 @@ + 0 diff --git a/pcb_calculator/calculator_panels/panel_electrical_spacing_base.h b/pcb_calculator/calculator_panels/panel_electrical_spacing_base.h index 18487813e9..c69694b5b8 100644 --- a/pcb_calculator/calculator_panels/panel_electrical_spacing_base.h +++ b/pcb_calculator/calculator_panels/panel_electrical_spacing_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -12,6 +12,7 @@ #include class UNIT_SELECTOR_LEN; +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -21,10 +22,10 @@ class UNIT_SELECTOR_LEN; #include #include #include +#include #include #include #include -#include #include #include #include @@ -35,7 +36,7 @@ class UNIT_SELECTOR_LEN; /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_ELECTRICAL_SPACING_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_ELECTRICAL_SPACING_BASE : public wxPanel +class PANEL_ELECTRICAL_SPACING_BASE : public CALCULATOR_PANEL { private: @@ -50,7 +51,7 @@ class PANEL_ELECTRICAL_SPACING_BASE : public wxPanel wxGrid* m_gridElectricalSpacingValues; wxStaticText* m_staticText88; - // Virtual event handlers, overide them in your derived class + // Virtual event handlers, override them in your derived class virtual void OnElectricalSpacingUnitsSelection( wxCommandEvent& event ) { event.Skip(); } virtual void OnElectricalSpacingRefresh( wxCommandEvent& event ) { event.Skip(); } @@ -58,6 +59,7 @@ class PANEL_ELECTRICAL_SPACING_BASE : public wxPanel public: PANEL_ELECTRICAL_SPACING_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + ~PANEL_ELECTRICAL_SPACING_BASE(); }; diff --git a/pcb_calculator/calculator_panels/panel_eserie.cpp b/pcb_calculator/calculator_panels/panel_eserie.cpp index 05fd32edba..c6715f4512 100644 --- a/pcb_calculator/calculator_panels/panel_eserie.cpp +++ b/pcb_calculator/calculator_panels/panel_eserie.cpp @@ -49,6 +49,13 @@ PANEL_E_SERIE::~PANEL_E_SERIE() } +void PANEL_E_SERIE::ThemeChanged() +{ + // Update the HTML window with the help text + m_panelESeriesHelp->ThemeChanged(); +} + + void PANEL_E_SERIE::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) { } diff --git a/pcb_calculator/calculator_panels/panel_eserie.h b/pcb_calculator/calculator_panels/panel_eserie.h index a615e74d33..395830f0aa 100644 --- a/pcb_calculator/calculator_panels/panel_eserie.h +++ b/pcb_calculator/calculator_panels/panel_eserie.h @@ -34,8 +34,10 @@ public: long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); ~PANEL_E_SERIE(); - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; /** * Called on calculate button and executes all E-series calculations @@ -48,6 +50,8 @@ public: * @param event contains the radio button state. */ void OnESeriesSelection( wxCommandEvent& event ) override; + + void OnSystemThemeChange( wxSysColourChangedEvent &aEvent ); }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_eserie_base.cpp b/pcb_calculator/calculator_panels/panel_eserie_base.cpp index 2b569885b6..edf1a40796 100644 --- a/pcb_calculator/calculator_panels/panel_eserie_base.cpp +++ b/pcb_calculator/calculator_panels/panel_eserie_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 3.10.0) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -9,7 +9,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_E_SERIE_BASE::PANEL_E_SERIE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_E_SERIE_BASE::PANEL_E_SERIE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerESerie; bSizerESerie = new wxBoxSizer( wxVERTICAL ); diff --git a/pcb_calculator/calculator_panels/panel_eserie_base.fbp b/pcb_calculator/calculator_panels/panel_eserie_base.fbp index c312e06376..c1693bc057 100644 --- a/pcb_calculator/calculator_panels/panel_eserie_base.fbp +++ b/pcb_calculator/calculator_panels/panel_eserie_base.fbp @@ -46,7 +46,7 @@ PANEL_E_SERIE_BASE 677,453 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; 0 diff --git a/pcb_calculator/calculator_panels/panel_eserie_base.h b/pcb_calculator/calculator_panels/panel_eserie_base.h index 8585e0c884..c7ebfba0ca 100644 --- a/pcb_calculator/calculator_panels/panel_eserie_base.h +++ b/pcb_calculator/calculator_panels/panel_eserie_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 3.10.0) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,6 +11,7 @@ #include #include #include "html_window.h" +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -35,7 +36,7 @@ /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_E_SERIE_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_E_SERIE_BASE : public wxPanel +class PANEL_E_SERIE_BASE : public CALCULATOR_PANEL { private: diff --git a/pcb_calculator/calculator_panels/panel_regulator.cpp b/pcb_calculator/calculator_panels/panel_regulator.cpp index 0439fc6c1e..034f698d8d 100644 --- a/pcb_calculator/calculator_panels/panel_regulator.cpp +++ b/pcb_calculator/calculator_panels/panel_regulator.cpp @@ -60,6 +60,14 @@ PANEL_REGULATOR::~PANEL_REGULATOR() } +void PANEL_REGULATOR::ThemeChanged() +{ + // Update the bitmaps + m_bitmapRegul3pins->SetBitmap( KiBitmap( BITMAPS::regul_3pins ) ); + m_bitmapRegul4pins->SetBitmap( KiBitmap( BITMAPS::regul ) ); +} + + void PANEL_REGULATOR::OnRegulatorCalcButtonClick( wxCommandEvent& event ) { RegulatorsSolve(); @@ -414,6 +422,7 @@ void PANEL_REGULATOR::Regulators_WriteConfig( PCB_CALCULATOR_SETTINGS* aCfg ) } } + void PANEL_REGULATOR::LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) { m_RegulR1Value->SetValue( aCfg->m_Regulators.r1 ); @@ -435,6 +444,12 @@ void PANEL_REGULATOR::LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) } +void PANEL_REGULATOR::SaveSettings( PCB_CALCULATOR_SETTINGS *aCfg ) +{ + // TODO: This was empty for some reason, should we actually save settings here? +} + + const wxString PANEL_REGULATOR::GetDataFilename() { if( m_regulators_fileNameCtrl->GetValue().IsEmpty() ) diff --git a/pcb_calculator/calculator_panels/panel_regulator.h b/pcb_calculator/calculator_panels/panel_regulator.h index bbc9523577..df631cf289 100644 --- a/pcb_calculator/calculator_panels/panel_regulator.h +++ b/pcb_calculator/calculator_panels/panel_regulator.h @@ -44,10 +44,10 @@ public: void OnEditRegulator( wxCommandEvent& event ) override; void OnRemoveRegulator( wxCommandEvent& event ) override; - /** - * Load settings specific to the regulators - */ - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; /** * Update the regulator page dialog display. @@ -95,4 +95,4 @@ public: }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_regulator_base.cpp b/pcb_calculator/calculator_panels/panel_regulator_base.cpp index a4c76321fd..7dba79ad67 100644 --- a/pcb_calculator/calculator_panels/panel_regulator_base.cpp +++ b/pcb_calculator/calculator_panels/panel_regulator_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -9,7 +9,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_REGULATOR_BASE::PANEL_REGULATOR_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_REGULATOR_BASE::PANEL_REGULATOR_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerMainReg; bSizerMainReg = new wxBoxSizer( wxVERTICAL ); @@ -56,7 +56,7 @@ PANEL_REGULATOR_BASE::PANEL_REGULATOR_BASE( wxWindow* parent, wxWindowID id, con m_RegulFormula = new wxStaticText( sbSizerRegFormula->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_RegulFormula->Wrap( -1 ); - m_RegulFormula->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + m_RegulFormula->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); sbSizerRegFormula->Add( m_RegulFormula, 0, wxALIGN_CENTER_HORIZONTAL|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); diff --git a/pcb_calculator/calculator_panels/panel_regulator_base.fbp b/pcb_calculator/calculator_panels/panel_regulator_base.fbp index 7bc0be4ca1..fb22559d67 100644 --- a/pcb_calculator/calculator_panels/panel_regulator_base.fbp +++ b/pcb_calculator/calculator_panels/panel_regulator_base.fbp @@ -1,6 +1,6 @@ - + C++ @@ -14,6 +14,7 @@ panel_regulator_base 1000 none + 1 panel_regulator_base @@ -25,6 +26,7 @@ 1 1 UI + 0 0 0 @@ -44,8 +46,9 @@ PANEL_REGULATOR_BASE 688,436 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; + 0 wxTAB_TRAVERSAL @@ -1633,6 +1636,7 @@ + 0 @@ -1716,6 +1720,7 @@ + 0 @@ -2073,6 +2078,7 @@ + 0 @@ -2157,6 +2163,7 @@ + 0 @@ -2230,6 +2237,7 @@ + 0 @@ -2303,6 +2311,7 @@ + 0 diff --git a/pcb_calculator/calculator_panels/panel_regulator_base.h b/pcb_calculator/calculator_panels/panel_regulator_base.h index 72ce41f313..78182e48f1 100644 --- a/pcb_calculator/calculator_panels/panel_regulator_base.h +++ b/pcb_calculator/calculator_panels/panel_regulator_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -10,6 +10,7 @@ #include #include #include +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -34,7 +35,7 @@ /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_REGULATOR_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_REGULATOR_BASE : public wxPanel +class PANEL_REGULATOR_BASE : public CALCULATOR_PANEL { private: @@ -73,7 +74,7 @@ class PANEL_REGULATOR_BASE : public wxPanel wxButton* m_buttonAddItem; wxButton* m_buttonRemoveItem; - // Virtual event handlers, overide them in your derived class + // Virtual event handlers, override them in your derived class virtual void OnRegulTypeSelection( wxCommandEvent& event ) { event.Skip(); } virtual void OnRegulatorCalcButtonClick( wxCommandEvent& event ) { event.Skip(); } virtual void OnRegulatorResetButtonClick( wxCommandEvent& event ) { event.Skip(); } @@ -87,6 +88,7 @@ class PANEL_REGULATOR_BASE : public wxPanel public: PANEL_REGULATOR_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 688,436 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + ~PANEL_REGULATOR_BASE(); }; diff --git a/pcb_calculator/calculator_panels/panel_track_width.cpp b/pcb_calculator/calculator_panels/panel_track_width.cpp index 37c6b1f903..04d4d2924d 100644 --- a/pcb_calculator/calculator_panels/panel_track_width.cpp +++ b/pcb_calculator/calculator_panels/panel_track_width.cpp @@ -66,6 +66,12 @@ PANEL_TRACK_WIDTH::~PANEL_TRACK_WIDTH() } +void PANEL_TRACK_WIDTH::ThemeChanged() +{ + m_htmlWinFormulas->ThemeChanged(); +} + + void PANEL_TRACK_WIDTH::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) { aCfg->m_TrackWidth.current = m_TrackCurrentValue->GetValue(); diff --git a/pcb_calculator/calculator_panels/panel_track_width.h b/pcb_calculator/calculator_panels/panel_track_width.h index fe7c331ec8..1795e14087 100644 --- a/pcb_calculator/calculator_panels/panel_track_width.h +++ b/pcb_calculator/calculator_panels/panel_track_width.h @@ -34,8 +34,10 @@ public: long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); ~PANEL_TRACK_WIDTH(); - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; /** * Update the calculations the user changes the general parameters. @@ -98,4 +100,4 @@ private: bool m_TWNested; // Used to stop events caused by setting the answers. }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_track_width_base.cpp b/pcb_calculator/calculator_panels/panel_track_width_base.cpp index 1ffec237c3..5f1a5ed7b1 100644 --- a/pcb_calculator/calculator_panels/panel_track_width_base.cpp +++ b/pcb_calculator/calculator_panels/panel_track_width_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 3.10.0) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,7 +11,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_TRACK_WIDTH_BASE::PANEL_TRACK_WIDTH_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_TRACK_WIDTH_BASE::PANEL_TRACK_WIDTH_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerTrackWidth; bSizerTrackWidth = new wxBoxSizer( wxHORIZONTAL ); diff --git a/pcb_calculator/calculator_panels/panel_track_width_base.fbp b/pcb_calculator/calculator_panels/panel_track_width_base.fbp index d5dd29f773..e2afd570ae 100644 --- a/pcb_calculator/calculator_panels/panel_track_width_base.fbp +++ b/pcb_calculator/calculator_panels/panel_track_width_base.fbp @@ -46,7 +46,7 @@ PANEL_TRACK_WIDTH_BASE 623,457 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; 0 diff --git a/pcb_calculator/calculator_panels/panel_track_width_base.h b/pcb_calculator/calculator_panels/panel_track_width_base.h index 5c5e322424..e0d930fa0f 100644 --- a/pcb_calculator/calculator_panels/panel_track_width_base.h +++ b/pcb_calculator/calculator_panels/panel_track_width_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version 3.10.0) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -14,6 +14,7 @@ class UNIT_SELECTOR_LEN; class UNIT_SELECTOR_THICKNESS; #include "html_window.h" +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -38,7 +39,7 @@ class UNIT_SELECTOR_THICKNESS; /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_TRACK_WIDTH_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_TRACK_WIDTH_BASE : public wxPanel +class PANEL_TRACK_WIDTH_BASE : public CALCULATOR_PANEL { private: diff --git a/pcb_calculator/calculator_panels/panel_transline.cpp b/pcb_calculator/calculator_panels/panel_transline.cpp index 4fc6a096a2..80f568cc38 100644 --- a/pcb_calculator/calculator_panels/panel_transline.cpp +++ b/pcb_calculator/calculator_panels/panel_transline.cpp @@ -63,6 +63,15 @@ PANEL_TRANSLINE::~PANEL_TRANSLINE() } +void PANEL_TRANSLINE::ThemeChanged() +{ + // Update the bitmaps + m_bpButtonAnalyze->SetBitmap( KiBitmap( BITMAPS::small_down ) ); + m_bpButtonSynthetize->SetBitmap( KiBitmap( BITMAPS::small_up ) ); + m_translineBitmap->SetBitmap( KiBitmap( m_transline_list[m_currTransLineType]->m_BitmapName ) ); +} + + void PANEL_TRANSLINE::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) { aCfg->m_TransLine.type = m_currTransLineType; diff --git a/pcb_calculator/calculator_panels/panel_transline.h b/pcb_calculator/calculator_panels/panel_transline.h index 1f7e43cea1..5836beb6db 100644 --- a/pcb_calculator/calculator_panels/panel_transline.h +++ b/pcb_calculator/calculator_panels/panel_transline.h @@ -36,8 +36,10 @@ public: long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); ~PANEL_TRANSLINE(); - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; // Accessors: wxRadioBox* GetTranslineSelector() { return m_TranslineSelection; } @@ -143,4 +145,4 @@ private: enum TRANSLINE_TYPE_ID m_currTransLineType; }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_transline_base.cpp b/pcb_calculator/calculator_panels/panel_transline_base.cpp index b71122a36c..cd821fdeb3 100644 --- a/pcb_calculator/calculator_panels/panel_transline_base.cpp +++ b/pcb_calculator/calculator_panels/panel_transline_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,7 +11,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_TRANSLINE_BASE::PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_TRANSLINE_BASE::PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizeTransline; bSizeTransline = new wxBoxSizer( wxHORIZONTAL ); @@ -224,13 +224,13 @@ PANEL_TRANSLINE_BASE::PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id, con m_staticTextZdiff = new wxStaticText( this, wxID_ANY, _("Zdiff =\n2*Z0( (1 - 0.48exp( -0.96*S/H ) )"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticTextZdiff->Wrap( -1 ); - m_staticTextZdiff->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + m_staticTextZdiff->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); m_fgSizerZcomment->Add( m_staticTextZdiff, 0, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); m_staticTextZcommon = new wxStaticText( this, wxID_ANY, _("Zcommon = Zeven / 2"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL ); m_staticTextZcommon->Wrap( -1 ); - m_staticTextZcommon->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_BOLD, false, wxEmptyString ) ); + m_staticTextZcommon->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_ITALIC, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); m_fgSizerZcomment->Add( m_staticTextZcommon, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5 ); diff --git a/pcb_calculator/calculator_panels/panel_transline_base.fbp b/pcb_calculator/calculator_panels/panel_transline_base.fbp index 78e577d098..47b275ce40 100644 --- a/pcb_calculator/calculator_panels/panel_transline_base.fbp +++ b/pcb_calculator/calculator_panels/panel_transline_base.fbp @@ -1,6 +1,6 @@ - + C++ @@ -14,6 +14,7 @@ panel_transline_base 1000 none + 1 panel_transline_base @@ -25,6 +26,7 @@ 1 1 UI + 0 0 0 @@ -44,8 +46,9 @@ PANEL_TRANSLINE_BASE 724,460 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; + 0 wxTAB_TRAVERSAL @@ -384,6 +387,7 @@ + 0 @@ -603,6 +607,7 @@ + 0 @@ -822,6 +827,7 @@ + 0 @@ -3241,6 +3247,7 @@ + 0 @@ -3314,6 +3321,7 @@ + 0 @@ -3387,6 +3395,7 @@ + 0 @@ -3460,6 +3469,7 @@ + 0 @@ -5144,6 +5154,7 @@ + 0 diff --git a/pcb_calculator/calculator_panels/panel_transline_base.h b/pcb_calculator/calculator_panels/panel_transline_base.h index 2bec6df19b..cbae05b6df 100644 --- a/pcb_calculator/calculator_panels/panel_transline_base.h +++ b/pcb_calculator/calculator_panels/panel_transline_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -15,6 +15,7 @@ class UNIT_SELECTOR_FREQUENCY; class UNIT_SELECTOR_LEN; class UNIT_SELECTOR_RESISTOR; +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -41,7 +42,7 @@ class UNIT_SELECTOR_RESISTOR; /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_TRANSLINE_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_TRANSLINE_BASE : public wxPanel +class PANEL_TRANSLINE_BASE : public CALCULATOR_PANEL { private: @@ -124,7 +125,7 @@ class PANEL_TRANSLINE_BASE : public wxPanel wxStaticText* m_Message8; wxButton* m_buttonTransLineReset; - // Virtual event handlers, overide them in your derived class + // Virtual event handlers, override them in your derived class virtual void OnTranslineSelection( wxCommandEvent& event ) { event.Skip(); } virtual void OnTranslineEpsilonR_Button( wxCommandEvent& event ) { event.Skip(); } virtual void OnTranslineTanD_Button( wxCommandEvent& event ) { event.Skip(); } @@ -137,6 +138,7 @@ class PANEL_TRANSLINE_BASE : public wxPanel public: PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 724,460 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + ~PANEL_TRANSLINE_BASE(); }; diff --git a/pcb_calculator/calculator_panels/panel_via_size.cpp b/pcb_calculator/calculator_panels/panel_via_size.cpp index 558d6e88e9..1c003f3492 100644 --- a/pcb_calculator/calculator_panels/panel_via_size.cpp +++ b/pcb_calculator/calculator_panels/panel_via_size.cpp @@ -75,6 +75,12 @@ PANEL_VIA_SIZE::~PANEL_VIA_SIZE() } +void PANEL_VIA_SIZE::ThemeChanged() +{ + m_viaBitmap->SetBitmap( KiBitmap( BITMAPS::viacalc ) ); +} + + void PANEL_VIA_SIZE::OnViaEpsilonR_Button( wxCommandEvent& event ) { //Shows a list of current relative dielectric constant(Er) and select a value. diff --git a/pcb_calculator/calculator_panels/panel_via_size.h b/pcb_calculator/calculator_panels/panel_via_size.h index e65b186ba2..4f393ef3a6 100644 --- a/pcb_calculator/calculator_panels/panel_via_size.h +++ b/pcb_calculator/calculator_panels/panel_via_size.h @@ -34,11 +34,10 @@ public: long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); ~PANEL_VIA_SIZE(); - void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ); - /** - * Write via size parameters in configuration. - */ - void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ); + // Methods from CALCULATOR_PANEL that must be overriden + void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; + void ThemeChanged() override; /** * Called when the user changes any value in the via calculator. @@ -72,7 +71,8 @@ public: double aEstimatedAmpacity, double aThermalResistance, double aCapacitance, double aTimeDegradation, double aInductance, double aReactance ); + private: }; -#endif \ No newline at end of file +#endif diff --git a/pcb_calculator/calculator_panels/panel_via_size_base.cpp b/pcb_calculator/calculator_panels/panel_via_size_base.cpp index 9d07387134..fbfa9453cc 100644 --- a/pcb_calculator/calculator_panels/panel_via_size_base.cpp +++ b/pcb_calculator/calculator_panels/panel_via_size_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -11,7 +11,7 @@ /////////////////////////////////////////////////////////////////////////// -PANEL_VIA_SIZE_BASE::PANEL_VIA_SIZE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxPanel( parent, id, pos, size, style, name ) +PANEL_VIA_SIZE_BASE::PANEL_VIA_SIZE_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) { wxBoxSizer* bSizerViaSize; bSizerViaSize = new wxBoxSizer( wxHORIZONTAL ); @@ -200,7 +200,7 @@ PANEL_VIA_SIZE_BASE::PANEL_VIA_SIZE_BASE( wxWindow* parent, wxWindowID id, const m_staticTextWarning = new wxStaticText( this, wxID_ANY, _("Warning:\nVia pad diameter >= Clearance hole diameter.\nSome parameters cannot be calculated for a via inside 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 ) ); + m_staticTextWarning->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) ); bSizerViaLeftColumn->Add( m_staticTextWarning, 0, wxALL|wxEXPAND, 10 ); diff --git a/pcb_calculator/calculator_panels/panel_via_size_base.fbp b/pcb_calculator/calculator_panels/panel_via_size_base.fbp index 12d3a00198..dcbcc7715e 100644 --- a/pcb_calculator/calculator_panels/panel_via_size_base.fbp +++ b/pcb_calculator/calculator_panels/panel_via_size_base.fbp @@ -1,6 +1,6 @@ - + C++ @@ -14,6 +14,7 @@ panel_via_size_base 1000 none + 1 panel_via_size_base @@ -25,6 +26,7 @@ 1 1 UI + 0 0 0 @@ -44,8 +46,9 @@ PANEL_VIA_SIZE_BASE 554,417 - ; ; forward_declare + CALCULATOR_PANEL; calculator_panels/calculator_panel.h; + 0 wxTAB_TRAVERSAL @@ -1572,6 +1575,7 @@ + 0 @@ -1843,6 +1847,7 @@ + 0 @@ -4126,6 +4131,7 @@ + 0 diff --git a/pcb_calculator/calculator_panels/panel_via_size_base.h b/pcb_calculator/calculator_panels/panel_via_size_base.h index 9b389d690b..5a566f6f25 100644 --- a/pcb_calculator/calculator_panels/panel_via_size_base.h +++ b/pcb_calculator/calculator_panels/panel_via_size_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Oct 26 2018) +// C++ code generated with wxFormBuilder (version 3.10.0-4761b0c5) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -13,6 +13,7 @@ class UNIT_SELECTOR_LEN; #include "widgets/unit_selector.h" +#include "calculator_panels/calculator_panel.h" #include #include #include @@ -21,10 +22,10 @@ class UNIT_SELECTOR_LEN; #include #include #include +#include #include #include #include -#include #include #include #include @@ -36,7 +37,7 @@ class UNIT_SELECTOR_LEN; /////////////////////////////////////////////////////////////////////////////// /// Class PANEL_VIA_SIZE_BASE /////////////////////////////////////////////////////////////////////////////// -class PANEL_VIA_SIZE_BASE : public wxPanel +class PANEL_VIA_SIZE_BASE : public CALCULATOR_PANEL { private: @@ -106,7 +107,7 @@ class PANEL_VIA_SIZE_BASE : public wxPanel wxStaticBitmap* m_viaBitmap; wxButton* m_buttonViaReset; - // Virtual event handlers, overide them in your derived class + // Virtual event handlers, override them in your derived class virtual void OnViaCalculate( wxCommandEvent& event ) { event.Skip(); } virtual void OnViaRho_Button( wxCommandEvent& event ) { event.Skip(); } virtual void OnViaEpsilonR_Button( wxCommandEvent& event ) { event.Skip(); } @@ -117,6 +118,7 @@ class PANEL_VIA_SIZE_BASE : public wxPanel public: PANEL_VIA_SIZE_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 554,417 ), long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString ); + ~PANEL_VIA_SIZE_BASE(); }; diff --git a/pcb_calculator/pcb_calculator_frame.cpp b/pcb_calculator/pcb_calculator_frame.cpp index dc2d751b3d..784bcf1600 100644 --- a/pcb_calculator/pcb_calculator_frame.cpp +++ b/pcb_calculator/pcb_calculator_frame.cpp @@ -19,6 +19,7 @@ */ #include #include +#include #include #include #include "attenuators/attenuator_classes.h" @@ -60,6 +61,9 @@ PCB_CALCULATOR_FRAME::PCB_CALCULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) : if( m_framePos == wxDefaultPosition ) Centre(); + + Bind( wxEVT_SYS_COLOUR_CHANGED, + wxSysColourChangedEventHandler( PCB_CALCULATOR_FRAME::onThemeChanged ), this ); } @@ -71,6 +75,25 @@ PCB_CALCULATOR_FRAME::~PCB_CALCULATOR_FRAME() } +void PCB_CALCULATOR_FRAME::onThemeChanged( wxSysColourChangedEvent &aEvent ) +{ + // Force the bitmaps to refresh + GetBitmapStore()->ThemeChanged(); + + // Update the panels + m_panelTransline->ThemeChanged(); + m_panelRegulators->ThemeChanged(); + m_panelAttenuators->ThemeChanged(); + m_panelColorCode->ThemeChanged(); + m_panelViaSize->ThemeChanged(); + m_panelTrackWidth->ThemeChanged(); + m_panelElectricalSpacing->ThemeChanged(); + m_panelBoardClass->ThemeChanged(); + + aEvent.Skip(); +} + + void PCB_CALCULATOR_FRAME::OnUpdateUI( wxUpdateUIEvent& event ) { if( m_Notebook->GetSelection() != m_lastNotebookPage ) diff --git a/pcb_calculator/pcb_calculator_frame.h b/pcb_calculator/pcb_calculator_frame.h index 51084ce03f..1b58924f5e 100644 --- a/pcb_calculator/pcb_calculator_frame.h +++ b/pcb_calculator/pcb_calculator_frame.h @@ -51,6 +51,8 @@ private: void OnUpdateUI( wxUpdateUIEvent& event ) override; + void onThemeChanged( wxSysColourChangedEvent &aEvent ); + // Config read-write, virtual from EDA_BASE_FRAME void LoadSettings( APP_SETTINGS_BASE* aCfg ) override; void SaveSettings( APP_SETTINGS_BASE* aCfg ) override; diff --git a/pcb_calculator/transline_dlg_funct.cpp b/pcb_calculator/transline_dlg_funct.cpp index ea9ae3c5ba..7190fd6922 100644 --- a/pcb_calculator/transline_dlg_funct.cpp +++ b/pcb_calculator/transline_dlg_funct.cpp @@ -182,7 +182,7 @@ void PANEL_TRANSLINE::TranslineTypeSelection( enum TRANSLINE_TYPE_ID aType ) m_currTransLineType = DEFAULT_TYPE; } - m_translineBitmap->SetBitmap( *m_transline_list[m_currTransLineType]->m_Icon ); + m_translineBitmap->SetBitmap( KiBitmap( m_transline_list[m_currTransLineType]->m_BitmapName ) ); // This helper bitmap is shown for coupled microstrip only: m_bmCMicrostripZoddZeven->Show( aType == C_MICROSTRIP_TYPE ); diff --git a/pcb_calculator/transline_ident.cpp b/pcb_calculator/transline_ident.cpp index 55c30a4d16..e99e33a8f5 100644 --- a/pcb_calculator/transline_ident.cpp +++ b/pcb_calculator/transline_ident.cpp @@ -80,10 +80,10 @@ double TRANSLINE_PRM::FromUserUnit() TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) { - m_Type = aType; // The type of transline handled - m_Icon = nullptr; // An xpm icon to display in dialogs - m_TLine = nullptr; // The TRANSLINE itself - m_HasPrmSelection = false; // true if selection of parameters must be enabled in dialog menu + m_Type = aType; // The type of transline handled + m_BitmapName = BITMAPS::INVALID_BITMAP; // The icon to display + m_TLine = nullptr; // The TRANSLINE itself + m_HasPrmSelection = false; // true if selection of parameters must be enabled in dialog menu // Add common prms: // Default values are for FR4 @@ -112,8 +112,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) switch( m_Type ) { case MICROSTRIP_TYPE: // microstrip - m_TLine = new MICROSTRIP(); - m_Icon = KiBitmapNew( BITMAPS::microstrip ); + m_TLine = new MICROSTRIP(); + m_BitmapName = BITMAPS::microstrip; m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) ); m_Messages.Add( _( "Conductor losses:" ) ); @@ -153,8 +153,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) break; case CPW_TYPE: // coplanar waveguide - m_TLine = new COPLANAR(); - m_Icon = KiBitmapNew( BITMAPS::cpw ); + m_TLine = new COPLANAR(); + m_BitmapName = BITMAPS::cpw; m_HasPrmSelection = true; m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) ); @@ -187,8 +187,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) break; case GROUNDED_CPW_TYPE: // grounded coplanar waveguide - m_TLine = new GROUNDEDCOPLANAR(); - m_Icon = KiBitmapNew( BITMAPS::cpw_back ); + m_TLine = new GROUNDEDCOPLANAR(); + m_BitmapName = BITMAPS::cpw_back; m_HasPrmSelection = true; m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) ); @@ -222,8 +222,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) case RECTWAVEGUIDE_TYPE: // rectangular waveguide - m_TLine = new RECTWAVEGUIDE(); - m_Icon = KiBitmapNew( BITMAPS::rectwaveguide ); + m_TLine = new RECTWAVEGUIDE(); + m_BitmapName = BITMAPS::rectwaveguide; m_HasPrmSelection = true; m_Messages.Add( _( "ZF(H10) = Ey / Hx:" ) ); @@ -258,8 +258,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) break; case COAX_TYPE: // coaxial cable - m_TLine = new COAX(); - m_Icon = KiBitmapNew( BITMAPS::coax ); + m_TLine = new COAX(); + m_BitmapName = BITMAPS::coax; m_HasPrmSelection = true; m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) ); @@ -295,8 +295,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) break; case C_MICROSTRIP_TYPE: // coupled microstrip - m_TLine = new C_MICROSTRIP(); - m_Icon = KiBitmapNew( BITMAPS::c_microstrip ); + m_TLine = new C_MICROSTRIP(); + m_BitmapName = BITMAPS::c_microstrip; m_HasPrmSelection = true; m_Messages.Add( wxString::Format( _( "Effective %s (even):" ), wxT( "εr" ) ) ); @@ -344,8 +344,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) break; case STRIPLINE_TYPE: // stripline - m_TLine = new STRIPLINE(); - m_Icon = KiBitmapNew( BITMAPS::stripline ); + m_TLine = new STRIPLINE(); + m_BitmapName = BITMAPS::stripline; m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) ); m_Messages.Add( _( "Conductor losses:" ) ); @@ -377,8 +377,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) break; case TWISTEDPAIR_TYPE: // twisted pair - m_TLine = new TWISTEDPAIR(); - m_Icon = KiBitmapNew( BITMAPS::twistedpair ); + m_TLine = new TWISTEDPAIR(); + m_BitmapName = BITMAPS::twistedpair; m_HasPrmSelection = true; m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) ); @@ -423,7 +423,6 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType ) TRANSLINE_IDENT::~TRANSLINE_IDENT() { delete m_TLine; - delete m_Icon; for( auto& ii : m_prms_List ) delete ii; diff --git a/pcb_calculator/transline_ident.h b/pcb_calculator/transline_ident.h index a9277846c2..c343709f0d 100644 --- a/pcb_calculator/transline_ident.h +++ b/pcb_calculator/transline_ident.h @@ -26,10 +26,12 @@ #define TRANSLINE_IDENT_H #include -#include #include "transline/transline.h" +// Forward declare the bitmaps enum from bitmaps/bitmap_list.h +enum class BITMAPS : unsigned int; + // An enum to handle muwave shapes: enum TRANSLINE_TYPE_ID { START_OF_LIST_TYPE = 0, @@ -126,7 +128,7 @@ public: public: enum TRANSLINE_TYPE_ID m_Type; // The type of transline handled - wxBitmap * m_Icon; // An icon to display in dialogs + BITMAPS m_BitmapName; // The name of the bitmap to display in dialogs TRANSLINE* m_TLine; // The TRANSLINE itself wxArrayString m_Messages; // messages for results