diff --git a/eos/gamedata.py b/eos/gamedata.py index 2dda6703a..3e7c213eb 100644 --- a/eos/gamedata.py +++ b/eos/gamedata.py @@ -25,6 +25,7 @@ from eqBase import EqBase import traceback import eos.db + try: from collections import OrderedDict except ImportError: @@ -217,10 +218,25 @@ class Item(EqBase): overrides = eos.db.getOverrides(self.ID) for x in overrides: if x.attr.name in self.__attributes: - self.__overrides[x.attr.name] = x.value + self.__overrides[x.attr.name] = x return self.__overrides + def setOverride(self, attr, value): + from eos.saveddata.override import Override + if attr.name in self.__overrides: + override = self.__overrides.get(attr.name) + override.value = value + else: + override = Override(self, attr, value) + self.__overrides[attr.name] = override + eos.db.save(override) + + def deleteOverride(self, attr): + override = self.__overrides.pop(attr.name, None) + eos.db.saveddata_session.delete(override) + eos.db.commit() + @property def requiredSkills(self): if self.__requiredSkills is None: @@ -356,6 +372,12 @@ class Item(EqBase): return False + def __repr__(self): + return "Item(ID={}, name={}) at {}".format( + self.ID, self.name, hex(id(self)) + ) + + class MetaData(EqBase): pass diff --git a/eos/modifiedAttributeDict.py b/eos/modifiedAttributeDict.py index c5dda0f71..2dd79e3b9 100644 --- a/eos/modifiedAttributeDict.py +++ b/eos/modifiedAttributeDict.py @@ -113,7 +113,7 @@ class ModifiedAttributeDict(collections.MutableMapping): def getOriginal(self, key): if self.OVERRIDES and key in self.__overrides: - return self.__overrides.get(key) + return self.__overrides.get(key).value val = self.__original.get(key) if val is None: return None diff --git a/gui/propertyEditor.py b/gui/propertyEditor.py index 88e499119..0a6b57407 100644 --- a/gui/propertyEditor.py +++ b/gui/propertyEditor.py @@ -1,11 +1,11 @@ import wx import wx.propgrid as wxpg -import eos.db import gui.PFSearchBox as SBox from gui.marketBrowser import SearchBox import gui.display as d import service +import gui.globalEvents as GE import logging @@ -15,7 +15,7 @@ class AttributeEditor( wx.Frame ): def __init__( self, parent ): wx.Frame.__init__(self, parent, wx.ID_ANY, title="Attribute Editor", size=wx.Size(700,500)) - + self.mainFrame = parent self.panel = panel = wx.Panel(self, wx.ID_ANY) topsizer = wx.BoxSizer(wx.HORIZONTAL) leftsizer = wx.BoxSizer(wx.VERTICAL) @@ -38,6 +38,14 @@ class AttributeEditor( wx.Frame ): self.SetSizer(sizer) self.SetAutoLayout(True) + self.Bind(wx.EVT_CLOSE, self.OnClose) + + def OnClose(self, event): + fitID = self.mainFrame.getActiveFit() + if fitID is not None: + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) + self.Destroy() + # This is literally a stripped down version of the market. class ItemView(d.Display): @@ -90,7 +98,10 @@ class AttributeGrid(wxpg.PropertyGrid): def __init__(self, parent): wxpg.PropertyGrid.__init__(self, parent, style=wxpg.PG_HIDE_MARGIN|wxpg.PG_HIDE_CATEGORIES|wxpg.PG_BOLD_MODIFIED|wxpg.PG_TOOLTIPS) + self.SetExtraStyle(wxpg.PG_EX_HELP_AS_TOOLTIPS) + self.parent = parent + self.item = None self.Bind( wxpg.EVT_PG_CHANGED, self.OnPropGridChange ) self.Bind( wxpg.EVT_PG_SELECTED, self.OnPropGridSelect ) @@ -102,35 +113,34 @@ class AttributeGrid(wxpg.PropertyGrid): def itemActivated(self, event): self.Clear() sel = event.EventObject.GetFirstSelected() - item = self.parent.Parent.itemView.items[sel] + self.item = item = self.parent.Parent.itemView.items[sel] for key in sorted(item.attributes.keys()): override = item.overrides.get(key, None) default = item.attributes[key].value - if override and override != item.attributes[key].value: - prop = wxpg.FloatProperty(key, value=override) - prop.defaultValue = default + if override and override.value != default: + prop = wxpg.FloatProperty(key, value=override.value) prop.SetModifiedStatus(True) else: prop = wxpg.FloatProperty(key, value=default) + prop.SetClientData(item.attributes[key]) # set this so that we may access it later + prop.SetHelpString("%s\n%s"%(item.attributes[key].displayName or key, "Default Value: %0.2f"%default)) self.Append(prop) def OnPropGridChange(self, event): p = event.GetProperty() - if p: - logger.debug('%s changed to "%s"' % (p.GetName(), p.GetValueAsString())) + attr = p.GetClientData() + if p.GetValue() == attr.value: + self.item.deleteOverride(attr) + p.SetModifiedStatus(False) + else: + self.item.setOverride(attr, p.GetValue()) + + logger.debug('%s changed to "%s"' % (p.GetName(), p.GetValueAsString())) def OnPropGridSelect(self, event): - p = event.GetProperty() - if p: - logger.debug('%s selected' % (event.GetProperty().GetName())) - else: - logger.debug('Nothing selected') + pass def OnPropGridRightClick(self, event): - p = event.GetProperty() - if p: - logger.debug('%s right clicked' % (event.GetProperty().GetName())) - else: - logger.debug('Nothing right clicked') + pass diff --git a/overrides/527.py b/overrides/527.py deleted file mode 100644 index b1c82b796..000000000 --- a/overrides/527.py +++ /dev/null @@ -1 +0,0 @@ -speedFactor = -80.0 diff --git a/overrides/__init__.py b/overrides/__init__.py deleted file mode 100644 index e69de29bb..000000000