Fitting view/display improvements

This commit is contained in:
HomeWorld
2010-11-02 15:04:35 +02:00
parent c0c70c9bd4
commit 7ad1e47cb0
20 changed files with 59 additions and 27 deletions

View File

@@ -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()

View File

@@ -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"):

View File

@@ -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")

View File

@@ -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)

View File

@@ -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)

View File

@@ -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")

View File

@@ -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):

View File

@@ -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):

View File

@@ -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:

View File

@@ -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)

View File

@@ -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):

View File

@@ -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:

View File

@@ -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)

View File

@@ -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):

View File

@@ -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):

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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):