diff options
Diffstat (limited to 'share/extensions/lorem_ipsum.py')
-rwxr-xr-x | share/extensions/lorem_ipsum.py | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/share/extensions/lorem_ipsum.py b/share/extensions/lorem_ipsum.py new file mode 100755 index 0000000..b64b7d4 --- /dev/null +++ b/share/extensions/lorem_ipsum.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copyright (C) 2006 Jos Hirth, kaioa.com +# +# 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 2 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +""" +Example filltext sentences generated over at http://lipsum.com/ +""" + +import random + +import inkex +from inkex import Layer, FlowRoot, FlowRegion, FlowPara, Rectangle + +CORPA = [ + 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ', + 'Duis sem velit, ultrices et, fermentum auctor, rhoncus ut, ligula. ', + 'Phasellus at purus sed purus cursus iaculis. ', + 'Suspendisse fermentum. ', + 'Pellentesque et arcu. ', + 'Maecenas viverra. ', + 'In consectetuer, lorem eu lobortis egestas, velit odio imperdiet' + ' eros, sit amet sagittis nunc mi ac neque. ', + 'Sed non ipsum. ', + 'Nullam venenatis gravida orci. ', + 'Curabitur nunc ante, ullamcorper vel, auctor a, aliquam at, tortor. ', + 'Etiam sodales orci nec ligula. ', + 'Sed at turpis vitae velit euismod aliquet. ', + 'Fusce venenatis ligula in pede. ', + 'Pellentesque viverra dolor non nunc. ', + 'Donec interdum vestibulum libero. ', + 'Morbi volutpat. ', + 'Phasellus hendrerit. ', + 'Quisque dictum quam vel neque. ', + 'Quisque aliquam, nulla ac scelerisque convallis, nisi ligula sagittis' + ' risus, at nonummy arcu urna pulvinar nibh. ', + 'Nam pharetra. ', + 'Nam rhoncus, lectus vel hendrerit congue, nisl lorem feugiat ante, in' + ' fermentum erat nulla tristique arcu. ', + 'Mauris et dolor. ', + 'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere' + ' cubilia Curae; Donec gravida, ante vel ornare lacinia, orci enim porta' + ' est, eget sollicitudin lectus lectus eget lacus. ', + 'Praesent a lacus vitae turpis consequat semper. ', + 'In commodo, dolor quis fermentum ullamcorper, urna massa volutpat' + ' massa, vitae mattis purus arcu nec nulla. ', + 'In hac habitasse platea dictumst. ', + 'Praesent scelerisque. ', + 'Nullam sapien mauris, venenatis at, fermentum at, tempus eu, urna. ', + 'Vestibulum non arcu a ante feugiat vestibulum. ', + 'Nam laoreet dui sed magna. ', + 'Proin diam augue, semper vitae, varius et, viverra id, felis. ', + 'Pellentesque sit amet dui vel justo gravida auctor. ', + 'Aenean scelerisque metus eget sem. ', + 'Maecenas rhoncus rhoncus ipsum. ', + 'Donec nonummy lacinia leo. ', + 'Aenean turpis ipsum, rhoncus vitae, posuere vitae, euismod sed, ligula. ', + 'Pellentesque habitant morbi tristique senectus et netus et malesuada' + ' fames ac turpis egestas. ', + 'Mauris tempus diam. ', + 'Maecenas justo. ', + 'Sed a lorem ut est tincidunt consectetuer. ', + 'Ut eu metus id lectus vestibulum ultrices. ', + 'Suspendisse lectus. ', + 'Vivamus posuere, ante eu tempor dictum, felis nibh facilisis sem, eu' + ' auctor metus nulla non lorem. ', + 'Suspendisse potenti. ', + 'Integer fringilla. ', + 'Morbi urna. ', + 'Morbi pulvinar nulla sit amet nisl. ', + 'Mauris urna sem, suscipit vitae, dignissim id, ultrices sed, nunc. ', + 'Morbi a mauris. ', + 'Pellentesque suscipit accumsan massa. ', + 'Quisque arcu ante, cursus in, ornare quis, viverra ut, justo. ', + 'Quisque facilisis, urna sit amet pulvinar mollis, purus arcu adipiscing' + ' velit, non condimentum diam purus eu massa. ', + 'Suspendisse potenti. ', + 'Phasellus nisi metus, tempus sit amet, ultrices ac, porta nec, felis. ', + 'Aliquam metus. ', + 'Nam a nunc. ', + 'Vivamus feugiat. ', + 'Nunc metus. ', + 'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere' + ' cubilia Curae; Vivamus eu orci. ', + 'Sed elementum, felis quis porttitor sollicitudin, augue nulla sodales' + ' sapien, sit amet posuere quam purus at lacus. ', + 'Curabitur tincidunt tellus nec purus. ', + 'Nam consectetuer mollis dolor. ', + 'Sed quis elit. ', + 'Aenean luctus vulputate turpis. ', + 'Proin lectus orci, venenatis pharetra, egestas id, tincidunt vel, eros. ', + 'Nulla facilisi. ', + 'Aliquam vel nibh. ', + 'Vivamus nisi elit, nonummy id, facilisis non, blandit ac, dolor. ', + 'Etiam cursus purus interdum libero. ', + 'Nam id neque. ', + 'Etiam pede nunc, vestibulum vel, rutrum et, tincidunt eu, enim. ', + 'Aenean id purus. ', + 'Aenean ultrices turpis. ', + 'Mauris et pede. ', + 'Suspendisse potenti. ', + 'Aliquam velit dui, commodo quis, porttitor eget, convallis et, nisi. ', + 'Maecenas convallis dui. ', + 'In leo ante, venenatis eu, volutpat ut, imperdiet auctor, enim. ', + 'Mauris ac massa vestibulum nisl facilisis viverra. ', + 'Phasellus magna sem, vulputate eget, ornare sed, dignissim sit amet, pede. ', + 'Aenean justo ipsum, luctus ut, volutpat laoreet, vehicula in, libero. ', + 'Praesent semper, neque vel condimentum hendrerit, lectus elit pretium' + 'ligula, nec consequat nisl velit at dui. ', + 'Proin dolor sapien, adipiscing id, sagittis eu, molestie viverra, mauris. ', + 'Aenean ligula. ', + 'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere' + ' cubilia Curae; Suspendisse potenti. ', + 'Etiam pharetra lacus sed velit imperdiet bibendum. ', + 'Nunc in turpis ac lacus eleifend sagittis. ', + 'Nam massa turpis, nonummy et, consectetuer id, placerat ac, ante. ', + 'In tempus urna. ', + 'Quisque vehicula porttitor odio. ', + 'Aliquam sed erat. ', + 'Vestibulum viverra varius enim. ', + 'Donec ut purus. ', + 'Pellentesque convallis dolor vel libero. ', + 'Integer tempus malesuada pede. ', + 'Integer porta. ', + 'Donec diam eros, tristique sit amet, pretium vel, pellentesque ut, neque. ', + 'Nulla blandit justo a metus. ', + 'Curabitur accumsan felis in erat. ', + 'Curabitur lorem risus, sagittis vitae, accumsan a, iaculis id, metus. ', + 'Nulla sagittis condimentum ligula. ', + 'Aliquam imperdiet lobortis metus. ', + 'Suspendisse molestie sem. ', + 'Ut venenatis. ', + 'Pellentesque condimentum felis a sem. ', + 'Fusce nonummy commodo dui. ', + 'Nullam libero nunc, tristique eget, laoreet eu, sagittis id, ante. ', + 'Etiam fermentum. ', + 'Phasellus auctor enim eget sem. ', + 'Morbi turpis arcu, egestas congue, condimentum quis, tristique cursus, leo. ', + 'Sed fringilla. ', + 'Nam malesuada sapien eu nibh. ', + 'Pellentesque ac turpis. ', + 'Nulla sed lacus. ', + 'Mauris sed nulla quis nisi interdum tempor. ', + 'Quisque pretium rutrum ligula. ', + 'Mauris tempor ultrices justo. ', + 'In hac habitasse platea dictumst. ', + 'Donec sit amet enim. ', + 'Suspendisse venenatis. ', + 'Nam nisl quam, posuere non, volutpat sed, semper vitae, magna. ', + 'Donec ut urna. ', + 'Integer risus velit, facilisis eget, viverra et, venenatis id, leo. ', + 'Cras facilisis felis sit amet lorem. ', + 'Nam molestie nisl at metus. ', + 'Suspendisse viverra placerat tortor. ', + 'Phasellus lacinia iaculis mi. ', + 'Sed dolor. ', + 'Quisque malesuada nulla sed pede volutpat pulvinar. ', + 'Cras gravida. ', + 'Mauris tincidunt aliquam ante. ', + 'Fusce consectetuer tellus ut nisl. ', + 'Curabitur risus urna, placerat et, luctus pulvinar, auctor vel, orci. ', + 'Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. ', + 'Praesent aliquet, neque pretium congue mattis, ipsum augue dignissim ante, ac' + ' pretium nisl lectus at magna. ', + 'Vivamus quis mi. ', + 'Nam sed nisl nec elit suscipit ullamcorper. ', + 'Donec tempus quam quis neque. ', + 'Donec rutrum venenatis dui. ', + 'Praesent a eros. ', + 'Aliquam justo lectus, iaculis a, auctor sed, congue in, nisl. ', + 'Etiam non neque ac mi vestibulum placerat. ', + 'Donec at diam a tellus dignissim vestibulum. ', + 'Integer accumsan. ', + 'Cras ac enim vel dui vestibulum suscipit. ', + 'Pellentesque tempor. ', + 'Praesent lacus. ' +] + + +class LoremIpsum(inkex.EffectExtension): + """Generate text with psuedo latin content""" + def add_arguments(self, pars): + pars.add_argument("--num", type=int, default=5, help="Number of paragraphs to generate") + pars.add_argument("-c", "--sentencecount", type=int, default=16, + help="Number of Sentences") + pars.add_argument("-f", "--fluctuation", type=int, default=4, help="+/-") + pars.add_argument("--tab", help="The selected UI-tab when OK was pressed") + + def make_paragraph(self, text_index=0): + """Make a paragraph""" + _min = max(1, self.options.sentencecount - self.options.fluctuation) + _max = max(2, self.options.sentencecount + self.options.fluctuation) + scount = int(random.random() * _max + _min) + for sentence in range(scount): + if text_index + sentence == 0: + yield CORPA[0] + else: + index = int(random.random() * (len(CORPA) - 1)) + yield CORPA[index] + + def add_text(self, node): + """Create many flowed text paragraph and append to node""" + for text_index in range(self.options.num): + para = node.add(FlowPara()) + para.text = ''.join(self.make_paragraph(text_index)) + node.append(FlowPara()) + + def effect(self): + # Existing text flow to insert new text into + for node in self.svg.selection.filter(FlowRoot): + self.add_text(node) + return + + # New text layer with lorum ipsum content + root = FlowRoot() + root.set('xml:space', 'preserve') + region = root.add(FlowRegion()) + + shape = self.svg.selection.first() + if shape is not None: + parent = shape.getparent() + region.add(shape.copy()) + else: + parent = self.svg.add(Layer.new('lorum ipsum')) + region.add(Rectangle(x='0', y='0',\ + width=str(int(self.svg.width)),\ + height=str(int(self.svg.height)))) + + parent.add(root) + self.add_text(root) + + +if __name__ == '__main__': + LoremIpsum().run() |