home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- import os
- import wx
- import objc
- from AppKit import *
- from Foundation import *
- import tempfile
- import util.observe as observe
- from gui.uberwidgets.umenu import UMenu
- NSApplicationLoad()
-
- class Notifier(observe.Observable):
-
- def __init__(self, parent):
- self.parent = parent
-
-
- def on_account_updated(self, *a):
- pool = NSAutoreleasePool.alloc().init()
- self.parent.on_account_updated(*a)
- pool.release()
-
-
-
- class MenuBarIconDelegate(NSObject):
-
- def initWithAccount(self, acct, infobox):
- pool = NSAutoreleasePool.alloc().init()
- self.acct = acct
- self.infobox = infobox
- UMenu = UMenu
- import gui.uberwidgets.umenu
- self._menu = UMenu(wx.FindWindowByName('Buddy List'), onshow = self.update_menu)
- statusbar = NSStatusBar.systemStatusBar()
- self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
- self.statusitem.setTarget_(self)
- self.statusitem.setAction_('itemClicked:')
- self.observer = Notifier(self)
- acct.add_observer(self.observer.on_account_updated, 'count', 'state', obj = self.observer)
- self.on_account_updated()
- pool.release()
-
-
- def Destroy(self):
- self.acct.remove_observer(self.observer.on_account_updated)
- return True
-
-
- def SetIcon(self, icon, tooltip = None):
- pool = NSAutoreleasePool.alloc().init()
- (handle, filename) = tempfile.mkstemp()
- pngfilename = filename + '.png'
- os.close(handle)
- os.rename(filename, pngfilename)
- icon.WXB.SaveFile(pngfilename, wx.BITMAP_TYPE_PNG)
- nsicon = NSImage.alloc().initWithContentsOfFile_(pngfilename)
- self.statusitem.setImage_(nsicon)
- if tooltip:
- self.statusitem.setToolTip_(tooltip)
-
- pool.release()
-
-
- def _IconSize(self):
- return 16
-
- _IconSize = property(_IconSize)
-
- def umenuToNSMenu(self, umenu):
- pool = NSAutoreleasePool.alloc().init()
- menu = NSMenu.alloc().initWithTitle_('submenu')
- for item in umenu:
- fullname = item.GetItemLabel()
- accel = ''
- if fullname.find('\\t') != -1:
- (fullname, accel) = fullname.split('\\t')
-
- if item.IsSeparator():
- menu.addItem_(NSMenuItem.separatorItem())
- continue
- nsitem = menu.addItemWithTitle_action_keyEquivalent_(item.GetItemLabelText(), 'menuItemClicked:', accel)
- if item.GetSubMenu():
- submenu = self.umenuToNSMenu(item.GetSubMenu())
- menu.setSubMenu_forItem_(submenu, nsitem)
-
- nsitem.setTarget_(self)
-
- pool.release()
- return menu
-
-
- def itemClicked_(self, sender):
- self.update_menu()
- if hasattr(self, 'subMenu'):
- del self.subMenu
-
- self.subMenu = self.umenuToNSMenu(self._menu)
- if self.subMenu:
- self.statusitem.popUpStatusItemMenu_(self.subMenu)
-
-
-
- def menuItemClicked_(self, sender):
- self.fireHandlerForMenu(sender, self._menu)
-
-
- def fireHandlerForMenu(self, sender, menu):
- for item in menu:
- print 'Title is %s, sender title is %s' % (item.GetItemLabelText(), sender.title())
- if item.GetItemLabelText() == sender.title():
-
- try:
- callback = self._menu.cbs[item.GetId()]
- callback()
- except KeyError:
- pass
- except:
- None<EXCEPTION MATCH>KeyError
-
-
- None<EXCEPTION MATCH>KeyError
- if item.GetSubMenu():
- self.fireHandlerForMenu(sender, item.GetSubMenu())
- continue
-
-
-
-