screen: make the error message more clear and provide more details
This commit is contained in:
parent
6094d4b6c0
commit
79cef455af
44
screen.py
44
screen.py
@ -312,11 +312,11 @@ class KlipperScreen(Gtk.Window):
|
|||||||
self.panels[panel_name].initialize(panel_name, **kwargs)
|
self.panels[panel_name].initialize(panel_name, **kwargs)
|
||||||
else:
|
else:
|
||||||
self.panels[panel_name].initialize(panel_name)
|
self.panels[panel_name].initialize(panel_name)
|
||||||
except Exception:
|
except Exception as e:
|
||||||
if panel_name in self.panels:
|
if panel_name in self.panels:
|
||||||
del self.panels[panel_name]
|
del self.panels[panel_name]
|
||||||
logging.exception(f"Unable to load panel {panel_type}")
|
logging.exception(f"Unable to load panel {panel_type}")
|
||||||
self.show_error_modal(f"Unable to load panel {panel_type}")
|
self.show_error_modal(f"Unable to load panel {panel_type}", e)
|
||||||
return
|
return
|
||||||
|
|
||||||
if hasattr(self.panels[panel_name], "process_update"):
|
if hasattr(self.panels[panel_name], "process_update"):
|
||||||
@ -402,27 +402,35 @@ class KlipperScreen(Gtk.Window):
|
|||||||
self.popup_message = None
|
self.popup_message = None
|
||||||
self.show_all()
|
self.show_all()
|
||||||
|
|
||||||
def show_error_modal(self, err):
|
def show_error_modal(self, err, e=""):
|
||||||
|
logging.exception(f"Showing error modal: {err}")
|
||||||
|
|
||||||
logging.exception("Showing error modal: %s", err)
|
title = Gtk.Label()
|
||||||
|
title.set_markup(f"<b>{err}</b>\n\n")
|
||||||
|
title.set_line_wrap(True)
|
||||||
|
title.set_halign(Gtk.Align.START)
|
||||||
|
message = Gtk.Label()
|
||||||
|
message.set_markup(
|
||||||
|
"Provide /tmp/KlipperScreen.log when asking for help.\n\n"
|
||||||
|
+ f"KlipperScreen: {self.version}\n"
|
||||||
|
+ f"<i>{e}</i>\n"
|
||||||
|
)
|
||||||
|
message.set_line_wrap(True)
|
||||||
|
|
||||||
|
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||||
|
vbox.set_halign(Gtk.Align.CENTER)
|
||||||
|
vbox.set_valign(Gtk.Align.CENTER)
|
||||||
|
vbox.add(title)
|
||||||
|
vbox.add(message)
|
||||||
|
|
||||||
|
scroll = self.gtk.ScrolledWindow()
|
||||||
|
scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
|
||||||
|
scroll.add(vbox)
|
||||||
|
|
||||||
buttons = [
|
buttons = [
|
||||||
{"name": _("Go Back"), "response": Gtk.ResponseType.CANCEL}
|
{"name": _("Go Back"), "response": Gtk.ResponseType.CANCEL}
|
||||||
]
|
]
|
||||||
|
self.gtk.Dialog(self, buttons, scroll, self.error_modal_response)
|
||||||
label = Gtk.Label()
|
|
||||||
label.set_markup(
|
|
||||||
f"{err} \n\n" +
|
|
||||||
_("Check /tmp/KlipperScreen.log for more information.\nPlease submit an issue on GitHub for help.")
|
|
||||||
)
|
|
||||||
label.set_hexpand(True)
|
|
||||||
label.set_halign(Gtk.Align.CENTER)
|
|
||||||
label.set_vexpand(True)
|
|
||||||
label.set_valign(Gtk.Align.CENTER)
|
|
||||||
label.set_line_wrap(True)
|
|
||||||
label.set_line_wrap_mode(Pango.WrapMode.WORD_CHAR)
|
|
||||||
|
|
||||||
self.gtk.Dialog(self, buttons, label, self.error_modal_response)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def error_modal_response(widget, response_id):
|
def error_modal_response(widget, response_id):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user