]> git.saurik.com Git - wxWidgets.git/blame_incremental - samples/artprov/arttest.cpp
Fix wrong configure test for abi::__forced_unwind in previous commit.
[wxWidgets.git] / samples / artprov / arttest.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: arttest.cpp
3// Purpose: wxArtProvider sample
4// Author: Vaclav Slavik
5// Modified by:
6// Created: 2002/03/25
7// RCS-ID: $Id$
8// Copyright: (c) Vaclav Slavik
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12// For compilers that support precompilation, includes "wx/wx.h".
13#include "wx/wxprec.h"
14
15#ifdef __BORLANDC__
16#pragma hdrstop
17#endif
18
19#ifndef WX_PRECOMP
20#include "wx/wx.h"
21#endif
22
23#ifndef wxHAS_IMAGES_IN_RESOURCES
24 #include "../sample.xpm"
25#endif
26
27#include "wx/artprov.h"
28#include "artbrows.h"
29
30// ----------------------------------------------------------------------------
31// private classes
32// ----------------------------------------------------------------------------
33
34class MyApp : public wxApp
35{
36public:
37 virtual bool OnInit();
38};
39
40class MyFrame : public wxFrame
41{
42public:
43 MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size,
44 long style = wxDEFAULT_FRAME_STYLE);
45
46private:
47 // event handlers (these functions should _not_ be virtual)
48 void OnQuit(wxCommandEvent& event);
49 void OnAbout(wxCommandEvent& event);
50#if wxUSE_LOG
51 void OnLogs(wxCommandEvent& event);
52#endif // wxUSE_LOG
53 void OnBrowser(wxCommandEvent& event);
54 void OnPlugProvider(wxCommandEvent& event);
55
56 DECLARE_EVENT_TABLE()
57};
58
59// ----------------------------------------------------------------------------
60// constants
61// ----------------------------------------------------------------------------
62
63// IDs for the controls and the menu commands
64enum
65{
66 ID_Quit = wxID_EXIT,
67 ID_Logs = wxID_HIGHEST+1,
68 ID_Browser,
69 ID_PlugProvider
70};
71
72// ----------------------------------------------------------------------------
73// event tables and other macros for wxWidgets
74// ----------------------------------------------------------------------------
75
76BEGIN_EVENT_TABLE(MyFrame, wxFrame)
77 EVT_MENU(ID_Quit, MyFrame::OnQuit)
78#if wxUSE_LOG
79 EVT_MENU(ID_Logs, MyFrame::OnLogs)
80#endif // wxUSE_LOG
81 EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
82 EVT_MENU(ID_Browser, MyFrame::OnBrowser)
83 EVT_MENU(ID_PlugProvider, MyFrame::OnPlugProvider)
84END_EVENT_TABLE()
85
86IMPLEMENT_APP(MyApp)
87
88// ============================================================================
89// implementation
90// ============================================================================
91
92// ----------------------------------------------------------------------------
93// the application class
94// ----------------------------------------------------------------------------
95
96// 'Main program' equivalent: the program execution "starts" here
97bool MyApp::OnInit()
98{
99 if ( !wxApp::OnInit() )
100 return false;
101
102 // create the main application window
103 MyFrame *frame = new MyFrame(wxT("wxArtProvider sample"),
104 wxPoint(50, 50), wxSize(450, 340));
105 frame->Show(true);
106 return true;
107}
108
109// ----------------------------------------------------------------------------
110// custom art provider
111// ----------------------------------------------------------------------------
112
113class MyArtProvider : public wxArtProvider
114{
115protected:
116 virtual wxBitmap CreateBitmap(const wxArtID& id, const wxArtClient& client,
117 const wxSize& size);
118};
119
120#include "info.xpm"
121#include "error.xpm"
122#include "warning.xpm"
123#include "question.xpm"
124
125wxBitmap MyArtProvider::CreateBitmap(const wxArtID& id,
126 const wxArtClient& client,
127 const wxSize& WXUNUSED(size))
128{
129 if ( client == wxART_MESSAGE_BOX )
130 {
131 if ( id == wxART_INFORMATION )
132 return wxBitmap(info_xpm);
133 if ( id == wxART_ERROR )
134 return wxBitmap(error_xpm);
135 if ( id == wxART_WARNING )
136 return wxBitmap(warning_xpm);
137 if ( id == wxART_QUESTION )
138 return wxBitmap(question_xpm);
139 }
140 return wxNullBitmap;
141}
142
143
144
145// ----------------------------------------------------------------------------
146// main frame
147// ----------------------------------------------------------------------------
148
149// frame constructor
150MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style)
151 : wxFrame(NULL, wxID_ANY, title, pos, size, style)
152{
153 SetIcon(wxICON(sample));
154
155 // create a menu bar
156 wxMenu *menuFile = new wxMenu;
157
158 // the "About" item should be in the help menu
159 wxMenu *helpMenu = new wxMenu;
160 helpMenu->Append(wxID_ABOUT, wxT("&About\tF1"), wxT("Show about dialog"));
161
162 menuFile->AppendCheckItem(ID_PlugProvider, wxT("&Plug-in art provider"), wxT("Enable custom art provider"));
163 menuFile->AppendSeparator();
164
165#if wxUSE_LOG
166 menuFile->Append(ID_Logs, wxT("&Logging test"), wxT("Show some logging output"));
167#endif // wxUSE_LOG
168 menuFile->Append(ID_Browser, wxT("&Resources browser"), wxT("Browse all available icons"));
169 menuFile->AppendSeparator();
170
171 menuFile->Append(ID_Quit, wxT("E&xit\tAlt-X"), wxT("Quit this program"));
172
173 // now append the freshly created menu to the menu bar...
174 wxMenuBar *menuBar = new wxMenuBar();
175 menuBar->Append(menuFile, wxT("&File"));
176 menuBar->Append(helpMenu, wxT("&Help"));
177
178 // ... and attach this menu bar to the frame
179 SetMenuBar(menuBar);
180}
181
182
183// event handlers
184
185void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
186{
187 // true is to force the frame to close
188 Close(true);
189}
190
191#if wxUSE_LOG
192void MyFrame::OnLogs(wxCommandEvent& WXUNUSED(event))
193{
194 wxLogMessage(wxT("Some information."));
195 wxLogError(wxT("This is an error."));
196 wxLogWarning(wxT("A warning."));
197 wxLogError(wxT("Yet another error."));
198 wxLog::GetActiveTarget()->Flush();
199 wxLogMessage(wxT("Check/uncheck 'File/Plug-in art provider' and try again."));
200}
201#endif // wxUSE_LOG
202
203void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
204{
205 wxString msg;
206 msg.Printf( wxT("This is the about dialog of wxArtProvider sample.\n")
207 wxT("Welcome to %s"), wxVERSION_STRING);
208
209 wxMessageBox(msg, wxT("About wxArtProvider sample"),
210 wxOK | wxICON_INFORMATION, this);
211}
212
213void MyFrame::OnBrowser(wxCommandEvent& WXUNUSED(event))
214{
215 wxArtBrowserDialog dlg(this);
216 dlg.ShowModal();
217}
218
219void MyFrame::OnPlugProvider(wxCommandEvent& event)
220{
221 if ( event.IsChecked() )
222 wxArtProvider::Push(new MyArtProvider);
223 else
224 wxArtProvider::Pop();
225}