Do not save changes when changes were reverted
This commit is contained in:
@@ -10,12 +10,13 @@ _ValueChanged, EVT_VALUE_CHANGED = wx.lib.newevent.NewEvent()
|
|||||||
|
|
||||||
|
|
||||||
class AttributeSliderChangeEvent:
|
class AttributeSliderChangeEvent:
|
||||||
def __init__(self, obj, old_value, new_value, old_percentage, new_percentage):
|
def __init__(self, obj, old_value, new_value, old_percentage, new_percentage, affect_modified_flag=True):
|
||||||
self.__obj = obj
|
self.__obj = obj
|
||||||
self.__old = old_value
|
self.__old = old_value
|
||||||
self.__new = new_value
|
self.__new = new_value
|
||||||
self.__old_percent = old_percentage
|
self.__old_percent = old_percentage
|
||||||
self.__new_percent = new_percentage
|
self.__new_percent = new_percentage
|
||||||
|
self.__affect_modified_flag = affect_modified_flag
|
||||||
|
|
||||||
def GetObj(self):
|
def GetObj(self):
|
||||||
return self.__obj
|
return self.__obj
|
||||||
@@ -32,6 +33,10 @@ class AttributeSliderChangeEvent:
|
|||||||
def GetPercentage(self):
|
def GetPercentage(self):
|
||||||
return self.__new_percent
|
return self.__new_percent
|
||||||
|
|
||||||
|
@property
|
||||||
|
def AffectsModifiedFlag(self):
|
||||||
|
return self.__affect_modified_flag
|
||||||
|
|
||||||
Object = property(GetObj)
|
Object = property(GetObj)
|
||||||
OldValue = property(GetOldValue)
|
OldValue = property(GetOldValue)
|
||||||
Value = property(GetValue)
|
Value = property(GetValue)
|
||||||
@@ -40,9 +45,9 @@ class AttributeSliderChangeEvent:
|
|||||||
|
|
||||||
|
|
||||||
class ValueChanged(_ValueChanged, AttributeSliderChangeEvent):
|
class ValueChanged(_ValueChanged, AttributeSliderChangeEvent):
|
||||||
def __init__(self, obj, old_value, new_value, old_percentage, new_percentage):
|
def __init__(self, obj, old_value, new_value, old_percentage, new_percentage, affect_modified_flag=True):
|
||||||
_ValueChanged.__init__(self)
|
_ValueChanged.__init__(self)
|
||||||
AttributeSliderChangeEvent.__init__(self, obj, old_value, new_value, old_percentage, new_percentage)
|
AttributeSliderChangeEvent.__init__(self, obj, old_value, new_value, old_percentage, new_percentage, affect_modified_flag=affect_modified_flag)
|
||||||
|
|
||||||
|
|
||||||
class AttributeSlider(wx.Panel):
|
class AttributeSlider(wx.Panel):
|
||||||
@@ -118,7 +123,7 @@ class AttributeSlider(wx.Panel):
|
|||||||
self.SetValue(self.GetValue())
|
self.SetValue(self.GetValue())
|
||||||
evt.Skip()
|
evt.Skip()
|
||||||
|
|
||||||
def SetValue(self, value, post_event=True):
|
def SetValue(self, value, post_event=True, affect_modified_flag=True):
|
||||||
self.ctrl.SetValue(value)
|
self.ctrl.SetValue(value)
|
||||||
invert_factor = -1 if self.inverse else 1
|
invert_factor = -1 if self.inverse else 1
|
||||||
if value >= self.base_value:
|
if value >= self.base_value:
|
||||||
@@ -127,7 +132,7 @@ class AttributeSlider(wx.Panel):
|
|||||||
slider_percentage = (value - self.base_value) / (self.base_value - self.UserMinValue) * 100 * invert_factor
|
slider_percentage = (value - self.base_value) / (self.base_value - self.UserMinValue) * 100 * invert_factor
|
||||||
self.slider.SetValue(slider_percentage)
|
self.slider.SetValue(slider_percentage)
|
||||||
if post_event:
|
if post_event:
|
||||||
wx.PostEvent(self, ValueChanged(self, None, value, None, slider_percentage))
|
wx.PostEvent(self, ValueChanged(self, None, value, None, slider_percentage, affect_modified_flag=affect_modified_flag))
|
||||||
|
|
||||||
def OnMouseWheel(self, evt):
|
def OnMouseWheel(self, evt):
|
||||||
if evt.GetWheelRotation() > 0 and evt.GetWheelAxis() == wx.MOUSE_WHEEL_VERTICAL:
|
if evt.GetWheelRotation() > 0 and evt.GetWheelAxis() == wx.MOUSE_WHEEL_VERTICAL:
|
||||||
|
|||||||
@@ -172,7 +172,8 @@ class ItemMutatorList(wx.ScrolledWindow):
|
|||||||
self.SetSizer(sizer)
|
self.SetSizer(sizer)
|
||||||
|
|
||||||
def changeMutatedValue(self, evt):
|
def changeMutatedValue(self, evt):
|
||||||
self.isModified = True
|
if evt.AffectsModifiedFlag:
|
||||||
|
self.isModified = True
|
||||||
m = self.event_mapping[evt.Object]
|
m = self.event_mapping[evt.Object]
|
||||||
value = evt.Value
|
value = evt.Value
|
||||||
value = m.attribute.unit.ComplicateValue(value)
|
value = m.attribute.unit.ComplicateValue(value)
|
||||||
@@ -195,7 +196,7 @@ class ItemMutatorList(wx.ScrolledWindow):
|
|||||||
for slider, m in self.event_mapping.items():
|
for slider, m in self.event_mapping.items():
|
||||||
value = sFit.changeMutatedValuePrelim(m, m.baseValue)
|
value = sFit.changeMutatedValuePrelim(m, m.baseValue)
|
||||||
value = m.attribute.unit.SimplifyValue(value)
|
value = m.attribute.unit.SimplifyValue(value)
|
||||||
slider.SetValue(value)
|
slider.SetValue(value, affect_modified_flag=False)
|
||||||
evt.Skip()
|
evt.Skip()
|
||||||
|
|
||||||
def randomMutatedValues(self, evt):
|
def randomMutatedValues(self, evt):
|
||||||
@@ -205,7 +206,7 @@ class ItemMutatorList(wx.ScrolledWindow):
|
|||||||
value = random.uniform(m.minValue, m.maxValue)
|
value = random.uniform(m.minValue, m.maxValue)
|
||||||
value = sFit.changeMutatedValuePrelim(m, value)
|
value = sFit.changeMutatedValuePrelim(m, value)
|
||||||
value = m.attribute.unit.SimplifyValue(value)
|
value = m.attribute.unit.SimplifyValue(value)
|
||||||
slider.SetValue(value)
|
slider.SetValue(value, affect_modified_flag=False)
|
||||||
evt.Skip()
|
evt.Skip()
|
||||||
|
|
||||||
def revertChanges(self, evt):
|
def revertChanges(self, evt):
|
||||||
@@ -215,23 +216,26 @@ class ItemMutatorList(wx.ScrolledWindow):
|
|||||||
if m.attrID in self.initialMutations:
|
if m.attrID in self.initialMutations:
|
||||||
value = sFit.changeMutatedValuePrelim(m, self.initialMutations[m.attrID])
|
value = sFit.changeMutatedValuePrelim(m, self.initialMutations[m.attrID])
|
||||||
value = m.attribute.unit.SimplifyValue(value)
|
value = m.attribute.unit.SimplifyValue(value)
|
||||||
slider.SetValue(value)
|
slider.SetValue(value, affect_modified_flag=False)
|
||||||
evt.Skip()
|
evt.Skip()
|
||||||
|
|
||||||
def OnWindowClose(self):
|
def OnWindowClose(self):
|
||||||
# Submit mutation changes
|
# Submit mutation changes
|
||||||
sFit = Fit.getInstance()
|
sFit = Fit.getInstance()
|
||||||
fit = sFit.getFit(self.carryingFitID)
|
fit = sFit.getFit(self.carryingFitID)
|
||||||
if self.isModified and self.mod in fit.modules:
|
if self.mod in fit.modules:
|
||||||
currentMutation = {}
|
if self.isModified:
|
||||||
for slider, m in self.event_mapping.items():
|
currentMutation = {}
|
||||||
# Sliders may have more up-to-date info than mutator in case we changed
|
for slider, m in self.event_mapping.items():
|
||||||
# value in slider and without confirming it, decided to close window
|
# Sliders may have more up-to-date info than mutator in case we changed
|
||||||
value = slider.GetValue()
|
# value in slider and without confirming it, decided to close window
|
||||||
value = m.attribute.unit.ComplicateValue(value)
|
value = slider.GetValue()
|
||||||
if value != m.value:
|
value = m.attribute.unit.ComplicateValue(value)
|
||||||
value = sFit.changeMutatedValuePrelim(m, value)
|
if value != m.value:
|
||||||
currentMutation[m.attrID] = value
|
value = sFit.changeMutatedValuePrelim(m, value)
|
||||||
|
currentMutation[m.attrID] = value
|
||||||
|
else:
|
||||||
|
currentMutation = self.initialMutations
|
||||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||||
mainFrame.getCommandForFit(self.carryingFitID).Submit(cmd.GuiChangeLocalModuleMutationCommand(
|
mainFrame.getCommandForFit(self.carryingFitID).Submit(cmd.GuiChangeLocalModuleMutationCommand(
|
||||||
fitID=self.carryingFitID,
|
fitID=self.carryingFitID,
|
||||||
|
|||||||
Reference in New Issue
Block a user