]>
git.saurik.com Git - wxWidgets.git/blob - user/wxTest/wxTest.cpp
4 * Author: Robert Roebling
6 * Copyright: (C) 1997, GNU (Robert Roebling)
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #pragma implementation "wxTest.h"
32 //-----------------------------------------------------------------------------
34 //-----------------------------------------------------------------------------
38 //-----------------------------------------------------------------------------
40 //-----------------------------------------------------------------------------
42 const ID_RETURN
= 100;
45 const ID_CHECKBOX
= 110;
46 const ID_CHECKBOX_CHECK
= 110;
47 const ID_CHECKBOX_UNCHECK
= 112;
49 const ID_TEXTCTRL
= 115;
50 const ID_TEXTCTRL_SET
= 116;
51 const ID_TEXTCTRL_DEL
= 117;
53 const ID_CHOICE
= 120;
54 const ID_CHOICE_SEL_NUM
= 121;
55 const ID_CHOICE_SEL_STR
= 122;
56 const ID_CHOICE_CLEAR
= 123;
57 const ID_CHOICE_APPEND
= 124;
59 const ID_LISTBOX
= 130;
60 const ID_LISTBOX_SEL_NUM
= 131;
61 const ID_LISTBOX_SEL_STR
= 132;
62 const ID_LISTBOX_CLEAR
= 133;
63 const ID_LISTBOX_APPEND
= 134;
65 const ID_RADIOBOX
= 130;
66 const ID_RADIOBOX_SEL_NUM
= 131;
67 const ID_RADIOBOX_SEL_STR
= 132;
69 BEGIN_EVENT_TABLE(MyDialog
,wxDialog
)
70 EVT_BUTTON (ID_RETURN
, MyDialog::OnReturnButton
)
71 EVT_BUTTON (ID_HELLO
, MyDialog::OnHelloButton
)
72 EVT_CHECKBOX (ID_CHECKBOX
, MyDialog::OnCheckBox
)
73 EVT_BUTTON (ID_CHECKBOX_CHECK
, MyDialog::OnCheckBoxButtons
)
74 EVT_BUTTON (ID_CHECKBOX_UNCHECK
, MyDialog::OnCheckBoxButtons
)
75 EVT_TEXT (ID_TEXTCTRL
, MyDialog::OnTextCtrl
)
76 EVT_BUTTON (ID_TEXTCTRL_SET
, MyDialog::OnTextCtrlButtons
)
77 EVT_BUTTON (ID_TEXTCTRL_DEL
, MyDialog::OnTextCtrlButtons
)
78 EVT_CHOICE (ID_CHOICE
, MyDialog::OnChoice
)
79 EVT_BUTTON (ID_CHOICE_SEL_NUM
, MyDialog::OnChoiceButtons
)
80 EVT_BUTTON (ID_CHOICE_SEL_STR
, MyDialog::OnChoiceButtons
)
81 EVT_BUTTON (ID_CHOICE_CLEAR
, MyDialog::OnChoiceButtons
)
82 EVT_BUTTON (ID_CHOICE_APPEND
, MyDialog::OnChoiceButtons
)
83 EVT_LISTBOX (ID_LISTBOX
, MyDialog::OnListBox
)
84 EVT_BUTTON (ID_LISTBOX_SEL_NUM
, MyDialog::OnListBoxButtons
)
85 EVT_BUTTON (ID_LISTBOX_SEL_STR
, MyDialog::OnListBoxButtons
)
86 EVT_BUTTON (ID_LISTBOX_CLEAR
, MyDialog::OnListBoxButtons
)
87 EVT_BUTTON (ID_LISTBOX_APPEND
, MyDialog::OnListBoxButtons
)
88 EVT_RADIOBOX (ID_RADIOBOX
, MyDialog::OnRadioBox
)
89 EVT_BUTTON (ID_RADIOBOX_SEL_NUM
, MyDialog::OnRadioBoxButtons
)
90 EVT_BUTTON (ID_RADIOBOX_SEL_STR
, MyDialog::OnRadioBoxButtons
)
93 //-----------------------------------------------------------------------------
95 IMPLEMENT_DYNAMIC_CLASS(MyDialog
, wxDialog
)
97 MyDialog::MyDialog( wxWindow
*parent
) :
98 wxDialog( parent
, -1, "TestDialog", wxPoint(20,100), wxSize(700,400), wxDIALOG_MODAL
)
103 (void)new wxStaticBox( this, -1, "CheckBox group", wxPoint(20,10), wxSize(140,180) );
104 m_checkbox
= new wxCheckBox( this, ID_CHECKBOX
, "CheckBox", wxPoint(40,35), wxSize(100,30) );
105 (void)new wxButton( this, ID_CHECKBOX_CHECK
, "Check", wxPoint(40,85), wxSize(100,30) );
106 (void)new wxButton( this, ID_CHECKBOX_UNCHECK
, "Uncheck", wxPoint(40,135), wxSize(100,30) );
108 (void)new wxStaticBox( this, -1, "TextCtrl group", wxPoint(20,200), wxSize(140,180) );
109 m_textctrl
= new wxTextCtrl( this, ID_TEXTCTRL
, "TextCtrl", wxPoint(40,35+190), wxSize(100,30) );
110 (void)new wxButton( this, ID_TEXTCTRL_SET
, "Set 'Hi!'", wxPoint(40,85+190), wxSize(100,30) );
111 (void)new wxButton( this, ID_TEXTCTRL_DEL
, "Delete", wxPoint(40,135+190), wxSize(100,30) );
113 wxString choices
[4] =
118 "wonderfull example."
121 (void)new wxStaticBox( this, -1, "Choice group", wxPoint(180,10), wxSize(140,330) );
122 m_choice
= new wxChoice( this, ID_CHOICE
, wxPoint(200,35), wxSize(100,30), 4, choices
);
123 (void)new wxButton( this, ID_CHOICE_SEL_NUM
, "Select #2", wxPoint(200,130), wxSize(100,30) );
124 (void)new wxButton( this, ID_CHOICE_SEL_STR
, "Select 'This'", wxPoint(200,180), wxSize(100,30) );
125 (void)new wxButton( this, ID_CHOICE_CLEAR
, "Clear", wxPoint(200,230), wxSize(100,30) );
126 (void)new wxButton( this, ID_CHOICE_APPEND
, "Append 'Hi!'", wxPoint(200,280), wxSize(100,30) );
128 (void)new wxStaticBox( this, 100, "ListBox group", wxPoint(340,10), wxSize(140,330) );
129 m_listbox
= new wxListBox( this, ID_LISTBOX
, wxPoint(360,35), wxSize(100,70), 4, choices
);
130 (void)new wxButton( this, ID_LISTBOX_SEL_NUM
, "Select #2", wxPoint(360,130), wxSize(100,30) );
131 (void)new wxButton( this, ID_LISTBOX_SEL_STR
, "Select 'This'", wxPoint(360,180), wxSize(100,30) );
132 (void)new wxButton( this, ID_LISTBOX_CLEAR
, "Clear", wxPoint(360,230), wxSize(100,30) );
133 (void)new wxButton( this, ID_LISTBOX_APPEND
, "Append 'Hi!'", wxPoint(360,280), wxSize(100,30) );
135 (void)new wxStaticBox( this, -1, "RadioBox group", wxPoint(500,10), wxSize(180,230) );
136 m_radiobox
= new wxRadioBox( this, ID_RADIOBOX
, "Test", wxPoint(520,35), wxSize(-1,-1), 4, choices
,
139 (void)new wxButton( this, ID_HELLO
, "wxScreenDC", wxPoint(540,280), wxSize(120,40) );
140 (void)new wxButton( this, ID_RETURN
, "Return", wxPoint(540,340), wxSize(120,40) );
142 m_text1
= new wxStaticText( this, -1, "No event.", wxPoint(170,350), wxSize(300,-1) );
143 m_text2
= new wxStaticText( this, -1, "No information.", wxPoint(170,370), wxSize(300,-1) );
148 void MyDialog::OnTextCtrl( wxCommandEvent
&WXUNUSED(event
) )
152 void MyDialog::OnTextCtrlButtons( wxCommandEvent
&event
)
154 switch (event
.GetId())
156 case ID_TEXTCTRL_SET
:
158 m_textctrl
->SetValue( "Hi!" );
161 case ID_TEXTCTRL_DEL
:
163 m_textctrl
->Delete();
169 void MyDialog::OnRadioBox( wxCommandEvent
&event
)
171 if (!m_text1
) return;
172 m_text1
->SetLabel( "RadioBox Event:");
173 wxString tmp
= "RadioBox selection string is: ";
174 tmp
+= event
.GetString();
175 m_text2
->SetLabel( tmp
);
178 void MyDialog::OnRadioBoxButtons( wxCommandEvent
&WXUNUSED(event
) )
182 void MyDialog::OnListBox( wxCommandEvent
&event
)
184 if (!m_text1
) return;
185 m_text1
->SetLabel( "ListBox Event:");
186 wxString tmp
= "ListBox selection string is: ";
187 tmp
+= event
.GetString();
188 m_text2
->SetLabel( tmp
);
191 void MyDialog::OnListBoxButtons( wxCommandEvent
&event
)
193 switch (event
.GetId())
195 case ID_LISTBOX_SEL_NUM
:
197 m_listbox
->SetSelection( 2 );
200 case ID_LISTBOX_SEL_STR
:
202 m_listbox
->SetStringSelection( "This" );
205 case ID_LISTBOX_CLEAR
:
210 case ID_LISTBOX_APPEND
:
212 m_listbox
->Append( "Hi!" );
218 void MyDialog::OnCheckBox( wxCommandEvent
&event
)
220 if (!m_text1
) return;
221 m_text1
->SetLabel( "CheckBox Event:");
222 wxString tmp
= "Checkbox is ";
227 m_text2
->SetLabel( tmp
);
230 void MyDialog::OnCheckBoxButtons( wxCommandEvent
&event
)
232 switch (event
.GetId())
234 case ID_CHECKBOX_CHECK
:
236 m_checkbox
->SetValue( TRUE
);
239 case ID_CHECKBOX_UNCHECK
:
241 m_checkbox
->SetValue( FALSE
);
247 void MyDialog::OnChoice( wxCommandEvent
&event
)
249 if (!m_text1
) return;
250 m_text1
->SetLabel( "Choice Event:");
251 wxString tmp
= "Choice selection string is: ";
252 tmp
+= event
.GetString();
253 m_text2
->SetLabel( tmp
);
256 void MyDialog::OnChoiceButtons( wxCommandEvent
&event
)
258 switch (event
.GetId())
260 case ID_CHOICE_SEL_NUM
:
262 m_choice
->SetSelection( 2 );
265 case ID_CHOICE_SEL_STR
:
267 m_choice
->SetStringSelection( "This" );
270 case ID_CHOICE_CLEAR
:
275 case ID_CHOICE_APPEND
:
277 m_choice
->Append( "Hi!" );
283 void MyDialog::OnReturnButton( wxCommandEvent
&WXUNUSED(event
) )
288 void MyDialog::OnHelloButton( wxCommandEvent
&WXUNUSED(event
) )
290 wxMessageDialog
*dialog
;
291 dialog
= new wxMessageDialog( this, "Now, I will paint on Screen.", "wxGTK" );
296 dc
.StartDrawingOnTop();
298 int w
= wxSystemSettings::GetSystemMetric( wxSYS_SCREEN_X
);
299 int h
= wxSystemSettings::GetSystemMetric( wxSYS_SCREEN_Y
);
301 dc
.SetPen( *wxWHITE_PEN
);
302 dc
.SetBrush( *wxTRANSPARENT_BRUSH
);
303 for (int i
= 0; i
< h
; i
+= 3) dc
.DrawLine( 0, i
, w
, i
);
305 dialog
= new wxMessageDialog( this, "Now, the stripes will disappear.", "wxGTK" );
309 dc
.EndDrawingOnTop();
312 //-----------------------------------------------------------------------------
314 //-----------------------------------------------------------------------------
316 IMPLEMENT_DYNAMIC_CLASS(MyCanvas
, wxScrolledWindow
)
318 BEGIN_EVENT_TABLE(MyCanvas
,wxScrolledWindow
)
319 EVT_BUTTON (100, MyDialog::OnReturnButton
)
320 EVT_PAINT (MyCanvas::OnPaint
)
323 MyCanvas::MyCanvas( wxWindow
*parent
, const wxWindowID id
, const wxPoint
&pos
, const wxSize
&size
)
324 : wxScrolledWindow( parent
, id
, pos
, size
, wxSUNKEN_BORDER
)
326 my_bitmap
= new wxBitmap( folder_xpm
);
327 my_horse
= new wxBitmap();
328 my_horse
->LoadFile( "horse.png", 0 );
329 my_backstore
= new wxBitmap( 150, 150 );
330 my_font
= new wxFont( 20, wxROMAN
, wxNORMAL
, wxNORMAL
);
333 SetBackgroundColour( wxColour("Wheat") );
336 MyCanvas::~MyCanvas(void)
344 void MyCanvas::OnPaint( wxPaintEvent
&WXUNUSED(event
) )
346 wxPaintDC
dc( this );
350 memDC
.SelectObject( *my_backstore
);
351 memDC
.SetBrush( *wxBLACK_BRUSH
);
352 memDC
.SetPen( *wxWHITE_PEN
);
353 memDC
.DrawRectangle( 0, 0, 150, 150 );
354 memDC
.SetTextForeground( *wxWHITE
);
355 memDC
.DrawText( "This is a memory dc.", 10, 10 );
359 GetVirtualSize( &vx
, &vy
);
360 dc
.DrawLine( 5, 5, vx
-10, vy
-10 );
361 dc
.DrawLine( 10, 20, 100, 10 );
362 dc
.DrawLine( 10, 20, 100, 50 );
363 dc
.DrawLine( 10, 20, 100, 100 );
365 dc
.SetPen( *wxWHITE_PEN
);
366 dc
.DrawLine( 80, 50, 180, 50 );
368 dc
.SetFont( *my_font
);
372 dc
.GetTextExtent( "Hej, ho, hej, ho.", &x
, &y
);
374 dc
.SetBrush( *wxTRANSPARENT_BRUSH
);
375 dc
.DrawRectangle( 80, 40, x
, y
);
377 dc
.SetTextForeground( *wxGREEN
);
378 dc
.DrawText( "Hej, ho, hej, ho.", 80, 40 );
380 dc
.SetTextForeground( *wxBLACK
);
381 dc
.SetFont( *wxNORMAL_FONT
);
382 dc
.DrawText( "Hej, ho, hej, ho. (NormalFont)", 80, 60 );
383 dc
.SetFont( *wxSMALL_FONT
);
384 dc
.DrawText( "Hej, ho, hej, ho. (SmallFont)", 80, 80 );
385 dc
.SetFont( *wxITALIC_FONT
);
386 dc
.DrawText( "Hej, ho, hej, ho. (ItalicFont)", 80, 100 );
388 dc
.DrawBitmap( *my_bitmap
, 30, 80, TRUE
);
389 dc
.DrawBitmap( *my_horse
, 30, 120 );
391 dc
.Blit( 200, 200, 150, 150, &memDC
, 0, 0, 0 );
393 memDC
.SelectObject( wxNullBitmap
);
396 dc.SetBrush( *wxBLACK_BRUSH );
397 dc.DrawRectangle( 50, 50, 50, 50 );
398 dc.SetPen( *wxWHITE_PEN );
399 dc.DrawRectangle( 101, 50, 50, 50 );
400 dc.DrawRectangle( 50, 101, 50, 50 );
402 dc.SetBrush( *wxWHITE_BRUSH );
404 dc.SetPen( *wxWHITE_PEN );
405 dc.DrawRectangle( 70, 70, 2, 2 );
407 dc.SetPen( *wxRED_PEN );
408 dc.DrawRectangle( 72, 70, 2, 2 );
409 dc.DrawRectangle( 70, 72, 2, 2 );
412 dc.SetPen( *wxRED_PEN );
413 dc.DrawRectangle( 82, 80, 2, 2 );
414 dc.DrawRectangle( 80, 82, 2, 2 );
416 dc.SetPen( *wxWHITE_PEN );
417 dc.DrawRectangle( 80, 80, 2, 2 );
421 //-----------------------------------------------------------------------------
423 //-----------------------------------------------------------------------------
431 const ID_ABOUT
= 109;
433 IMPLEMENT_DYNAMIC_CLASS( MyFrame
, wxFrame
)
435 BEGIN_EVENT_TABLE(MyFrame
,wxFrame
)
436 EVT_SIZE (MyFrame::OnSize
)
437 EVT_MENU (ID_OPEN
, MyFrame::OnOpenDialog
)
438 EVT_MENU (ID_FONT
, MyFrame::OnFontDialog
)
439 EVT_MENU (ID_MSG
, MyFrame::OnMsg
)
440 EVT_MENU (ID_DLG
, MyFrame::OnDialog
)
441 EVT_MENU (ID_ABOUT
, MyFrame::OnAbout
)
442 EVT_MENU (ID_QUIT
, MyFrame::OnQuit
)
445 MyFrame::MyFrame(void) :
446 wxFrame( NULL
, -1, "Robert's Test application", wxPoint(20,20), wxSize(470,360) )
448 wxMenu
*file_menu
= new wxMenu( "Test" );
449 file_menu
->Append( ID_OPEN
, "Open..");
450 file_menu
->Append( ID_MSG
, "MessageBox..");
451 file_menu
->Append( ID_FONT
, "FontDialog..");
452 file_menu
->AppendSeparator();
453 file_menu
->Append( ID_DLG
, "TestDialog..");
454 file_menu
->AppendSeparator();
455 file_menu
->Append( ID_ABOUT
, "About..");
456 file_menu
->Append( ID_QUIT
, "Exit");
458 wxMenuBar
*menu_bar
= new wxMenuBar();
459 menu_bar
->Append(file_menu
, "File");
460 menu_bar
->Show( TRUE
);
462 SetMenuBar( menu_bar
);
464 CreateStatusBar( 2 );
466 SetStatusText( "wxGTK v0.12", 0 );
467 SetStatusText( "Copyright 1998 Robert Roebling.", 1 );
469 m_canvas
= new MyCanvas( this, -1, wxPoint(2,62), wxSize(300-4,120-4) );
470 m_canvas
->SetScrollbars( 10, 10, 50, 50 );
472 m_tb
= new wxToolBarGTK( this, -1, wxPoint(2,60), wxSize(300-4,26) );
473 m_tb
->SetMargins( 2, 2 );
475 wxBitmap
*bm
= new wxBitmap( list_xpm
);
476 m_tb
->AddTool( 0, *bm
, wxNullBitmap
, FALSE
, -1, -1, NULL
, "This is a button" );
477 bm
= new wxBitmap( folder_xpm
);
478 m_tb
->AddTool( 0, *bm
, wxNullBitmap
, TRUE
, -1, -1, NULL
, "This is a toggle" );
483 // m_timer.Start( 1000, TRUE );
486 void MyFrame::OnSize( wxSizeEvent
&WXUNUSED(event
) )
490 GetClientSize( &x
, &y
);
492 m_tb
->SetSize( 1, 0, x
-2, 42 );
493 m_canvas
-> SetSize( 0, 42, x
, y
-42 );
496 void MyFrame::OnDialog( wxCommandEvent
&WXUNUSED(event
) )
498 MyDialog
dialog( this );
502 void MyFrame::OnFontDialog( wxCommandEvent
&WXUNUSED(event
) )
505 data
.SetInitialFont( wxSMALL_FONT
);
506 data
.SetColour( wxRED
);
507 wxGenericFontDialog
dialog( this, &data
);
508 if (dialog
.ShowModal() == wxID_OK
)
510 wxFontData retData
= dialog
.GetFontData();
515 void MyFrame::OnOpenDialog( wxCommandEvent
&WXUNUSED(event
) )
517 wxFileDialog
dialog(this, "Testing open file dialog", "", "", "*.txt", 0);
518 if (dialog
.ShowModal() == wxID_OK
)
520 wxMessageDialog
dialog2(this, dialog
.GetPath(), "Selected path");
525 void MyFrame::OnMsg( wxCommandEvent
&WXUNUSED(event
) )
527 wxMessageBox( "There once was a lady from Riga.", "TestBox.", wxYES_NO
);
530 void MyFrame::OnQuit( wxCommandEvent
&WXUNUSED(event
) )
535 void MyFrame::OnAbout( wxCommandEvent
&WXUNUSED(event
) )
537 wxDialog
dialog( this, -1, "About wxGTK", wxPoint(100,100), wxSize(540,350), wxDIALOG_MODAL
);
541 dialog
.GetSize( &w
, &h
);
547 (void)new wxStaticBox( &dialog
, -1, (const char*)NULL
, wxPoint(10,10), wxSize(w
-20,h
-80) );
549 (void)new wxStaticText( &dialog
, -1, "wxGTK v0.12", wxPoint(240,y
) );
552 (void)new wxStaticText( &dialog
, -1, "Written by Robert Roebling, 1998. More information at:", wxPoint(x
,y
) );
554 (void)new wxStaticText( &dialog
, -1, "http://www.freiburg.linux.de/~wxxt", wxPoint(x
+50,y
) );
557 (void)new wxStaticText( &dialog
, -1,
558 "wxGTK is based on the wxWindows GUI-library written mainly by Julian Smart. See:", wxPoint(x
,y
) );
560 (void)new wxStaticText( &dialog
, -1, "http://web.ukonline.co.uk/julian.smart/wxwin", wxPoint(x
+50,y
) );
563 (void)new wxStaticText( &dialog
, -1, "wxWindows Copyright: Less restrictive version of LGPL.", wxPoint(x
,y
) );
565 (void)new wxStaticText( &dialog
, -1, "For questions concerning wxGTK, you may mail to:", wxPoint(x
,y
) );
567 (void)new wxStaticText( &dialog
, -1, "roebling@ruf.uni-freiburg.de", wxPoint(x
+50,y
) );
569 (void) new wxButton( &dialog
, wxID_OK
, "Return", wxPoint(w
/2-40,h
-50), wxSize(80,30) );
574 //-----------------------------------------------------------------------------
576 //-----------------------------------------------------------------------------
583 bool MyApp::OnInit(void)
585 wxFrame
*frame
= new MyFrame();