From 300755c436ff2dfb9cdcb18aeb14cc368631b784 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Sat, 17 Aug 2024 17:29:54 +0200 Subject: add wxpython abort message (as alternative to stderr output) (#3145) --- lib/gui/abort_message.py | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 lib/gui/abort_message.py (limited to 'lib/gui') diff --git a/lib/gui/abort_message.py b/lib/gui/abort_message.py new file mode 100644 index 00000000..6bec17b7 --- /dev/null +++ b/lib/gui/abort_message.py @@ -0,0 +1,66 @@ +# Authors: see git history +# +# Copyright (c) 2024 Authors +# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. + +import wx +import wx.adv + +from ..i18n import _ + + +class AbortMessageFrame(wx.Frame): + + def __init__(self, *args, **kwargs): + message = kwargs.pop("message") + url = kwargs.pop("url") + wx.Frame.__init__(self, None, wx.ID_ANY, "Ink/Stitch", *args, **kwargs) + + self.SetWindowStyle(wx.FRAME_FLOAT_ON_PARENT | wx.DEFAULT_FRAME_STYLE) + + main_panel = wx.Panel(self, wx.ID_ANY) + + main_sizer = wx.BoxSizer(wx.VERTICAL) + + help_text = wx.StaticText( + main_panel, + wx.ID_ANY, + message, + style=wx.ALIGN_LEFT + ) + help_text.Wrap(500) + main_sizer.Add(help_text, 0, wx.ALL, 10) + + if url is not None: + main_sizer.Add((10, 10), 0, 0, 0) + main_sizer.Add(wx.StaticLine(main_panel), 0, wx.LEFT | wx.RIGHT | wx.EXPAND, 10) + + website_info = wx.StaticText(main_panel, wx.ID_ANY, _("More information on our website:")) + main_sizer.Add(website_info, 0, wx.ALL, 10) + + website_link = wx.adv.HyperlinkCtrl( + main_panel, + wx.ID_ANY, + url, + url + ) + main_sizer.Add(website_link, 0, wx.ALL, 10) + main_sizer.Add((20, 20), 0, 0, 0) + + main_panel.SetSizer(main_sizer) + self.SetSizeHints(main_sizer.CalcMin()) + + self.Layout() + + +class AbortMessageApp(wx.App): + def __init__(self, message, url=None): + self.message = message + self.url = url + super().__init__() + + def OnInit(self): + self.frame = AbortMessageFrame(message=self.message, url=self.url) + self.SetTopWindow(self.frame) + self.frame.Show() + return True -- cgit v1.2.3