1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/generic/collpaneg.h
3 // Purpose:     wxGenericCollapsiblePane
4 // Author:      Francesco Montorsi
5 // Modified by:
6 // Created:     8/10/2006
7 // RCS-ID:      $Id: collpaneg.h 49804 2007-11-10 01:09:42Z VZ $
8 // Copyright:   (c) Francesco Montorsi
9 // Licence:     wxWindows Licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_COLLAPSABLE_PANE_H_GENERIC_
13 #define _WX_COLLAPSABLE_PANE_H_GENERIC_
14 
15 // forward declared
16 class WXDLLIMPEXP_FWD_CORE wxButton;
17 class WXDLLIMPEXP_FWD_CORE wxStaticLine;
18 
19 // class name
20 extern WXDLLIMPEXP_DATA_CORE(const wxChar) wxCollapsiblePaneNameStr[];
21 
22 // ----------------------------------------------------------------------------
23 // wxGenericCollapsiblePane
24 // ----------------------------------------------------------------------------
25 
26 class WXDLLIMPEXP_CORE wxGenericCollapsiblePane : public wxCollapsiblePaneBase
27 {
28 public:
wxGenericCollapsiblePane()29     wxGenericCollapsiblePane() { Init(); }
30 
31     wxGenericCollapsiblePane(wxWindow *parent,
32                         wxWindowID winid,
33                         const wxString& label,
34                         const wxPoint& pos = wxDefaultPosition,
35                         const wxSize& size = wxDefaultSize,
36                         long style = wxCP_DEFAULT_STYLE,
37                         const wxValidator& val = wxDefaultValidator,
38                         const wxString& name = wxCollapsiblePaneNameStr)
39     {
40         Init();
41 
42         Create(parent, winid, label, pos, size, style, val, name);
43     }
44 
Init()45     void Init()
46     {
47         m_pButton = NULL;
48         m_pPane = NULL;
49         m_pStaticLine = NULL;
50         m_sz = NULL;
51     }
52 
53     ~wxGenericCollapsiblePane();
54 
55     bool Create(wxWindow *parent,
56                 wxWindowID winid,
57                 const wxString& label,
58                 const wxPoint& pos = wxDefaultPosition,
59                 const wxSize& size = wxDefaultSize,
60                 long style = wxCP_DEFAULT_STYLE,
61                 const wxValidator& val = wxDefaultValidator,
62                 const wxString& name = wxCollapsiblePaneNameStr);
63 
64     // public wxCollapsiblePane API
65     virtual void Collapse(bool collapse = true);
66     virtual void SetLabel(const wxString &label);
67 
IsCollapsed()68     virtual bool IsCollapsed() const
69         { return m_pPane==NULL || !m_pPane->IsShown(); }
GetPane()70     virtual wxWindow *GetPane() const
71         { return m_pPane; }
GetLabel()72     virtual wxString GetLabel() const
73         { return m_strLabel; }
74 
75     virtual bool Layout();
76 
77     // implementation only, don't use
78     void OnStateChange(const wxSize& sizeNew);
79 
80 protected:
81     // overridden methods
82     virtual wxSize DoGetBestSize() const;
83 
84     wxString GetBtnLabel() const;
85     int GetBorder() const;
86 
87     // child controls
88     wxButton *m_pButton;
89     wxStaticLine *m_pStaticLine;
90     wxWindow *m_pPane;
91     wxSizer *m_sz;
92 
93     // the button label without ">>" or "<<"
94     wxString m_strLabel;
95 
96 private:
97     // event handlers
98     void OnButton(wxCommandEvent &ev);
99     void OnSize(wxSizeEvent &ev);
100 
101     DECLARE_DYNAMIC_CLASS(wxGenericCollapsiblePane)
102     DECLARE_EVENT_TABLE()
103 };
104 
105 #endif // _WX_COLLAPSABLE_PANE_H_GENERIC_
106