NonSci output option and InkScape extension added by Aleon
This commit is contained in:
parent
0609c59676
commit
a124f9f415
6 changed files with 269 additions and 12 deletions
100
extension/output_scour.py
Normal file
100
extension/output_scour.py
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
#!/usr/bin/env python
|
||||
"""
|
||||
Run the scour module on the svg output.
|
||||
"""
|
||||
|
||||
|
||||
import inkex
|
||||
from inkex.localization import inkex_gettext as _
|
||||
|
||||
try:
|
||||
from packaging.version import Version
|
||||
except ImportError:
|
||||
raise inkex.DependencyError(
|
||||
_(
|
||||
"""Failed to import module 'packaging'.
|
||||
Please make sure it is installed (e.g. using 'pip install packaging'
|
||||
or 'sudo apt-get install python3-packaging') and try again.
|
||||
"""
|
||||
)
|
||||
)
|
||||
|
||||
try:
|
||||
import scour
|
||||
from scour.scour import scourString
|
||||
except ImportError:
|
||||
raise inkex.DependencyError(
|
||||
_(
|
||||
"""Failed to import module 'scour'.
|
||||
Please make sure it is installed (e.g. using 'pip install scour'
|
||||
or 'sudo apt-get install python3-scour') and try again.
|
||||
"""
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class ScourInkscape(inkex.OutputExtension):
|
||||
"""Scour Inkscape Extension"""
|
||||
|
||||
# Scour options
|
||||
def add_arguments(self, pars):
|
||||
pars.add_argument("--tab")
|
||||
pars.add_argument("--simplify-colors", type=inkex.Boolean, dest="simple_colors")
|
||||
pars.add_argument("--style-to-xml", type=inkex.Boolean)
|
||||
pars.add_argument(
|
||||
"--group-collapsing", type=inkex.Boolean, dest="group_collapse"
|
||||
)
|
||||
pars.add_argument("--create-groups", type=inkex.Boolean, dest="group_create")
|
||||
pars.add_argument("--enable-id-stripping", type=inkex.Boolean, dest="strip_ids")
|
||||
pars.add_argument("--shorten-ids", type=inkex.Boolean)
|
||||
pars.add_argument("--shorten-ids-prefix")
|
||||
pars.add_argument("--embed-rasters", type=inkex.Boolean)
|
||||
pars.add_argument(
|
||||
"--keep-unreferenced-defs", type=inkex.Boolean, dest="keep_defs"
|
||||
)
|
||||
pars.add_argument("--keep-editor-data", type=inkex.Boolean)
|
||||
pars.add_argument("--nonsci-output", type=inkex.Boolean)
|
||||
pars.add_argument("--remove-metadata", type=inkex.Boolean)
|
||||
pars.add_argument("--strip-xml-prolog", type=inkex.Boolean)
|
||||
pars.add_argument("--set-precision", type=int, dest="digits")
|
||||
pars.add_argument("--indent", dest="indent_type")
|
||||
pars.add_argument("--nindent", type=int, dest="indent_depth")
|
||||
pars.add_argument("--line-breaks", type=inkex.Boolean, dest="newlines")
|
||||
pars.add_argument(
|
||||
"--strip-xml-space", type=inkex.Boolean, dest="strip_xml_space_attribute"
|
||||
)
|
||||
pars.add_argument("--protect-ids-noninkscape", type=inkex.Boolean)
|
||||
pars.add_argument("--protect-ids-list")
|
||||
pars.add_argument("--protect-ids-prefix")
|
||||
pars.add_argument("--enable-viewboxing", type=inkex.Boolean)
|
||||
pars.add_argument(
|
||||
"--enable-comment-stripping", type=inkex.Boolean, dest="strip_comments"
|
||||
)
|
||||
pars.add_argument("--renderer-workaround", type=inkex.Boolean)
|
||||
|
||||
# options for internal use of the extension
|
||||
pars.add_argument("--scour-version")
|
||||
pars.add_argument("--scour-version-warn-old", type=inkex.Boolean)
|
||||
|
||||
def save(self, stream):
|
||||
# version check if enabled in options
|
||||
if self.options.scour_version_warn_old:
|
||||
scour_version = scour.__version__
|
||||
scour_version_min = self.options.scour_version
|
||||
if Version(scour_version) < Version(scour_version_min):
|
||||
raise inkex.AbortExtension(
|
||||
f"""
|
||||
The extension 'Optimized SVG Output' is designed for Scour {scour_version_min} or later but you're
|
||||
using the older version Scour {scour_version}.
|
||||
|
||||
Note: You can permanently disable this message on the 'About' tab of the extension window."""
|
||||
)
|
||||
del self.options.scour_version
|
||||
del self.options.scour_version_warn_old
|
||||
|
||||
# do the scouring
|
||||
stream.write(scourString(self.svg.tostring(), self.options).encode("utf8"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
ScourInkscape().run()
|
||||
Loading…
Add table
Add a link
Reference in a new issue