Allow to use custom labels for selectors

This commit is contained in:
DarkPhoenix
2019-08-14 08:53:26 +03:00
parent 810b8be92a
commit 483c1c35fd
3 changed files with 82 additions and 10 deletions

View File

@@ -21,11 +21,65 @@
from collections import namedtuple
YDef = namedtuple('YDef', ('handle', 'unit', 'label'))
XDef = namedtuple('XDef', ('handle', 'unit', 'label', 'mainInput'))
VectorDef = namedtuple('VectorDef', ('lengthHandle', 'lengthUnit', 'angleHandle', 'angleUnit', 'label'))
class YDef:
def __init__(self, handle, unit, label, selectorLabel=None):
self.handle = handle
self.unit = unit
self.label = label
self._selectorLabel = selectorLabel
@property
def selectorLabel(self):
if self._selectorLabel is not None:
return self._selectorLabel
return self.label
def __hash__(self):
return hash((self.handle, self.unit, self.label, self._selectorLabel))
def __eq__(self, other):
if not isinstance(other, YDef):
return False
return all((
self.handle == other.handle,
self.unit == other.unit,
self.label == other.label,
self._selectorLabel == other._selectorLabel))
class XDef:
def __init__(self, handle, unit, label, mainInput, selectorLabel=None):
self.handle = handle
self.unit = unit
self.label = label
self.mainInput = mainInput
self._selectorLabel = selectorLabel
@property
def selectorLabel(self):
if self._selectorLabel is not None:
return self._selectorLabel
return self.label
def __hash__(self):
return hash((self.handle, self.unit, self.label, self.mainInput, self._selectorLabel))
def __eq__(self, other):
if not isinstance(other, XDef):
return False
return all((
self.handle == other.handle,
self.unit == other.unit,
self.label == other.label,
self.mainInput == other.mainInput,
self._selectorLabel == other._selectorLabel))
class Input:
def __init__(self, handle, unit, label, iconID, defaultValue, defaultRange, mainOnly=False, mainTooltip=None, secondaryTooltip=None):
@@ -38,3 +92,20 @@ class Input:
self.mainOnly = mainOnly
self.mainTooltip = mainTooltip
self.secondaryTooltip = secondaryTooltip
def __hash__(self):
return hash((self.handle, self.unit, self.label, self.iconID, self.defaultValue, self.defaultRange, self.mainOnly, self.mainTooltip, self.secondaryTooltip))
def __eq__(self, other):
if not isinstance(other, Input):
return False
return all((
self.handle == other.handle,
self.unit == other.unit,
self.label == other.label,
self.iconID == other.iconID,
self.defaultValue == other.defaultValue,
self.defaultRange == other.defaultRange,
self.mainOnly == other.mainOnly,
self.mainTooltip == other.mainTooltip,
self.secondaryTooltip == other.secondaryTooltip))

View File

@@ -29,8 +29,8 @@ class FitEwarStatsGraph(FitGraph):
name = 'Electronic Warfare Stats'
xDefs = [XDef(handle='distance', unit='km', label='Distance', mainInput=('distance', 'km'))]
yDefs = [
YDef(handle='webStr', unit='%', label='Web speed reduction'),
YDef(handle='dampStrLockRange', unit='%', label='Damp lock range reduction')]
YDef(handle='webStr', unit='%', label='Speed reduction', selectorLabel='Webs: speed reduction'),
YDef(handle='dampStrLockRange', unit='%', label='Lock range reduction', selectorLabel='Damps: lock range reduction')]
inputs = [
Input(handle='distance', unit='km', label='Distance', iconID=1391, defaultValue=None, defaultRange=(0, 100)),
Input(handle='resist', unit='%', label='Target resistance', iconID=1393, defaultValue=0, defaultRange=(0, 100))]

View File

@@ -136,11 +136,11 @@ class GraphControlPanel(wx.Panel):
self.ySubSelection.Clear()
self.xSubSelection.Clear()
for yDef in view.yDefs:
self.ySubSelection.Append(self.formatLabel(yDef), yDef)
self.ySubSelection.Append(self.formatLabel(yDef, selector=True), yDef)
self.ySubSelection.SetSelection(0)
self.ySubSelection.Enable(len(view.yDefs) > 1)
for xDef in view.xDefs:
self.xSubSelection.Append(self.formatLabel(xDef), xDef)
self.xSubSelection.Append(self.formatLabel(xDef, selector=True), xDef)
self.xSubSelection.SetSelection(0)
self.xSubSelection.Enable(len(view.xDefs) > 1)
@@ -261,7 +261,7 @@ class GraphControlPanel(wx.Panel):
view = self.graphFrame.getView()
self.ySubSelection.Clear()
for yDef in view.yDefs:
self.ySubSelection.Append(self.formatLabel(yDef), yDef)
self.ySubSelection.Append(self.formatLabel(yDef, selector=True), yDef)
self.ySubSelection.SetSelection(selectedY)
def refreshColumns(self, layout=True):
@@ -387,10 +387,11 @@ class GraphControlPanel(wx.Panel):
def OnResistModeChanged(self, event):
self.targetList.OnResistModeChanged(event)
def formatLabel(self, axisDef):
def formatLabel(self, axisDef, selector=False):
label = axisDef.selectorLabel if selector else axisDef.label
if axisDef.unit is None:
return axisDef.label
return '{}, {}'.format(axisDef.label, axisDef.unit)
return label
return '{}, {}'.format(label, axisDef.unit)
def _storeCurrentValues(self):
main, misc = self.getValues()