base_panel: Add extruder/heater bed temperatures to the title bar

This commit is contained in:
Jordan 2021-05-19 20:36:28 -04:00
parent a0de521631
commit 85ee8c4112
2 changed files with 63 additions and 11 deletions

View File

@ -88,14 +88,46 @@ class BasePanel(ScreenPanel):
self.control['time'].set_valign(Gtk.Align.CENTER)
self.control['time_box'].pack_end(self.control['time'], True, 0, 0)
self.layout.put(self.control['time_box'], action_bar_width, 0)
self.control['temp_box'] = Gtk.Box()
self.control['temp_box'].set_vexpand(True)
self.control['temp_box'].set_size_request(0, self.title_spacing)
self.layout.put(self.control['temp_box'], action_bar_width, 0)
self.layout.put(self.titlelbl, action_bar_width, 0)
self.layout.put(self.control['time_box'], action_bar_width, 0)
self.layout.put(self.content, action_bar_width, self.title_spacing)
def initialize(self, panel_name):
# Create gtk items here
return
def show_heaters(self):
for child in self.control['temp_box'].get_children():
self.control['temp_box'].remove(child)
i = 0
for extruder in self._printer.get_tools():
self.labels[extruder + '_box'] = Gtk.Box(spacing=0)
self.labels[extruder] = Gtk.Label(label="")
#self.labels[extruder].get_style_context().add_class("printing-info")
if i <= 4:
ext_img = self._gtk.Image("extruder-%s.svg" % i, None, .4, .4)
self.labels[extruder + '_box'].pack_start(ext_img, True, 3, 3)
self.labels[extruder + '_box'].pack_start(self.labels[extruder], True, 3, 3)
i += 1
self.current_extruder = self._printer.get_stat("toolhead","extruder")
self.control['temp_box'].pack_start(self.labels["%s_box" % self.current_extruder], True, 5, 5)
if self._printer.has_heated_bed():
heater_bed = self._gtk.Image("bed.svg", None, .4, .4)
self.labels['heater_bed'] = Gtk.Label(label="20 C")
#self.labels['heater_bed'].get_style_context().add_class("printing-info")
heater_bed_box = Gtk.Box(spacing=0)
heater_bed_box.pack_start(heater_bed, True, 5, 5)
heater_bed_box.pack_start(self.labels['heater_bed'], True, 3, 3)
self.control['temp_box'].pack_end(heater_bed_box, True, 3, 3)
def activate(self):
size = self.control['time_box'].get_allocation().width
self.layout.remove(self.control['time_box'])
@ -105,16 +137,6 @@ class BasePanel(ScreenPanel):
GLib.timeout_add_seconds(1, self.update_time)
self.update_time()
def update_time(self):
now = datetime.datetime.now()
confopt = self._config.get_main_config_option("24htime")
if now.minute != self.time_min or self.time_format != confopt:
if confopt == "True":
self.control['time'].set_text(now.strftime("%H:%M"))
else:
self.control['time'].set_text(now.strftime("%I:%M %p"))
return True
def add_content(self, panel):
self.current_panel = panel
self.set_title(panel.get_title())
@ -133,6 +155,23 @@ class BasePanel(ScreenPanel):
def get(self):
return self.layout
def process_update(self, action, data):
if action != "notify_status_update":
return
if self._printer.has_heated_bed():
self.labels["heater_bed"].set_label("%02d°" % self._printer.get_dev_stat("heater_bed","temperature"))
for x in self._printer.get_tools():
self.labels[x].set_label("%02d°" % self._printer.get_dev_stat(x,"temperature"))
if "toolhead" in data and "extruder" in data["toolhead"]:
if data["toolhead"]["extruder"] != self.current_extruder:
self.control['temp_box'].remove(self.labels["%s_box" % self.current_extruder])
self.current_extruder = data["toolhead"]["extruder"]
self.control['temp_box'].pack_start(self.labels["%s_box" % self.current_extruder], True, 3, 3)
self.control['temp_box'].show_all()
def remove(self, widget):
self.content.remove(widget)
@ -164,3 +203,13 @@ class BasePanel(ScreenPanel):
def show_back_buttons(self):
self.control_grid.attach(self.control['back'], 0, 0, 1, 1)
self.control_grid.attach(self.control['home'], 0, 1, 1, 1)
def update_time(self):
now = datetime.datetime.now()
confopt = self._config.get_main_config_option("24htime")
if now.minute != self.time_min or self.time_format != confopt:
if confopt == "True":
self.control['time'].set_text(now.strftime("%H:%M"))
else:
self.control['time'].set_text(now.strftime("%I:%M %p"))
return True

View File

@ -575,6 +575,8 @@ class KlipperScreen(Gtk.Window):
if prev_state not in ['paused','printing']:
self.init_printer()
self.base_panel._printer = self.printer
self.base_panel.show_heaters()
self.printer_ready()
@ -628,6 +630,7 @@ class KlipperScreen(Gtk.Window):
self.show_popup_message(data[3:])
logging.debug(json.dumps([action, data], indent=2))
self.base_panel.process_update(action, data)
if self._cur_panels[-1] in self.subscriptions:
self.panels[self._cur_panels[-1]].process_update(action, data)