From c20b270b8437bfd5c62b4f51bff5f7394aa467ce Mon Sep 17 00:00:00 2001 From: Christopher Olah Date: Sat, 2 Feb 2013 21:24:07 -0500 Subject: [PATCH] Refactor and confirm exits while printing. Presently, one might accidentally terminate a print with a CTR-D while printing. Now we ask the user to confirm exiting if there is a print going when they try to exit. --- pronsole.py | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/pronsole.py b/pronsole.py index 0a68beb..57d41ff 100755 --- a/pronsole.py +++ b/pronsole.py @@ -131,6 +131,14 @@ def estimate_duration(g): #print "Total Duration: " #, time.strftime('%H:%M:%S', time.gmtime(totalduration)) return "{0:d} layers, ".format(int(layercount)) + str(datetime.timedelta(seconds = int(totalduration))) +def confirm(): + y_or_n = raw_input("y/n: ") + if y_or_n == "y": + return True + elif y_or_n != "n": + return confirm() + return False + class Settings: #def _temperature_alias(self): return {"pla":210, "abs":230, "off":0} #def _temperature_validate(self, v): @@ -957,14 +965,7 @@ class pronsole(cmd.Cmd): f = float(l) if f>=0: if f > 250: - def confirm(): - print f, " is a high temperature to set your extruder to. Are you sure you want to do that?" - y_or_n = raw_input("y/n: ") - if y_or_n == "y": - return True - elif y_or_n != "n": - return confirm() - return False + print f, " is a high temperature to set your extruder to. Are you sure you want to do that?" if not confirm(): return if self.p.online: @@ -1144,8 +1145,14 @@ class pronsole(cmd.Cmd): def do_exit(self, l): print "Disconnecting from printer..." - self.p.disconnect() + print self.p.printing + if self.p.printing: + print "Are you sure you want to exit while printing?" + print "(this will terminate the print)." + if not confirm(): + return False print "Exiting program. Goodbye!" + self.p.disconnect() return True def help_exit(self): @@ -1335,8 +1342,9 @@ class pronsole(cmd.Cmd): line = raw_input(self.prompt) except EOFError: print "" - self.do_exit("") - exit() + should_exit = self.do_exit("") + if should_exit: + exit() except KeyboardInterrupt: print "" line = ""