]>
git.saurik.com Git - wxWidgets.git/blob - samples/drawer/drawertest.cpp
5bc61d1a25b79b8723d4318b3a3acb43b6a92d0d
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxTaskBarIcon demo
4 // Author: Julian Smart
5 // Modified by: Ryan Norton (Drawer)
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx.h".
13 #include "wx/wxprec.h"
23 // the application icon (under Windows and OS/2 it is in resources)
24 #if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__)
25 #include "../sample.xpm"
30 #include "wx/taskbar.h"
32 #if defined(__WXMAC__)
33 #include "wx/mac/private.h"
36 //include this sample's header
40 #if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
43 #include "wx/dcclient.h"
44 #include "wx/mac/carbon/drawer.h"
46 class MyDrawer
: public wxDrawerWindow
49 MyDrawer(wxWindow
* p
) : wxDrawerWindow(p
, wxID_ANY
, wxT(""), wxSize(200,200))
52 void OnPaint(wxPaintEvent
&)
55 dc
.DrawRectangle(30,30,60,60);
61 BEGIN_EVENT_TABLE(MyDrawer
, wxDrawerWindow
)
62 EVT_PAINT(MyDrawer::OnPaint
)
68 MyDialog
*dialog
= NULL
;
72 bool MyApp::OnInit(void)
74 // Create the main frame window
75 dialog
= new MyDialog(NULL
, wxID_ANY
, wxT("wxTaskBarIcon Test Dialog"), wxDefaultPosition
, wxSize(365, 290));
83 BEGIN_EVENT_TABLE(MyDialog
, wxDialog
)
84 EVT_BUTTON(wxID_OK
, MyDialog::OnOK
)
85 EVT_BUTTON(wxID_EXIT
, MyDialog::OnExit
)
86 EVT_CLOSE(MyDialog::OnCloseWindow
)
91 MyDialog::MyDialog(wxWindow
* parent
, const wxWindowID id
, const wxString
& title
,
92 const wxPoint
& pos
, const wxSize
& size
, const long windowStyle
):
93 wxDialog(parent
, id
, title
, pos
, size
, windowStyle
)
100 delete m_taskBarIcon
;
103 void MyDialog::OnOK(wxCommandEvent
& WXUNUSED(event
))
108 void MyDialog::OnExit(wxCommandEvent
& WXUNUSED(event
))
113 void MyDialog::OnCloseWindow(wxCloseEvent
& WXUNUSED(event
))
118 void MyDialog::Init(void)
120 (void)new wxStaticText(this, wxID_ANY
, _T("Press 'Hide me' to hide me, Exit to quit."),
123 (void)new wxStaticText(this, wxID_ANY
, _T("Double-click on the taskbar icon to show me again."),
126 (void)new wxButton(this, wxID_EXIT
, _T("Exit"), wxPoint(185, 230), wxSize(80, 25));
127 (new wxButton(this, wxID_OK
, _T("Hide me"), wxPoint(100, 230), wxSize(80, 25)))->SetDefault();
130 #if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
132 MacSetMetalAppearance(true);
135 MyDrawer
* pMyDrawer
= new MyDrawer(this);
136 pMyDrawer
->Open(true);
138 m_taskBarIcon
= new MyTaskBarIcon(pMyDrawer
);
140 m_taskBarIcon
= new MyTaskBarIcon();
143 if (!m_taskBarIcon
->SetIcon(wxICON(sample
), wxT("wxTaskBarIcon Sample")))
144 wxMessageBox(wxT("Could not set icon."));
166 BEGIN_EVENT_TABLE(MyTaskBarIcon
, wxTaskBarIcon
)
167 EVT_MENU(PU_RESTORE
, MyTaskBarIcon::OnMenuRestore
)
168 EVT_MENU(PU_EXIT
, MyTaskBarIcon::OnMenuExit
)
169 EVT_MENU(PU_NEW_ICON
,MyTaskBarIcon::OnMenuSetNewIcon
)
170 EVT_MENU(PU_OLD_ICON
,MyTaskBarIcon::OnMenuSetOldIcon
)
171 EVT_MENU(PU_OPEN_DRAWER
,MyTaskBarIcon::OnMenuOpenDrawer
)
172 EVT_MENU(PU_CLOSE_DRAWER
,MyTaskBarIcon::OnMenuCloseDrawer
)
173 EVT_MENU(PU_TOP_DRAWER
,MyTaskBarIcon::OnMenuTopDrawer
)
174 EVT_MENU(PU_BOTTOM_DRAWER
,MyTaskBarIcon::OnMenuBottomDrawer
)
175 EVT_MENU(PU_LEFT_DRAWER
,MyTaskBarIcon::OnMenuLeftDrawer
)
176 EVT_MENU(PU_RIGHT_DRAWER
,MyTaskBarIcon::OnMenuRightDrawer
)
177 EVT_TASKBAR_LEFT_DCLICK (MyTaskBarIcon::OnLButtonDClick
)
180 void MyTaskBarIcon::OnMenuRestore(wxCommandEvent
& )
185 void MyTaskBarIcon::OnMenuExit(wxCommandEvent
& )
190 void MyTaskBarIcon::OnMenuSetNewIcon(wxCommandEvent
&)
192 wxIcon
icon(smile_xpm
);
194 if (!SetIcon(icon
, wxT("wxTaskBarIcon Sample - a different icon")))
195 wxMessageBox(wxT("Could not set new icon."));
198 void MyTaskBarIcon::OnMenuSetOldIcon(wxCommandEvent
&)
200 wxIcon
icon(wxT("wxDEFAULT_FRAME"));
203 wxMessageBox(wxT("Could not restore old icon."));
206 #if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
208 void MyTaskBarIcon::OnMenuOpenDrawer(wxCommandEvent
&)
210 m_pMyDrawer
->Open(true);
213 void MyTaskBarIcon::OnMenuCloseDrawer(wxCommandEvent
&)
215 m_pMyDrawer
->Close();
218 void MyTaskBarIcon::OnMenuLeftDrawer(wxCommandEvent
&)
220 m_pMyDrawer
->SetPreferredEdge(wxLEFT
);
223 void MyTaskBarIcon::OnMenuRightDrawer(wxCommandEvent
&)
225 m_pMyDrawer
->SetPreferredEdge(wxRIGHT
);
228 void MyTaskBarIcon::OnMenuTopDrawer(wxCommandEvent
&)
230 m_pMyDrawer
->SetPreferredEdge(wxTOP
);
233 void MyTaskBarIcon::OnMenuBottomDrawer(wxCommandEvent
&)
235 m_pMyDrawer
->SetPreferredEdge(wxBOTTOM
);
240 wxMenu
*MyTaskBarIcon::CreatePopupMenu()
242 wxMenu
*menu
= new wxMenu
;
244 menu
->Append(PU_RESTORE
, _T("&Restore TBTest"));
245 menu
->Append(PU_NEW_ICON
,_T("&Set New Icon"));
246 menu
->Append(PU_OLD_ICON
,_T("&Restore Old Icon"));
247 #if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
248 menu
->AppendSeparator();
249 menu
->Append(PU_OPEN_DRAWER
,_T("Open Drawer"));
250 menu
->Append(PU_CLOSE_DRAWER
,_T("Close Drawer"));
251 menu
->AppendSeparator();
252 menu
->Append(PU_LEFT_DRAWER
,_T("Set Drawer to come out on the LEFT side"));
253 menu
->Append(PU_RIGHT_DRAWER
,_T("Set Drawer to come out on the RIGHT side"));
254 menu
->Append(PU_TOP_DRAWER
,_T("Set Drawer to come out on the TOP side"));
255 menu
->Append(PU_BOTTOM_DRAWER
,_T("Set Drawer to come out on the BOTTOM side"));
257 menu
->AppendSeparator();
258 menu
->Append(PU_EXIT
, _T("E&xit"));
263 void MyTaskBarIcon::OnLButtonDClick(wxTaskBarIconEvent
&)