added files
[meabook] / renderers / fremantle_renderer.py
1 """
2 Fremantle renderer
3 """
4
5 import os
6 import gtk
7 import gtk.gdk
8 import hildon
9 from base64 import b64decode as decode_image
10
11 ICONS_48_PATH = '/usr/share/icons/hicolor/48x48/hildon/'
12 ICONS_144_PATH = '/usr/share/icons/hicolor/144x144/hildon/'
13
14 class FremantleRenderer:
15     def __init__(self):
16         self.fields_dict = {
17             'homePhone': 'general_call.png',
18             'telephoneNumber': 'general_call.png',
19             'internalPhone': 'general_call.png',
20             'mobile': 'call_status_cellular.png',
21             'mail': 'general_email.png',
22             'dateOfBirth': 'calendar_birthday.png',
23             'cn': 'general_default_avatar.png',
24             'sn': 'general_default_avatar.png',
25             'gecos': 'general_default_avatar.png',
26             'givenName': 'general_default_avatar.png',
27             'initials': 'general_default_avatar.png',
28             'o': 'call_split_conference_call.png',
29             'ou': 'call_split_conference_call.png',
30             'uid': 'general_certificate_private_key.png',
31             'uidNumber': 'general_certificate_private_key.png',
32             'employeeNumber': 'general_certificate_private_key.png',
33             'roomNumber': 'general_presence_home.png',
34             'gender': 'camera_scene_mode_portrait.png',
35             'title': 'general_certificate.png',
36             'personalTitle': 'general_certificate.png'}
37
38     def render_button(self, title, value, field=None):
39         """Set necessary image for field."""
40
41         button = hildon.Button(gtk.HILDON_SIZE_AUTO | \
42             gtk.HILDON_SIZE_FINGER_HEIGHT, \
43             hildon.BUTTON_ARRANGEMENT_VERTICAL, title, value)
44         button.set_style(hildon.BUTTON_STYLE_PICKER)
45         button.set_alignment(0, 0.5, 0, 0)
46         if field is not None:
47             image = gtk.image_new_from_file(os.path.join(ICONS_48_PATH,
48                 self.fields_dict.get(field, 'general_business_card.png')))
49             button.set_image(image)
50         return button
51
52     def render_image(self, entry):
53         """Sets entry image."""
54
55         if not entry.has_key('image'):
56             fname  = os.path.join(ICONS_144_PATH, entry.get('image', \
57                 'general_default_avatar.png'))
58             image = gtk.image_new_from_file(fname)
59         else:
60             pixbuf_loader = gtk.gdk.PixbufLoader()
61             pixbuf_loader.write(entry['image'])
62             pixbuf_loader.close()
63             image = gtk.image_new_from_pixbuf(pixbuf_loader.get_pixbuf())
64         return image