Philipp Hörist pushed to branch master at gajim / gajim
Commits: 13b61fe8 by lovetox at 2022-08-12T21:28:46+02:00 refactor: MessageActionsBox: Register events
- - - - - 3aa0c042 by lovetox at 2022-08-12T21:42:15+02:00 refactor: ChatStack: Register events
- - - - - c29838b7 by lovetox at 2022-08-12T22:06:28+02:00 refactor: ChatPage: Remove unused method
- - - - - 10ee7c7b by lovetox at 2022-08-12T22:28:23+02:00 refactor: ChatListStack: Register events
- - - - -
9 changed files:
- gajim/common/events.py - gajim/gtk/app_page.py - gajim/gtk/chat_list.py - gajim/gtk/chat_list_stack.py - gajim/gtk/chat_page.py - gajim/gtk/chat_stack.py - gajim/gtk/main.py - gajim/gtk/main_stack.py - gajim/gtk/message_actions_box.py
Changes:
===================================== gajim/common/events.py ===================================== @@ -44,20 +44,17 @@ from gajim.plugins.pluginmanager import PluginManifest
-MainEventT = Union['PresenceReceived', - 'MessageSent', - 'MessageReceived', - 'MamMessageReceived', - 'GcMessageReceived', - 'MessageUpdated', - 'ReceiptReceived', - 'DisplayedReceived', - 'MessageError', - 'MucDiscoUpdate', - 'JingleConnectedReceived', - 'JingleDisconnectedReceived', - 'JingleErrorReceived', - 'FileRequestSent'] +ChatListEventT = Union[ + 'MessageReceived', + 'MamMessageReceived', + 'GcMessageReceived', + 'MessageUpdated', + 'MessageModerated', + 'PresenceReceived', + 'MessageSent', + 'JingleRequestReceived', + 'FileRequestReceivedEvent' +]
@dataclass
===================================== gajim/gtk/app_page.py ===================================== @@ -21,7 +21,6 @@ from gi.repository import Gtk
from gajim.common import app -from gajim.common.events import ApplicationEvent from gajim.common.helpers import open_uri from gajim.common.i18n import _ from gajim.plugins.pluginmanager import PluginManifest @@ -91,9 +90,6 @@ def remove_app_message(self) -> None: self._unread_count -= 1 self.emit('unread-count-changed', self._unread_count)
- def process_event(self, event: ApplicationEvent) -> None: - pass -
class AppMessageListBox(Gtk.ListBox): def __init__(self) -> None:
===================================== gajim/gtk/chat_list.py ===================================== @@ -366,7 +366,7 @@ def update_time(self) -> None: for _key, row in self._chats.items(): row.update_time()
- def process_event(self, event: events.ApplicationEvent) -> None: + def process_event(self, event: events.ChatListEventT) -> None: if isinstance(event, (events.MessageReceived, events.MamMessageReceived, events.GcMessageReceived)): @@ -381,7 +381,7 @@ def process_event(self, event: events.ApplicationEvent) -> None: self._on_message_sent(event) elif isinstance(event, events.JingleRequestReceived): self._on_jingle_request_received(event) - elif isinstance(event, events.FileRequestReceivedEvent): + elif isinstance(event, events.FileRequestReceivedEvent): # pyright: ignore [reportUnnecessaryIsInstance] # noqa self._on_file_request_received(event) else: log.warning('Unhandled Event: %s', event.name)
===================================== gajim/gtk/chat_list_stack.py ===================================== @@ -27,6 +27,8 @@
from gajim.common import app from gajim.common import events +from gajim.common import ged +from gajim.common.ged import EventHelper from gajim.common.i18n import _
from . import structs @@ -37,20 +39,7 @@ from .dialogs import ConfirmationCheckDialog
-HANDLED_EVENTS = ( - events.MessageReceived, - events.MamMessageReceived, - events.GcMessageReceived, - events.MessageUpdated, - events.MessageModerated, - events.PresenceReceived, - events.MessageSent, - events.JingleRequestReceived, - events.FileRequestReceivedEvent -) - - -class ChatListStack(Gtk.Stack): +class ChatListStack(Gtk.Stack, EventHelper):
__gsignals__ = { 'unread-count-changed': (GObject.SignalFlags.RUN_LAST, @@ -72,6 +61,7 @@ def __init__(self, search_entry: Gtk.SearchEntry ) -> None: Gtk.Stack.__init__(self) + EventHelper.__init__(self) self.set_hexpand(True) self.set_vexpand(True) self.set_vhomogeneous(False) @@ -89,6 +79,18 @@ def __init__(self, self._add_actions() self.show_all()
+ self.register_events([ + ('message-received', ged.GUI2, self._on_event), + ('mam-message-received', ged.GUI2, self._on_event), + ('gc-message-received', ged.GUI2, self._on_event), + ('message-updated', ged.GUI2, self._on_event), + ('message-moderated', ged.GUI2, self._on_event), + ('presence-received', ged.GUI2, self._on_event), + ('message-sent', ged.GUI2, self._on_event), + ('file-request-received', ged.GUI2, self._on_event), + ('jingle-request-received', ged.GUI2, self._on_event), + ]) + def _add_actions(self) -> None: actions = [ ('toggle-chat-pinned', 'a{sv}', self._toggle_chat_pinned), @@ -332,10 +334,7 @@ def mark_as_read(self, account: str, jid: JID) -> None: for chat_list in self._chat_lists.values(): chat_list.mark_as_read(account, jid)
- def process_event(self, event: events.ApplicationEvent) -> None: - if not isinstance(event, HANDLED_EVENTS): - return - + def _on_event(self, event: events.ChatListEventT) -> None: jid = JID.from_string(event.jid)
chat_list = self.find_chat(event.account, jid)
===================================== gajim/gtk/chat_page.py ===================================== @@ -26,7 +26,6 @@ from nbxmpp import JID
from gajim.common import app -from gajim.common.events import ApplicationEvent
from .builder import get_builder from .chat_filter import ChatFilter @@ -182,10 +181,6 @@ def _on_chat_list_changed(self, self._ui.workspace_label.set_text(name) self._ui.search_entry.set_text('')
- def process_event(self, event: ApplicationEvent): - self._chat_stack.process_event(event) - self._chat_list_stack.process_event(event) - def add_chat_list(self, workspace_id: str) -> None: self._chat_list_stack.add_chat_list(workspace_id)
===================================== gajim/gtk/chat_stack.py ===================================== @@ -14,7 +14,6 @@
from __future__ import annotations
-from typing import Any from typing import Optional
import sys @@ -139,6 +138,11 @@ def __init__(self): self._connect_actions() self.show_all()
+ self.register_events([ + ('message-received', 85, self._on_message_received), + ('muc-disco-update', 85, self._on_muc_disco_update), + ]) + def _get_current_contact(self) -> ChatContactT: assert self._current_contact is not None return self._current_contact @@ -305,14 +309,13 @@ def _on_user_affiliation_changed(self, self._update_group_chat_actions(contact)
def _on_muc_disco_update(self, event: events.MucDiscoUpdate) -> None: - if self._current_contact is None: + if not isinstance(self._current_contact, GroupchatContact): return
if event.jid != self._current_contact.jid: return
- if isinstance(self._current_contact, GroupchatContact): - self._update_group_chat_actions(self._current_contact) + self._update_group_chat_actions(self._current_contact)
def _on_message_received(self, event: events.MessageReceived) -> None: if not event.msgtxt or event.properties.is_sent_carbon: @@ -725,15 +728,6 @@ def clear(self) -> None: self._message_action_box.clear() self._chat_control.clear()
- def process_event(self, event: Any) -> None: - if isinstance(event, events.MucDiscoUpdate): - self._on_muc_disco_update(event) - - if isinstance(event, events.MessageReceived): - self._on_message_received(event) - - self._message_action_box.process_event(event) -
class ChatPlaceholderBox(Gtk.Box): def __init__(self):
===================================== gajim/gtk/main.py ===================================== @@ -109,23 +109,11 @@ def __init__(self) -> None: self._ui.connect_signals(self)
self.register_events([ - ('presence-received', ged.GUI1, self._on_event), - ('message-sent', ged.GUI1, self._on_event), - ('message-received', ged.CORE, self._on_message_received), - ('mam-message-received', ged.CORE, self._on_event), - ('gc-message-received', ged.CORE, self._on_event), - ('message-updated', ged.CORE, self._on_event), - ('message-moderated', ged.CORE, self._on_event), - ('receipt-received', ged.GUI1, self._on_event), - ('displayed-received', ged.GUI1, self._on_event), + ('message-received', ged.GUI1, self._on_message_received), ('read-state-sync', ged.GUI1, self._on_read_state_sync), - ('message-error', ged.GUI1, self._on_event), - ('muc-disco-update', ged.GUI1, self._on_event), ('call-started', ged.GUI1, self._on_call_started), - ('call-stopped', ged.GUI1, self._on_event), ('jingle-request-received', ged.GUI1, self._on_jingle_request), ('file-request-received', ged.GUI1, self._on_file_request), - ('file-request-sent', ged.GUI1, self._on_event), ('account-enabled', ged.GUI1, self._on_account_enabled), ('account-disabled', ged.GUI1, self._on_account_disabled), ('allow-gajim-update-check', ged.GUI1, self._on_allow_gajim_update), @@ -907,12 +895,6 @@ def _load_chats(self) -> None:
self._set_startup_finished()
- def _on_event(self, event: events.MainEventT) -> None: - if not self.chat_exists(event.account, event.jid): - return - - self._main_stack.process_event(event) - def _on_message_received(self, event: events.MessageReceived) -> None: if not self.chat_exists(event.account, event.jid): if not event.properties.body: @@ -927,8 +909,6 @@ def _on_message_received(self, event: events.MessageReceived) -> None: jid = event.properties.jid.new_as_bare() self.add_chat(event.account, jid, 'contact')
- self._main_stack.process_event(event) - def _on_read_state_sync(self, event: events.ReadStateSync) -> None: if event.is_muc_pm: jid = JID.from_string(event.jid.bare) @@ -960,14 +940,10 @@ def _on_jingle_request(self, event: events.JingleRequestReceived) -> None: self.add_chat(event.account, event.jid, 'contact') break
- self._main_stack.process_event(event) - def _on_file_request(self, event: events.FileRequestReceivedEvent) -> None: if not self.chat_exists(event.account, event.jid): self.add_chat(event.account, event.jid, 'contact')
- self._main_stack.process_event(event) - def quit(self) -> None: save_main_window_position() window_width, window_height = self.get_size()
===================================== gajim/gtk/main_stack.py ===================================== @@ -15,14 +15,12 @@ from __future__ import annotations
from typing import Union -from typing import cast
from nbxmpp.protocol import JID
from gi.repository import Gtk
from gajim.common import app -from gajim.common.events import ApplicationEvent
from .app_page import AppPage from .chat_list import ChatList @@ -88,18 +86,6 @@ def get_chat_page(self) -> ChatPage: assert isinstance(chat_page, ChatPage) return chat_page
- def process_event(self, event: ApplicationEvent) -> None: - empty_box = self.get_child_by_name('empty') - pages = cast(list[PageT], self.get_children()) - for page in pages: - if page is empty_box: - continue - - if isinstance(page, AccountPage): - continue - - page.process_event(event) - def _on_chat_selected(self, _chat_list: ChatList, _workspace_id: str,
===================================== gajim/gtk/message_actions_box.py ===================================== @@ -37,6 +37,7 @@ from gajim.common import app from gajim.common import events from gajim.common import i18n +from gajim.common import ged from gajim.common.i18n import _ from gajim.common.client import Client from gajim.common.const import SimpleClientState @@ -65,9 +66,10 @@ log = logging.getLogger('gajim.gui.messageactionsbox')
-class MessageActionsBox(Gtk.Grid): +class MessageActionsBox(Gtk.Grid, ged.EventHelper): def __init__(self) -> None: Gtk.Grid.__init__(self) + ged.EventHelper.__init__(self)
self._client: Optional[Client] = None self._contact: Optional[ChatContactT] = None @@ -120,6 +122,10 @@ def __init__(self) -> None:
self._connect_actions()
+ self.register_events([ + ('message-sent', ged.GUI2, self._on_message_sent) + ]) + def get_current_contact(self) -> ChatContactT: assert self._contact is not None return self._contact @@ -689,7 +695,3 @@ def _on_message_sent(self, event: events.MessageSent) -> None:
self.msg_textview.get_style_context().remove_class( 'gajim-msg-correcting') - - def process_event(self, event: events.ApplicationEvent) -> None: - if isinstance(event, events.MessageSent): - self._on_message_sent(event)
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/eb6ce2dcdce5918aa60c1452214f70ed...