]>
git.saurik.com Git - wxWidgets.git/blob - samples/artprov/arttest.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxArtProvider sample
4 // Author: Vaclav Slavik
8 // Copyright: (c) Vaclav Slavik
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx/wx.h".
13 #include "wx/wxprec.h"
23 #if !defined(__WXMSW__) && !defined(__WXPM__)
24 #include "mondrian.xpm"
27 #include "wx/artprov.h"
30 // ----------------------------------------------------------------------------
32 // ----------------------------------------------------------------------------
34 class MyApp
: public wxApp
37 virtual bool OnInit();
40 class MyFrame
: public wxFrame
43 MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
,
44 long style
= wxDEFAULT_FRAME_STYLE
);
47 // event handlers (these functions should _not_ be virtual)
48 void OnQuit(wxCommandEvent
& event
);
49 void OnAbout(wxCommandEvent
& event
);
51 void OnLogs(wxCommandEvent
& event
);
53 void OnBrowser(wxCommandEvent
& event
);
54 void OnPlugProvider(wxCommandEvent
& event
);
59 // ----------------------------------------------------------------------------
61 // ----------------------------------------------------------------------------
63 // IDs for the controls and the menu commands
66 ID_Quit
= wxID_HIGHEST
,
72 // ----------------------------------------------------------------------------
73 // event tables and other macros for wxWidgets
74 // ----------------------------------------------------------------------------
76 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
77 EVT_MENU(ID_Quit
, MyFrame::OnQuit
)
79 EVT_MENU(ID_Logs
, MyFrame::OnLogs
)
81 EVT_MENU(wxID_ABOUT
, MyFrame::OnAbout
)
82 EVT_MENU(ID_Browser
, MyFrame::OnBrowser
)
83 EVT_MENU(ID_PlugProvider
, MyFrame::OnPlugProvider
)
88 // ============================================================================
90 // ============================================================================
92 // ----------------------------------------------------------------------------
93 // the application class
94 // ----------------------------------------------------------------------------
96 // 'Main program' equivalent: the program execution "starts" here
99 // create the main application window
100 MyFrame
*frame
= new MyFrame(_T("wxArtProvider sample"),
101 wxPoint(50, 50), wxSize(450, 340));
106 // ----------------------------------------------------------------------------
107 // custom art provider
108 // ----------------------------------------------------------------------------
110 class MyArtProvider
: public wxArtProvider
113 virtual wxBitmap
CreateBitmap(const wxArtID
& id
, const wxArtClient
& client
,
119 #include "warning.xpm"
120 #include "question.xpm"
122 wxBitmap
MyArtProvider::CreateBitmap(const wxArtID
& id
,
123 const wxArtClient
& client
,
124 const wxSize
& WXUNUSED(size
))
126 if ( client
== wxART_MESSAGE_BOX
)
128 if ( id
== wxART_INFORMATION
)
129 return wxBitmap(info_xpm
);
130 if ( id
== wxART_ERROR
)
131 return wxBitmap(error_xpm
);
132 if ( id
== wxART_WARNING
)
133 return wxBitmap(warning_xpm
);
134 if ( id
== wxART_QUESTION
)
135 return wxBitmap(question_xpm
);
142 // ----------------------------------------------------------------------------
144 // ----------------------------------------------------------------------------
147 MyFrame::MyFrame(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
, long style
)
148 : wxFrame(NULL
, wxID_ANY
, title
, pos
, size
, style
)
150 SetIcon(wxICON(mondrian
));
153 wxMenu
*menuFile
= new wxMenu
;
155 // the "About" item should be in the help menu
156 wxMenu
*helpMenu
= new wxMenu
;
157 helpMenu
->Append(wxID_ABOUT
, _T("&About...\tF1"), _T("Show about dialog"));
159 menuFile
->AppendCheckItem(ID_PlugProvider
, _T("&Plug-in art provider"), _T("Enable custom art provider"));
160 menuFile
->AppendSeparator();
163 menuFile
->Append(ID_Logs
, _T("&Logging test"), _T("Show some logging output"));
165 menuFile
->Append(ID_Browser
, _T("&Resources browser"), _T("Browse all available icons"));
166 menuFile
->AppendSeparator();
168 menuFile
->Append(ID_Quit
, _T("E&xit\tAlt-X"), _T("Quit this program"));
170 // now append the freshly created menu to the menu bar...
171 wxMenuBar
*menuBar
= new wxMenuBar();
172 menuBar
->Append(menuFile
, _T("&File"));
173 menuBar
->Append(helpMenu
, _T("&Help"));
175 // ... and attach this menu bar to the frame
182 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
))
184 // true is to force the frame to close
189 void MyFrame::OnLogs(wxCommandEvent
& WXUNUSED(event
))
191 wxLogMessage(_T("Some information."));
192 wxLogError(_T("This is an error."));
193 wxLogWarning(_T("A warning."));
194 wxLogError(_T("Yet another error."));
195 wxLog::GetActiveTarget()->Flush();
196 wxLogMessage(_T("Check/uncheck 'File/Plug-in art provider' and try again."));
200 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
))
203 msg
.Printf( _T("This is the about dialog of wxArtProvider sample.\n")
204 _T("Welcome to %s"), wxVERSION_STRING
);
206 wxMessageBox(msg
, _T("About wxArtProvider sample"),
207 wxOK
| wxICON_INFORMATION
, this);
210 void MyFrame::OnBrowser(wxCommandEvent
& WXUNUSED(event
))
212 wxArtBrowserDialog
dlg(this);
216 void MyFrame::OnPlugProvider(wxCommandEvent
& event
)
218 if ( event
.IsChecked() )
219 wxArtProvider::PushProvider(new MyArtProvider
);
221 wxArtProvider::PopProvider();