diff options
Diffstat (limited to 'activity.py')
-rw-r--r-- | activity.py | 47 |
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): |