Merge branch 'master' of evefit.org:pyfa
This commit is contained in:
207
miniframe.py
207
miniframe.py
@@ -100,7 +100,7 @@ class PFTabRenderer:
|
||||
def InitColors(self):
|
||||
self.tabColor = wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)
|
||||
self.leftColor = self.CalculateColor(self.tabColor, 0x1F)
|
||||
self.rightColor = self.CalculateColor(self.tabColor, 0x2F)
|
||||
self.rightColor = self.CalculateColor(self.tabColor, 0x20)
|
||||
self.gradientStartColor = self.CalculateColor(self.tabColor, 0x17 if self.selected else 0x27)
|
||||
|
||||
def CalculateColor(self, color, delta):
|
||||
@@ -108,7 +108,7 @@ class PFTabRenderer:
|
||||
if bkR + bkG + bkB > 127*3:
|
||||
scale = - delta
|
||||
else:
|
||||
scale = delta
|
||||
scale = delta*2
|
||||
return wx.Colour(bkR + scale, bkG + scale, bkR + scale)
|
||||
|
||||
def InitTabRegions(self):
|
||||
@@ -234,7 +234,7 @@ class PFTabRenderer:
|
||||
lrect = wx.Rect()
|
||||
lrect.left=inc - 1
|
||||
lrect.top=0
|
||||
lrect.width = contentWidth
|
||||
lrect.width = contentWidth+1
|
||||
lrect.height = 1
|
||||
mdc.GradientFillLinear(lrect,self.leftColor,self.rightColor, wx.EAST)
|
||||
if not self.selected:
|
||||
@@ -263,7 +263,8 @@ class PFTabRenderer:
|
||||
else:
|
||||
break
|
||||
|
||||
text = "%s%s" % (text[:count],".." if len(text)>count else "")
|
||||
# text = "%s%s" % (text[:count],"." if len(text)>count else "")
|
||||
text = "%s" % text[:count]
|
||||
|
||||
|
||||
tx,ty = mdc.GetTextExtent(text)
|
||||
@@ -277,35 +278,22 @@ class PFTabRenderer:
|
||||
|
||||
self.tabBitmap = canvas
|
||||
|
||||
class MiniFrame(wx.Frame):
|
||||
def __init__(self):
|
||||
wx.Frame.__init__(self, None, -1, 'MEGA Frame',
|
||||
size=(1000, 100), style = wx.FRAME_SHAPED)
|
||||
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
||||
class PFTabsContainer(wx.Window):
|
||||
def __init__(self, parent, pos = (0,0), size = (100,24), id = wx.ID_ANY):
|
||||
wx.Window.__init__(self, parent, id , pos, size , style = 0)
|
||||
self.tabs = []
|
||||
width, height = size
|
||||
self.height = height
|
||||
self.reserved = 24
|
||||
self.tabContainerWidth = width - self.reserved
|
||||
self.tabMinWidth = 0
|
||||
self.tabShadow = None
|
||||
|
||||
self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
self.Bind(wx.EVT_ERASE_BACKGROUND,self.OnErase)
|
||||
self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
|
||||
self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnErase)
|
||||
self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
|
||||
self.Bind(wx.EVT_MOTION, self.OnMotion)
|
||||
|
||||
self.drag = False
|
||||
self.font8px = wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, False)
|
||||
self.tabs = []
|
||||
self.tabMinWidth = 100000
|
||||
for i in xrange(5):
|
||||
tab = PFTabRenderer((120,24),"Pyfa TAB #%d Aw" % i)
|
||||
tx,ty = tab.GetMinSize()
|
||||
if self.tabMinWidth > tx:
|
||||
self.tabMinWidth = tx
|
||||
self.tabs.append(tab)
|
||||
self.tabs[2].SetSelected()
|
||||
for tab in self.tabs:
|
||||
tab.SetSize((self.tabMinWidth, 24))
|
||||
|
||||
self.Refresh()
|
||||
|
||||
def OnLeftDown(self, event):
|
||||
event.Skip()
|
||||
def OnLeftUp(self, event):
|
||||
mposx,mposy = event.GetPosition()
|
||||
seltab = None
|
||||
@@ -314,7 +302,7 @@ class MiniFrame(wx.Frame):
|
||||
if tab.GetSelected():
|
||||
oldSelTab = tab
|
||||
break
|
||||
|
||||
count = 0
|
||||
for tab in self.tabs:
|
||||
tabRegion = tab.GetTabRegion()
|
||||
closeBtnReg = tab.GetCloseButtonRegion()
|
||||
@@ -325,6 +313,7 @@ class MiniFrame(wx.Frame):
|
||||
|
||||
if closeBtnReg.Contains(mposx, mposy):
|
||||
print "Close tab: %s" % tab.text
|
||||
self.DeleteTab(count)
|
||||
return
|
||||
|
||||
if tabRegion.Contains(mposx, mposy):
|
||||
@@ -334,13 +323,10 @@ class MiniFrame(wx.Frame):
|
||||
self.Refresh()
|
||||
print "Selected: %s" %tab.text
|
||||
break
|
||||
count += 1
|
||||
event.Skip()
|
||||
|
||||
def OnMotion(self, event):
|
||||
# if self.drag:
|
||||
# pos = self.ClientToScreen(event.GetPosition())
|
||||
# pos.x -= self.dpos.x
|
||||
# pos.y -= self.dpos.y
|
||||
# self.SetPosition(pos)
|
||||
mposx,mposy = event.GetPosition()
|
||||
for tab in self.tabs:
|
||||
closeBtnReg = tab.GetCloseButtonRegion()
|
||||
@@ -354,11 +340,6 @@ class MiniFrame(wx.Frame):
|
||||
|
||||
self.Refresh()
|
||||
event.Skip()
|
||||
def OnErase(self, event):
|
||||
pass
|
||||
def OnCloseWindow(self, event):
|
||||
self.Destroy()
|
||||
|
||||
|
||||
def OnPaint(self, event):
|
||||
rect = self.GetRect()
|
||||
@@ -366,13 +347,14 @@ class MiniFrame(wx.Frame):
|
||||
mdc = wx.BufferedPaintDC(self)
|
||||
mdc.SelectObject(canvas)
|
||||
|
||||
selected = 0
|
||||
|
||||
mdc.SetBackground (wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)))
|
||||
mdc.Clear()
|
||||
|
||||
selected = None
|
||||
selpos = 0
|
||||
tabsWidth = 0
|
||||
offset = 10
|
||||
|
||||
for tab in self.tabs:
|
||||
tabsWidth += tab.tabWidth - tab.lrZoneWidth/2
|
||||
@@ -384,19 +366,144 @@ class MiniFrame(wx.Frame):
|
||||
width = tab.tabWidth - tab.lrZoneWidth/2
|
||||
pos -= width
|
||||
if not tab.IsSelected():
|
||||
mdc.DrawBitmap(tab.Render(),pos+offset,10, True)
|
||||
tab.SetPosition((pos + offset, 10))
|
||||
mdc.DrawBitmap(self.efxBmp, pos, 0)
|
||||
mdc.DrawBitmap(tab.Render(), pos, 0, True)
|
||||
tab.SetPosition((pos, 0))
|
||||
else:
|
||||
selected = tab
|
||||
selpos = pos + offset
|
||||
selpos = pos
|
||||
if selected:
|
||||
mdc.DrawBitmap(selected.Render(), selpos,10,True)
|
||||
selected.SetPosition((selpos, 10))
|
||||
mdc.DrawBitmap(self.efxBmp, selpos, 0, True)
|
||||
mdc.DrawBitmap(selected.Render(), selpos, 0, True)
|
||||
selected.SetPosition((selpos, 0))
|
||||
|
||||
mdc.SetPen( wx.Pen("#D0D0D0", width = 1 ) )
|
||||
mdc.DrawLine(10,34,10,100)
|
||||
mdc.DrawLine(10,100,tabsWidth + 18,100)
|
||||
mdc.DrawLine(tabsWidth+18,100,tabsWidth+18,33)
|
||||
def OnErase(self, event):
|
||||
pass
|
||||
|
||||
def CreateShadow(self):
|
||||
self.tabShadow = PFTabRenderer( (self.tabMinWidth, self.height))
|
||||
|
||||
def AddTab(self, title = wx.EmptyString, img = None):
|
||||
self.ClearTabsSelected()
|
||||
|
||||
tabRenderer = PFTabRenderer( (120,self.height), title, img)
|
||||
tabRenderer.SetSelected(True)
|
||||
|
||||
self.tabs.append( tabRenderer )
|
||||
self.AdjustTabsSize()
|
||||
self.Refresh()
|
||||
|
||||
def ClearTabsSelected(self):
|
||||
for tab in self.tabs:
|
||||
tab.SetSelected(False)
|
||||
|
||||
def DeleteTab(self, tab):
|
||||
tabRenderer = self.tabs[tab]
|
||||
wasSelected = tabRenderer.GetSelected()
|
||||
self.tabs.remove(tabRenderer)
|
||||
|
||||
if tabRenderer:
|
||||
del tabRenderer
|
||||
if wasSelected and self.GetTabsCount() > 0:
|
||||
if tab > self.GetTabsCount() -1:
|
||||
self.tabs[self.GetTabsCount() - 1].SetSelected(True)
|
||||
self.AdjustTabsSize()
|
||||
self.Refresh()
|
||||
|
||||
def GetTabsCount(self):
|
||||
return len(self.tabs)
|
||||
|
||||
def AdjustTabsSize(self):
|
||||
tabMinWidth = 9000000 # Really, it should be over 9000
|
||||
for tab in self.tabs:
|
||||
tx,ty = tab.GetMinSize()
|
||||
if tabMinWidth > tx:
|
||||
tabMinWidth = tx
|
||||
if self.GetTabsCount() >0:
|
||||
if self.GetTabsCount() * tabMinWidth > self.tabContainerWidth:
|
||||
self.tabMinWidth = (self.tabContainerWidth - self.reserved) / self.GetTabsCount()
|
||||
else:
|
||||
self.tabMinWidth = 0
|
||||
for tab in self.tabs:
|
||||
tab.SetSize( (self.tabMinWidth, self.height) )
|
||||
self.CreateShadow()
|
||||
|
||||
shadowBmp = self.tabShadow.Render()
|
||||
|
||||
simg = shadowBmp.ConvertToImage()
|
||||
simg.InitAlpha()
|
||||
simg = simg.Blur(2)
|
||||
simg = simg.AdjustChannels(0.8,0.8,0.8,0.3)
|
||||
|
||||
self.efxBmp = wx.BitmapFromImage(simg)
|
||||
|
||||
class MiniFrame(wx.Frame):
|
||||
def __init__(self):
|
||||
wx.Frame.__init__(self, None, -1, 'MEGA Frame',
|
||||
size=(1000, 100), style = wx.FRAME_SHAPED)
|
||||
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
||||
# self.Bind(wx.EVT_PAINT, self.OnPaint)
|
||||
# self.Bind(wx.EVT_ERASE_BACKGROUND,self.OnErase)
|
||||
# self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
|
||||
# self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp)
|
||||
# self.Bind(wx.EVT_MOTION, self.OnMotion)
|
||||
self.SetBackgroundColour( (0xff,0xff,0xff))
|
||||
|
||||
self.drag = False
|
||||
self.font8px = wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL, False)
|
||||
self.tabContainer = PFTabsContainer(self, (0,5), (1000,24))
|
||||
self.tabContainer.Show()
|
||||
for i in xrange(10):
|
||||
self.tabContainer.AddTab("Pyfa TAB #%d Aw" % i)
|
||||
|
||||
self.Refresh()
|
||||
|
||||
def OnLeftDown(self, event):
|
||||
event.Skip()
|
||||
|
||||
def OnErase(self, event):
|
||||
pass
|
||||
def OnCloseWindow(self, event):
|
||||
self.Destroy()
|
||||
|
||||
|
||||
# def OnPaint(self, event):
|
||||
# rect = self.GetRect()
|
||||
# canvas = wx.EmptyBitmap(rect.width, rect.height)
|
||||
# mdc = wx.BufferedPaintDC(self)
|
||||
# mdc.SelectObject(canvas)
|
||||
#
|
||||
# mdc.SetBackground (wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)))
|
||||
# mdc.Clear()
|
||||
#
|
||||
# selected = None
|
||||
# selpos = 0
|
||||
# tabsWidth = 0
|
||||
# offset = 10
|
||||
#
|
||||
# for tab in self.tabs:
|
||||
# tabsWidth += tab.tabWidth - tab.lrZoneWidth/2
|
||||
#
|
||||
# pos = tabsWidth
|
||||
#
|
||||
# for i in xrange(len(self.tabs) - 1, -1, -1):
|
||||
# tab = self.tabs[i]
|
||||
# width = tab.tabWidth - tab.lrZoneWidth/2
|
||||
# pos -= width
|
||||
# if not tab.IsSelected():
|
||||
# mdc.DrawBitmap(tab.Render(),pos+offset,10, True)
|
||||
# tab.SetPosition((pos + offset, 10))
|
||||
# else:
|
||||
# selected = tab
|
||||
# selpos = pos + offset
|
||||
# if selected:
|
||||
# mdc.DrawBitmap(selected.Render(), selpos,10,True)
|
||||
# selected.SetPosition((selpos, 10))
|
||||
#
|
||||
# mdc.SetPen( wx.Pen("#D0D0D0", width = 1 ) )
|
||||
# mdc.DrawLine(10,34,10,100)
|
||||
# mdc.DrawLine(10,100,tabsWidth + 18,100)
|
||||
# mdc.DrawLine(tabsWidth+18,100,tabsWidth+18,33)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wx.PySimpleApp()
|
||||
|
||||
@@ -206,7 +206,7 @@ class Market():
|
||||
results = eos.db.searchItems(name)
|
||||
ships = []
|
||||
for item in results:
|
||||
if item.category.name == "Ship" and (item.published or item.name in self.FORCED_SHIPS):
|
||||
if item.category.name == "Ship" and (item.published or item.name in self.FORCED_SHIPS or item.name in self.LIMITED_EDITION):
|
||||
ships.append((item.ID, item.name, item.race))
|
||||
|
||||
return ships
|
||||
|
||||
Reference in New Issue
Block a user