""" Some handy-dandy images for the Retromancer app. """ from wx import ImageFromStream from wx import BitmapFromImage from wx import EmptyIcon import wx import wx.lib.throbber import cStringIO import Global from Global import Log #---------------------------------------------------------------------- def GetSmallUpArrowData(): return \ '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\ \x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\ \x00\x00C\xb0\x89\ \xd3.\x10\xd1m\xc3\xe5*\xbc.\x80i\xc2\x17.\x8c\xa3y\x81\x01\x00\xa1\x0e\x04e\ ?\x84B\xef\x00\x00\x00\x00IEND\xaeB`\x82" def GetSmallDnArrowBitmap(): return BitmapFromImage(GetSmallDnArrowImage()) def GetSmallDnArrowImage(): stream = cStringIO.StringIO(GetSmallDnArrowData()) return ImageFromStream(stream) class Throbber(wx.lib.throbber.Throbber): """ Throbber subclasss which passes its click events up to the parent. """ def __init__(self, Parent, Stub, Delay = 0.4, CacheFlag = 1): if Stub == None or not Stub: Images = [] Size = (1, 1) else: Images = Global.ImageHandler.GetThrobberImages(Stub, CacheFlag) Size = Images[0].Size self.CurrentImageIndex = 0 wx.lib.throbber.Throbber.__init__(self, Parent, -1, Images, size = (Size[0], Size[1]), frameDelay = Delay) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftClick) self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightClick) self.Bind(wx.EVT_LEFT_DCLICK, self.OnLeftDoubleClick) self.Start() def MoveTo(self, X, Y): self.X = X self.Y = Y self.Move((X, Y), wx.SIZE_USE_EXISTING) def OnLeftClick(self, Event): Event.m_x = self.X + Event.m_x Event.m_y = self.Y + Event.m_y Event.ResumePropagation(5) Event.Skip() def OnRightClick(self, Event): Event.m_x = self.X + Event.m_x Event.m_y = self.Y + Event.m_y Event.ResumePropagation(5) Event.Skip() def OnLeftDoubleClick(self, Event): Event.m_x = self.X + Event.m_x Event.m_y = self.Y + Event.m_y Event.ResumePropagation(5) Event.Skip() class AlphaThrobber: """ Throbber-like class, which doesn't eat clicks and which can be transparent! """ def __init__(self, Parent, Stub, Delay = 0.4): self.Images = Global.ImageHandler.GetThrobberImages(Stub) self.Image = self.Images[0] self.CurrentImageIndex = 0 self.Parent = Parent def MoveTo(self, X, Y): self.X = X self.Y = Y #self.Move((X, Y), wx.SIZE_USE_EXISTING) def Update(self): self.CurrentImageIndex = (self.CurrentImageIndex + 1) % len(self.Images) self.Image = self.Images[self.CurrentImageIndex] self.Parent.RefreshRect(self.GetRect()) #self.Image.Update() def GetRect(self): if not self.Image: return wx.Rect(0, 0, 0, 0) return wx.Rect(self.X, self.Y, self.Image.GetWidth(), self.Image.GetHeight()) def Draw(self, DeviceContext, op = wx.COPY): if self.Image and self.Image.Ok(): MemoryDC = wx.MemoryDC() MemoryDC.SelectObject(self.Image) DeviceContext.Blit(self.X, self.Y, self.Image.GetWidth(), self.Image.GetHeight(), MemoryDC, 0, 0, op, True) return True else: return False def Start(self): pass