Corrosion table update

This commit is contained in:
aris-kimi 2023-03-02 22:25:48 +00:00 committed by Seth Hillbrand
parent 1fda68099f
commit 0f5ee38ee2
8 changed files with 507 additions and 215 deletions

View File

@ -219,6 +219,7 @@ endfunction()
md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/tracks_width_versus_current_formula ) md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/tracks_width_versus_current_formula )
md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/eseries_help ) md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/eseries_help )
md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/fusing_current_help ) md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/fusing_current_help )
md_doc2h( ${CMAKE_CURRENT_SOURCE_DIR}/galvanic_corrosion_help )
set( DOCS_LIST set( DOCS_LIST
${CMAKE_CURRENT_SOURCE_DIR}/attenuators/pi_formula.h ${CMAKE_CURRENT_SOURCE_DIR}/attenuators/pi_formula.h
@ -228,6 +229,7 @@ set( DOCS_LIST
${CMAKE_CURRENT_SOURCE_DIR}/tracks_width_versus_current_formula.h ${CMAKE_CURRENT_SOURCE_DIR}/tracks_width_versus_current_formula.h
${CMAKE_CURRENT_SOURCE_DIR}/eseries_help.h ${CMAKE_CURRENT_SOURCE_DIR}/eseries_help.h
${CMAKE_CURRENT_SOURCE_DIR}/fusing_current_help.h ${CMAKE_CURRENT_SOURCE_DIR}/fusing_current_help.h
${CMAKE_CURRENT_SOURCE_DIR}/galvanic_corrosion_help.h
) )
set_source_files_properties( attenuators/attenuator_classes.cpp set_source_files_properties( attenuators/attenuator_classes.cpp

View File

@ -21,6 +21,10 @@
#include <pcb_calculator_settings.h> #include <pcb_calculator_settings.h>
#include <widgets/unit_selector.h> #include <widgets/unit_selector.h>
#include <math/util.h> // for KiROUND #include <math/util.h> // for KiROUND
#include <string_utils.h>
#include <i18n_utility.h> // For _HKI definition in galvanic_corrosion_help.h
wxString galvanic_corrosion_help =
#include "galvanic_corrosion_help.h"
extern double DoubleFromString( const wxString& TextValue ); extern double DoubleFromString( const wxString& TextValue );
@ -70,24 +74,14 @@ PANEL_GALVANIC_CORROSION::PANEL_GALVANIC_CORROSION( wxWindow* parent, wxWindowID
m_table->AppendCols( (int) m_entries.size() ); m_table->AppendCols( (int) m_entries.size() );
m_table->AppendRows( (int) m_entries.size() ); m_table->AppendRows( (int) m_entries.size() );
// This is not currently HTML because we're in string freeze. But it might be nice to pretty // show markdown formula explanation in lower help panel
// it up for the next version.... wxString msg;
wxString help( _( "This table shows the difference in electrochemical potential between " ConvertMarkdown2Html( wxGetTranslation( galvanic_corrosion_help ), msg );
"various metals and alloys. A positive number indicates that the row is " m_helpText->SetPage( msg );
"anodic and the column is cathodic.\n"
"Galvanic corrosion affects different metals in contact and under certain "
"conditions.\n"
"The anode of an electrochemical pair gets oxidized and eaten away, while "
"the cathode gets dissolved metals plated onto it but stays protected.\n"
"EN 50310 suggests a voltage difference below 300mV. Known practices make "
"use of a third interface metal in between the main pair(ie the ENIG surface "
"finish)." ) );
help.Replace( "\n", "<br/>" );
m_helpText->SetPage( help );
m_symbolicStatus = true;
m_corFilterValue = 0; m_corFilterValue = 0;
fillTable(); fillTable();
} }
@ -98,6 +92,8 @@ PANEL_GALVANIC_CORROSION::~PANEL_GALVANIC_CORROSION()
void PANEL_GALVANIC_CORROSION::ThemeChanged() void PANEL_GALVANIC_CORROSION::ThemeChanged()
{ {
// Update the HTML window with the help text
m_helpText->ThemeChanged();
} }
@ -113,6 +109,21 @@ void PANEL_GALVANIC_CORROSION::SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg )
aCfg->m_CorrosionTable.threshold_voltage = wxString( "" ) << m_corFilterValue; aCfg->m_CorrosionTable.threshold_voltage = wxString( "" ) << m_corFilterValue;
} }
void PANEL_GALVANIC_CORROSION::OnNomenclatureChange( wxCommandEvent& aEvent )
{
if( m_radioBtnSymbol->GetValue() )
{
m_symbolicStatus = true;
}
else if( m_radioBtnName->GetValue() )
{
m_symbolicStatus = false;
}
fillTable();
}
void PANEL_GALVANIC_CORROSION::OnCorFilterChange( wxCommandEvent& aEvent ) void PANEL_GALVANIC_CORROSION::OnCorFilterChange( wxCommandEvent& aEvent )
{ {
@ -123,19 +134,40 @@ void PANEL_GALVANIC_CORROSION::OnCorFilterChange( wxCommandEvent& aEvent )
void PANEL_GALVANIC_CORROSION::fillTable() void PANEL_GALVANIC_CORROSION::fillTable()
{ {
// Fill the table with data // Fill the table with data
int i = 0; int i = 0;
wxColour color_ok( 122, 166, 194 ); wxColour color_ok( 122, 166, 194 );
wxColour color_text( 0, 0, 0 ); wxColour color_text( 0, 0, 0 );
wxString value; wxString value;
wxString label;
for( const CORROSION_TABLE_ENTRY& entryA : m_entries ) for( const CORROSION_TABLE_ENTRY& entryA : m_entries )
{ {
int j = 0; int j = 0;
wxString label = entryA.m_name;
if( entryA.m_symbol.size() > 0 ) if( m_symbolicStatus == true )
label += " (" + entryA.m_symbol + ")"; {
if( entryA.m_symbol.size() > 0 )
{
label = entryA.m_symbol;
}
else
{
label = entryA.m_name;
}
}
else
{
if( entryA.m_name.size() > 0 )
{
label = entryA.m_name;
}
else
{
label = entryA.m_symbol;
}
}
m_table->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER ); m_table->SetRowLabelAlignment( wxALIGN_RIGHT, wxALIGN_CENTER );
m_table->SetRowLabelValue( i, label ); m_table->SetRowLabelValue( i, label );
@ -192,5 +224,6 @@ void PANEL_GALVANIC_CORROSION::fillTable()
m_table->SetRowLabelSize( wxGRID_AUTOSIZE ); m_table->SetRowLabelSize( wxGRID_AUTOSIZE );
m_table->AutoSizeColumns(); m_table->AutoSizeColumns();
m_table->AutoSizeRows(); m_table->AutoSizeRows();
Refresh();
Layout();
} }

View File

@ -51,12 +51,14 @@ public:
void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; void LoadSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override;
void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override; void SaveSettings( PCB_CALCULATOR_SETTINGS* aCfg ) override;
void ThemeChanged() override; void ThemeChanged() override;
void OnNomenclatureChange( wxCommandEvent& aEvent ) override;
void OnCorFilterChange( wxCommandEvent& aEvent ) override; void OnCorFilterChange( wxCommandEvent& aEvent ) override;
private: private:
void fillTable(); void fillTable();
private: private:
bool m_symbolicStatus;
double m_corFilterValue; double m_corFilterValue;
}; };

View File

@ -11,10 +11,9 @@
PANEL_GALVANIC_CORROSION_BASE::PANEL_GALVANIC_CORROSION_BASE( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : CALCULATOR_PANEL( parent, id, pos, size, style, name ) PANEL_GALVANIC_CORROSION_BASE::PANEL_GALVANIC_CORROSION_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* bSizer6;
bSizer6 = new wxBoxSizer( wxVERTICAL ); bSizer6 = new wxBoxSizer( wxVERTICAL );
m_scrolledWindow1 = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL ); m_scrolledWindow1 = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxTAB_TRAVERSAL|wxVSCROLL );
m_scrolledWindow1->SetScrollRate( 5, 5 ); m_scrolledWindow1->SetScrollRate( 5, 5 );
wxBoxSizer* bSizer7; wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxVERTICAL ); bSizer7 = new wxBoxSizer( wxVERTICAL );
@ -42,8 +41,8 @@ PANEL_GALVANIC_CORROSION_BASE::PANEL_GALVANIC_CORROSION_BASE( wxWindow* parent,
// Label Appearance // Label Appearance
// Cell Defaults // Cell Defaults
m_table->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP ); m_table->SetDefaultCellAlignment( wxALIGN_CENTER, wxALIGN_BOTTOM );
bSizer7->Add( m_table, 1, wxEXPAND, 5 ); bSizer7->Add( m_table, 0, 0, 5 );
m_scrolledWindow1->SetSizer( bSizer7 ); m_scrolledWindow1->SetSizer( bSizer7 );
@ -52,28 +51,51 @@ PANEL_GALVANIC_CORROSION_BASE::PANEL_GALVANIC_CORROSION_BASE( wxWindow* parent,
bSizer6->Add( m_scrolledWindow1, 1, wxEXPAND|wxALL, 5 ); bSizer6->Add( m_scrolledWindow1, 1, wxEXPAND|wxALL, 5 );
m_helpText = new HTML_WINDOW( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO ); m_helpText = new HTML_WINDOW( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
m_helpText->SetMinSize( wxSize( 400,100 ) ); m_helpText->SetMinSize( wxSize( 400,110 ) );
bSizer6->Add( m_helpText, 0, wxALL|wxEXPAND, 5 ); bSizer6->Add( m_helpText, 0, wxALL|wxEXPAND, 5 );
wxBoxSizer* bSizer5;
bSizer5 = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSizer3; wxBoxSizer* bSizer3;
bSizer3 = new wxBoxSizer( wxHORIZONTAL ); bSizer3 = new wxBoxSizer( wxHORIZONTAL );
m_staticText2 = new wxStaticText( this, wxID_ANY, _("Threshold voltage:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText2 = new wxStaticText( this, wxID_ANY, _("Threshold voltage:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText2->Wrap( -1 ); m_staticText2->Wrap( -1 );
bSizer3->Add( m_staticText2, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT, 5 ); bSizer3->Add( m_staticText2, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxTOP, 5 );
m_corFilterCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); m_corFilterCtrl = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
m_corFilterCtrl->SetMinSize( wxSize( 100,-1 ) ); m_corFilterCtrl->SetMinSize( wxSize( 100,-1 ) );
bSizer3->Add( m_corFilterCtrl, 0, wxALL, 5 ); bSizer3->Add( m_corFilterCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_staticText3 = new wxStaticText( this, wxID_ANY, _("mV"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText3 = new wxStaticText( this, wxID_ANY, _("mV"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText3->Wrap( -1 ); m_staticText3->Wrap( -1 );
bSizer3->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5 ); bSizer3->Add( m_staticText3, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
m_staticline1->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxEmptyString ) );
bSizer3->Add( m_staticline1, 0, wxEXPAND, 5 );
bSizer6->Add( bSizer3, 0, wxEXPAND|wxBOTTOM|wxLEFT, 5 ); bSizer5->Add( bSizer3, 0, 0, 5 );
wxBoxSizer* bSizer4;
bSizer4 = new wxBoxSizer( wxHORIZONTAL );
m_radioBtnSymbol = new wxRadioButton( this, wxID_ANY, _("Symbols"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer4->Add( m_radioBtnSymbol, 0, 0, 5 );
m_radioBtnName = new wxRadioButton( this, wxID_ANY, _("Names"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer4->Add( m_radioBtnName, 0, 0, 5 );
bSizer5->Add( bSizer4, 0, wxALIGN_CENTER_VERTICAL, 5 );
bSizer6->Add( bSizer5, 0, wxEXPAND, 5 );
this->SetSizer( bSizer6 ); this->SetSizer( bSizer6 );
@ -82,11 +104,15 @@ PANEL_GALVANIC_CORROSION_BASE::PANEL_GALVANIC_CORROSION_BASE( wxWindow* parent,
// Connect Events // Connect Events
m_corFilterCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnCorFilterChange ), NULL, this ); m_corFilterCtrl->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnCorFilterChange ), NULL, this );
m_radioBtnSymbol->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnNomenclatureChange ), NULL, this );
m_radioBtnName->Connect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnNomenclatureChange ), NULL, this );
} }
PANEL_GALVANIC_CORROSION_BASE::~PANEL_GALVANIC_CORROSION_BASE() PANEL_GALVANIC_CORROSION_BASE::~PANEL_GALVANIC_CORROSION_BASE()
{ {
// Disconnect Events // Disconnect Events
m_corFilterCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnCorFilterChange ), NULL, this ); m_corFilterCtrl->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnCorFilterChange ), NULL, this );
m_radioBtnSymbol->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnNomenclatureChange ), NULL, this );
m_radioBtnName->Disconnect( wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler( PANEL_GALVANIC_CORROSION_BASE::OnNomenclatureChange ), NULL, this );
} }

View File

@ -56,7 +56,7 @@
<property name="minimum_size"></property> <property name="minimum_size"></property>
<property name="name">bSizer6</property> <property name="name">bSizer6</property>
<property name="orient">wxVERTICAL</property> <property name="orient">wxVERTICAL</property>
<property name="permission">none</property> <property name="permission">protected</property>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="1">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxEXPAND|wxALL</property> <property name="flag">wxEXPAND|wxALL</property>
@ -113,17 +113,17 @@
<property name="tooltip"></property> <property name="tooltip"></property>
<property name="window_extra_style"></property> <property name="window_extra_style"></property>
<property name="window_name"></property> <property name="window_name"></property>
<property name="window_style">wxHSCROLL|wxVSCROLL</property> <property name="window_style">wxHSCROLL|wxTAB_TRAVERSAL|wxVSCROLL</property>
<object class="wxBoxSizer" expanded="1"> <object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property> <property name="minimum_size"></property>
<property name="name">bSizer7</property> <property name="name">bSizer7</property>
<property name="orient">wxVERTICAL</property> <property name="orient">wxVERTICAL</property>
<property name="permission">none</property> <property name="permission">none</property>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="0">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxEXPAND</property> <property name="flag"></property>
<property name="proportion">1</property> <property name="proportion">0</property>
<object class="wxGrid" expanded="1"> <object class="wxGrid" expanded="0">
<property name="BottomDockable">1</property> <property name="BottomDockable">1</property>
<property name="LeftDockable">1</property> <property name="LeftDockable">1</property>
<property name="RightDockable">1</property> <property name="RightDockable">1</property>
@ -140,9 +140,9 @@
<property name="caption_visible">1</property> <property name="caption_visible">1</property>
<property name="cell_bg"></property> <property name="cell_bg"></property>
<property name="cell_font"></property> <property name="cell_font"></property>
<property name="cell_horiz_alignment">wxALIGN_LEFT</property> <property name="cell_horiz_alignment">wxALIGN_CENTER</property>
<property name="cell_text"></property> <property name="cell_text"></property>
<property name="cell_vert_alignment">wxALIGN_TOP</property> <property name="cell_vert_alignment">wxALIGN_BOTTOM</property>
<property name="center_pane">0</property> <property name="center_pane">0</property>
<property name="close_button">1</property> <property name="close_button">1</property>
<property name="col_label_horiz_alignment">wxALIGN_CENTER</property> <property name="col_label_horiz_alignment">wxALIGN_CENTER</property>
@ -247,7 +247,7 @@
<property name="maximum_size"></property> <property name="maximum_size"></property>
<property name="min_size"></property> <property name="min_size"></property>
<property name="minimize_button">0</property> <property name="minimize_button">0</property>
<property name="minimum_size">400,100</property> <property name="minimum_size">400,110</property>
<property name="moveable">1</property> <property name="moveable">1</property>
<property name="name">m_helpText</property> <property name="name">m_helpText</property>
<property name="pane_border">1</property> <property name="pane_border">1</property>
@ -270,198 +270,408 @@
</object> </object>
<object class="sizeritem" expanded="1"> <object class="sizeritem" expanded="1">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxEXPAND|wxBOTTOM|wxLEFT</property> <property name="flag">wxEXPAND</property>
<property name="proportion">0</property> <property name="proportion">0</property>
<object class="wxBoxSizer" expanded="1"> <object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property> <property name="minimum_size"></property>
<property name="name">bSizer3</property> <property name="name">bSizer5</property>
<property name="orient">wxHORIZONTAL</property> <property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property> <property name="permission">none</property>
<object class="sizeritem" expanded="0"> <object class="sizeritem" expanded="0">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxRIGHT</property> <property name="flag"></property>
<property name="proportion">0</property> <property name="proportion">0</property>
<object class="wxStaticText" expanded="0"> <object class="wxBoxSizer" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Threshold voltage:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property> <property name="minimum_size"></property>
<property name="moveable">1</property> <property name="name">bSizer3</property>
<property name="name">m_staticText2</property> <property name="orient">wxHORIZONTAL</property>
<property name="pane_border">1</property> <property name="permission">none</property>
<property name="pane_position"></property> <object class="sizeritem" expanded="0">
<property name="pane_size"></property> <property name="border">5</property>
<property name="permission">protected</property> <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL|wxTOP</property>
<property name="pin_button">1</property> <property name="proportion">0</property>
<property name="pos"></property> <object class="wxStaticText" expanded="0">
<property name="resize">Resizable</property> <property name="BottomDockable">1</property>
<property name="show">1</property> <property name="LeftDockable">1</property>
<property name="size"></property> <property name="RightDockable">1</property>
<property name="style"></property> <property name="TopDockable">1</property>
<property name="subclass">; ; forward_declare</property> <property name="aui_layer"></property>
<property name="toolbar_pane">0</property> <property name="aui_name"></property>
<property name="tooltip"></property> <property name="aui_position"></property>
<property name="window_extra_style"></property> <property name="aui_row"></property>
<property name="window_name"></property> <property name="best_size"></property>
<property name="window_style"></property> <property name="bg"></property>
<property name="wrap">-1</property> <property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Threshold voltage:</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText2</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxTextCtrl" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">100,-1</property>
<property name="moveable">1</property>
<property name="name">m_corFilterCtrl</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnText">OnCorFilterChange</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">mV</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText3</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
<object class="wxStaticLine" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font">,90,90,-1,70,0</property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticline1</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxLI_VERTICAL</property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
</object>
</object>
</object> </object>
</object> </object>
<object class="sizeritem" expanded="0"> <object class="sizeritem" expanded="0">
<property name="border">5</property> <property name="border">5</property>
<property name="flag">wxALL</property> <property name="flag">wxALIGN_CENTER_VERTICAL</property>
<property name="proportion">0</property> <property name="proportion">0</property>
<object class="wxTextCtrl" expanded="0"> <object class="wxBoxSizer" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="maxlength"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">100,-1</property>
<property name="moveable">1</property>
<property name="name">m_corFilterCtrl</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnText">OnCorFilterChange</event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">mV</property>
<property name="markup">0</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property> <property name="minimum_size"></property>
<property name="moveable">1</property> <property name="name">bSizer4</property>
<property name="name">m_staticText3</property> <property name="orient">wxHORIZONTAL</property>
<property name="pane_border">1</property> <property name="permission">none</property>
<property name="pane_position"></property> <object class="sizeritem" expanded="0">
<property name="pane_size"></property> <property name="border">5</property>
<property name="permission">protected</property> <property name="flag"></property>
<property name="pin_button">1</property> <property name="proportion">0</property>
<property name="pos"></property> <object class="wxRadioButton" expanded="0">
<property name="resize">Resizable</property> <property name="BottomDockable">1</property>
<property name="show">1</property> <property name="LeftDockable">1</property>
<property name="size"></property> <property name="RightDockable">1</property>
<property name="style"></property> <property name="TopDockable">1</property>
<property name="subclass">; ; forward_declare</property> <property name="aui_layer"></property>
<property name="toolbar_pane">0</property> <property name="aui_name"></property>
<property name="tooltip"></property> <property name="aui_position"></property>
<property name="window_extra_style"></property> <property name="aui_row"></property>
<property name="window_name"></property> <property name="best_size"></property>
<property name="window_style"></property> <property name="bg"></property>
<property name="wrap">-1</property> <property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Symbols</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_radioBtnSymbol</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value">0</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnRadioButton">OnNomenclatureChange</event>
</object>
</object>
<object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag"></property>
<property name="proportion">0</property>
<object class="wxRadioButton" expanded="0">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Names</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_radioBtnName</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass">; ; forward_declare</property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value">0</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnRadioButton">OnNomenclatureChange</event>
</object>
</object>
</object> </object>
</object> </object>
</object> </object>

View File

@ -23,6 +23,8 @@
#include <wx/html/htmlwin.h> #include <wx/html/htmlwin.h>
#include <wx/stattext.h> #include <wx/stattext.h>
#include <wx/textctrl.h> #include <wx/textctrl.h>
#include <wx/statline.h>
#include <wx/radiobut.h>
#include <wx/panel.h> #include <wx/panel.h>
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -36,15 +38,20 @@ class PANEL_GALVANIC_CORROSION_BASE : public CALCULATOR_PANEL
private: private:
protected: protected:
wxBoxSizer* bSizer6;
wxScrolledWindow* m_scrolledWindow1; wxScrolledWindow* m_scrolledWindow1;
wxGrid* m_table; wxGrid* m_table;
HTML_WINDOW* m_helpText; HTML_WINDOW* m_helpText;
wxStaticText* m_staticText2; wxStaticText* m_staticText2;
wxTextCtrl* m_corFilterCtrl; wxTextCtrl* m_corFilterCtrl;
wxStaticText* m_staticText3; wxStaticText* m_staticText3;
wxStaticLine* m_staticline1;
wxRadioButton* m_radioBtnSymbol;
wxRadioButton* m_radioBtnName;
// Virtual event handlers, override them in your derived class // Virtual event handlers, override them in your derived class
virtual void OnCorFilterChange( wxCommandEvent& event ) { event.Skip(); } virtual void OnCorFilterChange( wxCommandEvent& event ) { event.Skip(); }
virtual void OnNomenclatureChange( wxCommandEvent& event ) { event.Skip(); }
public: public:

View File

@ -0,0 +1,7 @@
// Do not edit this file, it is autogenerated by CMake from the .md file
_HKI( "This table shows the difference in electrochemical potential between various metals and alloys. Galvanic corrosion affects different metals in contact and under certain conditions.<br>\n"
"The anode of an electrochemical pair gets oxidized and eaten away, while the cathode gets dissolved metals plated onto it but stays protected.<br>\n"
"A positive number indicates that the row is anodic (-) and the column is cathodic (+), cold and warm coloring hues also indicate rows' potential.<br>\n"
"EN 50310 suggests a voltage difference below 300mV. Known practices make use of a third interface metal in between the main pair(ie the ENIG surface finish).<br>\n"
"Selected cells shown with the default system's coloring choice after a table refill.\n"
"" );

View File

@ -0,0 +1,5 @@
This table shows the difference in electrochemical potential between various metals and alloys. Galvanic corrosion affects different metals in contact and under certain conditions.<br>
The anode of an electrochemical pair gets oxidized and eaten away, while the cathode gets dissolved metals plated onto it but stays protected.<br>
A positive number indicates that the row is anodic (-) and the column is cathodic (+), cold and warm coloring hues also indicate rows' potential.<br>
EN 50310 suggests a voltage difference below 300mV. Known practices make use of a third interface metal in between the main pair(ie the ENIG surface finish).<br>
Selected cells shown with the default system's coloring choice after a table refill.