From 8ef66732e4d11c49b94084f5f5ff26f65a919d73 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Fri, 8 May 2020 22:16:27 +0100 Subject: [PATCH] Add syntax help for text markup. Fixes https://gitlab.com/kicad/code/kicad/issues/4233 --- eeschema/dialogs/dialog_edit_label.cpp | 85 ++++- eeschema/dialogs/dialog_edit_label_base.cpp | 40 +-- eeschema/dialogs/dialog_edit_label_base.fbp | 337 +++++++++++--------- eeschema/dialogs/dialog_edit_label_base.h | 4 +- 4 files changed, 300 insertions(+), 166 deletions(-) diff --git a/eeschema/dialogs/dialog_edit_label.cpp b/eeschema/dialogs/dialog_edit_label.cpp index ad49a31b1b..6c7c5951fa 100644 --- a/eeschema/dialogs/dialog_edit_label.cpp +++ b/eeschema/dialogs/dialog_edit_label.cpp @@ -38,6 +38,7 @@ #include #include #include +#include class SCH_EDIT_FRAME; class SCH_TEXT; @@ -71,8 +72,9 @@ public: } private: - virtual void OnEnterKey( wxCommandEvent& aEvent ) override; - void OnCharHook( wxKeyEvent& aEvt ); + void OnEnterKey( wxCommandEvent& aEvent ) override; + void OnCharHook( wxKeyEvent& aEvent ); + void OnFormattingHelp( wxHyperlinkEvent& aEvent ) override; bool TransferDataToWindow() override; bool TransferDataFromWindow() override; @@ -174,7 +176,10 @@ DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR( SCH_EDIT_FRAME* aParent, SCH_TEXT* aTe m_note2->SetFont( infoFont ); } else - m_textOffsetNote->Show( false ); + { + m_note1->Show( false ); + m_note2->Show( false ); + } m_sdbSizer1OK->SetDefault(); Layout(); @@ -491,3 +496,77 @@ bool DIALOG_LABEL_EDITOR::TransferDataFromWindow() return true; } + + +void DIALOG_LABEL_EDITOR::OnFormattingHelp( wxHyperlinkEvent& aEvent ) +{ + wxString msg = _( + "" + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + "
Markup               Result
 
^{superscript}
 
superscript
 
Driver Board^{Rev A}
 
Driver BoardRev A

 
_{subscript}
 
subscript
 
D_{0} - D_{15}
 
D0 - D31
" + "  
~overbar
" + "  
~CLK" + "
" + "             
overbar
" + "        
CLK" + "

 
${variable}
 
variable_value
 
${REVISION}
 
2020.1

 
${refdes:field}
 
field_value
 
${R3:VALUE}
 
150K
" ); + + HTML_MESSAGE_BOX dlg( GetParent(), _( "Syntax Help" ) ); + dlg.SetDialogSizeInDU( 180, 280 ); + + dlg.AddHTML_Text( msg ); + dlg.ShowModal(); +} diff --git a/eeschema/dialogs/dialog_edit_label_base.cpp b/eeschema/dialogs/dialog_edit_label_base.cpp index 2a174d72a8..df48c3966b 100644 --- a/eeschema/dialogs/dialog_edit_label_base.cpp +++ b/eeschema/dialogs/dialog_edit_label_base.cpp @@ -16,7 +16,7 @@ DIALOG_LABEL_EDITOR_BASE::DIALOG_LABEL_EDITOR_BASE( wxWindow* parent, wxWindowID wxBoxSizer* bMainSizer; bMainSizer = new wxBoxSizer( wxVERTICAL ); - m_textEntrySizer = new wxFlexGridSizer( 4, 2, 3, 3 ); + m_textEntrySizer = new wxFlexGridSizer( 5, 2, 3, 3 ); m_textEntrySizer->AddGrowableCol( 1 ); m_textEntrySizer->AddGrowableRow( 1 ); m_textEntrySizer->SetFlexibleDirection( wxBOTH ); @@ -27,16 +27,16 @@ DIALOG_LABEL_EDITOR_BASE::DIALOG_LABEL_EDITOR_BASE( wxWindow* parent, wxWindowID m_labelSingleLine->Wrap( -1 ); m_labelSingleLine->SetToolTip( _("Enter the text to be used within the schematic") ); - m_textEntrySizer->Add( m_labelSingleLine, 0, wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 3 ); + m_textEntrySizer->Add( m_labelSingleLine, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 3 ); m_valueSingleLine = new wxTextCtrl( this, wxID_VALUESINGLE, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_RICH ); m_valueSingleLine->SetMinSize( wxSize( 360,-1 ) ); - m_textEntrySizer->Add( m_valueSingleLine, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 ); + m_textEntrySizer->Add( m_valueSingleLine, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); m_labelMultiLine = new wxStaticText( this, wxID_ANY, _("Text:"), wxDefaultPosition, wxDefaultSize, 0 ); m_labelMultiLine->Wrap( -1 ); - m_textEntrySizer->Add( m_labelMultiLine, 0, wxTOP|wxRIGHT, 6 ); + m_textEntrySizer->Add( m_labelMultiLine, 0, wxTOP|wxRIGHT, 2 ); m_valueMultiLine = new wxStyledTextCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_SUNKEN, wxEmptyString ); m_valueMultiLine->SetUseTabs( true ); @@ -67,7 +67,7 @@ DIALOG_LABEL_EDITOR_BASE::DIALOG_LABEL_EDITOR_BASE( wxWindow* parent, wxWindowID m_valueMultiLine->MarkerDefine( wxSTC_MARKNUM_FOLDERTAIL, wxSTC_MARK_EMPTY ); m_valueMultiLine->SetSelBackground( true, wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHT ) ); m_valueMultiLine->SetSelForeground( true, wxSystemSettings::GetColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) ); - m_textEntrySizer->Add( m_valueMultiLine, 1, wxEXPAND|wxTOP|wxBOTTOM|wxLEFT, 5 ); + m_textEntrySizer->Add( m_valueMultiLine, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 ); m_labelCombo = new wxStaticText( this, wxID_ANY, _("Label:"), wxDefaultPosition, wxDefaultSize, 0 ); m_labelCombo->Wrap( -1 ); @@ -76,40 +76,38 @@ DIALOG_LABEL_EDITOR_BASE::DIALOG_LABEL_EDITOR_BASE( wxWindow* parent, wxWindowID m_valueCombo = new wxComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxTE_PROCESS_ENTER ); m_valueCombo->SetMinSize( wxSize( 360,-1 ) ); - m_textEntrySizer->Add( m_valueCombo, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT, 5 ); + m_textEntrySizer->Add( m_valueCombo, 0, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); m_textSizeLabel = new wxStaticText( this, wxID_ANY, _("Text Size:"), wxDefaultPosition, wxDefaultSize, 0 ); m_textSizeLabel->Wrap( -1 ); - m_textEntrySizer->Add( m_textSizeLabel, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 3 ); + m_textEntrySizer->Add( m_textSizeLabel, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 6 ); wxBoxSizer* bSizeCtrlSizer; bSizeCtrlSizer = new wxBoxSizer( wxHORIZONTAL ); m_textSizeCtrl = new wxTextCtrl( this, wxID_SIZE, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bSizeCtrlSizer->Add( m_textSizeCtrl, 0, wxLEFT|wxRIGHT|wxALIGN_CENTER_VERTICAL, 5 ); + bSizeCtrlSizer->Add( m_textSizeCtrl, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 6 ); m_textSizeUnits = new wxStaticText( this, wxID_ANY, _("mm"), wxDefaultPosition, wxDefaultSize, 0 ); m_textSizeUnits->Wrap( -1 ); - bSizeCtrlSizer->Add( m_textSizeUnits, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 20 ); + bSizeCtrlSizer->Add( m_textSizeUnits, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT, 6 ); - bSizeCtrlSizer->Add( 0, 0, 0, wxEXPAND, 15 ); + bSizeCtrlSizer->Add( 0, 0, 1, wxEXPAND, 15 ); - m_textOffsetNote = new wxBoxSizer( wxHORIZONTAL ); + m_formattingHelp = new wxHyperlinkCtrl( this, wxID_ANY, _("Syntax help"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE ); + bSizeCtrlSizer->Add( m_formattingHelp, 0, wxBOTTOM|wxRIGHT|wxLEFT, 8 ); + + + m_textEntrySizer->Add( bSizeCtrlSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT, 3 ); m_note1 = new wxStaticText( this, wxID_ANY, _("Note:"), wxDefaultPosition, wxDefaultSize, 0 ); m_note1->Wrap( -1 ); - m_textOffsetNote->Add( m_note1, 0, wxBOTTOM|wxRIGHT, 5 ); + m_textEntrySizer->Add( m_note1, 0, wxTOP|wxRIGHT, 5 ); - m_note2 = new wxStaticText( this, wxID_ANY, _("the margins around the text are controlled by the text\noffset ratio in Schematic Setup > General > Formatting."), wxDefaultPosition, wxDefaultSize, 0 ); + m_note2 = new wxStaticText( this, wxID_ANY, _("The margins around the text are controlled by the text offset ratio\nin Schematic Setup > General > Formatting."), wxDefaultPosition, wxDefaultSize, 0 ); m_note2->Wrap( -1 ); - m_textOffsetNote->Add( m_note2, 0, wxEXPAND, 5 ); - - - bSizeCtrlSizer->Add( m_textOffsetNote, 1, wxEXPAND|wxLEFT, 10 ); - - - m_textEntrySizer->Add( bSizeCtrlSizer, 1, wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP, 3 ); + m_textEntrySizer->Add( m_note2, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 ); bMainSizer->Add( m_textEntrySizer, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 12 ); @@ -161,6 +159,7 @@ DIALOG_LABEL_EDITOR_BASE::DIALOG_LABEL_EDITOR_BASE( wxWindow* parent, wxWindowID // Connect Events m_valueSingleLine->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_LABEL_EDITOR_BASE::OnEnterKey ), NULL, this ); m_valueCombo->Connect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_LABEL_EDITOR_BASE::OnEnterKey ), NULL, this ); + m_formattingHelp->Connect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_LABEL_EDITOR_BASE::OnFormattingHelp ), NULL, this ); } DIALOG_LABEL_EDITOR_BASE::~DIALOG_LABEL_EDITOR_BASE() @@ -168,5 +167,6 @@ DIALOG_LABEL_EDITOR_BASE::~DIALOG_LABEL_EDITOR_BASE() // Disconnect Events m_valueSingleLine->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_LABEL_EDITOR_BASE::OnEnterKey ), NULL, this ); m_valueCombo->Disconnect( wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler( DIALOG_LABEL_EDITOR_BASE::OnEnterKey ), NULL, this ); + m_formattingHelp->Disconnect( wxEVT_COMMAND_HYPERLINK, wxHyperlinkEventHandler( DIALOG_LABEL_EDITOR_BASE::OnFormattingHelp ), NULL, this ); } diff --git a/eeschema/dialogs/dialog_edit_label_base.fbp b/eeschema/dialogs/dialog_edit_label_base.fbp index c99ba812ad..c41ab1f031 100644 --- a/eeschema/dialogs/dialog_edit_label_base.fbp +++ b/eeschema/dialogs/dialog_edit_label_base.fbp @@ -72,11 +72,11 @@ m_textEntrySizer wxFLEX_GROWMODE_SPECIFIED protected - 4 + 5 3 3 - wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT + wxALIGN_CENTER_VERTICAL|wxRIGHT 0 1 @@ -137,7 +137,7 @@ 5 - wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT 0 1 @@ -201,7 +201,7 @@ - 6 + 2 wxTOP|wxRIGHT 0 @@ -263,7 +263,7 @@ 5 - wxEXPAND|wxTOP|wxBOTTOM|wxLEFT + wxEXPAND|wxRIGHT|wxLEFT 1 1 @@ -390,7 +390,7 @@ 5 - wxEXPAND|wxALIGN_CENTER_VERTICAL|wxLEFT + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT 0 1 @@ -455,8 +455,8 @@ - 3 - wxALIGN_CENTER_VERTICAL|wxRIGHT + 6 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT 0 1 @@ -517,7 +517,7 @@ 3 - wxEXPAND|wxALIGN_CENTER_VERTICAL|wxTOP + wxEXPAND|wxALIGN_CENTER_VERTICAL|wxBOTTOM|wxRIGHT 1 @@ -525,8 +525,8 @@ wxHORIZONTAL none - 5 - wxLEFT|wxRIGHT|wxALIGN_CENTER_VERTICAL + 6 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT 0 1 @@ -589,8 +589,8 @@ - 20 - wxALIGN_CENTER_VERTICAL|wxRIGHT + 6 + wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT 0 1 @@ -652,7 +652,7 @@ 15 wxEXPAND - 0 + 1 0 protected @@ -660,140 +660,193 @@ - 10 - wxEXPAND|wxLEFT - 1 - + 8 + wxBOTTOM|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + + wxID_ANY + Syntax help + + 0 + + + 0 - m_textOffsetNote - wxHORIZONTAL + 1 + m_formattingHelp + + 1 + + protected - - 5 - wxBOTTOM|wxRIGHT - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Note: - 0 - - 0 - - - 0 - - 1 - m_note1 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - - - 5 - wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - the margins around the text are controlled by the text offset ratio in Schematic Setup > General > Formatting. - 0 - - 0 - - - 0 - - 1 - m_note2 - 1 - - - protected - 1 - - Resizable - 1 - - - ; ; forward_declare - 0 - - - - - -1 - - + 1 + + Resizable + 1 + + wxHL_DEFAULT_STYLE + ; ; forward_declare + 0 + + + + + + + OnFormattingHelp + + 5 + wxTOP|wxRIGHT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Note: + 0 + + 0 + + + 0 + + 1 + m_note1 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + + + 5 + wxEXPAND|wxTOP|wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + The margins around the text are controlled by the text offset ratio in Schematic Setup > General > Formatting. + 0 + + 0 + + + 0 + + 1 + m_note2 + 1 + + + protected + 1 + + Resizable + 1 + + + ; ; forward_declare + 0 + + + + + -1 + + diff --git a/eeschema/dialogs/dialog_edit_label_base.h b/eeschema/dialogs/dialog_edit_label_base.h index ec0ba50400..61757d0eaa 100644 --- a/eeschema/dialogs/dialog_edit_label_base.h +++ b/eeschema/dialogs/dialog_edit_label_base.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -51,7 +52,7 @@ class DIALOG_LABEL_EDITOR_BASE : public DIALOG_SHIM wxStaticText* m_textSizeLabel; wxTextCtrl* m_textSizeCtrl; wxStaticText* m_textSizeUnits; - wxBoxSizer* m_textOffsetNote; + wxHyperlinkCtrl* m_formattingHelp; wxStaticText* m_note1; wxStaticText* m_note2; wxRadioBox* m_TextOrient; @@ -63,6 +64,7 @@ class DIALOG_LABEL_EDITOR_BASE : public DIALOG_SHIM // Virtual event handlers, overide them in your derived class virtual void OnEnterKey( wxCommandEvent& event ) { event.Skip(); } + virtual void OnFormattingHelp( wxHyperlinkEvent& event ) { event.Skip(); } public: