improve panel initialization
just make a notify_status_update from printer data, it's much simpler
This commit is contained in:
parent
61cf5828e2
commit
b1a6d5c182
@ -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":
|
||||
|
@ -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:
|
||||
|
@ -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)
|
@ -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":
|
||||
|
@ -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)
|
||||
|
@ -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:"))
|
||||
|
@ -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:
|
||||
|
@ -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"))
|
||||
|
12
screen.py
12
screen.py
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user