changeset e3922009f433 in /home/hg/repos/gajim-plugins
author: lovetox <forenjunkie(a)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()