diff --git a/src/config.py b/src/config.py
index 30ec6b62c..8e46aae35 100644
--- a/src/config.py
+++ b/src/config.py
@@ -1329,9 +1329,10 @@ _('Without a connection, you can not edit your personal information.')
_('There was a problem retrieving your GPG secret keys.')).get_response()
return
secret_keys['None'] = 'None'
- w = dialogs.ChooseGPGKeyDialog(_('Passphrase'), _('Choose your OpenPGP key'), secret_keys)
- keyID = w.run()
- if keyID == -1:
+ instance = dialogs.ChooseGPGKeyDialog(_('Passphrase'),
+ _('Choose your OpenPGP key'), secret_keys)
+ keyID = instance.keyID
+ if keyID is None:
return
checkbutton = self.xml.get_widget('gpg_save_password_checkbutton')
gpg_key_label = self.xml.get_widget('gpg_key_label')
diff --git a/src/dialogs.py b/src/dialogs.py
index c11ccd7de..f039f2cfe 100644
--- a/src/dialogs.py
+++ b/src/dialogs.py
@@ -149,38 +149,20 @@ class PassphraseDialog:
self.passphrase = -1
self.window.set_title(titletext)
self.xml.get_widget('message_label').set_text(labeltext)
- self.xml.get_widget('save_passphrase_checkbutton').set_label(checkbuttontext)
+ self.xml.get_widget('save_passphrase_checkbutton').set_label(
+ checkbuttontext)
self.xml.signal_autoconnect(self)
self.window.show_all()
class ChooseGPGKeyDialog:
'''Class for GPG key dialog'''
- def run(self):
- '''Wait for Ok button to be pressed and return the selected key'''
- rep = self.window.run()
- if rep == gtk.RESPONSE_OK:
- selection = self.keys_treeview.get_selection()
- (model, iter) = selection.get_selected()
- keyID = [model.get_value(iter, 0), model.get_value(iter, 1)]
- else:
- keyID = -1
- self.window.destroy()
- return keyID
-
- def fill_tree(self, list, selected):
- model = self.keys_treeview.get_model()
- for keyID in list.keys():
- iter = model.append((keyID, list[keyID]))
- if keyID == selected:
- path = model.get_path(iter)
- self.keys_treeview.set_cursor(path)
-
def __init__(self, title_text, prompt_text, secret_keys, selected = None):
#list : {keyID: userName, ...}
xml = gtk.glade.XML(GTKGUI_GLADE, 'choose_gpg_key_dialog', APP)
self.window = xml.get_widget('choose_gpg_key_dialog')
self.window.set_title(title_text)
self.keys_treeview = xml.get_widget('keys_treeview')
+ self.keyID = None
prompt_label = xml.get_widget('prompt_label')
prompt_label.set_text(prompt_text)
model = gtk.ListStore(str, str)
@@ -193,9 +175,28 @@ class ChooseGPGKeyDialog:
self.keys_treeview.insert_column_with_attributes(-1, _('Contact name'),
renderer, text = 1)
self.fill_tree(secret_keys, selected)
-
+
+ xml.signal_autoconnect(self)
self.window.show_all()
+ def on_choose_gpg_key_dialog_response(self, widget, response_id):
+ '''If OK button was pressed return the selected key'''
+ if response_id == gtk.RESPONSE_OK:
+ selection = self.keys_treeview.get_selection()
+ (model, iter) = selection.get_selected()
+ self.keyID = [ model[iter][0], model[iter][1] ]
+
+ self.window.destroy()
+
+ def fill_tree(self, list, selected):
+ model = self.keys_treeview.get_model()
+ for keyID in list.keys():
+ iter = model.append((keyID, list[keyID]))
+ if keyID == selected:
+ path = model.get_path(iter)
+ self.keys_treeview.set_cursor(path)
+
+
class ChangeStatusMessageDialog:
def __init__(self, plugin, show):
self.show = show
diff --git a/src/gtkgui.glade b/src/gtkgui.glade
index 2cefa01a7..4cccdf02d 100644
--- a/src/gtkgui.glade
+++ b/src/gtkgui.glade
@@ -9629,7 +9629,7 @@ Custom
GTK_WINDOW_TOPLEVEL
GTK_WIN_POS_NONE
- False
+ True
550
300
True
@@ -9641,6 +9641,7 @@ Custom
GDK_GRAVITY_NORTH_WEST
True
+
diff --git a/src/roster_window.py b/src/roster_window.py
index bbf4834f2..de307e762 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -724,10 +724,10 @@ class RosterWindow:
keyID = attached_keys[2*i+1]
public_keys = gajim.connections[account].ask_gpg_keys()
public_keys['None'] = 'None'
- w = dialogs.ChooseGPGKeyDialog(_('Assign OpenPGP Key'), _('Select a key to apply to the contact'),
- public_keys, keyID)
- keyID = w.run()
- if keyID == -1:
+ instance = dialogs.ChooseGPGKeyDialog(_('Assign OpenPGP Key'),
+ _('Select a key to apply to the contact'), public_keys, keyID)
+ keyID = instance.keyID
+ if keyID is None:
return
if keyID[0] == 'None':
if user.jid in keys: