changeset e3922009f433 in /home/hg/repos/gajim-plugins
author: lovetox forenjunkie@chello.at branches: details:gajim-plugins?cmd=changeset;node=e3922009f433 description: Refactoring UI
diffstat:
omemo/config_dialog.ui | 3 + omemo/fpr_dialog.ui | 25 ++-- omemo/ui.py | 256 ++++++++++++++++++------------------------------ 3 files changed, 112 insertions(+), 172 deletions(-)
diffs (truncated from 537 to 300 lines):
diff -r 0511dab4b3e0 -r e3922009f433 omemo/config_dialog.ui --- a/omemo/config_dialog.ui Sun Oct 09 02:22:08 2016 +0200 +++ b/omemo/config_dialog.ui Sun Oct 09 19:10:37 2016 +0200 @@ -206,6 +206,9 @@ <object class="GtkTreeViewColumn" id="name_column"> <property name="resizable">True</property> <property name="title">Name</property> + <property name="clickable">True</property> + <property name="sort_indicator">True</property> + <property name="sort_column_id">1</property> <child> <object class="GtkCellRendererText" id="cellrenderertext2"/> <attributes> diff -r 0511dab4b3e0 -r e3922009f433 omemo/fpr_dialog.ui --- a/omemo/fpr_dialog.ui Sun Oct 09 02:22:08 2016 +0200 +++ b/omemo/fpr_dialog.ui Sun Oct 09 19:10:37 2016 +0200 @@ -2,12 +2,6 @@ <interface> <requires lib="gtk+" version="2.16"/> <!-- interface-naming-policy toplevel-contextual --> - <object class="GtkListStore" id="account_store"> - <columns> - <!-- column-name accountname --> - <column type="gchararray"/> - </columns> - </object> <object class="GtkListStore" id="fingerprint_store"> <columns> <!-- column-name id --> @@ -43,7 +37,9 @@ <object class="GtkTreeView" id="fingerprint_view"> <property name="visible">True</property> <property name="can_focus">True</property> + <property name="has_tooltip">True</property> <property name="model">fingerprint_store</property> + <property name="headers_clickable">False</property> <property name="search_column">0</property> <property name="tooltip_column">3</property> <signal name="button-press-event" handler="fpr_button_pressed_cb" swapped="no"/> @@ -51,8 +47,11 @@ <object class="GtkTreeViewColumn" id="name_column"> <property name="resizable">True</property> <property name="title">Name</property> + <property name="clickable">True</property> + <property name="sort_indicator">True</property> + <property name="sort_column_id">1</property> <child> - <object class="GtkCellRendererText" id="cellrenderertext2"/> + <object class="GtkCellRendererText" id="NameCell"/> <attributes> <attribute name="text">1</attribute> </attributes> @@ -64,7 +63,7 @@ <property name="resizable">True</property> <property name="title">Trust</property> <child> - <object class="GtkCellRendererText" id="cellrenderertoggle1"/> + <object class="GtkCellRendererText" id="TrustCell"/> <attributes> <attribute name="text">2</attribute> </attributes> @@ -76,7 +75,7 @@ <property name="resizable">True</property> <property name="title">Fingerprint</property> <child> - <object class="GtkCellRendererText" id="cellrenderertext4"/> + <object class="GtkCellRendererText" id="FingerprintCell"/> <attributes> <attribute name="markup">3</attribute> </attributes> @@ -200,7 +199,7 @@ <property name="resizable">True</property> <property name="title">Name</property> <child> - <object class="GtkCellRendererText" id="cellrenderertext1"/> + <object class="GtkCellRendererText" id="NameCell1"/> <attributes> <attribute name="text">1</attribute> </attributes> @@ -212,7 +211,7 @@ <property name="resizable">True</property> <property name="title">Trust</property> <child> - <object class="GtkCellRendererText" id="cellrenderertoggle2"/> + <object class="GtkCellRendererText" id="TrustCell2"/> <attributes> <attribute name="text">2</attribute> </attributes> @@ -224,7 +223,7 @@ <property name="resizable">True</property> <property name="title">Fingerprint</property> <child> - <object class="GtkCellRendererText" id="cellrenderertext3"/> + <object class="GtkCellRendererText" id="FingerprintCell1"/> <attributes> <attribute name="markup">3</attribute> </attributes> @@ -291,8 +290,6 @@ <object class="GtkMenuItem" id="copyfprclipboard_item"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes" comments="Context menu item">Copy to clipboard</property> - <property name="use_underline">True</property> <signal name="activate" handler="clipboard_button_cb" swapped="no"/> </object> </child> diff -r 0511dab4b3e0 -r e3922009f433 omemo/ui.py --- a/omemo/ui.py Sun Oct 09 02:22:08 2016 +0200 +++ b/omemo/ui.py Sun Oct 09 19:10:37 2016 +0200 @@ -28,6 +28,7 @@ # pylint: disable=import-error import gtkgui_helpers from common import gajim +from dialogs import YesNoDialog from plugins.gui import GajimPluginConfigDialog from axolotl.state.sessionrecord import SessionRecord # pylint: enable=import-error @@ -328,22 +329,13 @@ self.plugin.config['DISABLED_ACCOUNTS'] = [] self.disabled_accounts = self.plugin.config['DISABLED_ACCOUNTS']
+ log.debug('Disabled Accounts:') log.debug(self.disabled_accounts)
- self.fpr_model = gtk.ListStore(gobject.TYPE_INT, - gobject.TYPE_STRING, - gobject.TYPE_STRING, - gobject.TYPE_STRING, - gobject.TYPE_INT) - - self.device_model = gtk.ListStore(gobject.TYPE_STRING) + self.fpr_model = self.B.get_object('fingerprint_store') + self.device_model = self.B.get_object('deviceid_store')
self.fpr_view = self.B.get_object('fingerprint_view') - self.fpr_view.set_model(self.fpr_model) - self.fpr_view.get_selection().set_mode(gtk.SELECTION_MULTIPLE) - - self.device_view = self.B.get_object('deviceid_view') - self.device_view.set_model(self.device_model)
self.disabled_acc_store = self.B.get_object('disabled_account_store') self.account_store = self.B.get_object('account_store') @@ -358,7 +350,6 @@ self.plugin_active = False
def on_run(self): - log.debug('on_run') for plugin in gajim.plugin_manager.active_plugins: log.debug(type(plugin)) if type(plugin).__name__ == 'OmemoPlugin': @@ -380,17 +371,12 @@ return False
def update_account_store(self): - log.debug('update_account_store') - # get accounts - log.debug(self.disabled_accounts) for account in sorted(gajim.contacts.get_accounts()): if account not in self.disabled_accounts and \ not self.is_in_accountstore(account): - log.debug('append') self.account_store.append(row=(account,))
def update_account_combobox(self): - log.debug('update_account_combobox') if self.plugin_active is False: return if len(self.account_store) > 0: @@ -400,24 +386,20 @@ self.B.get_object('account_combobox'))
def account_combobox_changed_cb(self, box, *args): - log.debug('account_combobox_changed_cb') self.update_context_list()
def update_disabled_account_view(self): - log.debug('update_disabled_account_view') self.disabled_acc_store.clear() for account in self.disabled_accounts: self.disabled_acc_store.append(row=(account,))
def activate_accounts_btn_clicked(self, button, *args): - log.debug('activate_accounts_btn_clicked') mod, paths = self.disabled_acc_view.get_selection().get_selected_rows() for path in paths: it = mod.get_iter(path) account = mod.get(it, 0) if account[0] in self.disabled_accounts and \ not self.is_in_accountstore(account[0]): - log.debug('add/remove') self.account_store.append(row=(account[0],)) self.disabled_accounts.remove(account[0]) self.update_disabled_account_view() @@ -425,7 +407,6 @@ self.update_account_combobox()
def disable_accounts_btn_clicked(self, button, *args): - log.debug('disable_accounts_btn_clicked') mod, paths = self.active_acc_view.get_selection().get_selected_rows() for path in paths: it = mod.get_iter(path) @@ -446,37 +427,25 @@
mod, paths = self.fpr_view.get_selection().get_selected_rows()
+ def on_yes(checked): + record = state.store.loadSession(jid, deviceid) + identity_key = record.getSessionState().getRemoteIdentityKey() + + state.store.deleteSession(jid, deviceid) + state.store.deleteIdentity(jid, identity_key) + self.update_context_list() + for path in paths: it = mod.get_iter(path) jid, fpr, deviceid = mod.get(it, 1, 3, 4) fpr = fpr[31:-12]
- dlg = gtk.Dialog('Delete Fingerprint', self, - gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, - (gtk.STOCK_YES, gtk.RESPONSE_YES, - gtk.STOCK_NO, gtk.RESPONSE_NO)) - l = gtk.Label() - l.set_markup('Do you want to delete the ' - 'fingerprint of <b>%s</b> on your account <b>%s</b>?' - '\n\n<tt>%s</tt>' % (jid, account, fpr)) - l.set_line_wrap(True) - l.set_padding(12, 12) - dlg.vbox.pack_start(l) - dlg.show_all() - - response = dlg.run() - if response == gtk.RESPONSE_YES: - record = state.store.loadSession(jid, deviceid) - identity_key = record.getSessionState().getRemoteIdentityKey() - - state.store.deleteSession(jid, deviceid) - state.store.deleteIdentity(jid, identity_key) - - dlg.destroy() - else: - dlg.destroy() - - self.update_context_list() + YesNoDialog( + 'Delete Fingerprint?', + 'Do you want to delete the ' + 'fingerprint of <b>{}</b> on your account <b>{}</b>?' + '\n\n<tt>{}</tt>'.format(jid, account, fpr), + on_response_yes=on_yes, transient_for=self)
def trust_button_clicked_cb(self, button, *args): active = self.B.get_object('account_combobox').get_active() @@ -486,48 +455,42 @@
mod, paths = self.fpr_view.get_selection().get_selected_rows()
+ def on_yes(checked, identity_key): + state.store.setTrust(identity_key, TRUSTED) + try: + if self.plugin.ui_list[account]: + self.plugin.ui_list[account][jid]. \ + refresh_auth_lock_icon() + except: + log.debug('UI not available') + self.update_context_list() + + def on_no(identity_key): + state.store.setTrust(identity_key, UNTRUSTED) + try: + if jid in self.plugin.ui_list[account]: + self.plugin.ui_list[account][jid]. \ + refresh_auth_lock_icon() + except: + log.debug('UI not available') + self.update_context_list() + for path in paths: it = mod.get_iter(path) jid, fpr, deviceid = mod.get(it, 1, 3, 4) fpr = fpr[31:-12] - dlg = gtk.Dialog('Trust / Revoke Fingerprint', self, - gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, - (gtk.STOCK_YES, gtk.RESPONSE_YES, - gtk.STOCK_NO, gtk.RESPONSE_NO)) - l = gtk.Label() - l.set_markup('Do you want to trust the ' - 'fingerprint of <b>%s</b> on your account <b>%s</b>?' - '\n\n<tt>%s</tt>' % (jid, account, fpr)) - l.set_line_wrap(True) - l.set_padding(12, 12) - dlg.vbox.pack_start(l) - dlg.show_all() - - response = dlg.run()
record = state.store.loadSession(jid, deviceid) identity_key = record.getSessionState().getRemoteIdentityKey()