Hi All Does anyone have any peice of wxPython code thats cross platform and allows an app to be minimised in the system tray. I am hoping for windows/kde/gnome/darwin if possible. I have been playing about and have a couple of systems that nearly get there but not quite.
I would llike to create an app that does this in the way limewire/skype etc. do it Hope you can help David Heres sample code that nearly gets there I think - it appears to work on ubuntu/gnome import wx ICON_STATE = 0 BLINK_STATE = 0 ID_ICON_TIMER = wx.NewId() class TaskBarApp(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, -1, title, size = (1, 1), style=wx.FRAME_NO_TASKBAR|wx.NO_FULL_REPAINT_ON_RESIZE) self.tbicon = wx.TaskBarIcon() icon = wx.Icon('yellow.ico', wx.BITMAP_TYPE_ICO) self.tbicon.SetIcon(icon, '') #wx.EVT_TASKBAR_LEFT_DCLICK(self.tbicon, self.OnTaskBarLeftDClick) #wx.EVT_TASKBAR_RIGHT_UP(self.tbicon, self.OnTaskBarRightClick) self.tbicon.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarLeftDClick) self.tbicon.Bind(wx.EVT_TASKBAR_RIGHT_UP, self.OnTaskBarRightClick) self.Bind(wx.EVT_TIMER, self.BlinkIcon, id=ID_ICON_TIMER) self.Show(True) def OnTaskBarLeftDClick(self, evt): global ICON_STATE try: self.icontimer.Stop() except: pass if ICON_STATE == 1: icon = wx.Icon('yellow.ico', wx.BITMAP_TYPE_ICO) self.tbicon.SetIcon(icon, 'Yellow') ICON_STATE = 0 else: self.SetIconTimer() ICON_STATE = 1 def OnTaskBarRightClick(self, evt): try: self.icontimer.Stop() except: pass self.tbicon.Destroy() self.Close(True) wx.GetApp().ProcessIdle() #def OnTaskBarRightClick(self, evt): # self.Close(True) # wx.GetApp().ProcessIdle() def SetIconTimer(self): self.icontimer = wx.Timer(self, ID_ICON_TIMER) wx.EVT_TIMER(self, ID_ICON_TIMER, self.BlinkIcon) self.icontimer.Start(1000) def BlinkIcon(self, evt): global BLINK_STATE if BLINK_STATE == 0: icon = wx.Icon('red.ico', wx.BITMAP_TYPE_ICO) self.tbicon.SetIcon(icon, 'Red') BLINK_STATE = 1 else: icon = wx.Icon('black.ico', wx.BITMAP_TYPE_ICO) self.tbicon.SetIcon(icon, 'Black') BLINK_STATE = 0 class MyApp(wx.App): def OnInit(self): frame = TaskBarApp(None, -1, ' ') frame.Center(wx.BOTH) frame.Show(False) return True def main(): app = MyApp(0) app.MainLoop() if __name__ == '__main__': main() -- http://mail.python.org/mailman/listinfo/python-list