Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activity.py
diff options
context:
space:
mode:
Diffstat (limited to 'activity.py')
-rw-r--r--activity.py47
1 files changed, 32 insertions, 15 deletions
diff --git a/activity.py b/activity.py
index 7b8767a..a799da6 100644
--- a/activity.py
+++ b/activity.py
@@ -1,3 +1,6 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
# Base import
import gtk
import pango
@@ -18,6 +21,7 @@ import src.const as const
try:
from sugar.activity import activity
from sugar.graphics.toolbutton import ToolButton
+ from sugar.presence import presenceservice
from gtk import Toolbar
const.inSugar = True
except ImportError:
@@ -26,8 +30,8 @@ except ImportError:
# Init position
-const.tree_initx = 200
-const.tree_inity = 200
+const.tree_initx = (875 - const._person_width) / 2
+const.tree_inity = (780 - const._person_height) / 2
const.bg_color = (0.7, 0.7, 0.7)
@@ -40,6 +44,10 @@ _consolehandler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(level
_logger.addHandler(_consolehandler)
+# Init presence
+presenceService = presenceservice.get_instance()
+buddyName = presenceService.get_owner().props.nick
+
# Activity class
class RootsActivity(activity.Activity):
@@ -74,7 +82,7 @@ class RootsActivity(activity.Activity):
tool.connect('clicked', self.sample1)
toolbarsample.insert(tool, -1)
tool = ToolButton('sample2')
- tool.set_tooltip(_('Napoleon'))
+ tool.set_tooltip(_('Napoléon'))
tool.connect('clicked', self.sample2)
toolbarsample.insert(tool, -1)
toolbox.add_toolbar(_('Samples'), toolbarsample)
@@ -84,7 +92,7 @@ class RootsActivity(activity.Activity):
# Create drawing area
self.zoomlevel = 0
self.area = gtk.DrawingArea()
- self.area.set_size_request(750, 600)
+ self.area.set_size_request(875, 780)
self.area.set_events(gtk.gdk.BUTTON_PRESS_MASK|gtk.gdk.BUTTON_RELEASE_MASK|gtk.gdk.BUTTON_MOTION_MASK|gtk.gdk.POINTER_MOTION_MASK)
self.area.connect("expose_event", self.area_expose_cb)
self.area.connect("button_press_event", self.press_button)
@@ -94,9 +102,9 @@ class RootsActivity(activity.Activity):
# Create detail view
self.fixed = VBoxColor(const.bg_color)
- self.fixed.set_size_request(200, 300)
+ self.fixed.set_size_request(325, 780)
self.imagezone = gtk.DrawingArea()
- self.imagezone.set_size_request(200, 240) # WARNING: Should preserve the 1/3 ratio
+ self.imagezone.set_size_request(325, 240)
self.imagezone.set_events(gtk.gdk.BUTTON_PRESS_MASK|gtk.gdk.BUTTON_RELEASE_MASK)
self.imagezone.connect("expose_event", self.image_expose)
self.imagezone.connect("button_press_event", self.image_release_button)
@@ -118,13 +126,13 @@ class RootsActivity(activity.Activity):
scrolled.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scrolled.set_border_width(2)
self.detail_description = gtk.TextView()
- self.detail_description.set_wrap_mode(True)
+ self.detail_description.set_wrap_mode(gtk.WRAP_WORD)
self.detail_description.set_size_request(200, 100)
self.detail_description.set_cursor_visible(True)
self.detail_description.get_buffer().connect("changed", self.description_changed)
scrolled.add(self.detail_description)
self.fixed.pack_start(scrolled, False, False, 5)
- self.detail_btnaddparent = self.create_button(_("Add parent"), "images/addparent.svg", self.addparent_clicked)
+ self.detail_btnaddparent = self.create_button(_("Add parents"), "images/addparent.svg", self.addparent_clicked)
self.detail_btnaddbrother = self.create_button(_("Add brother/sister"), "images/addbrother.svg", self.addbrother_clicked)
self.detail_btnaddunion = self.create_button(_("Add union"), "images/addunion.svg", self.addunion_clicked)
self.detail_btnaddchild = self.create_button(_("Add child"), "images/addchild.svg", self.addchild_clicked)
@@ -142,7 +150,7 @@ class RootsActivity(activity.Activity):
# Create empty tree
self.tree = None
self.selected = None
- self.init_tree(empty_tree())
+ self.init_tree(empty_tree(buddyName))
# Show all
self.show_all()
@@ -195,6 +203,7 @@ class RootsActivity(activity.Activity):
self.detail_name.set_sensitive(False)
self.detail_description.set_sensitive(False)
self.detail_name.set_text("")
+ self.detail_description.get_buffer().set_text("")
self.detail_chkmale.set_active(True)
self.detail_chkmale.set_sensitive(False)
self.detail_chkfemale.set_sensitive(False)
@@ -453,12 +462,12 @@ class RootsActivity(activity.Activity):
text = _("Click a person to edit it")
else:
text = _("Click here to paste an image")
- metrics = pc.get_metrics(self.imagezone.get_style().font_desc)
- w = pango.PIXELS(metrics.get_approximate_char_width() * len(text))
layout = pango.Layout(pc)
layout.set_text(text)
+ layout.set_width(rect.width*pango.SCALE)
+ layout.set_alignment(pango.ALIGN_CENTER)
gc.set_source_rgb(0, 0, 0)
- gc.move_to((rect.width - w)/2, y + image.get_height())
+ gc.move_to(0, y + image.get_height())
gc.show_layout(layout)
@@ -487,15 +496,23 @@ class RootsActivity(activity.Activity):
# Match image to rectangle
rect = self.imagezone.allocation
- if image.get_width() > rect.width or image.get_height() > rect.height:
- image = image.scale_simple(rect.width, rect.height, gtk.gdk.INTERP_HYPER)
+ image_width = image.get_width()
+ image_height = image.get_height()
+ if image_width > rect.width or image_height > rect.height:
+ if image_width > image_height:
+ target_width = rect.width
+ target_height = (image_height * target_width) / image_width
+ else:
+ target_height = rect.height
+ target_width = (image_width * target_height) / image_height
+ image = image.scale_simple(target_width, target_height, gtk.gdk.INTERP_HYPER)
self.selected.image = image
self.redraw()
def emptytree(self, event):
"Init with an empty tree"
- self.init_tree(empty_tree())
+ self.init_tree(empty_tree(buddyName))
def sample1(self, event):