From 7ad1e47cb03c2727265a5c1d677093a0b4700b41 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 2 Nov 2010 15:04:35 +0200 Subject: [PATCH] Fitting view/display improvements --- gui/builtinViewColumns/activityCheckbox.py | 1 + gui/builtinViewColumns/attributeDisplay.py | 3 +++ gui/builtinViewColumns/capacitorUse.py | 4 +++ gui/builtinViewColumns/droneDps.py | 3 ++- gui/builtinViewColumns/droneNameAmount.py | 2 ++ gui/builtinViewColumns/maxRange.py | 4 +++ gui/builtinViewColumns/moduleAmmo.py | 5 +++- gui/builtinViewColumns/moduleAmmoIcon.py | 1 + gui/builtinViewColumns/moduleName.py | 2 ++ gui/builtinViewColumns/modulePrice.py | 2 ++ gui/builtinViewColumns/moduleState.py | 2 ++ gui/builtinViewColumns/moduleTracking.py | 5 ++++ gui/builtinViewColumns/name.py | 2 ++ gui/builtinViewColumns/projectedAmmo.py | 3 +++ gui/builtinViewColumns/projectedAmmoIcon.py | 4 ++- gui/builtinViewColumns/projectedName.py | 2 ++ gui/builtinViewColumns/projectedState.py | 2 ++ gui/display.py | 27 ++++++--------------- gui/fittingView.py | 6 +++-- gui/viewColumn.py | 6 ++--- 20 files changed, 59 insertions(+), 27 deletions(-) diff --git a/gui/builtinViewColumns/activityCheckbox.py b/gui/builtinViewColumns/activityCheckbox.py index 62829086f..0de50b94e 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.mask = wx.LIST_MASK_WIDTH for name, state in (("checked", wx.CONTROL_CHECKED), ("unchecked", 0)): bitmap = wx.EmptyBitmap(16, 16) dc = wx.MemoryDC() diff --git a/gui/builtinViewColumns/attributeDisplay.py b/gui/builtinViewColumns/attributeDisplay.py index 4b787f583..5c5a7e4d9 100644 --- a/gui/builtinViewColumns/attributeDisplay.py +++ b/gui/builtinViewColumns/attributeDisplay.py @@ -22,6 +22,7 @@ from gui.viewColumn import ViewColumn from gui import bitmapLoader import service from util import formatAmount +import wx class AttributeDisplay(ViewColumn): name = "Attribute Display" @@ -45,11 +46,13 @@ class AttributeDisplay(ViewColumn): self.imageId = -1 else: self.imageId = -1 + self.mask = wx.LIST_MASK_IMAGE else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name + self.mask |= wx.LIST_MASK_IMAGE def getText(self, mod): if hasattr(mod, "item"): diff --git a/gui/builtinViewColumns/capacitorUse.py b/gui/builtinViewColumns/capacitorUse.py index 0c2a89e89..146361027 100644 --- a/gui/builtinViewColumns/capacitorUse.py +++ b/gui/builtinViewColumns/capacitorUse.py @@ -22,10 +22,14 @@ from gui import bitmapLoader import service from util import formatAmount +import wx class CapacitorUse(ViewColumn): name = "Capacitor Usage" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) + + self.mask = wx.LIST_MASK_IMAGE + cAttribute = service.Attribute.getInstance() info = cAttribute.getAttributeInfo("capacitorNeed") bitmap = bitmapLoader.getBitmap(info.icon.iconFile, "pack") diff --git a/gui/builtinViewColumns/droneDps.py b/gui/builtinViewColumns/droneDps.py index cf205a409..5f7be203c 100644 --- a/gui/builtinViewColumns/droneDps.py +++ b/gui/builtinViewColumns/droneDps.py @@ -21,12 +21,13 @@ from gui import builtinViewColumns from gui.viewColumn import ViewColumn from gui import bitmapLoader from eos.types import Slot - +import wx class DroneDps(ViewColumn): name = "Drone DPS" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.columnText = "" + self.mask = wx.LIST_MASK_IMAGE bitmap = bitmapLoader.getBitmap("droneBandwidth_small", "icons") self.imageId = fittingView.imageList.Add(bitmap) diff --git a/gui/builtinViewColumns/droneNameAmount.py b/gui/builtinViewColumns/droneNameAmount.py index ac3be9ab0..1c80c6a5e 100644 --- a/gui/builtinViewColumns/droneNameAmount.py +++ b/gui/builtinViewColumns/droneNameAmount.py @@ -21,12 +21,14 @@ from gui import builtinViewColumns from gui.viewColumn import ViewColumn from gui import bitmapLoader from eos.types import Slot +import wx class DroneNameAmount(ViewColumn): name = "Drone Name/Amount" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.columnText = "Name" + self.mask = wx.LIST_MASK_TEXT def getText(self, drone): return "%dx %s" % (drone.amount, drone.item.name) diff --git a/gui/builtinViewColumns/maxRange.py b/gui/builtinViewColumns/maxRange.py index f5d25da04..d75fc84ab 100644 --- a/gui/builtinViewColumns/maxRange.py +++ b/gui/builtinViewColumns/maxRange.py @@ -22,6 +22,7 @@ from gui.viewColumn import ViewColumn from gui import bitmapLoader import service from util import formatAmount +import wx class MaxRange(ViewColumn): name = "Max range" @@ -30,6 +31,7 @@ class MaxRange(ViewColumn): params = {"showIcon": True, "displayName": False} ViewColumn.__init__(self, fittingView) + cAttribute = service.Attribute.getInstance() info = cAttribute.getAttributeInfo("maxRange") self.info = info @@ -43,11 +45,13 @@ class MaxRange(ViewColumn): self.imageId = -1 else: self.imageId = -1 + self.mask = wx.LIST_MASK_IMAGE else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name + self.mask |= wx.LIST_MASK_IMAGE def getText(self, stuff): maxRange = stuff.maxRange if hasattr(stuff, "maxRange") else stuff.getModifiedItemAttr("maxRange") diff --git a/gui/builtinViewColumns/moduleAmmo.py b/gui/builtinViewColumns/moduleAmmo.py index 85b04df53..bebf65da5 100644 --- a/gui/builtinViewColumns/moduleAmmo.py +++ b/gui/builtinViewColumns/moduleAmmo.py @@ -20,11 +20,14 @@ from gui import builtinViewColumns from gui.viewColumn import ViewColumn from gui import bitmapLoader - +import wx class ModuleAmmo(ViewColumn): name = "Module Ammo" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) + + self.mask = wx.LIST_MASK_IMAGE + self.imageId = fittingView.imageList.Add(bitmapLoader.getBitmap("damagePattern_small", "icons")) def getText(self, mod): diff --git a/gui/builtinViewColumns/moduleAmmoIcon.py b/gui/builtinViewColumns/moduleAmmoIcon.py index 4315d2a66..0c36dca4a 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.mask = wx.LIST_MASK_IMAGE self.columnText = "" def getText(self, mod): diff --git a/gui/builtinViewColumns/moduleName.py b/gui/builtinViewColumns/moduleName.py index 23e0538b6..58a80b9ae 100644 --- a/gui/builtinViewColumns/moduleName.py +++ b/gui/builtinViewColumns/moduleName.py @@ -21,12 +21,14 @@ from gui import builtinViewColumns from gui.viewColumn import ViewColumn from gui import bitmapLoader from eos.types import Slot +import wx class ModuleName(ViewColumn): name = "Module Name" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.columnText = "Name" + self.mask = wx.LIST_MASK_TEXT def getText(self, mod): if mod.isEmpty: diff --git a/gui/builtinViewColumns/modulePrice.py b/gui/builtinViewColumns/modulePrice.py index 81ddad99b..146c817f6 100644 --- a/gui/builtinViewColumns/modulePrice.py +++ b/gui/builtinViewColumns/modulePrice.py @@ -21,11 +21,13 @@ from gui.viewColumn import ViewColumn from gui import bitmapLoader import service from util import formatAmount +import wx class ModulePrice(ViewColumn): name = "Module Price" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) + self.mask = wx.LIST_MASK_IMAGE bitmap = bitmapLoader.getBitmap("totalPrice_small", "icons") if bitmap: self.imageId = fittingView.imageList.Add(bitmap) diff --git a/gui/builtinViewColumns/moduleState.py b/gui/builtinViewColumns/moduleState.py index d331ebe6d..8e0437f2c 100644 --- a/gui/builtinViewColumns/moduleState.py +++ b/gui/builtinViewColumns/moduleState.py @@ -21,6 +21,7 @@ from gui import builtinViewColumns from gui.viewColumn import ViewColumn from gui import bitmapLoader from eos.types import State +import wx class ModuleState(ViewColumn): name = "Module State" @@ -28,6 +29,7 @@ class ModuleState(ViewColumn): ViewColumn.__init__(self, fittingView) self.resizable = False self.size = 20 + self.mask = wx.LIST_MASK_IMAGE self.stateNameMap = {} def getText(self, mod): diff --git a/gui/builtinViewColumns/moduleTracking.py b/gui/builtinViewColumns/moduleTracking.py index f4f65ae8b..ffda80c2d 100644 --- a/gui/builtinViewColumns/moduleTracking.py +++ b/gui/builtinViewColumns/moduleTracking.py @@ -23,6 +23,7 @@ from gui import bitmapLoader import service from util import formatAmount from eos.types import Hardpoint +import wx class MaxRange(ViewColumn): name = "Module Tracking" @@ -44,11 +45,15 @@ class MaxRange(ViewColumn): self.imageId = -1 else: self.imageId = -1 + + self.mask = wx.LIST_MASK_IMAGE + else: self.imageId = -1 if params["displayName"] or self.imageId == -1: self.columnText = info.displayName if info.displayName != "" else info.name + self.mask |= wx.LIST_MASK_TEXT def getText(self, stuff): if stuff.hardpoint == Hardpoint.TURRET: diff --git a/gui/builtinViewColumns/name.py b/gui/builtinViewColumns/name.py index b8a7fedd1..4709d865a 100644 --- a/gui/builtinViewColumns/name.py +++ b/gui/builtinViewColumns/name.py @@ -21,12 +21,14 @@ from gui import builtinViewColumns from gui.viewColumn import ViewColumn from gui import bitmapLoader from eos.types import Slot +import wx class StuffName(ViewColumn): name = "Name" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.columnText = "Name" + self.mask = wx.LIST_MASK_TEXT def getText(self, stuff): item = getattr(stuff, "item", stuff) diff --git a/gui/builtinViewColumns/projectedAmmo.py b/gui/builtinViewColumns/projectedAmmo.py index dbcd285ea..78aafc6ab 100644 --- a/gui/builtinViewColumns/projectedAmmo.py +++ b/gui/builtinViewColumns/projectedAmmo.py @@ -20,12 +20,15 @@ from gui.viewColumn import ViewColumn import gui.builtinViewColumns.moduleAmmo from eos.types import Module +import wx class ProjectedAmmo(ViewColumn): name = "Projected Ammo" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.columnText = "" + self.mask = wx.LIST_MASK_IMAGE + self.slave = gui.builtinViewColumns.moduleAmmo.ModuleAmmo(fittingView, params) self.imageId = self.slave.imageId def getText(self, stuff): diff --git a/gui/builtinViewColumns/projectedAmmoIcon.py b/gui/builtinViewColumns/projectedAmmoIcon.py index 9785901bb..8a0689702 100644 --- a/gui/builtinViewColumns/projectedAmmoIcon.py +++ b/gui/builtinViewColumns/projectedAmmoIcon.py @@ -20,13 +20,15 @@ from gui.viewColumn import ViewColumn import gui.builtinViewColumns.moduleAmmoIcon from eos.types import Module - +import wx class ProjectedAmmoIcon(ViewColumn): name = "Projected Ammo Icon" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.columnText = "" self.size = 20 + self.mask = wx.LIST_MASK_IMAGE + self.slave = gui.builtinViewColumns.moduleAmmoIcon.ModuleAmmoIcon(fittingView, params) def getText(self, stuff): diff --git a/gui/builtinViewColumns/projectedName.py b/gui/builtinViewColumns/projectedName.py index ab28cc6a8..7d3cc0cdf 100644 --- a/gui/builtinViewColumns/projectedName.py +++ b/gui/builtinViewColumns/projectedName.py @@ -21,12 +21,14 @@ from gui.viewColumn import ViewColumn import gui.builtinViewColumns.name import gui.builtinViewColumns.droneNameAmount from eos.types import Drone +import wx class ProjectedName(ViewColumn): name = "Projected Name" def __init__(self, fittingView, params): ViewColumn.__init__(self, fittingView) self.columnText = "Name" + self.mask = wx.LIST_MASK_TEXT self.slave = gui.builtinViewColumns.name.StuffName(fittingView, params) self.droneSlave = gui.builtinViewColumns.droneNameAmount.DroneNameAmount(fittingView, params) diff --git a/gui/builtinViewColumns/projectedState.py b/gui/builtinViewColumns/projectedState.py index b3d1f4163..b3a4bdd00 100644 --- a/gui/builtinViewColumns/projectedState.py +++ b/gui/builtinViewColumns/projectedState.py @@ -25,6 +25,7 @@ import gui.builtinViewColumns.moduleState import gui.builtinViewColumns.droneCheckbox from eos.types import Module, Drone, Fit import gui.bitmapLoader +import wx class ProjectedState(ViewColumn): name = "Projected State" @@ -32,6 +33,7 @@ class ProjectedState(ViewColumn): ViewColumn.__init__(self, view) self.columnText = "" self.size = 20 + self.mask = wx.LIST_MASK_IMAGE self.fitImageId = view.imageList.Add(gui.bitmapLoader.getBitmap("fit_small", "icons")) self.moduleSlave = gui.builtinViewColumns.moduleState.ModuleState(view, params) self.droneSlave = gui.builtinViewColumns.droneCheckbox.DroneCheckbox(view, params) diff --git a/gui/display.py b/gui/display.py index 51efd8d24..c4aec80e1 100644 --- a/gui/display.py +++ b/gui/display.py @@ -57,12 +57,14 @@ class Display(wx.ListCtrl): def addColumn(self, i, col): self.activeColumns.append(col) info = wx.ListItem() - info.m_mask = col.mask + info.m_mask = col.mask | wx.LIST_MASK_FORMAT | wx.LIST_MASK_WIDTH info.m_image = col.imageId info.m_text = col.columnText + info.m_width = -1 + info.m_format = wx.LIST_FORMAT_LEFT self.InsertColumnInfo(i, info) col.resized = False - self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER if col.size is wx.LIST_AUTOSIZE else col.size) + self.SetColumnWidth(i, col.size) def getColIndex(self, colClass): for i, col in enumerate(self.activeColumns): @@ -116,7 +118,6 @@ class Display(wx.ListCtrl): sel = self.GetNextSelected(sel) 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): @@ -135,28 +136,16 @@ 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 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,self.sizeLastColumn) + for i,col in enumerate(self.activeColumns): + self.SetColumnWidth(i, col.size) self.Thaw() + for sel in selection: self.Select(sel) diff --git a/gui/fittingView.py b/gui/fittingView.py index 9c8f08557..0aa22c479 100644 --- a/gui/fittingView.py +++ b/gui/fittingView.py @@ -260,9 +260,11 @@ class FittingView(d.Display): for slotType in Slot.getTypes(): slot = Slot.getValue(slotType) slotMap[slot] = fit.getSlotsFree(slot) < 0 - + bkcolor = self.GetBackgroundColour() for i, mod in enumerate(self.mods): if slotMap[mod.slot]: self.SetItemBackgroundColour(i, wx.Colour(255, 51, 51)) else: - self.SetItemBackgroundColour(i, self.GetBackgroundColour()) + icolor = self.GetItemBackgroundColour(i) + if icolor != bkcolor: + self.SetItemBackgroundColour(i, bkcolor) diff --git a/gui/viewColumn.py b/gui/viewColumn.py index 7f8746217..4a1566d51 100644 --- a/gui/viewColumn.py +++ b/gui/viewColumn.py @@ -30,9 +30,9 @@ class ViewColumn(object): self.fittingView = fittingView self.columnText = "" self.imageId = -1 - self.size = wx.LIST_AUTOSIZE - self.mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE - self.resizable = True + self.size = wx.LIST_AUTOSIZE_USEHEADER + self.mask = 0 + @classmethod def register(cls):