Author: saces
Date: 2009-02-04 11:53:20 +0000 (Wed, 04 Feb 2009)
New Revision: 25536
Added:
trunk/apps/wxFCP/demo/SysTray/systray.cpp
trunk/apps/wxFCP/demo/SysTray/systray.h
Log:
the demo from wxWidgets, as starting point (with bunny icon!;)
Added: trunk/apps/wxFCP/demo/SysTray/systray.cpp
===================================================================
--- trunk/apps/wxFCP/demo/SysTray/systray.cpp (rev 0)
+++ trunk/apps/wxFCP/demo/SysTray/systray.cpp 2009-02-04 11:53:20 UTC (rev
25536)
@@ -0,0 +1,206 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: tbtest.cpp
+// Purpose: wxTaskBarIcon demo
+// Author: Julian Smart
+// Modified by:
+// Created: 01/02/97
+// RCS-ID: $Id: tbtest.cpp 36336 2005-12-03 17:55:33Z vell $
+// Copyright: (c)
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+#pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#include "wx/wx.h"
+#endif
+
+// the application icon (under Windows and OS/2 it is in resources)
+#if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) ||
defined(__WXMGL__) || defined(__WXX11__)
+ #include "logo_connected.xpm"
+#endif
+
+#include "logo_disconnected.xpm"
+
+#include "wx/taskbar.h"
+#include "systray.h"
+
+// Declare two frames
+MyDialog *dialog = NULL;
+
+IMPLEMENT_APP(MyApp)
+
+bool MyApp::OnInit(void)
+{
+ // Create the main frame window
+ dialog = new MyDialog(NULL, wxID_ANY, wxT("wxTaskBarIcon Test Dialog"),
wxDefaultPosition, wxSize(365, 290));
+
+ //dialog->Show(true);
+
+ return true;
+}
+
+
+BEGIN_EVENT_TABLE(MyDialog, wxDialog)
+ EVT_BUTTON(wxID_OK, MyDialog::OnOK)
+ EVT_BUTTON(wxID_EXIT, MyDialog::OnExit)
+ EVT_CLOSE(MyDialog::OnCloseWindow)
+END_EVENT_TABLE()
+
+
+MyDialog::MyDialog(wxWindow* parent, const wxWindowID id, const wxString&
title,
+ const wxPoint& pos, const wxSize& size, const long windowStyle):
+ wxDialog(parent, id, title, pos, size, windowStyle)
+{
+ Init();
+}
+
+MyDialog::~MyDialog()
+{
+ delete m_taskBarIcon;
+#if defined(__WXCOCOA__)
+ delete m_dockIcon;
+#endif
+}
+
+void MyDialog::OnOK(wxCommandEvent& WXUNUSED(event))
+{
+ Show(false);
+}
+
+void MyDialog::OnExit(wxCommandEvent& WXUNUSED(event))
+{
+ Close(true);
+}
+
+void MyDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
+{
+ Destroy();
+}
+
+void MyDialog::Init(void)
+{
+ (void)new wxStaticText(this, wxID_ANY, _T("Press 'Hide me' to hide me, Exit
to quit."),
+ wxPoint(10, 20));
+
+ (void)new wxStaticText(this, wxID_ANY, _T("Double-click on the taskbar icon
to show me again."),
+ wxPoint(10, 40));
+
+ (void)new wxButton(this, wxID_EXIT, _T("Exit"), wxPoint(185, 230),
wxSize(80, 25));
+ (new wxButton(this, wxID_OK, _T("Hide me"), wxPoint(100, 230), wxSize(80,
25)))->SetDefault();
+ Centre(wxBOTH);
+
+ m_taskBarIcon = new MyTaskBarIcon();
+#if defined(__WXCOCOA__)
+ m_dockIcon = new MyTaskBarIcon(wxTaskBarIcon::DOCK);
+#endif
+ if (!m_taskBarIcon->SetIcon(wxICON(logo_connected), wxT("wxTaskBarIcon
Sample")))
+ wxMessageBox(wxT("Could not set icon."));
+}
+
+
+enum {
+ PU_RESTORE = 10001,
+ PU_NEW_ICON,
+ PU_OLD_ICON,
+ PU_EXIT,
+ PU_CHECKMARK,
+ PU_SUB1,
+ PU_SUB2,
+ PU_SUBMAIN
+};
+
+
+BEGIN_EVENT_TABLE(MyTaskBarIcon, wxTaskBarIcon)
+ EVT_MENU(PU_RESTORE, MyTaskBarIcon::OnMenuRestore)
+ EVT_MENU(PU_EXIT, MyTaskBarIcon::OnMenuExit)
+ EVT_MENU(PU_NEW_ICON,MyTaskBarIcon::OnMenuSetNewIcon)
+ EVT_MENU(PU_OLD_ICON,MyTaskBarIcon::OnMenuSetOldIcon)
+ EVT_MENU(PU_CHECKMARK,MyTaskBarIcon::OnMenuCheckmark)
+ EVT_UPDATE_UI(PU_CHECKMARK,MyTaskBarIcon::OnMenuUICheckmark)
+ EVT_TASKBAR_LEFT_DCLICK (MyTaskBarIcon::OnLeftButtonDClick)
+ EVT_MENU(PU_SUB1, MyTaskBarIcon::OnMenuSub)
+ EVT_MENU(PU_SUB2, MyTaskBarIcon::OnMenuSub)
+END_EVENT_TABLE()
+
+void MyTaskBarIcon::OnMenuRestore(wxCommandEvent& )
+{
+ dialog->Show(true);
+}
+
+void MyTaskBarIcon::OnMenuExit(wxCommandEvent& )
+{
+ dialog->Close(true);
+}
+
+static bool check = true;
+
+void MyTaskBarIcon::OnMenuCheckmark(wxCommandEvent& )
+{
+ check =!check;
+}
+
+void MyTaskBarIcon::OnMenuUICheckmark(wxUpdateUIEvent &event)
+{
+ event.Check( check );
+}
+
+void MyTaskBarIcon::OnMenuSetNewIcon(wxCommandEvent&)
+{
+ wxIcon icon(logo_disconnected_xpm);
+
+ if (!SetIcon(icon, wxT("wxTaskBarIcon Sample - a different icon")))
+ wxMessageBox(wxT("Could not set new icon."));
+}
+
+void MyTaskBarIcon::OnMenuSetOldIcon(wxCommandEvent&)
+{
+ if (IsIconInstalled())
+ {
+ RemoveIcon();
+ }
+ else
+ {
+ wxMessageBox(wxT("wxTaskBarIcon Sample - icon already is the old
version"));
+ }
+}
+
+void MyTaskBarIcon::OnMenuSub(wxCommandEvent&)
+{
+ wxMessageBox(wxT("You clicked on a submenu!"));
+}
+
+// Overridables
+wxMenu *MyTaskBarIcon::CreatePopupMenu()
+{
+ // Try creating menus different ways
+ // TODO: Probably try calling SetBitmap with some XPMs here
+ wxMenu *menu = new wxMenu;
+ menu->Append(PU_RESTORE, _T("&Restore TBTest"));
+ menu->AppendSeparator();
+ menu->Append(PU_OLD_ICON, _T("&Restore Old Icon"));
+ menu->Append(PU_NEW_ICON, _T("&Set New Icon"));
+ menu->AppendSeparator();
+ menu->Append(PU_CHECKMARK, _T("Checkmark"),wxT(""), wxITEM_CHECK);
+ menu->AppendSeparator();
+ wxMenu *submenu = new wxMenu;
+ submenu->Append(PU_SUB1, _T("One submenu"));
+ submenu->AppendSeparator();
+ submenu->Append(PU_SUB2, _T("Another submenu"));
+ menu->Append(PU_SUBMAIN, _T("Submenu"), submenu);
+#ifndef __WXMAC_OSX__ /*Mac has built-in quit menu*/
+ menu->AppendSeparator();
+ menu->Append(PU_EXIT, _T("E&xit"));
+#endif
+ return menu;
+}
+
+void MyTaskBarIcon::OnLeftButtonDClick(wxTaskBarIconEvent&)
+{
+ dialog->Show(true);
+}
Added: trunk/apps/wxFCP/demo/SysTray/systray.h
===================================================================
--- trunk/apps/wxFCP/demo/SysTray/systray.h (rev 0)
+++ trunk/apps/wxFCP/demo/SysTray/systray.h 2009-02-04 11:53:20 UTC (rev
25536)
@@ -0,0 +1,63 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name: tbtest.h
+// Purpose: wxTaskBarIcon sample
+// Author: Julian Smart
+// Modified by:
+// Created: 01/02/97
+// RCS-ID: $Id: tbtest.h 36336 2005-12-03 17:55:33Z vell $
+// Copyright: (c)
+// Licence: wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+class MyTaskBarIcon: public wxTaskBarIcon
+{
+public:
+#if defined(__WXCOCOA__)
+ MyTaskBarIcon(wxTaskBarIconType iconType = DEFAULT_TYPE)
+ : wxTaskBarIcon(iconType)
+#else
+ MyTaskBarIcon()
+#endif
+ {}
+
+ void OnLeftButtonDClick(wxTaskBarIconEvent&);
+ void OnMenuRestore(wxCommandEvent&);
+ void OnMenuExit(wxCommandEvent&);
+ void OnMenuSetNewIcon(wxCommandEvent&);
+ void OnMenuSetOldIcon(wxCommandEvent&);
+ void OnMenuCheckmark(wxCommandEvent&);
+ void OnMenuUICheckmark(wxUpdateUIEvent&);
+ void OnMenuSub(wxCommandEvent&);
+ virtual wxMenu *CreatePopupMenu();
+
+DECLARE_EVENT_TABLE()
+};
+
+
+// Define a new application
+class MyApp: public wxApp
+{
+public:
+ bool OnInit(void);
+};
+
+class MyDialog: public wxDialog
+{
+public:
+ MyDialog(wxWindow* parent, const wxWindowID id, const wxString& title,
+ const wxPoint& pos, const wxSize& size, const long windowStyle =
wxDEFAULT_DIALOG_STYLE);
+ ~MyDialog();
+
+ void OnOK(wxCommandEvent& event);
+ void OnExit(wxCommandEvent& event);
+ void OnCloseWindow(wxCloseEvent& event);
+ void Init(void);
+
+protected:
+ MyTaskBarIcon *m_taskBarIcon;
+#if defined(__WXCOCOA__)
+ MyTaskBarIcon *m_dockIcon;
+#endif
+
+DECLARE_EVENT_TABLE()
+};
_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs