From 95fd7cb80ad88334677205fb0fc18ec189af52d3 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Sun, 28 Aug 2022 12:04:23 +0100 Subject: [PATCH] Move wxComboBox to wxBitmapComboBox in hopes it will work better. (Not sure if it solves the MSW issues yet, but at least it highlights the items in the dropdown on rollover on OSX.) Also added some text to the dropdown menu for intersheet references in the PDF. --- common/plotters/PDF_plotter.cpp | 2 +- eeschema/dialogs/dialog_text_properties.cpp | 64 ++++----- eeschema/dialogs/dialog_text_properties.h | 2 +- .../dialogs/dialog_text_properties_base.cpp | 20 ++- .../dialogs/dialog_text_properties_base.fbp | 135 ++++++++++-------- .../dialogs/dialog_text_properties_base.h | 5 +- 6 files changed, 119 insertions(+), 109 deletions(-) diff --git a/common/plotters/PDF_plotter.cpp b/common/plotters/PDF_plotter.cpp index 46bab51963..c9dc194b3f 100644 --- a/common/plotters/PDF_plotter.cpp +++ b/common/plotters/PDF_plotter.cpp @@ -978,7 +978,7 @@ bool PDF_PLOTTER::EndPlot() for( const std::pair& page : pages ) { js += wxString::Format( wxT( "{ cName: '%s', cReturn: '%d' }, " ), - page.first, + wxString::Format( _( "Show Page %s" ), page.first ), page.second ); } diff --git a/eeschema/dialogs/dialog_text_properties.cpp b/eeschema/dialogs/dialog_text_properties.cpp index be4aa90369..2297fb1380 100644 --- a/eeschema/dialogs/dialog_text_properties.cpp +++ b/eeschema/dialogs/dialog_text_properties.cpp @@ -134,14 +134,14 @@ DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_ITE wxString sheetPageNum = sheet.GetPageNumber(); wxString sheetName = sheet.size() == 1 ? _( "" ) : sheet.Last()->GetName(); - m_hyperlinkCtrl->Append( wxString::Format( _( "Page %s (%s)" ), sheetPageNum, sheetName ) ); + m_hyperlinkCombo->Append( wxString::Format( _( "Page %s (%s)" ), sheetPageNum, sheetName ) ); m_pageNumbers.push_back( sheetPageNum ); } - m_hyperlinkCtrl->Append( wxT( "---------------------" ) ); - m_hyperlinkCtrl->Append( wxT( "file://..." ) ); - m_hyperlinkCtrl->Append( wxT( "http://..." ) ); - m_hyperlinkCtrl->Append( wxT( "https://..." ) ); + m_hyperlinkCombo->Append( wxT( "---" ) ); + m_hyperlinkCombo->Append( wxT( "file://..." ), KiBitmap( BITMAPS::small_folder ) ); + m_hyperlinkCombo->Append( wxT( "http://..." ), KiBitmap( BITMAPS::www ) ); + m_hyperlinkCombo->Append( wxT( "https://..." ), KiBitmap( BITMAPS::www ) ); SetupStandardButtons(); Layout(); @@ -176,8 +176,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataToWindow() SCHEMATIC& schematic = m_frame->Schematic(); m_hyperlinkCb->SetValue( m_currentText->HasHyperlink() ); - m_hyperlinkCtrl->Enable( m_currentText->HasHyperlink() ); - m_hyperlinkCtrl->SetValue( m_currentText->GetHyperlink() ); + m_hyperlinkCombo->SetValue( m_currentText->GetHyperlink() ); // show text variable cross-references in a human-readable format m_textCtrl->SetValue( schematic.ConvertKIIDsToRefs( m_currentText->GetText() ) ); @@ -283,26 +282,24 @@ void DIALOG_TEXT_PROPERTIES::onFillChecked( wxCommandEvent& aEvent ) void DIALOG_TEXT_PROPERTIES::onHyperlinkChecked( wxCommandEvent& aEvent ) { - if( aEvent.IsChecked() && !m_hyperlinkCtrl->IsEnabled() ) + if( aEvent.IsChecked() && m_hyperlinkCombo->GetValue().IsEmpty() ) { - m_hyperlinkCtrl->Enable( true ); - m_hyperlinkCtrl->ChangeValue( m_lastLink ); - m_hyperlinkCtrl->SetFocus(); + m_hyperlinkCombo->ChangeValue( m_lastLink ); } - else if( !aEvent.IsChecked() && m_hyperlinkCtrl->IsEnabled() ) + else if( !aEvent.IsChecked() && !m_hyperlinkCombo->GetValue().IsEmpty() ) { - m_hyperlinkCtrl->Enable( false ); - m_lastLink = m_hyperlinkCtrl->GetValue(); - m_hyperlinkCtrl->SetValue( wxEmptyString ); + m_lastLink = m_hyperlinkCombo->GetValue(); + m_hyperlinkCombo->SetValue( wxEmptyString ); } aEvent.Skip(); } -void DIALOG_TEXT_PROPERTIES::onHyperlinkDropdown( wxCommandEvent& aEvent ) +void DIALOG_TEXT_PROPERTIES::onHyperlinkText( wxCommandEvent& event ) { - m_lastLink = m_hyperlinkCtrl->GetValue(); + if( !m_hyperlinkCombo->GetValue().IsEmpty() ) + m_hyperlinkCb->SetValue( true ); } @@ -314,38 +311,35 @@ void DIALOG_TEXT_PROPERTIES::onHyperlinkCombo( wxCommandEvent& aEvent ) { // user clicked outside dropdown; leave current value } - else if( sel == m_hyperlinkCtrl->GetCount() - 4 ) + else if( sel == m_hyperlinkCombo->GetCount() - 4 ) { - // separator (and wxWidgets already updated our value to it); - // replace value with that saved in the dropdown event - m_hyperlinkCtrl->ChangeValue( m_lastLink ); - m_hyperlinkCtrl->SetSelection( 0, m_hyperlinkCtrl->GetValue().Length() ); + // separator } - else if( sel == m_hyperlinkCtrl->GetCount() - 3 ) + else if( sel == m_hyperlinkCombo->GetCount() - 3 ) { static wxString helper = wxT( "file://" ); - m_hyperlinkCtrl->ChangeValue( helper ); - m_hyperlinkCtrl->SetInsertionPointEnd(); + m_hyperlinkCombo->ChangeValue( helper ); + m_hyperlinkCombo->SetInsertionPointEnd(); } - else if( sel == m_hyperlinkCtrl->GetCount() - 2 ) + else if( sel == m_hyperlinkCombo->GetCount() - 2 ) { static wxString helper = wxT( "http://" ); - m_hyperlinkCtrl->ChangeValue( helper ); - m_hyperlinkCtrl->SetInsertionPointEnd(); + m_hyperlinkCombo->ChangeValue( helper ); + m_hyperlinkCombo->SetInsertionPointEnd(); } - else if( sel == m_hyperlinkCtrl->GetCount() - 1 ) + else if( sel == m_hyperlinkCombo->GetCount() - 1 ) { static wxString helper = wxT( "https://" ); - m_hyperlinkCtrl->ChangeValue( helper ); - m_hyperlinkCtrl->SetInsertionPointEnd(); + m_hyperlinkCombo->ChangeValue( helper ); + m_hyperlinkCombo->SetInsertionPointEnd(); } else { - m_hyperlinkCtrl->ChangeValue( wxT( "#" ) + m_pageNumbers[ sel ] ); - m_hyperlinkCtrl->SetSelection( 0, m_hyperlinkCtrl->GetValue().Length() ); + m_hyperlinkCombo->ChangeValue( wxT( "#" ) + m_pageNumbers[ sel ] ); + m_hyperlinkCombo->SelectAll(); } } @@ -469,7 +463,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataFromWindow() return false; } - if( !m_currentText->ValidateHyperlink( m_hyperlinkCtrl->GetValue() ) ) + if( !m_currentText->ValidateHyperlink( m_hyperlinkCombo->GetValue() ) ) { DisplayError( this, _( "Invalid hyperlink destination. Please enter either a valid URL " "(e.g. file:// or http(s)://) or \"#\" to create " @@ -478,7 +472,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataFromWindow() } else { - m_currentText->SetHyperlink( m_hyperlinkCtrl->GetValue() ); + m_currentText->SetHyperlink( m_hyperlinkCombo->GetValue() ); } if( m_currentText->GetTextWidth() != m_textSize.GetValue() ) diff --git a/eeschema/dialogs/dialog_text_properties.h b/eeschema/dialogs/dialog_text_properties.h index 2c71054c8d..66f8481bdd 100644 --- a/eeschema/dialogs/dialog_text_properties.h +++ b/eeschema/dialogs/dialog_text_properties.h @@ -47,7 +47,7 @@ private: void onBorderChecked( wxCommandEvent& aEvent ) override; void onFillChecked( wxCommandEvent& aEvent ) override; void onHyperlinkChecked( wxCommandEvent& aEvent ) override; - void onHyperlinkDropdown( wxCommandEvent& aEvent ) override; + void onHyperlinkText( wxCommandEvent& aEvent ) override; void onHyperlinkCombo( wxCommandEvent& aEvent ) override; void OnFormattingHelp( wxHyperlinkEvent& aEvent ) override; diff --git a/eeschema/dialogs/dialog_text_properties_base.cpp b/eeschema/dialogs/dialog_text_properties_base.cpp index 3c7ed7aa55..c2cb5d8187 100644 --- a/eeschema/dialogs/dialog_text_properties_base.cpp +++ b/eeschema/dialogs/dialog_text_properties_base.cpp @@ -233,7 +233,7 @@ DIALOG_TEXT_PROPERTIES_BASE::DIALOG_TEXT_PROPERTIES_BASE( wxWindow* parent, wxWi m_borderStyleLabel->Wrap( -1 ); m_textEntrySizer->Add( m_borderStyleLabel, wxGBPosition( 7, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 ); - m_borderStyleCombo = new wxBitmapComboBox( this, wxID_ANY, _("Combo!"), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY ); + m_borderStyleCombo = new wxBitmapComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY ); m_borderStyleCombo->SetMinSize( wxSize( 240,-1 ) ); m_textEntrySizer->Add( m_borderStyleCombo, wxGBPosition( 7, 1 ), wxGBSpan( 1, 2 ), wxEXPAND, 5 ); @@ -270,8 +270,14 @@ DIALOG_TEXT_PROPERTIES_BASE::DIALOG_TEXT_PROPERTIES_BASE( wxWindow* parent, wxWi m_textEntrySizer->Add( m_hyperlinkCb, wxGBPosition( 9, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxBOTTOM, 5 ); - m_hyperlinkCtrl = new wxComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); - m_textEntrySizer->Add( m_hyperlinkCtrl, wxGBPosition( 9, 1 ), wxGBSpan( 1, 6 ), wxEXPAND|wxBOTTOM, 5 ); + wxBoxSizer* bSizer11; + bSizer11 = new wxBoxSizer( wxHORIZONTAL ); + + m_hyperlinkCombo = new wxBitmapComboBox( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); + bSizer11->Add( m_hyperlinkCombo, 1, wxALIGN_CENTER_VERTICAL, 5 ); + + + m_textEntrySizer->Add( bSizer11, wxGBPosition( 9, 1 ), wxGBSpan( 1, 6 ), wxEXPAND|wxBOTTOM|wxALIGN_CENTER_VERTICAL, 5 ); m_textEntrySizer->AddGrowableCol( 3 ); @@ -307,8 +313,8 @@ DIALOG_TEXT_PROPERTIES_BASE::DIALOG_TEXT_PROPERTIES_BASE( wxWindow* parent, wxWi m_borderCheckbox->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onBorderChecked ), NULL, this ); m_filledCtrl->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onFillChecked ), NULL, this ); m_hyperlinkCb->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkChecked ), NULL, this ); - m_hyperlinkCtrl->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkCombo ), NULL, this ); - m_hyperlinkCtrl->Connect( wxEVT_COMBOBOX_DROPDOWN, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkDropdown ), NULL, this ); + m_hyperlinkCombo->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkCombo ), NULL, this ); + m_hyperlinkCombo->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkText ), NULL, this ); } DIALOG_TEXT_PROPERTIES_BASE::~DIALOG_TEXT_PROPERTIES_BASE() @@ -319,7 +325,7 @@ DIALOG_TEXT_PROPERTIES_BASE::~DIALOG_TEXT_PROPERTIES_BASE() m_borderCheckbox->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onBorderChecked ), NULL, this ); m_filledCtrl->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onFillChecked ), NULL, this ); m_hyperlinkCb->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkChecked ), NULL, this ); - m_hyperlinkCtrl->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkCombo ), NULL, this ); - m_hyperlinkCtrl->Disconnect( wxEVT_COMBOBOX_DROPDOWN, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkDropdown ), NULL, this ); + m_hyperlinkCombo->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkCombo ), NULL, this ); + m_hyperlinkCombo->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( DIALOG_TEXT_PROPERTIES_BASE::onHyperlinkText ), NULL, this ); } diff --git a/eeschema/dialogs/dialog_text_properties_base.fbp b/eeschema/dialogs/dialog_text_properties_base.fbp index 3b8229709e..df9c8e9cd6 100644 --- a/eeschema/dialogs/dialog_text_properties_base.fbp +++ b/eeschema/dialogs/dialog_text_properties_base.fbp @@ -2289,7 +2289,7 @@ wxFILTER_NONE wxDefaultValidator - Combo! + @@ -2635,70 +2635,81 @@ 5 6 1 - wxEXPAND|wxBOTTOM + wxEXPAND|wxBOTTOM|wxALIGN_CENTER_VERTICAL 9 1 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - - 0 + - 1 - m_hyperlinkCtrl - 1 - - - protected - 1 - - Resizable - -1 - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - onHyperlinkCombo - onHyperlinkDropdown + bSizer11 + wxHORIZONTAL + none + + 5 + wxALIGN_CENTER_VERTICAL + 1 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + + 0 + + 1 + m_hyperlinkCombo + 1 + + + protected + 1 + + Resizable + -1 + 1 + + + ; ; forward_declare + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + onHyperlinkCombo + onHyperlinkText + + diff --git a/eeschema/dialogs/dialog_text_properties_base.h b/eeschema/dialogs/dialog_text_properties_base.h index 3aa4e4fb2e..8fe1869bed 100644 --- a/eeschema/dialogs/dialog_text_properties_base.h +++ b/eeschema/dialogs/dialog_text_properties_base.h @@ -36,7 +36,6 @@ class WX_INFOBAR; #include #include #include -#include #include #include #include @@ -89,7 +88,7 @@ class DIALOG_TEXT_PROPERTIES_BASE : public DIALOG_SHIM wxPanel* m_panelFillColor; COLOR_SWATCH* m_fillColorSwatch; wxCheckBox* m_hyperlinkCb; - wxComboBox* m_hyperlinkCtrl; + wxBitmapComboBox* m_hyperlinkCombo; wxStaticLine* m_staticline; wxStdDialogButtonSizer* m_sdbSizer1; wxButton* m_sdbSizer1OK; @@ -102,7 +101,7 @@ class DIALOG_TEXT_PROPERTIES_BASE : public DIALOG_SHIM virtual void onFillChecked( wxCommandEvent& event ) { event.Skip(); } virtual void onHyperlinkChecked( wxCommandEvent& event ) { event.Skip(); } virtual void onHyperlinkCombo( wxCommandEvent& event ) { event.Skip(); } - virtual void onHyperlinkDropdown( wxCommandEvent& event ) { event.Skip(); } + virtual void onHyperlinkText( wxCommandEvent& event ) { event.Skip(); } public: