1. We don't need GetTopLevelParent() here, we already have wxGetTopLevelParent()
2. Don't hardcode button id in the generic version 3. Don't include unneeded headers from the header git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -12,24 +12,14 @@
|
|||||||
#ifndef _WX_COLLAPSABLE_PANE_H_GENERIC_
|
#ifndef _WX_COLLAPSABLE_PANE_H_GENERIC_
|
||||||
#define _WX_COLLAPSABLE_PANE_H_GENERIC_
|
#define _WX_COLLAPSABLE_PANE_H_GENERIC_
|
||||||
|
|
||||||
#include "wx/button.h"
|
|
||||||
|
|
||||||
|
|
||||||
// the ID of the wxButton used to collapse/expand the panel
|
|
||||||
#define wxCP_BUTTON_ID 12356
|
|
||||||
|
|
||||||
// the number of pixels to leave between the button and the static line and
|
|
||||||
// between the button and the pane
|
|
||||||
#define wxCP_MARGIN 10
|
|
||||||
|
|
||||||
// forward declared
|
// forward declared
|
||||||
|
class WXDLLEXPORT wxButton;
|
||||||
class WXDLLEXPORT wxStaticLine;
|
class WXDLLEXPORT wxStaticLine;
|
||||||
|
|
||||||
// class name
|
// class name
|
||||||
extern WXDLLEXPORT_DATA(const wxChar) wxGenericCollapsiblePaneNameStr[];
|
extern WXDLLEXPORT_DATA(const wxChar) wxGenericCollapsiblePaneNameStr[];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxGenericCollapsiblePane
|
// wxGenericCollapsiblePane
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -70,34 +60,28 @@ public:
|
|||||||
const wxString& name = wxGenericCollapsiblePaneNameStr);
|
const wxString& name = wxGenericCollapsiblePaneNameStr);
|
||||||
|
|
||||||
|
|
||||||
public: // public API
|
// public wxCollapsiblePane API
|
||||||
|
virtual void Collapse(bool collapse = true);
|
||||||
|
virtual void SetLabel(const wxString &label);
|
||||||
|
|
||||||
void Collapse(bool collapse = true);
|
virtual bool IsCollapsed() const
|
||||||
void SetLabel(const wxString &label);
|
|
||||||
|
|
||||||
bool IsCollapsed() const
|
|
||||||
{ return m_pPane==NULL || !m_pPane->IsShown(); }
|
{ return m_pPane==NULL || !m_pPane->IsShown(); }
|
||||||
wxWindow *GetPane() const
|
virtual wxWindow *GetPane() const
|
||||||
{ return m_pPane; }
|
{ return m_pPane; }
|
||||||
wxString GetLabel() const
|
virtual wxString GetLabel() const
|
||||||
{ return m_strLabel; }
|
{ return m_strLabel; }
|
||||||
|
|
||||||
wxWindow *GetTopLevelParent();
|
protected:
|
||||||
|
// overridden methods
|
||||||
public: // event handlers
|
virtual wxSize DoGetBestSize() const;
|
||||||
|
|
||||||
void OnButton(wxCommandEvent &ev);
|
|
||||||
void OnSize(wxSizeEvent &ev);
|
|
||||||
|
|
||||||
protected: // internal utils
|
|
||||||
|
|
||||||
|
// internal helpers
|
||||||
void LayoutChildren();
|
void LayoutChildren();
|
||||||
|
|
||||||
wxString GetBtnLabel() const;
|
wxString GetBtnLabel() const;
|
||||||
virtual wxSize DoGetBestSize() const;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
|
// child controls
|
||||||
wxButton *m_pButton;
|
wxButton *m_pButton;
|
||||||
wxStaticLine *m_pStatLine;
|
wxStaticLine *m_pStatLine;
|
||||||
wxWindow *m_pPane;
|
wxWindow *m_pPane;
|
||||||
@@ -106,10 +90,14 @@ protected:
|
|||||||
wxString m_strLabel;
|
wxString m_strLabel;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// event handlers
|
||||||
|
void OnButton(wxCommandEvent &ev);
|
||||||
|
void OnSize(wxSizeEvent &ev);
|
||||||
|
|
||||||
DECLARE_DYNAMIC_CLASS(wxGenericCollapsiblePane)
|
DECLARE_DYNAMIC_CLASS(wxGenericCollapsiblePane)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif // _WX_COLLAPSABLE_PANE_H_GENERIC_
|
||||||
// _WX_COLLAPSABLE_PANE_H_GENERIC_
|
|
||||||
|
@@ -16,9 +16,22 @@
|
|||||||
|
|
||||||
// For compilers that support precompilation, includes "wx.h".
|
// For compilers that support precompilation, includes "wx.h".
|
||||||
#include "wx/wxprec.h"
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/button.h"
|
||||||
|
#endif // !WX_PRECOMP
|
||||||
|
|
||||||
#include "wx/collpane.h"
|
#include "wx/collpane.h"
|
||||||
#include "wx/statline.h"
|
#include "wx/statline.h"
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// constants
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// the number of pixels to leave between the button and the static line and
|
||||||
|
// between the button and the pane
|
||||||
|
#define wxCP_MARGIN 10
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// implementation
|
// implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
@@ -34,12 +47,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxGenericCollapsiblePane, wxControl)
|
|||||||
IMPLEMENT_DYNAMIC_CLASS(wxCollapsiblePaneEvent, wxCommandEvent)
|
IMPLEMENT_DYNAMIC_CLASS(wxCollapsiblePaneEvent, wxCommandEvent)
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(wxGenericCollapsiblePane, wxControl)
|
BEGIN_EVENT_TABLE(wxGenericCollapsiblePane, wxControl)
|
||||||
EVT_BUTTON(wxCP_BUTTON_ID, wxGenericCollapsiblePane::OnButton)
|
EVT_BUTTON(wxID_ANY, wxGenericCollapsiblePane::OnButton)
|
||||||
EVT_SIZE(wxGenericCollapsiblePane::OnSize)
|
EVT_SIZE(wxGenericCollapsiblePane::OnSize)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
bool wxGenericCollapsiblePane::Create( wxWindow *parent, wxWindowID id,
|
bool wxGenericCollapsiblePane::Create(wxWindow *parent,
|
||||||
|
wxWindowID id,
|
||||||
const wxString& label,
|
const wxString& label,
|
||||||
const wxPoint& pos,
|
const wxPoint& pos,
|
||||||
const wxSize& size,
|
const wxSize& size,
|
||||||
@@ -53,7 +67,7 @@ bool wxGenericCollapsiblePane::Create( wxWindow *parent, wxWindowID id,
|
|||||||
m_strLabel = label;
|
m_strLabel = label;
|
||||||
|
|
||||||
// create children; their size & position is set in OnSize()
|
// create children; their size & position is set in OnSize()
|
||||||
m_pButton = new wxButton(this, wxCP_BUTTON_ID, GetBtnLabel(), wxPoint(0, 0),
|
m_pButton = new wxButton(this, wxID_ANY, GetBtnLabel(), wxPoint(0, 0),
|
||||||
wxDefaultSize, wxBU_EXACTFIT);
|
wxDefaultSize, wxBU_EXACTFIT);
|
||||||
m_pStatLine = new wxStaticLine(this, wxID_ANY);
|
m_pStatLine = new wxStaticLine(this, wxID_ANY);
|
||||||
m_pPane = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
|
m_pPane = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
|
||||||
@@ -106,7 +120,7 @@ void wxGenericCollapsiblePane::Collapse(bool collapse)
|
|||||||
SetMinSize(sz);
|
SetMinSize(sz);
|
||||||
SetSize(sz);
|
SetSize(sz);
|
||||||
|
|
||||||
wxWindow *top = GetTopLevelParent();
|
wxWindow *top = wxGetTopLevelParent(this);
|
||||||
if (top)
|
if (top)
|
||||||
{
|
{
|
||||||
// we've changed our size, thus our top level parent needs to relayout
|
// we've changed our size, thus our top level parent needs to relayout
|
||||||
@@ -143,15 +157,6 @@ void wxGenericCollapsiblePane::Collapse(bool collapse)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wxWindow *wxGenericCollapsiblePane::GetTopLevelParent()
|
|
||||||
{
|
|
||||||
wxWindow *parent = GetParent();
|
|
||||||
while (parent && !parent->IsTopLevel())
|
|
||||||
parent = parent->GetParent();
|
|
||||||
|
|
||||||
return parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
void wxGenericCollapsiblePane::SetLabel(const wxString &label)
|
void wxGenericCollapsiblePane::SetLabel(const wxString &label)
|
||||||
{
|
{
|
||||||
m_strLabel = label;
|
m_strLabel = label;
|
||||||
@@ -183,8 +188,14 @@ void wxGenericCollapsiblePane::LayoutChildren()
|
|||||||
// wxGenericCollapsiblePane - event handlers
|
// wxGenericCollapsiblePane - event handlers
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void wxGenericCollapsiblePane::OnButton(wxCommandEvent &WXUNUSED(event))
|
void wxGenericCollapsiblePane::OnButton(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
|
if ( event.GetEventObject() != m_pButton )
|
||||||
|
{
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Collapse(!IsCollapsed());
|
Collapse(!IsCollapsed());
|
||||||
|
|
||||||
// this change was generated by the user - send the event
|
// this change was generated by the user - send the event
|
||||||
|
@@ -20,9 +20,9 @@
|
|||||||
#ifdef __WXGTK24__
|
#ifdef __WXGTK24__
|
||||||
|
|
||||||
#include "wx/collpane.h"
|
#include "wx/collpane.h"
|
||||||
|
#include "wx/gtk/private.h"
|
||||||
|
|
||||||
#include <gtk/gtkexpander.h>
|
#include <gtk/gtkexpander.h>
|
||||||
#include <gtk/gtk.h>
|
|
||||||
|
|
||||||
const wxChar wxCollapsiblePaneNameStr[] = wxT("CollapsiblePane");
|
const wxChar wxCollapsiblePaneNameStr[] = wxT("CollapsiblePane");
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ static void gtk_collapsiblepane_expanded_callback (GObject *object,
|
|||||||
p->SetMinSize(sz);
|
p->SetMinSize(sz);
|
||||||
p->SetSize(sz);
|
p->SetSize(sz);
|
||||||
|
|
||||||
wxWindow *top = p->GetTopLevelParent();
|
wxWindow *top = wxGetTopLevelParent(p);
|
||||||
if (top)
|
if (top)
|
||||||
{
|
{
|
||||||
// we've changed our size, thus our top level parent needs to relayout
|
// we've changed our size, thus our top level parent needs to relayout
|
||||||
|
Reference in New Issue
Block a user