summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2024-08-17 17:29:54 +0200
committerGitHub <noreply@github.com>2024-08-17 17:29:54 +0200
commit300755c436ff2dfb9cdcb18aeb14cc368631b784 (patch)
tree5dd5a1898724e2c70a30103250bd38f005f41561
parent404c483cc7c220b2521ab06011bf612303ca2029 (diff)
add wxpython abort message (as alternative to stderr output) (#3145)
-rw-r--r--lib/extensions/element_info.py6
-rw-r--r--lib/extensions/lettering.py7
-rw-r--r--lib/extensions/satin_multicolor.py8
-rw-r--r--lib/extensions/tartan.py10
-rw-r--r--lib/gui/abort_message.py66
-rw-r--r--templates/element_info.xml2
-rw-r--r--templates/lettering.xml2
-rw-r--r--templates/lettering_font_sample.xml2
-rw-r--r--templates/satin_multicolor.xml2
-rw-r--r--templates/simulator.xml2
-rw-r--r--templates/tartan.xml2
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">