Gave the sash and splitter windows Create and Init methods

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_2_BRANCH@7154 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2000-04-13 16:18:00 +00:00
parent 379b9ba2cf
commit 970047bbc3
8 changed files with 103 additions and 89 deletions

View File

@@ -3,7 +3,7 @@
The basic idea behind a box sizer is that windows will most often be laid out in rather The basic idea behind a box sizer is that windows will most often be laid out in rather
simple basic geomerty, typically in a row or a column or several hierachies of either. simple basic geomerty, typically in a row or a column or several hierachies of either.
As an exmaple, we will construct a dialog that will contain a text field at the top and As an example, we will construct a dialog that will contain a text field at the top and
two buttons at the bottom. This can be seen as a top-hierarchy column with the text at two buttons at the bottom. This can be seen as a top-hierarchy column with the text at
the top and buttons at the bottom and a low-hierchary row with an OK button to the left the top and buttons at the bottom and a low-hierchary row with an OK button to the left
and a Cancel button to the right. In many cases (particulary dialogs under Unix and and a Cancel button to the right. In many cases (particulary dialogs under Unix and

View File

@@ -141,7 +141,18 @@ class WXDLLEXPORT wxSashLayoutWindow: public wxSashWindow
{ {
DECLARE_CLASS(wxSashLayoutWindow) DECLARE_CLASS(wxSashLayoutWindow)
public: public:
wxSashLayoutWindow()
{
Init();
}
wxSashLayoutWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, wxSashLayoutWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "layoutWindow")
{
Create(parent, id, pos, size, style, name);
}
bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "layoutWindow"); const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "layoutWindow");
// Accessors // Accessors
@@ -161,7 +172,10 @@ public:
// Called by layout algorithm to retrieve information about the window. // Called by layout algorithm to retrieve information about the window.
void OnQueryLayoutInfo(wxQueryLayoutInfoEvent& event); void OnQueryLayoutInfo(wxQueryLayoutInfoEvent& event);
protected:
private:
void Init();
wxLayoutAlignment m_alignment; wxLayoutAlignment m_alignment;
wxLayoutOrientation m_orientation; wxLayoutOrientation m_orientation;
wxSize m_defaultSize; wxSize m_defaultSize;

View File

@@ -74,13 +74,24 @@ public:
// Public API // Public API
// Default constructor // Default constructor
wxSashWindow(); wxSashWindow()
{
Init();
}
// Normal constructor // Normal constructor
wxSashWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, wxSashWindow(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow"); const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow")
{
Init();
Create(parent, id, pos, size, style, name);
}
~wxSashWindow(); ~wxSashWindow();
bool Create(wxWindow *parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, long style = wxSW_3D|wxCLIP_CHILDREN, const wxString& name = "sashWindow");
// Set whether there's a sash in this position // Set whether there's a sash in this position
void SetSashVisible(wxSashEdgePosition edge, bool sash); void SetSashVisible(wxSashEdgePosition edge, bool sash);
@@ -151,7 +162,9 @@ public:
// Initialize colours // Initialize colours
void InitColours(); void InitColours();
protected: private:
void Init();
wxSashEdge m_sashes[4]; wxSashEdge m_sashes[4];
int m_dragMode; int m_dragMode;
wxSashEdgePosition m_draggingEdge; wxSashEdgePosition m_draggingEdge;

View File

@@ -60,16 +60,30 @@ public:
// Public API // Public API
// Default constructor // Default constructor
wxSplitterWindow(); wxSplitterWindow()
{
Init();
}
// Normal constructor // Normal constructor
wxSplitterWindow(wxWindow *parent, wxWindowID id = -1, wxSplitterWindow(wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize, const wxSize& size = wxDefaultSize,
long style = wxSP_3D|wxCLIP_CHILDREN, long style = wxSP_3D|wxCLIP_CHILDREN,
const wxString& name = "splitter"); const wxString& name = "splitter")
{
Init();
Create(parent, id, pos, size, style, name);
}
~wxSplitterWindow(); ~wxSplitterWindow();
bool Create(wxWindow *parent, wxWindowID id = -1,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxSP_3D|wxCLIP_CHILDREN,
const wxString& name = "splitter");
// Gets the only or left/top pane // Gets the only or left/top pane
wxWindow *GetWindow1() const { return m_windowOne; } wxWindow *GetWindow1() const { return m_windowOne; }
@@ -191,6 +205,10 @@ protected:
void SendUnsplitEvent(wxWindow *winRemoved); void SendUnsplitEvent(wxWindow *winRemoved);
private:
void Init();
int m_splitMode; int m_splitMode;
bool m_permitUnsplitAlways; bool m_permitUnsplitAlways;
bool m_needUpdating; // when in live mode, set the to TRUE to resize children in idle bool m_needUpdating; // when in live mode, set the to TRUE to resize children in idle

View File

@@ -90,7 +90,7 @@ DECLARE_EVENT_TABLE()
class MyCanvas: public wxScrolledWindow class MyCanvas: public wxScrolledWindow
{ {
public: public:
MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h, const wxString &name); MyCanvas(wxWindow* parent, wxWindowID id = -1, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, const wxString& name = "");
virtual ~MyCanvas(); virtual ~MyCanvas();
virtual void OnDraw(wxDC& dc); virtual void OnDraw(wxDC& dc);
@@ -170,12 +170,12 @@ MyFrame::MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, cons
wxSize sz( m_splitter->GetSize() ); wxSize sz( m_splitter->GetSize() );
wxLogMessage( "Initial splitter size: %d %d\n", (int)sz.x, (int)sz.y ); wxLogMessage( "Initial splitter size: %d %d\n", (int)sz.x, (int)sz.y );
m_leftCanvas = new MyCanvas(m_splitter, CANVAS1, 0, 0, 400, 400, "Test1" ); m_leftCanvas = new MyCanvas(m_splitter, CANVAS1, wxPoint(0, 0), wxSize(400, 400), "Test1" );
m_leftCanvas->SetBackgroundColour(*wxRED); m_leftCanvas->SetBackgroundColour(*wxRED);
m_leftCanvas->SetScrollbars(20, 20, 50, 50); m_leftCanvas->SetScrollbars(20, 20, 50, 50);
m_leftCanvas->SetCursor(wxCursor(wxCURSOR_MAGNIFIER)); m_leftCanvas->SetCursor(wxCursor(wxCURSOR_MAGNIFIER));
m_rightCanvas = new MyCanvas(m_splitter, CANVAS2, 0, 0, 400, 400, "Test2" ); m_rightCanvas = new MyCanvas(m_splitter, CANVAS2, wxPoint(0, 0), wxSize(400, 400), "Test2" );
m_rightCanvas->SetBackgroundColour(*wxCYAN); m_rightCanvas->SetBackgroundColour(*wxCYAN);
m_rightCanvas->SetScrollbars(20, 20, 50, 50); m_rightCanvas->SetScrollbars(20, 20, 50, 50);
m_rightCanvas->Show(FALSE); m_rightCanvas->Show(FALSE);
@@ -256,8 +256,8 @@ void MyFrame::UpdatePosition()
SetStatusText(str); SetStatusText(str);
} }
MyCanvas::MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h, const wxString &name ) : MyCanvas::MyCanvas(wxWindow* parent, wxWindowID id, const wxPoint& point, const wxSize& size, const wxString &name ) :
wxScrolledWindow(parent, id, wxPoint(x, y), wxSize(w, h), 0, name ) wxScrolledWindow(parent, id, point, size, 0, name )
{ {
} }

View File

@@ -41,9 +41,13 @@ BEGIN_EVENT_TABLE(wxSashLayoutWindow, wxSashWindow)
EVT_QUERY_LAYOUT_INFO(wxSashLayoutWindow::OnQueryLayoutInfo) EVT_QUERY_LAYOUT_INFO(wxSashLayoutWindow::OnQueryLayoutInfo)
END_EVENT_TABLE() END_EVENT_TABLE()
wxSashLayoutWindow::wxSashLayoutWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos, bool wxSashLayoutWindow::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos,
const wxSize& size, long style, const wxString& name): const wxSize& size, long style, const wxString& name)
wxSashWindow(parent, id, pos, size, style, name) {
return wxSashWindow::Create(parent, id, pos, size, style, name);
}
void wxSashLayoutWindow::Init()
{ {
m_orientation = wxLAYOUT_HORIZONTAL; m_orientation = wxLAYOUT_HORIZONTAL;
m_alignment = wxLAYOUT_TOP; m_alignment = wxLAYOUT_TOP;

View File

@@ -45,28 +45,19 @@ BEGIN_EVENT_TABLE(wxSashWindow, wxWindow)
EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent) EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent)
END_EVENT_TABLE() END_EVENT_TABLE()
wxSashWindow::wxSashWindow() bool wxSashWindow::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos,
const wxSize& size, long style, const wxString& name)
{ {
m_draggingEdge = wxSASH_NONE; return wxWindow::Create(parent, id, pos, size, style, name);
m_dragMode = wxSASH_DRAG_NONE;
m_oldX = 0;
m_oldY = 0;
m_firstX = 0;
m_firstY = 0;
m_borderSize = 3 ;
m_extraBorderSize = 0;
m_sashCursorWE = NULL;
m_sashCursorNS = NULL;
m_minimumPaneSizeX = 0;
m_minimumPaneSizeY = 0;
m_maximumPaneSizeX = 10000;
m_maximumPaneSizeY = 10000;
} }
wxSashWindow::wxSashWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos, wxSashWindow::~wxSashWindow()
const wxSize& size, long style, const wxString& name) {
:wxWindow(parent, id, pos, size, style, name) delete m_sashCursorWE;
delete m_sashCursorNS;
}
void wxSashWindow::Init()
{ {
m_draggingEdge = wxSASH_NONE; m_draggingEdge = wxSASH_NONE;
m_dragMode = wxSASH_DRAG_NONE; m_dragMode = wxSASH_DRAG_NONE;
@@ -87,12 +78,6 @@ wxSashWindow::wxSashWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos,
InitColours(); InitColours();
} }
wxSashWindow::~wxSashWindow()
{
delete m_sashCursorWE;
delete m_sashCursorNS;
}
void wxSashWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) void wxSashWindow::OnPaint(wxPaintEvent& WXUNUSED(event))
{ {
wxPaintDC dc(this); wxPaintDC dc(this);

View File

@@ -53,42 +53,39 @@ BEGIN_EVENT_TABLE(wxSplitterWindow, wxWindow)
EVT_SPLITTER_UNSPLIT(-1, wxSplitterWindow::OnUnsplitEvent) EVT_SPLITTER_UNSPLIT(-1, wxSplitterWindow::OnUnsplitEvent)
END_EVENT_TABLE() END_EVENT_TABLE()
wxSplitterWindow::wxSplitterWindow() bool wxSplitterWindow::Create(wxWindow *parent, wxWindowID id,
{
m_splitMode = wxSPLIT_VERTICAL;
m_permitUnsplitAlways = FALSE;
m_windowOne = (wxWindow *) NULL;
m_windowTwo = (wxWindow *) NULL;
m_dragMode = wxSPLIT_DRAG_NONE;
m_oldX = 0;
m_oldY = 0;
m_firstX = 0;
m_firstY = 0;
m_sashSize = 7;
m_borderSize = 2;
m_sashPosition = 0;
m_sashCursorWE = (wxCursor *) NULL;
m_sashCursorNS = (wxCursor *) NULL;
m_sashTrackerPen = (wxPen *) NULL;
m_lightShadowPen = (wxPen *) NULL;
m_mediumShadowPen = (wxPen *) NULL;
m_darkShadowPen = (wxPen *) NULL;
m_faceBrush = (wxBrush *) NULL;
m_facePen = (wxPen *) NULL;
m_hilightPen = (wxPen *) NULL;
m_minimumPaneSize = 0;
m_needUpdating = FALSE;
}
wxSplitterWindow::wxSplitterWindow(wxWindow *parent, wxWindowID id,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size, const wxSize& size,
long style, long style,
const wxString& name) const wxString& name)
: wxWindow(parent, id, pos, size, style, name) {
if (!wxWindow::Create(parent, id, pos, size, style, name))
return FALSE;
m_permitUnsplitAlways = (style & wxSP_PERMIT_UNSPLIT) != 0;
if ( style & wxSP_3D )
{
m_borderSize = 2;
m_sashSize = 7;
}
else if ( style & wxSP_BORDER )
{
m_borderSize = 1;
m_sashSize = 3;
}
else
{
m_borderSize = 0;
m_sashSize = 3;
}
return TRUE;
}
void wxSplitterWindow::Init()
{ {
m_splitMode = wxSPLIT_VERTICAL; m_splitMode = wxSPLIT_VERTICAL;
m_permitUnsplitAlways = (style & wxSP_PERMIT_UNSPLIT) != 0; m_permitUnsplitAlways = TRUE;
m_windowOne = (wxWindow *) NULL; m_windowOne = (wxWindow *) NULL;
m_windowTwo = (wxWindow *) NULL; m_windowTwo = (wxWindow *) NULL;
m_dragMode = wxSPLIT_DRAG_NONE; m_dragMode = wxSPLIT_DRAG_NONE;
@@ -110,28 +107,11 @@ wxSplitterWindow::wxSplitterWindow(wxWindow *parent, wxWindowID id,
m_facePen = (wxPen *) NULL; m_facePen = (wxPen *) NULL;
m_hilightPen = (wxPen *) NULL; m_hilightPen = (wxPen *) NULL;
if ( style & wxSP_3D ) m_borderSize = 0;
{ m_sashSize = 3;
m_borderSize = 2;
m_sashSize = 7;
}
else if ( style & wxSP_BORDER )
{
m_borderSize = 1;
m_sashSize = 3;
}
else
{
m_borderSize = 0;
m_sashSize = 3;
}
// Eventually, we'll respond to colour change messages
InitColours(); InitColours();
// For debugging purposes, to see the background.
// SetBackground(wxBLUE_BRUSH);
m_needUpdating = FALSE; m_needUpdating = FALSE;
} }