improve panel initialization

just make a notify_status_update from printer data, it's much simpler
This commit is contained in:
alfrix 2022-11-29 18:37:06 -03:00
parent 61cf5828e2
commit b1a6d5c182
9 changed files with 22 additions and 58 deletions

View File

@ -260,7 +260,6 @@ class BedLevelPanel(ScreenPanel):
def activate(self):
for key, value in self.screw_dict.items():
self.buttons[key].set_label(f"{value}")
self.process_busy(self._printer.busy)
def go_to_position(self, widget, position):
if self._screen.printer.get_stat("toolhead", "homed_axes") != "xyz":

View File

@ -69,7 +69,6 @@ class BedMeshPanel(ScreenPanel):
self.load_meshes()
with contextlib.suppress(KeyError):
self.activate_mesh(self._screen.printer.get_stat("bed_mesh", "profile_name"))
self.process_busy(self._printer.busy)
def activate_mesh(self, profile):
if self.active_mesh is not None:

View File

@ -28,7 +28,6 @@ class ConsolePanel(ScreenPanel):
super().__init__(screen, title)
self.autoscroll = True
self.hidetemps = True
self._screen._ws.send_method("server.gcode_store", {"count": 100}, self.gcode_response)
o1_lbl = Gtk.Label(_("Auto-scroll"))
o1_lbl.set_halign(Gtk.Align.END)
@ -107,7 +106,7 @@ class ConsolePanel(ScreenPanel):
def _show_keyboard(self, widget=None, event=None):
self._screen.show_keyboard(entry=self.labels['entry'])
def clear(self, widget):
def clear(self, widget=None):
self.labels['tb'].set_text("")
def add_gcode(self, msgtype, msgtime, message):
@ -166,3 +165,7 @@ class ConsolePanel(ScreenPanel):
self.add_gcode("command", time.time(), cmd)
self._screen._ws.klippy.gcode_script(cmd)
def activate(self):
self.clear()
self._screen._ws.send_method("server.gcode_store", {"count": 100}, self.gcode_response)

View File

@ -170,9 +170,6 @@ class ExtrudePanel(ScreenPanel):
self.content.add(grid)
def activate(self):
self.process_busy(self._printer.busy)
def process_busy(self, busy):
for button in self.buttons:
if button == "temperature":

View File

@ -65,26 +65,19 @@ class FineTunePanel(ScreenPanel):
grid = self._gtk.HomogeneousGrid()
grid.set_row_homogeneous(False)
factor = self._printer.get_stat("gcode_move", "extrude_factor")
self.extrusion = round(float(factor) * 100) if factor else 100
factor = self._printer.get_stat("gcode_move", "speed_factor")
self.speed_factor = float(factor) if factor else 1
self.speed = round(self.speed_factor * 100)
offset = self._screen.printer.get_stat("gcode_move", "homing_origin")
offset = float(offset[2]) if offset else 0
self.labels['z+'] = self._gtk.Button("z-farther", "Z+", "color1")
self.labels['z-'] = self._gtk.Button("z-closer", "Z-", "color1")
self.labels['zoffset'] = self._gtk.Button("refresh", f' {offset:.2f}' + _("mm"),
self.labels['zoffset'] = self._gtk.Button("refresh", ' 0.00' + _("mm"),
"color1", self.bts, Gtk.PositionType.LEFT, 1)
self.labels['speed+'] = self._gtk.Button("speed+", _("Speed +"), "color3")
self.labels['speed-'] = self._gtk.Button("speed-", _("Speed -"), "color3")
self.labels['speedfactor'] = self._gtk.Button("refresh", f" {self.speed:3}%",
self.labels['speedfactor'] = self._gtk.Button("refresh", " 100%",
"color3", self.bts, Gtk.PositionType.LEFT, 1)
self.labels['extrude+'] = self._gtk.Button("flow+", _("Extrusion +"), "color4")
self.labels['extrude-'] = self._gtk.Button("flow-", _("Extrusion -"), "color4")
self.labels['extrudefactor'] = self._gtk.Button("refresh", f" {self.extrusion:3}%",
self.labels['extrudefactor'] = self._gtk.Button("refresh", " 100%",
"color4", self.bts, Gtk.PositionType.LEFT, 1)
if self._screen.vertical_mode:
grid.attach(self.labels['z+'], 0, 0, 1, 1)

View File

@ -22,15 +22,11 @@ class JobStatusPanel(ScreenPanel):
super().__init__(screen, title)
self.grid = self._gtk.HomogeneousGrid()
self.grid.set_row_homogeneous(False)
z = self._printer.get_stat("gcode_move", "gcode_position")
self.pos_z = float(z[2]) if z else 0
factor = self._printer.get_stat("gcode_move", "extrude_factor")
self.extrusion = round(float(factor) * 100) if factor else 100
factor = self._printer.get_stat("gcode_move", "speed_factor")
self.speed_factor = float(factor) if factor else 1
self.speed = round(self.speed_factor * 100)
req = self._printer.get_stat("gcode_move", "speed")
self.req_speed = round(float(req) / 60 * self.speed_factor) if req else 0
self.pos_z = 0
self.extrusion = 100
self.speed_factor = 1
self.speed = 100
self.req_speed = 0
self.f_layer_h = self.layer_h = 1
self.oheight = 0
self.current_extruder = None
@ -60,17 +56,6 @@ class JobStatusPanel(ScreenPanel):
self.labels[item].set_vexpand(True)
self.labels[item].set_hexpand(True)
offset = self._screen.printer.get_stat("gcode_move", "homing_origin")
self.zoffset = float(offset[2]) if offset else 0
self.labels['zoffset'].set_label(f"{self.zoffset:.2f} {self.mm}")
accel = self._screen.printer.get_stat('toolhead', 'max_accel')
if accel:
self.labels['max_accel'].set_label(f"{accel:.0f} {self.mms2}")
self.labels['extrude_factor'].set_label(f"{self.extrusion:3}%")
adv = self._screen.printer.get_stat('extruder', 'pressure_advance')
if adv:
self.labels['advance'].set_label(f"{adv:.2f}")
self.labels['left'] = Gtk.Label(_("Left:"))
self.labels['elapsed'] = Gtk.Label(_("Elapsed:"))
self.labels['total'] = Gtk.Label(_("Total:"))

View File

@ -103,13 +103,8 @@ class MovePanel(ScreenPanel):
ctx.add_class("distbutton_active")
distgrid.attach(self.labels[i], j, 0, 1, 1)
homed_axes = self._screen.printer.get_stat("toolhead", "homed_axes")
x = self._screen.printer.get_stat("gcode_move", "gcode_position")[0]
y = self._screen.printer.get_stat("gcode_move", "gcode_position")[1]
z = self._screen.printer.get_stat("gcode_move", "gcode_position")[2]
self.labels['pos_x'] = Gtk.Label(f"X: {f'{x:.2f}' if 'x' in homed_axes else '?'}")
self.labels['pos_y'] = Gtk.Label(f"Y: {f'{y:.2f}' if 'y' in homed_axes else '?'}")
self.labels['pos_z'] = Gtk.Label(f"Z: {f'{z:.2f}' if 'z' in homed_axes else '?'}")
for p in ('pos_x', 'pos_y', 'pos_z'):
self.labels[p] = Gtk.Label()
adjust = self._gtk.Button("settings", None, "color2", 1, Gtk.PositionType.LEFT, 1)
adjust.connect("clicked", self.load_menu, 'options', _('Settings'))
adjust.set_hexpand(False)
@ -158,9 +153,6 @@ class MovePanel(ScreenPanel):
name = list(option)[0]
self.add_option('options', self.settings, name, option[name])
def activate(self):
self.process_busy(self._printer.busy)
def process_busy(self, busy):
buttons = ("home", "home_xy", "z_tilt", "quad_gantry_level")
for button in buttons:

View File

@ -36,11 +36,6 @@ class ZCalibratePanel(ScreenPanel):
pos.attach(Gtk.Label(_("New")), 1, 3, 1, 1)
pos.attach(Gtk.Label(f"{self.z_offset:.2f}"), 0, 4, 1, 1)
pos.attach(self.widgets['zoffset'], 1, 4, 1, 1)
self._screen.printer.get_stat("gcode_move", "gcode_position")
if self._screen.printer.get_stat("toolhead", "homed_axes") == "xyz":
p = self._screen.printer.get_stat('gcode_move', 'gcode_position')
if p:
self.update_position(p)
self.buttons = {
'zpos': self._gtk.Button('z-farther', _("Raise Nozzle"), 'color4'),
'zneg': self._gtk.Button('z-closer', _("Lower Nozzle"), 'color1'),
@ -312,5 +307,4 @@ class ZCalibratePanel(ScreenPanel):
def activate(self):
# This is only here because klipper doesn't provide a method to detect if it's calibrating
self.process_busy(self._printer.busy)
self._screen._ws.klippy.gcode_script(KlippyGcodes.testz_move("+0.001"))

View File

@ -280,6 +280,8 @@ class KlipperScreen(Gtk.Window):
if hasattr(self.panels[panel_name], "process_update"):
self.add_subscription(panel_name)
self.process_update("notify_status_update", self.printer.data)
self.process_update("notify_busy", self.printer.busy)
if hasattr(self.panels[panel_name], "activate"):
self.panels[panel_name].activate()
self.show_all()
@ -477,7 +479,7 @@ class KlipperScreen(Gtk.Window):
self.panels[self._cur_panels[-1]].deactivate()
if self._cur_panels[-1] in self.subscriptions:
self.subscriptions.remove(self._cur_panels[-1])
if pop is True:
if pop:
self._cur_panels.pop()
if len(self._cur_panels) > 0:
self.base_panel.add_content(self.panels[self._cur_panels[-1]])
@ -486,6 +488,8 @@ class KlipperScreen(Gtk.Window):
self.panels[self._cur_panels[-1]].activate()
if hasattr(self.panels[self._cur_panels[-1]], "process_update"):
self.add_subscription(self._cur_panels[-1])
self.process_update("notify_status_update", self.printer.data)
self.process_update("notify_busy", self.printer.busy)
self.show_all()
def _menu_go_back(self, widget=None):
@ -493,14 +497,12 @@ class KlipperScreen(Gtk.Window):
self.remove_keyboard()
if self._config.get_main_config().getboolean('autoclose_popups', True):
self.close_popup_message()
self._remove_current_panel(True)
self._remove_current_panel()
def _menu_go_home(self, widget=None):
logging.info("#### Menu go home")
self.remove_keyboard()
self.close_popup_message()
while len(self._cur_panels) > 1:
self._remove_current_panel()
self._menu_go_back()
def add_subscription(self, panel_name):
if panel_name not in self.subscriptions: