home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2009 June / maximum-cd-2009-06.iso / DiscContents / digsby_setup.exe / lib / gui / native / mac / macmenuicon.pyo (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2009-02-26  |  4.6 KB  |  130 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import os
  5. import wx
  6. import objc
  7. from AppKit import *
  8. from Foundation import *
  9. import tempfile
  10. import util.observe as observe
  11. from gui.uberwidgets.umenu import UMenu
  12. NSApplicationLoad()
  13.  
  14. class Notifier(observe.Observable):
  15.     
  16.     def __init__(self, parent):
  17.         self.parent = parent
  18.  
  19.     
  20.     def on_account_updated(self, *a):
  21.         pool = NSAutoreleasePool.alloc().init()
  22.         self.parent.on_account_updated(*a)
  23.         pool.release()
  24.  
  25.  
  26.  
  27. class MenuBarIconDelegate(NSObject):
  28.     
  29.     def initWithAccount(self, acct, infobox):
  30.         pool = NSAutoreleasePool.alloc().init()
  31.         self.acct = acct
  32.         self.infobox = infobox
  33.         UMenu = UMenu
  34.         import gui.uberwidgets.umenu
  35.         self._menu = UMenu(wx.FindWindowByName('Buddy List'), onshow = self.update_menu)
  36.         statusbar = NSStatusBar.systemStatusBar()
  37.         self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
  38.         self.statusitem.setTarget_(self)
  39.         self.statusitem.setAction_('itemClicked:')
  40.         self.observer = Notifier(self)
  41.         acct.add_observer(self.observer.on_account_updated, 'count', 'state', obj = self.observer)
  42.         self.on_account_updated()
  43.         pool.release()
  44.  
  45.     
  46.     def Destroy(self):
  47.         self.acct.remove_observer(self.observer.on_account_updated)
  48.         return True
  49.  
  50.     
  51.     def SetIcon(self, icon, tooltip = None):
  52.         pool = NSAutoreleasePool.alloc().init()
  53.         (handle, filename) = tempfile.mkstemp()
  54.         pngfilename = filename + '.png'
  55.         os.close(handle)
  56.         os.rename(filename, pngfilename)
  57.         icon.WXB.SaveFile(pngfilename, wx.BITMAP_TYPE_PNG)
  58.         nsicon = NSImage.alloc().initWithContentsOfFile_(pngfilename)
  59.         self.statusitem.setImage_(nsicon)
  60.         if tooltip:
  61.             self.statusitem.setToolTip_(tooltip)
  62.         
  63.         pool.release()
  64.  
  65.     
  66.     def _IconSize(self):
  67.         return 16
  68.  
  69.     _IconSize = property(_IconSize)
  70.     
  71.     def umenuToNSMenu(self, umenu):
  72.         pool = NSAutoreleasePool.alloc().init()
  73.         menu = NSMenu.alloc().initWithTitle_('submenu')
  74.         for item in umenu:
  75.             fullname = item.GetItemLabel()
  76.             accel = ''
  77.             if fullname.find('\\t') != -1:
  78.                 (fullname, accel) = fullname.split('\\t')
  79.             
  80.             if item.IsSeparator():
  81.                 menu.addItem_(NSMenuItem.separatorItem())
  82.                 continue
  83.             nsitem = menu.addItemWithTitle_action_keyEquivalent_(item.GetItemLabelText(), 'menuItemClicked:', accel)
  84.             if item.GetSubMenu():
  85.                 submenu = self.umenuToNSMenu(item.GetSubMenu())
  86.                 menu.setSubMenu_forItem_(submenu, nsitem)
  87.             
  88.             nsitem.setTarget_(self)
  89.         
  90.         pool.release()
  91.         return menu
  92.  
  93.     
  94.     def itemClicked_(self, sender):
  95.         self.update_menu()
  96.         if hasattr(self, 'subMenu'):
  97.             del self.subMenu
  98.         
  99.         self.subMenu = self.umenuToNSMenu(self._menu)
  100.         if self.subMenu:
  101.             self.statusitem.popUpStatusItemMenu_(self.subMenu)
  102.         
  103.  
  104.     
  105.     def menuItemClicked_(self, sender):
  106.         self.fireHandlerForMenu(sender, self._menu)
  107.  
  108.     
  109.     def fireHandlerForMenu(self, sender, menu):
  110.         for item in menu:
  111.             print 'Title is %s, sender title is %s' % (item.GetItemLabelText(), sender.title())
  112.             if item.GetItemLabelText() == sender.title():
  113.                 
  114.                 try:
  115.                     callback = self._menu.cbs[item.GetId()]
  116.                     callback()
  117.                 except KeyError:
  118.                     pass
  119.                 except:
  120.                     None<EXCEPTION MATCH>KeyError
  121.                 
  122.  
  123.             None<EXCEPTION MATCH>KeyError
  124.             if item.GetSubMenu():
  125.                 self.fireHandlerForMenu(sender, item.GetSubMenu())
  126.                 continue
  127.         
  128.  
  129.  
  130.