Switch [WIP]
This commit is contained in:
parent
d93a1a05cf
commit
f011f1c5ab
21
plugin-manifest.json
Normal file
21
plugin-manifest.json
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"authors": [
|
||||||
|
"Pavel R <pd@narayana.im>",
|
||||||
|
"Bohdan Horbeshko <bodqhrohro@gmail.com>"
|
||||||
|
],
|
||||||
|
"config_dialog": false,
|
||||||
|
"description": "Off-the-Record encryption",
|
||||||
|
"homepage": "https://dev.narayana.im/gajim-otrplugin",
|
||||||
|
"name": "otrplugin",
|
||||||
|
"platforms": [
|
||||||
|
"others",
|
||||||
|
"linux",
|
||||||
|
"darwin",
|
||||||
|
"win32"
|
||||||
|
],
|
||||||
|
"requirements": [
|
||||||
|
"gajim>=1.5,<1.6"
|
||||||
|
],
|
||||||
|
"short_name": "otrplugin",
|
||||||
|
"version": "0.4"
|
||||||
|
}
|
29
plugin.py
29
plugin.py
|
@ -22,6 +22,8 @@ ERROR = None
|
||||||
import logging
|
import logging
|
||||||
from gajim.plugins import GajimPlugin
|
from gajim.plugins import GajimPlugin
|
||||||
from gajim.common import app
|
from gajim.common import app
|
||||||
|
from gajim.common.modules.contacts import BareContact
|
||||||
|
from gi.repository import Gtk
|
||||||
|
|
||||||
log = logging.getLogger('gajim.p.otr')
|
log = logging.getLogger('gajim.p.otr')
|
||||||
|
|
||||||
|
@ -52,6 +54,8 @@ class OTRPlugin(GajimPlugin):
|
||||||
self.modules = [module]
|
self.modules = [module]
|
||||||
self.gui_extension_points = {
|
self.gui_extension_points = {
|
||||||
'encrypt' + self.encryption_name: (self._encrypt_message, None),
|
'encrypt' + self.encryption_name: (self._encrypt_message, None),
|
||||||
|
'message_actions_box': (self._actions_hack_activate, self._actions_hack_deactivate),
|
||||||
|
'switch_contact': (self._switch_contact, None),
|
||||||
}
|
}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -68,8 +72,33 @@ class OTRPlugin(GajimPlugin):
|
||||||
def encrypt_file(file, account, callback):
|
def encrypt_file(file, account, callback):
|
||||||
callback(file)
|
callback(file)
|
||||||
|
|
||||||
|
def toggle_otr(self):
|
||||||
|
pass
|
||||||
|
|
||||||
# encrypt message #
|
# encrypt message #
|
||||||
def _encrypt_message(self,con,event,callback):
|
def _encrypt_message(self,con,event,callback):
|
||||||
if not event.message or event.type_ != 'chat': return # drop empty and non-chat messages
|
if not event.message or event.type_ != 'chat': return # drop empty and non-chat messages
|
||||||
otr = self.get_otr(event.account)
|
otr = self.get_otr(event.account)
|
||||||
otr.otr.encrypt(event,callback)
|
otr.otr.encrypt(event,callback)
|
||||||
|
|
||||||
|
def _actions_hack_activate(self, grid, box):
|
||||||
|
self.switch_box = Gtk.VBox()
|
||||||
|
label = Gtk.Label(label='OTR')
|
||||||
|
self.switch = Gtk.Switch()
|
||||||
|
self.switch_box.pack_start(label, False, True, 0)
|
||||||
|
self.switch_box.pack_start(self.switch, True, True, 0)
|
||||||
|
box.pack_start(self.switch_box, False, True, 0)
|
||||||
|
self.switch.connect('activate', self.toggle_otr)
|
||||||
|
self._update_switch_visibility(app.window.get_chat_stack()._get_current_contact())
|
||||||
|
|
||||||
|
def _actions_hack_deactivate(self, grid, box):
|
||||||
|
box.remove(self.switch_box)
|
||||||
|
|
||||||
|
def _update_switch_visibility(self, contact):
|
||||||
|
if isinstance(contact, BareContact):
|
||||||
|
self.switch_box.show_all()
|
||||||
|
else:
|
||||||
|
self.switch_box.hide()
|
||||||
|
|
||||||
|
def _switch_contact(self, contact):
|
||||||
|
self._update_switch_visibility(contact)
|
||||||
|
|
Loading…
Reference in a new issue