* ~cncfanatics browses DarkPhoenix

This commit is contained in:
HomeWorld
2011-01-13 14:10:06 +02:00
parent c48ea7297e
commit 6d78ad2529

View File

@@ -24,6 +24,12 @@ SearchSelected, EVT_SB_SEARCH_SEL = wx.lib.newevent.NewEvent()
SB_ITEM_NORMAL = 0
SB_ITEM_SELECTED = 1
SB_ITEM_HIGHLIGHTED = 2
SB_ITEM_DISABLED = 4
BTN_NORMAL = 1
BTN_PRESSED = 2
BTN_HOVER = 4
BTN_DISABLED = 8
class PFWidgetsContainer(PFListPane):
def __init__(self,parent):
@@ -707,8 +713,8 @@ class PFBaseButton(object):
self.callback = callback
self.state = None
# state : 0 = normal / 1 = pressed / 2 = hover / 3 = disabled
self.state = BTN_NORMAL
# state : BTN_STUFF
def SetCallback(self, callback):
self.callback = callback
@@ -720,7 +726,7 @@ class PFBaseButton(object):
if self.callback:
self.callback()
def SetState(self, state = 0):
def SetState(self, state = BTN_NORMAL):
self.state = state
def GetState(self):
@@ -757,18 +763,38 @@ class PFToolbar(object):
def SetPosition(self, pos):
self.toolbarX, self.toolbarY = pos
def AddButton(self, btnBitmap, label = "", clickCallback = None):
self.buttons.append( PFBaseButton(btnBitmap, label, clickCallback) )
def AddButton(self, btnBitmap, label = "", clickCallback = None, hoverBitmap = None, disabledBitmap = None):
self.buttons.append( PFBaseButton(btnBitmap, label, clickCallback, hoverBitmap, disabledBitmap) )
def MouseMove(self, mx,my):
pass
def ClearState(self):
for button in self.buttons:
button.SetState()
def MouseMove(self, event):
doRefresh = False
bx = self.toolbarX
for button in self.buttons:
state = button.GetState()
if self.HitTest( (bx, self.toolbarY), event.GetPosition(), button.GetSize()):
if not state & BTN_HOVER:
button.SetState(state | BTN_HOVER)
doRefresh = True
else:
if state & BTN_HOVER:
button.SetState(state ^ BTN_HOVER)
doRefresh = True
bwidth, bheight = button.GetSize()
bx += bwidth + self.padding
return doRefresh
def MouseClick(self, event):
mx,my = event.GetPosition()
bx = self.toolbarX
for button in self.buttons:
if button.GetState() == 1:
button.SetState(0)
state = button.GetState()
if state & BTN_PRESSED:
button.SetState(state ^ BTN_PRESSED )
if self.HitTest( (bx, self.toolbarY), event.GetPosition(), button.GetSize()):
return button
else:
@@ -778,14 +804,15 @@ class PFToolbar(object):
bx = self.toolbarX
for button in self.buttons:
state = button.GetState()
if self.HitTest( (bx, self.toolbarY), event.GetPosition(), button.GetSize()):
if event.LeftDown():
button.SetState(1)
button.SetState(state | BTN_PRESSED)
return button
elif event.LeftUp():
button.SetState(0)
button.SetState(state | (not BTN_PRESSED))
return button
bwidth, bheight = button.GetSize()
@@ -808,20 +835,19 @@ class PFToolbar(object):
btnState = button.GetState()
if btnState == 0:
bmp = button.GetDisabledBitmap()
if btnState & BTN_NORMAL:
bmp = button.GetBitmap()
elif btnState == 1:
if btnState & BTN_HOVER:
bmp = button.GetHoverBitmap()
if btnState & BTN_PRESSED:
bmp = button.GetBitmap()
by += self.padding / 2
tbx += self.padding / 2
elif btnState == 2:
bmp = button.GetHoverBitmap()
else:
bmp = button.GetDisabledBitmap()
bmpWidth = bmp.GetWidth()
pdc.DrawBitmap(bmp, tbx, by)
bx += bmpWidth + self.padding
@@ -835,6 +861,7 @@ class SBItem(wx.Window):
self.bkBitmap = None
self.toolbar = PFToolbar()
self.Bind(wx.EVT_PAINT, self.OnPaint)
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
@@ -878,7 +905,7 @@ class SBItem(wx.Window):
if btn is not None:
if btn is not False:
if btn.GetState() == 0:
if btn.GetState() & BTN_NORMAL:
btn.DoCallback()
self.Refresh()
else:
@@ -894,7 +921,7 @@ class SBItem(wx.Window):
btn = self.toolbar.MouseClick(event)
if btn is not None:
if btn.GetState() == 1:
if btn.GetState() & BTN_PRESSED:
self.Refresh()
return
@@ -902,15 +929,19 @@ class SBItem(wx.Window):
def OnEnterWindow(self, event):
self.SetHighlighted(True)
self.toolbar.ClearState()
self.Refresh()
event.Skip()
def OnLeaveWindow(self, event):
self.SetHighlighted(False)
self.toolbar.ClearState()
self.Refresh()
event.Skip()
def OnMotion(self, event):
if self.toolbar.MouseMove(event):
self.Refresh()
event.Skip()
def GetType(self):
@@ -989,8 +1020,8 @@ class CategoryItem(SBItem):
# self.newBmp = bitmapLoader.getBitmap("fit_add_small", "icons")
# self.acceptBmp = bitmapLoader.getBitmap("faccept_small", "icons")
#
# self.toolbar.AddButton(self.newBmp, "New", self.CallbackTest)
# self.toolbar.AddButton(self.acceptBmp, "Accept", self.CallbackTest)
# self.toolbar.AddButton(self.newBmp, "New", self.CallbackTest,self.acceptBmp)
# self.toolbar.AddButton(self.acceptBmp, "Accept", self.CallbackTest,self.newBmp)
def GetType(self):
return 1