diff --git a/gui/builtinViewColumns/activityCheckbox.py b/gui/builtinViewColumns/activityCheckbox.py index 0de50b94e..4a790b7e7 100644 --- a/gui/builtinViewColumns/activityCheckbox.py +++ b/gui/builtinViewColumns/activityCheckbox.py @@ -28,6 +28,7 @@ class ActivityCheckbox(ViewColumn): ViewColumn.__init__(self, fittingView) self.resizable = False self.size = 24 + self.maxsize = self.size self.mask = wx.LIST_MASK_WIDTH for name, state in (("checked", wx.CONTROL_CHECKED), ("unchecked", 0)): bitmap = wx.EmptyBitmap(16, 16) diff --git a/gui/builtinViewColumns/maxRange.py b/gui/builtinViewColumns/maxRange.py index d75fc84ab..3cf60803d 100644 --- a/gui/builtinViewColumns/maxRange.py +++ b/gui/builtinViewColumns/maxRange.py @@ -51,7 +51,7 @@ class MaxRange(ViewColumn): if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name - self.mask |= wx.LIST_MASK_IMAGE + self.mask |= wx.LIST_MASK_TEXT def getText(self, stuff): maxRange = stuff.maxRange if hasattr(stuff, "maxRange") else stuff.getModifiedItemAttr("maxRange") diff --git a/gui/builtinViewColumns/moduleAmmoIcon.py b/gui/builtinViewColumns/moduleAmmoIcon.py index 0c36dca4a..18ec5431d 100644 --- a/gui/builtinViewColumns/moduleAmmoIcon.py +++ b/gui/builtinViewColumns/moduleAmmoIcon.py @@ -27,6 +27,7 @@ class ModuleAmmoIcon(ViewColumn): def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.size = 16 + self.maxsize = self.size self.mask = wx.LIST_MASK_IMAGE self.columnText = "" diff --git a/gui/display.py b/gui/display.py index c4aec80e1..ca06838b5 100644 --- a/gui/display.py +++ b/gui/display.py @@ -29,7 +29,9 @@ class Display(wx.ListCtrl): self.imageList = wx.ImageList(16, 16) self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL) self.activeColumns = [] - self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.resizeChecker) + self.columnsMinWidth = [] + self.Bind(wx.EVT_LIST_COL_END_DRAG, self.resizeChecker) + self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.resizeSkip) self.mainFrame = gui.mainFrame.MainFrame.getInstance() @@ -45,6 +47,7 @@ class Display(wx.ListCtrl): col = ViewColumn.getColumn(colName)(self, None) self.addColumn(i, col) + self.columnsMinWidth.append(self.GetColumnWidth(i)) i += 1 info = wx.ListItem() @@ -76,13 +79,23 @@ class Display(wx.ListCtrl): def resizeChecker(self, event): # we veto header cell resize by default till we find a way # to assure a minimal size for the resized header cell + column = event.GetColumn() + wx.CallAfter(self.checkColumnSize,column) + event.Skip() - event.Veto() + def resizeSkip(self, event): + column = event.GetColumn() + colItem = self.activeColumns[column] + if self.activeColumns[column].maxsize != -1: + event.Veto() + else: + event.Skip() -# if self.activeColumns[event.Column].resizable is False: -# event.Veto() -# else: -# self.activeColumns[event.Column].resized = True + def checkColumnSize(self,column): + colItem = self.activeColumns[column] + if self.GetColumnWidth(column) < self.columnsMinWidth[column]: + self.SetColumnWidth(column,self.columnsMinWidth[column]) + colItem.resized = True def clearItemImages(self): for i in xrange(self.imageList.ImageCount - 1, self.imageListBase, -1): @@ -142,8 +155,22 @@ class Display(wx.ListCtrl): self.SetItemData(item, id) self.Freeze() - for i,col in enumerate(self.activeColumns): - self.SetColumnWidth(i, col.size) + if 'wxMSW' in wx.PlatformInfo: + for i,col in enumerate(self.activeColumns): + if not col.resized: + self.SetColumnWidth(i, col.size) + else: + for i, col in enumerate(self.activeColumns): + if not col.resized: + if col.size == wx.LIST_AUTOSIZE_USEHEADER: + 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) self.Thaw() for sel in selection: diff --git a/gui/viewColumn.py b/gui/viewColumn.py index 4a1566d51..5f704c448 100644 --- a/gui/viewColumn.py +++ b/gui/viewColumn.py @@ -32,6 +32,7 @@ class ViewColumn(object): self.imageId = -1 self.size = wx.LIST_AUTOSIZE_USEHEADER self.mask = 0 + self.maxsize = -1 @classmethod