diff --git a/pcb_calculator/calculator_panels/panel_transline_base.cpp b/pcb_calculator/calculator_panels/panel_transline_base.cpp
index 796e0cc688..0a836fb1da 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 4.2.1-0-g80c4cb6-dirty)
+// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -372,7 +372,7 @@ PANEL_TRANSLINE_BASE::PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id, con
sbMessagesSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Results") ), wxVERTICAL );
wxFlexGridSizer* fgSizerTranslResults;
- fgSizerTranslResults = new wxFlexGridSizer( 8, 2, 4, 0 );
+ fgSizerTranslResults = new wxFlexGridSizer( 10, 2, 4, 0 );
fgSizerTranslResults->AddGrowableCol( 1 );
fgSizerTranslResults->SetFlexibleDirection( wxBOTH );
fgSizerTranslResults->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
@@ -441,6 +441,22 @@ PANEL_TRANSLINE_BASE::PANEL_TRANSLINE_BASE( wxWindow* parent, wxWindowID id, con
m_Message8->Wrap( -1 );
fgSizerTranslResults->Add( m_Message8, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
+ m_left_message9 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_left_message9->Wrap( -1 );
+ fgSizerTranslResults->Add( m_left_message9, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
+
+ m_Message9 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_Message9->Wrap( -1 );
+ fgSizerTranslResults->Add( m_Message9, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
+
+ m_left_message10 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_left_message10->Wrap( -1 );
+ fgSizerTranslResults->Add( m_left_message10, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
+
+ m_Message10 = new wxStaticText( sbMessagesSizer->GetStaticBox(), wxID_ANY, _("dummy"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_Message10->Wrap( -1 );
+ fgSizerTranslResults->Add( m_Message10, 0, wxEXPAND|wxLEFT|wxRIGHT, 5 );
+
sbMessagesSizer->Add( fgSizerTranslResults, 1, wxALL|wxEXPAND, 5 );
diff --git a/pcb_calculator/calculator_panels/panel_transline_base.fbp b/pcb_calculator/calculator_panels/panel_transline_base.fbp
index cc5b207247..c0f1f08662 100644
--- a/pcb_calculator/calculator_panels/panel_transline_base.fbp
+++ b/pcb_calculator/calculator_panels/panel_transline_base.fbp
@@ -4150,7 +4150,7 @@
fgSizerTranslResults
wxFLEX_GROWMODE_SPECIFIED
none
- 8
+ 10
4
+
+
+ 5
+ wxEXPAND|wxLEFT|wxRIGHT
+ 0
+
+ 1
+ 1
+ 1
+ 1
+ 0
+
+ 0
+ 0
+
+
+
+ 1
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 0
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ dummy
+ 0
+
+ 0
+
+
+ 0
+
+ 1
+ m_Message9
+ 1
+
+
+ protected
+ 1
+
+ Resizable
+ 1
+
+
+ ; ; Not forward_declare
+ 0
+
+
+
+
+ -1
+
+
+
+ 5
+ wxALIGN_CENTER_VERTICAL|wxRIGHT
+ 0
+
+ 1
+ 1
+ 1
+ 1
+ 0
+
+ 0
+ 0
+
+
+
+ 1
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 0
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ dummy
+ 0
+
+ 0
+
+
+ 0
+
+ 1
+ m_left_message10
+ 1
+
+
+ protected
+ 1
+
+ Resizable
+ 1
+
+
+ ; ; Not forward_declare
+ 0
+
+
+
+
+ -1
+
+
+
+ 5
+ wxEXPAND|wxLEFT|wxRIGHT
+ 0
+
+ 1
+ 1
+ 1
+ 1
+ 0
+
+ 0
+ 0
+
+
+
+ 1
+ 0
+ 1
+
+ 1
+ 0
+ Dock
+ 0
+ Left
+ 0
+ 1
+
+ 1
+
+ 0
+ 0
+ wxID_ANY
+ dummy
+ 0
+
+ 0
+
+
+ 0
+
+ 1
+ m_Message10
+ 1
+
+
+ protected
+ 1
+
+ Resizable
+ 1
+
+
+ ; ; Not forward_declare
+ 0
+
+
+
+
+ -1
+
+
diff --git a/pcb_calculator/calculator_panels/panel_transline_base.h b/pcb_calculator/calculator_panels/panel_transline_base.h
index 5e9a500288..bc145652e1 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 4.2.1-0-g80c4cb6-dirty)
+// C++ code generated with wxFormBuilder (version 4.2.1-0-g80c4cb6)
// http://www.wxformbuilder.org/
//
// PLEASE DO *NOT* EDIT THIS FILE!
@@ -121,6 +121,10 @@ class PANEL_TRANSLINE_BASE : public CALCULATOR_PANEL
wxStaticText* m_Message7;
wxStaticText* m_left_message8;
wxStaticText* m_Message8;
+ wxStaticText* m_left_message9;
+ wxStaticText* m_Message9;
+ wxStaticText* m_left_message10;
+ wxStaticText* m_Message10;
wxButton* m_buttonTransLineReset;
// Virtual event handlers, override them in your derived class
diff --git a/pcb_calculator/params_read_write.cpp b/pcb_calculator/params_read_write.cpp
index 0990071639..5ae7a942ab 100644
--- a/pcb_calculator/params_read_write.cpp
+++ b/pcb_calculator/params_read_write.cpp
@@ -221,12 +221,9 @@ void PANEL_TRANSLINE::SetPrmBgColor( enum PRMS_ID aPrmId, const KIGFX::COLOR4D*
*/
void PANEL_TRANSLINE::SetResult( int aLineNumber, const wxString& aText )
{
- #define MSG_CNT_MAX 8
- wxStaticText* messages[MSG_CNT_MAX] =
- { m_Message1, m_Message2, m_Message3,
- m_Message4, m_Message5, m_Message6,
- m_Message7, m_Message8
- };
+#define MSG_CNT_MAX 10
+ wxStaticText* messages[MSG_CNT_MAX] = { m_Message1, m_Message2, m_Message3, m_Message4, m_Message5,
+ m_Message6, m_Message7, m_Message8, m_Message9, m_Message10 };
wxASSERT( ( aLineNumber >= 0 ) && ( aLineNumber < MSG_CNT_MAX ) );
diff --git a/pcb_calculator/transline/c_microstrip.cpp b/pcb_calculator/transline/c_microstrip.cpp
index 6b6eb681b7..d91d094fe2 100644
--- a/pcb_calculator/transline/c_microstrip.cpp
+++ b/pcb_calculator/transline/c_microstrip.cpp
@@ -452,6 +452,7 @@ void C_MICROSTRIP::er_eff_freq()
F_e = P_1 * P_2 * pow( ( P_3 * P_4 + 0.1844 * P_7 ) * f_n, 1.5763 );
/* even-mode effective dielectric constant */
er_eff_e = m_parameters[EPSILONR_PRM] - ( m_parameters[EPSILONR_PRM] - er_eff ) / ( 1.0 + F_e );
+ prop_delay_e = calcUnitPropagationDelay( er_eff_e );
er_eff = er_eff_o_0;
P_8 = 0.7168 * ( 1.0 + 1.076 / ( 1.0 + 0.0576 * ( m_parameters[EPSILONR_PRM] - 1.0 ) ) );
@@ -468,6 +469,7 @@ void C_MICROSTRIP::er_eff_freq()
F_o = P_1 * P_2 * pow( ( P_3 * P_4 + 0.1844 ) * f_n * P_15, 1.5763 );
/* odd-mode effective dielectric constant */
er_eff_o = m_parameters[EPSILONR_PRM] - ( m_parameters[EPSILONR_PRM] - er_eff ) / ( 1.0 + F_o );
+ prop_delay_o = calcUnitPropagationDelay( er_eff_o );
}
@@ -874,13 +876,15 @@ void C_MICROSTRIP::show_results()
setResult( 0, er_eff_e, "" );
setResult( 1, er_eff_o, "" );
- setResult( 2, atten_cond_e, "dB" );
- setResult( 3, atten_cond_o, "dB" );
- setResult( 4, atten_dielectric_e, "dB" );
- setResult( 5, atten_dielectric_o, "dB" );
+ setResult( 2, prop_delay_e, "ps/cm" );
+ setResult( 3, prop_delay_o, "ps/cm" );
+ setResult( 4, atten_cond_e, "dB" );
+ setResult( 5, atten_cond_o, "dB" );
+ setResult( 6, atten_dielectric_e, "dB" );
+ setResult( 7, atten_dielectric_o, "dB" );
- setResult( 6, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
- setResult( 7, Zdiff, "Ω" );
+ setResult( 8, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
+ setResult( 9, Zdiff, "Ω" );
}
diff --git a/pcb_calculator/transline/c_microstrip.h b/pcb_calculator/transline/c_microstrip.h
index b8add924e2..c651204cce 100644
--- a/pcb_calculator/transline/c_microstrip.h
+++ b/pcb_calculator/transline/c_microstrip.h
@@ -55,6 +55,8 @@ private:
double ang_l_o; // odd-mode electrical length in angle
double er_eff_e; // even-mode effective dielectric constant
double er_eff_o; // odd-mode effective dielectric constant
+ double prop_delay_e; // even-mode unit propagation delay (ps/cm)
+ double prop_delay_o; // odd-mode unit propagation delay (ps/cm)
double er_eff_e_0; // static even-mode effective dielectric constant
double er_eff_o_0; // static odd-mode effective dielectric constant
double w_eff; // Effective width of line
diff --git a/pcb_calculator/transline/coplanar.cpp b/pcb_calculator/transline/coplanar.cpp
index fdc6af3f71..6caf3f129f 100644
--- a/pcb_calculator/transline/coplanar.cpp
+++ b/pcb_calculator/transline/coplanar.cpp
@@ -35,6 +35,7 @@ COPLANAR::COPLANAR() : TRANSLINE()
{
m_Name = "CoPlanar";
backMetal = false;
+ unit_prop_delay = 0.0;
Init();
}
@@ -172,6 +173,8 @@ void COPLANAR::calcAnalyze()
m_parameters[EPSILON_EFF_PRM] = sr_er_f * sr_er_f;
m_parameters[Z0_PRM] = zl_factor / sr_er_f;
+
+ unit_prop_delay = calcUnitPropagationDelay( m_parameters[EPSILON_EFF_PRM] );
}
@@ -180,10 +183,11 @@ void COPLANAR::show_results()
{
setResult( 0, m_parameters[EPSILON_EFF_PRM], "" );
- setResult( 1, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
- setResult( 2, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
+ setResult( 1, unit_prop_delay, "ps/cm" );
+ setResult( 2, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
+ setResult( 3, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
- setResult( 3, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
+ setResult( 4, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
}
diff --git a/pcb_calculator/transline/coplanar.h b/pcb_calculator/transline/coplanar.h
index 7ceaffc7e7..f1f1dea128 100644
--- a/pcb_calculator/transline/coplanar.h
+++ b/pcb_calculator/transline/coplanar.h
@@ -37,6 +37,7 @@ public:
protected:
bool backMetal;
+ double unit_prop_delay;
private:
void calcAnalyze() override;
diff --git a/pcb_calculator/transline/microstrip.cpp b/pcb_calculator/transline/microstrip.cpp
index 7646741f58..fb0235d1de 100644
--- a/pcb_calculator/transline/microstrip.cpp
+++ b/pcb_calculator/transline/microstrip.cpp
@@ -305,6 +305,9 @@ void MICROSTRIP::dispersion()
D = Z0_dispersion( u, e_r, e_r_eff_0, e_r_eff_f, f_n );
Z0_f = Z0_0 * D;
+ // 1e10 factor is to convert from s/m to ps/cm
+ unit_prop_delay = calcUnitPropagationDelay( e_r_eff_f );
+
m_parameters[EPSILON_EFF_PRM] = e_r_eff_f;
m_parameters[Z0_PRM] = Z0_f;
}
@@ -465,10 +468,11 @@ void MICROSTRIP::show_results()
setProperty( ANG_L_PRM, m_parameters[ANG_L_PRM] );
setResult( 0, m_parameters[EPSILON_EFF_PRM], "" );
- setResult( 1, atten_cond, "dB" );
- setResult( 2, atten_dielectric, "dB" );
+ setResult( 1, unit_prop_delay, "ps/cm" );
+ setResult( 2, atten_cond, "dB" );
+ setResult( 3, atten_dielectric, "dB" );
- setResult( 3, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
+ setResult( 4, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
}
diff --git a/pcb_calculator/transline/microstrip.h b/pcb_calculator/transline/microstrip.h
index 01221be9ee..599711f5a6 100644
--- a/pcb_calculator/transline/microstrip.h
+++ b/pcb_calculator/transline/microstrip.h
@@ -49,6 +49,7 @@ private:
double w_eff; // Effective width of line
double atten_dielectric; // Loss in dielectric (dB)
double atten_cond; // Loss in conductors (dB)
+ double unit_prop_delay; // Unit propagation delay (ps/cm)
// private params
double Z0_h_1; // homogeneous stripline impedance
diff --git a/pcb_calculator/transline/stripline.cpp b/pcb_calculator/transline/stripline.cpp
index aff5741d24..edd2220596 100644
--- a/pcb_calculator/transline/stripline.cpp
+++ b/pcb_calculator/transline/stripline.cpp
@@ -30,7 +30,7 @@
#include "stripline.h"
#include "units.h"
-STRIPLINE::STRIPLINE() : TRANSLINE()
+STRIPLINE::STRIPLINE() : TRANSLINE(), unit_prop_delay( 0.0 )
{
m_Name = "StripLine";
Init();
@@ -104,6 +104,8 @@ void STRIPLINE::calcAnalyze()
m_parameters[ANG_L_PRM] = 2.0 * M_PI * m_parameters[PHYS_LEN_PRM]
* sqrt( m_parameters[EPSILONR_PRM] ) * m_parameters[FREQUENCY_PRM]
/ C0; // in radians
+
+ unit_prop_delay = calcUnitPropagationDelay( m_parameters[EPSILON_EFF_PRM] );
}
@@ -163,10 +165,11 @@ void STRIPLINE::show_results()
{
setResult( 0, m_parameters[EPSILON_EFF_PRM], "" );
- setResult( 1, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
- setResult( 2, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
+ setResult( 1, unit_prop_delay, "ps/cm" );
+ setResult( 2, m_parameters[LOSS_CONDUCTOR_PRM], "dB" );
+ setResult( 3, m_parameters[LOSS_DIELECTRIC_PRM], "dB" );
- setResult( 3, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
+ setResult( 4, m_parameters[SKIN_DEPTH_PRM] / UNIT_MICRON, "µm" );
}
diff --git a/pcb_calculator/transline/stripline.h b/pcb_calculator/transline/stripline.h
index 1315c26ecd..b4e4efede9 100644
--- a/pcb_calculator/transline/stripline.h
+++ b/pcb_calculator/transline/stripline.h
@@ -39,6 +39,8 @@ private:
void showAnalyze() override;
double lineImpedance( double, double& );
void show_results() override;
+
+ double unit_prop_delay;
};
#endif
diff --git a/pcb_calculator/transline/transline.cpp b/pcb_calculator/transline/transline.cpp
index e1f2841a64..aee2582ef9 100644
--- a/pcb_calculator/transline/transline.cpp
+++ b/pcb_calculator/transline/transline.cpp
@@ -438,3 +438,9 @@ void TRANSLINE::setErrorLevel( PRMS_ID aP, char aErrorLevel )
default: SetPropertyBgColorInDialog( aP, &okCol ); break;
}
}
+
+
+double TRANSLINE::calcUnitPropagationDelay( const double epsilonEff )
+{
+ return std::sqrt( epsilonEff ) * ( 1.0e10 / 2.99e8 );
+}
\ No newline at end of file
diff --git a/pcb_calculator/transline/transline.h b/pcb_calculator/transline/transline.h
index 74d0d5e6fb..bc67a03d8c 100644
--- a/pcb_calculator/transline/transline.h
+++ b/pcb_calculator/transline/transline.h
@@ -135,6 +135,9 @@ protected:
void ellipke( double, double&, double& );
double ellipk( double );
void setErrorLevel( PRMS_ID, char );
+
+ /// Calculates the unit propagation delay (in ps/cm) for the given effective dielectric constant
+ static double calcUnitPropagationDelay( double epsilonEff );
};
#endif /* __TRANSLINE_H */
diff --git a/pcb_calculator/transline_dlg_funct.cpp b/pcb_calculator/transline_dlg_funct.cpp
index 682beb1ac4..5834753b5e 100644
--- a/pcb_calculator/transline_dlg_funct.cpp
+++ b/pcb_calculator/transline_dlg_funct.cpp
@@ -116,16 +116,12 @@ void PANEL_TRANSLINE::TranslineTypeSelection( enum TRANSLINE_TYPE_ID aType )
m_radioBtnPrm2->Show( tr_ident->m_HasPrmSelection );
// Setup messages
- wxStaticText* left_msg_list[] =
- {
- m_left_message1, m_left_message2, m_left_message3, m_left_message4, m_left_message5,
- m_left_message6, m_left_message7, m_left_message8, nullptr
- };
+ wxStaticText* left_msg_list[] = { m_left_message1, m_left_message2, m_left_message3, m_left_message4,
+ m_left_message5, m_left_message6, m_left_message7, m_left_message8,
+ m_left_message9, m_left_message10, nullptr };
- wxStaticText* msg_list[] =
- {
- m_Message1, m_Message2, m_Message3, m_Message4, m_Message5, m_Message6, m_Message7, m_Message8, nullptr
- };
+ wxStaticText* msg_list[] = { m_Message1, m_Message2, m_Message3, m_Message4, m_Message5, m_Message6,
+ m_Message7, m_Message8, m_Message9, m_Message10, nullptr };
unsigned jj = 0;
diff --git a/pcb_calculator/transline_ident.cpp b/pcb_calculator/transline_ident.cpp
index 5533d87910..7f47ff1096 100644
--- a/pcb_calculator/transline_ident.cpp
+++ b/pcb_calculator/transline_ident.cpp
@@ -117,6 +117,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
m_BitmapName = BITMAPS::microstrip;
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
+ m_Messages.Add( _( "Unit propagation delay:" ) );
m_Messages.Add( _( "Conductor losses:" ) );
m_Messages.Add( _( "Dielectric losses:" ) );
m_Messages.Add( _( "Skin depth:" ) );
@@ -159,6 +160,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
m_HasPrmSelection = true;
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
+ m_Messages.Add( _( "Unit propagation delay:" ) );
m_Messages.Add( _( "Conductor losses:" ) );
m_Messages.Add( _( "Dielectric losses:" ) );
m_Messages.Add( _( "Skin depth:" ) );
@@ -193,6 +195,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
m_HasPrmSelection = true;
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
+ m_Messages.Add( _( "Unit propagation delay:" ) );
m_Messages.Add( _( "Conductor losses:" ) );
m_Messages.Add( _( "Dielectric losses:" ) );
m_Messages.Add( _( "Skin depth:" ) );
@@ -302,6 +305,8 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
m_Messages.Add( wxString::Format( _( "Effective %s (even):" ), wxT( "εr" ) ) );
m_Messages.Add( wxString::Format( _( "Effective %s (odd):" ), wxT( "εr" ) ) );
+ m_Messages.Add( _( "Unit propagation delay (even):" ) );
+ m_Messages.Add( _( "Unit propagation delay (odd):" ) );
m_Messages.Add( _( "Conductor losses (even):" ) );
m_Messages.Add( _( "Conductor losses (odd):" ) );
m_Messages.Add( _( "Dielectric losses (even):" ) );
@@ -349,6 +354,7 @@ TRANSLINE_IDENT::TRANSLINE_IDENT( enum TRANSLINE_TYPE_ID aType )
m_BitmapName = BITMAPS::stripline;
m_Messages.Add( wxString::Format( _( "Effective %s:" ), wxT( "εr" ) ) );
+ m_Messages.Add( _( "Unit propagation delay:" ) );
m_Messages.Add( _( "Conductor losses:" ) );
m_Messages.Add( _( "Dielectric losses:" ) );
m_Messages.Add( _( "Skin depth:" ) );
diff --git a/pcbnew/dialogs/panel_setup_condition_help_1clauses.h b/pcbnew/dialogs/panel_setup_condition_help_1clauses.h
new file mode 100644
index 0000000000..f1dbb6616b
--- /dev/null
+++ b/pcbnew/dialogs/panel_setup_condition_help_1clauses.h
@@ -0,0 +1,6 @@
+// Do not edit this file, it is autogenerated by CMake from the .md file
+_HKI( "### Clause\n"
+ "\n"
+ " (condition \"\")\n"
+ "\n"
+ "
" );
diff --git a/pcbnew/dialogs/panel_setup_condition_help_6notes.h b/pcbnew/dialogs/panel_setup_condition_help_6notes.h
new file mode 100644
index 0000000000..c22e698c0c
--- /dev/null
+++ b/pcbnew/dialogs/panel_setup_condition_help_6notes.h
@@ -0,0 +1,7 @@
+// Do not edit this file, it is autogenerated by CMake from the .md file
+_HKI( "### Notes\n"
+ "\n"
+ "Use Ctrl+/ to comment or uncomment line(s).\n"
+ "
\n"
+ "\n"
+ "" );