/////////////////////////////////////////////////////////////////////////////
// Name:        _collpane.i
// Purpose:     SWIG interface for wxCollapsiblePane
//
// Author:      Robin Dunn
//
// Created:     10-Nov-2006
// RCS-ID:      $Id$
// Copyright:   (c) 2006 by Total Control Software
// Licence:     wxWindows license
/////////////////////////////////////////////////////////////////////////////

// Not a %module


//---------------------------------------------------------------------------
%newgroup

MAKE_CONST_WXSTRING(CollapsiblePaneNameStr);

enum {
     wxCP_DEFAULT_STYLE,
     wxCP_NO_TLW_RESIZE
};



MustHaveApp(wxCollapsiblePane);
DocStr(wxCollapsiblePane,
"A collapsable pane is a container with an embedded button-like
control which can be used by the user to collapse or expand the pane's
contents.

Once constructed you should use the `GetPane` function to access the
pane and add your controls inside it (i.e. use the window returned
from `GetPane` as the parent for the controls which must go in the
pane, NOT the wx.CollapsiblePane itself!).

Note that because of its nature of control which can dynamically (and
drastically) change its size at run-time under user-input, when
putting a wx.CollapsiblePane inside a `wx.Sizer` you should be careful
to add it with a proportion value of zero; this is because otherwise
all other windows with non-zero proportion values would automatically
get resized each time the user expands or collapses the pane window,
usually resulting a weird, flickering effect.", "");

class wxCollapsiblePane : public wxControl
{
public:
    %pythonAppend wxCollapsiblePane         "self._setOORInfo(self)";
    %pythonAppend wxCollapsiblePane()       "";

    DocCtorStr(
        wxCollapsiblePane(wxWindow *parent,
                          wxWindowID winid = -1,
                          const wxString& label = wxPyEmptyString,
                          const wxPoint& pos = wxDefaultPosition,
                          const wxSize& size = wxDefaultSize,
                          long style = wxCP_DEFAULT_STYLE,
                          const wxValidator& val = wxDefaultValidator,
                          const wxString& name = wxPyCollapsiblePaneNameStr),
        "Create and show a wx.CollapsiblePane", "");
    
    DocCtorStrName(
        wxCollapsiblePane(),
        "Precreate a wx.CollapsiblePane for 2-phase creation.", "",
        PreCollapsiblePane);


    DocDeclStr(
        bool , Create(wxWindow *parent,
                      wxWindowID winid =-1,
                      const wxString& label = wxPyEmptyString,
                      const wxPoint& pos = wxDefaultPosition,
                      const wxSize& size = wxDefaultSize,
                      long style = wxCP_DEFAULT_STYLE,
                      const wxValidator& val = wxDefaultValidator,
                      const wxString& name = wxPyCollapsiblePaneNameStr),
        "", "");
    


    
    DocDeclStr(
        virtual void , Collapse(bool collapse = true),
        "Collapses or expands the pane window.", "");
    
    DocDeclStr(
        void , Expand(),
        "Same as Collapse(False).", "");
    

    DocDeclStr(
        virtual bool , IsCollapsed() const,
        "Returns ``True`` if the pane window is currently hidden.", "");
    
    DocDeclStr(
        bool , IsExpanded() const,
        "Returns ``True`` if the pane window is currently shown.", "");
    

    DocDeclStr(
        virtual wxWindow *, GetPane() const,
        "Returns a reference to the pane window.  Use the returned `wx.Window`
as the parent of widgets to make them part of the collapsible area.", "");

    %property(Expanded, IsExpanded);
    %property(Collapsed, IsCollapsed);
};



//---------------------------------------------------------------------------


%constant wxEventType wxEVT_COMMAND_COLLPANE_CHANGED;
%pythoncode {
    EVT_COLLAPSIBLEPANE_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_COLLPANE_CHANGED, 1 )
}

class wxCollapsiblePaneEvent : public wxCommandEvent
{
public:
    //wxCollapsiblePaneEvent() {}
    wxCollapsiblePaneEvent(wxObject *generator, int id, bool collapsed);

    bool GetCollapsed() const;
    void SetCollapsed(bool c);

    %property(Collapsed, GetCollapsed, SetCollapsed);
};

//---------------------------------------------------------------------------
