| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: sashwin.h
- // Purpose: interface of wxSashWindow
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- wxSashWindow flags
- */
- #define wxSW_NOBORDER 0x0000
- #define wxSW_BORDER 0x0020
- #define wxSW_3DSASH 0x0040
- #define wxSW_3DBORDER 0x0080
- #define wxSW_3D (wxSW_3DSASH | wxSW_3DBORDER)
- /**
- See wxSashWindow.
- */
- enum wxSashEdgePosition
- {
- wxSASH_TOP = 0,
- wxSASH_RIGHT,
- wxSASH_BOTTOM,
- wxSASH_LEFT,
- wxSASH_NONE = 100
- };
- /**
- See wxSashEvent.
- */
- enum wxSashDragStatus
- {
- wxSASH_STATUS_OK,
- wxSASH_STATUS_OUT_OF_RANGE
- };
- /**
- @class wxSashWindow
- 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 by the
- application as a child of wxSashWindow.
- The window (or an ancestor) will be notified of a drag via a
- wxSashEvent notification.
- @beginStyleTable
- @style{wxSW_3D}
- Draws a 3D effect sash and border.
- @style{wxSW_3DSASH}
- Draws a 3D effect sash.
- @style{wxSW_3DBORDER}
- Draws a 3D effect border.
- @style{wxSW_BORDER}
- Draws a thin black border.
- @endStyleTable
- @beginEventEmissionTable{wxSashEvent}
- @event{EVT_SASH_DRAGGED(id, func)}
- Process a @c wxEVT_SASH_DRAGGED event, when the user has finished
- dragging a sash.
- @event{EVT_SASH_DRAGGED_RANGE(id1, id2, func)}
- Process a @c wxEVT_SASH_DRAGGED_RANGE event, when the user has
- finished dragging a sash. The event handler is called when windows
- with ids in the given range have their sashes dragged.
- @endEventTable
- @library{wxadv}
- @category{miscwnd}
- @see wxSashEvent, wxSashLayoutWindow, @ref overview_events
- */
- class wxSashWindow : public wxWindow
- {
- public:
- /**
- Default ctor.
- */
- wxSashWindow();
- /**
- Constructs a sash window, which can be a child of a frame, dialog or any other
- non-control window.
- @param parent
- Pointer to a parent window.
- @param id
- Window identifier. If -1, will automatically create an identifier.
- @param pos
- Window position. wxDefaultPosition is (-1, -1) which indicates that
- wxSashWindows should generate a default position for the window.
- If using the wxSashWindow class directly, supply an actual position.
- @param size
- Window size. wxDefaultSize is (-1, -1) which indicates that wxSashWindows
- should generate a default size for the window.
- @param style
- Window style. For window styles, please see wxSashWindow.
- @param name
- Window name.
- */
- wxSashWindow(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxCLIP_CHILDREN | wxSW_3D,
- const wxString& name = "sashWindow");
- /**
- Destructor.
- */
- virtual ~wxSashWindow();
- /**
- Gets the maximum window size in the x direction.
- */
- virtual int GetMaximumSizeX() const;
- /**
- Gets the maximum window size in the y direction.
- */
- virtual int GetMaximumSizeY() const;
- /**
- Gets the minimum window size in the x direction.
- */
- virtual int GetMinimumSizeX() const;
- /**
- Gets the minimum window size in the y direction.
- */
- virtual int GetMinimumSizeY() const;
- /**
- Returns @true if a sash is visible on the given edge, @false otherwise.
- @param edge
- Edge. One of wxSASH_TOP, wxSASH_RIGHT, wxSASH_BOTTOM, wxSASH_LEFT.
- @see SetSashVisible()
- */
- bool GetSashVisible(wxSashEdgePosition edge) const;
- /**
- Sets the maximum window size in the x direction.
- */
- virtual void SetMaximumSizeX(int min);
- /**
- Sets the maximum window size in the y direction.
- */
- virtual void SetMaximumSizeY(int min);
- /**
- Sets the minimum window size in the x direction.
- */
- virtual void SetMinimumSizeX(int min);
- /**
- Sets the minimum window size in the y direction.
- */
- virtual void SetMinimumSizeY(int min);
- /**
- Call this function to make a sash visible or invisible on a particular edge.
- @param edge
- Edge to change. One of wxSASH_TOP, wxSASH_RIGHT, wxSASH_BOTTOM, wxSASH_LEFT.
- @param visible
- @true to make the sash visible, @false to make it invisible.
- @see GetSashVisible()
- */
- void SetSashVisible(wxSashEdgePosition edge, bool visible);
- /**
- Get border size
- */
- int GetEdgeMargin(wxSashEdgePosition edge) const;
- /**
- Sets the default sash border size
- */
- void SetDefaultBorderSize(int width);
- /**
- Gets the default sash border size
- */
- int GetDefaultBorderSize() const;
- /**
- Sets the additional border size between child and sash window
- */
- void SetExtraBorderSize(int width);
- /**
- Gets the addition border size between child and sash window
- */
- int GetExtraBorderSize() const;
- /**
- Tests for x, y over sash
- */
- wxSashEdgePosition SashHitTest(int x, int y, int tolerance = 2);
- /**
- Resizes subwindows
- */
- void SizeWindows();
- };
- /**
- @class wxSashEvent
- A sash event is sent when the sash of a wxSashWindow has been
- dragged by the user.
- @remarks
- When a sash belonging to a sash window is dragged by the user, and then released,
- this event is sent to the window, where it may be processed by an event table
- entry in a derived class, a plug-in event handler or an ancestor class.
- Note that the wxSashWindow doesn't change the window's size itself.
- It relies on the application's event handler to do that.
- This is because the application may have to handle other consequences of the resize,
- or it may wish to veto it altogether. The event handler should look at the drag
- rectangle: see wxSashEvent::GetDragRect to see what the new size of the window
- would be if the resize were to be applied.
- It should also call wxSashEvent::GetDragStatus to see whether the drag was
- OK or out of the current allowed range.
- @beginEventTable{wxSashEvent}
- @event{EVT_SASH_DRAGGED(id, func)}
- Process a @c wxEVT_SASH_DRAGGED event, when the user has finished dragging a sash.
- @event{EVT_SASH_DRAGGED_RANGE(id1, id2, func)}
- Process a @c wxEVT_SASH_DRAGGED_RANGE event, when the user has finished
- dragging a sash. The event handler is called when windows with ids in
- the given range have their sashes dragged.
- @endEventTable
- @library{wxadv}
- @category{events}
- @see wxSashWindow, @ref overview_events
- */
- class wxSashEvent : public wxCommandEvent
- {
- public:
- /**
- Constructor.
- */
- wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE);
- /**
- Returns the rectangle representing the new size the window would be if the
- resize was applied. It is up to the application to set the window size if required.
- */
- wxRect GetDragRect() const;
- /**
- Returns the status of the sash: one of wxSASH_STATUS_OK, wxSASH_STATUS_OUT_OF_RANGE.
- If the drag caused the notional bounding box of the window to flip over, for
- example, the drag will be out of rage.
- */
- wxSashDragStatus GetDragStatus() const;
- /**
- Returns the dragged edge.
- The return value is one of wxSASH_TOP, wxSASH_RIGHT, wxSASH_BOTTOM, wxSASH_LEFT.
- */
- wxSashEdgePosition GetEdge() const;
-
- void SetEdge(wxSashEdgePosition edge);
- void SetDragRect(const wxRect& rect);
- void SetDragStatus(wxSashDragStatus status);
- };
- wxEventType wxEVT_SASH_DRAGGED;
|