From c575aeda96d389de29389c9e6e46395e1b938244 Mon Sep 17 00:00:00 2001 From: Kaalleen <36401965+kaalleen@users.noreply.github.com> Date: Sun, 10 Apr 2022 10:10:50 +0200 Subject: palette to text (#1619) --- lib/extensions/__init__.py | 2 ++ lib/extensions/generate_palette.py | 13 +++++----- lib/extensions/palette_split_text.py | 2 +- lib/extensions/palette_to_text.py | 50 ++++++++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 lib/extensions/palette_to_text.py (limited to 'lib') diff --git a/lib/extensions/__init__.py b/lib/extensions/__init__.py index 2a2af2ef..8a41c22c 100644 --- a/lib/extensions/__init__.py +++ b/lib/extensions/__init__.py @@ -31,6 +31,7 @@ from .letters_to_font import LettersToFont from .object_commands import ObjectCommands from .output import Output from .palette_split_text import PaletteSplitText +from .palette_to_text import PaletteToText from .params import Params from .print_pdf import Print from .remove_embroidery_settings import RemoveEmbroiderySettings @@ -70,6 +71,7 @@ __all__ = extensions = [StitchPlanPreview, InstallCustomPalette, GeneratePalette, PaletteSplitText, + PaletteToText, Simulator, Reorder, DuplicateParams, diff --git a/lib/extensions/generate_palette.py b/lib/extensions/generate_palette.py index 4255cfba..280be90f 100644 --- a/lib/extensions/generate_palette.py +++ b/lib/extensions/generate_palette.py @@ -4,7 +4,6 @@ # Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. import os -import sys import inkex @@ -30,29 +29,29 @@ class GeneratePalette(InkstitchExtension): if not brand: inkex.errormsg(_("Please specify a name for your color palette.")) - sys.exit() + return if path: if not os.path.isdir(path): inkex.errormsg(_("Unkown directory path.")) - sys.exit() + return else: path = os.path.join(guess_inkscape_config_path(), 'palettes') if not os.path.isdir(path): inkex.errormsg(_("Ink/Stitch cannot find your palette folder automatically. Please enter the path manually.")) - sys.exit() + return - elements = self.svg.selected.rendering_order() + elements = self.svg.selection.rendering_order() if not elements: inkex.errormsg(_("No element selected.\n\nPlease select at least one text element with a fill color.")) - sys.exit() + return colors = self._get_color_from_elements(elements) if not colors: inkex.errormsg(_("We couldn't find any fill colors on your text elements. Please read the instructions on our website.")) - sys.exit() + return colors = ['GIMP Palette', color_palette_name, '\nColumns: 4', '\n# RGB Value\t Color Name Number'] + colors diff --git a/lib/extensions/palette_split_text.py b/lib/extensions/palette_split_text.py index 829425b4..6c024ced 100644 --- a/lib/extensions/palette_split_text.py +++ b/lib/extensions/palette_split_text.py @@ -16,7 +16,7 @@ class PaletteSplitText(InkstitchExtension): self.arg_parser.add_argument("-l", "--line-height", type=int, default=6, dest="line_height") def effect(self): - if not self.svg.selected: + if not self.svg.selection: inkex.errormsg(_("Please select one or more text elements to split lines.")) return diff --git a/lib/extensions/palette_to_text.py b/lib/extensions/palette_to_text.py new file mode 100644 index 00000000..0944c649 --- /dev/null +++ b/lib/extensions/palette_to_text.py @@ -0,0 +1,50 @@ +# Authors: see git history +# +# Copyright (c) 2022 Authors +# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. + +import os + +import inkex + +from ..i18n import _ +from ..threads.palette import ThreadPalette +from .base import InkstitchExtension + + +class PaletteToText(InkstitchExtension): + # Generate a custom color palette in object related order + def __init__(self, *args, **kwargs): + InkstitchExtension.__init__(self, *args, **kwargs) + self.arg_parser.add_argument("-f", "--file", type=str, default=None, dest="file") + self.arg_parser.add_argument("-o", "--notebook:options", type=str, default=None, dest="page_options") + self.arg_parser.add_argument("-i", "--info", type=str, default=None, dest="page_help") + + def effect(self): + palette_file = self.options.file + if not os.path.isfile(palette_file): + inkex.errormsg(_("File does not exist.")) + return + + thread_palette = ThreadPalette(palette_file) + current_layer = self.svg.get_current_layer() + + x = 0 + y = 0 + pos = 0 + for color in thread_palette: + line = "%s %s" % (color.name, color.number) + element = inkex.TextElement() + element.text = line + element.style = "fill:%s;font-size:4px;" % color.to_hex_str() + element.set('x', x) + element.set('y', str(y)) + current_layer.insert(pos, element) + + y = float(y) + 5 + pos += 1 + + +if __name__ == '__main__': + e = PaletteToText() + e.affect() -- cgit v1.2.3