home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- import wx
- from gui.uberwidgets.uberwidget import UberWidget
- from gui.textutil import CopyFont, default_font, GetTextWidth
- from gui.skin.skinobjects import SkinColor
- from gui import skin
- from gui.toolbox.refreshtimer import refreshtimer
-
- class ErrorPanel(wx.Panel, UberWidget):
-
- def __init__(self, parent):
- wx.Panel.__init__(self, parent, -1)
- self.link = ''
- self.linkhovered = False
- self.linkdown = False
- self.message = None
- self.UpdateSkin()
- self.Bind(wx.EVT_PAINT, self.OnPaint)
- self.Bind(wx.EVT_ERASE_BACKGROUND, (lambda e: pass))
- self.Bind(wx.EVT_SIZE, self.OnSize)
- self.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseIn)
- self.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseOut)
- self.Bind(wx.EVT_MOTION, self.OnMouseMotion)
- self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
- self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
- self.Bind((wx.EVT_LEFT_DCLICK,), (lambda e: (self.OnLeftDown(e), self.OnLeftUp(e))))
- self.Show(False)
-
-
- def OnSize(self, event):
- if self.link:
- linksize = self.linkrect.Size
- if self.link:
- self.linkrect = wx.Rect(self.Size.width - linksize.width - self.padding.x, self.Size.height - linksize.height - self.padding.y, *linksize)
-
-
- self.Refresh(False)
-
-
- def UpdateSkin(self):
- key = 'infobox'
- if skin.get(key, False):
-
- s = lambda k, d: skin.get('%s.%s' % (key, k), d)
- else:
-
- s = lambda k, d: d
- self.padding = s('padding', (lambda : wx.Point(2, 2)))
- self.labelf = s('fonts.title', (lambda : default_font()))
- self.labelfc = s('fontcolors.title', wx.BLACK)
- self.linkf = CopyFont(s('fonts.link', (lambda : default_font())), underline = True)
- self.linkfc = s('fontcolors.link', wx.BLUE)
- self.bg = s('backgrounds.email', (lambda : SkinColor(wx.WHITE)))
-
-
- def OnPaint(self, event):
- dc = wx.BufferedPaintDC(self)
- rect = wx.RectS(self.Size)
- dc.Font = self.labelf
- dc.TextForeground = self.labelfc
- self.bg.Draw(dc, rect)
- rect2 = None(wx.Rect, 0, 0, self.Size.width - self.Size.height if self.link else 0)
- message = self.message
- None(dc.DrawLabel if callable(message) else message, rect2, wx.ALIGN_CENTER)
- if self.link:
- dc.Font = self.linkf
- dc.TextForeground = self.linkfc
- dc.DrawLabel(self.link, self.linkrect)
-
-
-
- def Error(self, message = None, link = None, callback = None):
- self.message = message
- self.link = ''
- if message:
- if link and callback:
-
- self.linkcb = lambda *a: (wx.GetTopLevelParent(self).Hide(), callback(*a))
- self.link = link
- linksize = wx.Size(GetTextWidth(link, self.linkf), self.linkf.Height)
- self.linkrect = wx.Rect(self.Size.width - linksize.width - self.padding.x, self.Size.height - linksize.height - self.padding.y, *linksize)
-
- self.Show(True)
- self.MinSize = wx.Size(-1, 5 * max(self.labelf.Height, self.linkf.Height))
- self.GrandParent.DoSizeMagic()
- self.Refresh()
- else:
- self.Show(False)
- if callable(message):
- refreshtimer().Register(self)
- else:
- refreshtimer().UnRegister(self)
-
-
- def SkimIt(self, height):
- return height
-
-
- def OnLeftDown(self, event):
- if self.linkhovered:
- self.linkdown = True
-
-
-
- def OnLeftUp(self, event):
- if self.linkdown:
- if self.linkhovered:
- self.linkcb()
-
- self.linkdown = False
-
- self.OnMouseMotion(event)
- self.Refresh()
-
-
- def OnMouseMotion(self, event):
- if not event.LeftIsDown():
- mouseisin = wx.FindWindowAtPointer() is self
- if mouseisin and not self.HasCapture():
- self.OnMouseIn(event)
- elif not mouseisin and self.HasCapture():
- self.OnMouseOut(event)
-
-
- if self.link:
- mouseinl = self.linkhovered = self.linkrect.Contains(event.Position)
- None(self.SetCursor(wx.StockCursor if mouseinl else wx.CURSOR_DEFAULT))
-
-
-
- def OnMouseIn(self, event):
- if not self.HasCapture() and not event.LeftIsDown():
- self.CaptureMouse()
-
-
-
- def OnMouseOut(self, event):
- if not event.LeftIsDown():
- while self.HasCapture():
- self.ReleaseMouse()
-
-
-
-