From c65b1be4868d6e045d119e940f68324f666b1c9d Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 2 Nov 2010 02:01:14 +0200 Subject: [PATCH] Various fixes in display.py, including a wxpy listctrl stupid bug workaround --- gui/builtinViewColumns/moduleAmmoIcon.py | 3 +- gui/display.py | 43 +++++++++++++----------- gui/multiSwitch.py | 4 +-- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/gui/builtinViewColumns/moduleAmmoIcon.py b/gui/builtinViewColumns/moduleAmmoIcon.py index 055e69a40..4315d2a66 100644 --- a/gui/builtinViewColumns/moduleAmmoIcon.py +++ b/gui/builtinViewColumns/moduleAmmoIcon.py @@ -20,12 +20,13 @@ from gui import builtinViewColumns from gui.viewColumn import ViewColumn from gui import bitmapLoader +import wx class ModuleAmmoIcon(ViewColumn): name = "Module Ammo Icon" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) - self.size = 20 + self.size = 16 self.columnText = "" def getText(self, mod): diff --git a/gui/display.py b/gui/display.py index f97d3d591..5c923f9e2 100644 --- a/gui/display.py +++ b/gui/display.py @@ -26,7 +26,7 @@ class Display(wx.ListCtrl): def __init__(self, parent, style = 0): wx.ListCtrl.__init__(self, parent, style=wx.LC_REPORT | wx.BORDER_NONE | style) - + self.Show(False) self.imageList = wx.ImageList(16, 16) self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL) self.activeColumns = [] @@ -48,11 +48,12 @@ class Display(wx.ListCtrl): self.addColumn(i, col) i += 1 - self.imageListBase = self.imageList.ImageCount + info = wx.ListItem() + info.m_mask = wx.LIST_MASK_WIDTH + self.InsertColumnInfo(i, info) + self.SetColumnWidth(i, 0) - def OnEraseBackGround(self, event): - #Prevent flicker by not letting the parent's method get called. - pass + self.imageListBase = self.imageList.ImageCount def addColumn(self, i, col): self.activeColumns.append(col) @@ -89,7 +90,6 @@ class Display(wx.ListCtrl): def populate(self, stuff): selection = [] - self.Freeze() sel = self.GetFirstSelected() while sel != -1: @@ -106,8 +106,6 @@ class Display(wx.ListCtrl): for sel in selection: self.Select(sel) - self.Thaw() - def refresh(self, stuff): if stuff == None: return @@ -118,8 +116,8 @@ class Display(wx.ListCtrl): selection.append(sel) sel = self.GetNextSelected(sel) - self.Freeze() item = -1 + self.sizeLastColumn = wx.LIST_AUTOSIZE_USEHEADER for id, st in enumerate(stuff): item = self.GetNextItem(item) for i, col in enumerate(self.activeColumns): @@ -138,26 +136,31 @@ class Display(wx.ListCtrl): if oldText != newText or oldImageId != newImageId: self.SetItem(colItem) - + if i == len(self.activeColumns) - 1 and newText: + self.sizeLastColumn = wx.LIST_AUTOSIZE self.SetItemState(item, 0 , wx.LIST_STATE_FOCUSED | wx.LIST_STATE_SELECTED) self.SetItemData(item, id) + self.Freeze() for i, col in enumerate(self.activeColumns): if not col.resized: - if col.size == wx.LIST_AUTOSIZE: - self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER) - headerWidth = self.GetColumnWidth(i) - self.SetColumnWidth(i, wx.LIST_AUTOSIZE) - baseWidth = self.GetColumnWidth(i) - if baseWidth < headerWidth: - self.SetColumnWidth(i, headerWidth) + if i< len(self.activeColumns) - 1: + if col.size == wx.LIST_AUTOSIZE: + self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER) + headerWidth = self.GetColumnWidth(i) + self.SetColumnWidth(i, wx.LIST_AUTOSIZE) + baseWidth = self.GetColumnWidth(i) + if baseWidth < headerWidth: + self.SetColumnWidth(i, headerWidth) + else: + self.SetColumnWidth(i, col.size) else: - self.SetColumnWidth(i, col.size) - + self.SetColumnWidth(i,self.sizeLastColumn) + self.Thaw() for sel in selection: self.Select(sel) - self.Thaw() + def update(self, stuff): self.populate(stuff) diff --git a/gui/multiSwitch.py b/gui/multiSwitch.py index 271ce7cdc..7345e3763 100644 --- a/gui/multiSwitch.py +++ b/gui/multiSwitch.py @@ -66,14 +66,14 @@ class MultiSwitch(wx.Notebook): if type == "fit": p = wx.Panel(self) + self.InsertPage(pos, p, "") p.type = "fit" - sizer = wx.BoxSizer(wx.HORIZONTAL) + sizer = wx.BoxSizer(wx.VERTICAL) p.view = fv.FittingView(p) sizer.Add(p.view, 1, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN) p.SetSizer(sizer) - self.InsertPage(pos, p, "") self.setTabTitle(pos, None) else: self.InsertPage(pos, frame, title)