]> git.saurik.com Git - wxWidgets.git/commitdiff
add drawer sample
authorRyan Norton <wxprojects@comcast.net>
Sun, 26 Sep 2004 15:34:39 +0000 (15:34 +0000)
committerRyan Norton <wxprojects@comcast.net>
Sun, 26 Sep 2004 15:34:39 +0000 (15:34 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/drawer/drawer.bkl [new file with mode: 0644]
samples/drawer/drawertest.cpp [new file with mode: 0644]
samples/drawer/drawertest.h [new file with mode: 0644]

diff --git a/samples/drawer/drawer.bkl b/samples/drawer/drawer.bkl
new file mode 100644 (file)
index 0000000..f52eb24
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" ?>
+<makefile>
+
+    <include file="../../build/bakefiles/common_samples.bkl"/>
+
+    <exe id="drawer" template="wx_sample" template_append="wx_append">
+        <sources>drawertest.cpp</sources>
+        <wx-lib>adv</wx-lib>
+        <wx-lib>core</wx-lib>
+        <wx-lib>base</wx-lib>
+    </exe>
+
+</makefile>
diff --git a/samples/drawer/drawertest.cpp b/samples/drawer/drawertest.cpp
new file mode 100644 (file)
index 0000000..5bc61d1
--- /dev/null
@@ -0,0 +1,266 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        tbtest.cpp
+// Purpose:     wxTaskBarIcon demo
+// Author:      Julian Smart
+// Modified by: Ryan Norton (Drawer)
+// Created:     01/02/97
+// RCS-ID:      $Id$
+// 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 "../sample.xpm"
+#endif
+
+#include "smile.xpm"
+
+#include "wx/taskbar.h"
+
+#if defined(__WXMAC__)
+#include "wx/mac/private.h"
+#endif
+
+//include this sample's header
+#include "tbtest.h"
+
+
+#if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
+
+//drawer
+#include "wx/dcclient.h"
+#include "wx/mac/carbon/drawer.h"
+
+class MyDrawer : public wxDrawerWindow
+{
+    public:
+    MyDrawer(wxWindow* p) : wxDrawerWindow(p, wxID_ANY, wxT(""), wxSize(200,200)) 
+    {  }
+    
+    void OnPaint(wxPaintEvent&)
+    {
+        wxPaintDC dc(this);
+        dc.DrawRectangle(30,30,60,60);
+    }
+    
+       DECLARE_EVENT_TABLE()
+};
+
+BEGIN_EVENT_TABLE(MyDrawer, wxDrawerWindow)
+    EVT_PAINT(MyDrawer::OnPaint)
+END_EVENT_TABLE()
+
+#endif 
+    //OSX 10.2+
+    
+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;
+}
+
+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);
+   
+#if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
+
+    MacSetMetalAppearance(true);
+    Show(TRUE);
+    MyDrawer* pMyDrawer = new MyDrawer(this);
+    pMyDrawer->Open(true);
+   
+    m_taskBarIcon = new MyTaskBarIcon(pMyDrawer);    
+#else
+    m_taskBarIcon = new MyTaskBarIcon();
+#endif
+    
+    if (!m_taskBarIcon->SetIcon(wxICON(sample), wxT("wxTaskBarIcon Sample")))
+        wxMessageBox(wxT("Could not set icon."));
+}
+
+
+enum {
+    PU_RESTORE = 10001,
+    
+    PU_NEW_ICON,
+    PU_OLD_ICON,
+    
+    PU_OPEN_DRAWER,
+    PU_CLOSE_DRAWER,
+    
+    PU_LEFT_DRAWER,
+    PU_RIGHT_DRAWER,
+    PU_TOP_DRAWER,
+    PU_BOTTOM_DRAWER,
+    
+    PU_EXIT,
+};
+
+
+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_OPEN_DRAWER,MyTaskBarIcon::OnMenuOpenDrawer)
+    EVT_MENU(PU_CLOSE_DRAWER,MyTaskBarIcon::OnMenuCloseDrawer)
+    EVT_MENU(PU_TOP_DRAWER,MyTaskBarIcon::OnMenuTopDrawer)
+    EVT_MENU(PU_BOTTOM_DRAWER,MyTaskBarIcon::OnMenuBottomDrawer)
+    EVT_MENU(PU_LEFT_DRAWER,MyTaskBarIcon::OnMenuLeftDrawer)
+    EVT_MENU(PU_RIGHT_DRAWER,MyTaskBarIcon::OnMenuRightDrawer)
+    EVT_TASKBAR_LEFT_DCLICK  (MyTaskBarIcon::OnLButtonDClick)
+END_EVENT_TABLE()
+
+void MyTaskBarIcon::OnMenuRestore(wxCommandEvent& )
+{
+    dialog->Show(true);
+}
+
+void MyTaskBarIcon::OnMenuExit(wxCommandEvent& )
+{
+    dialog->Close(true);
+}
+
+void MyTaskBarIcon::OnMenuSetNewIcon(wxCommandEvent&)
+{
+    wxIcon icon(smile_xpm);
+
+    if (!SetIcon(icon, wxT("wxTaskBarIcon Sample - a different icon")))
+        wxMessageBox(wxT("Could not set new icon."));
+}
+
+void MyTaskBarIcon::OnMenuSetOldIcon(wxCommandEvent&)
+{
+    wxIcon icon(wxT("wxDEFAULT_FRAME"));
+
+    if (!RemoveIcon())
+        wxMessageBox(wxT("Could not restore old icon."));
+}
+
+#if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
+
+void MyTaskBarIcon::OnMenuOpenDrawer(wxCommandEvent&)
+{
+    m_pMyDrawer->Open(true);
+}
+
+void MyTaskBarIcon::OnMenuCloseDrawer(wxCommandEvent&)
+{
+    m_pMyDrawer->Close();
+}
+
+void MyTaskBarIcon::OnMenuLeftDrawer(wxCommandEvent&)
+{
+    m_pMyDrawer->SetPreferredEdge(wxLEFT);
+}
+
+void MyTaskBarIcon::OnMenuRightDrawer(wxCommandEvent&)
+{
+    m_pMyDrawer->SetPreferredEdge(wxRIGHT);
+}
+
+void MyTaskBarIcon::OnMenuTopDrawer(wxCommandEvent&)
+{
+    m_pMyDrawer->SetPreferredEdge(wxTOP);
+}
+
+void MyTaskBarIcon::OnMenuBottomDrawer(wxCommandEvent&)
+{
+    m_pMyDrawer->SetPreferredEdge(wxBOTTOM);
+}
+#endif
+
+// Overridables
+wxMenu *MyTaskBarIcon::CreatePopupMenu()
+{
+    wxMenu *menu = new wxMenu;
+    
+    menu->Append(PU_RESTORE, _T("&Restore TBTest"));
+    menu->Append(PU_NEW_ICON,_T("&Set New Icon"));
+    menu->Append(PU_OLD_ICON,_T("&Restore Old Icon"));
+#if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
+    menu->AppendSeparator();
+    menu->Append(PU_OPEN_DRAWER,_T("Open Drawer"));
+    menu->Append(PU_CLOSE_DRAWER,_T("Close Drawer"));
+    menu->AppendSeparator();
+    menu->Append(PU_LEFT_DRAWER,_T("Set Drawer to come out on the LEFT side"));
+    menu->Append(PU_RIGHT_DRAWER,_T("Set Drawer to come out on the RIGHT side"));
+    menu->Append(PU_TOP_DRAWER,_T("Set Drawer to come out on the TOP side"));
+    menu->Append(PU_BOTTOM_DRAWER,_T("Set Drawer to come out on the BOTTOM side"));
+#else    
+    menu->AppendSeparator();
+    menu->Append(PU_EXIT,    _T("E&xit"));
+#endif
+    return menu;
+}
+
+void MyTaskBarIcon::OnLButtonDClick(wxTaskBarIconEvent&)
+{
+    dialog->Show(true);
+}
diff --git a/samples/drawer/drawertest.h b/samples/drawer/drawertest.h
new file mode 100644 (file)
index 0000000..be2613b
--- /dev/null
@@ -0,0 +1,68 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        tbtest.h
+// Purpose:     wxTaskBarIcon sample
+// Author:      Julian Smart
+// Modified by: Ryan Norton (OSX 10.2+ Drawer)
+// Created:     01/02/97
+// RCS-ID:      $Id$
+// Copyright:   (c)
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+class MyTaskBarIcon: public wxTaskBarIcon
+{
+public:
+    MyTaskBarIcon() {};
+
+    void OnLButtonDClick(wxTaskBarIconEvent&);
+    void OnMenuRestore(wxCommandEvent&);
+    void OnMenuExit(wxCommandEvent&);
+
+    void OnMenuSetNewIcon(wxCommandEvent&);
+    void OnMenuSetOldIcon(wxCommandEvent&);
+
+#if defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
+    class MyDrawer* m_pMyDrawer;
+    MyTaskBarIcon(class MyDrawer* p) {m_pMyDrawer = p;}
+
+    void OnMenuOpenDrawer(wxCommandEvent&);
+    void OnMenuCloseDrawer(wxCommandEvent&);
+
+    void OnMenuLeftDrawer(wxCommandEvent&);
+    void OnMenuRightDrawer(wxCommandEvent&);
+    void OnMenuTopDrawer(wxCommandEvent&);
+    void OnMenuBottomDrawer(wxCommandEvent&);
+#endif //10.2+
+
+    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;
+
+    DECLARE_EVENT_TABLE()
+};
+
+