From d792e36151103c3c6667a32bf552dc2f7da1d80b Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 18 Apr 2017 19:25:02 +1000 Subject: [PATCH] Reworked UI - Buttons are enabled/disabled within wxUpdateUI events - Save/Cancel dialog used to close window and apply (or reject) changes --- eeschema/dialogs/dialog_bom_editor.cpp | 28 ++++++------ eeschema/dialogs/dialog_bom_editor.h | 8 +++- eeschema/dialogs/dialog_bom_editor_base.cpp | 19 ++++++++- eeschema/dialogs/dialog_bom_editor_base.fbp | 47 +++++++++++++++++++-- eeschema/dialogs/dialog_bom_editor_base.h | 11 +++-- 5 files changed, 90 insertions(+), 23 deletions(-) diff --git a/eeschema/dialogs/dialog_bom_editor.cpp b/eeschema/dialogs/dialog_bom_editor.cpp index f4b73b491f..19b0c792bf 100644 --- a/eeschema/dialogs/dialog_bom_editor.cpp +++ b/eeschema/dialogs/dialog_bom_editor.cpp @@ -85,7 +85,7 @@ DIALOG_BOM_EDITOR::DIALOG_BOM_EDITOR( SCH_EDIT_FRAME* parent ) : m_bom->ReloadTable(); - UpdateTitle(); + Update(); } DIALOG_BOM_EDITOR::~DIALOG_BOM_EDITOR() @@ -98,7 +98,7 @@ DIALOG_BOM_EDITOR::~DIALOG_BOM_EDITOR() * work out if we need to save any changed. * If so, capture those changes and push them to the undo stack. */ -void DIALOG_BOM_EDITOR::OnBomEditorClosed( wxCloseEvent& event ) +bool DIALOG_BOM_EDITOR::TransferDataFromWindow() { bool saveChanges = false; @@ -115,11 +115,10 @@ void DIALOG_BOM_EDITOR::OnBomEditorClosed( wxCloseEvent& event ) break; // Cancel (do not exit) case wxID_CANCEL: - event.Veto(); - return; + return false; // Do not save, exit default: - break; + return true; } } @@ -157,7 +156,7 @@ void DIALOG_BOM_EDITOR::OnBomEditorClosed( wxCloseEvent& event ) m_parent->OnModify(); } - Destroy(); + return true; } /** @@ -285,7 +284,14 @@ void DIALOG_BOM_EDITOR::OnGroupComponentsToggled( wxCommandEvent& event ) m_bom->SetColumnGrouping( group ); m_bom->ReloadTable(); - m_regroupComponentsButton->Enable( group ); + Update(); +} + +void DIALOG_BOM_EDITOR::OnUpdateUI( wxUpdateUIEvent& event ) +{ + m_regroupComponentsButton->Enable( m_bom->GetColumnGrouping() ); + + m_reloadTableButton->Enable( m_bom->HaveFieldsChanged() ); UpdateTitle(); } @@ -417,14 +423,13 @@ void DIALOG_BOM_EDITOR::OnExportBOM( wxCommandEvent& event ) void DIALOG_BOM_EDITOR::OnTableValueChanged( wxDataViewEvent& event ) { - m_reloadTableButton->Enable( m_bom->HaveFieldsChanged() ); - - UpdateTitle(); + Update(); } void DIALOG_BOM_EDITOR::OnRegroupComponents( wxCommandEvent& event ) { m_bom->ReloadTable(); + Update(); } void DIALOG_BOM_EDITOR::OnRevertFieldChanges( wxCommandEvent& event ) @@ -434,8 +439,7 @@ void DIALOG_BOM_EDITOR::OnRevertFieldChanges( wxCommandEvent& event ) if( IsOK( this, _( "Revert all component table changes?" ) ) ) { m_bom->RevertFieldChanges(); - m_reloadTableButton->Enable( m_bom->HaveFieldsChanged() ); - UpdateTitle(); + Update(); } } } diff --git a/eeschema/dialogs/dialog_bom_editor.h b/eeschema/dialogs/dialog_bom_editor.h index 9269134c54..0f79e98c2d 100644 --- a/eeschema/dialogs/dialog_bom_editor.h +++ b/eeschema/dialogs/dialog_bom_editor.h @@ -62,6 +62,9 @@ private: void LoadColumnNames( void ); void ReloadColumns( void ); + // Called when the OK button is pressed + virtual bool TransferDataFromWindow() override; + // Checkbox event callbacks virtual void OnColumnItemToggled( wxDataViewEvent& event ) override; virtual void OnGroupComponentsToggled( wxCommandEvent& event ) override; @@ -75,9 +78,10 @@ private: // Called after a value in the table has changed virtual void OnTableValueChanged( wxDataViewEvent& event ) override; - virtual void OnBomEditorClosed( wxCloseEvent& event ) override; - void UpdateTitle( void ); + + virtual void OnUpdateUI( wxUpdateUIEvent& event ) override; + }; #endif /* EESCHEMA_DIALOGS_DIALOG_BOM_EDITOR_H_ */ diff --git a/eeschema/dialogs/dialog_bom_editor_base.cpp b/eeschema/dialogs/dialog_bom_editor_base.cpp index d5e07a425e..d83d34d50f 100644 --- a/eeschema/dialogs/dialog_bom_editor_base.cpp +++ b/eeschema/dialogs/dialog_bom_editor_base.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Apr 1 2017) +// C++ code generated with wxFormBuilder (version Mar 22 2017) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE! @@ -10,7 +10,7 @@ /////////////////////////////////////////////////////////////////////////// BEGIN_EVENT_TABLE( DIALOG_BOM_EDITOR_BASE, DIALOG_SHIM ) - EVT_CLOSE( DIALOG_BOM_EDITOR_BASE::_wxFB_OnBomEditorClosed ) + EVT_UPDATE_UI( wxID_ANY, DIALOG_BOM_EDITOR_BASE::_wxFB_OnUpdateUI ) EVT_CHECKBOX( OPT_GROUP_COMPONENTS, DIALOG_BOM_EDITOR_BASE::_wxFB_OnGroupComponentsToggled ) EVT_BUTTON( ID_BUTTON_REGROUP, DIALOG_BOM_EDITOR_BASE::_wxFB_OnRegroupComponents ) EVT_BUTTON( ID_BUTTON_REVERT_CHANGES, DIALOG_BOM_EDITOR_BASE::_wxFB_OnRevertFieldChanges ) @@ -112,6 +112,21 @@ DIALOG_BOM_EDITOR_BASE::DIALOG_BOM_EDITOR_BASE( wxWindow* parent, wxWindowID id, bSizer6->Add( sbSizer2, 0, wxEXPAND, 5 ); + wxStaticBoxSizer* sbSizer4; + sbSizer4 = new wxStaticBoxSizer( new wxStaticBox( m_leftPanel, wxID_ANY, _("Apply changes") ), wxVERTICAL ); + + m_sdbSizer1 = new wxStdDialogButtonSizer(); + m_sdbSizer1OK = new wxButton( sbSizer4->GetStaticBox(), wxID_OK ); + m_sdbSizer1->AddButton( m_sdbSizer1OK ); + m_sdbSizer1Cancel = new wxButton( sbSizer4->GetStaticBox(), wxID_CANCEL ); + m_sdbSizer1->AddButton( m_sdbSizer1Cancel ); + m_sdbSizer1->Realize(); + + sbSizer4->Add( m_sdbSizer1, 1, wxEXPAND, 5 ); + + + bSizer6->Add( sbSizer4, 1, wxEXPAND, 5 ); + m_leftPanel->SetSizer( bSizer6 ); m_leftPanel->Layout(); diff --git a/eeschema/dialogs/dialog_bom_editor_base.fbp b/eeschema/dialogs/dialog_bom_editor_base.fbp index 9d1cf28e1f..2fcc929908 100644 --- a/eeschema/dialogs/dialog_bom_editor_base.fbp +++ b/eeschema/dialogs/dialog_bom_editor_base.fbp @@ -45,7 +45,7 @@ DIALOG_BOM_EDITOR_BASE 1047,649 - wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER + wxCAPTION|wxMAXIMIZE_BOX|wxRESIZE_BORDER|wxSTAY_ON_TOP DIALOG_SHIM; dialog_shim.h BOM editor @@ -61,7 +61,7 @@ - OnBomEditorClosed + @@ -87,7 +87,7 @@ - + OnUpdateUI bHorizontalSizer @@ -1037,6 +1037,47 @@ + + 5 + wxEXPAND + 1 + + wxID_ANY + Apply changes + + sbSizer4 + wxVERTICAL + 1 + none + + + 5 + wxEXPAND + 1 + + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + + m_sdbSizer1 + protected + + + + + + + + + + + + diff --git a/eeschema/dialogs/dialog_bom_editor_base.h b/eeschema/dialogs/dialog_bom_editor_base.h index 277bcff18a..87d70ef6e2 100644 --- a/eeschema/dialogs/dialog_bom_editor_base.h +++ b/eeschema/dialogs/dialog_bom_editor_base.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Apr 1 2017) +// C++ code generated with wxFormBuilder (version Mar 22 2017) // http://www.wxformbuilder.org/ // // PLEASE DO "NOT" EDIT THIS FILE! @@ -46,7 +46,7 @@ class DIALOG_BOM_EDITOR_BASE : public DIALOG_SHIM private: // Private event handlers - void _wxFB_OnBomEditorClosed( wxCloseEvent& event ){ OnBomEditorClosed( event ); } + void _wxFB_OnUpdateUI( wxUpdateUIEvent& event ){ OnUpdateUI( event ); } void _wxFB_OnGroupComponentsToggled( wxCommandEvent& event ){ OnGroupComponentsToggled( event ); } void _wxFB_OnRegroupComponents( wxCommandEvent& event ){ OnRegroupComponents( event ); } void _wxFB_OnRevertFieldChanges( wxCommandEvent& event ){ OnRevertFieldChanges( event ); } @@ -69,11 +69,14 @@ class DIALOG_BOM_EDITOR_BASE : public DIALOG_SHIM wxCheckBox* m_includeProjectData; wxCheckBox* m_showRowNumbers; wxButton* m_exportButton; + wxStdDialogButtonSizer* m_sdbSizer1; + wxButton* m_sdbSizer1OK; + wxButton* m_sdbSizer1Cancel; wxPanel* m_panel4; wxDataViewCtrl* m_bomView; // Virtual event handlers, overide them in your derived class - virtual void OnBomEditorClosed( wxCloseEvent& event ) { event.Skip(); } + virtual void OnUpdateUI( wxUpdateUIEvent& event ) { event.Skip(); } virtual void OnGroupComponentsToggled( wxCommandEvent& event ) { event.Skip(); } virtual void OnRegroupComponents( wxCommandEvent& event ) { event.Skip(); } virtual void OnRevertFieldChanges( wxCommandEvent& event ) { event.Skip(); } @@ -87,7 +90,7 @@ class DIALOG_BOM_EDITOR_BASE : public DIALOG_SHIM public: - DIALOG_BOM_EDITOR_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("BOM editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 1047,649 ), long style = wxDEFAULT_DIALOG_STYLE|wxMAXIMIZE_BOX|wxRESIZE_BORDER ); + DIALOG_BOM_EDITOR_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("BOM editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 1047,649 ), long style = wxCAPTION|wxMAXIMIZE_BOX|wxRESIZE_BORDER|wxSTAY_ON_TOP ); ~DIALOG_BOM_EDITOR_BASE(); void m_splitter1OnIdle( wxIdleEvent& )