summaryrefslogtreecommitdiff
path: root/lib/extensions/install_custom_palette.py
blob: da546cad8ede6b78c0f8b16cf5a060165870944b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Authors: see git history
#
# Copyright (c) 2021 Authors
# Licensed under the GNU GPL version 3.0 or later.  See the file LICENSE for details.

import os
import shutil

import inkex

from ..i18n import _
from ..utils import guess_inkscape_config_path
from .base import InkstitchExtension


class InstallCustomPalette(InkstitchExtension):
    def __init__(self, *args, **kwargs):
        InkstitchExtension.__init__(self, *args, **kwargs)
        self.arg_parser.add_argument("-f", "--filepath", type=str, default="", dest="filepath")

    def effect(self):
        gpl = self.options.filepath
        if not os.path.isfile(gpl):
            inkex.errormsg(_("File does not exist."))

        palette_name = os.path.basename(gpl)
        if not palette_name.endswith('.gpl'):
            inkex.errormsg(_("Wrong file type. Ink/Stitch only accepts gpl color palettes."))

        if not palette_name.startswith('InkStitch'):
            palette_name = 'InkStitch %s' % palette_name

        palette_path = os.path.join(guess_inkscape_config_path(), 'palettes')

        if not os.path.isdir(palette_path):
            inkex.errormsg(_("Ink/Stitch cannot find your palette folder automatically. Please install your palette manually."))
        dest = os.path.join(palette_path, palette_name)
        shutil.copyfile(gpl,  dest)

        if not os.path.isfile(dest):
            inkex.errormsg("Something wwent wrong. Ink/Stitch wasn't able to copy your palette "
                           "file into the Inkscape palettes folder. Please do it manually.")