[labyrinth] r360 committed - Add Zoom-to-Fit functionality fixing issue 150

0 views
Skip to first unread message

codesite...@google.com

unread,
Apr 23, 2011, 1:30:21 PM4/23/11
to labyrinth-...@googlegroups.com
Revision: 360
Author: matthias.v...@gmail.com
Date: Sat Apr 23 10:29:28 2011
Log: Add Zoom-to-Fit functionality fixing issue 150

http://code.google.com/p/labyrinth/source/detail?r=360

Modified:
/trunk/ChangeLog
/trunk/data/labyrinth-ui.xml
/trunk/src/MMapArea.py
/trunk/src/MainWindow.py

=======================================
--- /trunk/ChangeLog Sat Apr 23 09:00:48 2011
+++ /trunk/ChangeLog Sat Apr 23 10:29:28 2011
@@ -1,3 +1,10 @@
+2011-04-23 Matthias Vogelgesang <matthias.v...@gmail.com>
+
+ * src/MainWindow.py
+ * src/MMapArea.py
+ * data/labyrinth-ui.xml:
+ Add Zoom-to-Fit functionality fixing issue 150
+
2011-04-23 Matthias Vogelgesang <matthias.v...@gmail.com>

* src/MainWindow.py
=======================================
--- /trunk/data/labyrinth-ui.xml Sat Apr 23 09:00:48 2011
+++ /trunk/data/labyrinth-ui.xml Sat Apr 23 10:29:28 2011
@@ -44,6 +44,7 @@
<separator/>
<toolitem action="ZoomIn"/>
<toolitem action="ZoomOut"/>
+ <toolitem action="ZoomFit"/>
<toolitem action="Undo"/>
<toolitem action="Redo"/>
</toolbar>
=======================================
--- /trunk/src/MMapArea.py Sat Apr 23 07:28:34 2011
+++ /trunk/src/MMapArea.py Sat Apr 23 10:29:28 2011
@@ -86,33 +86,33 @@
It is responsible for processing signals and such from the whole
area and \
passing these on to the correct child. It also informs things when
to draw'''

- __gsignals__ = dict (title_changed =
(gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_STRING,
)),
-
doc_save = (gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_PYOBJECT,
gobject.TYPE_PYOBJECT)),
- doc_delete =
(gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
()),
- change_mode =
(gobject.SIGNAL_RUN_LAST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_INT,
)),
- change_buffer =
(gobject.SIGNAL_RUN_LAST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_OBJECT,
)),
- text_selection_changed =
(gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_INT,
gobject.TYPE_INT, gobject.TYPE_STRING)),
- thought_selection_changed =
(gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_PYOBJECT,
gobject.TYPE_PYOBJECT)),
-
set_focus = (gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_PYOBJECT,
gobject.TYPE_BOOLEAN)),
-
set_attrs = (gobject.SIGNAL_RUN_LAST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_BOOLEAN,
gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN,
pango.FontDescription)))
+ __gsignals__ = dict (title_changed =
(gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+
(gobject.TYPE_STRING, )),
+ doc_save =
(gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+
(gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)),
+ doc_delete =
(gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ ()),
+ change_mode =
(gobject.SIGNAL_RUN_LAST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_INT,
)),
+ change_buffer =
(gobject.SIGNAL_RUN_LAST,
+ gobject.TYPE_NONE,
+
(gobject.TYPE_OBJECT, )),
+ text_selection_changed =
(gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_INT,
gobject.TYPE_INT, gobject.TYPE_STRING)),
+ thought_selection_changed =
(gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+
(gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)),
+ set_focus =
(gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+
(gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN)),
+ set_attrs =
(gobject.SIGNAL_RUN_LAST,
+ gobject.TYPE_NONE,
+
(gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN, gobject.TYPE_BOOLEAN,
pango.FontDescription)))

def __init__(self, undo):
super (MMapArea, self).__init__()
@@ -162,12 +162,11 @@
self.rotation = 0

self.set_events (gtk.gdk.KEY_PRESS_MASK |
- gtk.gdk.KEY_RELEASE_MASK |
- gtk.gdk.BUTTON_PRESS_MASK |
- gtk.gdk.BUTTON_RELEASE_MASK |
- gtk.gdk.POINTER_MOTION_MASK |
- gtk.gdk.SCROLL_MASK
- )
+ gtk.gdk.KEY_RELEASE_MASK |
+ gtk.gdk.BUTTON_PRESS_MASK |
+ gtk.gdk.BUTTON_RELEASE_MASK |
+ gtk.gdk.POINTER_MOTION_MASK |
+ gtk.gdk.SCROLL_MASK)

self.set_flags (gtk.CAN_FOCUS)

@@ -283,11 +282,11 @@

obj = self.find_object_at (coords)
if event.button == 2:
- self.undo.add_undo (UndoManager.UndoAction (self,
UndoManager.TRANSFORM_CANVAS, \
-
self.undo_transform_cb,
-
self.scale_fac,
self.scale_fac,
-
self.original_translation,
-
self.translation))
+ self.undo.add_undo (UndoManager.UndoAction (self,
UndoManager.TRANSFORM_CANVAS,
+ self.undo_transform_cb,
+ self.scale_fac, self.scale_fac,
+ self.original_translation,
+ self.translation))

if obj:
ret = obj.process_button_release (event, self.unending_link,
self.mode, coords)
@@ -323,14 +322,14 @@
thought.foreground_color = self.foreground_color
thought.background_color = self.background_color
act = UndoManager.UndoAction (self, UNDO_CREATE,
self.undo_create_cb, thought, sel, \
-
self.mode, self.old_mode, event.get_coords())
+ self.mode, self.old_mode, event.get_coords())
for l in self.links:
if l.uses (thought):
act.add_arg (l)
if self.undo.peak ().undo_type == UNDO_DELETE_SINGLE:
last_action = self.undo.pop ()
action = UndoManager.UndoAction (self,
UNDO_COMBINE_DELETE_NEW, self.undo_joint_cb, \
-
last_action,
act)
+ last_action, act)
self.undo.add_undo (action)
else:
self.undo.add_undo (act)
@@ -363,10 +362,11 @@
self.translation[1] -= coords[1] - middle[1]
elif event.direction == gtk.gdk.SCROLL_DOWN:
self.scale_fac/=1.2
+
self.undo.add_undo (UndoManager.UndoAction (self,
UndoManager.TRANSFORM_CANVAS, \
-
self.undo_transform_cb,
-
scale,
self.scale_fac, self.translation,
-
self.translation))
+ self.undo_transform_cb,
+ scale, self.scale_fac, self.translation,
+ self.translation))
self.invalidate()

def undo_joint_cb (self, action, mode):
=======================================
--- /trunk/src/MainWindow.py Sat Apr 23 09:00:48 2011
+++ /trunk/src/MainWindow.py Sat Apr 23 10:29:28 2011
@@ -43,18 +43,18 @@
UNDO_SHOW_EXTENDED = 1

class LabyrinthWindow (gobject.GObject):
- __gsignals__ = dict (title_changed =
(gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_STRING,
gobject.TYPE_OBJECT)),
-
doc_save = (gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_STRING,
gobject.TYPE_OBJECT)),
- file_saved =
(gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_STRING,
gobject.TYPE_OBJECT)),
- window_closed =
(gobject.SIGNAL_RUN_FIRST,
-
gobject.TYPE_NONE,
-
(gobject.TYPE_OBJECT,
)))
+ __gsignals__ = dict (title_changed = (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_STRING,
gobject.TYPE_OBJECT)),
+ doc_save = (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_STRING,
gobject.TYPE_OBJECT)),
+ file_saved = (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_STRING,
gobject.TYPE_OBJECT)),
+ window_closed = (gobject.SIGNAL_RUN_FIRST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_OBJECT, )))

def __init__ (self, filename, imported=False):
super(LabyrinthWindow, self).__init__()
@@ -252,7 +252,9 @@
('ZoomIn', gtk.STOCK_ZOOM_IN, None, '<control>plus',
None, self.zoomin_cb),
('ZoomOut', gtk.STOCK_ZOOM_OUT, None, '<control>minus',
- None, self.zoomout_cb)]
+ None, self.zoomout_cb),
+ ('ZoomFit', gtk.STOCK_ZOOM_FIT, None, None,
+ None, self.zoomfit_cb)]
self.radio_actions = [
('Edit', gtk.STOCK_EDIT, _('_Edit Mode'), '<control>E',
_('Turn on edit mode'), MMapArea.MODE_EDITING),
@@ -411,11 +413,11 @@

def finish_translate (self, box, arg1):
self.undo.add_undo (UndoManager.UndoAction (self.MainArea,
UndoManager.TRANSFORM_CANVAS, \
-
self.MainArea.undo_transform_cb,
-
self.MainArea.scale_fac,
-
self.MainArea.scale_fac,
-
self.orig_translate,
-
self.MainArea.translation))
+ self.MainArea.undo_transform_cb,
+ self.MainArea.scale_fac,
+ self.MainArea.scale_fac,
+ self.orig_translate,
+ self.MainArea.translation))
self.tr_to = False

def pos_changed (self, panes, arg2):
@@ -464,11 +466,15 @@
self.MainArea.set_font (button.get_font_name ())

def zoomin_cb(self, arg):
- self.MainArea.scale_fac*=1.2
+ self.MainArea.scale_fac *= 1.2
self.MainArea.invalidate()

def zoomout_cb(self, arg):
- self.MainArea.scale_fac/=1.2
+ self.MainArea.scale_fac /= 1.2
+ self.MainArea.invalidate()
+
+ def zoomfit_cb(self, arg):
+ self.MainArea.translation = [0.0, 0.0]
self.MainArea.invalidate()

def new_window_cb (self, arg):

Reply all
Reply to author
Forward
0 new messages