print: Fix error if new print starts while job_status is displayed
This may address some issues in #122
This commit is contained in:
parent
b27814845b
commit
ce8c8e44fc
@ -220,14 +220,10 @@ class JobStatusPanel(ScreenPanel):
|
|||||||
state = "printing"
|
state = "printing"
|
||||||
self.update_text("status",_("Printing"))
|
self.update_text("status",_("Printing"))
|
||||||
|
|
||||||
self.filename = self._printer.get_stat('print_stats','filename')
|
|
||||||
self.update_text("file", self._printer.get_stat('print_stats','filename'))
|
|
||||||
self.update_percent_complete()
|
|
||||||
self.update_file_metadata()
|
|
||||||
|
|
||||||
ps = self._printer.get_stat("print_stats")
|
ps = self._printer.get_stat("print_stats")
|
||||||
logging.debug("Act State: %s" % ps['state'])
|
logging.debug("Act State: %s" % ps['state'])
|
||||||
self.set_state(ps['state'])
|
self.set_state(ps['state'])
|
||||||
|
|
||||||
self.show_buttons_for_state()
|
self.show_buttons_for_state()
|
||||||
|
|
||||||
if self.timeout == None:
|
if self.timeout == None:
|
||||||
@ -347,6 +343,15 @@ class JobStatusPanel(ScreenPanel):
|
|||||||
self.update_file_metadata()
|
self.update_file_metadata()
|
||||||
self._files.remove_file_callback(self._callback_metadata)
|
self._files.remove_file_callback(self._callback_metadata)
|
||||||
|
|
||||||
|
def new_print(self):
|
||||||
|
if self.state in ["cancelled","complete","error"]:
|
||||||
|
for to in self.close_timeouts:
|
||||||
|
GLib.source_remove(to)
|
||||||
|
self.close_timeouts.remove(to)
|
||||||
|
if self.timeout == None:
|
||||||
|
GLib.timeout_add(500, self.state_check)
|
||||||
|
self.state_check()
|
||||||
|
|
||||||
def process_update(self, action, data):
|
def process_update(self, action, data):
|
||||||
if action == "notify_gcode_response":
|
if action == "notify_gcode_response":
|
||||||
if "action:cancel" in data:
|
if "action:cancel" in data:
|
||||||
@ -372,6 +377,11 @@ class JobStatusPanel(ScreenPanel):
|
|||||||
ps = self._printer.get_stat("print_stats")
|
ps = self._printer.get_stat("print_stats")
|
||||||
vsd = self._printer.get_stat("virtual_sdcard")
|
vsd = self._printer.get_stat("virtual_sdcard")
|
||||||
|
|
||||||
|
if "print_stats" in data and "filename" in data['print_stats']:
|
||||||
|
if data['print_stats']['filename'] != self.filename and self.state not in ["cancelling","cancelled","complete"]:
|
||||||
|
logging.debug("filename: '%s' '%s' status: %s" % (self.filename, data['print_stats']['filename'], self.state))
|
||||||
|
self.update_filename()
|
||||||
|
|
||||||
if "toolhead" in data:
|
if "toolhead" in data:
|
||||||
if "extruder" in data["toolhead"]:
|
if "extruder" in data["toolhead"]:
|
||||||
if data["toolhead"]["extruder"] != self.current_extruder:
|
if data["toolhead"]["extruder"] != self.current_extruder:
|
||||||
@ -462,7 +472,6 @@ class JobStatusPanel(ScreenPanel):
|
|||||||
return False
|
return False
|
||||||
elif ps['state'] == "paused":
|
elif ps['state'] == "paused":
|
||||||
self.set_state("paused")
|
self.set_state("paused")
|
||||||
self.show_buttons_for_state()
|
|
||||||
|
|
||||||
# TODO: Remove this in the future
|
# TODO: Remove this in the future
|
||||||
if self.filename != ps['filename']:
|
if self.filename != ps['filename']:
|
||||||
@ -485,16 +494,8 @@ class JobStatusPanel(ScreenPanel):
|
|||||||
logging.debug("Changing job_status state from '%s' to '%s'" % (self.state, state))
|
logging.debug("Changing job_status state from '%s' to '%s'" % (self.state, state))
|
||||||
self.state = state
|
self.state = state
|
||||||
if state == "paused":
|
if state == "paused":
|
||||||
self.labels['button_grid'].remove(self.labels['resume'])
|
|
||||||
self.labels['button_grid'].remove(self.labels['pause'])
|
|
||||||
self.labels['button_grid'].attach(self.labels['pause'], 0, 0, 1, 1)
|
|
||||||
self.labels['button_grid'].show_all()
|
|
||||||
self.update_text("status",_("Paused"))
|
self.update_text("status",_("Paused"))
|
||||||
elif state == "printing":
|
elif state == "printing":
|
||||||
self.labels['button_grid'].remove(self.labels['resume'])
|
|
||||||
self.labels['button_grid'].remove(self.labels['pause'])
|
|
||||||
self.labels['button_grid'].attach(self.labels['resume'], 0, 0, 1, 1)
|
|
||||||
self.labels['button_grid'].show_all()
|
|
||||||
self.update_text("status",_("Printing"))
|
self.update_text("status",_("Printing"))
|
||||||
elif state == "cancelling":
|
elif state == "cancelling":
|
||||||
self.update_text("status",_("Cancelling"))
|
self.update_text("status",_("Cancelling"))
|
||||||
@ -536,6 +537,12 @@ class JobStatusPanel(ScreenPanel):
|
|||||||
if pixbuf != None:
|
if pixbuf != None:
|
||||||
self.labels['thumbnail'].set_from_pixbuf(pixbuf)
|
self.labels['thumbnail'].set_from_pixbuf(pixbuf)
|
||||||
|
|
||||||
|
def update_filename(self):
|
||||||
|
self.filename = self._printer.get_stat('print_stats','filename')
|
||||||
|
self.update_text("file", self._printer.get_stat('print_stats','filename'))
|
||||||
|
self.update_percent_complete()
|
||||||
|
self.update_file_metadata()
|
||||||
|
|
||||||
def update_file_metadata(self):
|
def update_file_metadata(self):
|
||||||
if self._files.file_metadata_exists(self.filename):
|
if self._files.file_metadata_exists(self.filename):
|
||||||
self.file_metadata = self._files.get_file_info(self.filename)
|
self.file_metadata = self._files.get_file_info(self.filename)
|
||||||
|
@ -541,6 +541,8 @@ class KlipperScreen(Gtk.Window):
|
|||||||
|
|
||||||
if "job_status" not in self._cur_panels:
|
if "job_status" not in self._cur_panels:
|
||||||
self.printer_printing()
|
self.printer_printing()
|
||||||
|
else:
|
||||||
|
self.panels["job_status"].new_print()
|
||||||
|
|
||||||
def state_ready(self):
|
def state_ready(self):
|
||||||
if "printer_select" in self._cur_panels:
|
if "printer_select" in self._cur_panels:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user