added and fixed layer clip extensions from pernsteiner
This commit is contained in:
parent
44d5767472
commit
f54fb7f7e8
73
extensions/fablabchemnitz/layer_clip/clip.py
Normal file
73
extensions/fablabchemnitz/layer_clip/clip.py
Normal file
@ -0,0 +1,73 @@
|
||||
# Copyright (c) 2012 Stuart Pernsteiner
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import sys
|
||||
import inkex
|
||||
import gettext
|
||||
from lxml import etree
|
||||
_ = gettext.gettext
|
||||
|
||||
class ClipEffect(inkex.EffectExtension):
|
||||
|
||||
def __init__(self, dirmark):
|
||||
inkex.Effect.__init__(self)
|
||||
self.dirmark = dirmark
|
||||
|
||||
def effect(self):
|
||||
defs = self.svg.getElement('//svg:defs')
|
||||
|
||||
if len(self.svg.selected) != 1:
|
||||
die(_("Error: You must select exactly one path"))
|
||||
# Create the svg:clipPath inside of svg:defs
|
||||
pathId = list(self.svg.selected.values())[0].get('id')
|
||||
|
||||
#inkex.utils.debug(pathId)
|
||||
clippath = etree.SubElement(defs, 'clipPath',
|
||||
{'clipPathUnits': 'userSpaceOnUse'
|
||||
,'id': self.svg.get_unique_id("clipPath")})
|
||||
use = etree.SubElement(clippath, 'use',
|
||||
{inkex.addNS('href','xlink'): '#' + pathId
|
||||
,'id': self.svg.get_unique_id("use")})
|
||||
|
||||
# Find the target layer and set its clip-path attribute
|
||||
layer = self.svg.selected[pathId].getparent()
|
||||
target = self.find_target(pathId)
|
||||
|
||||
target.set('clip-path', 'url(#%s)' % clippath.get('id'))
|
||||
|
||||
# Update layer names
|
||||
label_attr = inkex.addNS('label', 'inkscape')
|
||||
|
||||
layer_label = layer.get(label_attr)
|
||||
layer.set(label_attr, layer_label + ' (c%s)' % self.dirmark)
|
||||
|
||||
target_label = target.get(label_attr)
|
||||
target.set(label_attr, target_label + ' (C)')
|
||||
|
||||
def layername(layer):
|
||||
return layer.get(inkex.addNS('label','inkscape'))
|
||||
|
||||
def die(msg):
|
||||
inkex.errormsg(msg)
|
||||
sys.exit(1)
|
||||
|
16
extensions/fablabchemnitz/layer_clip/clip_above.inx
Normal file
16
extensions/fablabchemnitz/layer_clip/clip_above.inx
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Clip Layer Above</name>
|
||||
<id>fablabchemnitz.de_clip_layer_above</id>
|
||||
<effect>
|
||||
<object-type>path</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="FabLab Chemnitz">
|
||||
<submenu name="Layer Clip" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
<command location="inx" interpreter="python">clip_above.py</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
52
extensions/fablabchemnitz/layer_clip/clip_above.py
Normal file
52
extensions/fablabchemnitz/layer_clip/clip_above.py
Normal file
@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (c) 2012 Stuart Pernsteiner
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import clip
|
||||
import inkex
|
||||
import gettext
|
||||
_ = gettext.gettext
|
||||
|
||||
class ClipAboveEffect(clip.ClipEffect):
|
||||
def __init__(self):
|
||||
clip.ClipEffect.__init__(self, '+')
|
||||
|
||||
def find_target(self, pathId):
|
||||
layer = self.svg.selected[pathId].getparent()
|
||||
parent = layer.getparent()
|
||||
sibling = None
|
||||
last = None
|
||||
|
||||
children = parent.getchildren()
|
||||
children.reverse()
|
||||
for child in children:
|
||||
if child == layer and last is not None:
|
||||
return last
|
||||
last = child
|
||||
|
||||
clip.die(_("Error: There is no layer above '%s'") % clip.layername(layer))
|
||||
|
||||
# Create effect instance and apply it.
|
||||
ClipAboveEffect().run()
|
||||
|
16
extensions/fablabchemnitz/layer_clip/clip_below.inx
Normal file
16
extensions/fablabchemnitz/layer_clip/clip_below.inx
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Clip Layer Below</name>
|
||||
<id>fablabchemnitz.de_clip_layer_below</id>
|
||||
<effect>
|
||||
<object-type>path</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="FabLab Chemnitz">
|
||||
<submenu name="Layer Clip" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
<command location="inx" interpreter="python">clip_below.py</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
52
extensions/fablabchemnitz/layer_clip/clip_below.py
Normal file
52
extensions/fablabchemnitz/layer_clip/clip_below.py
Normal file
@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (c) 2012 Stuart Pernsteiner
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import clip
|
||||
import inkex
|
||||
import gettext
|
||||
_ = gettext.gettext
|
||||
|
||||
class ClipBelowEffect(clip.ClipEffect):
|
||||
def __init__(self):
|
||||
clip.ClipEffect.__init__(self, '-')
|
||||
|
||||
def find_target(self, pathId):
|
||||
layer = self.svg.selected[pathId].getparent()
|
||||
parent = layer.getparent()
|
||||
sibling = None
|
||||
last = None
|
||||
|
||||
if clip.layername(parent) is None:
|
||||
layer = parent
|
||||
|
||||
for child in parent.getchildren():
|
||||
if child == layer and last is not None:
|
||||
return last
|
||||
last = child
|
||||
|
||||
clip.die(_("Error: There is no layer below '%s'") % clip.layername(layer))
|
||||
|
||||
# Create effect instance and apply it.
|
||||
ClipBelowEffect().run()
|
16
extensions/fablabchemnitz/layer_clip/clip_current.inx
Normal file
16
extensions/fablabchemnitz/layer_clip/clip_current.inx
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Clip Layer Current</name>
|
||||
<id>fablabchemnitz.de_clip_layer_current</id>
|
||||
<effect>
|
||||
<object-type>path</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="FabLab Chemnitz">
|
||||
<submenu name="Layer Clip" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
<command location="inx" interpreter="python">clip_current.py</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
36
extensions/fablabchemnitz/layer_clip/clip_current.py
Normal file
36
extensions/fablabchemnitz/layer_clip/clip_current.py
Normal file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (c) 2012 Stuart Pernsteiner
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import clip
|
||||
from lxml import etree
|
||||
class ClipCurrentEffect(clip.ClipEffect):
|
||||
def __init__(self):
|
||||
clip.ClipEffect.__init__(self, '*')
|
||||
|
||||
def find_target(self, pathId):
|
||||
return self.svg.selected[pathId].getparent()
|
||||
|
||||
# Create effect instance and apply it.
|
||||
ClipCurrentEffect().run()
|
16
extensions/fablabchemnitz/layer_clip/clip_fixtransform.inx
Normal file
16
extensions/fablabchemnitz/layer_clip/clip_fixtransform.inx
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Clip Layer Fix Transform</name>
|
||||
<id>fablabchemnitz.de_clip_layer_fix_transform</id>
|
||||
<effect>
|
||||
<object-type>path</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="FabLab Chemnitz">
|
||||
<submenu name="Layer Clip" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
<command location="inx" interpreter="python">clip_fixtransform.py</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
41
extensions/fablabchemnitz/layer_clip/clip_fixtransform.py
Normal file
41
extensions/fablabchemnitz/layer_clip/clip_fixtransform.py
Normal file
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (c) 2012 Stuart Pernsteiner
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import sys
|
||||
import inkex
|
||||
|
||||
class FixTransformEffect(inkex.EffectExtension):
|
||||
|
||||
def effect(self):
|
||||
defs = self.document.xpath('//svg:defs/svg:clipPath/svg:use',
|
||||
namespaces=inkex.NSS)
|
||||
|
||||
for d in defs:
|
||||
del d.attrib['transform']
|
||||
|
||||
# Create effect instance and apply it.
|
||||
FixTransformEffect().run()
|
||||
|
||||
|
16
extensions/fablabchemnitz/layer_clip/clip_parent.inx
Normal file
16
extensions/fablabchemnitz/layer_clip/clip_parent.inx
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Clip Layer Parent</name>
|
||||
<id>fablabchemnitz.de_clip_layer_parent</id>
|
||||
<effect>
|
||||
<object-type>path</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="FabLab Chemnitz">
|
||||
<submenu name="Layer Clip" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
<command location="inx" interpreter="python">clip_parent.py</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
45
extensions/fablabchemnitz/layer_clip/clip_parent.py
Normal file
45
extensions/fablabchemnitz/layer_clip/clip_parent.py
Normal file
@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (c) 2012 Stuart Pernsteiner
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import clip
|
||||
import inkex
|
||||
import gettext
|
||||
_ = gettext.gettext
|
||||
|
||||
class ClipParentEffect(clip.ClipEffect):
|
||||
def __init__(self):
|
||||
clip.ClipEffect.__init__(self, '**')
|
||||
|
||||
def find_target(self, pathId):
|
||||
layer = self.svg.getElementById(pathId).getparent()
|
||||
parent = layer.getparent()
|
||||
|
||||
if parent.get(inkex.addNS('groupmode','inkscape')) != 'layer':
|
||||
clip.die(_("Error: Layer '%s' has no parent layer") %
|
||||
clip.layername(layer))
|
||||
return parent
|
||||
|
||||
# Create effect instance and apply it.
|
||||
ClipParentEffect().run()
|
16
extensions/fablabchemnitz/layer_clip/clip_remove.inx
Normal file
16
extensions/fablabchemnitz/layer_clip/clip_remove.inx
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Clip Layer Remove</name>
|
||||
<id>fablabchemnitz.de_clip_layer_remove</id>
|
||||
<effect>
|
||||
<object-type>path</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="FabLab Chemnitz">
|
||||
<submenu name="Layer Clip" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
<command location="inx" interpreter="python">clip_remove.py</command>
|
||||
</script>
|
||||
</inkscape-extension>
|
50
extensions/fablabchemnitz/layer_clip/clip_remove.py
Normal file
50
extensions/fablabchemnitz/layer_clip/clip_remove.py
Normal file
@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Copyright (c) 2012 Stuart Pernsteiner
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
# this list of conditions and the following disclaimer in the documentation
|
||||
# and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import sys
|
||||
import inkex
|
||||
|
||||
class RemoveClipEffect(inkex.Effect):
|
||||
def __init__(self):
|
||||
inkex.Effect.__init__(self)
|
||||
|
||||
def effect(self):
|
||||
path = list(self.svg.selected.values())[0]
|
||||
layer = path.getparent()
|
||||
if layer.attrib.has_key('clip-path'):
|
||||
del layer.attrib['clip-path']
|
||||
|
||||
# Update layer name
|
||||
label_attr = inkex.addNS('label', 'inkscape')
|
||||
|
||||
layer_label = layer.get(label_attr)
|
||||
if layer_label[-4:] == " (C)":
|
||||
layer.set(label_attr, layer_label[:-4])
|
||||
|
||||
|
||||
# Create effect instance and apply it.
|
||||
RemoveClipEffect().run()
|
||||
|
||||
|
Reference in New Issue
Block a user