Philipp Hörist pushed to branch mainwindow at gajim / gajim
Commits: 9367879d by lovetox at 2021-02-04T23:09:09+01:00 Move event handling to main
- - - - -
9 changed files:
- gajim/chat_control.py - gajim/chat_control_base.py - gajim/common/modules/message.py - gajim/groupchat_control.py - gajim/gtk/chat_list.py - gajim/gtk/chat_list_stack.py - gajim/gtk/chat_stack.py - gajim/gtk/main.py - gajim/privatechat_control.py
Changes:
===================================== gajim/chat_control.py ===================================== @@ -41,13 +41,11 @@
from gajim.common import app from gajim.common import helpers -from gajim.common import ged from gajim.common import i18n from gajim.common.i18n import _ from gajim.common.helpers import AdditionalDataDict from gajim.common.helpers import open_uri from gajim.common.helpers import geo_provider_from_location -from gajim.common.helpers import event_filter from gajim.common.helpers import open_file from gajim.common.contacts import GC_Contact from gajim.common.const import AvatarSize @@ -215,30 +213,6 @@ def __init__(self, parent_win, contact, acct, session, resource=None): self.restore_conversation() self.msg_textview.grab_focus()
- # pylint: disable=line-too-long - self.register_events([ - ('nickname-received', ged.GUI1, self._on_nickname_received), - ('mood-received', ged.GUI1, self._on_mood_received), - ('activity-received', ged.GUI1, self._on_activity_received), - ('tune-received', ged.GUI1, self._on_tune_received), - ('location-received', ged.GUI1, self._on_location_received), - ('update-client-info', ged.GUI1, self._on_update_client_info), - ('chatstate-received', ged.GUI1, self._on_chatstate_received), - ('caps-update', ged.GUI1, self._on_caps_update), - ('message-sent', ged.OUT_POSTCORE, self._on_message_sent), - ('mam-decrypted-message-received', ged.GUI1, self._on_mam_decrypted_message_received), - # ('decrypted-message-received', ged.GUI1, self._on_decrypted_message_received), - ('receipt-received', ged.GUI1, self._receipt_received), - ('displayed-received', ged.GUI1, self._displayed_received), - ('message-error', ged.GUI1, self._on_message_error), - ('zeroconf-error', ged.GUI1, self._on_zeroconf_error), - ]) - - if self._type.is_chat: - # Don’t connect this when PrivateChatControl is used - self.register_event('update-roster-avatar', ged.GUI1, self._on_update_roster_avatar) - # pylint: enable=line-too-long - # PluginSystem: adding GUI extension point for this ChatControl # instance object app.plugin_manager.gui_extension_point('chat_control', self) @@ -524,29 +498,23 @@ def _get_pep_widget(self, type_): return self.xml.location_image return None
- @event_filter(['account', 'jid']) def _on_mood_received(self, _event): self._update_pep(PEPEventType.MOOD)
- @event_filter(['account', 'jid']) def _on_activity_received(self, _event): self._update_pep(PEPEventType.ACTIVITY)
- @event_filter(['account', 'jid']) def _on_tune_received(self, _event): self._update_pep(PEPEventType.TUNE)
- @event_filter(['account', 'jid']) def _on_location_received(self, _event): self._update_pep(PEPEventType.LOCATION)
- @event_filter(['account', 'jid']) def _on_nickname_received(self, _event): self.update_ui() self.parent_win.redraw_tab(self) self.parent_win.show_title()
- @event_filter(['account', 'jid']) def _on_update_client_info(self, event): contact = app.contacts.get_contact( self.account, event.jid, event.resource) @@ -554,7 +522,6 @@ def _on_update_client_info(self, event): return self.xml.phone_image.set_visible(contact.uses_phone)
- @event_filter(['account']) def _on_chatstate_received(self, event): if self._type.is_privatechat: if event.contact != self.gc_contact: @@ -573,7 +540,6 @@ def _on_chatstate_received(self, event): self.account, self.contact.jid) self.parent_win.redraw_tab(self, chatstate)
- @event_filter(['account']) def _on_caps_update(self, event): if self._type.is_chat and event.jid != self.contact.jid: return @@ -581,11 +547,7 @@ def _on_caps_update(self, event): return self.update_ui()
- @event_filter(['account']) - def _on_mam_decrypted_message_received(self, event): - if event.properties.type.is_groupchat: - return - + def _on_mam_message_received(self, event): if event.properties.is_muc_pm: if not event.properties.jid == self.contact.get_full_jid(): return @@ -604,11 +566,24 @@ def _on_mam_decrypted_message_received(self, event): message_id=event.properties.id, additional_data=event.additional_data)
- @event_filter(['account', 'jid']) + def _on_message_received(self, event): + typ = '' + if event.properties.is_sent_carbon: + typ = 'out' + + self.add_message(event.msgtxt, + typ, + tim=event.properties.timestamp, + subject=event.properties.subject, + displaymarking=event.displaymarking, + msg_log_id=event.msg_log_id, + message_id=event.properties.id, + correct_id=event.correct_id, + additional_data=event.additional_data) + def _on_message_error(self, event): self.conv_textview.show_error(event.message_id, event.error)
- @event_filter(['account', 'jid']) def _on_message_sent(self, event): if not event.message: return @@ -633,23 +608,18 @@ def _on_message_sent(self, event): correct_id=event.correct_id, additional_data=event.additional_data)
- @event_filter(['account', 'jid']) def _receipt_received(self, event): self.conv_textview.show_receipt(event.receipt_id)
- @event_filter(['account', 'jid']) def _displayed_received(self, event): self.conv_textview.show_displayed(event.marker_id)
- @event_filter(['account', 'jid']) def _on_zeroconf_error(self, event): self.add_status_message(event.message)
- @event_filter(['account', 'jid']) def _on_update_roster_avatar(self, obj): self._update_avatar()
- @event_filter(['account']) def _nec_ping(self, event): if self.contact != event.contact: return
===================================== gajim/chat_control_base.py ===================================== @@ -255,7 +255,7 @@ def __init__(self, parent_win, widget_name, contact, acct,
# pylint: disable=line-too-long self.register_events([ - ('our-show', ged.GUI1, self._nec_our_status), + ('our-show', ged.GUI1, self._on_our_show), ('ping-sent', ged.GUI1, self._nec_ping), ('ping-reply', ged.GUI1, self._nec_ping), ('ping-error', ged.GUI1, self._nec_ping), @@ -268,6 +268,11 @@ def __init__(self, parent_win, widget_name, contact, acct, # to properly use the super, because of the old code. CommandTools.__init__(self)
+ def process_event(self, event): + method_name = event.name.replace('-', '_') + method_name = f'_on_{method_name}' + getattr(self, method_name)(event) + def _on_conv_textview_key_press_event(self, textview, event): if event.get_state() & Gdk.ModifierType.SHIFT_MASK: if event.keyval in (Gdk.KEY_Page_Down, Gdk.KEY_Page_Up): @@ -443,8 +448,7 @@ def remove_session(self, session): self.session.control = None self.session = None
- @event_filter(['account']) - def _nec_our_status(self, event): + def _on_our_show(self, event): if event.show == 'connecting': return
@@ -452,8 +456,6 @@ def _nec_our_status(self, event): self.got_disconnected() else: self.got_connected() - if self.parent_win: - self.parent_win.redraw_tab(self)
def _nec_ping(self, obj): raise NotImplementedError
===================================== gajim/common/modules/message.py ===================================== @@ -212,6 +212,24 @@ def _message_received(self, _con, stanza, properties): app.nec.push_incoming_event( NetworkEvent('message-received', **event_attr))
+ log_type = KindConstant.CHAT_MSG_RECV + if properties.is_sent_carbon: + log_type = KindConstant.CHAT_MSG_SENT + + if not should_log(self._account, jid) or not msgtxt: + return + + app.storage.archive.insert_into_logs( + self._account, + fjid if properties.is_muc_pm else jid, + properties.timestamp, + log_type, + message=msgtxt, + subject=properties.subject, + additional_data=additional_data, + stanza_id=stanza_id or message_id, + message_id=properties.id) + def _message_error_received(self, _con, _stanza, properties): jid = properties.jid if not properties.is_muc_pm:
===================================== gajim/groupchat_control.py ===================================== @@ -55,7 +55,6 @@ from gajim.common.const import AvatarSize
from gajim.common.i18n import _ -from gajim.common.const import Chatstate from gajim.common.const import MUCJoinedState from gajim.common.structs import OutgoingMessage
@@ -193,43 +192,12 @@ def __init__(self, parent_win, contact, muc_data, acct):
self.xml.settings_menu.set_menu_model(self.control_menu)
- # pylint: disable=line-too-long - self.register_events([ - ('muc-creation-failed', ged.GUI1, self._on_muc_creation_failed), - ('muc-joined', ged.GUI1, self._on_muc_joined), - ('muc-join-failed', ged.GUI1, self._on_muc_join_failed), - ('muc-user-joined', ged.GUI1, self._on_user_joined), - ('muc-user-left', ged.GUI1, self._on_user_left), - ('muc-nickname-changed', ged.GUI1, self._on_nickname_changed), - ('muc-self-presence', ged.GUI1, self._on_self_presence), - ('muc-self-kicked', ged.GUI1, self._on_self_kicked), - ('muc-user-affiliation-changed', ged.GUI1, self._on_affiliation_changed), - ('muc-user-status-show-changed', ged.GUI1, self._on_status_show_changed), - ('muc-user-role-changed', ged.GUI1, self._on_role_changed), - ('muc-destroyed', ged.GUI1, self._on_destroyed), - ('muc-presence-error', ged.GUI1, self._on_presence_error), - ('muc-password-required', ged.GUI1, self._on_password_required), - ('muc-config-changed', ged.GUI1, self._on_config_changed), - ('muc-subject', ged.GUI1, self._on_subject), - ('muc-captcha-challenge', ged.GUI1, self._on_captcha_challenge), - ('muc-captcha-error', ged.GUI1, self._on_captcha_error), - ('muc-voice-request', ged.GUI1, self._on_voice_request), - ('muc-disco-update', ged.GUI1, self._on_disco_update), - ('muc-configuration-finished', ged.GUI1, self._on_configuration_finished), - ('muc-configuration-failed', ged.GUI1, self._on_configuration_failed), - ('gc-message-received', ged.GUI1, self._on_gc_message_received), - ('mam-decrypted-message-received', ged.GUI1, self._on_mam_decrypted_message_received), - ('update-room-avatar', ged.GUI1, self._on_update_room_avatar), - ('decrypted-message-received', ged.GUI2, self._on_decrypted_message_received), - ('message-sent', ged.OUT_POSTCORE, self._on_message_sent), - ('message-error', ged.GUI1, self._on_message_error), - ('bookmarks-received', ged.GUI2, self._on_bookmarks_received), - ]) - app.settings.connect_signal('gc_print_join_left_default', self.update_actions) app.settings.connect_signal('gc_print_status_default', self.update_actions)
- # pylint: enable=line-too-long + self.register_events([ + ('bookmarks-received', ged.GUI1, self._on_bookmarks_received), + ])
self.is_connected = False # disable win, we are not connected yet @@ -491,8 +459,7 @@ def _show_page(self, name): def _get_current_page(self): return self.xml.stack.get_visible_child_name()
- @event_filter(['account', 'room_jid']) - def _on_disco_update(self, _event): + def _on_muc_disco_update(self, _event): if self.parent_win is None: return self.update_actions() @@ -802,15 +769,10 @@ def draw_banner_text(self): def _on_update_room_avatar(self, event): self._update_avatar()
- @event_filter(['account']) def _on_bookmarks_received(self, _event): - if self.parent_win is None: - return - self.parent_win.redraw_tab(self) self.draw_banner_text()
- @event_filter(['account', 'room_jid']) - def _on_voice_request(self, event): + def _on_muc_voice_request(self, event): def on_approve(): con = app.connections[self.account] con.get_module('MUC').approve_voice_request(self.room_jid, @@ -826,8 +788,7 @@ def on_approve(): callback=on_approve)], modal=False).show()
- @event_filter(['account']) - def _on_mam_decrypted_message_received(self, event): + def _on_mam_message_received(self, event): if not event.properties.type.is_groupchat: return if event.archive_jid != self.room_jid: @@ -839,7 +800,6 @@ def _on_mam_decrypted_message_received(self, event): message_id=event.properties.id, additional_data=event.additional_data)
- @event_filter(['account', 'room_jid']) def _on_gc_message_received(self, event): if event.properties.muc_nickname is None: # message from server @@ -1036,8 +996,7 @@ def needs_visual_notification(self, text): found_here = text.find(special_word, start) return False
- @event_filter(['account', 'room_jid']) - def _on_subject(self, event): + def _on_muc_subject(self, event): if self.subject == event.subject or event.is_fake: # Probably a rejoin, we already showed that subject return @@ -1055,8 +1014,7 @@ def _on_subject(self, event): self._muc_data.state != MUCJoinedState.JOINING): self.add_info_message(text)
- @event_filter(['account', 'room_jid']) - def _on_config_changed(self, event): + def _on_muc_config_changed(self, event): # http://www.xmpp.org/extensions/xep-0045.html#roomconfig-notify changes = [] if StatusCode.SHOWING_UNAVAILABLE in event.status_codes: @@ -1094,8 +1052,7 @@ def _on_config_changed(self, event): for change in changes: self.add_info_message(change)
- @event_filter(['account']) - def _on_decrypted_message_received(self, event): + def _on_message_received(self, event): if not event.properties.jid.bare_match(self.room_jid): return
@@ -1113,16 +1070,12 @@ def _on_decrypted_message_received(self, event): msg_log_id=event.msg_log_id, displaymarking=event.displaymarking)
- @event_filter(['account']) - def _nec_our_status(self, event): + def _on_our_show(self, event): client = app.get_client(event.account) if (event.show == 'offline' and not client.state.is_reconnect_scheduled): self.got_disconnected()
- if self.parent_win: - self.parent_win.redraw_tab(self) - @event_filter(['account']) def _nec_ping(self, event): if not event.contact.is_groupchat: @@ -1163,8 +1116,7 @@ def send_pm(self, nick, message=None): if message is not None: ctrl.send_message(message)
- @event_filter(['account', 'room_jid']) - def _on_self_presence(self, event): + def _on_muc_self_presence(self, event): nick = event.properties.muc_nickname status_codes = event.properties.muc_status_codes or []
@@ -1189,20 +1141,17 @@ def _on_self_presence(self, event): # Update Actions self.update_actions()
- @event_filter(['account', 'room_jid']) - def _on_configuration_finished(self, _event): + def _on_muc_configuration_finished(self, _event): self.got_connected() self._show_page('groupchat') self.add_info_message(_('A new group chat has been created'))
- @event_filter(['account', 'room_jid']) - def _on_configuration_failed(self, event): + def _on_muc_configuration_failed(self, event): self.xml.error_heading.set_text(_('Failed to Configure Group Chat')) self.xml.error_label.set_text(to_user_string(event.error)) self._show_page('error')
- @event_filter(['account', 'room_jid']) - def _on_nickname_changed(self, event): + def _on_muc_nickname_changed(self, event): nick = event.properties.muc_nickname new_nick = event.properties.muc_user.nick if event.properties.is_muc_self_presence: @@ -1225,7 +1174,7 @@ def _on_nickname_changed(self, event): self.roster.add_contact(new_nick)
@event_filter(['account', 'room_jid']) - def _on_status_show_changed(self, event): + def _on_muc_user_status_show_changed(self, event): nick = event.properties.muc_nickname status = event.properties.status status = '' if status is None else ' - %s' % status @@ -1246,8 +1195,7 @@ def _on_status_show_changed(self, event): self.add_status_message(message) self.roster.draw_contact(nick)
- @event_filter(['account', 'room_jid']) - def _on_affiliation_changed(self, event): + def _on_muc_affiliation_changed(self, event): affiliation = helpers.get_uf_affiliation( event.properties.affiliation) nick = event.properties.muc_nickname @@ -1277,8 +1225,7 @@ def _on_affiliation_changed(self, event): self.roster.add_contact(nick) self.update_actions()
- @event_filter(['account', 'room_jid']) - def _on_role_changed(self, event): + def _on_muc_user_role_changed(self, event): role = helpers.get_uf_role(event.properties.role) nick = event.properties.muc_nickname reason = event.properties.muc_user.reason @@ -1305,8 +1252,7 @@ def _on_role_changed(self, event): self.roster.add_contact(nick) self.update_actions()
- @event_filter(['account', 'room_jid']) - def _on_self_kicked(self, event): + def _on_muc_self_kicked(self, event): status_codes = event.properties.muc_status_codes or []
reason = event.properties.muc_user.reason @@ -1363,8 +1309,7 @@ def _on_self_kicked(self, event): # Update Actions self.update_actions()
- @event_filter(['account', 'room_jid']) - def _on_user_left(self, event): + def _on_muc_user_left(self, event): status_codes = event.properties.muc_status_codes or [] nick = event.properties.muc_nickname
@@ -1422,24 +1367,20 @@ def _on_user_left(self, event): self.roster.remove_contact(nick) self.roster.draw_groups()
- @event_filter(['account', 'room_jid']) def _on_muc_joined(self, _event): self.got_connected() self._show_page('groupchat')
- @event_filter(['account', 'room_jid']) - def _on_user_joined(self, event): + def _on_muc_user_joined(self, event): nick = event.properties.muc_nickname self.roster.add_contact(nick)
if self.is_connected and self.contact.settings.get('print_join_left'): self.add_info_message(_('%s has joined the group chat') % nick)
- @event_filter(['account', 'room_jid']) - def _on_password_required(self, _event): + def _on_muc_password_required(self, _event): self._show_page('password')
- @event_filter(['account', 'room_jid']) def _on_muc_join_failed(self, event): con = app.connections[self.account] if con.get_module('Bookmarks').is_bookmark(self.room_jid): @@ -1449,19 +1390,16 @@ def _on_muc_join_failed(self, event): self.xml.error_label.set_text(to_user_string(event.error)) self._show_page('error')
- @event_filter(['account', 'room_jid']) def _on_muc_creation_failed(self, event): self.xml.error_heading.set_text(_('Failed to Create Group Chat')) self.xml.error_label.set_text(to_user_string(event.error)) self._show_page('error')
- @event_filter(['account', 'room_jid']) - def _on_presence_error(self, event): + def _on_muc_presence_error(self, event): error_message = to_user_string(event.properties.error) self.add_info_message('Error: %s' % error_message)
- @event_filter(['account', 'room_jid']) - def _on_destroyed(self, event): + def _on_muc_destroyed(self, event): destroyed = event.properties.muc_destroyed
reason = destroyed.reason @@ -1958,8 +1896,7 @@ def _on_password_changed(self, entry, _param): def _on_password_cancel_clicked(self, _button=None): self._close_control()
- @event_filter(['account', 'room_jid']) - def _on_captcha_challenge(self, event): + def _on_muc_captcha_challenge(self, event): self._remove_captcha_request()
options = {'no-scrolling': True, @@ -1978,8 +1915,7 @@ def _on_captcha_challenge(self, event): self._show_page('captcha') self._captcha_request.focus_first_entry()
- @event_filter(['account', 'room_jid']) - def _on_captcha_error(self, event): + def _on_muc_captcha_error(self, event): self.xml.captcha_error_label.set_text(event.error_text) self._show_page('captcha-error')
===================================== gajim/gtk/chat_list.py ===================================== @@ -14,7 +14,7 @@ from .tooltips import RosterTooltip from .util import get_builder
-log = logging.getLogger('gajim.gtk.chatlist') +log = logging.getLogger('gajim.gui.chatlist')
class ChatList(Gtk.ListBox): @@ -121,9 +121,17 @@ def update_time(self): for _, row in self._chats.items(): row.update_time()
- def update(self, event): + def process_event(self, event): + if event.name == 'message-received': + self._on_message_received(event) + else: + log.warning('Unhandled Event: %s', event.name) + + def _on_message_received(self, event): row = self._chats.get((event.account, event.jid)) - row.add_unread() + if not (row.is_selected() and + self.get_toplevel().get_property('has-toplevel-focus')): + row.add_unread() row.set_last_message_text('Me', event.msgtxt)
===================================== gajim/gtk/chat_list_stack.py ===================================== @@ -121,6 +121,10 @@ def contains_chat(self, account, jid, workspace_id=None): chat_list = self._chat_lists[workspace_id] return chat_list.contains_chat(account, jid)
- def update(self, event): - chat_list = self._find_chat(event.account, event.jid) - chat_list.update(event) + def process_event(self, event): + if hasattr(event, 'jid'): + jid = event.jid + else: + jid = event.room_jid + chat_list = self._find_chat(event.account, jid) + chat_list.process_event(event)
===================================== gajim/gtk/chat_stack.py ===================================== @@ -1,4 +1,5 @@
+import logging
from gi.repository import Gtk
@@ -9,6 +10,9 @@ from gajim.common.i18n import _
+log = logging.getLogger('gajim.gui.chatstack') + + class ChatStack(Gtk.Stack): def __init__(self): Gtk.Stack.__init__(self) @@ -84,19 +88,10 @@ def show_chat(self, account, jid): def clear(self): self.set_visible_child_name('empty')
- def update(self, event): - control = self.get_control(event.account, event.jid) - - typ = '' - if event.properties.is_sent_carbon: - typ = 'out' - - control.add_message(event.msgtxt, - typ, - tim=event.properties.timestamp, - subject=event.properties.subject, - displaymarking=event.displaymarking, - msg_log_id=event.msg_log_id, - message_id=event.properties.id, - correct_id=event.correct_id, - additional_data=event.additional_data) + def process_event(self, event): + if hasattr(event, 'jid'): + jid = event.jid + else: + jid = event.room_jid + control = self.get_control(event.account, jid) + control.process_event(event)
===================================== gajim/gtk/main.py ===================================== @@ -18,12 +18,15 @@ from gajim.gui.dialogs import DialogButton from gajim.gui.dialogs import ConfirmationDialog
+from gajim.common.nec import EventHelper + from .util import open_window
-class MainWindow(Gtk.ApplicationWindow): +class MainWindow(Gtk.ApplicationWindow, EventHelper): def __init__(self): Gtk.ApplicationWindow.__init__(self) + EventHelper.__init__(self) self.set_application(app.app) self.set_position(Gtk.WindowPosition.CENTER) self.set_title('Gajim') @@ -62,9 +65,49 @@ def __init__(self): 'clicked', self._on_start_chat_clicked) self._ui.connect_signals(self)
- app.ged.register_event_handler('message-received', - ged.CORE, - self._on_message_received) + # pylint: disable=line-too-long + self.register_events([ + ('nickname-received', ged.GUI1, self._on_event), + ('mood-received', ged.GUI1, self._on_event), + ('activity-received', ged.GUI1, self._on_event), + ('tune-received', ged.GUI1, self._on_event), + ('location-received', ged.GUI1, self._on_event), + ('update-client-info', ged.GUI1, self._on_event), + ('chatstate-received', ged.GUI1, self._on_event), + ('caps-update', ged.GUI1, self._on_event), + ('message-sent', ged.OUT_POSTCORE, self._on_event), + ('message-received', ged.CORE, self._on_event), + ('receipt-received', ged.GUI1, self._on_event), + ('displayed-received', ged.GUI1, self._on_event), + ('message-error', ged.GUI1, self._on_event), + ('zeroconf-error', ged.GUI1, self._on_event), + ('update-roster-avatar', ged.GUI1, self._on_event), + ('muc-creation-failed', ged.GUI1, self._on_event), + ('muc-joined', ged.GUI1, self._on_event), + ('muc-join-failed', ged.GUI1, self._on_event), + ('muc-user-joined', ged.GUI1, self._on_event), + ('muc-user-left', ged.GUI1, self._on_event), + ('muc-nickname-changed', ged.GUI1, self._on_event), + ('muc-self-presence', ged.GUI1, self._on_event), + ('muc-self-kicked', ged.GUI1, self._on_event), + ('muc-user-affiliation-changed', ged.GUI1, self._on_event), + ('muc-user-status-show-changed', ged.GUI1, self._on_event), + ('muc-user-role-changed', ged.GUI1, self._on_event), + ('muc-destroyed', ged.GUI1, self._on_event), + ('muc-presence-error', ged.GUI1, self._on_event), + ('muc-password-required', ged.GUI1, self._on_event), + ('muc-config-changed', ged.GUI1, self._on_event), + ('muc-subject', ged.GUI1, self._on_event), + ('muc-captcha-challenge', ged.GUI1, self._on_event), + ('muc-captcha-error', ged.GUI1, self._on_event), + ('muc-voice-request', ged.GUI1, self._on_event), + ('muc-disco-update', ged.GUI1, self._on_event), + ('muc-configuration-finished', ged.GUI1, self._on_event), + ('muc-configuration-failed', ged.GUI1, self._on_event), + ('update-room-avatar', ged.GUI1, self._on_event), + ('message-sent', ged.OUT_POSTCORE, self._on_event), + ('message-error', ged.GUI1, self._on_event), + ])
self.show_all()
@@ -241,15 +284,29 @@ def _on_edit_workspace_clicked(self, _button): open_window('WorkspaceDialog', workspace_id=self.get_active_workspace())
- def _on_message_received(self, event): - if not self.chat_exists(event.account, event.jid): - self.add_chat(event.account, event.jid, 'contact') + def _on_event(self, event): + if hasattr(event, 'jid'): + jid = event.jid + else: + jid = event.room_jid + + if event.name == 'caps-update': + #TODO + return
- if not event.msgtxt: + if event.name == 'update-client-info': + #TODO return
- self._chat_stack.update(event) - self._chat_list_stack.update(event) + if not self.chat_exists(event.account, jid): + if event.name == 'message-received': + self.add_chat(event.account, jid, 'contact') + else: + # No chat is open, dont handle any gui events + return + + self._chat_stack.process_event(event) + self._chat_list_stack.process_event(event)
def quit(self): accounts = list(app.connections.keys())
===================================== gajim/privatechat_control.py ===================================== @@ -88,13 +88,11 @@ def room_name(self): def get_our_nick(self): return self.room_ctrl.nick
- @event_filter(['account']) def _on_caps_update(self, event): if event.fjid != self.gc_contact.get_full_jid(): return self.update_contact()
- @event_filter(['account']) def _on_nickname_changed(self, event): if event.properties.new_jid != self.gc_contact.get_full_jid(): return
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/9367879d628c98a0b67e6454939773c57...