| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/generic/sashwin.h
 
- // Purpose:     wxSashWindow implementation. A sash window has an optional
 
- //              sash on each edge, allowing it to be dragged. An event
 
- //              is generated when the sash is released.
 
- // Author:      Julian Smart
 
- // Modified by:
 
- // Created:     01/02/97
 
- // Copyright:   (c) Julian Smart
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_SASHWIN_H_G_
 
- #define _WX_SASHWIN_H_G_
 
- #if wxUSE_SASH
 
- #include "wx/defs.h"
 
- #include "wx/window.h"
 
- #include "wx/string.h"
 
- #define wxSASH_DRAG_NONE       0
 
- #define wxSASH_DRAG_DRAGGING   1
 
- #define wxSASH_DRAG_LEFT_DOWN  2
 
- enum wxSashEdgePosition {
 
-     wxSASH_TOP = 0,
 
-     wxSASH_RIGHT,
 
-     wxSASH_BOTTOM,
 
-     wxSASH_LEFT,
 
-     wxSASH_NONE = 100
 
- };
 
- /*
 
-  * wxSashEdge represents one of the four edges of a window.
 
-  */
 
- class WXDLLIMPEXP_ADV wxSashEdge
 
- {
 
- public:
 
-     wxSashEdge()
 
-     { m_show = false;
 
- #if WXWIN_COMPATIBILITY_2_6
 
-       m_border = false;
 
- #endif
 
-       m_margin = 0; }
 
-     bool    m_show;     // Is the sash showing?
 
- #if WXWIN_COMPATIBILITY_2_6
 
-     bool    m_border;   // Do we draw a border?
 
- #endif
 
-     int     m_margin;   // The margin size
 
- };
 
- /*
 
-  * wxSashWindow flags
 
-  */
 
- #define wxSW_NOBORDER         0x0000
 
- //#define wxSW_3D               0x0010
 
- #define wxSW_BORDER           0x0020
 
- #define wxSW_3DSASH           0x0040
 
- #define wxSW_3DBORDER         0x0080
 
- #define wxSW_3D (wxSW_3DSASH | wxSW_3DBORDER)
 
- /*
 
-  * wxSashWindow allows any of its edges to have a sash which can be dragged
 
-  * to resize the window. The actual content window will be created as a child
 
-  * of wxSashWindow.
 
-  */
 
- class WXDLLIMPEXP_ADV wxSashWindow: public wxWindow
 
- {
 
- public:
 
-     // Default constructor
 
-     wxSashWindow()
 
-     {
 
-         Init();
 
-     }
 
-     // Normal constructor
 
-     wxSashWindow(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
 
-         const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("sashWindow"))
 
-     {
 
-         Init();
 
-         Create(parent, id, pos, size, style, name);
 
-     }
 
-     virtual ~wxSashWindow();
 
-     bool Create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
 
-         const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("sashWindow"));
 
-     // Set whether there's a sash in this position
 
-     void SetSashVisible(wxSashEdgePosition edge, bool sash);
 
-     // Get whether there's a sash in this position
 
-     bool GetSashVisible(wxSashEdgePosition edge) const { return m_sashes[edge].m_show; }
 
- #if WXWIN_COMPATIBILITY_2_6
 
-     // Set whether there's a border in this position
 
-     // This value is unused in wxSashWindow.
 
-     void SetSashBorder(wxSashEdgePosition edge, bool border) { m_sashes[edge].m_border = border; }
 
-     // Get whether there's a border in this position
 
-     // This value is unused in wxSashWindow.
 
-     bool HasBorder(wxSashEdgePosition edge) const { return m_sashes[edge].m_border; }
 
- #endif
 
-     // Get border size
 
-     int GetEdgeMargin(wxSashEdgePosition edge) const { return m_sashes[edge].m_margin; }
 
-     // Sets the default sash border size
 
-     void SetDefaultBorderSize(int width) { m_borderSize = width; }
 
-     // Gets the default sash border size
 
-     int GetDefaultBorderSize() const { return m_borderSize; }
 
-     // Sets the addition border size between child and sash window
 
-     void SetExtraBorderSize(int width) { m_extraBorderSize = width; }
 
-     // Gets the addition border size between child and sash window
 
-     int GetExtraBorderSize() const { return m_extraBorderSize; }
 
-     virtual void SetMinimumSizeX(int min) { m_minimumPaneSizeX = min; }
 
-     virtual void SetMinimumSizeY(int min) { m_minimumPaneSizeY = min; }
 
-     virtual int GetMinimumSizeX() const { return m_minimumPaneSizeX; }
 
-     virtual int GetMinimumSizeY() const { return m_minimumPaneSizeY; }
 
-     virtual void SetMaximumSizeX(int max) { m_maximumPaneSizeX = max; }
 
-     virtual void SetMaximumSizeY(int max) { m_maximumPaneSizeY = max; }
 
-     virtual int GetMaximumSizeX() const { return m_maximumPaneSizeX; }
 
-     virtual int GetMaximumSizeY() const { return m_maximumPaneSizeY; }
 
- ////////////////////////////////////////////////////////////////////////////
 
- // Implementation
 
-     // Paints the border and sash
 
-     void OnPaint(wxPaintEvent& event);
 
-     // Handles mouse events
 
-     void OnMouseEvent(wxMouseEvent& ev);
 
-     // Adjusts the panes
 
-     void OnSize(wxSizeEvent& event);
 
- #if defined(__WXMSW__) || defined(__WXMAC__)
 
-     // Handle cursor correctly
 
-     void OnSetCursor(wxSetCursorEvent& event);
 
- #endif // wxMSW
 
-     // Draws borders
 
-     void DrawBorders(wxDC& dc);
 
-     // Draws the sashes
 
-     void DrawSash(wxSashEdgePosition edge, wxDC& dc);
 
-     // Draws the sashes
 
-     void DrawSashes(wxDC& dc);
 
-     // Draws the sash tracker (for whilst moving the sash)
 
-     void DrawSashTracker(wxSashEdgePosition edge, int x, int y);
 
-     // Tests for x, y over sash
 
-     wxSashEdgePosition SashHitTest(int x, int y, int tolerance = 2);
 
-     // Resizes subwindows
 
-     void SizeWindows();
 
-     // Initialize colours
 
-     void InitColours();
 
- private:
 
-     void Init();
 
-     wxSashEdge  m_sashes[4];
 
-     int         m_dragMode;
 
-     wxSashEdgePosition m_draggingEdge;
 
-     int         m_oldX;
 
-     int         m_oldY;
 
-     int         m_borderSize;
 
-     int         m_extraBorderSize;
 
-     int         m_firstX;
 
-     int         m_firstY;
 
-     int         m_minimumPaneSizeX;
 
-     int         m_minimumPaneSizeY;
 
-     int         m_maximumPaneSizeX;
 
-     int         m_maximumPaneSizeY;
 
-     wxCursor*   m_sashCursorWE;
 
-     wxCursor*   m_sashCursorNS;
 
-     wxColour    m_lightShadowColour;
 
-     wxColour    m_mediumShadowColour;
 
-     wxColour    m_darkShadowColour;
 
-     wxColour    m_hilightColour;
 
-     wxColour    m_faceColour;
 
-     bool        m_mouseCaptured;
 
-     wxCursor*   m_currentCursor;
 
- private:
 
-     DECLARE_DYNAMIC_CLASS(wxSashWindow)
 
-     DECLARE_EVENT_TABLE()
 
-     wxDECLARE_NO_COPY_CLASS(wxSashWindow);
 
- };
 
- class WXDLLIMPEXP_FWD_ADV wxSashEvent;
 
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_SASH_DRAGGED, wxSashEvent );
 
- enum wxSashDragStatus
 
- {
 
-     wxSASH_STATUS_OK,
 
-     wxSASH_STATUS_OUT_OF_RANGE
 
- };
 
- class WXDLLIMPEXP_ADV wxSashEvent: public wxCommandEvent
 
- {
 
- public:
 
-     wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE)
 
-     {
 
-         m_eventType = (wxEventType) wxEVT_SASH_DRAGGED;
 
-         m_id = id;
 
-         m_edge = edge;
 
-     }
 
-     wxSashEvent(const wxSashEvent& event)
 
-         : wxCommandEvent(event),
 
-           m_edge(event.m_edge),
 
-           m_dragRect(event.m_dragRect),
 
-           m_dragStatus(event.m_dragStatus) { }
 
-     void SetEdge(wxSashEdgePosition edge) { m_edge = edge; }
 
-     wxSashEdgePosition GetEdge() const { return m_edge; }
 
-     //// The rectangle formed by the drag operation
 
-     void SetDragRect(const wxRect& rect) { m_dragRect = rect; }
 
-     wxRect GetDragRect() const { return m_dragRect; }
 
-     //// Whether the drag caused the rectangle to be reversed (e.g.
 
-     //// dragging the top below the bottom)
 
-     void SetDragStatus(wxSashDragStatus status) { m_dragStatus = status; }
 
-     wxSashDragStatus GetDragStatus() const { return m_dragStatus; }
 
-     virtual wxEvent *Clone() const { return new wxSashEvent(*this); }
 
- private:
 
-     wxSashEdgePosition  m_edge;
 
-     wxRect              m_dragRect;
 
-     wxSashDragStatus    m_dragStatus;
 
- private:
 
-     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSashEvent)
 
- };
 
- typedef void (wxEvtHandler::*wxSashEventFunction)(wxSashEvent&);
 
- #define wxSashEventHandler(func) \
 
-     wxEVENT_HANDLER_CAST(wxSashEventFunction, func)
 
- #define EVT_SASH_DRAGGED(id, fn) \
 
-     wx__DECLARE_EVT1(wxEVT_SASH_DRAGGED, id, wxSashEventHandler(fn))
 
- #define EVT_SASH_DRAGGED_RANGE(id1, id2, fn) \
 
-     wx__DECLARE_EVT2(wxEVT_SASH_DRAGGED, id1, id2, wxSashEventHandler(fn))
 
- #endif // wxUSE_SASH
 
- #endif
 
-   // _WX_SASHWIN_H_G_
 
 
  |