[whiteboard] Adapt to Gajim changes

This commit is contained in:
wurstsalat
2021-10-25 22:06:09 +02:00
parent ec48dfb315
commit 3ac35b359c

View File

@@ -31,7 +31,6 @@ from gi.repository import GLib
from nbxmpp import Message from nbxmpp import Message
from gajim import common from gajim import common
from gajim import chat_control
from gajim.common import app from gajim.common import app
from gajim.common import ged from gajim.common import ged
@@ -110,7 +109,7 @@ class WhiteboardPlugin(GajimPlugin):
if base.chat_control == control: if base.chat_control == control:
self.controls.remove(base) self.controls.remove(base)
if isinstance(control, chat_control.ChatControl): if control.is_chat:
base = Base(self, control) base = Base(self, control)
self.controls.append(base) self.controls.append(base)
self.update_button_state(control) self.update_button_state(control)
@@ -142,13 +141,13 @@ class WhiteboardPlugin(GajimPlugin):
for content in content_types: for content in content_types:
session.approve_content('xhtml') session.approve_content('xhtml')
for _jid in (fjid, jid): for _jid in (fjid, jid):
ctrl = app.interface.msg_win_mgr.get_control(_jid, account) ctrl = app.window.get_control(account, _jid)
if ctrl: if ctrl:
break break
if not ctrl: if not ctrl:
# Create it # Create it
app.interface.new_chat_from_jid(account, jid) app.interface.start_chat_from_jid(account, jid)
ctrl = app.interface.msg_win_mgr.get_control(jid, account) ctrl = app.window.get_control(account, jid)
session = session.contents[('initiator', 'xhtml')] session = session.contents[('initiator', 'xhtml')]
ctrl.draw_whiteboard(session) ctrl.draw_whiteboard(session)
@@ -157,24 +156,21 @@ class WhiteboardPlugin(GajimPlugin):
'Jingle').get_jingle_session(fjid, sid) 'Jingle').get_jingle_session(fjid, sid)
session.decline_session() session.decline_session()
contact = app.contacts.get_first_contact_from_jid(account, jid) client = app.get_client(account)
if contact: contact = client.get_module('Contacts').get_contact(jid)
name = contact.get_shown_name()
else:
name = jid
ConfirmationDialog( ConfirmationDialog(
_('Incoming Whiteboard'), _('Incoming Whiteboard'),
_('Incoming Whiteboard Request'), _('Incoming Whiteboard Request'),
_('%(name)s (%(jid)s) wants to start a whiteboard with ' _('%(name)s (%(jid)s) wants to start a whiteboard with '
'you.') % {'name': name, 'jid': jid}, 'you.') % {'name': contact.name, 'jid': jid},
[DialogButton.make('Cancel', [DialogButton.make('Cancel',
text=_('_Decline'), text=_('_Decline'),
callback=_on_decline), callback=_on_decline),
DialogButton.make('OK', DialogButton.make('OK',
text=_('_Accept'), text=_('_Accept'),
callback=_on_accept)], callback=_on_accept)],
transient_for=app.app.get_active_window()).show() transient_for=app.window).show()
@log_calls('WhiteboardPlugin') @log_calls('WhiteboardPlugin')
def _nec_jingle_received(self, obj): def _nec_jingle_received(self, obj):
@@ -195,8 +191,7 @@ class WhiteboardPlugin(GajimPlugin):
if not HAS_GOOCANVAS: if not HAS_GOOCANVAS:
return return
account = obj.conn.name account = obj.conn.name
ctrl = (app.interface.msg_win_mgr.get_control(obj.fjid, account) or ctrl = app.window.get_control(account, obj.jid)
app.interface.msg_win_mgr.get_control(obj.jid, account))
if not ctrl: if not ctrl:
return return
session = app.connections[obj.conn.name].get_module( session = app.connections[obj.conn.name].get_module(
@@ -229,8 +224,7 @@ class WhiteboardPlugin(GajimPlugin):
'arrived. It has been ignored.'))) 'arrived. It has been ignored.')))
jid = app.get_jid_without_resource(fjid) jid = app.get_jid_without_resource(fjid)
ctrl = (app.interface.msg_win_mgr.get_control(fjid, account) or ctrl = app.window.get_control(account, jid)
app.interface.msg_win_mgr.get_control(jid, account))
if not ctrl: if not ctrl:
return return
sxe = obj.stanza.getTag('sxe') sxe = obj.stanza.getTag('sxe')
@@ -284,7 +278,9 @@ class Base(object):
self.chat_control.draw_whiteboard = self.draw_whiteboard self.chat_control.draw_whiteboard = self.draw_whiteboard
self.contact = self.chat_control.contact self.contact = self.chat_control.contact
self.account = self.chat_control.account self.account = self.chat_control.account
self.jid = self.contact.get_full_jid()
self.jid = self.contact.jid
self.add_action() self.add_action()
self.whiteboard = None self.whiteboard = None
self.sid = None self.sid = None
@@ -294,15 +290,14 @@ class Base(object):
act = Gio.SimpleAction.new_stateful( act = Gio.SimpleAction.new_stateful(
action_name, None, GLib.Variant.new_boolean(False)) action_name, None, GLib.Variant.new_boolean(False))
act.connect('change-state', self.on_whiteboard_button_toggled) act.connect('change-state', self.on_whiteboard_button_toggled)
self.chat_control.parent_win.window.add_action(act) app.window.add_action(act)
self.chat_control.control_menu.append( self.chat_control.control_menu.append(
'WhiteBoard', 'win.' + action_name) 'WhiteBoard', 'win.' + action_name)
def enable_action(self, state): def enable_action(self, state):
win = self.chat_control.parent_win.window
action_name = 'toggle-whiteboard-' + self.chat_control.control_id action_name = 'toggle-whiteboard-' + self.chat_control.control_id
win.lookup_action(action_name).set_enabled(state) app.window.lookup_action(action_name).set_enabled(state)
def draw_whiteboard(self, content): def draw_whiteboard(self, content):
hbox = self.chat_control.xml.get_object('chat_control_hbox') hbox = self.chat_control.xml.get_object('chat_control_hbox')
@@ -349,7 +344,7 @@ class Base(object):
self.enable_action(False) self.enable_action(False)
if reason: if reason:
txt = _('Whiteboard stopped: %(reason)s') % {'reason': reason} txt = _('Whiteboard stopped: %(reason)s') % {'reason': reason}
self.chat_control.add_status_message(txt) self.chat_control.add_info_message(txt)
if not self.whiteboard: if not self.whiteboard:
return return
hbox = self.chat_control.xml.get_object('chat_control_hbox') hbox = self.chat_control.xml.get_object('chat_control_hbox')