diff --git a/octoprint/events.py b/octoprint/events.py index 37db50c1..2a3f3136 100644 --- a/octoprint/events.py +++ b/octoprint/events.py @@ -46,7 +46,10 @@ class EventManager(object): eventListeners = self._registeredListeners[event] for listener in eventListeners: self._logger.debug("Sending action to %r" % listener) - listener(event, payload) + try: + listener(event, payload) + except: + self._logger.exception("Got an exception while sending event %s (Payload: %r) to %s" % (event, payload, listener)) def subscribe(self, event, callback): diff --git a/octoprint/timelapse.py b/octoprint/timelapse.py index 8f0af98a..2e42ca1d 100644 --- a/octoprint/timelapse.py +++ b/octoprint/timelapse.py @@ -51,6 +51,7 @@ class Timelapse(object): eventManager().subscribe("PrintStarted", self.onPrintStarted) eventManager().subscribe("PrintFailed", self.onPrintDone) eventManager().subscribe("PrintDone", self.onPrintDone) + eventManager().subscribe("PrintResumed", self.onPrintResumed) for (event, callback) in self.eventSubscriptions(): eventManager().subscribe(event, callback) @@ -62,6 +63,7 @@ class Timelapse(object): eventManager().unsubscribe("PrintStarted", self.onPrintStarted) eventManager().unsubscribe("PrintFailed", self.onPrintDone) eventManager().unsubscribe("PrintDone", self.onPrintDone) + eventManager().unsubscribe("PrintResumed", self.onPrintResumed) for (event, callback) in self.eventSubscriptions(): eventManager().unsubscribe(event, callback) @@ -77,12 +79,20 @@ class Timelapse(object): """ self.stopTimelapse() + def onPrintResumed(self, event, payload): + """ + Override this to perform additional actions upon the pausing of a print job. + """ + if not self._inTimelapse: + self.startTimelapse(payload) + def eventSubscriptions(self): """ Override this method to subscribe to additional events by returning an array of (event, callback) tuples. Events that are already subscribed: * PrintStarted - self.onPrintStarted + * PrintResumed - self.onPrintResumed * PrintFailed - self.onPrintDone * PrintDone - self.onPrintDone """ diff --git a/octoprint/util/comm.py b/octoprint/util/comm.py index 40c420b7..65d53690 100644 --- a/octoprint/util/comm.py +++ b/octoprint/util/comm.py @@ -386,6 +386,7 @@ class MachineCom(object): self.sendCommand("M24") else: self._sendNext() + eventManager().fire("PrintResumed", self._currentFile.getFilename()) if pause and self.isPrinting(): self._changeState(self.STATE_PAUSED) if self.isSdFileSelected():