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-02-05 13:45:03 (GMT)
committer Gary Martin <gary@garycmartin.com>2009-02-05 13:45:03 (GMT)
commitb65a95f5ea7b0c74b9aa76c02c6849eadd744676 (patch)
tree742c40053afe96ec3c07bb68a08796426995fab0 /labyrinthactivity.py
parent07d063b05eb5c99d0010531620cc64afb8230368 (diff)
View zoom wired-up and working,and new zoom to fit code.
Diffstat (limited to 'labyrinthactivity.py')
-rw-r--r--labyrinthactivity.py104
1 files changed, 89 insertions, 15 deletions
diff --git a/labyrinthactivity.py b/labyrinthactivity.py
index 17cec9e..72bf6a4 100644
--- a/labyrinthactivity.py
+++ b/labyrinthactivity.py
@@ -54,17 +54,21 @@ class LabyrinthActivity(activity.Activity):
edit_toolbar.redo.child)
self._undo.block ()
- separator = gtk.SeparatorToolItem()
- separator.set_draw(True)
- edit_toolbar.insert(separator, -1)
- separator.show()
+ #separator = gtk.SeparatorToolItem()
+ #separator.set_draw(True)
+ #edit_toolbar.insert(separator, -1)
+ #separator.show()
+
+ thought_toolbar = gtk.Toolbar()
+ thought_toolbar.show()
+ toolbox.add_toolbar(_('Thoughts'), thought_toolbar)
self._edit_mode = RadioToolButton(named_icon='edit-mode')
self._edit_mode.set_tooltip(_('Edit mode'))
self._edit_mode.set_accelerator(_('<ctrl>e'))
self._edit_mode.set_group(None)
self._edit_mode.connect('clicked', self.__edit_mode_cb)
- edit_toolbar.insert(self._edit_mode, -1)
+ thought_toolbar.insert(self._edit_mode, -1)
self._edit_mode.show()
self._draw_mode = RadioToolButton(named_icon='draw-mode')
@@ -72,19 +76,47 @@ class LabyrinthActivity(activity.Activity):
self._draw_mode.set_tooltip(_('Drawing mode'))
self._draw_mode.set_accelerator(_('<ctrl>d'))
self._draw_mode.connect('clicked', self.__draw_mode_cb)
- edit_toolbar.insert(self._draw_mode, -1)
+ thought_toolbar.insert(self._draw_mode, -1)
self._draw_mode.show()
# FIXME: Disabled image add mode toolbar icon while I get the
- # Object chooser working (needs bunch of custom fluff the normal
- # gtk+ file picker does not).
- #self._image_mode = RadioToolButton(named_icon='add-image')
- #self._image_mode.set_group(self._edit_mode)
- #self._image_mode.set_tooltip(_('Image add mode'))
- #self._image_mode.set_accelerator(_('<ctrl>i'))
- #self._image_mode.connect('clicked', self.__image_mode_cb)
- #edit_toolbar.insert(self._image_mode, -1)
- #self._image_mode.show()
+ # Object chooser working (needs bunch of custom fluff the normal
+ # gtk+ file picker does not).
+ self._image_mode = RadioToolButton(named_icon='add-image')
+ self._image_mode.set_group(self._edit_mode)
+ self._image_mode.set_tooltip(_('Image add mode'))
+ self._image_mode.set_accelerator(_('<ctrl>i'))
+ self._image_mode.connect('clicked', self.__image_mode_cb)
+ thought_toolbar.insert(self._image_mode, -1)
+ self._image_mode.show()
+
+ view_toolbar = gtk.Toolbar()
+ view_toolbar.show()
+ toolbox.add_toolbar(_('View'), view_toolbar)
+
+ self._zoom_in = ToolButton('zoom-in')
+ self._zoom_in.set_tooltip(_('Zoom in'))
+ self._zoom_in.connect('clicked', self.__zoom_in_cb)
+ view_toolbar.insert(self._zoom_in, -1)
+ self._zoom_in.show()
+
+ self._zoom_out = ToolButton('zoom-out')
+ self._zoom_out.set_tooltip(_('Zoom out'))
+ self._zoom_out.connect('clicked', self.__zoom_out_cb)
+ view_toolbar.insert(self._zoom_out, -1)
+ self._zoom_out.show()
+
+ self._zoom_tofit = ToolButton('zoom-best-fit')
+ self._zoom_tofit.set_tooltip(_('Fit to window'))
+ self._zoom_tofit.connect('clicked', self.__zoom_tofit_cb)
+ view_toolbar.insert(self._zoom_tofit, -1)
+ self._zoom_tofit.show()
+
+ self._zoom_original = ToolButton('zoom-original')
+ self._zoom_original.set_tooltip(_('Original size'))
+ self._zoom_original.connect('clicked', self.__zoom_original_cb)
+ view_toolbar.insert(self._zoom_original, -1)
+ self._zoom_original.show()
self._save_file = None
self._mode = MMapArea.MODE_EDITING
@@ -104,6 +136,48 @@ class LabyrinthActivity(activity.Activity):
self._undo.unblock()
+ def __zoom_in_cb(self, button):
+ self._main_area.scale_fac *= 1.2
+ self._main_area.invalidate()
+
+ def __zoom_out_cb(self, button):
+ self._main_area.scale_fac /= 1.2
+ self._main_area.invalidate()
+
+ def __zoom_original_cb(self, button):
+ self._main_area.scale_fac = 1.0
+ self._main_area.invalidate()
+
+ def __zoom_tofit_cb(self, button):
+ if len(self._main_area.thoughts) == 0:
+ self._main_area.scale_fac = 1.0
+ self._main_area.translation[0] = 0
+ self._main_area.translation[1] = 0
+ self._main_area.invalidate()
+ return
+ # Find thoughts extent
+ left = right = upper = lower = None
+ for t in self._main_area.thoughts:
+ if right == None or t.lr[0] > right:
+ right = t.lr[0]
+ if lower == None or t.lr[1] > lower:
+ lower = t.lr[1]
+ if left == None or t.ul[0] < left:
+ left = t.ul[0]
+ if upper == None or t.ul[1] < upper:
+ upper = t.ul[1]
+ width = right - left
+ height = lower - upper
+ geom = self._main_area.window.get_geometry()
+ overlap = (width - geom[2], height - geom[3])
+ # Leave 10% space around the edge
+ width_scale = float(geom[2]) / (width * 1.1)
+ height_scale = float(geom[3]) / (height * 1.1)
+ self._main_area.translation[0] = (geom[2] / 2.0) - (width / 2.0 + left)
+ self._main_area.translation[1] = (geom[3] / 2.0) - (height / 2.0 + upper)
+ self._main_area.scale_fac = min(width_scale, height_scale)
+ self._main_area.invalidate()
+
def __edit_mode_cb(self, button):
self._mode = MMapArea.MODE_EDITING
self._main_area.set_mode (self._mode)