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
30class WXDLLIMPEXP_CORE wxCollapsiblePaneBase : public wxControl
31{
32public:
33    wxCollapsiblePaneBase() {}
34
35    virtual void Collapse(bool collapse = true) = 0;
36    void Expand() { Collapse(false); }
37
38    virtual bool IsCollapsed() const = 0;
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
52BEGIN_DECLARE_EVENT_TYPES()
53    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_CORE, wxEVT_COMMAND_COLLPANE_CHANGED, 1102)
54END_DECLARE_EVENT_TYPES()
55
56class WXDLLIMPEXP_CORE wxCollapsiblePaneEvent : public wxCommandEvent
57{
58public:
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
74private:
75    bool m_bCollapsed;
76
77    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCollapsiblePaneEvent)
78};
79
80// ----------------------------------------------------------------------------
81// event types and macros
82// ----------------------------------------------------------------------------
83
84typedef 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