Added option to show rack labels

This commit is contained in:
blitzmann
2014-03-25 12:43:15 -04:00
parent c3ce580b8c
commit 1f37656169
4 changed files with 47 additions and 13 deletions

View File

@@ -40,8 +40,14 @@ class PFGeneralPref ( PreferenceView):
self.cbFitColorSlots = wx.CheckBox( panel, wx.ID_ANY, u"Color fitting view by slot", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.cbFitColorSlots, 0, wx.ALL|wx.EXPAND, 5 )
self.cbDivideSlots = wx.CheckBox( panel, wx.ID_ANY, u"Separate Racks", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.cbDivideSlots, 0, wx.ALL|wx.EXPAND, 5 )
self.cbRackSlots = wx.CheckBox( panel, wx.ID_ANY, u"Separate Racks", wx.DefaultPosition, wx.DefaultSize, 0 )
mainSizer.Add( self.cbRackSlots, 0, wx.ALL|wx.EXPAND, 5 )
labelSizer = wx.BoxSizer( wx.VERTICAL )
self.cbRackLabels = wx.CheckBox( panel, wx.ID_ANY, u"Show Rack Labels", wx.DefaultPosition, wx.DefaultSize, 0 )
labelSizer.Add( self.cbRackLabels, 0, wx.ALL|wx.EXPAND, 5 )
mainSizer.Add( labelSizer, 0, wx.LEFT|wx.EXPAND, 30 )
# Needs to be implemented - save active fittings and reapply when starting pyfa
#self.cbReopenFits = wx.CheckBox( panel, wx.ID_ANY, u"Reopen Fits", wx.DefaultPosition, wx.DefaultSize, 0 )
@@ -58,13 +64,17 @@ class PFGeneralPref ( PreferenceView):
self.cbGlobalDmgPattern.SetValue(useGlobalDmgPattern)
self.cbGlobalForceReload.SetValue(useGlobalForceReload)
self.cbFitColorSlots.SetValue(self.sFit.serviceFittingOptions["colorFitBySlot"] or False)
self.cbDivideSlots.SetValue(self.sFit.serviceFittingOptions["divideSlots"] or False)
self.cbRackSlots.SetValue(self.sFit.serviceFittingOptions["rackSlots"] or False)
self.cbRackLabels.SetValue(self.sFit.serviceFittingOptions["rackLabels"] or False)
self.cbGlobalChar.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalCharStateChange)
self.cbGlobalDmgPattern.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalDmgPatternStateChange)
self.cbGlobalForceReload.Bind(wx.EVT_CHECKBOX, self.OnCBGlobalForceReloadStateChange)
self.cbFitColorSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalColorBySlot)
self.cbDivideSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalDivideSlots)
self.cbRackSlots.Bind(wx.EVT_CHECKBOX, self.onCBGlobalRackSlots)
self.cbRackLabels.Bind(wx.EVT_CHECKBOX, self.onCBGlobalRackLabels)
self.cbRackLabels.Enable(self.sFit.serviceFittingOptions["rackSlots"] or False)
panel.SetSizer( mainSizer )
panel.Layout()
@@ -76,8 +86,16 @@ class PFGeneralPref ( PreferenceView):
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
event.Skip()
def onCBGlobalDivideSlots(self, event):
self.sFit.serviceFittingOptions["divideSlots"] = self.cbDivideSlots.GetValue()
def onCBGlobalRackSlots(self, event):
self.sFit.serviceFittingOptions["rackSlots"] = self.cbRackSlots.GetValue()
self.cbRackLabels.Enable(self.cbRackSlots.GetValue())
fitID = self.mainFrame.getActiveFit()
self.sFit.refreshFit(fitID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
event.Skip()
def onCBGlobalRackLabels(self, event):
self.sFit.serviceFittingOptions["rackLabels"] = self.cbRackLabels.GetValue()
fitID = self.mainFrame.getActiveFit()
self.sFit.refreshFit(fitID)
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))

View File

@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
#===============================================================================
# Copyright (C) 2010 Diego Duclos
#
@@ -22,6 +23,7 @@ from gui.viewColumn import ViewColumn
from gui import bitmapLoader
import wx
from eos.types import Drone, Fit, Module, Slot, Rack
import service
class BaseName(ViewColumn):
name = "Base Name"
@@ -37,8 +39,10 @@ class BaseName(ViewColumn):
elif isinstance(stuff, Fit):
return "%s (%s)" % (stuff.name, stuff.ship.item.name)
elif isinstance(stuff, Rack):
return ""
#return "%s Rack" % Slot.getName(stuff.slot).capitalize()
if service.Fit.getInstance().serviceFittingOptions["rackLabels"]:
return u'{} Rack ─'.format(Slot.getName(stuff.slot).capitalize())
else:
return ""
elif isinstance(stuff, Module):
if stuff.isEmpty:
return "%s Slot" % Slot.getName(stuff.slot).capitalize()

View File

@@ -377,17 +377,19 @@ class FittingView(d.Display):
self.mods = fit.modules[:]
self.mods.sort(key=lambda mod: (slotOrder.index(mod.slot), mod.position))
# set up blanks
slotDivider = self.mods[0].slot # flag to know when to add blank (default: don't add blank for first "slot group")
self.blanks = [] # preliminary markers where blanks will be inserted
if cFit.serviceFittingOptions["divideSlots"]:
if cFit.serviceFittingOptions["rackSlots"]:
# flag to know when to add blanks, based on previous slot
slotDivider = None if cFit.serviceFittingOptions["rackLabels"] else self.mods[0].slot
for i, mod in enumerate(self.mods):
if mod.slot != slotDivider:
slotDivider = mod.slot
self.blanks.append(i)
for i, x in enumerate(self.blanks):
self.blanks[i] = x+i # modify blanks
self.blanks[i] = x+i # modify blanks with actual index
self.mods.insert(x+i, Rack.buildRack(slotOrder.index(i+1)))
else:
@@ -502,6 +504,7 @@ class FittingView(d.Display):
Sends data to d.Display.refresh where the rows and columns are set up, then does a
bit of post-processing (colors)
'''
self.Freeze()
d.Display.refresh(self, stuff)
sFit = service.Fit.getInstance()
@@ -521,6 +524,14 @@ class FittingView(d.Display):
else:
self.SetItemBackgroundColour(i, self.GetBackgroundColour())
if sFit.serviceFittingOptions["rackSlots"] and sFit.serviceFittingOptions["rackLabels"]:
for i in self.blanks:
font = self.GetItemFont(i)
font.SetWeight(wx.FONTWEIGHT_BOLD)
self.SetItemFont(i, font)
self.SetItemTextColour(i, wx.Colour(0, 51, 153))
self.Thaw()
self.itemCount = self.GetItemCount()
self.itemRect = self.GetItemRect(0)

View File

@@ -88,7 +88,8 @@ class Fit(object):
"defaultCharacter": self.character.ID,
"useGlobalForceReload": False,
"colorFitBySlot": False,
"divideSlots": False}
"rackSlots": False,
"rackLabels": False}
self.serviceFittingOptions = SettingsProvider.getInstance().getSettings("pyfaServiceFittingOptions", serviceFittingDefaultOptions)