From 1d082475f5f6577a742a667be45a118201e2b061 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 2 Nov 2010 15:13:14 +0200 Subject: [PATCH 1/5] Fixed a little oopsie --- gui/builtinViewColumns/maxRange.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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") From 155485da9cac05c819631714f719bb1a9c11c035 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 2 Nov 2010 17:13:24 +0200 Subject: [PATCH 2/5] Quick fix for display columns size --- gui/viewColumn.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/viewColumn.py b/gui/viewColumn.py index 4a1566d51..f25117ccf 100644 --- a/gui/viewColumn.py +++ b/gui/viewColumn.py @@ -30,7 +30,7 @@ class ViewColumn(object): self.fittingView = fittingView self.columnText = "" self.imageId = -1 - self.size = wx.LIST_AUTOSIZE_USEHEADER + self.size = wx.LIST_AUTOSIZE_USEHEADER if 'wxMSW' in wx.PlatformInfo else wx.LIST_AUTOSIZE self.mask = 0 From 918fcbd3fb437e44113f362f58b91930a666926b Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 2 Nov 2010 17:40:45 +0200 Subject: [PATCH 3/5] Revert "Quick fix for display columns size" This reverts commit 155485da9cac05c819631714f719bb1a9c11c035. --- gui/viewColumn.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/viewColumn.py b/gui/viewColumn.py index f25117ccf..4a1566d51 100644 --- a/gui/viewColumn.py +++ b/gui/viewColumn.py @@ -30,7 +30,7 @@ class ViewColumn(object): self.fittingView = fittingView self.columnText = "" self.imageId = -1 - self.size = wx.LIST_AUTOSIZE_USEHEADER if 'wxMSW' in wx.PlatformInfo else wx.LIST_AUTOSIZE + self.size = wx.LIST_AUTOSIZE_USEHEADER self.mask = 0 From f07b0172eba2e79c3912f3d7fdf394ddd44da103 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 2 Nov 2010 17:45:42 +0200 Subject: [PATCH 4/5] Fix the fix of the fixing fix. --- gui/display.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gui/display.py b/gui/display.py index c4aec80e1..c9b37d54d 100644 --- a/gui/display.py +++ b/gui/display.py @@ -142,8 +142,20 @@ 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): + self.SetColumnWidth(i, col.size) + else: + for i, col in enumerate(self.activeColumns): + 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: From 072681b9396097f286768494c8dd05ed62067b6e Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 2 Nov 2010 18:23:01 +0200 Subject: [PATCH 5/5] Allow column resize in fitting view. If a column gets resized it will maintain its width when doing a refresh. --- gui/builtinViewColumns/activityCheckbox.py | 1 + gui/builtinViewColumns/moduleAmmoIcon.py | 1 + gui/display.py | 47 ++++++++++++++-------- gui/viewColumn.py | 1 + 4 files changed, 34 insertions(+), 16 deletions(-) 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/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 c9b37d54d..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): @@ -144,18 +157,20 @@ class Display(wx.ListCtrl): self.Freeze() if 'wxMSW' in wx.PlatformInfo: for i,col in enumerate(self.activeColumns): - self.SetColumnWidth(i, col.size) + if not col.resized: + self.SetColumnWidth(i, col.size) else: for i, col in enumerate(self.activeColumns): - 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) + 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