From 0a9d14c47cf244de07c4cd06514a7c730ea9ed0b Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 20 Apr 2012 05:41:54 +0000 Subject: [PATCH] Add wx.adv.TaskBarIcon git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@71243 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- etg/_adv.py | 2 +- etg/taskbar.py | 81 +++++++++++++++++++++++++++++++++++++++ unittests/test_taskbar.py | 42 ++++++++++++++++++++ 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 etg/taskbar.py create mode 100644 unittests/test_taskbar.py diff --git a/etg/_adv.py b/etg/_adv.py index 328e25a8..a2f3bbee 100644 --- a/etg/_adv.py +++ b/etg/_adv.py @@ -33,6 +33,7 @@ INCLUDES = [ 'calctrl', 'hyperlink', 'tipdlg', + 'taskbar', # TODOs - @@ -50,7 +51,6 @@ INCLUDES = [ #'sashwin', #'sound', #'splash', - #'taskbar', #'timectrl', #'treelist', #'wizard', diff --git a/etg/taskbar.py b/etg/taskbar.py new file mode 100644 index 00000000..f58868b6 --- /dev/null +++ b/etg/taskbar.py @@ -0,0 +1,81 @@ +#--------------------------------------------------------------------------- +# Name: etg/taskbar.py +# Author: Robin Dunn +# +# Created: 19-Apr-2012 +# Copyright: (c) 2012 by Total Control Software +# License: wxWindows License +#--------------------------------------------------------------------------- + +import etgtools +import etgtools.tweaker_tools as tools + +PACKAGE = "wx" +MODULE = "_adv" +NAME = "taskbar" # Base name of the file to generate to for this script +DOCSTRING = "" + +# The classes and/or the basename of the Doxygen XML files to be processed by +# this script. +ITEMS = [ "wxTaskBarIconEvent", + "wxTaskBarIcon", + ] + +#--------------------------------------------------------------------------- + +def run(): + # Parse the XML file(s) building a collection of Extractor objects + module = etgtools.ModuleDef(PACKAGE, MODULE, NAME, DOCSTRING) + etgtools.parseDoxyXML(module, ITEMS) + + #----------------------------------------------------------------- + # Tweak the parsed meta objects in the module object as needed for + # customizing the generated code and docstrings. + + module.addHeaderCode('#include ') + + c = module.find('wxTaskBarIconEvent') + assert isinstance(c, etgtools.ClassDef) + tools.fixEventClass(c) + + c.addPyCode("""\ + EVT_TASKBAR_MOVE = wx.PyEventBinder ( wxEVT_TASKBAR_MOVE ) + EVT_TASKBAR_LEFT_DOWN = wx.PyEventBinder ( wxEVT_TASKBAR_LEFT_DOWN ) + EVT_TASKBAR_LEFT_UP = wx.PyEventBinder ( wxEVT_TASKBAR_LEFT_UP ) + EVT_TASKBAR_RIGHT_DOWN = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_DOWN ) + EVT_TASKBAR_RIGHT_UP = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_UP ) + EVT_TASKBAR_LEFT_DCLICK = wx.PyEventBinder ( wxEVT_TASKBAR_LEFT_DCLICK ) + EVT_TASKBAR_RIGHT_DCLICK = wx.PyEventBinder ( wxEVT_TASKBAR_RIGHT_DCLICK ) + EVT_TASKBAR_CLICK = wx.PyEventBinder ( wxEVT_TASKBAR_CLICK ) + EVT_TASKBAR_BALLOON_TIMEOUT = wx.PyEventBinder ( wxEVT_TASKBAR_BALLOON_TIMEOUT ) + EVT_TASKBAR_BALLOON_CLICK = wx.PyEventBinder ( wxEVT_TASKBAR_BALLOON_CLICK ) + """) + + + c = module.find('wxTaskBarIcon') + c.find('CreatePopupMenu').ignore(False) + c.find('Destroy').transferThis = True + + c.addCppMethod('bool', 'ShowBalloon', '(const wxString& title, const wxString& text,' + 'unsigned msec = 0, int flags = 0)', + doc="""\ + Show a balloon notification (the icon must have been already + initialized using SetIcon). Only implemented for Windows. + """, + body="""\ + #ifdef __WXMSW__ + return self->ShowBalloon(*title, *text, msec, flags); + #else + return false; + #endif + """) + + #----------------------------------------------------------------- + tools.doCommonTweaks(module) + tools.runGenerators(module) + + +#--------------------------------------------------------------------------- +if __name__ == '__main__': + run() + diff --git a/unittests/test_taskbar.py b/unittests/test_taskbar.py new file mode 100644 index 00000000..48fbd45a --- /dev/null +++ b/unittests/test_taskbar.py @@ -0,0 +1,42 @@ +import imp_unittest, unittest +import wtc +import wx +import wx.adv +import os + +icoFile = os.path.join(os.path.dirname(__file__), 'mondrian.ico') + +#--------------------------------------------------------------------------- + +class taskbar_Tests(wtc.WidgetTestCase): + + def test_taskbar1(self): + icon = wx.adv.TaskBarIcon(wx.adv.TBI_DOCK) + icon.SetIcon(wx.Icon(icoFile), "The tip string") + self.assertTrue(icon.IsOk()) + icon.Destroy() + self.myYield() + + + def test_taskbar2(self): + wx.adv.TBI_DOCK + wx.adv.TBI_CUSTOM_STATUSITEM + wx.adv.TBI_DEFAULT_TYPE + + wx.adv.TaskBarIconEvent + + wx.adv.wxEVT_TASKBAR_MOVE + wx.adv.wxEVT_TASKBAR_LEFT_DOWN + wx.adv.wxEVT_TASKBAR_LEFT_UP + wx.adv.wxEVT_TASKBAR_RIGHT_DOWN + wx.adv.wxEVT_TASKBAR_RIGHT_UP + wx.adv.wxEVT_TASKBAR_LEFT_DCLICK + wx.adv.wxEVT_TASKBAR_RIGHT_DCLICK + wx.adv.wxEVT_TASKBAR_CLICK + wx.adv.wxEVT_TASKBAR_BALLOON_TIMEOUT + wx.adv.wxEVT_TASKBAR_BALLOON_CLICK + +#--------------------------------------------------------------------------- + +if __name__ == '__main__': + unittest.main()