home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / gui / uberwidgets / uberbook / UberBook.pyo (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  8.9 KB  |  215 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from __future__ import with_statement
  5. import wx
  6. from containers import PageContainer
  7. from dragtimer import WinDragTimer
  8. from OverlayImage import SimpleOverlayImage
  9. from tab import MultiTab
  10. from tabbar import TabBar
  11. from tabmanager import TabManager
  12. from common import pref, profile, setpref
  13. from logging import getLogger
  14. log = getLogger('uberbook')
  15. splitStyle = wx.SP_NOBORDER | wx.SP_LIVE_UPDATE
  16. wdt = WinDragTimer()
  17. tabman = TabManager()
  18. import config
  19. if config.platform == 'win':
  20.     import cgui
  21.     
  22.     class UberBookTabController(cgui.TabController):
  23.         
  24.         def OnTabClosed(self, tab):
  25.             ubertab = tab.Window.Tab
  26.             ubertab.CloseTab()
  27.  
  28.         
  29.         def OnTabActivated(self, tab):
  30.             ubertab = tab.Window.Tab
  31.             ubertab.SetActive(True)
  32.             tlw = tab.Window.Top
  33.             tlw.Show()
  34.             if tlw.IsIconized():
  35.                 tlw.Iconize(False)
  36.                 if hasattr(tlw, 'OnIconize'):
  37.                     S = Storage
  38.                     import util
  39.                     tlw.OnIconize(S(Skip = Null, Iconized = (lambda : False)))
  40.                 
  41.             
  42.             tlw.Raise()
  43.  
  44.  
  45.  
  46.  
  47. def install_taskbar_tabs(notebook, preview_type):
  48.     import gui.native.win.taskbar as tb
  49.     nb = tb.get_tab_notebook(notebook.Top)
  50.     (notebook, notebook.did_add) += (lambda win: nb.CreateTab(win, preview_type()))
  51.     notebook.did_remove += nb.DestroyTab
  52.     notebook.did_rearrange += nb.RearrangeTab
  53.     notebook.did_activate += nb.SetTabActive
  54.     (notebook.did_seticon,) += (lambda page, icon: if icon is not None:
  55. nb.SetTabIcon(page, icon)wx.NullBitmap)
  56.     notebook.did_settitle += nb.SetTabTitle
  57.  
  58.  
  59. class NoteBook(wx.SplitterWindow):
  60.     
  61.     def __init__(self, parent, skinkey, preview = None):
  62.         wx.SplitterWindow.__init__(self, parent, style = splitStyle)
  63.         self.window = parent.Top
  64.         self.manager = tabman
  65.         self.winman = None
  66.         self.manager.Register(self)
  67.         self.tabbar = TabBar(self, skinkey)
  68.         self.pagecontainer = PageContainer(self)
  69.         self.Bind(wx.EVT_ERASE_BACKGROUND, (lambda e: pass))
  70.         self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
  71.         self.Bind(wx.EVT_LEFT_UP, self.OnSplitMove)
  72.         self.Bind(wx.EVT_CLOSE, self.OnClose)
  73.         self.side_tabs_width = pref('tabs.side_tabs_width', 100)
  74.         profile.prefs.link('tabs.side_tabs', self.OnSideTabsSwitch)
  75.         Delegate = Delegate
  76.         import util.primitives.funcs
  77.         self.did_add = Delegate()
  78.         self.did_remove = Delegate()
  79.         self.did_rearrange = Delegate()
  80.         self.did_activate = Delegate()
  81.         self.did_seticon = Delegate()
  82.         self.did_settitle = Delegate()
  83.         if config.platform == 'win':
  84.             install_taskbar_tabs(self, preview)
  85.         
  86.  
  87.     
  88.     def OnClose(self, event):
  89.         self.manager.UnRegister(self)
  90.         event.Skip()
  91.  
  92.     
  93.     def ActiveTab(self):
  94.         return self.tabbar.ActiveTab
  95.  
  96.     ActiveTab = property(ActiveTab)
  97.     
  98.     def GetTabCount(self):
  99.         return self.tabbar.GetTabCount()
  100.  
  101.     
  102.     def Pages(self):
  103.         return _[1]
  104.  
  105.     
  106.     def NextTab(self):
  107.         return self.tabbar.NextTab()
  108.  
  109.     
  110.     def PrevTab(self):
  111.         return self.tabbar.PrevTab()
  112.  
  113.     
  114.     def UpdateSkin(self):
  115.         pass
  116.  
  117.     
  118.     def Split(self, val):
  119.         if val:
  120.             if self.Window2 is None:
  121.                 self.OnSideTabsSwitch(pref('tabs.side_tabs'))
  122.             
  123.         elif self.Window2 is not None:
  124.             self.Unsplit(self.tabbar)
  125.         
  126.  
  127.     
  128.     def OnSideTabsSwitch(self, val):
  129.         self.side_tabs = val
  130.         split = None(getattr, self + 'Split' if not val else 'Vertically')
  131.         if self.IsSplit():
  132.             self.Unsplit()
  133.         
  134.         pos = None if val else self.tabbar.MinSize.height
  135.         split(self.tabbar, self.pagecontainer, pos)
  136.         None(self.SetSashSize if val else 0)
  137.  
  138.     
  139.     def OnSplitMove(self, event):
  140.         event.Skip()
  141.         if self.side_tabs and self.IsSplit() and self.IsShownOnScreen():
  142.             pos = self.SashPosition
  143.             self.side_tabs_width = pos
  144.             log.info('saving side tabs sash pos of %s', pos)
  145.             setpref('tabs.side_tabs_width', pos)
  146.         
  147.  
  148.     
  149.     def __repr__(self):
  150.         return '<Notebook with %r>' % self.tabbar
  151.  
  152.     
  153.     def Add(self, panel, focus = None):
  154.         self.Frozen().__enter__()
  155.         
  156.         try:
  157.             if focus or not self.tabbar.GetTabCount():
  158.                 focus = True
  159.             elif not focus:
  160.                 focus = False
  161.             
  162.             page = self.pagecontainer.Append(panel)
  163.             s = self.tabbar.Add(page, focus)
  164.             self.did_add(panel)
  165.             if page.icon:
  166.                 self.did_seticon(panel, page.icon)
  167.             
  168.             self.pagecontainer.Layout()
  169.         finally:
  170.             pass
  171.  
  172.         return s
  173.  
  174.     
  175.     def Insert(self, page, resort = True):
  176.         self.pagecontainer.Append(page)
  177.         self.tabbar.Add(page, True, resort)
  178.         self.tabbar.dragorigin = page.tab
  179.         self.did_add(page.panel)
  180.         self.tabbar.DragFinish(True)
  181.  
  182.     
  183.     def Remove(self, page):
  184.         self.Frozen().__enter__()
  185.         
  186.         try:
  187.             self.tabbar.Remove(page.tab)
  188.             self.pagecontainer.Layout()
  189.         finally:
  190.             pass
  191.  
  192.  
  193.     
  194.     def CloseTab(self, tab):
  195.         self.Frozen().__enter__()
  196.         
  197.         try:
  198.             tab.CloseTab()
  199.             self.pagecontainer.Layout()
  200.         finally:
  201.             pass
  202.  
  203.  
  204.     
  205.     def StartWindowDrag(self):
  206.         if wx.LeftDown():
  207.             if not wdt.IsRunning():
  208.                 self.preview = SimpleOverlayImage(self, MultiTab(self.tabbar.tabs))
  209.                 wdt.Start(self)
  210.             
  211.             self.manager.ReadyBook(self, wx.GetMousePosition())
  212.         
  213.  
  214.  
  215.