Merge branch 'master' of evefit.org:pyfa

This commit is contained in:
cncfanatics
2010-11-08 10:45:10 +01:00
2 changed files with 158 additions and 51 deletions

View File

@@ -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()

View File

@@ -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