Scrollbar fix + some speed optimizations

This commit is contained in:
HomeWorld
2010-10-26 10:31:09 +03:00
parent ea990d6415
commit 92fe21ee04

View File

@@ -41,7 +41,8 @@ class ShipBrowser(wx.Panel):
## if ewidth != self._lastWidth:
## self._lastWidth = ewidth
self.Layout()
self.lpane.RefreshList()
self.lpane.Layout()
self.lpane.RefreshList(True)
event.Skip()
def __del__(self):
@@ -51,6 +52,7 @@ class ShipBrowser(wx.Panel):
return info[1]
def stage1(self, event):
self.Layout()
sMarket = service.Market.getInstance()
self.lpane.RemoveAllChildren()
categoryList = sMarket.getShipRoot()
@@ -58,7 +60,7 @@ class ShipBrowser(wx.Panel):
for ID, name in categoryList:
self.lpane.AddWidget(CategoryItem(self.lpane, ID, (name, 0)))
self.lpane.Layout()
self.lpane.RefreshList()
self.Show()
RACE_ORDER = ["amarr", "caldari", "gallente", "minmatar", "ore", "serpentis", "angel", "blood", "sansha", "guristas", None]
@@ -75,8 +77,7 @@ class ShipBrowser(wx.Panel):
for ID, name, race in shipList:
self.lpane.AddWidget(ShipItem(self.lpane, ID, (name, 0), race))
self.lpane.Layout()
self.lpane.Layout()
self.lpane.RefreshList()
self.Show()
def stage3(self, event):
@@ -90,7 +91,7 @@ class ShipBrowser(wx.Panel):
for ID, name in fitList:
self.lpane.AddWidget(FitItem(self.lpane, ID, (shipName, name)))
self.lpane.Layout()
self.lpane.RefreshList()
self.Show()
class HeaderPane (wx.Panel):
@@ -126,7 +127,7 @@ class ListPane (wx.ScrolledWindow):
posy = self.GetScrollPos(wx.VERTICAL)
posy -= 8
self.Scroll(0, posy)
self.RefreshList()
# self.RefreshList()
event.Skip()
def MScrollDown(self, event):
@@ -134,7 +135,7 @@ class ListPane (wx.ScrolledWindow):
posy = self.GetScrollPos(wx.VERTICAL)
posy += 8
self.Scroll(0, posy)
self.RefreshList()
# self.RefreshList()
event.Skip()
@@ -143,24 +144,23 @@ class ListPane (wx.ScrolledWindow):
self._wList.append(widget)
self._wCount += 1
def Layout(self):
wx.ScrolledWindow.Layout(self)
self.RefreshList()
def RefreshList(self):
def RefreshList(self, doRefresh = False):
ypos = 0
cwidth, cheight = self.GetClientSize()
maxy = 0
for i in xrange(self._wCount):
xa, ya = self.CalcScrolledPosition((0, ypos))
iwidth, iheight = self._wList[i].GetSize()
xa, ya = self.CalcScrolledPosition((0, maxy))
self._wList[i].SetPosition((xa, ya))
maxy += iheight
self.SetVirtualSize((1, maxy))
cwidth, cheight = self.GetVirtualSize()
for i in xrange(self._wCount):
iwidth, iheight = self._wList[i].GetSize()
self._wList[i].SetSize((cwidth, iheight))
ypos += iheight
self._wList[i].Show()
self._wList[i].Refresh()
self.SetVirtualSize((1, ypos))
if doRefresh == True:
self._wList[i].Refresh()
def RemoveChild(self, child):
wx.Panel.RemoveChild(self, child)
@@ -291,15 +291,6 @@ class CategoryItem(wx.Window):
event.Skip()
# def Destroy(self):
# self.Unbind(wx.EVT_PAINT)
# self.Unbind(wx.EVT_ERASE_BACKGROUND)
# self.Unbind(wx.EVT_LEFT_UP)
# self.Unbind(wx.EVT_ENTER_WINDOW)
# self.Unbind(wx.EVT_LEAVE_WINDOW)
# self.Close()
class ShipItem(wx.Window):
def __init__(self, parent, shipID=None, shipFittingInfo=("Test", 2), itemData=None,
id=wx.ID_ANY, range=100, pos=wx.DefaultPosition,