%% options copyright owner = Dirk Krause copyright year = 2013-xxxx license = bsd %% header class DkClockTaskbarIcon : public wxTaskBarIcon { private: /** Localized texts. */ wxChar const * const *sTexts; /** Parent window. */ wxFrame *wParent; public: /** Constructor. @param pParent Parent window. @param localizedTexts Localized texts. */ DkClockTaskbarIcon( wxFrame *pParent, wxChar const * const *localizedTexts #if defined(__WXCOCOA__) , wxTaskBarIconType iconType = DEFAULT_TYPE #endif ); /** Handler for double-click on taskbar icon. */ void OnLeftButtonDoubleClick(wxTaskBarIconEvent & event); /** Handler for menu item to restore window. */ void OnMenuRestore(wxCommandEvent & event); /** Handler for menu item to exit application. */ void OnMenuExit(wxCommandEvent & event); /** Create popup menu for taskbar icon. @return The menu just created. */ virtual wxMenu * CreatePopupMenu(); /** Event table for task bar icon. */ DECLARE_EVENT_TABLE() }; %% module #include "wxdkclock.h" $!trace-include BEGIN_EVENT_TABLE(DkClockTaskbarIcon, wxTaskBarIcon) EVT_TASKBAR_LEFT_DCLICK(DkClockTaskbarIcon::OnLeftButtonDoubleClick) EVT_MENU(DkClockTaskBar_Restore, DkClockTaskbarIcon::OnMenuRestore) EVT_MENU(DkClockTaskBar_Exit, DkClockTaskbarIcon::OnMenuExit) END_EVENT_TABLE() DkClockTaskbarIcon::DkClockTaskbarIcon( wxFrame *pParent, wxChar const * const *localizedTexts #if defined(__WXCOCOA__) , wxTaskBarIconType iconType #endif ) #if defined(__WXCOCOA__) : wxTaskBarIcon(iconType) #endif { $? "+ DkClockTaskbarIcon::DkClockTaskbarIcon" wParent = pParent; sTexts = localizedTexts; $? "- DkClockTaskbarIcon::DkClockTaskbarIcon" } void DkClockTaskbarIcon::OnLeftButtonDoubleClick(wxTaskBarIconEvent & event) { $? "+ DkClockTaskbarIcon::OnLeftButtonDoubleClick" if(wParent) { ((DkClockFrame *)wParent)->SetHidden(false); wParent->Iconize(false); wParent->Show(true); } $? "- DkClockTaskbarIcon::OnLeftButtonDoubleClick" } void DkClockTaskbarIcon::OnMenuRestore(wxCommandEvent & event) { $? "+ DkClockTaskbarIcon::OnMenuRestore" if(wParent) { ((DkClockFrame *)wParent)->SetHidden(false); wParent->Iconize(false); wParent->Show(true); } $? "- DkClockTaskbarIcon::OnMenuRestore" } void DkClockTaskbarIcon::OnMenuExit(wxCommandEvent & event) { $? "+ DkClockTaskbarIcon::OnMenuExit" if(wParent) { wParent->Close(true); } $? "- DkClockTaskbarIcon::OnMenuExit" } wxMenu * DkClockTaskbarIcon::CreatePopupMenu() { wxMenu *back = new wxMenu; $? "+ DkClockTaskbarIcon::CreatePopupMenu" if(back) { back->Append(DkClockTaskBar_Restore, sTexts[26]); back->Append(DkClockTaskBar_Exit, sTexts[27]); } $? "- DkClockTaskbarIcon::CreatePopupMenu PTR=%d", TR_IPTR(back) return back; }