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

Reply via email to