/* * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation, either version 3 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef PAGED_DIALOG_H #define PAGED_DIALOG_H #include class WX_INFOBAR; class wxTreebook; class PAGED_DIALOG : public DIALOG_SHIM { public: PAGED_DIALOG( wxWindow* aParent, const wxString& aTitle, bool aShowReset, const wxString& aAuxiliaryAction = wxEmptyString ); ~PAGED_DIALOG() override; wxTreebook* GetTreebook() { return m_treebook; } void SetInitialPage( const wxString& aPage, const wxString& aParentPage = wxEmptyString ); void SetModified() { m_modified = true; } void SetError( const wxString& aMessage, const wxString& aPageName, int aCtrlId, int aRow = -1, int aCol = -1 ); void SetError( const wxString& aMessage, wxWindow* aPage, wxWindow* aCtrl, int aRow = -1, int aCol = -1 ); void UpdateResetButton( int aPage ); protected: void finishInitialization(); bool TransferDataToWindow() override; bool TransferDataFromWindow() override; void OnClose( wxCloseEvent& event ); void OnCancel( wxCommandEvent& event ); virtual void OnAuxiliaryAction( wxCommandEvent& event ) { event.Skip(); } void OnResetButton( wxCommandEvent& aEvent ); void OnUpdateUI( wxUpdateUIEvent& event ); void OnPageChange( wxBookCtrlEvent& event ); wxTreebook* m_treebook; wxButton* m_auxiliaryButton; wxButton* m_resetButton; wxButton* m_cancelButton; WX_INFOBAR* m_infoBar; private: wxString m_title; bool m_dirty; wxString m_errorMessage; wxWindow* m_errorCtrl; // the control associated with m_errorMessage int m_errorRow; // the row if m_errorCtrl is a grid int m_errorCol; // the column if m_errorCtrl is a grid wxBoxSizer* m_buttonsSizer; std::vector m_macHack; }; #endif //PAGED_DIALOG_H