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

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import wx
  5. import sys
  6. import gui.uberwidgets.umenu as gui
  7. item_types = [
  8.     'normal',
  9.     'checkbox',
  10.     'radio',
  11.     'separator']
  12.  
  13. def wxTypeForItemType(type):
  14.     if not type or type == 'normal':
  15.         return wx.ITEM_NORMAL
  16.     
  17.     if type == 'checkbox':
  18.         return wx.ITEM_CHECK
  19.     
  20.     if type == 'radio':
  21.         return wx.ITEM_RADIO
  22.     
  23.     if type == 'separator':
  24.         return wx.ITEM_SEPARATOR
  25.     
  26.  
  27.  
  28. def set_menubar(parent, menus, umenu = False):
  29.     if not umenu:
  30.         menubar = wx.MenuBar()
  31.     else:
  32.         menubar = gui.uberwidgets.umenu.UMenuBar(parent)
  33.     for menu in menus:
  34.         label = menu.label
  35.         if umenu:
  36.             menu = menu.asUMenu(parent)
  37.         else:
  38.             menu = menu.asWxMenu()
  39.         menubar.Append(menu, label)
  40.     
  41.     if not umenu:
  42.         parent.SetMenuBar(menubar)
  43.     
  44.     return menubar
  45.  
  46.  
  47. class Menu(object):
  48.     
  49.     def __init__(self, label = '', items = None):
  50.         self.label = label
  51.         if items:
  52.             self.items = items
  53.         else:
  54.             self.items = []
  55.  
  56.     
  57.     def __repr__(self):
  58.         return '<Menu "%s"\n%s>' % (self.label, '\n'.join((lambda .0: for item in .0:
  59. '    ' + repr(item))(self)))
  60.  
  61.     
  62.     def __iter__(self):
  63.         return iter(self.items)
  64.  
  65.     
  66.     def __len__(self):
  67.         return len(self.items)
  68.  
  69.     
  70.     def addItem(self, label, description = '', id = None, type = 'normal', defaultAccel = None, customAccel = None, subMenu = None, bitmap = None):
  71.         item = MenuItem(label, description, id, type, defaultAccel, customAccel, subMenu, bitmap)
  72.         self.items.append(item)
  73.         return item
  74.  
  75.     
  76.     def addSep(self):
  77.         item = MenuItem(label = '', type = 'separator')
  78.         self.items.append(item)
  79.         return item
  80.  
  81.     
  82.     def asWxMenu(self):
  83.         menu = wx.Menu()
  84.         for item in self.items:
  85.             menu.AppendItem(item.asWxMenuItem(menu))
  86.         
  87.         return menu
  88.  
  89.     
  90.     def asUMenu(self, parent, windowless = False):
  91.         menu = gui.uberwidgets.umenu.UMenu(parent, windowless = windowless)
  92.         for item in self.items:
  93.             item.asUMenuItem(menu)
  94.         
  95.         return menu
  96.  
  97.  
  98.  
  99. class MenuItem(object):
  100.     
  101.     def __init__(self, label, description = '', id = None, type = 'normal', defaultAccel = None, customAccel = None, subMenu = None, bitmap = None):
  102.         self.label = label
  103.         self.description = description
  104.         self.defaultAccel = defaultAccel
  105.         self.customAccel = customAccel
  106.         self.type = type
  107.         self.subMenu = subMenu
  108.         self.bitmap = bitmap
  109.         if type == 'separator':
  110.             id = wx.ID_SEPARATOR
  111.         elif id is None:
  112.             id = wx.NewId()
  113.         
  114.         self.id = id
  115.  
  116.     
  117.     def __repr__(self):
  118.         if self.type == 'separator':
  119.             return '<MenuItem (separator)>'
  120.         else:
  121.             return '<MenuItem: id=%d, label=%r, desc=%s, defaultAccel=%s, customAccel=%s, type=%s>' % (self.id, self.label, self.description, self.defaultAccel, self.customAccel, self.type)
  122.  
  123.     
  124.     def asWxMenuItem(self, menu = None):
  125.         label = self.label
  126.         if self.customAccel:
  127.             label += '\t' + self.customAccel
  128.         elif self.defaultAccel:
  129.             label += '\t' + self.defaultAccel
  130.         
  131.         subMenu = None
  132.         if self.subMenu is not None:
  133.             subMenu = self.subMenu.asWxMenu()
  134.         
  135.         item = wx.MenuItem(menu, self.id, label, self.description, wxTypeForItemType(self.type), subMenu)
  136.         if self.bitmap:
  137.             item.SetBitmap(self.bitmap)
  138.         
  139.         return item
  140.  
  141.     
  142.     def asUMenuItem(self, umenu):
  143.         if self.subMenu is not None:
  144.             return umenu.AddSubMenu(self.subMenu.asUMenu(umenu.Window), self.label, self.bitmap)
  145.         elif self.type == 'checkbox':
  146.             item = umenu.AddCheckItem(self.label)
  147.             item.Id = self.id
  148.             return item
  149.         elif self.type == 'radio':
  150.             item = umenu.AddRadioItem(self.label)
  151.             item.Id = self.id
  152.             return item
  153.         else:
  154.             return umenu.Append(self.id, self.label, self.bitmap)
  155.  
  156.  
  157. if __name__ == '__main__':
  158.     
  159.     def _(text):
  160.         return text
  161.  
  162.     from tests.testapp import testapp
  163.     app = testapp('../../..')
  164.     frame = wx.Frame(None, -1)
  165.     frame.Sizer = sizer = wx.BoxSizer(wx.VERTICAL)
  166.     use_umenu = False
  167.     menus = digsbyWxMenuBar(use_umenu, frame)
  168.     menubar = set_menubar(frame, menus, use_umenu)
  169.     app.SetTopWindow(frame)
  170.     if use_umenu:
  171.         sizer.Add(menubar.SizableWindow, 0, wx.EXPAND)
  172.     
  173.     frame.Show()
  174.     app.MainLoop()
  175.  
  176.