online-desktop r7278 - in trunk/weblogindriver: . weblogindriver



Author: marinaz
Date: Mon Oct 27 02:18:31 2008
New Revision: 7278
URL: http://svn.gnome.org/viewvc/online-desktop?rev=7278&view=rev

Log:
Provide a description about what information the user needs to enter for a particular account type when the user is adding new accounts.

Add text wrapping for that description.

Constrain the default width of the dialog so that it doesn't become super-wide when the user info for some account is a url.


Modified:
   trunk/weblogindriver/web-login-driver
   trunk/weblogindriver/weblogindriver/accounts_dialog.py

Modified: trunk/weblogindriver/web-login-driver
==============================================================================
--- trunk/weblogindriver/web-login-driver	(original)
+++ trunk/weblogindriver/web-login-driver	Mon Oct 27 02:18:31 2008
@@ -309,7 +309,7 @@
 
 TYPE_GOOGLE = "google"
 
-ONLINE_ACCOUNT_TYPES = {TYPE_GOOGLE : "Google"}
+ONLINE_ACCOUNT_TYPES = {TYPE_GOOGLE : ("Google", "Gmail or Google Apps for Your Domain email")}
 
 class OnlineAccount(dbus.service.Object):
   def __init__(self, account_id, bus_name, account_type, username, password='', enabled=True, gconf_dir=None, resource_id=None):
@@ -673,8 +673,9 @@
             continue
           name = node.getAttribute("name")
           full_name = node.getAttribute("fullName")
+          user_info_type = node.getAttribute("userInfoType")
           _logger.debug("parsing online account type name=%s full_name=%s" % (name, full_name))
-          ONLINE_ACCOUNT_TYPES[name]= full_name     
+          ONLINE_ACCOUNT_TYPES[name]= (full_name, user_info_type)     
     except urllib2.HTTPError, e:
       _logger.error("Failed to load %s : %s" % (url, e))
 
@@ -1279,7 +1280,7 @@
     return object_paths_list
 
   @dbus.service.method(OA_BUS_IFACE_STR,                      
-                       out_signature="a{ss}")
+                       out_signature="a{s(ss)}")
   def GetAllAccountTypes(self):
     _logger.debug("in GetAllAccountTypes")
     return ONLINE_ACCOUNT_TYPES

Modified: trunk/weblogindriver/weblogindriver/accounts_dialog.py
==============================================================================
--- trunk/weblogindriver/weblogindriver/accounts_dialog.py	(original)
+++ trunk/weblogindriver/weblogindriver/accounts_dialog.py	Mon Oct 27 02:18:31 2008
@@ -1,11 +1,13 @@
 import sys, logging, urlparse, gnome
 
-import gobject, gtk, dbus
+import gobject, gtk, dbus, pango
 
 import gutil, ddm_util
 
 _logger = logging.getLogger("weblogindriver.AccountsDialog")
 
+DIALOG_WIDTH = 320
+
 class Dialog(gtk.Window):      
     def __init__(self, account_types, online_accounts_service, *args, **kwargs):
         super(Dialog, self).__init__(*args, **kwargs)        
@@ -24,6 +26,7 @@
         self.set_position(gtk.WIN_POS_CENTER)
 
         self.__notebook = gtk.Notebook()
+        self.__notebook.set_size_request(DIALOG_WIDTH, -1)
         self.__notebook.set_border_width(5)
 
         self.__outer_existing_accounts_vbox = gtk.VBox() 
@@ -60,6 +63,12 @@
         self.__accounts_combo = gtk.ComboBox(self.__model)
         self.__existing_accounts_vbox.pack_start(self.__accounts_combo, True, False)
         textrender = gtk.CellRendererText()
+        # If we set ellipsize mode, the text gets ellipsized both in the selection pop-out and
+        # and in the selected item view. It would be ideal to have it be full length in the 
+        # first case, but not in the second case. Otherwise, having it show up full length in
+        # the selection pop-out, and having it truncated instead of ellipsized in the selected
+        # item view doesn't look so bad.
+        # textrender.set_property("ellipsize", pango.ELLIPSIZE_MIDDLE)
         self.__accounts_combo.pack_start(textrender, True)
         self.__accounts_combo.add_attribute(textrender, 'text', 0)
         self.__accounts_combo.connect('notify::active', self.__on_edited_account_changed)
@@ -139,21 +148,22 @@
         account_types_textrender = gtk.CellRendererText()
         self.__account_types_combo.pack_start(account_types_textrender, True)
         self.__account_types_combo.add_attribute(account_types_textrender, 'text', 0)
-        
+
         _logger.debug("will get accounts types")
         self.__all_account_types = self.__online_accounts_service.GetAllAccountTypes()
         _logger.debug("will get accounts types 2")
+        self.__user_info_types_by_full_name = {}
      
-        for (account_type, type_full_name) in self.__all_account_types.items():
+        for (account_type, (type_full_name, user_info_type)) in self.__all_account_types.items():
             if (not self.__account_types) or account_type in self.__account_types:
                 self.__account_types_model.append([type_full_name])
+                self.__user_info_types_by_full_name[type_full_name] = user_info_type 
             
         # Setting padding to 1 here is a hack to get the content of both tabs to be aligned,
         # we'll need to change this when it will become possible to add new account types to
         # the existing dialog, for example, by adding stocks that require these account types
         padding = 1  
         if len(self.__account_types_model) > 0:
-            self.__account_types_combo.set_active(0) 
             padding = 5
 
         self.__username_entry = gtk.Entry()
@@ -164,7 +174,9 @@
 
         username_vbox = gtk.VBox(spacing=2)
         self.__username_label = gtk.Label("Username:")
+        self.__username_label.set_size_request(DIALOG_WIDTH - 20, -1)
         self.__username_label.set_alignment(0.0, 0.5)
+        self.__username_label.set_line_wrap(True)
         username_vbox.pack_start(self.__username_label, False, False)    
         username_vbox.pack_end(self.__username_entry, False, False)
         self.__new_account_vbox.pack_start(username_vbox, padding=padding)
@@ -180,6 +192,10 @@
         self.__add_button_box.pack_end(self.__add_button, expand=False, fill=False)
         self.__new_account_vbox.pack_start(self.__add_button_box, False, False, padding=padding)   
 
+        self.__account_types_combo.connect('notify::active', self.__on_edited_account_type_changed)
+        if len(self.__account_types_model) > 0:
+            self.__account_types_combo.set_active(0) 
+
         online_options_hbox_2 = gtk.HBox(spacing=2)
         self.__save_online_check_box_2 = gtk.CheckButton(label="Save Accounts Online")
         self.__save_online_check_box_2.set_active(self.__online_accounts_service.GetSaveOnlineFlag())
@@ -294,7 +310,7 @@
                 return 
 
             _logger.debug("account added %s" % a) 
-            tree_iter = self.__model.append([self.__all_account_types[a.GetType()] + ': ' + a.GetUsername()])
+            tree_iter = self.__model.append([self.__all_account_types[a.GetType()][0] + ': ' + a.GetUsername()])
                 
             self.__model_tree_iter_by_account[a_path] = tree_iter
 
@@ -342,6 +358,11 @@
             self.__existing_accounts_label.set_text("Password:")
             self.__existing_accounts_label.set_alignment(0.0, 0.5)    
 
+    def __on_edited_account_type_changed(self, *args):
+        new_iter = self.__account_types_combo.get_active_iter()
+        _logger.debug("account type changed to %s" % self.__account_types_model.get_value(new_iter, 0))
+        self.__username_label.set_text(self.__user_info_types_by_full_name[self.__account_types_model.get_value(new_iter, 0)] + ":")
+
     def __on_edited_account_changed(self, *args):
         new_iter = self.__accounts_combo.get_active_iter()
         _logger.debug("account changed to %s" % self.__model.get_value(new_iter, 0))        
@@ -456,7 +477,7 @@
             return
         
         current_iter = self.__account_types_combo.get_active_iter()
-        for (account_type, type_full_name) in self.__all_account_types.items():
+        for (account_type, (type_full_name, user_info_type)) in self.__all_account_types.items():
             if self.__account_types_model.get_value(current_iter, 0) == type_full_name:
                 self.__online_accounts_service.GetOrCreateAccount(account_type, text, self.account_add_return_cb, self.account_add_error_cb)
                 return 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]