home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / gui / native / mac / macmenuicon.pyo (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  4.8 KB  |  159 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  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. from machelpers import *
  13. NSApplicationLoad()
  14.  
  15. class Notifier(observe.Observable):
  16.     
  17.     def __init__(self, parent):
  18.         self.parent = parent
  19.  
  20.     
  21.     def on_account_updated(self, *a):
  22.         nspool().__enter__()
  23.         
  24.         try:
  25.             wx.CallAfter(self.parent.on_account_updated, a)
  26.         finally:
  27.             pass
  28.  
  29.  
  30.  
  31.  
  32. class MenuBarIconDelegate(NSObject):
  33.     
  34.     def initWithAccount(self, acct, infobox):
  35.         nspool().__enter__()
  36.         
  37.         try:
  38.             self.acct = acct
  39.             self.infobox = infobox
  40.             UMenu = UMenu
  41.             import gui.uberwidgets.umenu
  42.             self._menu = UMenu(wx.FindWindowByName('Buddy List'), onshow = self.update_menu)
  43.             statusbar = NSStatusBar.systemStatusBar()
  44.             self.statusitem = statusbar.statusItemWithLength_(NSVariableStatusItemLength)
  45.             self.statusitem.setTarget_(self)
  46.             self.statusitem.setAction_('itemClicked:')
  47.             self.observer = Notifier(self)
  48.             acct.add_observer(self.observer.on_account_updated, 'count', 'state', obj = self.observer)
  49.             self.on_account_updated()
  50.         finally:
  51.             pass
  52.  
  53.  
  54.     
  55.     def Destroy(self):
  56.         nspool().__enter__()
  57.         
  58.         try:
  59.             self.acct.remove_observer(self.observer.on_account_updated)
  60.             NSStatusBar.systemStatusBar().removeStatusItem_(self.statusitem)
  61.             del self.statusitem
  62.         finally:
  63.             pass
  64.  
  65.         return True
  66.  
  67.     
  68.     def SetIcon(self, icon, tooltip = None):
  69.         nspool().__enter__()
  70.         
  71.         try:
  72.             (handle, filename) = tempfile.mkstemp()
  73.             pngfilename = filename + '.png'
  74.             os.close(handle)
  75.             os.rename(filename, pngfilename)
  76.             icon.WXB.SaveFile(pngfilename, wx.BITMAP_TYPE_PNG)
  77.             nsicon = NSImage.alloc().initWithContentsOfFile_(pngfilename)
  78.             self.statusitem.setImage_(nsicon)
  79.             if tooltip:
  80.                 self.statusitem.setToolTip_(tooltip)
  81.         finally:
  82.             pass
  83.  
  84.  
  85.     
  86.     def _IconSize(self):
  87.         return 16
  88.  
  89.     _IconSize = property(_IconSize)
  90.     
  91.     def umenuToNSMenu(self, umenu):
  92.         nspool().__enter__()
  93.         
  94.         try:
  95.             menu = NSMenu.alloc().initWithTitle_('submenu')
  96.             for item in umenu:
  97.                 fullname = item.GetItemLabel()
  98.                 accel = ''
  99.                 if item.IsSeparator():
  100.                     menu.addItem_(NSMenuItem.separatorItem())
  101.                     continue
  102.                 None if fullname.find('\\t') != -1 else nspool()
  103.                 nsitem = menu.addItemWithTitle_action_keyEquivalent_(item.GetItemLabelText(), 'menuItemClicked:', accel)
  104.                 if item.GetSubMenu():
  105.                     submenu = self.umenuToNSMenu(item.GetSubMenu())
  106.                     menu.setSubMenu_forItem_(submenu, nsitem)
  107.                 
  108.                 nsitem.setTarget_(self)
  109.             
  110.             return menu
  111.         finally:
  112.             pass
  113.  
  114.  
  115.     
  116.     def itemClicked_(self, sender):
  117.         nspool().__enter__()
  118.         
  119.         try:
  120.             self.update_menu()
  121.             self.subMenu = self.umenuToNSMenu(self._menu)
  122.             if self.subMenu:
  123.                 self.statusitem.popUpStatusItemMenu_(self.subMenu)
  124.         finally:
  125.             pass
  126.  
  127.  
  128.     
  129.     def menuItemClicked_(self, sender):
  130.         nspool().__enter__()
  131.         
  132.         try:
  133.             self.fireHandlerForMenu(sender, self._menu)
  134.         finally:
  135.             pass
  136.  
  137.  
  138.     
  139.     def fireHandlerForMenu(self, sender, menu):
  140.         for item in menu:
  141.             if item.GetItemLabelText() == sender.title():
  142.                 
  143.                 try:
  144.                     callback = self._menu.cbs[item.GetId()]
  145.                     callback()
  146.                 except KeyError:
  147.                     pass
  148.                 except:
  149.                     None<EXCEPTION MATCH>KeyError
  150.                 
  151.  
  152.             None<EXCEPTION MATCH>KeyError
  153.             if item.GetSubMenu():
  154.                 self.fireHandlerForMenu(sender, item.GetSubMenu())
  155.                 continue
  156.         
  157.  
  158.  
  159.