[kupfer: 6/41] preferences: Present keyring backend information



commit 1d64fc3121ece84449268279fe23b885160a6f66
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Tue Apr 26 18:41:07 2011 +0200

    preferences: Present keyring backend information

 data/credentials_dialog.ui      |   32 +++++++++++++++++++++++++++++++-
 kupfer/plugin_support.py        |   18 ++++++++++++++++++
 kupfer/ui/credentials_dialog.py |   11 ++++++++---
 kupfer/ui/preferences.py        |    7 ++++++-
 4 files changed, 63 insertions(+), 5 deletions(-)
---
diff --git a/data/credentials_dialog.ui b/data/credentials_dialog.ui
index ceb728a..3702c27 100644
--- a/data/credentials_dialog.ui
+++ b/data/credentials_dialog.ui
@@ -9,7 +9,6 @@
     <property name="modal">True</property>
     <property name="window_position">center</property>
     <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
     <accelerator key="Return" signal="activate-default"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="grid_main">
@@ -20,6 +19,7 @@
           <object class="GtkVBox" id="vbox1">
             <property name="visible">True</property>
             <property name="border_width">6</property>
+            <property name="orientation">vertical</property>
             <property name="spacing">12</property>
             <child>
               <object class="GtkImage" id="image1">
@@ -92,6 +92,36 @@
                 <property name="position">1</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkHBox" id="hbox_information">
+                <child>
+                  <object class="GtkImage" id="image2">
+                    <property name="visible">True</property>
+                    <property name="stock">gtk-dialog-info</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label_information">
+                    <property name="width_request">250</property>
+                    <property name="visible">True</property>
+                    <property name="xalign">0</property>
+                    <property name="xpad">10</property>
+                    <property name="ypad">15</property>
+                    <property name="wrap">True</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="position">2</property>
+              </packing>
+            </child>
           </object>
           <packing>
             <property name="fill">False</property>
diff --git a/kupfer/plugin_support.py b/kupfer/plugin_support.py
index f1fbbc1..d681e88 100644
--- a/kupfer/plugin_support.py
+++ b/kupfer/plugin_support.py
@@ -170,6 +170,24 @@ class UserNamePassword (settings.ExtendedSetting):
 		if hasattr(kr, "file_path"):
 			kr.file_path = config.save_config_file("keyring.cfg")
 
+	@classmethod
+	def is_backend_encrypted(cls):
+		import keyring.core
+		return keyring.core.get_keyring().supported() == 1
+
+	@classmethod
+	def get_backend_name(cls):
+		import keyring.core
+		import keyring.backend
+		keyring_map = {
+				keyring.backend.GnomeKeyring : _("GNOME Keyring"),
+				keyring.backend.KDEKWallet : _("KWallet"),
+				keyring.backend.UncryptedFileKeyring: _("Unencrypted File"),
+			}
+		kr = keyring.get_keyring()
+		keyring_name = keyring_map.get(type(kr), type(kr).__name__)
+		return keyring_name
+
 	def load(self, plugin_id, key, username):
 		self.password = keyring.get_password(plugin_id, username)
 		self.username = username
diff --git a/kupfer/ui/credentials_dialog.py b/kupfer/ui/credentials_dialog.py
index 8cc3584..791cd03 100644
--- a/kupfer/ui/credentials_dialog.py
+++ b/kupfer/ui/credentials_dialog.py
@@ -3,7 +3,7 @@ import gtk
 from kupfer import version, config, kupferstring
 
 class CredentialsDialogController():
-	def __init__(self, username, password):
+	def __init__(self, username, password, infotext=None):
 		"""Load ui from data file"""
 		builder = gtk.Builder()
 		builder.set_translation_domain(version.PACKAGE_NAME)
@@ -14,6 +14,11 @@ class CredentialsDialogController():
 		self.window = builder.get_object("credentials_dialog")
 		self.entry_user = builder.get_object('entry_username')
 		self.entry_pass = builder.get_object('entry_password')
+		if infotext:
+			hbox_information = builder.get_object('hbox_information')
+			label_information = builder.get_object('label_information')
+			hbox_information.show()
+			label_information.set_text(infotext)
 
 		self.entry_user.set_text(username or '')
 		self.entry_pass.set_text(password or '')
@@ -38,14 +43,14 @@ class CredentialsDialogController():
 		return kupferstring.tounicode(self.entry_pass.get_text())
 
 
-def ask_user_credentials(user=None, password=None):
+def ask_user_credentials(user=None, password=None, infotext=None):
 	''' Ask user for username and password.
 	
 	@user, @password - initial values
 	@return:
 	(user, password) when user press "change"
 	None when user press "cancel" button '''
-	dialog = CredentialsDialogController(user, password)
+	dialog = CredentialsDialogController(user, password, infotext)
 	result = None
 	if dialog.show() == gtk.RESPONSE_ACCEPT:
 		result = dialog.username, dialog.password
diff --git a/kupfer/ui/preferences.py b/kupfer/ui/preferences.py
index c4ea3df..d5ce897 100644
--- a/kupfer/ui/preferences.py
+++ b/kupfer/ui/preferences.py
@@ -570,9 +570,14 @@ class PreferencesWindowController (pretty.OutputMixin):
 		def callback(widget):
 			setctl = settings.GetSettingsController()
 			val_type = plugin_support.UserNamePassword
+			backend_name = plugin_support.UserNamePassword.get_backend_name()
+			if plugin_support.UserNamePassword.is_backend_encrypted():
+				information = _("Using encrypted password storage: %s") % backend_name
+			else:
+				information = _("Using password storage: %s") % backend_name
 			upass = setctl.get_plugin_config(plugin_id, key, val_type) \
 					or plugin_support.UserNamePassword()
-			user_password = ask_user_credentials(upass.username, upass.password)
+			user_password = ask_user_credentials(upass.username, upass.password, information)
 			if user_password:
 				upass.username, upass.password = user_password
 				setctl.set_plugin_config(plugin_id, key, upass, val_type)



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