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()
widget.set_sensitive(True)
def Dialog(self, screen, buttons, content, callback=None, *args):
dialog = Gtk.Dialog()
dialog.set_default_size(screen.width, screen.height)
def Dialog(self, title, buttons, content, callback=None, *args):
dialog = Gtk.Dialog(title=title)
dialog.set_default_size(self.width, self.height)
dialog.set_resizable(False)
dialog.set_transient_for(screen)
dialog.set_transient_for(self.screen)
dialog.set_modal(True)
for button in buttons:
dialog.add_button(button['name'], 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)
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))
self.screen.dialogs.append(dialog)
logging.info(f"Showing dialog {dialog}")
logging.info(f"Showing dialog {dialog.get_title()} {dialog.get_size()}")
return dialog
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'].add(self.labels['update_progress'])
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.set_response_sensitive(Gtk.ResponseType.OK, False)
dialog.get_widget_for_response(Gtk.ResponseType.OK).hide()
dialog.set_title(_("Updating"))
self.update_dialog = dialog
self._screen.updating = True

View File

@ -405,8 +405,7 @@ class Panel(ScreenPanel):
{"name": _("Apply"), "response": Gtk.ResponseType.APPLY},
{"name": _("Cancel"), "response": Gtk.ResponseType.CANCEL}
]
dialog = self._gtk.Dialog(self._screen, buttons, grid, self.save_confirm, device)
dialog.set_title(_("Save Z"))
self._gtk.Dialog(_("Save Z"), buttons, grid, self.save_confirm, device)
def save_confirm(self, dialog, response_id, device):
self._gtk.remove_dialog(dialog)
@ -452,9 +451,7 @@ class Panel(ScreenPanel):
label.set_valign(Gtk.Align.CENTER)
label.set_line_wrap(True)
label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
dialog = self._gtk.Dialog(self._screen, buttons, label, self.cancel_confirm)
dialog.set_title(_("Cancel"))
self._gtk.Dialog(_("Cancel"), buttons, label, self.cancel_confirm)
def cancel_confirm(self, dialog, response_id):
self._gtk.remove_dialog(dialog)
@ -778,13 +775,11 @@ class Panel(ScreenPanel):
buttons = [
{"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:
return
image = Gtk.Image.new_from_pixbuf(pixbuf)
dialog = self._gtk.Dialog(self._screen, buttons, image, self.close_fullscreen_thumbnail)
dialog.set_title(self.filename)
return
self._gtk.Dialog(self.filename, buttons, image, self.close_fullscreen_thumbnail)
def close_fullscreen_thumbnail(self, dialog, response_id):
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_valign(Gtk.Align.START)
scroll.add(self.labels['connecting_info'])
dialog = self._gtk.Dialog(self._screen, buttons, scroll, self._gtk.remove_dialog)
dialog.set_title(_("Starting WiFi Association"))
self._gtk.Dialog(_("Starting WiFi Association"), buttons, scroll, self._gtk.remove_dialog)
self._screen.show_all()
if ssid in list(self.networks):

View File

@ -310,21 +310,18 @@ class Panel(ScreenPanel):
grid.set_valign(Gtk.Align.CENTER)
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:
image = Gtk.Image.new_from_pixbuf(pixbuf)
image.set_vexpand(False)
grid.attach_next_to(image, label, Gtk.PositionType.BOTTOM, 1, 1)
dialog = self._gtk.Dialog(self._screen, buttons, grid, self.confirm_print_response, filename)
dialog.set_title(_("Print"))
self._gtk.Dialog(_("Print") + f' {filename}', buttons, grid, self.confirm_print_response, filename)
def confirm_print_response(self, dialog, response_id, filename):
self._gtk.remove_dialog(dialog)
if response_id == Gtk.ResponseType.CANCEL:
return
logging.info(f"Starting print: {filename}")
self._screen._ws.klippy.print_start(filename)
if response_id == Gtk.ResponseType.OK:
logging.info(f"Starting print: {filename}")
self._screen._ws.klippy.print_start(filename)
def delete_file(self, filename):
directory = os.path.join("gcodes", os.path.dirname(filename)) if os.path.dirname(filename) else "gcodes"

View File

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

View File

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