Add gnome-python dependency (fixes MB#11476).
[hermes] / package / src / org / maemo / hermes / gui / gtkui.py
index 33dc4da..f948453 100644 (file)
@@ -6,12 +6,12 @@ import thread
 import urllib2
 import hildon
 import conic
+import webbrowser
 from org.bleb.wimpworks import WimpWorks
 from org.maemo.hermes.gui.contactview import ContactView
 from org.maemo.hermes.gui.mapcontact import MapContact
 from org.maemo.hermes.gui.accountsdialogue import AccountsDialogue
 from org.bleb.wimpworks import HildonMainScreenLayout
-from org.maemo.hermes.engine.syncjob import SyncJob
 from org.maemo.hermes.engine.hermes import Hermes
 
 class HermesGUI(WimpWorks):
@@ -25,7 +25,7 @@ class HermesGUI(WimpWorks):
     # -----------------------------------------------------------------------
     def __init__(self, providers = None):
         gettext.install('hermes','/opt/hermes/share/locale/')
-        WimpWorks.__init__(self, 'Hermes', version = '0.9.0', dbus_name = 'org.maemo.hermes')
+        WimpWorks.__init__(self, 'Hermes', version = '0.8.7', dbus_name = 'org.maemo.hermes')
         self.set_background('background.png')
         
         layout = HildonMainScreenLayout(offset = 0.8, container = self)
@@ -33,6 +33,7 @@ class HermesGUI(WimpWorks):
         layout.add_button('Refresh', _("Update contacts' info"))
         
         self.add_menu_action("Accounts")
+        self.add_menu_action("About")
         self.menu.show_all()
         
         self.providers = providers
@@ -55,6 +56,54 @@ class HermesGUI(WimpWorks):
     def do_accounts(self, widget = None):
         dialog = AccountsDialogue(self.main_window, self.providers)
         dialog.show()
+
+
+    # -----------------------------------------------------------------------
+    def do_about(self, widget):
+        """Inspired by HeAboutDialog Python port:
+           http://wiki.maemo.org/Hildon-Extras#HeAboutDialog"""
+
+        dlg = gtk.Dialog(_("About"), self.main_window)
+
+        icon = gtk.Image()
+        icon.set_from_icon_name(self.name.lower(), gtk.ICON_SIZE_DIALOG)
+        icon.set_padding(5, 5)
+
+        name = gtk.Label(self.name)
+        name.set_alignment(0, 1)
+        hildon.hildon_helper_set_logical_font(name, 'X-LargeSystemFont')
+
+        version = gtk.Label('v%s' % (self.version))
+        version.set_alignment(0, 1)
+        version.set_padding(10, 0)
+        hildon.hildon_helper_set_logical_font(version, 'LargeSystemFont')
+        
+        desc = gtk.Label(_("Enrich contacts' from social networks."))
+        desc.set_alignment(0, 0)
+
+        copy = gtk.Label("Copyright (c) 2010 Andrew Flegg, Fredrik Wendt, Tim Samoff")
+        copy.set_alignment(0, 1)
+        copy.set_padding(0, 5)
+        hildon.hildon_helper_set_logical_font(copy, 'SmallSystemFont')
+        hildon.hildon_helper_set_logical_color(copy, gtk.RC_FG, gtk.STATE_NORMAL, "SecondaryTextColor")
+
+        layout = gtk.Table(3, 3, False)
+        layout.attach(icon, 0, 1, 0, 2, 0, gtk.EXPAND, 0, 0)
+        layout.attach(name, 1, 2, 0, 1, 0, gtk.EXPAND | gtk.FILL, 0, 0)
+        layout.attach(version, 2, 3, 0, 1, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0)
+        layout.attach(desc, 1, 3, 1, 2, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0)
+        layout.attach(copy, 0, 3, 2, 3, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL, 0, 0)
+        dlg.vbox.add(layout)
+
+        dlg.add_button(_('Visit website'), gtk.RESPONSE_APPLY)
+        dlg.add_button(_('Report bug'), gtk.RESPONSE_NO)
+        dlg.show_all()
+        response = dlg.run()
+        if response == gtk.RESPONSE_APPLY:
+            webbrowser.open('http://hermes.garage.maemo.org/')
+        elif response == gtk.RESPONSE_NO:
+            webbrowser.open('https://bugs.maemo.org/enter_bug.cgi?product=Hermes')
+        dlg.hide()
    
 
     # -----------------------------------------------------------------------
@@ -139,6 +188,7 @@ class HermesGUI(WimpWorks):
         view.connect('contact-activated', self.map_contact, fb2c)
         dialog.vbox.add(view)
         dialog.show_all()
+        dialog.vbox.add(view.get_search())
       
         dialog.run()
         dialog.hide()
@@ -147,11 +197,12 @@ class HermesGUI(WimpWorks):
     # -----------------------------------------------------------------------
     def map_contact(self, widget, contact, fb2c):
         view = MapContact(fb2c.friends, contact)
-    
+
         dialog = gtk.Dialog(contact.get_name(), self.main_window)
         dialog.add_button(_('Update'), gtk.RESPONSE_OK)
         dialog.vbox.add(view)
         dialog.show_all()
+        dialog.vbox.add(view.get_search())
       
         result = dialog.run()
         dialog.hide()
@@ -161,11 +212,11 @@ class HermesGUI(WimpWorks):
                 if friend.get_contact() == contact:
                     hildon.hildon_banner_show_information(self.main_window, '', _("Removing existing mappings is not yet supported"))
                 elif view.contact_mapped:
-                    if fb2c.update_contact(contact, friend, True):
-                        fb2c.addresses.commit_contact(contact)
+                    fb2c.update_contact(contact, friend, True, True)
+                    widget.add_mapping(friend.get_source())
                 else:
-                    if fb2c.update_contact(contact, friend, False):
-                        fb2c.addresses.commit_contact(contact)
+                    fb2c.update_contact(contact, friend, False, True)
+                    widget.add_mapping(friend.get_source())
     
                         
     # -----------------------------------------------------------------------