feat: add save z to save dialog (#1545)

This commit is contained in:
Alfredo Monclus 2025-02-16 14:00:11 -03:00 committed by GitHub
parent 86d26c33d7
commit 347e821d39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 50 additions and 6 deletions

View File

@ -115,12 +115,7 @@ enable: {{ 'input_shaper' in printer.config_sections }}
[menu __main more save]
name: {{ gettext('Save Config') }}
icon: complete
method: printer.gcode.script
params: {"script":"SAVE_CONFIG"}
confirm:
{{ gettext('Save configuration?') }}
{{ gettext('Klipper will reboot') }}
method: ks_confirm_save
[menu __main more settings]
name: KlipperScreen

View File

@ -67,6 +67,8 @@ class Panel(ScreenPanel):
if item['panel']:
b.connect("clicked", self.menu_item_clicked, item)
elif item['method'] == "ks_confirm_save":
b.connect("clicked", self._screen.confirm_save)
elif item['method']:
params = {}

View File

@ -901,6 +901,53 @@ class KlipperScreen(Gtk.Window):
if self._cur_panels and hasattr(self.panels[self._cur_panels[-1]], "process_update"):
self.panels[self._cur_panels[-1]].process_update(*args)
def confirm_save(self, widget):
buttons = [
{"name": _("Save"), "response": Gtk.ResponseType.OK, "style": 'dialog-info'},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL, "style": 'dialog-error'}
]
label = Gtk.Label(label=_("Save configuration?") + "\n\n" + _("Klipper will reboot"),
hexpand=True, vexpand=True,
halign=Gtk.Align.CENTER, valign=Gtk.Align.CENTER,
wrap=True, wrap_mode=Pango.WrapMode.WORD_CHAR)
grid = Gtk.Grid()
grid.attach(label, 0, 3, 2, 1)
offset = self.printer.get_stat("gcode_move", "homing_origin")
zoffset = float(offset[2]) if offset else 0
if zoffset != 0:
sign = "+" if zoffset > 0 else "-"
msg = f"Apply {sign}{abs(zoffset)} offset?"
zlabel = Gtk.Label(label=msg, hexpand=True, vexpand=True, wrap=True)
grid.attach(zlabel, 0, 1, 2, 1)
if "Z_OFFSET_APPLY_PROBE" in self.printer.available_commands:
apply_probe = self.gtk.Button(label=_("Save Z") + "\n" + "Probe", style="color1")
apply_probe.set_vexpand(False)
apply_probe.set_size_request(-1, self.gtk.dialog_buttons_height)
apply_probe.connect("clicked", self.save, "Z_OFFSET_APPLY_PROBE")
grid.attach(apply_probe, 0, 2, 1, 1)
if "Z_OFFSET_APPLY_ENDSTOP" in self.printer.available_commands:
apply_end = self.gtk.Button(label=_("Save Z") + "\n" + "Endstop", style="color2")
apply_end.set_vexpand(False)
apply_end.set_size_request(-1, self.gtk.dialog_buttons_height)
apply_end.connect("clicked", self.save, "Z_OFFSET_APPLY_ENDSTOP")
grid.attach(apply_end, 1, 2, 1, 1)
if self.confirm is not None:
self.gtk.remove_dialog(self.confirm)
self.confirm = self.gtk.Dialog(
"KlipperScreen", buttons, grid, self.save
)
def save(self, dialog, response_id):
self.gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.OK:
self._ws.klippy.gcode_script("SAVE_CONFIG")
if response_id == "Z_OFFSET_APPLY_PROBE":
self._ws.klippy.gcode_script("Z_OFFSET_APPLY_PROBE")
self._ws.klippy.gcode_script("SAVE_CONFIG")
if response_id == "Z_OFFSET_APPLY_ENDSTOP":
self._ws.klippy.gcode_script("Z_OFFSET_APPLY_ENDSTOP")
self._ws.klippy.gcode_script("SAVE_CONFIG")
def _confirm_send_action(self, widget, text, method, params=None):
buttons = [
{"name": _("Accept"), "response": Gtk.ResponseType.OK, "style": 'dialog-info'},