From 78129aabeb874bc3664675c1741cbd7c0e02308e Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 7 Dec 2020 12:15:52 +0000 Subject: [PATCH] Fix another case of 413ff4525b8b95aca05fb7ea5b2b173801e67004. --- eeschema/dialogs/dialog_bom.cpp | 33 ++++++++++++++++++---------- pcbnew/dialogs/panel_setup_rules.cpp | 20 +++++++++++------ pcbnew/dialogs/panel_setup_rules.h | 2 +- 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/eeschema/dialogs/dialog_bom.cpp b/eeschema/dialogs/dialog_bom.cpp index 998d5c6558..daf5b235b4 100644 --- a/eeschema/dialogs/dialog_bom.cpp +++ b/eeschema/dialogs/dialog_bom.cpp @@ -174,9 +174,11 @@ void BOM_CFG_PARSER::parseGenerator() class DIALOG_BOM : public DIALOG_BOM_BASE { private: - SCH_EDIT_FRAME* m_parent; - BOM_GENERATOR_ARRAY m_generators; - bool m_initialized; + SCH_EDIT_FRAME* m_parent; + BOM_GENERATOR_ARRAY m_generators; + bool m_initialized; + + HTML_MESSAGE_BOX* m_helpWindow; public: DIALOG_BOM( SCH_EDIT_FRAME* parent ); @@ -224,11 +226,11 @@ int InvokeDialogCreateBOM( SCH_EDIT_FRAME* aCaller ) DIALOG_BOM::DIALOG_BOM( SCH_EDIT_FRAME* parent ) : - DIALOG_BOM_BASE( parent ) + DIALOG_BOM_BASE( parent ), + m_parent( parent ), + m_initialized( false ), + m_helpWindow( nullptr ) { - m_parent = parent; - m_initialized = false; - m_buttonAddGenerator->SetBitmap( KiBitmap( small_plus_xpm ) ); m_buttonDelGenerator->SetBitmap( KiBitmap( trash_xpm ) ); m_buttonEdit->SetBitmap( KiBitmap( small_edit_xpm ) ); @@ -252,6 +254,9 @@ DIALOG_BOM::DIALOG_BOM( SCH_EDIT_FRAME* parent ) : DIALOG_BOM::~DIALOG_BOM() { + if( m_helpWindow ) + m_helpWindow->Destroy(); + // TODO(JE) maybe unpack this into JSON instead of sexpr // Save the plugin descriptions in config. @@ -593,16 +598,20 @@ void DIALOG_BOM::OnEditGenerator( wxCommandEvent& event ) void DIALOG_BOM::OnHelp( wxCommandEvent& event ) { - HTML_MESSAGE_BOX* help_Dlg = new HTML_MESSAGE_BOX( nullptr, - _( "Bill of Material Generation Help" ) ); + if( m_helpWindow ) + { + m_helpWindow->ShowModeless(); + return; + } - help_Dlg->SetDialogSizeInDU( 500, 350 ); + m_helpWindow = new HTML_MESSAGE_BOX( nullptr, _( "Bill of Material Generation Help" ) ); + m_helpWindow->SetDialogSizeInDU( 500, 350 ); wxString html_txt; ConvertMarkdown2Html( wxGetTranslation( s_bomHelpInfo ), html_txt ); - help_Dlg->m_htmlWindow->AppendToPage( html_txt ); - help_Dlg->ShowModeless(); + m_helpWindow->m_htmlWindow->AppendToPage( html_txt ); + m_helpWindow->ShowModeless(); } diff --git a/pcbnew/dialogs/panel_setup_rules.cpp b/pcbnew/dialogs/panel_setup_rules.cpp index fba44fbbd5..9c4e1bc15a 100644 --- a/pcbnew/dialogs/panel_setup_rules.cpp +++ b/pcbnew/dialogs/panel_setup_rules.cpp @@ -43,7 +43,7 @@ PANEL_SETUP_RULES::PANEL_SETUP_RULES( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFr m_Parent( aParent ), m_frame( aFrame ), m_scintillaTricks( nullptr ), - m_helpDialog( nullptr ) + m_helpWindow( nullptr ) { m_scintillaTricks = new SCINTILLA_TRICKS( m_textEditor, wxT( "()" ) ); @@ -67,8 +67,8 @@ PANEL_SETUP_RULES::~PANEL_SETUP_RULES( ) { delete m_scintillaTricks; - if( m_helpDialog ) - m_helpDialog->Destroy(); + if( m_helpWindow ) + m_helpWindow->Destroy(); }; @@ -438,6 +438,12 @@ bool PANEL_SETUP_RULES::TransferDataFromWindow() void PANEL_SETUP_RULES::OnSyntaxHelp( wxHyperlinkEvent& aEvent ) { + if( m_helpWindow ) + { + m_helpWindow->ShowModeless(); + return; + } + wxString msg = #include "dialogs/panel_setup_rules_help_md.h" ; @@ -446,12 +452,12 @@ void PANEL_SETUP_RULES::OnSyntaxHelp( wxHyperlinkEvent& aEvent ) msg.Replace( "Ctrl+", "Cmd+" ); #endif - m_helpDialog = new HTML_MESSAGE_BOX( nullptr, _( "Syntax Help" ) ); - m_helpDialog->SetDialogSizeInDU( 320, 320 ); + m_helpWindow = new HTML_MESSAGE_BOX( nullptr, _( "Syntax Help" ) ); + m_helpWindow->SetDialogSizeInDU( 320, 320 ); wxString html_txt; ConvertMarkdown2Html( wxGetTranslation( msg ), html_txt ); - m_helpDialog->m_htmlWindow->AppendToPage( html_txt ); + m_helpWindow->m_htmlWindow->AppendToPage( html_txt ); - m_helpDialog->ShowModeless(); + m_helpWindow->ShowModeless(); } diff --git a/pcbnew/dialogs/panel_setup_rules.h b/pcbnew/dialogs/panel_setup_rules.h index 6819856c70..45ecb798cf 100644 --- a/pcbnew/dialogs/panel_setup_rules.h +++ b/pcbnew/dialogs/panel_setup_rules.h @@ -46,7 +46,7 @@ private: wxRegEx m_netClassRegex; wxRegEx m_netNameRegex; - HTML_MESSAGE_BOX* m_helpDialog; + HTML_MESSAGE_BOX* m_helpWindow; public: PANEL_SETUP_RULES( PAGED_DIALOG* aParent, PCB_EDIT_FRAME* aFrame );