[kupfer: 6/41] preferences: Present keyring backend information
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [kupfer: 6/41] preferences: Present keyring backend information
- Date: Tue, 26 Apr 2011 17:13:18 +0000 (UTC)
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]