TogglePanel: EYECANDY stuff added
This commit is contained in:
@@ -15,135 +15,210 @@ from gui import bitmapLoader
|
||||
|
||||
class TogglePanel ( wx.Panel ):
|
||||
|
||||
def __init__( self, parent ):
|
||||
wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.TAB_TRAVERSAL )
|
||||
def __init__( self, parent ):
|
||||
wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.TAB_TRAVERSAL )
|
||||
|
||||
self._toggle = 1
|
||||
self.parent = parent
|
||||
self.bkColour = parent.GetBackgroundColour()
|
||||
self.mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
self.SetSizer( self.mainSizer )
|
||||
self._toggle = 1
|
||||
self.parent = parent
|
||||
self.bkColour = self.GetBackgroundColour()
|
||||
self.mainSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
self.SetSizer( self.mainSizer )
|
||||
|
||||
self.headerPanel = wx.Panel(self)
|
||||
self.headerPanel.SetBackgroundColour( self.bkColour)
|
||||
self.headerPanel = wx.Panel(self)
|
||||
self.headerPanel.SetBackgroundColour( self.bkColour)
|
||||
|
||||
self.mainSizer.Add(self.headerPanel,0,wx.EXPAND,5)
|
||||
self.mainSizer.Add(self.headerPanel,0,wx.EXPAND,5)
|
||||
|
||||
|
||||
|
||||
# self.bmpExpanded = self.GetNativeTreeItemBitmap("expanded")
|
||||
# self.bmpCollapsed = self.GetNativeTreeItemBitmap("")
|
||||
|
||||
self.bmpExpanded = bitmapLoader.getBitmap("up-arrow2","icons")
|
||||
self.bmpCollapsed = bitmapLoader.getBitmap("down-arrow2","icons")
|
||||
self.bmpExpanded = bitmapLoader.getBitmap("up-arrow2","icons")
|
||||
self.bmpCollapsed = bitmapLoader.getBitmap("down-arrow2","icons")
|
||||
|
||||
sysTextColour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT )
|
||||
sysTextColour = wx.SystemSettings.GetColour( wx.SYS_COLOUR_WINDOWTEXT )
|
||||
|
||||
img = self.bmpExpanded.ConvertToImage()
|
||||
img.Replace(0, 0, 0, sysTextColour[0], sysTextColour[1], sysTextColour[2])
|
||||
self.bmpExpanded = wx.BitmapFromImage(img)
|
||||
|
||||
img = self.bmpCollapsed.ConvertToImage()
|
||||
img.Replace(0, 0, 0, sysTextColour[0], sysTextColour[1], sysTextColour[2])
|
||||
self.bmpCollapsed = wx.BitmapFromImage(img)
|
||||
|
||||
self.headerBmp = wx.StaticBitmap(self.headerPanel )
|
||||
self.headerBmp.SetBitmap( self.bmpExpanded)
|
||||
|
||||
|
||||
headerSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||
self.headerPanel.SetSizer( headerSizer)
|
||||
|
||||
hbmpSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
hlblSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
|
||||
hbmpSizer.Add( self.headerBmp, 0,0, 5 )
|
||||
|
||||
self.headerLabel = wx.StaticText( self.headerPanel, wx.ID_ANY, u"Test", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
hlblSizer.Add( self.headerLabel, 1, wx.EXPAND , 5 )
|
||||
|
||||
headerSizer.Add( hbmpSizer, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5 )
|
||||
headerSizer.Add( hlblSizer, 0, wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||
|
||||
headerFont=parent.GetFont()
|
||||
headerFont.SetWeight(wx.BOLD)
|
||||
self.headerLabel.SetFont(headerFont)
|
||||
|
||||
|
||||
self.contentSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
self.contentPanel = wx.Panel(self)
|
||||
self.contentPanel.SetSizer(self.contentSizer)
|
||||
|
||||
self.SetBackgroundColour( self.bkColour )
|
||||
|
||||
self.mainSizer.Add( self.contentPanel, 1, wx.EXPAND, 5)
|
||||
|
||||
|
||||
self.Layout()
|
||||
|
||||
# Connect Events
|
||||
self.headerLabel.Bind( wx.EVT_LEFT_UP, self.toggleContent )
|
||||
self.headerBmp.Bind( wx.EVT_LEFT_UP, self.toggleContent )
|
||||
self.headerPanel.Bind( wx.EVT_LEFT_UP, self.toggleContent )
|
||||
|
||||
self.headerLabel.Bind( wx.EVT_ENTER_WINDOW, self.enterWindow )
|
||||
self.headerLabel.Bind( wx.EVT_LEAVE_WINDOW, self.leaveWindow )
|
||||
self.headerBmp.Bind( wx.EVT_ENTER_WINDOW, self.enterWindow )
|
||||
self.headerBmp.Bind( wx.EVT_LEAVE_WINDOW, self.leaveWindow )
|
||||
|
||||
self.headerPanel.Bind( wx.EVT_ENTER_WINDOW, self.enterWindow )
|
||||
self.headerPanel.Bind( wx.EVT_LEAVE_WINDOW, self.leaveWindow )
|
||||
|
||||
def __del__( self ):
|
||||
pass
|
||||
|
||||
def AddSizer(self, sizer):
|
||||
self.contentSizer.Add(sizer, 1, wx.EXPAND, 5)
|
||||
self.Fit()
|
||||
|
||||
def GetContentPane(self):
|
||||
return self.contentPanel
|
||||
img = self.bmpExpanded.ConvertToImage()
|
||||
img.Replace(0, 0, 0, sysTextColour[0], sysTextColour[1], sysTextColour[2])
|
||||
self.bmpExpanded = wx.BitmapFromImage(img)
|
||||
|
||||
def SetLabel(self, label):
|
||||
self.headerLabel.SetLabel(label)
|
||||
|
||||
def GetNativeTreeItemBitmap(self, mode):
|
||||
|
||||
bitmap = wx.EmptyBitmap(24, 24)
|
||||
dc = wx.MemoryDC()
|
||||
dc.SelectObject(bitmap)
|
||||
dc.SetBackground(wx.TheBrushList.FindOrCreateBrush(self.parent.GetBackgroundColour(), wx.SOLID))
|
||||
dc.Clear()
|
||||
img = self.bmpCollapsed.ConvertToImage()
|
||||
img.Replace(0, 0, 0, sysTextColour[0], sysTextColour[1], sysTextColour[2])
|
||||
self.bmpCollapsed = wx.BitmapFromImage(img)
|
||||
|
||||
self.headerBmp = wx.StaticBitmap(self.headerPanel )
|
||||
self.headerBmp.SetBitmap( self.bmpExpanded)
|
||||
|
||||
|
||||
headerSizer = wx.BoxSizer( wx.HORIZONTAL )
|
||||
self.headerPanel.SetSizer( headerSizer)
|
||||
|
||||
hbmpSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
hlblSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
|
||||
hbmpSizer.Add( self.headerBmp, 0,0, 5 )
|
||||
|
||||
self.headerLabel = wx.StaticText( self.headerPanel, wx.ID_ANY, u"Test", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
hlblSizer.Add( self.headerLabel, 1, wx.EXPAND , 5 )
|
||||
|
||||
wx.RendererNative.Get().DrawTreeItemButton(self, dc, wx.Rect(0, 0, 24, 24), wx.CONTROL_EXPANDED if mode == "expanded" else 0)
|
||||
headerSizer.Add( hbmpSizer, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5 )
|
||||
headerSizer.Add( hlblSizer, 0, wx.ALIGN_CENTER_VERTICAL, 5 )
|
||||
|
||||
dc.Destroy()
|
||||
|
||||
return bitmap
|
||||
|
||||
# Virtual event handlers, overide them in your derived class
|
||||
def toggleContent( self, event ):
|
||||
if self._toggle == 1:
|
||||
self.contentPanel.Hide()
|
||||
self.headerBmp.SetBitmap( self.bmpCollapsed)
|
||||
headerFont=parent.GetFont()
|
||||
headerFont.SetWeight(wx.BOLD)
|
||||
self.headerLabel.SetFont(headerFont)
|
||||
|
||||
|
||||
self.contentSizer = wx.BoxSizer( wx.VERTICAL )
|
||||
self.contentPanel = wx.Panel(self)
|
||||
self.contentPanel.SetSizer(self.contentSizer)
|
||||
|
||||
self.SetBackgroundColour( self.bkColour )
|
||||
|
||||
self.mainSizer.Add( self.contentPanel, 1, wx.EXPAND, 5)
|
||||
|
||||
|
||||
self.Layout()
|
||||
|
||||
self._timerId = wx.NewId()
|
||||
self._timer = None
|
||||
self._animStep = 0
|
||||
self._period = 15
|
||||
self._animDuration = 250
|
||||
self._animValue = 0
|
||||
|
||||
self.contentPanelMaxSize = 0
|
||||
self.currentSize = 0
|
||||
self.targetSize = 0
|
||||
# Connect Events
|
||||
self.headerLabel.Bind( wx.EVT_LEFT_UP, self.toggleContent )
|
||||
self.headerBmp.Bind( wx.EVT_LEFT_UP, self.toggleContent )
|
||||
self.headerPanel.Bind( wx.EVT_LEFT_UP, self.toggleContent )
|
||||
|
||||
self.headerLabel.Bind( wx.EVT_ENTER_WINDOW, self.enterWindow )
|
||||
self.headerLabel.Bind( wx.EVT_LEAVE_WINDOW, self.leaveWindow )
|
||||
self.headerBmp.Bind( wx.EVT_ENTER_WINDOW, self.enterWindow )
|
||||
self.headerBmp.Bind( wx.EVT_LEAVE_WINDOW, self.leaveWindow )
|
||||
|
||||
self.headerPanel.Bind( wx.EVT_ENTER_WINDOW, self.enterWindow )
|
||||
self.headerPanel.Bind( wx.EVT_LEAVE_WINDOW, self.leaveWindow )
|
||||
|
||||
self.Bind(wx.EVT_TIMER, self.OnTimer)
|
||||
|
||||
def __del__( self ):
|
||||
pass
|
||||
|
||||
def AddSizer(self, sizer):
|
||||
self.contentSizer.Add(sizer, 1, wx.EXPAND, 5)
|
||||
self.Fit()
|
||||
def GetContentPane(self):
|
||||
return self.contentPanel
|
||||
|
||||
def SetLabel(self, label):
|
||||
self.headerLabel.SetLabel(label)
|
||||
|
||||
def GetNativeTreeItemBitmap(self, mode):
|
||||
|
||||
bitmap = wx.EmptyBitmap(24, 24)
|
||||
dc = wx.MemoryDC()
|
||||
dc.SelectObject(bitmap)
|
||||
dc.SetBackground(wx.TheBrushList.FindOrCreateBrush(self.parent.GetBackgroundColour(), wx.SOLID))
|
||||
dc.Clear()
|
||||
|
||||
wx.RendererNative.Get().DrawTreeItemButton(self, dc, wx.Rect(0, 0, 24, 24), wx.CONTROL_EXPANDED if mode == "expanded" else 0)
|
||||
|
||||
dc.Destroy()
|
||||
|
||||
return bitmap
|
||||
|
||||
# Virtual event handlers, overide them in your derived class
|
||||
def toggleContent( self, event ):
|
||||
|
||||
if not self._timer:
|
||||
self._timer = wx.Timer(self, self._timerId)
|
||||
if self._timer.IsRunning():
|
||||
return
|
||||
|
||||
if self._toggle == 1:
|
||||
# self.contentPanel.Hide()
|
||||
self.headerBmp.SetBitmap( self.bmpCollapsed)
|
||||
if self._timer.IsRunning() == False:
|
||||
self.contentPanelMaxSize = self.contentPanel.GetSize().GetHeight()
|
||||
self.currentSize = self.contentPanelMaxSize
|
||||
self.targetSize = 0
|
||||
else:
|
||||
# self.contentPanel.Show()
|
||||
self.headerBmp.SetBitmap( self.bmpExpanded)
|
||||
self.currentSize = 0
|
||||
self.targetSize = self.contentPanelMaxSize
|
||||
self._toggle *=-1
|
||||
|
||||
self._animStep = 0
|
||||
self._timer.Start(self._period)
|
||||
|
||||
self.parent.Layout()
|
||||
event.Skip()
|
||||
|
||||
def enterWindow( self, event ):
|
||||
|
||||
self.headerPanel.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHT ) )
|
||||
self.headerPanel.Refresh()
|
||||
|
||||
event.Skip()
|
||||
|
||||
def leaveWindow( self, event ):
|
||||
|
||||
self.headerPanel.SetBackgroundColour( self.bkColour )
|
||||
self.headerPanel.Refresh()
|
||||
|
||||
event.Skip()
|
||||
|
||||
def OUT_QUAD (self, t, b, c, d):
|
||||
t=float(t)
|
||||
b=float(b)
|
||||
c=float(c)
|
||||
d=float(d)
|
||||
|
||||
t/=d
|
||||
|
||||
return -c *(t)*(t-2) + b
|
||||
|
||||
def OnTimer( self, event ):
|
||||
oldValue = self.currentSize
|
||||
value = self.targetSize
|
||||
|
||||
if oldValue < value:
|
||||
direction = 1
|
||||
start = 0
|
||||
end = value-oldValue
|
||||
else:
|
||||
direction = -1
|
||||
start = 0
|
||||
end = oldValue - value
|
||||
|
||||
step=self.OUT_QUAD(self._animStep, start, end, self._animDuration)
|
||||
self._animStep += self._period
|
||||
|
||||
if self._timerId == event.GetId():
|
||||
stop_timer = False
|
||||
if self._animStep > self._animDuration:
|
||||
stop_timer = True
|
||||
|
||||
if direction == 1:
|
||||
if (oldValue+step) < value:
|
||||
self._animValue = oldValue+step
|
||||
else:
|
||||
self.contentPanel.Show()
|
||||
self.headerBmp.SetBitmap( self.bmpExpanded)
|
||||
self._toggle *=-1
|
||||
self.parent.Layout()
|
||||
event.Skip()
|
||||
|
||||
def enterWindow( self, event ):
|
||||
stop_timer = True
|
||||
else:
|
||||
if (oldValue-step) > value:
|
||||
self._animValue = oldValue-step
|
||||
else:
|
||||
stop_timer = True
|
||||
if stop_timer:
|
||||
self._timer.Stop()
|
||||
|
||||
self.contentPanel.SetMinSize(wx.Size(-1, round(self._animValue)))
|
||||
# self.contentPanel.Layout()
|
||||
self.parent.Layout()
|
||||
# self.parent.Fit()
|
||||
|
||||
self.headerPanel.SetBackgroundColour( wx.SystemSettings.GetColour( wx.SYS_COLOUR_HIGHLIGHT ) )
|
||||
self.headerPanel.Refresh()
|
||||
pass
|
||||
event.Skip()
|
||||
|
||||
def leaveWindow( self, event ):
|
||||
|
||||
self.headerPanel.SetBackgroundColour( self.bkColour )
|
||||
self.headerPanel.Refresh()
|
||||
|
||||
pass
|
||||
event.Skip()
|
||||
|
||||
|
||||
@@ -816,40 +816,6 @@ class StatsPane(wx.Panel):
|
||||
box.Add(wx.StaticText(self.miniPanel, wx.ID_ANY, " m ISK"), 0, wx.ALIGN_CENTER)
|
||||
|
||||
|
||||
# Price
|
||||
sizerHeaderPrice = wx.BoxSizer(wx.HORIZONTAL)
|
||||
self.sizerBase.Add(sizerHeaderPrice, 0, wx.EXPAND | wx.LEFT, 3)
|
||||
|
||||
labelPrice = wx.StaticText(self.fullPanel, wx.ID_ANY, "Price")
|
||||
labelPrice.SetFont(boldFont)
|
||||
sizerHeaderPrice.Add(labelPrice, 0, wx.ALIGN_CENTER)
|
||||
|
||||
sizerHeaderPrice.Add(wx.StaticLine(self.fullPanel, wx.ID_ANY), 1, wx.ALIGN_CENTER)
|
||||
|
||||
# Grid for the price stuff.
|
||||
gridPrice = wx.GridSizer(1, 3)
|
||||
self.sizerBase.Add(gridPrice, 0, wx.EXPAND | wx.LEFT, 3)
|
||||
|
||||
for type in ("ship", "fittings", "total"):
|
||||
image = "%sPrice_big" % type if type != "ship" else "ship_big"
|
||||
box = wx.BoxSizer(wx.HORIZONTAL)
|
||||
gridPrice.Add(box)
|
||||
|
||||
box.Add(bitmapLoader.getStaticBitmap(image, self.fullPanel, "icons"), 0, wx.ALIGN_CENTER)
|
||||
|
||||
vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
box.Add(vbox, 1, wx.EXPAND)
|
||||
|
||||
vbox.Add(wx.StaticText(self.fullPanel, wx.ID_ANY, type.capitalize()), 0, wx.ALIGN_LEFT)
|
||||
|
||||
hbox = wx.BoxSizer(wx.HORIZONTAL)
|
||||
vbox.Add(hbox)
|
||||
|
||||
lbl = wx.StaticText(self.fullPanel, wx.ID_ANY, "0.00")
|
||||
setattr(self, "labelPrice%s" % type, lbl)
|
||||
hbox.Add(lbl, 0, wx.ALIGN_LEFT)
|
||||
|
||||
hbox.Add(wx.StaticText(self.fullPanel, wx.ID_ANY, " m ISK"), 0, wx.ALIGN_LEFT)
|
||||
|
||||
# The custom made collapsible panel demo
|
||||
priceTPanel = TogglePanel(self.fullPanel)
|
||||
@@ -885,6 +851,41 @@ class StatsPane(wx.Panel):
|
||||
|
||||
hbox.Add(wx.StaticText(priceContentPane, wx.ID_ANY, " m ISK"), 0, wx.ALIGN_LEFT)
|
||||
|
||||
# Price
|
||||
sizerHeaderPrice = wx.BoxSizer(wx.HORIZONTAL)
|
||||
self.sizerBase.Add(sizerHeaderPrice, 0, wx.EXPAND | wx.LEFT, 3)
|
||||
|
||||
labelPrice = wx.StaticText(self.fullPanel, wx.ID_ANY, "Price")
|
||||
labelPrice.SetFont(boldFont)
|
||||
sizerHeaderPrice.Add(labelPrice, 0, wx.ALIGN_CENTER)
|
||||
|
||||
sizerHeaderPrice.Add(wx.StaticLine(self.fullPanel, wx.ID_ANY), 1, wx.ALIGN_CENTER)
|
||||
|
||||
# Grid for the price stuff.
|
||||
gridPrice = wx.GridSizer(1, 3)
|
||||
self.sizerBase.Add(gridPrice, 0, wx.EXPAND | wx.LEFT, 3)
|
||||
|
||||
for type in ("ship", "fittings", "total"):
|
||||
image = "%sPrice_big" % type if type != "ship" else "ship_big"
|
||||
box = wx.BoxSizer(wx.HORIZONTAL)
|
||||
gridPrice.Add(box)
|
||||
|
||||
box.Add(bitmapLoader.getStaticBitmap(image, self.fullPanel, "icons"), 0, wx.ALIGN_CENTER)
|
||||
|
||||
vbox = wx.BoxSizer(wx.VERTICAL)
|
||||
box.Add(vbox, 1, wx.EXPAND)
|
||||
|
||||
vbox.Add(wx.StaticText(self.fullPanel, wx.ID_ANY, type.capitalize()), 0, wx.ALIGN_LEFT)
|
||||
|
||||
hbox = wx.BoxSizer(wx.HORIZONTAL)
|
||||
vbox.Add(hbox)
|
||||
|
||||
lbl = wx.StaticText(self.fullPanel, wx.ID_ANY, "0.00")
|
||||
setattr(self, "labelPrice%s" % type, lbl)
|
||||
hbox.Add(lbl, 0, wx.ALIGN_LEFT)
|
||||
|
||||
hbox.Add(wx.StaticText(self.fullPanel, wx.ID_ANY, " m ISK"), 0, wx.ALIGN_LEFT)
|
||||
|
||||
|
||||
self.fullPanel.Fit()
|
||||
self.fullSize=self.fullPanel.GetBestSize()
|
||||
|
||||
Reference in New Issue
Block a user