Allow changing of extra attributes via profile editor

This commit is contained in:
DarkPhoenix
2019-07-26 19:30:10 +03:00
parent 27b8c12639
commit 4fce6f7b99

View File

@@ -18,6 +18,7 @@
# =============================================================================
import math
from collections import OrderedDict
# noinspection PyPackageRequirements
@@ -101,7 +102,7 @@ class ResistsEditorDlg(wx.Dialog):
("explosive", "Explosive resistance")])
ATTRIBUTES = OrderedDict([
('maxVelocity', ('Maximum speed', 'm/s')),
('signatureRadius', ('Signature radius', 'm')),
('signatureRadius', ('Signature radius\nLeave blank for infinitely big value', 'm')),
('radius', ('Radius', 'm'))])
def __init__(self, parent):
@@ -150,11 +151,11 @@ class ResistsEditorDlg(wx.Dialog):
setattr(self, "%sEdit" % type_, wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, defSize))
editObj = getattr(self, "%sEdit" % type_)
editObj.SetToolTip(tooltip)
editObj.Bind(wx.EVT_TEXT, self.ValuesUpdated)
resistEditSizer.Add(editObj, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
unit = wx.StaticText(self, wx.ID_ANY, "%", wx.DefaultPosition, wx.DefaultSize, 0)
unit.SetToolTip(tooltip)
resistEditSizer.Add(unit, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
editObj.Bind(wx.EVT_TEXT, self.ValuesUpdated)
contentSizer.Add(resistEditSizer, 1, wx.EXPAND | wx.ALL, 5)
@@ -176,11 +177,11 @@ class ResistsEditorDlg(wx.Dialog):
setattr(self, "%sEdit" % attr, wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, defSize))
editObj = getattr(self, "%sEdit" % attr)
editObj.SetToolTip(tooltip)
editObj.Bind(wx.EVT_TEXT, self.ValuesUpdated)
miscAttrSizer.Add(editObj, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
unit = wx.StaticText(self, wx.ID_ANY, unitText, wx.DefaultPosition, wx.DefaultSize, 0)
unit.SetToolTip(tooltip)
miscAttrSizer.Add(unit, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5)
editObj.Bind(wx.EVT_TEXT, self.ValuesUpdated)
contentSizer.Add(miscAttrSizer, 1, wx.EXPAND | wx.ALL, 5)
@@ -273,6 +274,23 @@ class ResistsEditorDlg(wx.Dialog):
setattr(p, "%sAmount" % type_, value / 100)
editObj.SetForegroundColour(self.colorReset)
for attr in self.ATTRIBUTES:
editObj = getattr(self, "%sEdit" % attr)
if editObj.GetValue() == "" and attr != "signatureRadius":
# if we are blank, overwrite with 0 except for signatureRadius
editObj.ChangeValue("0.0")
editObj.SetInsertionPointEnd()
# if everything checks out, set attribute
value = editObj.GetValue()
if value == '':
value = None
else:
value = float(value)
setattr(p, attr, value)
editObj.SetForegroundColour(self.colorReset)
self.stNotice.SetLabel("")
self.totSizer.Layout()
@@ -280,7 +298,6 @@ class ResistsEditorDlg(wx.Dialog):
event.Skip()
TargetProfile.getInstance().saveChanges(p)
print(p.ID)
wx.PostEvent(self.mainFrame, GE.TargetProfileChanged(profileID=p.ID))
except ValueError:
@@ -314,6 +331,14 @@ class ResistsEditorDlg(wx.Dialog):
amount = getattr(p, "%sAmount" % field) * 100
edit.ChangeValue(str(amount))
for attr in self.ATTRIBUTES:
edit = getattr(self, "%sEdit" % attr)
amount = getattr(p, attr)
if amount == math.inf:
edit.ChangeValue('')
else:
edit.ChangeValue(str(amount))
self.block = False
self.ValuesUpdated()