Add wxCollapsibleHeaderCtrl widget.
This simple class has a collapsed state which is indicated by a small button and a label. It is now used in the generic implementation of wxCollapsiblePane. It could be used in more complex layouts than wxCollapsiblePane and is therefore available and documented to the user.
This commit is contained in:
82
include/wx/generic/collheaderctrl.h
Normal file
82
include/wx/generic/collheaderctrl.h
Normal file
@@ -0,0 +1,82 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/generic/collheaderctrl.h
|
||||
// Purpose: wxGenericCollapsibleHeaderCtrl
|
||||
// Author: Tobias Taschner
|
||||
// Created: 2015-09-19
|
||||
// Copyright: (c) 2015 wxWidgets development team
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_GENERIC_COLLAPSIBLEHEADER_CTRL_H_
|
||||
#define _WX_GENERIC_COLLAPSIBLEHEADER_CTRL_H_
|
||||
|
||||
class wxGenericCollapsibleHeaderCtrl : public wxCollapsibleHeaderCtrlBase
|
||||
{
|
||||
public:
|
||||
wxGenericCollapsibleHeaderCtrl() { Init(); }
|
||||
|
||||
wxGenericCollapsibleHeaderCtrl(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& label,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxBORDER_NONE,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxCollapsibleHeaderCtrlNameStr)
|
||||
{
|
||||
Init();
|
||||
|
||||
Create(parent, id, label, pos, size, style, validator, name);
|
||||
}
|
||||
|
||||
bool Create(wxWindow *parent,
|
||||
wxWindowID id,
|
||||
const wxString& label,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = wxBORDER_NONE,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxCollapsibleHeaderCtrlNameStr);
|
||||
|
||||
virtual void SetCollapsed(bool collapsed = true) wxOVERRIDE;
|
||||
|
||||
virtual bool IsCollapsed() const wxOVERRIDE
|
||||
{ return m_collapsed; }
|
||||
|
||||
protected:
|
||||
|
||||
virtual wxSize DoGetBestClientSize() const wxOVERRIDE;
|
||||
|
||||
private:
|
||||
bool m_collapsed;
|
||||
bool m_inWindow;
|
||||
bool m_mouseDown;
|
||||
|
||||
void Init();
|
||||
|
||||
void OnPaint(wxPaintEvent& event);
|
||||
|
||||
// Handle set/kill focus events (invalidate for painting focus rect)
|
||||
void OnFocus(wxFocusEvent& event);
|
||||
|
||||
// Handle click
|
||||
void OnLeftUp(wxMouseEvent& event);
|
||||
|
||||
// Handle pressed state
|
||||
void OnLeftDown(wxMouseEvent& event);
|
||||
|
||||
// Handle current state
|
||||
void OnEnterWindow(wxMouseEvent& event);
|
||||
|
||||
void OnLeaveWindow(wxMouseEvent& event);
|
||||
|
||||
// Toggle on space
|
||||
void OnChar(wxKeyEvent& event);
|
||||
|
||||
void DoSetCollapsed(bool collapsed);
|
||||
|
||||
wxDECLARE_NO_COPY_CLASS(wxGenericCollapsibleHeaderCtrl);
|
||||
};
|
||||
|
||||
|
||||
#endif // _WX_GENERIC_COLLAPSIBLEHEADER_CTRL_H_
|
@@ -12,7 +12,7 @@
|
||||
#define _WX_COLLAPSABLE_PANE_H_GENERIC_
|
||||
|
||||
// forward declared
|
||||
class WXDLLIMPEXP_FWD_CORE wxButton;
|
||||
class WXDLLIMPEXP_FWD_CORE wxCollapsibleHeaderCtrl;
|
||||
class WXDLLIMPEXP_FWD_CORE wxStaticLine;
|
||||
#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__)
|
||||
class WXDLLIMPEXP_FWD_CORE wxDisclosureTriangle;
|
||||
@@ -63,8 +63,7 @@ public:
|
||||
{ return m_pPane==NULL || !m_pPane->IsShown(); }
|
||||
virtual wxWindow *GetPane() const
|
||||
{ return m_pPane; }
|
||||
virtual wxString GetLabel() const
|
||||
{ return m_strLabel; }
|
||||
virtual wxString GetLabel() const;
|
||||
|
||||
virtual bool Layout();
|
||||
|
||||
@@ -80,22 +79,18 @@ protected:
|
||||
// overridden methods
|
||||
virtual wxSize DoGetBestSize() const;
|
||||
|
||||
wxString GetBtnLabel() const;
|
||||
int GetBorder() const;
|
||||
|
||||
// child controls
|
||||
#if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__)
|
||||
wxDisclosureTriangle *m_pButton;
|
||||
#else
|
||||
wxButton *m_pButton;
|
||||
wxCollapsibleHeaderCtrl *m_pButton;
|
||||
#endif
|
||||
wxStaticLine *m_pStaticLine;
|
||||
wxWindow *m_pPane;
|
||||
wxSizer *m_sz;
|
||||
|
||||
// the button label without ">>" or "<<"
|
||||
wxString m_strLabel;
|
||||
|
||||
private:
|
||||
void Init();
|
||||
|
||||
|
Reference in New Issue
Block a user