diff options
author | Starbuck Johnson <starbuck@modwiz.com> | 2013-11-21 04:27:47 (GMT) |
---|---|---|
committer | Starbuck Johnson <starbuck@modwiz.com> | 2013-11-21 04:27:47 (GMT) |
commit | 20718bd5f5c7d7366dcda15f5c992e1ee564bf27 (patch) | |
tree | 01b34960a1e66d02f2247185832be03f17d5ace0 | |
parent | 495114d7d46fdb6e47a88a3f1a42a70f8c0b31af (diff) |
-rw-r--r-- | icons/txt-export.svg | 15 | ||||
-rw-r--r-- | labyrinthactivity.py | 41 |
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() |