1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        wx/generic/propdlg.h 
   3 // Purpose:     wxPropertySheetDialog 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_PROPDLG_H_ 
  13 #define _WX_PROPDLG_H_ 
  19 #include "wx/dialog.h" 
  21 class WXDLLIMPEXP_FWD_CORE wxBookCtrlBase
; 
  23 //----------------------------------------------------------------------------- 
  24 // wxPropertySheetDialog 
  25 // A platform-independent properties dialog. 
  27 //   * on PocketPC, a flat-look 'property sheet' notebook will be used, with 
  28 //     no OK/Cancel/Help buttons 
  29 //   * on other platforms, a normal notebook will be used, with standard buttons 
  31 // To use this class, call Create from your derived class. 
  32 // Then create pages and add to the book control. Finally call CreateButtons and 
  37 // MyPropertySheetDialog::Create(...) 
  39 //     wxPropertySheetDialog::Create(...); 
  42 //     wxPanel* panel = new wxPanel(GetBookCtrl(), ...); 
  43 //     GetBookCtrl()->AddPage(panel, wxT("General")); 
  49 // Override CreateBookCtrl and AddBookCtrl to create and add a different 
  50 // kind of book control. 
  51 //----------------------------------------------------------------------------- 
  53 enum wxPropertySheetDialogFlags
 
  55     // Use the platform default 
  56     wxPROPSHEET_DEFAULT 
= 0x0001, 
  59     wxPROPSHEET_NOTEBOOK 
= 0x0002, 
  62     wxPROPSHEET_TOOLBOOK 
= 0x0004, 
  65     wxPROPSHEET_CHOICEBOOK 
= 0x0008, 
  68     wxPROPSHEET_LISTBOOK 
= 0x0010, 
  70     // Use a wxButtonToolBar toolbook 
  71     wxPROPSHEET_BUTTONTOOLBOOK 
= 0x0020, 
  74     wxPROPSHEET_TREEBOOK 
= 0x0040, 
  76     // Shrink dialog to fit current page 
  77     wxPROPSHEET_SHRINKTOFIT 
= 0x0100 
  80 class WXDLLIMPEXP_ADV wxPropertySheetDialog 
: public wxDialog
 
  83     wxPropertySheetDialog() : wxDialog() { Init(); } 
  85     wxPropertySheetDialog(wxWindow
* parent
, wxWindowID id
, 
  86                        const wxString
& title
, 
  87                        const wxPoint
& pos 
= wxDefaultPosition
, 
  88                        const wxSize
& sz 
= wxDefaultSize
, 
  89                        long style 
= wxDEFAULT_DIALOG_STYLE
, 
  90                        const wxString
& name 
= wxDialogNameStr
) 
  93         Create(parent
, id
, title
, pos
, sz
, style
, name
); 
  96     bool Create(wxWindow
* parent
, wxWindowID id
, 
  97                        const wxString
& title
, 
  98                        const wxPoint
& pos 
= wxDefaultPosition
, 
  99                        const wxSize
& sz 
= wxDefaultSize
, 
 100                        long style 
= wxDEFAULT_DIALOG_STYLE
, 
 101                        const wxString
& name 
= wxDialogNameStr
); 
 105     // Set and get the notebook 
 106     void SetBookCtrl(wxBookCtrlBase
* book
) { m_bookCtrl 
= book
; } 
 107     wxBookCtrlBase
* GetBookCtrl() const { return m_bookCtrl
; } 
 109     // Override function in base 
 110     virtual wxWindow
* GetContentWindow() const; 
 112     // Set and get the inner sizer 
 113     void SetInnerSize(wxSizer
* sizer
) { m_innerSizer 
= sizer
; } 
 114     wxSizer
* GetInnerSizer() const { return m_innerSizer 
; } 
 116     // Set and get the book style 
 117     void SetSheetStyle(long sheetStyle
) { m_sheetStyle 
= sheetStyle
; } 
 118     long GetSheetStyle() const { return m_sheetStyle 
; } 
 120     // Set and get the border around the whole dialog 
 121     void SetSheetOuterBorder(int border
) { m_sheetOuterBorder 
= border
; } 
 122     int GetSheetOuterBorder() const { return m_sheetOuterBorder 
; } 
 124     // Set and get the border around the book control only 
 125     void SetSheetInnerBorder(int border
) { m_sheetInnerBorder 
= border
; } 
 126     int GetSheetInnerBorder() const { return m_sheetInnerBorder 
; } 
 130     // Creates the buttons (none on PocketPC) 
 131     virtual void CreateButtons(int flags 
= wxOK
|wxCANCEL
); 
 133     // Lay out the dialog, to be called after pages have been created 
 134     virtual void LayoutDialog(int centreFlags 
= wxBOTH
); 
 138     // Creates the book control. If you want to use a different kind of 
 139     // control, override. 
 140     virtual wxBookCtrlBase
* CreateBookCtrl(); 
 142     // Adds the book control to the inner sizer. 
 143     virtual void AddBookCtrl(wxSizer
* sizer
); 
 146     void OnActivate(wxActivateEvent
& event
); 
 148     // Resize dialog if necessary 
 149     void OnIdle(wxIdleEvent
& event
); 
 155     wxBookCtrlBase
* m_bookCtrl
; 
 156     wxSizer
*        m_innerSizer
; // sizer for extra space 
 158     int             m_sheetOuterBorder
; 
 159     int             m_sheetInnerBorder
; 
 162     DECLARE_DYNAMIC_CLASS(wxPropertySheetDialog
) 
 163     DECLARE_EVENT_TABLE() 
 166 #endif // wxUSE_BOOKCTRL 
 168 #endif // _WX_PROPDLG_H_