Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/labyrinthactivity.py
diff options
context:
space:
mode:
authorGary Martin <gary@garycmartin.com>2009-09-17 03:37:39 (GMT)
committer Gary Martin <gary@garycmartin.com>2009-09-17 03:37:39 (GMT)
commit7d6d3c2a4e47669bc1dafc8c0bc280b35a614a1b (patch)
treed55fa48ff9f7b5060eab4dce31de0d92d1d8cbbb /labyrinthactivity.py
parent0ea6dc15c517513294195b94f27d8f57e34775aa (diff)
Initial start of work for new (and old) toolbar support (just edit refactor so far).
Diffstat (limited to 'labyrinthactivity.py')
-rw-r--r--labyrinthactivity.py309
1 files changed, 183 insertions, 126 deletions
diff --git a/labyrinthactivity.py b/labyrinthactivity.py
index c0be6d7..90a16af 100644
--- a/labyrinthactivity.py
+++ b/labyrinthactivity.py
@@ -37,6 +37,16 @@ from sugar.graphics.menuitem import MenuItem
from sugar.datastore import datastore
from port.tarball import Tarball
+try:
+ # >= 0.86 toolbars
+ from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox
+ from sugar.activity.widgets import ActivityToolbarButton
+ from sugar.activity.widgets import StopButton
+except ImportError:
+ # <= 0.84 toolbars
+ pass
+
+
# labyrinth sources are shipped inside the 'src' subdirectory
sys.path.append(os.path.join(activity.get_bundle_path(), 'src'))
@@ -45,118 +55,182 @@ import MMapArea
import ImageThought
import utils
+class EditToolbar(activity.EditToolbar):
+ def __init__(self, _parent):
+ activity.EditToolbar.__init__(self)
+
+ self._parent = _parent
+
+ self.undo.connect('clicked', self.__undo_cb)
+ self.redo.connect('clicked', self.__redo_cb)
+ self.copy.connect('clicked', self.__copy_cb)
+ self.paste.connect('clicked', self.__paste_cb)
-class LabyrinthActivity(activity.Activity):
- def __init__(self, handle):
- activity.Activity.__init__(self, handle)
+ menu_item = MenuItem(_('Cut'))
+ menu_item.connect('activate', self.__cut_cb)
+ menu_item.show()
+ self.copy.get_palette().menu.append(menu_item)
+
+ self.clipboard = gtk.Clipboard()
- toolbox = activity.ActivityToolbox(self)
- self.set_toolbox(toolbox)
+ def __undo_cb(self, button):
+ self._parent._undo.undo_action(None)
- activity_toolbar = toolbox.get_activity_toolbar()
- keep_palette = activity_toolbar.keep.get_palette()
- menu_item = MenuItem(_('Keep to PDF'))
- menu_item.connect('activate', self.__export_pdf_cb)
- keep_palette.menu.append(menu_item)
- menu_item.show()
+ def __redo_cb(self, button):
+ self._parent._undo.redo_action(None)
- edit_toolbar = activity.EditToolbar()
- toolbox.add_toolbar(_('Edit'), edit_toolbar)
- edit_toolbar.undo.child.connect('clicked', self.__undo_cb)
- edit_toolbar.redo.child.connect('clicked', self.__redo_cb)
- edit_toolbar.copy.connect('clicked', self.__copy_cb)
+ def __cut_cb (self, event):
+ self._parent._main_area.cut_clipboard(self.clipboard)
- menu_item = MenuItem(_('Cut'))
- menu_item.connect('activate', self.__cut_cb)
- menu_item.show()
- edit_toolbar.copy.get_palette().menu.append(menu_item)
- edit_toolbar.paste.connect('clicked', self.__paste_cb)
-
- self.mods = [None] * 4
-
- self.mods[0] = RadioToolButton(named_icon='select-mode')
- self.mods[0].set_tooltip(_('Edit mode'))
- self.mods[0].set_accelerator(_('<ctrl>e'))
- self.mods[0].set_group(None)
- self.mods[0].connect('clicked', self.__mode_cb, MMapArea.MODE_NULL)
- edit_toolbar.insert(self.mods[0], 0)
-
- self.mods[1] = RadioToolButton(named_icon='text-mode')
- self.mods[1].set_tooltip(_('Text mode'))
- self.mods[1].set_accelerator(_('<ctrl>t'))
- self.mods[1].set_group(self.mods[0])
- self.mods[1].connect('clicked', self.__mode_cb, MMapArea.MODE_TEXT)
- edit_toolbar.insert(self.mods[1], 1)
-
- self.mods[2] = RadioToolButton(named_icon='draw-mode')
- self.mods[2].set_group(self.mods[0])
- self.mods[2].set_tooltip(_('Drawing mode'))
- self.mods[2].set_accelerator(_('<ctrl>d'))
- self.mods[2].connect('clicked', self.__mode_cb, MMapArea.MODE_DRAW)
- edit_toolbar.insert(self.mods[2], 2)
-
- self.mods[3] = RadioToolButton(named_icon='image-mode')
- self.mods[3].set_group(self.mods[0])
- self.mods[3].set_tooltip(_('Image add mode'))
- self.mods[3].set_accelerator(_('<ctrl>i'))
- self.mods[3].connect('clicked', self.__mode_cb, MMapArea.MODE_IMAGE)
- edit_toolbar.insert(self.mods[3], 3)
-
- separator = gtk.SeparatorToolItem()
- separator.set_draw(False)
- edit_toolbar.insert(separator, 4)
-
- tool = ToolButton('link')
- tool.set_tooltip(_('Link/unlink two selected thoughts'))
- tool.set_accelerator(_('<ctrl>l'))
- tool.connect('clicked', self.__link_cb)
- edit_toolbar.insert(tool, 5)
-
- separator = gtk.SeparatorToolItem()
- separator.set_draw(False)
- edit_toolbar.insert(separator, 6)
-
- tool = ToolButton('edit-delete')
- tool.set_tooltip(_('Erase selected thought(s)'))
- tool.connect('clicked', self.__delete_cb)
- edit_toolbar.insert(tool, 7)
-
- separator = gtk.SeparatorToolItem()
- edit_toolbar.insert(separator, 8)
- edit_toolbar.show()
-
- view_toolbar = gtk.Toolbar()
- toolbox.add_toolbar(_('View'), view_toolbar)
-
- tool = ToolButton('zoom-best-fit')
- tool.set_tooltip(_('Fit to window'))
- tool.set_accelerator(_('<ctrl>9'))
- tool.connect('clicked', self.__zoom_tofit_cb)
- view_toolbar.insert(tool, -1)
-
- tool = ToolButton('zoom-original')
- tool.set_tooltip(_('Original size'))
- tool.set_accelerator(_('<ctrl>0'))
- tool.connect('clicked', self.__zoom_original_cb)
- view_toolbar.insert(tool, -1)
-
- tool = ToolButton('zoom-out')
- tool.set_tooltip(_('Zoom out'))
- tool.set_accelerator(_('<ctrl>minus'))
- tool.connect('clicked', self.__zoom_out_cb)
- view_toolbar.insert(tool, -1)
-
- tool = ToolButton('zoom-in')
- tool.set_tooltip(_('Zoom in'))
- tool.set_accelerator(_('<ctrl>equal'))
- tool.connect('clicked', self.__zoom_in_cb)
- view_toolbar.insert(tool, -1)
+ def __copy_cb (self, event):
+ self._parent._main_area.copy_clipboard(self.clipboard)
- self._mode = MMapArea.MODE_TEXT
+ def __paste_cb (self, event):
+ self._parent._main_area.paste_clipboard(self.clipboard)
+
+class LabyrinthActivity(activity.Activity):
+ def __init__(self, handle):
+ activity.Activity.__init__(self, handle)
+
+ try:
+ # Use new >= 0.86 toolbar design
+ toolbar_box = ToolbarBox()
+ activity_button = ActivityToolbarButton(self)
+ toolbar_box.toolbar.insert(activity_button, 0)
+
+ edit_toolbar = ToolbarButton()
+ edit_toolbar.props.page = EditToolbar(self)
+ edit_toolbar.props.icon_name = 'toolbar-edit'
+ edit_toolbar.props.label = _('Edit'),
+ toolbar_box.toolbar.insert(edit_toolbar, -1)
+
+ self._undo = UndoManager.UndoManager (self,
+ edit_toolbar.props.page.undo.child,
+ edit_toolbar.props.page.redo.child)
+
+ tool = ToolbarButton()
+ #tool.props.page = activity.EditToolbar()
+ tool.props.icon_name = 'toolbar-view'
+ tool.props.label = _('View'),
+ toolbar_box.toolbar.insert(tool, -1)
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_expand(True)
+ separator.show()
+ toolbar_box.toolbar.insert(separator, -1)
+
+ tool = StopButton(self)
+ toolbar_box.toolbar.insert(tool, -1)
+
+ toolbar_box.show_all()
+ self.set_toolbar_box(toolbar_box)
+
+ except NameError:
+ # Use old <= 0.84 toolbar design
+ toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(toolbox)
+
+ activity_toolbar = toolbox.get_activity_toolbar()
+ keep_palette = activity_toolbar.keep.get_palette()
+ menu_item = MenuItem(_('Keep to PDF'))
+ menu_item.connect('activate', self.__export_pdf_cb)
+ keep_palette.menu.append(menu_item)
+ menu_item.show()
+
+ edit_toolbar = EditToolbar(self)
+ toolbox.add_toolbar(_('Edit'), edit_toolbar)
+
+ self._undo = UndoManager.UndoManager (self,
+ edit_toolbar.undo.child,
+ edit_toolbar.redo.child)
+
+ self.mods = [None] * 4
+
+ self.mods[0] = RadioToolButton(named_icon='select-mode')
+ self.mods[0].set_tooltip(_('Edit mode'))
+ self.mods[0].set_accelerator(_('<ctrl>e'))
+ self.mods[0].set_group(None)
+ self.mods[0].connect('clicked', self.__mode_cb, MMapArea.MODE_NULL)
+ edit_toolbar.insert(self.mods[0], 0)
+
+ self.mods[1] = RadioToolButton(named_icon='text-mode')
+ self.mods[1].set_tooltip(_('Text mode'))
+ self.mods[1].set_accelerator(_('<ctrl>t'))
+ self.mods[1].set_group(self.mods[0])
+ self.mods[1].connect('clicked', self.__mode_cb, MMapArea.MODE_TEXT)
+ edit_toolbar.insert(self.mods[1], 1)
+
+ self.mods[2] = RadioToolButton(named_icon='draw-mode')
+ self.mods[2].set_group(self.mods[0])
+ self.mods[2].set_tooltip(_('Drawing mode'))
+ self.mods[2].set_accelerator(_('<ctrl>d'))
+ self.mods[2].connect('clicked', self.__mode_cb, MMapArea.MODE_DRAW)
+ edit_toolbar.insert(self.mods[2], 2)
+
+ self.mods[3] = RadioToolButton(named_icon='image-mode')
+ self.mods[3].set_group(self.mods[0])
+ self.mods[3].set_tooltip(_('Image add mode'))
+ self.mods[3].set_accelerator(_('<ctrl>i'))
+ self.mods[3].connect('clicked', self.__mode_cb, MMapArea.MODE_IMAGE)
+ edit_toolbar.insert(self.mods[3], 3)
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(False)
+ edit_toolbar.insert(separator, 4)
+
+ tool = ToolButton('link')
+ tool.set_tooltip(_('Link/unlink two selected thoughts'))
+ tool.set_accelerator(_('<ctrl>l'))
+ tool.connect('clicked', self.__link_cb)
+ edit_toolbar.insert(tool, 5)
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(False)
+ edit_toolbar.insert(separator, 6)
+
+ tool = ToolButton('edit-delete')
+ tool.set_tooltip(_('Erase selected thought(s)'))
+ tool.connect('clicked', self.__delete_cb)
+ edit_toolbar.insert(tool, 7)
+
+ separator = gtk.SeparatorToolItem()
+ edit_toolbar.insert(separator, 8)
+ edit_toolbar.show()
+
+ view_toolbar = gtk.Toolbar()
+ toolbox.add_toolbar(_('View'), view_toolbar)
+
+ tool = ToolButton('zoom-best-fit')
+ tool.set_tooltip(_('Fit to window'))
+ tool.set_accelerator(_('<ctrl>9'))
+ tool.connect('clicked', self.__zoom_tofit_cb)
+ view_toolbar.insert(tool, -1)
+
+ tool = ToolButton('zoom-original')
+ tool.set_tooltip(_('Original size'))
+ tool.set_accelerator(_('<ctrl>0'))
+ tool.connect('clicked', self.__zoom_original_cb)
+ view_toolbar.insert(tool, -1)
+
+ tool = ToolButton('zoom-out')
+ tool.set_tooltip(_('Zoom out'))
+ tool.set_accelerator(_('<ctrl>minus'))
+ tool.connect('clicked', self.__zoom_out_cb)
+ view_toolbar.insert(tool, -1)
+
+ tool = ToolButton('zoom-in')
+ tool.set_tooltip(_('Zoom in'))
+ tool.set_accelerator(_('<ctrl>equal'))
+ tool.connect('clicked', self.__zoom_in_cb)
+ view_toolbar.insert(tool, -1)
+
+ activity_toolbar = toolbox.get_activity_toolbar()
+ activity_toolbar.share.props.visible = False
+ toolbox.set_current_toolbar(1)
- self._undo = UndoManager.UndoManager (self,
- edit_toolbar.undo.child,
- edit_toolbar.redo.child)
+ self._mode = MMapArea.MODE_TEXT
+
self._undo.block ()
self._main_area = MMapArea.MMapArea (self._undo)
self._main_area.connect ("set_focus", self.__main_area_focus_cb)
@@ -168,13 +242,11 @@ class LabyrinthActivity(activity.Activity):
self.show_all()
- activity_toolbar = toolbox.get_activity_toolbar()
- activity_toolbar.share.props.visible = False
-
- self.mods[MMapArea.MODE_TEXT].set_active(True)
- toolbox.set_current_toolbar(1)
+ #TODO:
+ # Disabled while I'm fixing up new toolbars!
+
+ #self.mods[MMapArea.MODE_TEXT].set_active(True)
self.set_focus_child (self._main_area)
- self.clipboard = gtk.Clipboard()
def __expose(self, widget, event):
"""Create skeleton map at start
@@ -275,21 +347,6 @@ class LabyrinthActivity(activity.Activity):
self._mode = mode
self._main_area.set_mode (self._mode)
- def __undo_cb(self, button):
- self._undo.undo_action(None)
-
- def __redo_cb(self, button):
- self._undo.redo_action(None)
-
- def __cut_cb (self, event):
- self._main_area.cut_clipboard (self.clipboard)
-
- def __copy_cb (self, event):
- self._main_area.copy_clipboard (self.clipboard)
-
- def __paste_cb (self, event):
- self._main_area.paste_clipboard (self.clipboard)
-
def __export_pdf_cb (self, event):
maxx, maxy = self._main_area.get_max_area()
true_width = int(maxx)