diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/extensions/element_info.py | 6 | ||||
| -rw-r--r-- | lib/extensions/lettering.py | 7 | ||||
| -rw-r--r-- | lib/extensions/satin_multicolor.py | 8 | ||||
| -rw-r--r-- | lib/extensions/tartan.py | 10 | ||||
| -rw-r--r-- | lib/gui/abort_message.py | 66 |
5 files changed, 92 insertions, 5 deletions
diff --git a/lib/extensions/element_info.py b/lib/extensions/element_info.py index 846bba17..2f3de736 100644 --- a/lib/extensions/element_info.py +++ b/lib/extensions/element_info.py @@ -4,6 +4,7 @@ # Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. from ..elements import FillStitch, SatinColumn, Stroke +from ..gui.abort_message import AbortMessageApp from ..gui.element_info import ElementInfoApp from ..i18n import _ from ..stitch_plan import stitch_groups_to_stitch_plan @@ -15,6 +16,11 @@ class ElementInfo(InkstitchExtension): def effect(self): if not self.svg.selection or not self.get_elements(): + app = AbortMessageApp( + _("Please select at least one element."), + _("https://inkstitch.org/docs/troubleshoot/#element-info") + ) + app.MainLoop() return self.metadata = self.get_inkstitch_metadata() diff --git a/lib/extensions/lettering.py b/lib/extensions/lettering.py index 76821902..918c6001 100644 --- a/lib/extensions/lettering.py +++ b/lib/extensions/lettering.py @@ -9,6 +9,7 @@ import inkex import wx import wx.adv +from ..gui.abort_message import AbortMessageApp from ..gui.lettering import LetteringPanel from ..gui.simulator import SplitSimulatorWindow from ..i18n import _ @@ -41,7 +42,11 @@ class Lettering(CommandsExtension): groups.add(group) if len(groups) > 1: - inkex.errormsg(_("Please select only one block of text.")) + app = AbortMessageApp( + _("Please select only one block of text."), + _("https://inkstitch.org/docs/lettering/#lettering-tool") + ) + app.MainLoop() sys.exit(1) elif len(groups) == 0: return self.create_group() diff --git a/lib/extensions/satin_multicolor.py b/lib/extensions/satin_multicolor.py index a6c1983e..ad2178bb 100644 --- a/lib/extensions/satin_multicolor.py +++ b/lib/extensions/satin_multicolor.py @@ -7,9 +7,9 @@ import sys import wx import wx.adv -from inkex import errormsg from ..elements import SatinColumn +from ..gui.abort_message import AbortMessageApp from ..gui.satin_multicolor import MultiColorSatinPanel from ..gui.simulator import SplitSimulatorWindow from ..i18n import _ @@ -30,7 +30,11 @@ class SatinMulticolor(InkstitchExtension): self.get_elements() satins = [element for element in self.elements if isinstance(element, SatinColumn)] if not satins: - errormsg(_("Please select at least one satin column.")) + app = AbortMessageApp( + _("Please select at least one satin column."), + _("https://inkstitch.org/docs/satin-tools/#multicolor-satin") + ) + app.MainLoop() return metadata = self.get_inkstitch_metadata() diff --git a/lib/extensions/tartan.py b/lib/extensions/tartan.py index 3acb659c..c5962499 100644 --- a/lib/extensions/tartan.py +++ b/lib/extensions/tartan.py @@ -7,8 +7,8 @@ import sys import wx import wx.adv -from inkex import errormsg +from ..gui.abort_message import AbortMessageApp from ..gui.simulator import SplitSimulatorWindow from ..gui.tartan import TartanMainPanel from ..i18n import _ @@ -59,9 +59,15 @@ class Tartan(InkstitchExtension): def effect(self): self.get_tartan_elements() + if not self.elements: - errormsg(_("To create a tartan pattern please select at least one element with a fill color.")) + app = AbortMessageApp( + _("To create a tartan pattern please select at least one element with a fill color."), + _("https://inkstitch.org/docs/fill-tools/#tartan") + ) + app.MainLoop() return + metadata = self.get_inkstitch_metadata() background_color = get_pagecolor(self.svg.namedview) 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 |
