From d35791d136c57575b4db58b381c8b75d20392de8 Mon Sep 17 00:00:00 2001 From: Nikos Kouremenos Date: Fri, 22 Jul 2005 22:49:03 +0000 Subject: [PATCH] ChooseGPGKeyDialog no longer creates another loop --- src/config.py | 7 ++++--- src/dialogs.py | 45 ++++++++++++++++++++++---------------------- src/gtkgui.glade | 3 ++- src/roster_window.py | 8 ++++---- 4 files changed, 33 insertions(+), 30 deletions(-) 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: