Code

Created new Arrange submenu for effects extensions
[inkscape.git] / share / extensions / lorem_ipsum.py
index f4e43108ad6d108795fc27a9affcd32a245bd8d2..938d63e0ba7288b1239b728d520a6e1484de6e25 100644 (file)
-#!/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
-'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. ',\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
-'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("--title")\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
-    self.first_sentence = 1\r
-\r
-  def makePara(self):\r
-    _min=max(1,self.options.sentencecount-self.options.fluctuation)\r
-    _max=max(2,self.options.sentencecount+self.options.fluctuation)\r
-    scount=random.randint(_min,_max)\r
-    text=''\r
-    for i in range(scount):\r
-      if self.first_sentence == 1:\r
-        text+=foo[0]\r
-        self.first_sentence = 0\r
-      else:\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=inkex.etree.SubElement(node,inkex.addNS('flowPara','svg'))\r
-      para.text = self.makePara()\r
-      inkex.etree.SubElement(node,inkex.addNS('flowPara','svg'))\r
-  \r
-  def effect(self):\r
-    found=0\r
-    for id, node in self.selected.iteritems():\r
-      if node.tag == inkex.addNS('flowRoot','svg'):\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.getroot()\r
-      gattribs = {'inkscape:label':'lorem ipsum','inkscape:groupmode':'layer'}\r
-      g=inkex.etree.SubElement(svg,inkex.addNS('g','svg'),gattribs)\r
-      flowRoot=inkex.etree.SubElement(g,inkex.addNS('flowRoot','svg'),{'xml:space':'preserve'})\r
-      flowRegion=inkex.etree.SubElement(flowRoot,inkex.addNS('flowRegion','svg'))\r
-      rattribs = {'x':'0','y':'0','width':svg.get('width'),'height':svg.get('height')}\r
-      rect=inkex.etree.SubElement(flowRegion,inkex.addNS('rect','svg'),rattribs)\r
-      self.addText(flowRoot)\r
-\r
-e = MyEffect()\r
-e.affect()\r
+#!/usr/bin/env python 
+'''
+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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+'''
+'''
+Example filltext sentences generated over at http://lipsum.com/
+'''
+
+import inkex
+import random
+
+foo=[
+'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 MyEffect(inkex.Effect):
+  def __init__(self):
+    inkex.Effect.__init__(self)
+    self.OptionParser.add_option("--title")
+    self.OptionParser.add_option("-n", "--numberofparagraphs",
+      action="store", type="int", 
+      dest="num", default=5,
+      help="Number of paragraphs to generate")
+    self.OptionParser.add_option("-c", "--sentencecount",
+      action="store", type="int", 
+      dest="sentencecount", default=16,
+      help="Number of Sentences")
+    self.OptionParser.add_option("-f", "--fluctuation",
+      action="store", type="int", 
+      dest="fluctuation", default=4,
+      help="+/-")
+    self.first_sentence = 1
+
+  def makePara(self):
+    _min=max(1,self.options.sentencecount-self.options.fluctuation)
+    _max=max(2,self.options.sentencecount+self.options.fluctuation)
+    scount=random.randint(_min,_max)
+    text=''
+    for i in range(scount):
+      if self.first_sentence == 1:
+        text+=foo[0]
+        self.first_sentence = 0
+      else:
+        text+=foo[random.randint(0,len(foo)-1)]
+    return text
+  
+  def addText(self, node):
+    for i in range(self.options.num):
+      para=inkex.etree.SubElement(node,inkex.addNS('flowPara','svg'))
+      para.text = self.makePara()
+      inkex.etree.SubElement(node,inkex.addNS('flowPara','svg'))
+  
+  def effect(self):
+    found=0
+    for id, node in self.selected.iteritems():
+      if node.tag == inkex.addNS('flowRoot','svg'):
+        found+=1
+        if found==1:
+          self.addText(node)
+    if found==0:
+      #inkex.debug('No "flowRoot" elements selected. Unable to add text.')
+      svg=self.document.getroot()
+      gattribs = {inkex.addNS('label','inkscape'):'lorem ipsum',inkex.addNS('groupmode','inkscape'):'layer'}
+      g=inkex.etree.SubElement(svg,inkex.addNS('g','svg'),gattribs)
+      flowRoot=inkex.etree.SubElement(g,inkex.addNS('flowRoot','svg'),{inkex.addNS('space','xml'):'preserve'})
+      flowRegion=inkex.etree.SubElement(flowRoot,inkex.addNS('flowRegion','svg'))
+      rattribs = {'x':'0','y':'0','width':svg.get('width'),'height':svg.get('height')}
+      rect=inkex.etree.SubElement(flowRegion,inkex.addNS('rect','svg'),rattribs)
+      self.addText(flowRoot)
+
+e = MyEffect()
+e.affect()