diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2024-08-17 17:29:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-17 17:29:54 +0200 |
| commit | 300755c436ff2dfb9cdcb18aeb14cc368631b784 (patch) | |
| tree | 5dd5a1898724e2c70a30103250bd38f005f41561 | |
| parent | 404c483cc7c220b2521ab06011bf612303ca2029 (diff) | |
add wxpython abort message (as alternative to stderr output) (#3145)
| -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 | ||||
| -rw-r--r-- | templates/element_info.xml | 2 | ||||
| -rw-r--r-- | templates/lettering.xml | 2 | ||||
| -rw-r--r-- | templates/lettering_font_sample.xml | 2 | ||||
| -rw-r--r-- | templates/satin_multicolor.xml | 2 | ||||
| -rw-r--r-- | templates/simulator.xml | 2 | ||||
| -rw-r--r-- | templates/tartan.xml | 2 |
11 files changed, 98 insertions, 11 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 diff --git a/templates/element_info.xml b/templates/element_info.xml index 3ae3d138..01a658ec 100644 --- a/templates/element_info.xml +++ b/templates/element_info.xml @@ -3,7 +3,7 @@ <name>Element Info</name> <id>org.{{ id_inkstitch }}.element_info</id> <param name="extension" type="string" gui-hidden="true">element_info</param> - <effect> + <effect implements-custom-gui="true" show-stderr="true"> <object-type>all</object-type> <effects-menu> <submenu name="{{ menu_inkstitch }}" translatable="no"> diff --git a/templates/lettering.xml b/templates/lettering.xml index 1b9576aa..94d9f303 100644 --- a/templates/lettering.xml +++ b/templates/lettering.xml @@ -3,7 +3,7 @@ <name>Lettering</name> <id>org.{{ id_inkstitch }}.lettering</id> <param name="extension" type="string" gui-hidden="true">lettering</param> - <effect> + <effect implements-custom-gui="true" show-stderr="true"> <object-type>all</object-type> <effects-menu> <submenu name="{{ menu_inkstitch }}" translatable="no" /> diff --git a/templates/lettering_font_sample.xml b/templates/lettering_font_sample.xml index 54205125..17deb31a 100644 --- a/templates/lettering_font_sample.xml +++ b/templates/lettering_font_sample.xml @@ -3,7 +3,7 @@ <name>Font Sampling</name> <id>org.{{ id_inkstitch }}.lettering_font_sample</id> <param name="extension" type="string" gui-hidden="true">lettering_font_sample</param> - <effect> + <effect implements-custom-gui="true" show-stderr="true"> <object-type>all</object-type> <effects-menu> <submenu name="{{ menu_inkstitch }}" translatable="no"> diff --git a/templates/satin_multicolor.xml b/templates/satin_multicolor.xml index bfe33bb5..da6c55ae 100644 --- a/templates/satin_multicolor.xml +++ b/templates/satin_multicolor.xml @@ -3,7 +3,7 @@ <name>Multicolor Satin</name> <id>org.{{ id_inkstitch }}.satin_multicolor</id> <param name="extension" type="string" gui-hidden="true">satin_multicolor</param> - <effect needs-live-preview="false"> + <effect implements-custom-gui="true" show-stderr="true"> <object-type>all</object-type> <effects-menu> <submenu name="{{ menu_inkstitch }}" translatable="no"> diff --git a/templates/simulator.xml b/templates/simulator.xml index 94568c3f..5cb76bef 100644 --- a/templates/simulator.xml +++ b/templates/simulator.xml @@ -3,7 +3,7 @@ <name>Simulator</name> <id>org.{{ id_inkstitch }}.simulator</id> <param name="extension" type="string" gui-hidden="true">simulator</param> - <effect implements-custom-gui="true"> + <effect implements-custom-gui="true" show-stderr="true"> <object-type>all</object-type> <effects-menu> <submenu name="{{ menu_inkstitch }}" translatable="no"> diff --git a/templates/tartan.xml b/templates/tartan.xml index f8050309..65e38d78 100644 --- a/templates/tartan.xml +++ b/templates/tartan.xml @@ -3,7 +3,7 @@ <name>Tartan</name> <id>org.{{ id_inkstitch }}.tartan</id> <param name="extension" type="string" gui-hidden="true">tartan</param> - <effect> + <effect implements-custom-gui="true"> <object-type>all</object-type> <effects-menu> <submenu name="{{ menu_inkstitch }}" translatable="no"> |
