dialog removal refactor

This commit is contained in:
alfrix 2022-11-22 09:55:45 -03:00
parent 8d2f90f800
commit 0b1b2f0e19
6 changed files with 35 additions and 39 deletions

View File

@ -204,7 +204,6 @@ class KlippyGtk:
button.set_size_request((screen.width - 30) / 3, screen.height / 5) button.set_size_request((screen.width - 30) / 3, screen.height / 5)
dialog.connect("response", self.screen.reset_screensaver_timeout) dialog.connect("response", self.screen.reset_screensaver_timeout)
dialog.connect("response", self.remove_dialog, dialog)
dialog.connect("response", callback, *args) dialog.connect("response", callback, *args)
dialog.get_style_context().add_class("dialog") dialog.get_style_context().add_class("dialog")
@ -225,11 +224,16 @@ class KlippyGtk:
Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.BLANK_CURSOR)) Gdk.Cursor.new_for_display(Gdk.Display.get_default(), Gdk.CursorType.BLANK_CURSOR))
self.screen.dialogs.append(dialog) self.screen.dialogs.append(dialog)
logging.info(f"Showing dialog {dialog}")
return dialog return dialog
def remove_dialog(self, widget, response_id, dialog): def remove_dialog(self, dialog, *args):
logging.info("Removing Dialog") dialog.destroy()
self.screen.dialogs.remove(dialog) if dialog in self.screen.dialogs:
logging.info("Removing Dialog")
self.screen.dialogs.remove(dialog)
return
logging.debug(f"Cannot remove dialog {dialog}")
@staticmethod @staticmethod
def HomogeneousGrid(width=None, height=None): def HomogeneousGrid(width=None, height=None):

View File

@ -427,14 +427,14 @@ class JobStatusPanel(ScreenPanel):
] ]
self._gtk.Dialog(self._screen, buttons, grid, self.save_confirm, device) self._gtk.Dialog(self._screen, buttons, grid, self.save_confirm, device)
def save_confirm(self, widget, response_id, device): def save_confirm(self, dialog, response_id, device):
self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.APPLY: if response_id == Gtk.ResponseType.APPLY:
if device == "probe": if device == "probe":
self._screen._ws.klippy.gcode_script("Z_OFFSET_APPLY_PROBE") self._screen._ws.klippy.gcode_script("Z_OFFSET_APPLY_PROBE")
if device == "endstop": if device == "endstop":
self._screen._ws.klippy.gcode_script("Z_OFFSET_APPLY_ENDSTOP") self._screen._ws.klippy.gcode_script("Z_OFFSET_APPLY_ENDSTOP")
self._screen._ws.klippy.gcode_script("SAVE_CONFIG") self._screen._ws.klippy.gcode_script("SAVE_CONFIG")
widget.destroy()
def restart(self, widget): def restart(self, widget):
if self.filename != "none": if self.filename != "none":
@ -467,17 +467,14 @@ class JobStatusPanel(ScreenPanel):
self._gtk.Dialog(self._screen, buttons, label, self.cancel_confirm) self._gtk.Dialog(self._screen, buttons, label, self.cancel_confirm)
def cancel_confirm(self, widget, response_id): def cancel_confirm(self, dialog, response_id):
widget.destroy() self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.APPLY: if response_id == Gtk.ResponseType.APPLY:
self.menu_item_clicked(None, "exclude", {"panel": "exclude", "name": _("Exclude Object")}) self.menu_item_clicked(None, "exclude", {"panel": "exclude", "name": _("Exclude Object")})
return return
if response_id == Gtk.ResponseType.CANCEL: if response_id == Gtk.ResponseType.CANCEL:
self.enable_button("pause", "cancel") self.enable_button("pause", "cancel")
return return
logging.debug("Canceling print") logging.debug("Canceling print")
self.set_state("cancelling") self.set_state("cancelling")
self.disable_button("pause", "resume", "cancel") self.disable_button("pause", "resume", "cancel")

View File

@ -251,10 +251,6 @@ class NetworkPanel(ScreenPanel):
del self.labels[i] del self.labels[i]
self.show_add = False self.show_add = False
@staticmethod
def close_dialog(widget, response_id):
widget.destroy()
def connected_callback(self, ssid, prev_ssid): def connected_callback(self, ssid, prev_ssid):
logging.info("Now connected to a new network") logging.info("Now connected to a new network")
if ssid is not None: if ssid is not None:
@ -293,7 +289,7 @@ class NetworkPanel(ScreenPanel):
self.labels['connecting_info'].set_halign(Gtk.Align.START) self.labels['connecting_info'].set_halign(Gtk.Align.START)
self.labels['connecting_info'].set_valign(Gtk.Align.START) self.labels['connecting_info'].set_valign(Gtk.Align.START)
scroll.add(self.labels['connecting_info']) scroll.add(self.labels['connecting_info'])
self._gtk.Dialog(self._screen, buttons, scroll, self.close_dialog) self._gtk.Dialog(self._screen, buttons, scroll, self._gtk.remove_dialog)
self._screen.show_all() self._screen.show_all()
if ssid in list(self.networks): if ssid in list(self.networks):

View File

@ -324,12 +324,10 @@ class PrintPanel(ScreenPanel):
self._gtk.Dialog(self._screen, buttons, grid, self.confirm_print_response, filename) self._gtk.Dialog(self._screen, buttons, grid, self.confirm_print_response, filename)
def confirm_print_response(self, widget, response_id, filename): def confirm_print_response(self, dialog, response_id, filename):
widget.destroy() self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.CANCEL: if response_id == Gtk.ResponseType.CANCEL:
return return
logging.info(f"Starting print: {filename}") logging.info(f"Starting print: {filename}")
self._screen._ws.klippy.print_start(filename) self._screen._ws.klippy.print_start(filename)

View File

@ -98,8 +98,8 @@ class SystemPanel(ScreenPanel):
def activate(self): def activate(self):
self.get_updates() self.get_updates()
def finish_updating(self, widget, response_id): def finish_updating(self, dialog, response_id):
widget.destroy() self._gtk.remove_dialog(dialog)
self._screen.set_updating(False) self._screen.set_updating(False)
self.get_updates() self.get_updates()
@ -237,20 +237,20 @@ class SystemPanel(ScreenPanel):
] ]
self._gtk.Dialog(self._screen, buttons, scroll, self.update_confirm, program) self._gtk.Dialog(self._screen, buttons, scroll, self.update_confirm, program)
def update_confirm(self, widget, response_id, program): def update_confirm(self, dialog, response_id, program):
self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.OK: if response_id == Gtk.ResponseType.OK:
logging.debug(f"Updating {program}") logging.debug(f"Updating {program}")
self.update_program(self, program) self.update_program(self, program)
widget.destroy()
def reset_confirm(self, widget, response_id, program): def reset_confirm(self, dialog, response_id, program):
self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.OK: if response_id == Gtk.ResponseType.OK:
logging.debug(f"Recovering hard {program}") logging.debug(f"Recovering hard {program}")
self.reset_repo(self, program, True) self.reset_repo(self, program, True)
if response_id == Gtk.ResponseType.APPLY: if response_id == Gtk.ResponseType.APPLY:
logging.debug(f"Recovering soft {program}") logging.debug(f"Recovering soft {program}")
self.reset_repo(self, program, False) self.reset_repo(self, program, False)
widget.destroy()
def reset_repo(self, widget, program, hard): def reset_repo(self, widget, program, hard):
if self._screen.is_updating(): if self._screen.is_updating():
@ -402,7 +402,8 @@ class SystemPanel(ScreenPanel):
] ]
self._gtk.Dialog(self._screen, buttons, scroll, self.reboot_poweroff_confirm, method) self._gtk.Dialog(self._screen, buttons, scroll, self.reboot_poweroff_confirm, method)
def reboot_poweroff_confirm(self, widget, response_id, method): def reboot_poweroff_confirm(self, dialog, response_id, method):
self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.OK: if response_id == Gtk.ResponseType.OK:
if method == "reboot": if method == "reboot":
os.system("systemctl reboot") os.system("systemctl reboot")
@ -413,4 +414,3 @@ class SystemPanel(ScreenPanel):
self._screen._ws.send_method("machine.reboot") self._screen._ws.send_method("machine.reboot")
else: else:
self._screen._ws.send_method("machine.shutdown") self._screen._ws.send_method("machine.shutdown")
widget.destroy()

View File

@ -368,8 +368,8 @@ class KlipperScreen(Gtk.Window):
] ]
self.gtk.Dialog(self, buttons, grid, self.error_modal_response) self.gtk.Dialog(self, buttons, grid, self.error_modal_response)
def error_modal_response(self, widget, response_id): def error_modal_response(self, dialog, response_id):
widget.destroy() self.gtk.remove_dialog(dialog)
self.reload_panels() self.reload_panels()
def restart_warning(self, value): def restart_warning(self, value):
@ -391,11 +391,11 @@ class KlipperScreen(Gtk.Window):
self.gtk.Dialog(self, buttons, label, self.restart_ks) self.gtk.Dialog(self, buttons, label, self.restart_ks)
def restart_ks(self, widget, response_id): def restart_ks(self, dialog, response_id):
self.gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.OK: if response_id == Gtk.ResponseType.OK:
logging.debug("Restarting") logging.debug("Restarting")
self._ws.send_method("machine.services.restart", {"service": "KlipperScreen"}) self._ws.send_method("machine.services.restart", {"service": "KlipperScreen"})
widget.destroy()
def init_style(self): def init_style(self):
css_data = pathlib.Path(os.path.join(klipperscreendir, "styles", "base.css")).read_text() css_data = pathlib.Path(os.path.join(klipperscreendir, "styles", "base.css")).read_text()
@ -482,7 +482,7 @@ class KlipperScreen(Gtk.Window):
if panel not in ["printer_select", "splash_screen"]: if panel not in ["printer_select", "splash_screen"]:
del self.panels[panel] del self.panels[panel]
for dialog in self.dialogs: for dialog in self.dialogs:
dialog.destroy() self.gtk.remove_dialog(dialog)
self.close_screensaver() self.close_screensaver()
def _remove_current_panel(self, pop=True): def _remove_current_panel(self, pop=True):
@ -534,6 +534,7 @@ class KlipperScreen(Gtk.Window):
self.close_screensaver() self.close_screensaver()
self.remove_keyboard() self.remove_keyboard()
for dialog in self.dialogs: for dialog in self.dialogs:
logging.debug("Hiding dialog")
dialog.hide() dialog.hide()
close = Gtk.Button() close = Gtk.Button()
@ -563,6 +564,7 @@ class KlipperScreen(Gtk.Window):
else: else:
self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver) self.screensaver_timeout = GLib.timeout_add_seconds(self.blanking_time, self.show_screensaver)
for dialog in self.dialogs: for dialog in self.dialogs:
logging.info(f"Restoring Dialog {dialog}")
dialog.show() dialog.show()
self.show_all() self.show_all()
return False return False
@ -770,14 +772,13 @@ class KlipperScreen(Gtk.Window):
label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR) label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
if self.confirm is not None: if self.confirm is not None:
self.confirm.destroy() self.gtk.remove_dialog(self.confirm)
self.confirm = self.gtk.Dialog(self, buttons, label, self._confirm_send_action_response, method, params) self.confirm = self.gtk.Dialog(self, buttons, label, self._confirm_send_action_response, method, params)
def _confirm_send_action_response(self, widget, response_id, method, params): def _confirm_send_action_response(self, dialog, response_id, method, params):
self.gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.OK: if response_id == Gtk.ResponseType.OK:
self._send_action(widget, method, params) self._send_action(None, method, params)
widget.destroy()
def _send_action(self, widget, method, params): def _send_action(self, widget, method, params):
logging.info(f"{method}: {params}") logging.info(f"{method}: {params}")
@ -901,7 +902,7 @@ class KlipperScreen(Gtk.Window):
self.show_panel('job_status', "job_status", _("Printing"), 2) self.show_panel('job_status', "job_status", _("Printing"), 2)
self.base_panel_show_all() self.base_panel_show_all()
for dialog in self.dialogs: for dialog in self.dialogs:
dialog.destroy() self.gtk.remove_dialog(dialog)
def show_keyboard(self, widget=None, event=None, entry=None): def show_keyboard(self, widget=None, event=None, entry=None):
if self.keyboard is not None: if self.keyboard is not None: