| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        laywin.h
 
- // Purpose:     interface of wxLayoutAlgorithm
 
- // Author:      wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- /**
 
-     Enumeration used by wxLayoutAlgorithm.
 
- */
 
- enum wxLayoutOrientation
 
- {
 
-     wxLAYOUT_HORIZONTAL,
 
-     wxLAYOUT_VERTICAL
 
- };
 
- /**
 
-     Enumeration used by wxLayoutAlgorithm.
 
- */
 
- enum wxLayoutAlignment
 
- {
 
-     wxLAYOUT_NONE,
 
-     wxLAYOUT_TOP,
 
-     wxLAYOUT_LEFT,
 
-     wxLAYOUT_RIGHT,
 
-     wxLAYOUT_BOTTOM
 
- };
 
- /**
 
-     @class wxLayoutAlgorithm
 
-     wxLayoutAlgorithm implements layout of subwindows in MDI or SDI frames.
 
-     It sends a wxCalculateLayoutEvent event to children of the frame, asking them
 
-     for information about their size. For MDI parent frames, the algorithm allocates
 
-     the remaining space to the MDI client window (which contains the MDI child frames).
 
-     For SDI (normal) frames, a 'main' window is specified as taking up the
 
-     remaining space.
 
-     Because the event system is used, this technique can be applied to any windows,
 
-     which are not necessarily 'aware' of the layout classes (no virtual functions
 
-     in wxWindow refer to wxLayoutAlgorithm or its events).
 
-     However, you may wish to use wxSashLayoutWindow for your subwindows since this
 
-     class provides handlers for the required events, and accessors to specify the
 
-     desired size of the window. The sash behaviour in the base class can be used,
 
-     optionally, to make the windows user-resizable.
 
-     wxLayoutAlgorithm is typically used in IDE (integrated development environment)
 
-     applications, where there are several resizable windows in addition to the MDI
 
-     client window, or other primary editing window. Resizable windows might include
 
-     toolbars, a project window, and a window for displaying error and warning messages.
 
-     When a window receives an OnCalculateLayout event, it should call SetRect in
 
-     the given event object, to be the old supplied rectangle minus whatever space
 
-     the window takes up. It should also set its own size accordingly.
 
-     wxSashLayoutWindow::OnCalculateLayout generates an OnQueryLayoutInfo event
 
-     which it sends to itself to determine the orientation, alignment and size of
 
-     the window, which it gets from internal member variables set by the application.
 
-     The algorithm works by starting off with a rectangle equal to the whole frame
 
-     client area. It iterates through the frame children, generating
 
-     wxLayoutAlgorithm::OnCalculateLayout events which subtract the window size and
 
-     return the remaining rectangle for the next window to process.
 
-     It is assumed (by wxSashLayoutWindow::OnCalculateLayout) that a window stretches
 
-     the full dimension of the frame client, according to the orientation it specifies.
 
-     For example, a horizontal window will stretch the full width of the remaining
 
-     portion of the frame client area.
 
-     In the other orientation, the window will be fixed to whatever size was
 
-     specified by wxLayoutAlgorithm::OnQueryLayoutInfo. An alignment setting will
 
-     make the window 'stick' to the left, top, right or bottom of the remaining
 
-     client area. This scheme implies that order of window creation is important.
 
-     Say you wish to have an extra toolbar at the top of the frame, a project window
 
-     to the left of the MDI client window, and an output window above the status bar.
 
-     You should therefore create the windows in this order: toolbar, output window,
 
-     project window. This ensures that the toolbar and output window take up space
 
-     at the top and bottom, and then the remaining height in-between is used for
 
-     the project window.
 
-     wxLayoutAlgorithm is quite independent of the way in which
 
-     wxLayoutAlgorithm::OnCalculateLayout chooses to interpret a window's size and
 
-     alignment. Therefore you could implement a different window class with a new
 
-     wxLayoutAlgorithm::OnCalculateLayout event handler, that has a more sophisticated
 
-     way of laying out the windows. It might allow specification of whether stretching
 
-     occurs in the specified orientation, for example, rather than always assuming
 
-     stretching.
 
-     (This could, and probably should, be added to the existing implementation).
 
-     @note wxLayoutAlgorithm has nothing to do with wxLayoutConstraints.
 
-           It is an alternative way of specifying layouts for which the normal
 
-           constraint system is unsuitable.
 
-     @beginEventEmissionTable{wxQueryLayoutInfoEvent,wxCalculateLayoutEvent}
 
-     @event{EVT_QUERY_LAYOUT_INFO(func)}
 
-         Process a @c wxEVT_QUERY_LAYOUT_INFO event, to get size, orientation and
 
-         alignment from a window. See wxQueryLayoutInfoEvent.
 
-     @event{EVT_CALCULATE_LAYOUT(func)}
 
-         Process a @c wxEVT_CALCULATE_LAYOUT event, which asks the window to take a
 
-         'bite' out of a rectangle provided by the algorithm. See wxCalculateLayoutEvent.
 
-     @endEventTable
 
-     Note that the algorithm object does not respond to events, but itself generates the
 
-     previous events in order to calculate window sizes.
 
-     @library{wxadv}
 
-     @category{winlayout}
 
-     @see wxSashEvent, wxSashLayoutWindow, @ref overview_events
 
- */
 
- class wxLayoutAlgorithm : public wxObject
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-     */
 
-     wxLayoutAlgorithm();
 
-     /**
 
-         Destructor.
 
-     */
 
-     virtual ~wxLayoutAlgorithm();
 
-     /**
 
-         Lays out the children of a normal frame. @a mainWindow is set to occupy the
 
-         remaining space. This function simply calls LayoutWindow().
 
-     */
 
-     bool LayoutFrame(wxFrame* frame, wxWindow* mainWindow = NULL);
 
-     /**
 
-         Lays out the children of an MDI parent frame. If @a rect is non-@NULL, the
 
-         given rectangle will be used as a starting point instead of the frame's client
 
-         area. The MDI client window is set to occupy the remaining space.
 
-     */
 
-     bool LayoutMDIFrame(wxMDIParentFrame* frame, wxRect* rect = NULL);
 
-     /**
 
-         Lays out the children of a normal frame or other window.
 
-         @a mainWindow is set to occupy the remaining space. If this is not specified,
 
-         then the last window that responds to a calculate layout event in query mode will
 
-         get the remaining space (that is, a non-query OnCalculateLayout event will
 
-         not be sent to this window and the window will be set to the remaining size).
 
-     */
 
-     bool LayoutWindow(wxWindow* parent, wxWindow* mainWindow = NULL);
 
- };
 
- /**
 
-     @class wxSashLayoutWindow
 
-     wxSashLayoutWindow responds to OnCalculateLayout events generated by wxLayoutAlgorithm.
 
-     It allows the  application to use simple accessors to specify how the window
 
-     should be laid out, rather than having to respond to events.
 
-     The fact that the class derives from wxSashWindow allows sashes to be used if
 
-     required, to allow the windows to be user-resizable.
 
-     The documentation for wxLayoutAlgorithm explains the purpose of this class in
 
-     more detail.
 
-     For the window styles see wxSashWindow.
 
-     This class handles the EVT_QUERY_LAYOUT_INFO and EVT_CALCULATE_LAYOUT events
 
-     for you. However, if you use sashes, see wxSashWindow for relevant event information.
 
-     See also wxLayoutAlgorithm for information about the layout events.
 
-     @library{wxadv}
 
-     @category{miscwnd}
 
-     @see wxLayoutAlgorithm, wxSashWindow, @ref overview_events
 
- */
 
- class wxSashLayoutWindow : public wxSashWindow
 
- {
 
- public:
 
-     /**
 
-         Default ctor.
 
-     */
 
-     wxSashLayoutWindow();
 
-     /**
 
-         Constructs a sash layout 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
 
-             wxSashLayoutWindows should generate a default position for the window.
 
-             If using the wxSashLayoutWindow class directly, supply an actual position.
 
-         @param size
 
-             Window size. wxDefaultSize is (-1, -1) which indicates that
 
-             wxSashLayoutWindows should generate a default size for the window.
 
-         @param style
 
-             Window style. For window styles, please see wxSashLayoutWindow.
 
-         @param name
 
-             Window name.
 
-     */
 
-     wxSashLayoutWindow(wxWindow* parent, wxWindowID id,
 
-                        const wxPoint& pos = wxDefaultPosition,
 
-                        const wxSize& size = wxDefaultSize,
 
-                        long style = wxCLIP_CHILDREN | wxSW_3D,
 
-                        const wxString& name = "layoutWindow");
 
-     /**
 
-         Initializes a sash layout 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
 
-             wxSashLayoutWindows should generate a default position for the window.
 
-             If using the wxSashLayoutWindow class directly, supply an actual position.
 
-         @param size
 
-             Window size. wxDefaultSize is (-1, -1) which indicates that
 
-             wxSashLayoutWindows should generate a default size for the window.
 
-         @param style
 
-             Window style. For window styles, please see wxSashLayoutWindow.
 
-         @param name
 
-             Window name.
 
-     */
 
-     bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = wxCLIP_CHILDREN | wxSW_3D,
 
-                 const wxString& name = "layoutWindow");
 
-     /**
 
-         Returns the alignment of the window: one of wxLAYOUT_TOP, wxLAYOUT_LEFT,
 
-         wxLAYOUT_RIGHT, wxLAYOUT_BOTTOM.
 
-     */
 
-     wxLayoutAlignment GetAlignment() const;
 
-     /**
 
-         Returns the orientation of the window: one of wxLAYOUT_HORIZONTAL,
 
-         wxLAYOUT_VERTICAL.
 
-     */
 
-     wxLayoutOrientation GetOrientation() const;
 
-     /**
 
-         The default handler for the event that is generated by wxLayoutAlgorithm.
 
-         The implementation of this function calls wxCalculateLayoutEvent::SetRect
 
-         to shrink the provided size according to how much space this window takes up.
 
-         For further details, see wxLayoutAlgorithm and wxCalculateLayoutEvent.
 
-     */
 
-     void OnCalculateLayout(wxCalculateLayoutEvent& event);
 
-     /**
 
-         The default handler for the event that is generated by OnCalculateLayout to get
 
-         size, alignment and orientation information for the window.
 
-         The implementation of this function uses member variables as set by accessors
 
-         called by the application.
 
-         For further details, see wxLayoutAlgorithm and wxQueryLayoutInfoEvent.
 
-     */
 
-     void OnQueryLayoutInfo(wxQueryLayoutInfoEvent& event);
 
-     /**
 
-         Sets the alignment of the window (which edge of the available parent client
 
-         area the window is attached to). @a alignment is one of wxLAYOUT_TOP, wxLAYOUT_LEFT,
 
-         wxLAYOUT_RIGHT, wxLAYOUT_BOTTOM.
 
-     */
 
-     void SetAlignment(wxLayoutAlignment alignment);
 
-     /**
 
-         Sets the default dimensions of the window. The dimension other than the
 
-         orientation will be fixed to this value, and the orientation dimension
 
-         will be ignored and the window stretched to fit the available space.
 
-     */
 
-     void SetDefaultSize(const wxSize& size);
 
-     /**
 
-         Sets the orientation of the window (the direction the window will stretch in,
 
-         to fill the available parent client area). @a orientation is one of
 
-         wxLAYOUT_HORIZONTAL, wxLAYOUT_VERTICAL.
 
-     */
 
-     void SetOrientation(wxLayoutOrientation orientation);
 
- };
 
- /**
 
-     @class wxQueryLayoutInfoEvent
 
-     This event is sent when wxLayoutAlgorithm wishes to get the size, orientation
 
-     and alignment of a window. More precisely, the event is sent by the
 
-     OnCalculateLayout handler which is itself invoked by wxLayoutAlgorithm.
 
-     @beginEventTable{wxQueryLayoutInfoEvent}
 
-     @event{EVT_QUERY_LAYOUT_INFO(func)}
 
-         Process a @c wxEVT_QUERY_LAYOUT_INFO event, to get size, orientation and alignment
 
-         from a window.
 
-     @endEventTable
 
-     @library{wxadv}
 
-     @category{events}
 
-     @see wxCalculateLayoutEvent, wxSashLayoutWindow, wxLayoutAlgorithm.
 
- */
 
- class wxQueryLayoutInfoEvent : public wxEvent
 
- {
 
- public:
 
-     /**
 
-         Constructor.
 
-     */
 
-     wxQueryLayoutInfoEvent(wxWindowID id = 0);
 
-     /**
 
-         Specifies the alignment of the window (which side of the remaining parent
 
-         client area the window sticks to).
 
-         One of wxLAYOUT_TOP, wxLAYOUT_LEFT, wxLAYOUT_RIGHT, wxLAYOUT_BOTTOM.
 
-     */
 
-     wxLayoutAlignment GetAlignment() const;
 
-     /**
 
-         Returns the flags associated with this event. Not currently used.
 
-     */
 
-     int GetFlags() const;
 
-     /**
 
-         Returns the orientation that the event handler specified to the event object.
 
-         May be one of wxLAYOUT_HORIZONTAL, wxLAYOUT_VERTICAL.
 
-     */
 
-     wxLayoutOrientation GetOrientation() const;
 
-     /**
 
-         Returns the requested length of the window in the direction of the window
 
-         orientation. This information is not yet used.
 
-     */
 
-     int GetRequestedLength() const;
 
-     /**
 
-         Returns the size that the event handler specified to the event object as being
 
-         the requested size of the window.
 
-     */
 
-     wxSize GetSize() const;
 
-     /**
 
-         Call this to specify the alignment of the window (which side of the remaining
 
-         parent client area the window sticks to).
 
-         May be one of wxLAYOUT_TOP, wxLAYOUT_LEFT, wxLAYOUT_RIGHT, wxLAYOUT_BOTTOM.
 
-     */
 
-     void SetAlignment(wxLayoutAlignment alignment);
 
-     /**
 
-         Sets the flags associated with this event. Not currently used.
 
-     */
 
-     void SetFlags(int flags);
 
-     /**
 
-         Call this to specify the orientation of the window.
 
-         May be one of wxLAYOUT_HORIZONTAL, wxLAYOUT_VERTICAL.
 
-     */
 
-     void SetOrientation(wxLayoutOrientation orientation);
 
-     /**
 
-         Sets the requested length of the window in the direction of the window
 
-         orientation. This information is not yet used.
 
-     */
 
-     void SetRequestedLength(int length);
 
-     /**
 
-         Call this to let the calling code know what the size of the window is.
 
-     */
 
-     void SetSize(const wxSize& size);
 
- };
 
- wxEventType wxEVT_QUERY_LAYOUT_INFO;
 
- /**
 
-     @class wxCalculateLayoutEvent
 
-     This event is sent by wxLayoutAlgorithm to calculate the amount of the
 
-     remaining client area that the window should occupy.
 
-     @beginEventTable{wxCalculateLayoutEvent}
 
-     @event{EVT_CALCULATE_LAYOUT(func)}
 
-         Process a @c wxEVT_CALCULATE_LAYOUT event, which asks the window to take a
 
-         'bite' out of a rectangle provided by the algorithm.
 
-     @endEventTable
 
-     @library{wxadv}
 
-     @category{events}
 
-     @see wxQueryLayoutInfoEvent, wxSashLayoutWindow, wxLayoutAlgorithm.
 
- */
 
- class wxCalculateLayoutEvent : public wxEvent
 
- {
 
- public:
 
-     /**
 
-         Constructor.
 
-     */
 
-     wxCalculateLayoutEvent(wxWindowID id = 0);
 
-     /**
 
-         Returns the flags associated with this event. Not currently used.
 
-     */
 
-     int GetFlags() const;
 
-     /**
 
-         Before the event handler is entered, returns the remaining parent client area
 
-         that the window could occupy.
 
-         When the event handler returns, this should contain the remaining parent
 
-         client rectangle, after the event handler has subtracted the area that its
 
-         window occupies.
 
-     */
 
-     wxRect GetRect() const;
 
-     /**
 
-         Sets the flags associated with this event. Not currently used.
 
-     */
 
-     void SetFlags(int flags);
 
-     /**
 
-         Call this to specify the new remaining parent client area, after the space
 
-         occupied by the window has been subtracted.
 
-     */
 
-     void SetRect(const wxRect& rect);
 
- };
 
- wxEventType wxEVT_CALCULATE_LAYOUT;
 
 
  |