Provide search-as-you-type in the mapping dialogues.
[hermes] / package / src / org / maemo / hermes / gui / gtkui.py
index fa72817..5008925 100644 (file)
@@ -6,6 +6,7 @@ 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
@@ -25,7 +26,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.2', dbus_name = 'org.maemo.hermes')
         self.set_background('background.png')
         
         layout = HildonMainScreenLayout(offset = 0.8, container = self)
@@ -33,6 +34,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 +57,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 +189,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()
@@ -152,6 +203,7 @@ class HermesGUI(WimpWorks):
         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()