1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/collpane.h
3 // Purpose:     wxCollapsiblePane
4 // Author:      Francesco Montorsi
5 // Modified by:
6 // Created:     8/10/2006
7 // RCS-ID:      $Id: collpane.h 43300 2006-11-11 07:32:08Z RD $
8 // Copyright:   (c) Francesco Montorsi
9 // Licence:     wxWindows Licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _WX_COLLAPSABLE_PANE_H_BASE_
13 #define _WX_COLLAPSABLE_PANE_H_BASE_
14 
15 #include "wx/defs.h"
16 
17 
18 #if wxUSE_COLLPANE
19 
20 #include "wx/control.h"
21 
22 
23 // ----------------------------------------------------------------------------
24 // wxCollapsiblePaneBase: interface for wxCollapsiblePane
25 // ----------------------------------------------------------------------------
26 
27 #define wxCP_DEFAULT_STYLE          (wxTAB_TRAVERSAL | wxNO_BORDER)
28 #define wxCP_NO_TLW_RESIZE          (0x0002)
29 
30 class WXDLLIMPEXP_CORE wxCollapsiblePaneBase : public wxControl
31 {
32 public:
wxCollapsiblePaneBase()33     wxCollapsiblePaneBase() {}
34 
35     virtual void Collapse(bool collapse = true) = 0;
Expand()36     void Expand() { Collapse(false); }
37 
38     virtual bool IsCollapsed() const = 0;
IsExpanded()39     bool IsExpanded() const { return !IsCollapsed(); }
40 
41     virtual wxWindow *GetPane() const = 0;
42 
43     virtual wxString GetLabel() const = 0;
44     virtual void SetLabel(const wxString& label) = 0;
45 };
46 
47 
48 // ----------------------------------------------------------------------------
49 // event types and macros
50 // ----------------------------------------------------------------------------
51 
52 BEGIN_DECLARE_EVENT_TYPES()
53     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_COLLPANE_CHANGED, 1102)
END_DECLARE_EVENT_TYPES()54 END_DECLARE_EVENT_TYPES()
55 
56 class WXDLLIMPEXP_CORE wxCollapsiblePaneEvent : public wxCommandEvent
57 {
58 public:
59     wxCollapsiblePaneEvent() {}
60     wxCollapsiblePaneEvent(wxObject *generator, int id, bool collapsed)
61         : wxCommandEvent(wxEVT_COMMAND_COLLPANE_CHANGED, id),
62         m_bCollapsed(collapsed)
63     {
64         SetEventObject(generator);
65     }
66 
67     bool GetCollapsed() const { return m_bCollapsed; }
68     void SetCollapsed(bool c) { m_bCollapsed = c; }
69 
70 
71     // default copy ctor, assignment operator and dtor are ok
72     virtual wxEvent *Clone() const { return new wxCollapsiblePaneEvent(*this); }
73 
74 private:
75     bool m_bCollapsed;
76 
77     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCollapsiblePaneEvent)
78 };
79 
80 // ----------------------------------------------------------------------------
81 // event types and macros
82 // ----------------------------------------------------------------------------
83 
84 typedef void (wxEvtHandler::*wxCollapsiblePaneEventFunction)(wxCollapsiblePaneEvent&);
85 
86 #define wxCollapsiblePaneEventHandler(func) \
87     (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxCollapsiblePaneEventFunction, &func)
88 
89 #define EVT_COLLAPSIBLEPANE_CHANGED(id, fn) \
90     wx__DECLARE_EVT1(wxEVT_COMMAND_COLLPANE_CHANGED, id, wxCollapsiblePaneEventHandler(fn))
91 
92 
93 #if defined(__WXGTK24__) && !defined(__WXUNIVERSAL__)
94     #include "wx/gtk/collpane.h"
95 #else
96     #include "wx/generic/collpaneg.h"
97 
98     // use #define and not a typedef to allow forward declaring the class
99     #define wxCollapsiblePane wxGenericCollapsiblePane
100 #endif
101 
102 #endif // wxUSE_COLLPANE
103 
104 #endif // _WX_COLLAPSABLE_PANE_H_BASE_
105