diff --git a/gui/fitCommands/calc/fitSystemSecurity.py b/gui/fitCommands/calc/fitSystemSecurity.py new file mode 100644 index 000000000..d43918b38 --- /dev/null +++ b/gui/fitCommands/calc/fitSystemSecurity.py @@ -0,0 +1,34 @@ +import wx +from logbook import Logger + +import eos.db +from service.fit import Fit + + +pyfalog = Logger(__name__) + + +class CalcChangeFitSystemSecurityCommand(wx.Command): + + def __init__(self, fitID, secStatus): + wx.Command.__init__(self, True, 'Change Fit System Security') + self.fitID = fitID + self.secStatus = secStatus + self.savedSecStatus = None + + def Do(self): + pyfalog.debug('Doing changing system security status of fit {} to {}'.format(self.fitID, self.secStatus)) + fit = Fit.getInstance().getFit(self.fitID, basic=True) + # Fetching status via getter and then saving 'raw' security status + # is intentional, to restore pre-change state properly + if fit.getSystemSecurity() == self.secStatus: + return False + self.savedSecStatus = fit.systemSecurity + fit.systemSecurity = self.secStatus + eos.db.commit() + return True + + def Undo(self): + pyfalog.debug('Undoing changing system security status of fit {} to {}'.format(self.fitID, self.secStatus)) + cmd = CalcChangeFitSystemSecurityCommand(fitID=self.fitID, secStatus=self.savedSecStatus) + return cmd.Do() diff --git a/gui/fitCommands/gui/fitSystemSecurity.py b/gui/fitCommands/gui/fitSystemSecurity.py new file mode 100644 index 000000000..5f17230a7 --- /dev/null +++ b/gui/fitCommands/gui/fitSystemSecurity.py @@ -0,0 +1,31 @@ +import wx +from service.fit import Fit + +import gui.mainFrame +from gui import globalEvents as GE +from gui.fitCommands.helpers import InternalCommandHistory +from gui.fitCommands.calc.fitSystemSecurity import CalcChangeFitSystemSecurityCommand + + +class GuiChangeFitSystemSecurityCommand(wx.Command): + + def __init__(self, fitID, secStatus): + wx.Command.__init__(self, True, 'Change Fit System Security') + self.internalHistory = InternalCommandHistory() + self.fitID = fitID + self.secStatus = secStatus + + def Do(self): + cmd = CalcChangeFitSystemSecurityCommand(fitID=self.fitID, secStatus=self.secStatus) + success = self.internalHistory.submit(cmd) + sFit = Fit.getInstance() + sFit.recalc(self.fitID) + wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID)) + return success + + def Undo(self): + success = self.internalHistory.undoAll() + sFit = Fit.getInstance() + sFit.recalc(self.fitID) + wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitChanged(fitID=self.fitID)) + return success