From b983d541d67b5d1caab892fce2c66dd87fcd572a Mon Sep 17 00:00:00 2001 From: Max Usachev Date: Thu, 17 Jun 2010 09:55:39 +0300 Subject: [PATCH 1/1] added avatar in detailed item view --- renderers/hildon_renderer.py | 14 ++++++++++---- ui/hildon_ui.py | 20 +++++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/renderers/hildon_renderer.py b/renderers/hildon_renderer.py index e56f952..a99c69a 100644 --- a/renderers/hildon_renderer.py +++ b/renderers/hildon_renderer.py @@ -6,7 +6,8 @@ import os import gtk import hildon -ICONS_PATH = '/usr/share/icons/hicolor/48x48/hildon/' +ICONS_48_PATH = '/usr/share/icons/hicolor/48x48/hildon/' +ICONS_144_PATH = '/usr/share/icons/hicolor/144x144/hildon/' class HildonRenderer: def __init__(self): @@ -30,8 +31,7 @@ class HildonRenderer: 'roomNumber': 'general_presence_home.png', 'gender': 'camera_scene_mode_portrait.png', 'title': 'general_certificate.png', - 'personalTitle': 'general_certificate.png' - } + 'personalTitle': 'general_certificate.png'} def render_button(self, title, value, field=None): """Set necessary image for field.""" @@ -42,8 +42,14 @@ class HildonRenderer: button.set_style(hildon.BUTTON_STYLE_PICKER) button.set_alignment(0, 0.5, 0, 0) if field is not None: - image = gtk.image_new_from_file(os.path.join(ICONS_PATH, + image = gtk.image_new_from_file(os.path.join(ICONS_48_PATH, self.fields_dict.get(field, 'general_business_card.png'))) button.set_image(image) return button + def render_image(self, entry): + """Sets entry image.""" + + fname = os.path.join(ICONS_144_PATH, entry.get('image', \ + 'general_default_avatar.png')) + return gtk.image_new_from_file(fname) diff --git a/ui/hildon_ui.py b/ui/hildon_ui.py index 918fb66..3cdc6e1 100644 --- a/ui/hildon_ui.py +++ b/ui/hildon_ui.py @@ -115,16 +115,26 @@ class HildonMeabook(MeabookUI): func2(parent, entry_id) def update_entry(window, entry_id): + # create widgets + entry = self.controller.get_item(entry_id) + widgets_table = gtk.Table(rows=1, columns=1) + info_box = gtk.VBox() + image_box = gtk.VBox() pannable_area = hildon.PannableArea() - vbox = gtk.VBox() - for fname, fvalue in self.controller.get_item(entry_id): + image = self.renderer.render_image(dict(entry)) + for fname, fvalue in entry: button = self.renderer.render_button(_(fname) , fvalue, fname) - vbox.pack_start(button, expand=False) - pannable_area.add_with_viewport(vbox) + info_box.pack_start(button, expand=False) + # pack widgets + image_box.pack_start(image, expand=False) + widgets_table.attach(image_box, 0, 1, 0, 1, xoptions=gtk.SHRINK, \ + yoptions=gtk.FILL, ypadding=8) + pannable_area.add_with_viewport(info_box) + widgets_table.attach(pannable_area, 1, 2, 0, 1, ypadding=8) child = window.get_child() if child: child.destroy() - window.add(pannable_area) + window.add(widgets_table) pannable_area.show_all() -- 1.7.9.5