| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/generic/laywin.h
 
- // Purpose:     Implements a simple layout algorithm, plus
 
- //              wxSashLayoutWindow which is an example of a window with
 
- //              layout-awareness (via event handlers). This is suited to
 
- //              IDE-style window layout.
 
- // Author:      Julian Smart
 
- // Modified by:
 
- // Created:     04/01/98
 
- // Copyright:   (c) Julian Smart
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_LAYWIN_H_G_
 
- #define _WX_LAYWIN_H_G_
 
- #if wxUSE_SASH
 
-     #include "wx/sashwin.h"
 
- #endif // wxUSE_SASH
 
- #include "wx/event.h"
 
- class WXDLLIMPEXP_FWD_ADV wxQueryLayoutInfoEvent;
 
- class WXDLLIMPEXP_FWD_ADV wxCalculateLayoutEvent;
 
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_QUERY_LAYOUT_INFO, wxQueryLayoutInfoEvent );
 
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_ADV, wxEVT_CALCULATE_LAYOUT,  wxCalculateLayoutEvent );
 
- enum wxLayoutOrientation
 
- {
 
-     wxLAYOUT_HORIZONTAL,
 
-     wxLAYOUT_VERTICAL
 
- };
 
- enum wxLayoutAlignment
 
- {
 
-     wxLAYOUT_NONE,
 
-     wxLAYOUT_TOP,
 
-     wxLAYOUT_LEFT,
 
-     wxLAYOUT_RIGHT,
 
-     wxLAYOUT_BOTTOM
 
- };
 
- // Not sure this is necessary
 
- // Tell window which dimension we're sizing on
 
- #define wxLAYOUT_LENGTH_Y       0x0008
 
- #define wxLAYOUT_LENGTH_X       0x0000
 
- // Use most recently used length
 
- #define wxLAYOUT_MRU_LENGTH     0x0010
 
- // Only a query, so don't actually move it.
 
- #define wxLAYOUT_QUERY          0x0100
 
- /*
 
-  * This event is used to get information about window alignment,
 
-  * orientation and size.
 
-  */
 
- class WXDLLIMPEXP_ADV wxQueryLayoutInfoEvent: public wxEvent
 
- {
 
- public:
 
-     wxQueryLayoutInfoEvent(wxWindowID id = 0)
 
-     {
 
-         SetEventType(wxEVT_QUERY_LAYOUT_INFO);
 
-         m_requestedLength = 0;
 
-         m_flags = 0;
 
-         m_id = id;
 
-         m_alignment = wxLAYOUT_TOP;
 
-         m_orientation = wxLAYOUT_HORIZONTAL;
 
-     }
 
-     // Read by the app
 
-     void SetRequestedLength(int length) { m_requestedLength = length; }
 
-     int GetRequestedLength() const { return m_requestedLength; }
 
-     void SetFlags(int flags) { m_flags = flags; }
 
-     int GetFlags() const { return m_flags; }
 
-     // Set by the app
 
-     void SetSize(const wxSize& size) { m_size = size; }
 
-     wxSize GetSize() const { return m_size; }
 
-     void SetOrientation(wxLayoutOrientation orient) { m_orientation = orient; }
 
-     wxLayoutOrientation GetOrientation() const { return m_orientation; }
 
-     void SetAlignment(wxLayoutAlignment align) { m_alignment = align; }
 
-     wxLayoutAlignment GetAlignment() const { return m_alignment; }
 
-     virtual wxEvent *Clone() const { return new wxQueryLayoutInfoEvent(*this); }
 
- protected:
 
-     int                     m_flags;
 
-     int                     m_requestedLength;
 
-     wxSize                  m_size;
 
-     wxLayoutOrientation     m_orientation;
 
-     wxLayoutAlignment       m_alignment;
 
- private:
 
-     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxQueryLayoutInfoEvent)
 
- };
 
- typedef void (wxEvtHandler::*wxQueryLayoutInfoEventFunction)(wxQueryLayoutInfoEvent&);
 
- #define wxQueryLayoutInfoEventHandler( func ) \
 
-     wxEVENT_HANDLER_CAST( wxQueryLayoutInfoEventFunction, func )
 
- #define EVT_QUERY_LAYOUT_INFO(func) \
 
-     wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_QUERY_LAYOUT_INFO, wxID_ANY, wxID_ANY, wxQueryLayoutInfoEventHandler( func ), NULL ),
 
- /*
 
-  * This event is used to take a bite out of the available client area.
 
-  */
 
- class WXDLLIMPEXP_ADV wxCalculateLayoutEvent: public wxEvent
 
- {
 
- public:
 
-     wxCalculateLayoutEvent(wxWindowID id = 0)
 
-     {
 
-         SetEventType(wxEVT_CALCULATE_LAYOUT);
 
-         m_flags = 0;
 
-         m_id = id;
 
-     }
 
-     // Read by the app
 
-     void SetFlags(int flags) { m_flags = flags; }
 
-     int GetFlags() const { return m_flags; }
 
-     // Set by the app
 
-     void SetRect(const wxRect& rect) { m_rect = rect; }
 
-     wxRect GetRect() const { return m_rect; }
 
-     virtual wxEvent *Clone() const { return new wxCalculateLayoutEvent(*this); }
 
- protected:
 
-     int                     m_flags;
 
-     wxRect                  m_rect;
 
- private:
 
-     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxCalculateLayoutEvent)
 
- };
 
- typedef void (wxEvtHandler::*wxCalculateLayoutEventFunction)(wxCalculateLayoutEvent&);
 
- #define wxCalculateLayoutEventHandler( func ) wxEVENT_HANDLER_CAST(wxCalculateLayoutEventFunction, func)
 
- #define EVT_CALCULATE_LAYOUT(func) \
 
-     wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_CALCULATE_LAYOUT, wxID_ANY, wxID_ANY, wxCalculateLayoutEventHandler( func ), NULL ),
 
- #if wxUSE_SASH
 
- // This is window that can remember alignment/orientation, does its own layout,
 
- // and can provide sashes too. Useful for implementing docked windows with sashes in
 
- // an IDE-style interface.
 
- class WXDLLIMPEXP_ADV wxSashLayoutWindow: public wxSashWindow
 
- {
 
- public:
 
-     wxSashLayoutWindow()
 
-     {
 
-         Init();
 
-     }
 
-     wxSashLayoutWindow(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
 
-         const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = wxT("layoutWindow"))
 
-     {
 
-         Create(parent, id, pos, size, style, name);
 
-     }
 
-     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("layoutWindow"));
 
- // Accessors
 
-     inline wxLayoutAlignment GetAlignment() const { return m_alignment; }
 
-     inline wxLayoutOrientation GetOrientation() const { return m_orientation; }
 
-     inline void SetAlignment(wxLayoutAlignment align) { m_alignment = align; }
 
-     inline void SetOrientation(wxLayoutOrientation orient) { m_orientation = orient; }
 
-     // Give the window default dimensions
 
-     inline void SetDefaultSize(const wxSize& size) { m_defaultSize = size; }
 
- // Event handlers
 
-     // Called by layout algorithm to allow window to take a bit out of the
 
-     // client rectangle, and size itself if not in wxLAYOUT_QUERY mode.
 
-     void OnCalculateLayout(wxCalculateLayoutEvent& event);
 
-     // Called by layout algorithm to retrieve information about the window.
 
-     void OnQueryLayoutInfo(wxQueryLayoutInfoEvent& event);
 
- private:
 
-     void Init();
 
-     wxLayoutAlignment           m_alignment;
 
-     wxLayoutOrientation         m_orientation;
 
-     wxSize                      m_defaultSize;
 
- private:
 
-     DECLARE_DYNAMIC_CLASS_NO_COPY(wxSashLayoutWindow)
 
-     DECLARE_EVENT_TABLE()
 
- };
 
- #endif // wxUSE_SASH
 
- class WXDLLIMPEXP_FWD_CORE wxMDIParentFrame;
 
- class WXDLLIMPEXP_FWD_CORE wxFrame;
 
- // This class implements the layout algorithm
 
- class WXDLLIMPEXP_ADV wxLayoutAlgorithm: public wxObject
 
- {
 
- public:
 
-     wxLayoutAlgorithm() {}
 
- #if wxUSE_MDI_ARCHITECTURE
 
-     // The MDI client window is sized to whatever's left over.
 
-     bool LayoutMDIFrame(wxMDIParentFrame* frame, wxRect* rect = NULL);
 
- #endif // wxUSE_MDI_ARCHITECTURE
 
-     // mainWindow is sized to whatever's left over. This function for backward
 
-     // compatibility; use LayoutWindow.
 
-     bool LayoutFrame(wxFrame* frame, wxWindow* mainWindow = NULL);
 
-     // mainWindow is sized to whatever's left over.
 
-     bool LayoutWindow(wxWindow* frame, wxWindow* mainWindow = NULL);
 
- };
 
- #endif
 
-     // _WX_LAYWIN_H_G_
 
 
  |