From: Ron Lee Date: Tue, 14 Mar 2000 19:30:04 +0000 (+0000) Subject: renamed splitter sample X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/6718d773ad43f5d7708b14de338131e72f20e99a?ds=inline renamed splitter sample git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@6713 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/splitter/Makefile.in b/samples/splitter/Makefile.in index 53fb90f516..b00d31b678 100644 --- a/samples/splitter/Makefile.in +++ b/samples/splitter/Makefile.in @@ -1,22 +1,13 @@ -# -# File: makefile.unx -# Author: Julian Smart -# Created: 1998 -# Updated: -# Copyright: (c) 1998 Julian Smart -# -# "%W% %G%" -# -# Makefile for splitter example (UNIX). +# Purpose: makefile for splitter example (UNIX). +# Created: 2000-03-15 top_srcdir = @top_srcdir@/.. top_builddir = ../.. program_dir = samples/splitter -PROGRAM=test +PROGRAM=splitter OBJECTS=$(PROGRAM).o include ../../src/makeprog.env - diff --git a/samples/splitter/makefile.b32 b/samples/splitter/makefile.b32 index 95ddc80d76..924917ef7e 100644 --- a/samples/splitter/makefile.b32 +++ b/samples/splitter/makefile.b32 @@ -1,15 +1,9 @@ -# -# File: makefile.b32 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: -# -# Makefile : Builds sample for 32-bit BC++ +# Purpose: makefile for splitter example (BC++ 32bit) +# Created: 2000-03-15 WXDIR = $(WXWIN) -TARGET=test +TARGET=splitter OBJECTS = $(TARGET).obj !include $(WXDIR)\src\makeprog.b32 diff --git a/samples/splitter/makefile.bcc b/samples/splitter/makefile.bcc index 669f01905a..35086633dd 100644 --- a/samples/splitter/makefile.bcc +++ b/samples/splitter/makefile.bcc @@ -1,10 +1,5 @@ -# -# File: makefile.bcc -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Builds a BC++ 16-bit sample +# Purpose: makefile for splitter example (BC++ 16bit) +# Created: 2000-03-15 !if "$(WXWIN)" == "" !error You must define the WXWIN variable in autoexec.bat, e.g. WXWIN=c:\wx @@ -12,7 +7,7 @@ WXDIR = $(WXWIN) -TARGET=test +TARGET=splitter OBJECTS=$(TARGET).obj !include $(WXDIR)\src\makeprog.bcc diff --git a/samples/splitter/makefile.dos b/samples/splitter/makefile.dos index 13e3a4ce8e..f891ef1aee 100644 --- a/samples/splitter/makefile.dos +++ b/samples/splitter/makefile.dos @@ -1,17 +1,10 @@ -# -# File: makefile.dos -# Author: Julian Smart -# Created: 1998 -# Updated: -# -# Makefile : Builds 16-bit sample, VC++ 1.5 -# Use FINAL=1 argument to nmake to build final version with no debugging -# info +# Purpose: makefile for splitter example (VC++ 1.5x) +# Created: 2000-03-15 WXDIR = $(WXWIN) -TARGET=test -OBJECTS = $(TARGET).obj +TARGET=splitter +OBJECTS=$(TARGET).obj !include $(WXDIR)\src\makeprog.msc diff --git a/samples/splitter/makefile.g95 b/samples/splitter/makefile.g95 index b4a920f047..fc4af58f1d 100644 --- a/samples/splitter/makefile.g95 +++ b/samples/splitter/makefile.g95 @@ -1,16 +1,10 @@ -# -# File: makefile.g95 -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart, 1999 -# -# Makefile for wxWindows sample (Cygwin/Mingw32). +# Purpose: makefile for splitter example (Cygwin/Mingw32) +# Created: #03.01.00 WXDIR = ../.. -TARGET=test +TARGET=splitter OBJECTS = $(TARGET).o -include $(WXDIR)/src/makeprog.g95 +include $(WXDIR)\src\makeprog.g95 diff --git a/samples/splitter/makefile.sc b/samples/splitter/makefile.sc new file mode 100644 index 0000000000..6719c1b7cf --- /dev/null +++ b/samples/splitter/makefile.sc @@ -0,0 +1,37 @@ +# Purpose: makefile for splitter example (Symantec C++) +# Created: 2000-03-15 + +WXDIR = $(WXWIN) +WXLIB = $(WXDIR)\lib\wx.lib +INCDIR = $(WXDIR)\include +INCLUDE=$(INCDIR) +TARGET=splitter + +include $(WXDIR)\src\makesc.env + +splitter.exe: splitter.obj $(DEFFILE) splitter.res + *$(CC) $(LDFLAGS) -o$@ $** $(LIBS) + *$(RC) -k splitter.res + +sc32.def: + echo EXETYPE NT > sc32.def + echo SUBSYSTEM WINDOWS >> sc32.def + +sc16.def: + echo NAME $(TARGET) > sc16.def + echo EXETYPE WINDOWS >> sc16.def + echo STUB 'WINSTUB.EXE' >> sc16.def + echo CODE PRELOAD MOVEABLE DISCARDABLE >> sc16.def + echo DATA PRELOAD MOVEABLE MULTIPLE >> sc16.def + echo HEAPSIZE 1024 >> sc16.def + echo STACKSIZE 8192 >> sc16.def + +clean: + -del *.obj + -del *.exe + -del *.res + -del *.map + -del *.rws + -del sc32.def + -del sc16.def + diff --git a/samples/splitter/makefile.sl b/samples/splitter/makefile.sl new file mode 100644 index 0000000000..986e12eab9 --- /dev/null +++ b/samples/splitter/makefile.sl @@ -0,0 +1,14 @@ +# Purpose: makefile for splitter example (Salford C++) +# Created: 2000-03-15 + +PROGRAM = splitter +OBJECTS = $(PROGRAM).obj + +include ..\..\src\makeprog.sl + +all: wx $(TARGET) + +wx: + cd $(WXDIR)\src\msw ^ mk32 -f makefile.sl all + cd $(WXDIR)\samples\splitter + diff --git a/samples/splitter/makefile.twn b/samples/splitter/makefile.twn new file mode 100644 index 0000000000..b927fea871 --- /dev/null +++ b/samples/splitter/makefile.twn @@ -0,0 +1,35 @@ +# Purpose: makefile for splitter example (TWIN) +# Created: 2000-03-15 + +WXDIR = ../.. + +# All common UNIX compiler flags and options are now in +# this central makefile. +include $(WXDIR)/src/maketwin.env + +OBJECTS = $(OBJDIR)/splitter.$(OBJSUFF) $(OBJDIR)/splitter.$(OBJSUFF) + +all: $(OBJDIR) splitter$(GUISUFFIX)$(EXESUFF) + +wx: + +$(OBJDIR): + mkdir $(OBJDIR) + +splitter$(GUISUFFIX)$(EXESUFF): $(OBJECTS) $(WXLIB) + $(CC) $(LDFLAGS) -o splitter$(GUISUFFIX)$(EXESUFF) $(OBJECTS) $(LDLIBS) + +$(OBJDIR)/splitter.$(OBJSUFF): splitter.$(SRCSUFF) + $(CC) -c $(CPPFLAGS) -o $@ splitter.$(SRCSUFF) + +splitter.c: splitter.rc + $(RESCOMP) $(RCINPUTSWITCH) splitter.rc $(RCOUTPUTSWITCH) splitter.c $(RESFLAGS) + +$(OBJDIR)/splitter.$(OBJSUFF): splitter.c + $(CC) -c $(CPPFLAGS) -o $@ splitter.c + +#$(OBJDIR)/splitter.o: splitter.rc +# $(RESCOMP) $(RCINPUTSWITCH) splitter.rc $(RCOUTPUTSWITCH) $(OBJDIR)/splitter.o $(RESFLAGS) + +clean: + rm -f $(OBJECTS) splitter$(GUISUFFIX).exe core *.rsc *.res diff --git a/samples/splitter/makefile.unx b/samples/splitter/makefile.unx index 21cab3c677..6d25508915 100644 --- a/samples/splitter/makefile.unx +++ b/samples/splitter/makefile.unx @@ -1,21 +1,9 @@ -# -# File: Makefile for samples -# Author: Robert Roebling -# Created: 1999 -# Updated: -# Copyright: (c) 1998 Robert Roebling -# -# This makefile requires a Unix version of wxWindows -# to be installed on your system. This is most often -# done typing "make install" when using the complete -# sources of wxWindows or by installing the two -# RPM packages wxGTK.XXX.rpm and wxGTK-devel.XXX.rpm -# under Linux. -# +# Purpose: makefile for splitter example (Unix) +# Created: 2000-03-15 CC = gcc -PROGRAM = test +PROGRAM = splitter OBJECTS = $(PROGRAM).o @@ -31,5 +19,5 @@ all: $(PROGRAM) $(PROGRAM): $(OBJECTS) $(CC) -o $(PROGRAM) $(OBJECTS) `wx-config --libs` -clean: +clean: rm -f *.o $(PROGRAM) diff --git a/samples/splitter/makefile.vc b/samples/splitter/makefile.vc index 4ada748eda..04b0db09fe 100644 --- a/samples/splitter/makefile.vc +++ b/samples/splitter/makefile.vc @@ -1,17 +1,10 @@ -# -# File: makefile.vc -# Author: Julian Smart -# Created: 1999 -# Updated: -# Copyright: (c) Julian Smart -# -# Makefile : Builds sample (VC++, WIN32) -# Use FINAL=1 argument to nmake to build final version with no debug info. +# Purpose: makefile for splitter example (VC++ 32bit) +# Created: 2000-03-15 # Set WXDIR for your system WXDIR = $(WXWIN) -PROGRAM=test +PROGRAM=splitter OBJECTS = $(PROGRAM).obj !include $(WXDIR)\src\makeprog.vc diff --git a/samples/splitter/makefile.wat b/samples/splitter/makefile.wat index 81a83e42a9..a923a2c3df 100644 --- a/samples/splitter/makefile.wat +++ b/samples/splitter/makefile.wat @@ -1,13 +1,9 @@ -# -# Makefile for WATCOM -# -# Created by Julian Smart, January 1999 -# -# +# Purpose: makefile for splitter example (Watcom) +# Created: 2000-03-15 WXDIR = $(%WXWIN) -PROGRAM = test +PROGRAM = splitter OBJECTS = $(PROGRAM).obj !include $(WXDIR)\src\makeprog.wat diff --git a/samples/splitter/splitter.cpp b/samples/splitter/splitter.cpp new file mode 100644 index 0000000000..054e799a9c --- /dev/null +++ b/samples/splitter/splitter.cpp @@ -0,0 +1,279 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: splitter.cpp +// Purpose: wxSplitterWindow sample +// Author: Julian Smart +// Modified by: +// Created: 04/01/98 +// RCS-ID: $Id$ +// Copyright: (c) Julian Smart and Markus Holzem +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx/wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#ifndef WX_PRECOMP +#include "wx/wx.h" +#endif + +#include "wx/splitter.h" + +class MyApp; +class MyFrame; +class MyCanvas; + +class MyApp: public wxApp +{ +public: + bool OnInit(); +}; + +class MySplitterWindow : public wxSplitterWindow +{ +public: + MySplitterWindow(wxFrame *parent, wxWindowID id) + : wxSplitterWindow(parent, id, wxDefaultPosition, wxDefaultSize, wxSP_3D | wxSP_LIVE_UPDATE) + { + m_frame = parent; + } + + virtual bool OnSashPositionChange(int newSashPosition) + { + if ( !wxSplitterWindow::OnSashPositionChange(newSashPosition) ) + return FALSE; + + wxString str; + str.Printf( _T("Sash position = %d"), newSashPosition); + m_frame->SetStatusText(str); + + return TRUE; + } + +private: + wxFrame *m_frame; +}; + +class MyFrame: public wxFrame +{ +public: + MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, const wxSize& size); + virtual ~MyFrame(); + + // Menu commands + void SplitHorizontal(wxCommandEvent& event); + void SplitVertical(wxCommandEvent& event); + void Unsplit(wxCommandEvent& event); + void SetMinSize(wxCommandEvent& event); + void Quit(wxCommandEvent& event); + + // Menu command update functions + void UpdateUIHorizontal(wxUpdateUIEvent& event); + void UpdateUIVertical(wxUpdateUIEvent& event); + void UpdateUIUnsplit(wxUpdateUIEvent& event); + +private: + void UpdatePosition(); + + wxMenu* fileMenu; + wxMenuBar* menuBar; + MyCanvas* m_leftCanvas; + MyCanvas* m_rightCanvas; + MySplitterWindow* m_splitter; + +DECLARE_EVENT_TABLE() +}; + +class MyCanvas: public wxScrolledWindow +{ +public: + MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h, const wxString &name); + virtual ~MyCanvas(); + + virtual void OnDraw(wxDC& dc); + +DECLARE_EVENT_TABLE() +}; + +BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) +END_EVENT_TABLE() + +// ID for the menu commands +enum +{ + SPLIT_QUIT, + SPLIT_HORIZONTAL, + SPLIT_VERTICAL, + SPLIT_UNSPLIT, + SPLIT_SETMINSIZE +}; + +// Window ids +#define SPLITTER_WINDOW 100 +#define SPLITTER_FRAME 101 +#define CANVAS1 102 +#define CANVAS2 103 + +IMPLEMENT_APP(MyApp) + +bool MyApp::OnInit(void) +{ + MyFrame* frame = new MyFrame((wxFrame *) NULL, "wxSplitterWindow Example", + wxPoint(50, 50), wxSize(420, 300)); + + // Show the frame + frame->Show(TRUE); + + SetTopWindow(frame); + + return TRUE; +} + +BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_MENU(SPLIT_VERTICAL, MyFrame::SplitVertical) + EVT_MENU(SPLIT_HORIZONTAL, MyFrame::SplitHorizontal) + EVT_MENU(SPLIT_UNSPLIT, MyFrame::Unsplit) + EVT_MENU(SPLIT_QUIT, MyFrame::Quit) + EVT_MENU(SPLIT_SETMINSIZE, MyFrame::SetMinSize) + + EVT_UPDATE_UI(SPLIT_VERTICAL, MyFrame::UpdateUIVertical) + EVT_UPDATE_UI(SPLIT_HORIZONTAL, MyFrame::UpdateUIHorizontal) + EVT_UPDATE_UI(SPLIT_UNSPLIT, MyFrame::UpdateUIUnsplit) +END_EVENT_TABLE() + +// My frame constructor +MyFrame::MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, const wxSize& size): + wxFrame(frame, SPLITTER_FRAME, title, pos, size) +{ + CreateStatusBar(2); + + // Make a menubar + fileMenu = new wxMenu; + fileMenu->Append(SPLIT_VERTICAL, "Split &Vertically\tCtrl-V", "Split vertically"); + fileMenu->Append(SPLIT_HORIZONTAL, "Split &Horizontally\tCtrl-H", "Split horizontally"); + fileMenu->Append(SPLIT_UNSPLIT, "&Unsplit\tCtrl-U", "Unsplit"); + fileMenu->AppendSeparator(); + fileMenu->Append(SPLIT_SETMINSIZE, "Set &min size", "Set minimum pane size"); + fileMenu->AppendSeparator(); + fileMenu->Append(SPLIT_QUIT, "E&xit\tAlt-X", "Exit"); + + menuBar = new wxMenuBar; + menuBar->Append(fileMenu, "&File"); + + SetMenuBar(menuBar); + + m_splitter = new MySplitterWindow(this, SPLITTER_WINDOW); + + wxSize sz( m_splitter->GetSize() ); + 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->SetBackgroundColour(*wxRED); + m_leftCanvas->SetScrollbars(20, 20, 50, 50); + m_leftCanvas->SetCursor(wxCursor(wxCURSOR_MAGNIFIER)); + + m_rightCanvas = new MyCanvas(m_splitter, CANVAS2, 0, 0, 400, 400, "Test2" ); + m_rightCanvas->SetBackgroundColour(*wxCYAN); + m_rightCanvas->SetScrollbars(20, 20, 50, 50); + m_rightCanvas->Show(FALSE); + + m_splitter->Initialize(m_leftCanvas); + SetStatusText("Min pane size = 0", 1); +} + +MyFrame::~MyFrame() +{ +} + +void MyFrame::Quit(wxCommandEvent& WXUNUSED(event) ) +{ + Close(TRUE); +} + +void MyFrame::SplitHorizontal(wxCommandEvent& WXUNUSED(event) ) +{ + if ( m_splitter->IsSplit() ) + m_splitter->Unsplit(); + m_leftCanvas->Show(TRUE); + m_rightCanvas->Show(TRUE); + m_splitter->SplitHorizontally( m_leftCanvas, m_rightCanvas ); + UpdatePosition(); +} + +void MyFrame::SplitVertical(wxCommandEvent& WXUNUSED(event) ) +{ + if ( m_splitter->IsSplit() ) + m_splitter->Unsplit(); + m_leftCanvas->Show(TRUE); + m_rightCanvas->Show(TRUE); + m_splitter->SplitVertically( m_leftCanvas, m_rightCanvas ); + UpdatePosition(); +} + +void MyFrame::Unsplit(wxCommandEvent& WXUNUSED(event) ) +{ + if ( m_splitter->IsSplit() ) + m_splitter->Unsplit(); + SetStatusText("No splitter"); +} + +void MyFrame::SetMinSize(wxCommandEvent& WXUNUSED(event) ) +{ + wxString str; + str.Printf( _T("%d"), m_splitter->GetMinimumPaneSize()); + str = wxGetTextFromUser("Enter minimal size for panes:", "", str, this); + if ( str.IsEmpty() ) + return; + + int minsize = wxStrtol( str, (wxChar**)NULL, 10 ); + m_splitter->SetMinimumPaneSize(minsize); + str.Printf( _T("Min pane size = %d"), minsize); + SetStatusText(str, 1); +} + +void MyFrame::UpdateUIHorizontal(wxUpdateUIEvent& event) +{ + event.Enable( ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_HORIZONTAL) ) ); +} + +void MyFrame::UpdateUIVertical(wxUpdateUIEvent& event) +{ + event.Enable( ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_VERTICAL) ) ); +} + +void MyFrame::UpdateUIUnsplit(wxUpdateUIEvent& event) +{ + event.Enable( m_splitter->IsSplit() ); +} + +void MyFrame::UpdatePosition() +{ + wxString str; + str.Printf( _("Sash position = %d"), m_splitter->GetSashPosition()); + SetStatusText(str); +} + +MyCanvas::MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h, const wxString &name ) : + wxScrolledWindow(parent, id, wxPoint(x, y), wxSize(w, h), 0, name ) +{ +} + +MyCanvas::~MyCanvas() +{ +} + +void MyCanvas::OnDraw(wxDC& dc) +{ + dc.SetPen(*wxBLACK_PEN); + dc.DrawLine(0, 0, 100, 100); + + dc.SetBackgroundMode(wxTRANSPARENT); + dc.DrawText("Testing", 50, 50); + + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxGREEN_BRUSH); + dc.DrawRectangle(120, 120, 100, 80); +} diff --git a/samples/splitter/splitter.def b/samples/splitter/splitter.def new file mode 100644 index 0000000000..fdd0c92ef2 --- /dev/null +++ b/samples/splitter/splitter.def @@ -0,0 +1,8 @@ +NAME Splitter +DESCRIPTION 'wxSplitterWindow Test' +EXETYPE WINDOWS +STUB 'WINSTUB.EXE' +CODE PRELOAD MOVEABLE DISCARDABLE +DATA PRELOAD MOVEABLE MULTIPLE +HEAPSIZE 1024 +STACKSIZE 16192 diff --git a/samples/splitter/splitter.rc b/samples/splitter/splitter.rc new file mode 100644 index 0000000000..dde0d5ae7f --- /dev/null +++ b/samples/splitter/splitter.rc @@ -0,0 +1,4 @@ +mondrian ICON "mondrian.ico" + +#include "wx/msw/wx.rc" + diff --git a/samples/splitter/test.cpp b/samples/splitter/test.cpp deleted file mode 100644 index c97351eb8d..0000000000 --- a/samples/splitter/test.cpp +++ /dev/null @@ -1,279 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: m_splitter.cpp -// Purpose: wxSplitterWindow sample -// Author: Julian Smart -// Modified by: -// Created: 04/01/98 -// RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license -///////////////////////////////////////////////////////////////////////////// - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/splitter.h" - -class MyApp; -class MyFrame; -class MyCanvas; - -class MyApp: public wxApp -{ -public: - bool OnInit(); -}; - -class MySplitterWindow : public wxSplitterWindow -{ -public: - MySplitterWindow(wxFrame *parent, wxWindowID id) - : wxSplitterWindow(parent, id, wxDefaultPosition, wxDefaultSize, wxSP_3D | wxSP_LIVE_UPDATE) - { - m_frame = parent; - } - - virtual bool OnSashPositionChange(int newSashPosition) - { - if ( !wxSplitterWindow::OnSashPositionChange(newSashPosition) ) - return FALSE; - - wxString str; - str.Printf( _T("Sash position = %d"), newSashPosition); - m_frame->SetStatusText(str); - - return TRUE; - } - -private: - wxFrame *m_frame; -}; - -class MyFrame: public wxFrame -{ -public: - MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, const wxSize& size); - virtual ~MyFrame(); - - // Menu commands - void SplitHorizontal(wxCommandEvent& event); - void SplitVertical(wxCommandEvent& event); - void Unsplit(wxCommandEvent& event); - void SetMinSize(wxCommandEvent& event); - void Quit(wxCommandEvent& event); - - // Menu command update functions - void UpdateUIHorizontal(wxUpdateUIEvent& event); - void UpdateUIVertical(wxUpdateUIEvent& event); - void UpdateUIUnsplit(wxUpdateUIEvent& event); - -private: - void UpdatePosition(); - - wxMenu* fileMenu; - wxMenuBar* menuBar; - MyCanvas* m_leftCanvas; - MyCanvas* m_rightCanvas; - MySplitterWindow* m_splitter; - -DECLARE_EVENT_TABLE() -}; - -class MyCanvas: public wxScrolledWindow -{ -public: - MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h, const wxString &name); - virtual ~MyCanvas(); - - virtual void OnDraw(wxDC& dc); - -DECLARE_EVENT_TABLE() -}; - -BEGIN_EVENT_TABLE(MyCanvas, wxScrolledWindow) -END_EVENT_TABLE() - -// ID for the menu commands -enum -{ - SPLIT_QUIT, - SPLIT_HORIZONTAL, - SPLIT_VERTICAL, - SPLIT_UNSPLIT, - SPLIT_SETMINSIZE -}; - -// Window ids -#define SPLITTER_WINDOW 100 -#define SPLITTER_FRAME 101 -#define CANVAS1 102 -#define CANVAS2 103 - -IMPLEMENT_APP(MyApp) - -bool MyApp::OnInit(void) -{ - MyFrame* frame = new MyFrame((wxFrame *) NULL, "wxSplitterWindow Example", - wxPoint(50, 50), wxSize(420, 300)); - - // Show the frame - frame->Show(TRUE); - - SetTopWindow(frame); - - return TRUE; -} - -BEGIN_EVENT_TABLE(MyFrame, wxFrame) - EVT_MENU(SPLIT_VERTICAL, MyFrame::SplitVertical) - EVT_MENU(SPLIT_HORIZONTAL, MyFrame::SplitHorizontal) - EVT_MENU(SPLIT_UNSPLIT, MyFrame::Unsplit) - EVT_MENU(SPLIT_QUIT, MyFrame::Quit) - EVT_MENU(SPLIT_SETMINSIZE, MyFrame::SetMinSize) - - EVT_UPDATE_UI(SPLIT_VERTICAL, MyFrame::UpdateUIVertical) - EVT_UPDATE_UI(SPLIT_HORIZONTAL, MyFrame::UpdateUIHorizontal) - EVT_UPDATE_UI(SPLIT_UNSPLIT, MyFrame::UpdateUIUnsplit) -END_EVENT_TABLE() - -// My frame constructor -MyFrame::MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, const wxSize& size): - wxFrame(frame, SPLITTER_FRAME, title, pos, size) -{ - CreateStatusBar(2); - - // Make a menubar - fileMenu = new wxMenu; - fileMenu->Append(SPLIT_VERTICAL, "Split &Vertically\tCtrl-V", "Split vertically"); - fileMenu->Append(SPLIT_HORIZONTAL, "Split &Horizontally\tCtrl-H", "Split horizontally"); - fileMenu->Append(SPLIT_UNSPLIT, "&Unsplit\tCtrl-U", "Unsplit"); - fileMenu->AppendSeparator(); - fileMenu->Append(SPLIT_SETMINSIZE, "Set &min size", "Set minimum pane size"); - fileMenu->AppendSeparator(); - fileMenu->Append(SPLIT_QUIT, "E&xit\tAlt-X", "Exit"); - - menuBar = new wxMenuBar; - menuBar->Append(fileMenu, "&File"); - - SetMenuBar(menuBar); - - m_splitter = new MySplitterWindow(this, SPLITTER_WINDOW); - - wxSize sz( m_splitter->GetSize() ); - 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->SetBackgroundColour(*wxRED); - m_leftCanvas->SetScrollbars(20, 20, 50, 50); - m_leftCanvas->SetCursor(wxCursor(wxCURSOR_MAGNIFIER)); - - m_rightCanvas = new MyCanvas(m_splitter, CANVAS2, 0, 0, 400, 400, "Test2" ); - m_rightCanvas->SetBackgroundColour(*wxCYAN); - m_rightCanvas->SetScrollbars(20, 20, 50, 50); - m_rightCanvas->Show(FALSE); - - m_splitter->Initialize(m_leftCanvas); - SetStatusText("Min pane size = 0", 1); -} - -MyFrame::~MyFrame() -{ -} - -void MyFrame::Quit(wxCommandEvent& WXUNUSED(event) ) -{ - Close(TRUE); -} - -void MyFrame::SplitHorizontal(wxCommandEvent& WXUNUSED(event) ) -{ - if ( m_splitter->IsSplit() ) - m_splitter->Unsplit(); - m_leftCanvas->Show(TRUE); - m_rightCanvas->Show(TRUE); - m_splitter->SplitHorizontally( m_leftCanvas, m_rightCanvas ); - UpdatePosition(); -} - -void MyFrame::SplitVertical(wxCommandEvent& WXUNUSED(event) ) -{ - if ( m_splitter->IsSplit() ) - m_splitter->Unsplit(); - m_leftCanvas->Show(TRUE); - m_rightCanvas->Show(TRUE); - m_splitter->SplitVertically( m_leftCanvas, m_rightCanvas ); - UpdatePosition(); -} - -void MyFrame::Unsplit(wxCommandEvent& WXUNUSED(event) ) -{ - if ( m_splitter->IsSplit() ) - m_splitter->Unsplit(); - SetStatusText("No splitter"); -} - -void MyFrame::SetMinSize(wxCommandEvent& WXUNUSED(event) ) -{ - wxString str; - str.Printf( _T("%d"), m_splitter->GetMinimumPaneSize()); - str = wxGetTextFromUser("Enter minimal size for panes:", "", str, this); - if ( str.IsEmpty() ) - return; - - int minsize = wxStrtol( str, (wxChar**)NULL, 10 ); - m_splitter->SetMinimumPaneSize(minsize); - str.Printf( _T("Min pane size = %d"), minsize); - SetStatusText(str, 1); -} - -void MyFrame::UpdateUIHorizontal(wxUpdateUIEvent& event) -{ - event.Enable( ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_HORIZONTAL) ) ); -} - -void MyFrame::UpdateUIVertical(wxUpdateUIEvent& event) -{ - event.Enable( ( (!m_splitter->IsSplit()) || (m_splitter->GetSplitMode() != wxSPLIT_VERTICAL) ) ); -} - -void MyFrame::UpdateUIUnsplit(wxUpdateUIEvent& event) -{ - event.Enable( m_splitter->IsSplit() ); -} - -void MyFrame::UpdatePosition() -{ - wxString str; - str.Printf( _("Sash position = %d"), m_splitter->GetSashPosition()); - SetStatusText(str); -} - -MyCanvas::MyCanvas(wxWindow* parent, wxWindowID id, int x, int y, int w, int h, const wxString &name ) : - wxScrolledWindow(parent, id, wxPoint(x, y), wxSize(w, h), 0, name ) -{ -} - -MyCanvas::~MyCanvas() -{ -} - -void MyCanvas::OnDraw(wxDC& dc) -{ - dc.SetPen(*wxBLACK_PEN); - dc.DrawLine(0, 0, 100, 100); - - dc.SetBackgroundMode(wxTRANSPARENT); - dc.DrawText("Testing", 50, 50); - - dc.SetPen(*wxRED_PEN); - dc.SetBrush(*wxGREEN_BRUSH); - dc.DrawRectangle(120, 120, 100, 80); -} diff --git a/samples/splitter/test.def b/samples/splitter/test.def deleted file mode 100644 index 3dd3b7a033..0000000000 --- a/samples/splitter/test.def +++ /dev/null @@ -1,8 +0,0 @@ -NAME Test -DESCRIPTION 'wxTableWindow Test' -EXETYPE WINDOWS -STUB 'WINSTUB.EXE' -CODE PRELOAD MOVEABLE DISCARDABLE -DATA PRELOAD MOVEABLE MULTIPLE -HEAPSIZE 1024 -STACKSIZE 16192 diff --git a/samples/splitter/test.rc b/samples/splitter/test.rc deleted file mode 100644 index dde0d5ae7f..0000000000 --- a/samples/splitter/test.rc +++ /dev/null @@ -1,4 +0,0 @@ -mondrian ICON "mondrian.ico" - -#include "wx/msw/wx.rc" -