/////////////////////////////////////////////////////////////////////////////// // Name: wx/generic/aboutdlgg.h // Purpose: generic wxAboutBox() implementation // Author: Vadim Zeitlin // Created: 2006-10-07 // Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwidgets.org> // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_GENERIC_ABOUTDLGG_H_ #define _WX_GENERIC_ABOUTDLGG_H_ #include "wx/defs.h" #if wxUSE_ABOUTDLG #include "wx/dialog.h" class WXDLLIMPEXP_FWD_CORE wxAboutDialogInfo; class WXDLLIMPEXP_FWD_CORE wxPanel; class WXDLLIMPEXP_FWD_CORE wxSizer; class WXDLLIMPEXP_FWD_CORE wxSizerFlags; class WXDLLIMPEXP_FWD_CORE wxStaticText; // Under GTK and OS X "About" dialogs are not supposed to be modal, unlike MSW // and, presumably, all the other platforms. #ifndef wxUSE_MODAL_ABOUT_DIALOG #if defined(__WXGTK__) || defined(__WXMAC__) #define wxUSE_MODAL_ABOUT_DIALOG 0 #else #define wxUSE_MODAL_ABOUT_DIALOG 1 #endif #endif // wxUSE_MODAL_ABOUT_DIALOG not defined // ---------------------------------------------------------------------------- // wxGenericAboutDialog: generic "About" dialog implementation // ---------------------------------------------------------------------------- class WXDLLIMPEXP_CORE wxGenericAboutDialog : public wxDialog { public: // constructors and Create() method // -------------------------------- // default ctor, you must use Create() to really initialize the dialog wxGenericAboutDialog() = default; // ctor which fully initializes the object wxGenericAboutDialog(const wxAboutDialogInfo& info, wxWindow* parent = nullptr) { (void)Create(info, parent); } // this method must be called if and only if the default ctor was used bool Create(const wxAboutDialogInfo& info, wxWindow* parent = nullptr); protected: // Return the parent to use for custom controls. wxWindow* GetCustomControlParent() const { return m_contents; } // This virtual method may be overridden to add some more controls to the // dialog. The controls should be created using GetCustomControlParent() as // the parent and then passed to AddControl(). // // notice that for this to work you must call Create() from the derived // class ctor and not use the base class ctor directly as otherwise the // virtual function of the derived class wouldn't be called virtual void DoAddCustomControls() { } // add arbitrary control to the text sizer contents with the specified // flags void AddControl(wxWindow *win, const wxSizerFlags& flags); // add arbitrary control to the text sizer contents and center it void AddControl(wxWindow *win); // add the text, if it's not empty, to the text sizer contents wxStaticText* AddText(const wxString& text); #if wxUSE_COLLPANE // add a wxCollapsiblePane containing the given text void AddCollapsiblePane(const wxString& title, const wxString& text); #endif // wxUSE_COLLPANE private: #if !wxUSE_MODAL_ABOUT_DIALOG // An explicit handler for deleting the dialog when it's closed is needed // when we show it non-modally. void OnCloseWindow(wxCloseEvent& event); void OnOK(wxCommandEvent& event); #endif // !wxUSE_MODAL_ABOUT_DIALOG // The panel containing the dialog contents. wxWindow *m_contents = nullptr; wxSizer *m_sizerText = nullptr; }; // unlike wxAboutBox which can show either the native or generic about dialog, // this function always shows the generic one WXDLLIMPEXP_CORE void wxGenericAboutBox(const wxAboutDialogInfo& info, wxWindow* parent = nullptr); #endif // wxUSE_ABOUTDLG #endif // _WX_GENERIC_ABOUTDLGG_H_