dialogs: simplify dialog calls, fix layout issue

This commit is contained in:
alfrix 2023-08-30 00:57:22 -03:00
parent 6be0a2931f
commit e80ef7eff5
7 changed files with 26 additions and 38 deletions

View File

@ -209,17 +209,17 @@ class KlippyGtk:
spinner.hide() spinner.hide()
widget.set_sensitive(True) widget.set_sensitive(True)
def Dialog(self, screen, buttons, content, callback=None, *args): def Dialog(self, title, buttons, content, callback=None, *args):
dialog = Gtk.Dialog() dialog = Gtk.Dialog(title=title)
dialog.set_default_size(screen.width, screen.height) dialog.set_default_size(self.width, self.height)
dialog.set_resizable(False) dialog.set_resizable(False)
dialog.set_transient_for(screen) dialog.set_transient_for(self.screen)
dialog.set_modal(True) dialog.set_modal(True)
for button in buttons: for button in buttons:
dialog.add_button(button['name'], button['response']) dialog.add_button(button['name'], button['response'])
button = dialog.get_widget_for_response(button['response']) button = dialog.get_widget_for_response(button['response'])
button.set_size_request((screen.width - 30) / 3, screen.height / 5) button.set_size_request((self.width - 30) / 3, self.height / 5)
format_label(button, 3) format_label(button, 3)
dialog.connect("response", self.screen.reset_screensaver_timeout) dialog.connect("response", self.screen.reset_screensaver_timeout)
@ -243,7 +243,7 @@ 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}") logging.info(f"Showing dialog {dialog.get_title()} {dialog.get_size()}")
return dialog return dialog
def remove_dialog(self, dialog, *args): def remove_dialog(self, dialog, *args):

View File

@ -313,11 +313,10 @@ class BasePanel(ScreenPanel):
self.labels['update_scroll'].set_property("overlay-scrolling", True) self.labels['update_scroll'].set_property("overlay-scrolling", True)
self.labels['update_scroll'].add(self.labels['update_progress']) self.labels['update_scroll'].add(self.labels['update_progress'])
self.labels['update_scroll'].connect("size-allocate", self._autoscroll) self.labels['update_scroll'].connect("size-allocate", self._autoscroll)
dialog = self._gtk.Dialog(self._screen, button, self.labels['update_scroll'], self.finish_updating) dialog = self._gtk.Dialog(_("Updating"), button, self.labels['update_scroll'], self.finish_updating)
dialog.connect("delete-event", self.close_update_dialog) dialog.connect("delete-event", self.close_update_dialog)
dialog.set_response_sensitive(Gtk.ResponseType.OK, False) dialog.set_response_sensitive(Gtk.ResponseType.OK, False)
dialog.get_widget_for_response(Gtk.ResponseType.OK).hide() dialog.get_widget_for_response(Gtk.ResponseType.OK).hide()
dialog.set_title(_("Updating"))
self.update_dialog = dialog self.update_dialog = dialog
self._screen.updating = True self._screen.updating = True

View File

@ -405,8 +405,7 @@ class Panel(ScreenPanel):
{"name": _("Apply"), "response": Gtk.ResponseType.APPLY}, {"name": _("Apply"), "response": Gtk.ResponseType.APPLY},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL} {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL}
] ]
dialog = self._gtk.Dialog(self._screen, buttons, grid, self.save_confirm, device) self._gtk.Dialog(_("Save Z"), buttons, grid, self.save_confirm, device)
dialog.set_title(_("Save Z"))
def save_confirm(self, dialog, response_id, device): def save_confirm(self, dialog, response_id, device):
self._gtk.remove_dialog(dialog) self._gtk.remove_dialog(dialog)
@ -452,9 +451,7 @@ class Panel(ScreenPanel):
label.set_valign(Gtk.Align.CENTER) label.set_valign(Gtk.Align.CENTER)
label.set_line_wrap(True) label.set_line_wrap(True)
label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR) label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
self._gtk.Dialog(_("Cancel"), buttons, label, self.cancel_confirm)
dialog = self._gtk.Dialog(self._screen, buttons, label, self.cancel_confirm)
dialog.set_title(_("Cancel"))
def cancel_confirm(self, dialog, response_id): def cancel_confirm(self, dialog, response_id):
self._gtk.remove_dialog(dialog) self._gtk.remove_dialog(dialog)
@ -778,13 +775,11 @@ class Panel(ScreenPanel):
buttons = [ buttons = [
{"name": _("Close"), "response": Gtk.ResponseType.CANCEL} {"name": _("Close"), "response": Gtk.ResponseType.CANCEL}
] ]
pixbuf = self.get_file_image(self.filename, self._screen.width * .9, self._screen.height * .6) pixbuf = self.get_file_image(self.filename, self._screen.width * .9, self._screen.height * .5)
if pixbuf is None: if pixbuf is None:
return return
image = Gtk.Image.new_from_pixbuf(pixbuf) image = Gtk.Image.new_from_pixbuf(pixbuf)
dialog = self._gtk.Dialog(self._screen, buttons, image, self.close_fullscreen_thumbnail) self._gtk.Dialog(self.filename, buttons, image, self.close_fullscreen_thumbnail)
dialog.set_title(self.filename)
return
def close_fullscreen_thumbnail(self, dialog, response_id): def close_fullscreen_thumbnail(self, dialog, response_id):
self._gtk.remove_dialog(dialog) self._gtk.remove_dialog(dialog)

View File

@ -282,8 +282,7 @@ class Panel(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'])
dialog = self._gtk.Dialog(self._screen, buttons, scroll, self._gtk.remove_dialog) self._gtk.Dialog(_("Starting WiFi Association"), buttons, scroll, self._gtk.remove_dialog)
dialog.set_title(_("Starting WiFi Association"))
self._screen.show_all() self._screen.show_all()
if ssid in list(self.networks): if ssid in list(self.networks):

View File

@ -310,19 +310,16 @@ class Panel(ScreenPanel):
grid.set_valign(Gtk.Align.CENTER) grid.set_valign(Gtk.Align.CENTER)
grid.add(label) grid.add(label)
pixbuf = self.get_file_image(filename, self._screen.width * .9, self._screen.height * .6) pixbuf = self.get_file_image(filename, self._screen.width * .9, self._screen.height * .5)
if pixbuf is not None: if pixbuf is not None:
image = Gtk.Image.new_from_pixbuf(pixbuf) image = Gtk.Image.new_from_pixbuf(pixbuf)
image.set_vexpand(False)
grid.attach_next_to(image, label, Gtk.PositionType.BOTTOM, 1, 1) grid.attach_next_to(image, label, Gtk.PositionType.BOTTOM, 1, 1)
dialog = self._gtk.Dialog(self._screen, buttons, grid, self.confirm_print_response, filename) self._gtk.Dialog(_("Print") + f' {filename}', buttons, grid, self.confirm_print_response, filename)
dialog.set_title(_("Print"))
def confirm_print_response(self, dialog, response_id, filename): def confirm_print_response(self, dialog, response_id, filename):
self._gtk.remove_dialog(dialog) self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.CANCEL: if response_id == Gtk.ResponseType.OK:
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

@ -142,8 +142,7 @@ class Panel(ScreenPanel):
{"name": _("Recover Soft"), "response": Gtk.ResponseType.APPLY}, {"name": _("Recover Soft"), "response": Gtk.ResponseType.APPLY},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL} {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL}
] ]
dialog = self._gtk.Dialog(self._screen, recoverybuttons, scroll, self.reset_confirm, program) self._gtk.Dialog(_("Recover"), recoverybuttons, scroll, self.reset_confirm, program)
dialog.set_title(_("Recover"))
return return
else: else:
if info['version'] == info['remote_version']: if info['version'] == info['remote_version']:
@ -207,8 +206,7 @@ class Panel(ScreenPanel):
{"name": _("Update"), "response": Gtk.ResponseType.OK}, {"name": _("Update"), "response": Gtk.ResponseType.OK},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL} {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL}
] ]
dialog = self._gtk.Dialog(self._screen, buttons, scroll, self.update_confirm, program) self._gtk.Dialog(_("Update"), buttons, scroll, self.update_confirm, program)
dialog.set_title(_("Update"))
def update_confirm(self, dialog, response_id, program): def update_confirm(self, dialog, response_id, program):
self._gtk.remove_dialog(dialog) self._gtk.remove_dialog(dialog)
@ -324,11 +322,11 @@ class Panel(ScreenPanel):
{"name": _("Printer"), "response": Gtk.ResponseType.APPLY}, {"name": _("Printer"), "response": Gtk.ResponseType.APPLY},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL} {"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL}
] ]
dialog = self._gtk.Dialog(self._screen, buttons, scroll, self.reboot_poweroff_confirm, method)
if method == "reboot": if method == "reboot":
dialog.set_title(_("Restart")) title = _("Restart")
else: else:
dialog.set_title(_("Shutdown")) title = _("Shutdown")
self._gtk.Dialog(title, buttons, scroll, self.reboot_poweroff_confirm, method)
def reboot_poweroff_confirm(self, dialog, response_id, method): def reboot_poweroff_confirm(self, dialog, response_id, method):
self._gtk.remove_dialog(dialog) self._gtk.remove_dialog(dialog)

View File

@ -391,8 +391,7 @@ class KlipperScreen(Gtk.Window):
buttons = [ buttons = [
{"name": _("Go Back"), "response": Gtk.ResponseType.CANCEL} {"name": _("Go Back"), "response": Gtk.ResponseType.CANCEL}
] ]
dialog = self.gtk.Dialog(self, buttons, grid, self.error_modal_response) self.gtk.Dialog(_("Error"), buttons, grid, self.error_modal_response)
dialog.set_title(_("Error"))
def error_modal_response(self, dialog, response_id): def error_modal_response(self, dialog, response_id):
self.gtk.remove_dialog(dialog) self.gtk.remove_dialog(dialog)
@ -785,8 +784,9 @@ class KlipperScreen(Gtk.Window):
if self.confirm is not None: if self.confirm is not None:
self.gtk.remove_dialog(self.confirm) 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.confirm.set_title("KlipperScreen") "KlipperScreen", buttons, label, self._confirm_send_action_response, method, params
)
def _confirm_send_action_response(self, dialog, response_id, method, params): def _confirm_send_action_response(self, dialog, response_id, method, params):
self.gtk.remove_dialog(dialog) self.gtk.remove_dialog(dialog)