]> git.saurik.com Git - wxWidgets.git/blame - samples/scrollsub/scrollsub.cpp
Distrib changes.
[wxWidgets.git] / samples / scrollsub / scrollsub.cpp
CommitLineData
ecab4dba
RR
1/*
2 * Program: scrollsub
3 *
4 * Author: Robert Roebling
5 *
6 * Copyright: (C) 1999, Robert Roebling
7 *
8 */
9
10// For compilers that support precompilation, includes "wx/wx.h".
11#include "wx/wxprec.h"
12
13#ifdef __BORLANDC__
14#pragma hdrstop
15#endif
16
17#ifndef WX_PRECOMP
18#include "wx/wx.h"
19#endif
20
21#include "wx/image.h"
22#include "wx/listctrl.h"
23#include "wx/sizer.h"
24#include "wx/log.h"
25
26
27// derived classes
28
29class MyFrame;
30class MyScrolledWindow;
31class MyCanvas;
32class MyApp;
33
34// MyScrolledWindow
35
36class MyScrolledWindow: public wxScrolledWindow
37{
38public:
39 MyScrolledWindow() {}
40 MyScrolledWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
41 ~MyScrolledWindow();
42 void OnPaint( wxPaintEvent &event );
43
44private:
45 MyCanvas *m_canvas;
46
47 DECLARE_DYNAMIC_CLASS(MyScrolledWindow)
48 DECLARE_EVENT_TABLE()
49};
50
51// MyCanvas
52
53class MyCanvas: public wxPanel
54{
55public:
56 MyCanvas() {}
57 MyCanvas( wxScrolledWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
58 ~MyCanvas();
59 void OnPaint( wxPaintEvent &event );
60
61private:
62 wxScrolledWindow *m_owner;
63
64 DECLARE_DYNAMIC_CLASS(MyCanvas)
65 DECLARE_EVENT_TABLE()
66};
67
68// MyFrame
69
70class MyFrame: public wxFrame
71{
72public:
73 MyFrame();
74
75 void OnAbout( wxCommandEvent &event );
76 void OnQuit( wxCommandEvent &event );
77
78 wxScrolledWindow *m_scrolled;
79 wxTextCtrl *m_log;
80
81private:
82 DECLARE_DYNAMIC_CLASS(MyFrame)
83 DECLARE_EVENT_TABLE()
84};
85
86// MyApp
87
88class MyApp: public wxApp
89{
90public:
91 virtual bool OnInit();
92};
93
94// main program
95
96IMPLEMENT_APP(MyApp)
97
98// MyScrolledWindow
99
100IMPLEMENT_DYNAMIC_CLASS(MyScrolledWindow, wxScrolledWindow)
101
102BEGIN_EVENT_TABLE(MyScrolledWindow, wxScrolledWindow)
103 EVT_PAINT( MyScrolledWindow::OnPaint)
104END_EVENT_TABLE()
105
106MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id,
107 const wxPoint &pos, const wxSize &size )
108 : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER, "test canvas" )
109{
110 m_canvas = new MyCanvas( this, -1, wxDefaultPosition, wxDefaultSize );
111
112 SetTargetWindow( m_canvas );
113
114 SetBackgroundColour( "WHEAT" );
115
116 SetCursor( wxCursor( wxCURSOR_HAND ) );
117
118
119 wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
120
121 topsizer->Add( m_canvas, 1, wxEXPAND|wxALL, 30 );
122
123 SetAutoLayout( TRUE );
124 SetSizer( topsizer );
125}
126
127MyScrolledWindow::~MyScrolledWindow()
128{
129}
130
131void MyScrolledWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
132{
133 wxPaintDC dc( this );
134
135 wxSize size( GetClientSize() );
136
137 long w,h;
138 dc.GetTextExtent( wxT("Headline"), &w, &h );
139
140 dc.DrawText( wxT("Headline"), long (size.x / 2 - w / 2), 10 );
141}
142
143// MyCanvas
144
145IMPLEMENT_DYNAMIC_CLASS(MyCanvas, wxPanel)
146
147BEGIN_EVENT_TABLE(MyCanvas, wxPanel)
148 EVT_PAINT( MyCanvas::OnPaint)
149END_EVENT_TABLE()
150
151MyCanvas::MyCanvas( wxScrolledWindow *parent, wxWindowID id,
152 const wxPoint &pos, const wxSize &size )
153 : wxPanel( parent, id, pos, size, wxSUNKEN_BORDER, "test canvas" )
154{
155 m_owner = parent;
156
157 (void)new wxButton( this, -1, "Hallo I", wxPoint(20,20), wxSize(100,30) );
158 (void)new wxButton( this, -1, "Hallo II", wxPoint(220,20), wxSize(100,30) );
159
160 SetBackgroundColour( *wxWHITE );
161
162 SetCursor( wxCursor( wxCURSOR_IBEAM ) );
163}
164
165MyCanvas::~MyCanvas()
166{
167}
168
169void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
170{
171 wxPaintDC dc( this );
172 m_owner->PrepareDC( dc );
173
174 dc.DrawText( "Some text", 140, 140 );
175
176 dc.DrawRectangle( 100, 160, 200, 200 );
177
178 dc.SetBrush( *wxTRANSPARENT_BRUSH );
179
180 dc.DrawRectangle( 10, 10, 480, 980 );
181}
182
183
184// MyFrame
185
186const int ID_QUIT = 108;
187const int ID_ABOUT = 109;
188
189IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
190
191BEGIN_EVENT_TABLE(MyFrame,wxFrame)
192 EVT_MENU (ID_ABOUT, MyFrame::OnAbout)
193 EVT_MENU (ID_QUIT, MyFrame::OnQuit)
194END_EVENT_TABLE()
195
196MyFrame::MyFrame()
197 : wxFrame( (wxFrame *)NULL, -1, "wxScrolledWindow sample",
198 wxPoint(20,20), wxSize(470,500) )
199{
200 wxMenu *file_menu = new wxMenu();
201 file_menu->Append( ID_ABOUT, "&About..");
202 file_menu->Append( ID_QUIT, "E&xit\tAlt-X");
203
204 wxMenuBar *menu_bar = new wxMenuBar();
205 menu_bar->Append(file_menu, "&File");
206
207 SetMenuBar( menu_bar );
208
209 CreateStatusBar(2);
210 int widths[] = { -1, 100 };
211 SetStatusWidths( 2, widths );
212
213 m_scrolled = new MyScrolledWindow( this, -1, wxPoint(0,0), wxSize(100,100) );
214 m_scrolled->SetScrollbars( 10, 10, 50, 100 );
215
216 m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
217 wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
218 delete old_log;
219
220 wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
221
222 topsizer->Add( m_scrolled, 1, wxEXPAND );
223 topsizer->Add( m_log, 0, wxEXPAND );
224
225 SetAutoLayout( TRUE );
226 SetSizer( topsizer );
227}
228
229void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
230{
231 Close( TRUE );
232}
233
234void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
235{
236 (void)wxMessageBox( "wxScroll demo II\n"
237 "Robert Roebling (c) 1998",
238 "About wxScroll II Demo", wxICON_INFORMATION | wxOK );
239}
240
241//-----------------------------------------------------------------------------
242// MyApp
243//-----------------------------------------------------------------------------
244
245bool MyApp::OnInit()
246{
247 wxFrame *frame = new MyFrame();
248 frame->Show( TRUE );
249
250 return TRUE;
251}
252