[Sugar-devel] [PATCH] Center the drawing area in the activity canvas
Manuel Quiñones
manuq at laptop.org
Mon Jun 13 22:56:29 EDT 2011
From: Manuel Quiñones <manuel.por.aca at gmail.com>
---
Area.py | 1 +
Desenho.py | 4 ++--
OficinaActivity.py | 22 ++++++++++++++++++++++
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/Area.py b/Area.py
index 1fa9ae4..43e1fd0 100644
--- a/Area.py
+++ b/Area.py
@@ -1155,6 +1155,7 @@ class Area(gtk.DrawingArea):
self.pixmap_temp.draw_pixbuf(self.gc, temp_pix, 0, 0, 0, 0,
height, width, dither=gtk.gdk.RGB_DITHER_NORMAL,
x_dither=0, y_dither=0)
+ self.janela.center_area()
del temp_pix
diff --git a/Desenho.py b/Desenho.py
index 1d46d4a..6beeb64 100644
--- a/Desenho.py
+++ b/Desenho.py
@@ -589,8 +589,8 @@ class Desenho:
if not widget.text_in_progress:
widget.text_in_progress = True
- widget.janela.fixed.move(widget.janela.textview,
- int(event.x), int(event.y))
+ x, y = int(event.x), int(event.y)
+ widget.janela.move_textview(x, y)
widget.janela.textview.show()
widget.janela.textview.grab_focus()
diff --git a/OficinaActivity.py b/OficinaActivity.py
index 86175c2..66e560f 100644
--- a/OficinaActivity.py
+++ b/OficinaActivity.py
@@ -116,6 +116,7 @@ class OficinaActivity(activity.Activity):
def size_allocate_cb(widget, allocation):
self.fixed.disconnect(self._setup_handle)
self.area.setup(allocation.width, allocation.height)
+ self.center_area()
self.canvas.add_with_viewport(self.fixed)
self.disconnect(self._setup_handle)
@@ -142,6 +143,7 @@ class OficinaActivity(activity.Activity):
self.fixed.disconnect(self._setup_handle)
self.area.setup(pixbuf.get_width(), pixbuf.get_height())
self.area.loadImageFromJournal(pixbuf)
+ self.center_area()
self.canvas.add_with_viewport(self.fixed)
self.disconnect(self._setup_handle)
@@ -173,3 +175,23 @@ class OficinaActivity(activity.Activity):
gtk.gdk.colormap_get_system(), 0, 0, 0, 0, -1, -1)
self.metadata['mime_type'] = 'image/png'
pixbuf.save(file_path, 'png', {})
+
+ def _get_area_displacement(self):
+ """Return the point to use as top left corner in order to move
+ the drawing area and center it on the canvas.
+
+ """
+ canvas_width = self.canvas.allocation.width
+ canvas_height = self.canvas.allocation.height
+ area_width, area_height = self.area.get_size_request()
+ x = (canvas_width - area_width) / 2
+ y = (canvas_height - area_height) / 2
+ return x, y
+
+ def center_area(self):
+ x, y = self._get_area_displacement()
+ self.fixed.move(self.area, x, y)
+
+ def move_textview(self, dx, dy):
+ x, y = self._get_area_displacement()
+ self.fixed.move(self.textview, x+dx, y+dy)
--
1.7.4.4
More information about the Sugar-devel
mailing list