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/bookctrl.h" 
  21 //----------------------------------------------------------------------------- 
  22 // wxPropertySheetDialog 
  23 // A platform-independent properties dialog. 
  25 //   * on PocketPC, a flat-look 'property sheet' notebook will be used, with 
  26 //     no OK/Cancel/Help buttons 
  27 //   * on other platforms, a normal notebook will be used, with standard buttons 
  29 // To use this class, call Create from your derived class. 
  30 // Then create pages and add to the book control. Finally call CreateButtons and 
  35 // MyPropertySheetDialog::Create(...) 
  37 //     wxPropertySheetDialog::Create(...); 
  40 //     wxPanel* panel = new wxPanel(GetBookCtrl(), ...); 
  41 //     GetBookCtrl()->AddPage(panel, wxT("General")); 
  47 // Override CreateBookCtrl and AddBookCtrl to create and add a different 
  48 // kind of book control. 
  49 //----------------------------------------------------------------------------- 
  51 // Use the platform default 
  52 #define wxPROPSHEET_DEFAULT         0x0001 
  55 #define wxPROPSHEET_NOTEBOOK        0x0002 
  58 #define wxPROPSHEET_TOOLBOOK        0x0004 
  61 #define wxPROPSHEET_CHOICEBOOK      0x0008 
  64 #define wxPROPSHEET_LISTBOOK        0x0010 
  66 // Use a wxButtonToolBar toolbook 
  67 #define wxPROPSHEET_BUTTONTOOLBOOK  0x0020 
  70 #define wxPROPSHEET_TREEBOOK        0x0040 
  72 // Shrink dialog to fit current page 
  73 #define wxPROPSHEET_SHRINKTOFIT     0x0100 
  75 class WXDLLIMPEXP_ADV wxPropertySheetDialog 
: public wxDialog
 
  78     wxPropertySheetDialog() : wxDialog() { Init(); } 
  80     wxPropertySheetDialog(wxWindow
* parent
, wxWindowID id
, 
  81                        const wxString
& title
, 
  82                        const wxPoint
& pos 
= wxDefaultPosition
, 
  83                        const wxSize
& sz 
= wxDefaultSize
, 
  84                        long style 
= wxDEFAULT_DIALOG_STYLE
, 
  85                        const wxString
& name 
= wxDialogNameStr
) 
  88         Create(parent
, id
, title
, pos
, sz
, style
, name
); 
  91     bool Create(wxWindow
* parent
, wxWindowID id
, 
  92                        const wxString
& title
, 
  93                        const wxPoint
& pos 
= wxDefaultPosition
, 
  94                        const wxSize
& sz 
= wxDefaultSize
, 
  95                        long style 
= wxDEFAULT_DIALOG_STYLE
, 
  96                        const wxString
& name 
= wxDialogNameStr
); 
 100     // Set and get the notebook 
 101     void SetBookCtrl(wxBookCtrlBase
* book
) { m_bookCtrl 
= book
; } 
 102     wxBookCtrlBase
* GetBookCtrl() const { return m_bookCtrl
; } 
 104     // Set and get the inner sizer 
 105     void SetInnerSize(wxSizer
* sizer
) { m_innerSizer 
= sizer
; } 
 106     wxSizer
* GetInnerSizer() const { return m_innerSizer 
; } 
 108     // Set and get the book style 
 109     void SetSheetStyle(long sheetStyle
) { m_sheetStyle 
= sheetStyle
; } 
 110     long GetSheetStyle() const { return m_sheetStyle 
; } 
 112     // Set and get the border around the whole dialog 
 113     void SetSheetOuterBorder(int border
) { m_sheetOuterBorder 
= border
; } 
 114     int GetSheetOuterBorder() const { return m_sheetOuterBorder 
; } 
 116     // Set and get the border around the book control only 
 117     void SetSheetInnerBorder(int border
) { m_sheetInnerBorder 
= border
; } 
 118     int GetSheetInnerBorder() const { return m_sheetInnerBorder 
; } 
 122     // Creates the buttons (none on PocketPC) 
 123     virtual void CreateButtons(int flags 
= wxOK
|wxCANCEL
); 
 125     // Lay out the dialog, to be called after pages have been created 
 126     virtual void LayoutDialog(int centreFlags 
= wxBOTH
); 
 130     // Creates the book control. If you want to use a different kind of 
 131     // control, override. 
 132     virtual wxBookCtrlBase
* CreateBookCtrl(); 
 134     // Adds the book control to the inner sizer. 
 135     virtual void AddBookCtrl(wxSizer
* sizer
); 
 138     void OnActivate(wxActivateEvent
& event
); 
 140     // Resize dialog if necessary 
 141     void OnIdle(wxIdleEvent
& event
); 
 147     wxBookCtrlBase
* m_bookCtrl
; 
 148     wxSizer
*        m_innerSizer
; // sizer for extra space 
 150     int             m_sheetOuterBorder
; 
 151     int             m_sheetInnerBorder
; 
 154     DECLARE_DYNAMIC_CLASS(wxPropertySheetDialog
) 
 155     DECLARE_EVENT_TABLE() 
 158 #endif // wxUSE_BOOKCTRL 
 160 #endif // _WX_PROPDLG_H_