diff options
Diffstat (limited to 'labyrinthactivity.py')
-rw-r--r-- | labyrinthactivity.py | 41 |
1 files changed, 41 insertions, 0 deletions
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() |