diff options
Diffstat (limited to 'share/extensions/jessyink_effects.py')
-rwxr-xr-x | share/extensions/jessyink_effects.py | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/share/extensions/jessyink_effects.py b/share/extensions/jessyink_effects.py new file mode 100755 index 0000000..1845339 --- /dev/null +++ b/share/extensions/jessyink_effects.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python +# +# Copyright 2008, 2009 Hannes Hochreiner +# 2020 Martin Owens +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +"""Jessyink effect extension.""" + +import inkex + +from jessyink_install import JessyInkMixin, _ + + +class JessyinkEffects(JessyInkMixin, inkex.EffectExtension): + """Add ad effect to jessy ink selected items""" + + def add_arguments(self, pars): + pars.add_argument("--tab") + pars.add_argument("--effectInOrder", type=int, default=1) + pars.add_argument("--effectInDuration", type=float, default=0.8) + pars.add_argument("--effectIn", default="none") + pars.add_argument("--effectOutOrder", type=int, default=1) + pars.add_argument("--effectOutDuration", type=float, default=0.8) + pars.add_argument("--effectOut", default="none") + + def effect(self): + self.is_installed() + if not self.svg.selection: + raise inkex.AbortExtension( + _( + "No object selected. Please select the object you want to " + "assign an effect to and then press apply.\n" + ) + ) + + for elem in self.svg.selection.values(): + self._process(elem, "effectIn") + self._process(elem, "effectOut") + + def _process(self, elem, name): + effect = getattr(self.options, name) + order = getattr(self.options, name + "Order") + duration = int(getattr(self.options, name + "Duration") * 1000) + + if effect in ("appear", "fade", "pop"): + elem.set( + "jessyink:" + name, + inkex.Style(name=effect, order=order, length=duration), + ) + # Remove possible view argument. + elem.pop("jessyink:view", None) + else: + elem.pop("jessyink:" + name, None) + + +if __name__ == "__main__": + JessyinkEffects().run() |