Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--icons/txt-export.svg15
-rw-r--r--labyrinthactivity.py41
2 files changed, 56 insertions, 0 deletions
diff --git a/icons/txt-export.svg b/icons/txt-export.svg
new file mode 100644
index 0000000..404d993
--- /dev/null
+++ b/icons/txt-export.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY fill_color "#000000">
+ <!ENTITY stroke_color "#FFFFFF">
+]>
+<svg xmlns="http://www.w3.org/2000/svg" width="55" height="55">
+
+ <polygon points="10.932,6.088 31.874,6.088 43.818,18.027 43.818,45.914 10.932,45.914 10.932,6.088 " transform="translate(-5.182,3.336)" style="fill:none;stroke:&stroke_color;;stroke-width:3.5;stroke-miterlimit:4" />
+ <polyline points="43.818,18.027 31.874,18.027 31.874,6.088" style="fill:none;stroke:&stroke_color;;stroke-width:3.5;stroke-miterlimit:4" transform="translate(-5.182,3.336)" />
+ <text x="8" y="36" font-size="12" font-family="Bitstream Vera Sans" font-weight="bold" fill="&stroke_color;" stroke="none">TXT</text>
+ <g transform="translate(-0.25,-1.75)">
+ <line style="fill:none;stroke:&stroke_color;;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" y2="5" y1="16" x2="52.5" x1="41" />
+ <polyline style="fill:none;stroke:&stroke_color;;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round" points="51.5,15.5 41,16 42,5.75" />
+ </g>
+</svg>
diff --git a/labyrinthactivity.py b/labyrinthactivity.py
index 2ee07fa..c107eb4 100644
--- a/labyrinthactivity.py
+++ b/labyrinthactivity.py
@@ -736,6 +736,12 @@ class LabyrinthActivity(activity.Activity):
activity_button.props.page.insert(tool, -1)
tool.show()
+ tool = ToolButton('txt-export')
+ tool.set_tooltip(_('Text Document (TXT)'))
+ tool.connect('clicked', self.__export_txt_cb)
+ activity_button.props.page.insert(tool, -1)
+ tool.show()
+
tool = ToolbarButton()
self.edit_toolbar = EditToolbar(self)
tool.props.page = self.edit_toolbar
@@ -791,6 +797,11 @@ class LabyrinthActivity(activity.Activity):
keep_palette.menu.append(menu_item)
menu_item.show()
+ menu_item = MenuItem(_('Text Document (TXT)'))
+ menu_item.connect('activate', self.__export_txt_cb)
+ keep_palette.menu.append(menu_item)
+ menu_item.show()
+
self.edit_toolbar = EditToolbar(self)
toolbox.add_toolbar(_('Edit'), self.edit_toolbar)
separator = gtk.SeparatorToolItem()
@@ -1049,7 +1060,37 @@ class LabyrinthActivity(activity.Activity):
datastore.write(fileObject, transfer_ownership=True)
fileObject.destroy()
del fileObject
+ def __export_txt_cb(self, event):
+ # Create new journel entry
+ fileObject = datastore.create()
+ act_meta = self.metadata
+ fileObject.metadata['title'] = act_meta['title'] + ' (TXT)'
+ fileObject.metadata['title_set_by_user'] = \
+ act_meta['title_set_by_user']
+ fileObject.metadata['mime_type'] = 'text/plain'
+
+ fileObject.file_path = os.path.join(self.get_activity_root(),
+ 'instance', '%i' % time.time())
+ filename = fileObject.file_path
+ f = open(filename, 'w')
+
+ text = self.__export_txt_recursive_helper(self._main_area.primary)
+ try:
+ f.write(str(text))
+ finally:
+ f.close()
+ datastore.write(fileObject, transfer_ownership=True)
+ fileObject.destroy()
+ del fileObject
+ def __export_txt_recursive_helper(self, start_node, depth=0, text=''):
+ if (start_node.text == None):
+ return text
+ text += ((depth * 2) * ' ' + start_node.text + '\n')
+ for l in self._main_area.links:
+ if l.parent == start_node:
+ text = self.__export_txt_recursive_helper(l.child, depth+1, text)
+ return text
def __main_area_focus_cb(self, arg, event, extended=False):
# Don't steal focus from textview
# self._main_area.grab_focus()