Code

Committed aho's lorem ipsum script and makefiles around
authorkidproto <kidproto@users.sourceforge.net>
Mon, 21 Aug 2006 06:59:00 +0000 (06:59 +0000)
committerkidproto <kidproto@users.sourceforge.net>
Mon, 21 Aug 2006 06:59:00 +0000 (06:59 +0000)
share/extensions/Makefile.am
share/extensions/lorem_ipsum.inx [new file with mode: 0644]
share/extensions/lorem_ipsum.py [new file with mode: 0644]

index 13f6e0f2e2c32de15d0d4aac00cba132d6a145df..592afbd27099467d3aa5a8431790223cf2504f2b 100644 (file)
@@ -54,7 +54,8 @@ extensions = \
        measure.py \
        gimp_xcf.py \
        eqtexsvg.py \
-       markers_strokepaint.py 
+       markers_strokepaint.py \
+       lorem_ipsum.py
 
 otherstuff = \
     aisvg.xslt
@@ -106,7 +107,9 @@ modules = \
         randompnt.inx \
         randompos.inx \
        eqtexsvg.inx \
-       markers_strokepaint.inx
+       markers_strokepaint.inx \
+       lorem_ipsum.inx
+
 
 extension_SCRIPTS = \
        $(extensions)
diff --git a/share/extensions/lorem_ipsum.inx b/share/extensions/lorem_ipsum.inx
new file mode 100644 (file)
index 0000000..7722b45
--- /dev/null
@@ -0,0 +1,15 @@
+<inkscape-extension>\r
+       <_name>Generate Fill Text</_name>\r
+       <id>com.kaioa.lorem_ipsum</id>\r
+       <dependency type="executable" location="extensions">lorem_ipsum.py</dependency>\r
+       <dependency type="executable" location="extensions">inkex.py</dependency>\r
+       <param name="num" type="int" min="1" max="1000" _gui-text="Number of Paragraphs">5</param>\r
+       <param name="sentencecount" type="int" min="2" max="100" _gui-text="Number of Sentences per Paragraph">16</param>\r
+       <param name="fluctuation" type="int" min="1" max="100" _gui-text="+/- Sentences (fluctuation)">4</param>\r
+       <effect>\r
+               <object-type>Fill Text</object-type>\r
+       </effect>\r
+    <script>\r
+       <command reldir="extensions" interpreter="python">lorem_ipsum.py</command>\r
+    </script>\r
+</inkscape-extension>
\ No newline at end of file
diff --git a/share/extensions/lorem_ipsum.py b/share/extensions/lorem_ipsum.py
new file mode 100644 (file)
index 0000000..3f39caa
--- /dev/null
@@ -0,0 +1,237 @@
+#!/usr/bin/env python \r
+'''\r
+Copyright (C) 2006 Jos Hirth, kaioa.com\r
+\r
+This program is free software; you can redistribute it and/or modify\r
+it under the terms of the GNU General Public License as published by\r
+the Free Software Foundation; either version 2 of the License, or\r
+(at your option) any later version.\r
+\r
+This program is distributed in the hope that it will be useful,\r
+but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+GNU General Public License for more details.\r
+\r
+You should have received a copy of the GNU General Public License\r
+along with this program; if not, write to the Free Software\r
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+'''\r
+'''\r
+Example filltext sentences generated over at http://lipsum.com/\r
+'''\r
+\r
+import inkex\r
+import random\r
+\r
+foo=[\r
+'Duis sem velit, ultrices et, fermentum auctor, rhoncus ut, ligula. ',\r
+'Phasellus at purus sed purus cursus iaculis. ',\r
+'Suspendisse fermentum. ',\r
+'Pellentesque et arcu. ',\r
+'Maecenas viverra. ',\r
+'In consectetuer, lorem eu lobortis egestas, velit odio imperdiet eros, sit amet sagittis nunc mi ac neque. ',\r
+'Sed non ipsum. ',\r
+'Nullam venenatis gravida orci. ',\r
+'Curabitur nunc ante, ullamcorper vel, auctor a, aliquam at, tortor. ',\r
+'Etiam sodales orci nec ligula. ',\r
+'Sed at turpis vitae velit euismod aliquet. ',\r
+'Fusce venenatis ligula in pede. ',\r
+'Pellentesque viverra dolor non nunc. ',\r
+'Donec interdum vestibulum libero. ',\r
+'Morbi volutpat. ',\r
+'Phasellus hendrerit. ',\r
+'Quisque dictum quam vel neque. ',\r
+'Quisque aliquam, nulla ac scelerisque convallis, nisi ligula sagittis risus, at nonummy arcu urna pulvinar nibh. ',\r
+'Nam pharetra. ',\r
+'Nam rhoncus, lectus vel hendrerit congue, nisl lorem feugiat ante, in fermentum erat nulla tristique arcu. ',\r
+'Mauris et dolor. ',\r
+'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. ',\r
+'Praesent a lacus vitae turpis consequat semper. ',\r
+'In commodo, dolor quis fermentum ullamcorper, urna massa volutpat massa, vitae mattis purus arcu nec nulla. ',\r
+'In hac habitasse platea dictumst. ',\r
+'Praesent scelerisque. ',\r
+'Nullam sapien mauris, venenatis at, fermentum at, tempus eu, urna. ',\r
+'Vestibulum non arcu a ante feugiat vestibulum. ',\r
+'Nam laoreet dui sed magna. ',\r
+'Proin diam augue, semper vitae, varius et, viverra id, felis. ',\r
+'Pellentesque sit amet dui vel justo gravida auctor. ',\r
+'Aenean scelerisque metus eget sem. ',\r
+'Maecenas rhoncus rhoncus ipsum. ',\r
+'Donec nonummy lacinia leo. ',\r
+'Aenean turpis ipsum, rhoncus vitae, posuere vitae, euismod sed, ligula. ',\r
+'Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. ',\r
+'Mauris tempus diam. ',\r
+'Maecenas justo. ',\r
+'Sed a lorem ut est tincidunt consectetuer. ',\r
+'Ut eu metus id lectus vestibulum ultrices. ',\r
+'Suspendisse lectus. ',\r
+'Vivamus posuere, ante eu tempor dictum, felis nibh facilisis sem, eu auctor metus nulla non lorem. ',\r
+'Suspendisse potenti. ',\r
+'Integer fringilla. ',\r
+'Morbi urna. ',\r
+'Morbi pulvinar nulla sit amet nisl. ',\r
+'Mauris urna sem, suscipit vitae, dignissim id, ultrices sed, nunc. ',\r
+'Morbi a mauris. ',\r
+'Pellentesque suscipit accumsan massa. ',\r
+'Quisque arcu ante, cursus in, ornare quis, viverra ut, justo. ',\r
+'Quisque facilisis, urna sit amet pulvinar mollis, purus arcu adipiscing velit, non condimentum diam purus eu massa. ',\r
+'Suspendisse potenti. ',\r
+'Phasellus nisi metus, tempus sit amet, ultrices ac, porta nec, felis. ',\r
+'Aliquam metus. ',\r
+'Nam a nunc. ',\r
+'Vivamus feugiat. ',\r
+'Nunc metus. ',\r
+'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus eu orci. ',\r
+'Sed elementum, felis quis porttitor sollicitudin, augue nulla sodales sapien, sit amet posuere quam purus at lacus. ',\r
+'Curabitur tincidunt tellus nec purus. ',\r
+'Nam consectetuer mollis dolor. ',\r
+'Sed quis elit. ',\r
+'Aenean luctus vulputate turpis. ',\r
+'Proin lectus orci, venenatis pharetra, egestas id, tincidunt vel, eros. ',\r
+'Nulla facilisi. ',\r
+'Aliquam vel nibh. ',\r
+'Vivamus nisi elit, nonummy id, facilisis non, blandit ac, dolor. ',\r
+'Etiam cursus purus interdum libero. ',\r
+'Nam id neque. ',\r
+'Etiam pede nunc, vestibulum vel, rutrum et, tincidunt eu, enim. ',\r
+'Aenean id purus. ',\r
+'Aenean ultrices turpis. ',\r
+'Mauris et pede. ',\r
+'Suspendisse potenti. ',\r
+'Aliquam velit dui, commodo quis, porttitor eget, convallis et, nisi. ',\r
+'Maecenas convallis dui. ',\r
+'In leo ante, venenatis eu, volutpat ut, imperdiet auctor, enim. ',\r
+'Mauris ac massa vestibulum nisl facilisis viverra. ',\r
+'Phasellus magna sem, vulputate eget, ornare sed, dignissim sit amet, pede. ',\r
+'Aenean justo ipsum, luctus ut, volutpat laoreet, vehicula in, libero. ',\r
+'Praesent semper, neque vel condimentum hendrerit, lectus elit pretium ligula, nec consequat nisl velit at dui. ',\r
+'Proin dolor sapien, adipiscing id, sagittis eu, molestie viverra, mauris. ',\r
+'Aenean ligula. ',\r
+'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse potenti. ',\r
+'Etiam pharetra lacus sed velit imperdiet bibendum. ',\r
+'Nunc in turpis ac lacus eleifend sagittis. ',\r
+'Nam massa turpis, nonummy et, consectetuer id, placerat ac, ante. ',\r
+'In tempus urna. ',\r
+'Quisque vehicula porttitor odio. ',\r
+'Aliquam sed erat. ',\r
+'Vestibulum viverra varius enim. ',\r
+'Donec ut purus. ',\r
+'Pellentesque convallis dolor vel libero. ',\r
+'Integer tempus malesuada pede. ',\r
+'Integer porta. ',\r
+'Donec diam eros, tristique sit amet, pretium vel, pellentesque ut, neque. ',\r
+'Nulla blandit justo a metus. ',\r
+'Curabitur accumsan felis in erat. ',\r
+'Curabitur lorem risus, sagittis vitae, accumsan a, iaculis id, metus. ',\r
+'Nulla sagittis condimentum ligula. ',\r
+'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ',\r
+'Aliquam imperdiet lobortis metus. ',\r
+'Suspendisse molestie sem. ',\r
+'Ut venenatis. ',\r
+'Pellentesque condimentum felis a sem. ',\r
+'Fusce nonummy commodo dui. ',\r
+'Nullam libero nunc, tristique eget, laoreet eu, sagittis id, ante. ',\r
+'Etiam fermentum. ',\r
+'Phasellus auctor enim eget sem. ',\r
+'Morbi turpis arcu, egestas congue, condimentum quis, tristique cursus, leo. ',\r
+'Sed fringilla. ',\r
+'Nam malesuada sapien eu nibh. ',\r
+'Pellentesque ac turpis. ',\r
+'Nulla sed lacus. ',\r
+'Mauris sed nulla quis nisi interdum tempor. ',\r
+'Quisque pretium rutrum ligula. ',\r
+'Mauris tempor ultrices justo. ',\r
+'In hac habitasse platea dictumst. ',\r
+'Donec sit amet enim. ',\r
+'Suspendisse venenatis. ',\r
+'Nam nisl quam, posuere non, volutpat sed, semper vitae, magna. ',\r
+'Donec ut urna. ',\r
+'Integer risus velit, facilisis eget, viverra et, venenatis id, leo. ',\r
+'Cras facilisis felis sit amet lorem. ',\r
+'Nam molestie nisl at metus. ',\r
+'Suspendisse viverra placerat tortor. ',\r
+'Phasellus lacinia iaculis mi. ',\r
+'Sed dolor. ',\r
+'Quisque malesuada nulla sed pede volutpat pulvinar. ',\r
+'Cras gravida. ',\r
+'Mauris tincidunt aliquam ante. ',\r
+'Fusce consectetuer tellus ut nisl. ',\r
+'Curabitur risus urna, placerat et, luctus pulvinar, auctor vel, orci. ',\r
+'Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. ',\r
+'Praesent aliquet, neque pretium congue mattis, ipsum augue dignissim ante, ac pretium nisl lectus at magna. ',\r
+'Vivamus quis mi. ',\r
+'Nam sed nisl nec elit suscipit ullamcorper. ',\r
+'Donec tempus quam quis neque. ',\r
+'Donec rutrum venenatis dui. ',\r
+'Praesent a eros. ',\r
+'Aliquam justo lectus, iaculis a, auctor sed, congue in, nisl. ',\r
+'Etiam non neque ac mi vestibulum placerat. ',\r
+'Donec at diam a tellus dignissim vestibulum. ',\r
+'Integer accumsan. ',\r
+'Cras ac enim vel dui vestibulum suscipit. ',\r
+'Pellentesque tempor. ',\r
+'Praesent lacus. '\r
+]\r
+\r
+class MyEffect(inkex.Effect):\r
+  def __init__(self):\r
+    inkex.Effect.__init__(self)\r
+    self.OptionParser.add_option("-n", "--numberofparagraphs",\r
+      action="store", type="int", \r
+      dest="num", default=5,\r
+      help="Number of paragraphs to generate")\r
+    self.OptionParser.add_option("-c", "--sentencecount",\r
+      action="store", type="int", \r
+      dest="sentencecount", default=16,\r
+      help="Number of Sentences")\r
+    self.OptionParser.add_option("-f", "--fluctuation",\r
+      action="store", type="int", \r
+      dest="fluctuation", default=4,\r
+      help="+/-")\r
+\r
+  def makePara(self):\r
+    _min=max(1,self.options.sentencecount-self.options.fluctuation)\r
+    _max=max(2,self.options.sentencecount+2*self.options.fluctuation)\r
+    scount=random.randint(_min,_max)\r
+    text=''\r
+    for i in range(scount):\r
+      text+=foo[random.randint(0,len(foo)-1)]\r
+    return text\r
+  \r
+  def addText(self, node):\r
+    for i in range(self.options.num):\r
+      para=self.document.createElement('flowPara')\r
+      text=self.document.createTextNode(self.makePara())\r
+      para.appendChild(text)\r
+      node.appendChild(para)\r
+      node.appendChild(self.document.createElement('flowPara'))\r
+  \r
+  def effect(self):\r
+    found=0\r
+    for id, node in self.selected.iteritems():\r
+      if node.tagName == 'flowRoot':\r
+        found+=1\r
+        if found==1:\r
+          self.addText(node)\r
+    if found==0:\r
+      #inkex.debug('No "flowRoot" elements selected. Unable to add text.')\r
+      svg=self.document.getElementsByTagName('svg')[0]\r
+      g=self.document.createElement('g')\r
+      g.setAttribute('inkscape:label','fill text')\r
+      g.setAttribute('inkscape:groupmode','layer')\r
+      flowRoot=self.document.createElement('flowRoot')\r
+      flowRoot.setAttribute('xml:space','preserve')\r
+      flowRegion=self.document.createElement('flowRegion')\r
+      rect=self.document.createElement('rect')\r
+      rect.setAttribute('x','0')\r
+      rect.setAttribute('y','0')\r
+      rect.setAttribute('width',svg.getAttribute('width'))\r
+      rect.setAttribute('height',svg.getAttribute('height'))\r
+      svg.appendChild(g)\r
+      g.appendChild(flowRoot)\r
+      flowRoot.appendChild(flowRegion)\r
+      flowRegion.appendChild(rect)\r
+      self.addText(flowRoot)\r
+\r
+e = MyEffect()\r
+e.affect()\r