X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1ed01484e7bcce3d1668b5b76c8bb1beb32e9559..30bfc425744ec3b797a956a9b78b902ff248bf3b:/contrib/include/wx/gizmos/splittree.h diff --git a/contrib/include/wx/gizmos/splittree.h b/contrib/include/wx/gizmos/splittree.h index a6877851db..98bbea58d4 100644 --- a/contrib/include/wx/gizmos/splittree.h +++ b/contrib/include/wx/gizmos/splittree.h @@ -14,10 +14,12 @@ #ifndef _WX_SPLITTREE_H_ #define _WX_SPLITTREE_H_ -#ifdef __GNUG__ - #pragma interface "splittree.h" +#if defined(__GNUG__) && !defined(__APPLE__) + #pragma interface "splittree.h" #endif +#include "wx/gizmos/gizmos.h" + // Set this to 1 to use generic tree control (doesn't yet work properly) #define USE_GENERIC_TREECTRL 0 @@ -46,18 +48,19 @@ class wxSplitterScrolledWindow; * It also updates the scrolled window vertical scrollbar as appropriate. */ -class wxRemotelyScrolledTreeCtrl: public wxTreeCtrl +class WXDLLIMPEXP_GIZMOS wxRemotelyScrolledTreeCtrl: public wxTreeCtrl { - DECLARE_CLASS(wxRemotelyScrolledTreeCtrl) + DECLARE_CLASS(wxRemotelyScrolledTreeCtrl) public: wxRemotelyScrolledTreeCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pt = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = wxTR_HAS_BUTTONS); - ~wxRemotelyScrolledTreeCtrl(); + ~wxRemotelyScrolledTreeCtrl(); //// Events - void OnSize(wxSizeEvent& event); - void OnExpand(wxTreeEvent& event); + void OnSize(wxSizeEvent& event); + void OnExpand(wxTreeEvent& event); void OnScroll(wxScrollWinEvent& event); + void OnPaint(wxPaintEvent& event); //// Overrides // Override this in case we're using the generic tree control. @@ -78,28 +81,79 @@ public: // In case we're using the generic tree control. virtual void PrepareDC(wxDC& dc); + // In case we're using the generic tree control. + virtual int GetScrollPos(int orient) const; + //// Helpers - void HideVScrollbar(); + void HideVScrollbar(); - // Calculate the tree overall size so we can set the scrollbar - // correctly - void CalcTreeSize(wxRect& rect); - void CalcTreeSize(wxTreeItemId& id, wxRect& rect); + // Calculate the tree overall size so we can set the scrollbar + // correctly + void CalcTreeSize(wxRect& rect); + void CalcTreeSize(const wxTreeItemId& id, wxRect& rect); - // Adjust the containing wxScrolledWindow's scrollbars appropriately - void AdjustRemoteScrollbars(); + // Adjust the containing wxScrolledWindow's scrollbars appropriately + void AdjustRemoteScrollbars(); - // Find the scrolled window that contains this control - wxScrolledWindow* GetScrolledWindow() const; + // Find the scrolled window that contains this control + wxScrolledWindow* GetScrolledWindow() const; // Scroll to the given line (in scroll units where each unit is // the height of an item) void ScrollToLine(int posHoriz, int posVert); +//// Accessors + + // The companion window is one which will get notified when certain + // events happen such as node expansion + void SetCompanionWindow(wxWindow* companion) { m_companionWindow = companion; } + wxWindow* GetCompanionWindow() const { return m_companionWindow; } + + DECLARE_EVENT_TABLE() protected: + wxWindow* m_companionWindow; + bool m_drawRowLines; +}; + +/* + * wxTreeCompanionWindow + * + * A window displaying values associated with tree control items. + */ + +class WXDLLIMPEXP_GIZMOS wxTreeCompanionWindow: public wxWindow +{ +public: + DECLARE_CLASS(wxTreeCompanionWindow) + + wxTreeCompanionWindow(wxWindow* parent, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize, + long style = 0); + +//// Overrides + virtual void DrawItem(wxDC& dc, wxTreeItemId id, const wxRect& rect); + +//// Events + void OnPaint(wxPaintEvent& event); + void OnScroll(wxScrollWinEvent& event); + void OnExpand(wxTreeEvent& event); + +//// Operations + +//// Accessors + wxRemotelyScrolledTreeCtrl* GetTreeCtrl() const { return m_treeCtrl; }; + void SetTreeCtrl(wxRemotelyScrolledTreeCtrl* treeCtrl) { m_treeCtrl = treeCtrl; } + +//// Data members +protected: + wxRemotelyScrolledTreeCtrl* m_treeCtrl; + + DECLARE_EVENT_TABLE() }; + /* * wxThinSplitterWindow * @@ -107,7 +161,7 @@ protected: * than the usual one. */ -class wxThinSplitterWindow: public wxSplitterWindow +class WXDLLIMPEXP_GIZMOS wxThinSplitterWindow: public wxSplitterWindow { public: DECLARE_DYNAMIC_CLASS(wxThinSplitterWindow) @@ -116,6 +170,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = wxSP_3D | wxCLIP_CHILDREN); + ~wxThinSplitterWindow(); //// Overrides @@ -123,10 +178,10 @@ public: // Tests for x, y over sash. Overriding this allows us to increase // the tolerance. bool SashHitTest(int x, int y, int tolerance = 2); - void DrawSash(wxDC& dc); + void DrawSash(wxDC& dc); //// Events - + void OnSize(wxSizeEvent& event); //// Operations @@ -135,6 +190,9 @@ public: //// Data members protected: + wxPen* m_facePen; + wxBrush* m_faceBrush; + DECLARE_EVENT_TABLE() }; @@ -147,7 +205,7 @@ protected: * scroll appropriately. */ -class wxSplitterScrolledWindow: public wxScrolledWindow +class WXDLLIMPEXP_GIZMOS wxSplitterScrolledWindow: public wxScrolledWindow { public: DECLARE_DYNAMIC_CLASS(wxSplitterScrolledWindow) @@ -160,7 +218,7 @@ public: //// Overrides //// Events - + void OnScroll(wxScrollWinEvent& event); void OnSize(wxSizeEvent& event);