diff options
Diffstat (limited to 'mindmapactivity.py')
-rwxr-xr-x | mindmapactivity.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/mindmapactivity.py b/mindmapactivity.py new file mode 100755 index 0000000..e972f79 --- /dev/null +++ b/mindmapactivity.py @@ -0,0 +1,83 @@ +# Copyright (C) 2009, Tomeu Vizoso +# +# 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +import logging +from gettext import gettext as _ + +import gtk + +from sugar.activity import activity +from sugar.graphics.toolbutton import ToolButton + +from model import MindMapModel +from view import MindMapView +from treeview import TreeView + +class MindMapActivity(activity.Activity): + def __init__(self, handle): + activity.Activity.__init__(self, handle) + + toolbox = activity.ActivityToolbox(self) + self.set_toolbox(toolbox) + toolbox.show() + + self._edit_toolbar = EditToolbar() + self._edit_toolbar.new_thought_button.connect('clicked', + self.__new_thought_button_cb) + toolbox.add_toolbar(_('Edit'), self._edit_toolbar) + self._edit_toolbar.show() + + self._model = MindMapModel() + + pane = gtk.HPaned() + self.set_canvas(pane) + pane.show() + + self._tree_view = TreeView(self._model) + pane.add1(self._tree_view) + self._tree_view.show() + + self._view = MindMapView(model=self._model) + pane.pack2(self._view) + self._view.show() + + def __new_thought_button_cb(self, button): + self._model.create_new_thought() + + def write_file(self, file_path): + data = self._model.serialize() + open(file_path, 'w').write(data) + + def read_file(self, file_path): + data = open(file_path, 'r').read() + self._model.unserialize(data) + +class EditToolbar(activity.EditToolbar): + __gtype_name__ = 'MindMapEditToolbar' + + def __init__(self): + activity.EditToolbar.__init__(self) + + separator = gtk.SeparatorToolItem() + self.insert(separator, -1) + separator.show() + + self.new_thought_button = ToolButton('list-add') + self.new_thought_button.set_tooltip(_('New thought')) + self.new_thought_button.props.accelerator = _('<ctrl>n') + self.insert(self.new_thought_button, -1) + self.new_thought_button.show() + |