From 27b8c1263939418cdf6d328e52fbdb59b8bf36aa Mon Sep 17 00:00:00 2001 From: DarkPhoenix Date: Fri, 26 Jul 2019 17:48:19 +0300 Subject: [PATCH] Add extra attributes to target profile editor --- gui/globalEvents.py | 2 + gui/targetProfileEditor.py | 78 +++++++++++++++++++++++++++---- imgs/gui/maxVelocity_big.png | Bin 0 -> 5367 bytes imgs/gui/radius_big.png | Bin 0 -> 9877 bytes imgs/gui/signatureRadius_big.png | Bin 0 -> 8008 bytes service/fit.py | 12 +++++ 6 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 imgs/gui/maxVelocity_big.png create mode 100644 imgs/gui/radius_big.png create mode 100644 imgs/gui/signatureRadius_big.png diff --git a/gui/globalEvents.py b/gui/globalEvents.py index 92c71c25d..97879a707 100644 --- a/gui/globalEvents.py +++ b/gui/globalEvents.py @@ -6,6 +6,8 @@ FitRemoved, FIT_REMOVED = wx.lib.newevent.NewEvent() CharListUpdated, CHAR_LIST_UPDATED = wx.lib.newevent.NewEvent() CharChanged, CHAR_CHANGED = wx.lib.newevent.NewEvent() GraphOptionChanged, GRAPH_OPTION_CHANGED = wx.lib.newevent.NewEvent() +TargetProfileChanged, TARGET_PROFILE_CHANGED = wx.lib.newevent.NewEvent() +TargetProfileRemoved, TARGET_PROFILE_REMOVED = wx.lib.newevent.NewEvent() SsoLoggingIn, EVT_SSO_LOGGING_IN = wx.lib.newevent.NewEvent() SsoLogin, EVT_SSO_LOGIN = wx.lib.newevent.NewEvent() diff --git a/gui/targetProfileEditor.py b/gui/targetProfileEditor.py index 8fee1fd35..007cb69ea 100644 --- a/gui/targetProfileEditor.py +++ b/gui/targetProfileEditor.py @@ -17,13 +17,19 @@ # along with pyfa. If not, see . # ============================================================================= + +from collections import OrderedDict + # noinspection PyPackageRequirements import wx from logbook import Logger +import gui.mainFrame +import gui.globalEvents as GE from gui.bitmap_loader import BitmapLoader from gui.builtinViews.entityEditor import EntityEditor, BaseValidator from gui.utils.clipboard import toClipboard, fromClipboard +from service.fit import Fit from service.targetProfile import TargetProfile @@ -31,6 +37,7 @@ pyfalog = Logger(__name__) class TargetProfileTextValidator(BaseValidator): + def __init__(self): BaseValidator.__init__(self) @@ -87,16 +94,26 @@ class TargetProfileEntityEditor(EntityEditor): class ResistsEditorDlg(wx.Dialog): - DAMAGE_TYPES = ("em", "thermal", "kinetic", "explosive") - ATTRIBUTES = ('maxVelocity', 'signatureRadius', 'radius') + DAMAGE_TYPES = OrderedDict([ + ("em", "EM resistance"), + ("thermal", "Thermal resistance"), + ("kinetic", "Kinetic resistance"), + ("explosive", "Explosive resistance")]) + ATTRIBUTES = OrderedDict([ + ('maxVelocity', ('Maximum speed', 'm/s')), + ('signatureRadius', ('Signature radius', 'm')), + ('radius', ('Radius', 'm'))]) def __init__(self, parent): wx.Dialog.__init__( self, parent, id=wx.ID_ANY, - # Dropdown list widget is scaled to its longest content line on GTK, adapt to that title="Target Profile Editor", - size=wx.Size(500, 240) if "wxGTK" in wx.PlatformInfo else wx.Size(350, 240)) + # Dropdown list widget is scaled to its longest content line on GTK, adapt to that. + # Also due to whatever reason, any vertical size we specify here is added as padding + # as blank panel space, so vertical size is 0 for gtk + size=wx.Size(500, 0) if "wxGTK" in wx.PlatformInfo else wx.Size(350, 240)) + self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.block = False self.SetSizeHints(wx.DefaultSize, wx.DefaultSize) @@ -125,21 +142,51 @@ class ResistsEditorDlg(wx.Dialog): else: style = wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT border = 5 - + tooltip = wx.ToolTip(self.DAMAGE_TYPES[type_]) bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big" % type_, "gui")) + bmp.SetToolTip(tooltip) resistEditSizer.Add(bmp, 0, style, border) # set text edit setattr(self, "%sEdit" % type_, wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, defSize)) editObj = getattr(self, "%sEdit" % type_) + editObj.SetToolTip(tooltip) resistEditSizer.Add(editObj, 0, wx.BOTTOM | wx.TOP | wx.ALIGN_CENTER_VERTICAL, 5) - resistEditSizer.Add(wx.StaticText(self, wx.ID_ANY, "%", wx.DefaultPosition, wx.DefaultSize, 0), 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) + + miscAttrSizer = wx.FlexGridSizer(1, 9, 0, 2) + miscAttrSizer.AddGrowableCol(0) + miscAttrSizer.AddGrowableCol(3) + miscAttrSizer.AddGrowableCol(6) + miscAttrSizer.AddGrowableCol(8) + miscAttrSizer.SetFlexibleDirection(wx.BOTH) + miscAttrSizer.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED) + + for attr in self.ATTRIBUTES: + ttText, unitText = self.ATTRIBUTES[attr] + tooltip = wx.ToolTip(ttText) + bmp = wx.StaticBitmap(self, wx.ID_ANY, BitmapLoader.getBitmap("%s_big" % attr, "gui")) + bmp.SetToolTip(tooltip) + miscAttrSizer.Add(bmp, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_RIGHT, 5) + # set text edit + setattr(self, "%sEdit" % attr, wx.TextCtrl(self, wx.ID_ANY, "", wx.DefaultPosition, defSize)) + editObj = getattr(self, "%sEdit" % attr) + editObj.SetToolTip(tooltip) + 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) + # Color we use to reset invalid value color self.colorReset = wx.SystemSettings.GetColour(wx.SYS_COLOUR_WINDOWTEXT) - contentSizer.Add(resistEditSizer, 1, wx.EXPAND | wx.ALL, 5) self.slfooter = wx.StaticLine(self) contentSizer.Add(self.slfooter, 0, wx.EXPAND | wx.TOP, 5) @@ -187,6 +234,7 @@ class ResistsEditorDlg(wx.Dialog): self.CenterOnParent() self.Bind(wx.EVT_CHOICE, self.patternChanged) + self.Bind(wx.EVT_CLOSE, self.onClose) self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent) self.patternChanged() @@ -232,6 +280,8 @@ class ResistsEditorDlg(wx.Dialog): event.Skip() TargetProfile.getInstance().saveChanges(p) + print(p.ID) + wx.PostEvent(self.mainFrame, GE.TargetProfileChanged(profileID=p.ID)) except ValueError: editObj.SetForegroundColour(wx.RED) @@ -306,5 +356,15 @@ class ResistsEditorDlg(wx.Dialog): return event.Skip() + def onClose(self, event): + self.processChanges() + event.Skip() + def closeWindow(self): - self.Destroy() + self.processChanges() + self.Close() + + def processChanges(self): + changedFitIDs = Fit.getInstance().processTargetProfileChange() + if changedFitIDs: + wx.PostEvent(self.mainFrame, GE.FitChanged(fitIDs=changedFitIDs)) diff --git a/imgs/gui/maxVelocity_big.png b/imgs/gui/maxVelocity_big.png new file mode 100644 index 0000000000000000000000000000000000000000..62d11b83f0dbb587f27207520d9441fea56e7324 GIT binary patch literal 5367 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 Vx^8vODUtvH002ovPDHLkV1k+KSv~*& literal 0 HcmV?d00001 diff --git a/imgs/gui/radius_big.png b/imgs/gui/radius_big.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0ed6b8411931e7318e98454e3a66f395c452e8 GIT binary patch literal 9877 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 Hu0mjf4vgY& literal 0 HcmV?d00001 diff --git a/imgs/gui/signatureRadius_big.png b/imgs/gui/signatureRadius_big.png new file mode 100644 index 0000000000000000000000000000000000000000..46054f512eef2bb1d511f63221b92cca8cd3eca8 GIT binary patch literal 8008 zcmV-OAGhF%P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+Rd9+mLxfHMgOr1E&*CB2l5>5fXnB7KxCHat|o`% z2P>yjM0mIZCY~_&G5bIM{g{8_Uyh}km`cqpXUo6XV)LC}s(t_7PiN!({{HxS&;9zk z`F_LmQs8HJf9Cx;zVmwe@qrRQua93}H)Vd#Q$Hti-zUERg08IJKgZS2iGqKxyU*XI zeLmOYPuuzY=jZ3NpOgRocPs>BCC(ST@jJL+`CfIEzzRYOou7s8K4h;~@_nW9JqG{x zu`}Pl{uaFN-+qgo?Vs1fuc0tDe-6mM#pv_8OTWDyzAxi{&DxJE|MEsC-}(GY?9N&B zoc(s!VmKgo^g`eI}AMR^46yN;3Ns0P$#~0GG47u=OlC_|We6Pjb>$ZEn$tIUwjw8L} zWR6e#<;(oti~p0a?-QM)(sj<(?^v-euc~1g%ACG)6bW(X6Vr6#d%w(2bz^@@Y#@W_ zhPkrAZpS;tNbW~%g`4NVamhwwUu(FsJ|`eVTsyHC7s!CkE+m(oE#4RBh+`!`ot66# z{U8G_CBK|Go%Rmc>NHj_zH8c>(iZM|?C01&vr;wsaDdkjB zO)d2ta?B~`T(U5#mr!C!C6`iaX{FatV@);JQfqCsH{SvfmRfGbwAxzhor`u(-T8Fq zh~9@EVZ@O}9%a9e3J!mtA+;{ZMNs zoOsg7r<{7)>EBuVWcAmqx!*GP&slSytSMvh9#?*3jh9RLI)xLQB;|~Z`RK@aQ3fbz zubkQHV)V+Ka%P*SDUv5^E-5+7DPv?XZs*f+-?{sdxqr-?N%3FGoBvbhj8gZ1kvXH( zeKPmgy!}nqR=im43;VB?_fEB^zJ|K~r=|Mmp`Z%;G~#k5w;c?Cb4&ow1S z1|!rQs*jn558DVqYomf>#t!D}}r?f^@Crv18>lCRk7gG<7gJANM zRmOY7-OCy?4j)a8j_cNW=#;T%bEl88i^{)JN_(}tmKL~N3SrO5tBc}a+oxD(W$y`+ zG_?+w*V)6Kv>~7WV+Zc5L4>_Mi-gYFO#`!wdIc=wWvr#4ytSiLg##1y+*0v_D7vYC75s{TU=BW(;=|&=JZfgecXc&;cMKh^Vo`|* znkb}|S|F~wmOV&K7{ElHKxWNBZ{}oIE9g*FYoS^XJ3MBAZpe@BTG+d?0nSEQG*%JX zXkiSe>h#@l%A}09Q_69jwE@Ht^aBiQG);LfW0pbc>)3EdPjN-!4V9j`(h)gIJ1$U> zI_NB`RxZnt%ZAZ7W3wioFx{pqPU~Y=4x8zes-hy)lmDS;rf+kcKsbQTp6c1VY4L7& zH#?}kmx=rMHQ11++V`0rv}Jd-o;fHJ7YU_)Ld!%Ps7<+fpDiDuTk6T~as&wumMY8XCj$v+xEM=+a59dAc```iMGMIc{@RJ~51-L`pb15X<8Z5y!`e@R1i+S) z%dKg;Iv+khDPNXdS0%Kt9`49$^Rg6w_~|MLl};T)2(?@}tJrURV*k=_4O#O8qu}<3 zQo|RjD*}g+Mxy5%(QZl3hcCq}BT>Lu=l4 zs*i09x_s~r3XCVxsDP_Iyg*^2v)wG%ggi1;MHoIn6n0ygjj@Z_=S1a$+H?d_Tclv# zyiy^DNNQ`{(21L-80nnE6d8wDi&m)DWmvI!l0vDd3e{1#{O138`K) zOY3V_-|0p!laQQi5vFcAWc5z3)U6l5#)b}|=D=YJy0Y|if*T9$3&YSU4RNA%?0ir| z^dz63Cy#)xfRT7@p2@;GZ=pUU8dRRzlDFq>Z4X10@0bSyg{A-#Jl#9e!hRrq`XWC7 z-3iKSNx;gWc}^vE$qQFm=EGGG@-_il8OcLkd~c17RZqVV{+<1Z2pR}5w{4}C8VZ~} zTQ=yR&)AKh6Rz@dn-m>M)q+D7p{`P?HUQ48GGyx~)#32?Wl$t}?-h1w*eR5aGyY&? zQ-hdi3DfpH$*c2+I2;nP*wO+Y(4r~9%rn7ph{xTE%0AIb{x*O~a@>09$Ik*HwkmLH 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 KMNUMnLSTY*hGRwm literal 0 HcmV?d00001 diff --git a/service/fit.py b/service/fit.py index 1c01d95d6..d97040595 100644 --- a/service/fit.py +++ b/service/fit.py @@ -255,6 +255,18 @@ class Fit: fitIDs.add(fit.ID) return fitIDs + def processTargetProfileChange(self): + fitIDs = set() + for fit in set(self._loadedFits): + if fit is None: + continue + if not fit.targetProfile: + continue + if fit.calculated: + self.recalc(fit) + fitIDs.add(fit.ID) + return fitIDs + def switchFit(self, fitID): pyfalog.debug("Switching fit to fit ID: {0}", fitID) if fitID is None: