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

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import wx
  5. from gui import skin
  6. from gui.uberwidgets import UberWidget
  7. from util.primitives.funcs import do
  8.  
  9. class SizerBar(wx.Panel, UberWidget):
  10.     
  11.     def __init__(self, parent, item, sizer = None):
  12.         wx.Panel.__init__(self, parent, style = 0)
  13.         events = [
  14.             (wx.EVT_PAINT, self.OnPaint),
  15.             (wx.EVT_ERASE_BACKGROUND, (lambda e: pass)),
  16.             (wx.EVT_LEFT_DOWN, self.OnLDown),
  17.             (wx.EVT_LEFT_UP, self.OnLUp),
  18.             (wx.EVT_MOTION, self.OnDrag),
  19.             (wx.EVT_SIZE, self.OnSize),
  20.             (wx.EVT_IDLE, self.OnIdle),
  21.             ((wx.EVT_LEAVE_WINDOW,), (lambda e: self.Refresh())),
  22.             ((wx.EVT_ENTER_WINDOW,), (lambda e: self.Refresh()))]
  23.         (do,)((lambda .0: for event, method in .0:
  24. self.Bind(event, method))(events))
  25.         self.dpoint = 0
  26.         self.delta = None
  27.         self.item = item
  28.         self.itemminsize = wx.Size(max(item.MinSize.width, 0), max(item.MinSize.height, 0))
  29.         
  30.         def NewSetMinSize(size):
  31.             self.itemminsize = None(None, wx.Size if size[0] == -1 else size[0] if size[1] == -1 else size[1])
  32.             if self.item.OldMinSize < self.itemminsize:
  33.                 self.item.OldMinSize = self.itemminsize
  34.             
  35.  
  36.         
  37.         def NewGetMinSize():
  38.             return self.itemminsize
  39.  
  40.         item.OldSetMinSize = item.SetMinSize
  41.         item.OldGetMinSize = item.GetMinSize
  42.         item.OldMinSize = item.MinSize
  43.         item.SetMinSize = NewSetMinSize
  44.         item.GetMinSize = NewGetMinSize
  45.         item.__dict__['MinSize'] = property(item.GetMinSize, item.SetMinSize)
  46.         if not sizer:
  47.             pass
  48.         self.sizer = self.Parent.Sizer
  49.         self.orientation = self.sizer.Orientation
  50.         ((None,),)(self.SetSkinKey if self.orientation == wx.VERTICAL else 'HorizontalSizerBar', True)
  51.         self.OnSize()
  52.         self.sizer.Layout()
  53.  
  54.     
  55.     def UpdateSkin(self):
  56.         key = self.skinkey
  57.         
  58.         s = lambda k, default = (sentinel,): skin.get('%s.%s' % (key, k), default)
  59.         self.thickness = s('Thickness', 4)
  60.         self.icon = s('Icon', None)
  61.         self.normalbg = s('Backgrounds.Normal')
  62.         self.hoverbg = s(('Backgrounds.Hover',), (lambda : self.normalbg))
  63.         self.activebg = s(('Backgrounds.Active',), (lambda : self.hoverbg))
  64.  
  65.     
  66.     def OnSize(self, event = None):
  67.         self.orientation = self.sizer.Orientation
  68.         if self.orientation == wx.HORIZONTAL:
  69.             self.Cursor = wx.StockCursor(wx.CURSOR_SIZEWE)
  70.             self.MinSize = (self.thickness, -1)
  71.         else:
  72.             self.Cursor = wx.StockCursor(wx.CURSOR_SIZENS)
  73.             self.MinSize = (-1, self.thickness)
  74.         self.sizer.Layout()
  75.         self.Refresh()
  76.  
  77.     
  78.     def OnPaint(self, event):
  79.         dc = wx.AutoBufferedPaintDC(self)
  80.         s = self.Size
  81.         icon = self.icon
  82.         rect = wx.RectS(s)
  83.         if self.dpoint:
  84.             self.activebg.Draw(dc, rect)
  85.         elif wx.FindWindowAtPointer() is self:
  86.             self.hoverbg.Draw(dc, rect)
  87.         else:
  88.             self.normalbg.Draw(dc, rect)
  89.         if icon:
  90.             dc.DrawBitmap(icon, (s.width - icon.Width) / 2, (s.height - icon.Height) / 2, True)
  91.         
  92.  
  93.     
  94.     def OnLDown(self, event):
  95.         self.dpoint = event.Position
  96.         self.CaptureMouse()
  97.         self.Refresh()
  98.  
  99.     
  100.     def OnLUp(self, event):
  101.         self.dpoint = 0
  102.         if self.HasCapture():
  103.             self.ReleaseMouse()
  104.         
  105.         self.Refresh()
  106.  
  107.     
  108.     def OnDrag(self, event):
  109.         if event.Dragging() and event.LeftIsDown() and self.dpoint:
  110.             cpoint = event.GetPosition()
  111.             self.delta = None
  112.             if self.orientation == wx.HORIZONTAL and self.dpoint.x != cpoint.x:
  113.                 self.delta = wx.Point(cpoint.x - self.dpoint.x, 0)
  114.             elif self.orientation == wx.VERTICAL and self.dpoint.y != cpoint.y:
  115.                 self.delta = wx.Point(0, cpoint.y - self.dpoint.y)
  116.             
  117.         
  118.  
  119.     
  120.     def OnIdle(self, event):
  121.         event.Skip()
  122.         if self.delta:
  123.             self.Resize()
  124.         
  125.  
  126.     
  127.     def Resize(self):
  128.         item = self.item
  129.         if item.IsShownOnScreen():
  130.             if self.orientation == wx.HORIZONTAL:
  131.                 itemsize = item.MinSize.width
  132.                 itemlimit = (self.sizer.Size.width - self.sizer.MinSize.width) + itemsize
  133.                 itemminsize = self.itemminsize.width
  134.                 maxsizesize = wx.Size(itemlimit, -1)
  135.                 minsizesize = wx.Size(itemminsize, -1)
  136.                 d = 0
  137.             else:
  138.                 itemsize = item.MinSize.height
  139.                 itemlimit = (self.sizer.Size.height - self.sizer.MinSize.height) + itemsize
  140.                 itemminsize = self.itemminsize.height
  141.                 maxsizesize = wx.Size(-1, itemlimit)
  142.                 minsizesize = wx.Size(-1, itemminsize)
  143.                 d = 1
  144.             if (self.orientation == wx.HORIZONTAL or self.Position.x < item.Position.x or self.orientation == wx.VERTICAL) and self.Position.y < item.Position.y:
  145.                 self.delta = wx.Point(-(self.delta.x), -(self.delta.y))
  146.             
  147.             if item or self.delta.x != 0 or self.delta.y != 0:
  148.                 newsize = item.Size + self.delta.Get()
  149.                 if newsize[d] < itemminsize:
  150.                     pass
  151.                 elif newsize[d] > itemlimit:
  152.                     pass
  153.                 
  154.                 item.Size = item.MinSize = newsize
  155.                 self.sizer.Layout()
  156.             
  157.             self.delta = None
  158.         
  159.  
  160.  
  161.