changeset 28de76277ee6 in /home/hg/repos/gajim-plugins
author: lovetox forenjunkie@chello.at branches: details:gajim-plugins?cmd=changeset;node=28de76277ee6 description: Remove UI after plugin is deactivated
additionally small refactoring of UI code
diffstat:
omemo/__init__.py | 8 +++++++- omemo/ui.py | 38 ++++++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 17 deletions(-)
diffs (118 lines):
diff -r e9e8d8451564 -r 28de76277ee6 omemo/__init__.py --- a/omemo/__init__.py Mon Jul 18 18:22:59 2016 +0200 +++ b/omemo/__init__.py Mon Jul 18 19:51:18 2016 +0200 @@ -80,7 +80,7 @@ (ged.PRECORE, self.handle_outgoing_event), } self.config_dialog = ui.OMEMOConfigDialog(self) - self.gui_extension_points = {'chat_control': (self.connect_ui, None)} + self.gui_extension_points = {'chat_control': (self.connect_ui, self.disconnect_ui)} SUPPORTED_PERSONAL_USER_EVENTS.append(DevicelistPEP) self.announced = []
@@ -350,6 +350,12 @@ else: log.warn(account_name + " => No devices for " + contact_jid)
+ @log_calls('OmemoPlugin') + def disconnect_ui(self, chat_control): + contact_jid = chat_control.contact.jid + account_name = chat_control.contact.account.name + self.ui_list[account_name][contact_jid].removeUi() + def are_keys_missing(self, account, contact_jid): """ Check DB if keys are missing and query them """ state = self.get_omemo_state(account) diff -r e9e8d8451564 -r 28de76277ee6 omemo/ui.py --- a/omemo/ui.py Mon Jul 18 18:22:59 2016 +0200 +++ b/omemo/ui.py Mon Jul 18 19:51:18 2016 +0200 @@ -20,7 +20,6 @@
import logging
-import os import gtk from common import gajim from plugins.gui import GajimPluginConfigDialog @@ -44,7 +43,8 @@ self.set_property('can-focus', False) self.set_sensitive(True)
- icon = gtk.image_new_from_file(plugin.local_file_path('omemo16x16.png')) + icon = gtk.image_new_from_file( + plugin.local_file_path('omemo16x16.png')) self.set_image(icon) self.set_tooltip_text('OMEMO Encryption')
@@ -94,15 +94,6 @@ self.item_omemo_state.handler_unblock_by_func(self.on_toggle_omemo)
-def _add_widget(widget, chat_control): - actions_hbox = chat_control.xml.get_object('actions_hbox') - send_button = chat_control.xml.get_object('send_button') - send_button_pos = actions_hbox.child_get_property(send_button, 'position') - actions_hbox.add_with_properties(widget, 'position', send_button_pos - 2, - 'expand', False) - widget.show_all() - - class Ui(object): def __init__(self, plugin, chat_control, enabled, state): self.contact = chat_control.contact @@ -115,12 +106,22 @@
self.omemobutton = OmemoButton(plugin, chat_control, self, enabled)
- _add_widget(self.omemobutton, self.chat_control) + self.actions_hbox = chat_control.xml.get_object('actions_hbox') + send_button = chat_control.xml.get_object('send_button') + send_button_pos = self.actions_hbox.child_get_property(send_button, + 'position') + self.actions_hbox.add_with_properties(self.omemobutton, 'position', + send_button_pos - 2, + 'expand', False) + self.omemobutton.show_all()
# add a OMEMO entry to the context/advanced menu - chat_control.omemo_orig_prepare_context_menu = chat_control.prepare_context_menu + self.chat_control.omemo_orig_prepare_context_menu = \ + self.chat_control.prepare_context_menu + def omemo_prepare_context_menu(hide_buttonbar_items=False): - menu = chat_control.omemo_orig_prepare_context_menu(hide_buttonbar_items) + menu = self.chat_control. \ + omemo_orig_prepare_context_menu(hide_buttonbar_items) submenu = OmemoMenu(self, self.encryption_active())
item = gtk.ImageMenuItem('OMEMO Encryption') @@ -131,7 +132,7 @@ # at index 8 is the separator after the esession encryption entry menu.insert(item, 8) return menu - chat_control.prepare_context_menu = omemo_prepare_context_menu + self.chat_control.prepare_context_menu = omemo_prepare_context_menu
def set_omemo_state(self, enabled): """ @@ -142,7 +143,7 @@ log.debug(self.contact.account.name + ' => Enable OMEMO for ' + self.contact.jid) self.plugin.omemo_enable_for(self.contact) - self.WarnIfUndecidedFingerprints() # calls refreshAuthLockSymbol() + self.WarnIfUndecidedFingerprints() # calls refreshAuthLockSymbol() else: log.debug(self.contact.account.name + ' => Disable OMEMO for ' + self.contact.jid) @@ -197,6 +198,11 @@ self.chat_control._show_lock_image(False, 'OMEMO', False, True, False)
+ def removeUi(self): + self.actions_hbox.remove(self.omemobutton) + self.chat_control.prepare_context_menu = \ + self.chat_control.omemo_orig_prepare_context_menu +
class OMEMOConfigDialog(GajimPluginConfigDialog): def init(self):