changeset 48006b17fae1 in /home/hg/repos/gajim-plugins

author: Klemens Schölhorn <[email protected]>
branches: 
details:gajim-plugins?cmd=changeset;node=48006b17fae1
description: Refactor menu of the OmemoButton into its own OmemoMenu class

diffstat:

 omemo/ui.py |  85 +++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 47 insertions(+), 38 deletions(-)

diffs (134 lines):

diff -r 09e4a00f79ad -r 48006b17fae1 omemo/ui.py
--- a/omemo/ui.py       Sat Jul 16 17:28:52 2016 +0200
+++ b/omemo/ui.py       Sun Jul 17 16:49:48 2016 +0200
@@ -36,46 +36,19 @@
 
 
 class OmemoButton(gtk.Button):
-    def __init__(self, plugin, chat_control, ui, enabled):
+    def __init__(self, plugin, chat_control, menu):
         super(OmemoButton, self).__init__(label=None, stock=None)
-        self.plugin = plugin
-        self.ui = ui
-        self.enabled = enabled
-        self.contact = chat_control.contact
         self.chat_control = chat_control
+
         self.set_property('relief', gtk.RELIEF_NONE)
         self.set_property('can-focus', False)
         self.set_sensitive(True)
-        img = gtk.Image()
-        img.set_from_file(self.plugin.local_file_path('omemo16x16.png'))
-        self.set_image(img)
+
+        icon = 
gtk.image_new_from_file(plugin.local_file_path('omemo16x16.png'))
+        self.set_image(icon)
         self.set_tooltip_text('OMEMO Encryption')
 
-        self.menu = gtk.Menu()
-        item = gtk.CheckMenuItem('Activate OMEMO')
-        if self.enabled:
-            item.set_active(True)
-            self.chat_control.print_conversation_line(
-                u'OMEMO encryption enabled ', 'status', '', None)
-            self.ui.refreshAuthLockSymbol()
-        else:
-            item.set_active(False)
-            self.chat_control.print_conversation_line(
-                u'OMEMO encryption disabled', 'status', '', None)
-            self.ui.refreshAuthLockSymbol()
-        item.connect('activate', self.activate_omemo)
-        self.menu.append(item)
-
-        item = gtk.ImageMenuItem('Fingerprints')
-        icon = gtk.image_new_from_stock(gtk.STOCK_DIALOG_AUTHENTICATION,
-                                        gtk.ICON_SIZE_MENU)
-        item.set_image(icon)
-        item.connect('activate', self.open_fingerprint_window)
-        self.menu.append(item)
-
-        self.menu.show_all()
-
-        self.connect('clicked', self.on_click, self.menu)
+        self.connect('clicked', self.on_click, menu)
 
     def on_click(self, widget, menu):
         """
@@ -84,7 +57,39 @@
         gtkgui_helpers.popup_emoticons_under_button(
             menu, widget, self.chat_control.parent_win)
 
-    def activate_omemo(self, widget):
+
+class OmemoMenu(gtk.Menu):
+    def __init__(self, plugin, chat_control, ui, enabled):
+        super(OmemoMenu, self).__init__()
+        self.plugin = plugin
+        self.ui = ui
+        self.contact = chat_control.contact
+        self.chat_control = chat_control
+
+        self.item_omemo_state = gtk.CheckMenuItem('Activate OMEMO')
+        if enabled:
+            self.item_omemo_state.set_active(True)
+            self.chat_control.print_conversation_line(
+                u'OMEMO encryption enabled ', 'status', '', None)
+            self.ui.refreshAuthLockSymbol()
+        else:
+            self.item_omemo_state.set_active(False)
+            self.chat_control.print_conversation_line(
+                u'OMEMO encryption disabled', 'status', '', None)
+            self.ui.refreshAuthLockSymbol()
+        self.item_omemo_state.connect('activate', self.on_toggle_omemo)
+        self.append(self.item_omemo_state)
+
+        item = gtk.ImageMenuItem('Fingerprints')
+        icon = gtk.image_new_from_stock(gtk.STOCK_DIALOG_AUTHENTICATION,
+                                        gtk.ICON_SIZE_MENU)
+        item.set_image(icon)
+        item.connect('activate', self.on_open_fingerprint_window)
+        self.append(item)
+
+        self.show_all()
+
+    def on_toggle_omemo(self, widget):
         enabled = widget.get_active()
         if enabled:
             log.debug(self.contact.account.name + ' => Enable OMEMO for ' +
@@ -101,11 +106,14 @@
             self.chat_control.print_conversation_line(
                 u'OMEMO encryption disabled', 'status', '', None)
 
-    def open_fingerprint_window(self, widget):
+    def on_open_fingerprint_window(self, widget):
         dlg = FingerprintWindow(self.plugin, self.contact,
                                 self.chat_control.parent_win.window)
         dlg.show_all()
 
+    def set_omemo_state(self, state):
+        self.item_omemo_state.set_active(state)
+
 
 def _add_widget(widget, chat_control):
     actions_hbox = chat_control.xml.get_object('actions_hbox')
@@ -121,7 +129,9 @@
         self.contact = chat_control.contact
         self.chat_control = chat_control
         self.state = state
-        self.omemobutton = OmemoButton(plugin, chat_control, self, enabled)
+
+        self.menu = OmemoMenu(plugin, chat_control, self, enabled)
+        self.omemobutton = OmemoButton(plugin, chat_control, self.menu)
 
         _add_widget(self.omemobutton, self.chat_control)
 
@@ -129,8 +139,7 @@
         return self.state.encryption.is_active(self.contact.jid)
 
     def activate_omemo(self):
-        self.omemobutton.menu.set_active(0)
-        self.omemobutton.menu.get_active().set_active(True)
+        self.menu.set_omemo_state(True)
 
     def plain_warning(self):
         self.chat_control.print_conversation_line(
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to