From 95b28cdf277821078070c7c8b238866d07fad848 Mon Sep 17 00:00:00 2001 From: "Julien M." Date: Thu, 31 Oct 2024 09:40:36 +0100 Subject: [PATCH 1/4] update(tooling): apply strict YAML list --- .pre-commit-config.yaml | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index eb99c70e..fc1f38c9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,8 @@ repos: rev: v4.6.0 hooks: - id: check-added-large-files - args: ["--maxkb=500"] + args: + - --maxkb=500 - id: check-case-conflict - id: check-xml - id: check-yaml @@ -13,21 +14,26 @@ repos: - id: end-of-file-fixer - id: fix-byte-order-marker - id: fix-encoding-pragma - args: [--remove] + args: + - --remove - id: trailing-whitespace - args: [--markdown-linebreak-ext=md] + args: + - --markdown-linebreak-ext=md - repo: https://github.com/astral-sh/ruff-pre-commit rev: "v0.5.0" hooks: - id: ruff - args: ["--fix-only", "--target-version=py39"] + args: + - --fix-only + - --target-version=py39 - repo: https://github.com/psf/black rev: 24.4.2 hooks: - id: black - args: ["--target-version=py39"] + args: + - --target-version=py39 # Disabled until PyQt translation support f-strings # - repo: https://github.com/asottile/pyupgrade @@ -41,7 +47,10 @@ repos: rev: 5.13.2 hooks: - id: isort - args: ["--profile", "black", "--filter-files"] + args: + - --profile + - black + - --filter-files - repo: https://github.com/pycqa/flake8 rev: 7.1.0 @@ -49,8 +58,8 @@ repos: - id: flake8 language: python files: ^qtribu/.*\.py$ - types: [python] - additional_dependencies: ["flake8-qgis"] + additional_dependencies: + - "flake8-qgis" args: [ "--config=setup.cfg", From 50bdfca93384bebf464e48e4127e694facd639a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Nov 2024 03:03:34 +0000 Subject: [PATCH 2/4] chore(deps): update sphinx-rtd-theme requirement in /requirements Updates the requirements on [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) to permit the latest version. - [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst) - [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/1.0.0...3.0.1) --- updated-dependencies: - dependency-name: sphinx-rtd-theme dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements/documentation.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/documentation.txt b/requirements/documentation.txt index badcafb3..9ff8fe78 100644 --- a/requirements/documentation.txt +++ b/requirements/documentation.txt @@ -6,5 +6,5 @@ sphinx-autobuild>=2024 sphinx-autodoc-typehints>=1.25 sphinx-copybutton>=0.5,<1 sphinxext-opengraph>=0.7 -sphinx-rtd-theme>=1,<3 +sphinx-rtd-theme>=1,<4 sphinx-sitemap>=2.5.1 From 634cc28793270eef93c4400ab8e0d15d7eb3099d Mon Sep 17 00:00:00 2001 From: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Date: Fri, 1 Nov 2024 15:08:35 +0100 Subject: [PATCH 3/4] feature(qchat): re-arrange websocket message to allow image communications (#211) * feature(qchat): display and send image * fix(qchat): create an item using bytes * feature(qchat): send QGIS screenshot to chat * feature(qchat): open image on single click * refactor(qchat): use qchat message types and ws wrapper * feature(qchat): send QGIS screenshot through websocket * feature(qchat): send iamges through websocket * fix(qchat): set send author and avatar for image items * feature(qchat): set image message color if sent by user * doc(qchat): add docstrings --- qtribu/constants.py | 3 - qtribu/gui/dck_qchat.py | 339 ++++++++++++------ qtribu/gui/dck_qchat.ui | 23 ++ .../{qchat_client.py => qchat_api_client.py} | 0 qtribu/logic/qchat_messages.py | 43 +++ qtribu/logic/qchat_websocket.py | 108 ++++++ qtribu/resources/sounds/dontcrybaby.mp3 | Bin 205053 -> 0 bytes 7 files changed, 406 insertions(+), 110 deletions(-) rename qtribu/logic/{qchat_client.py => qchat_api_client.py} (100%) create mode 100644 qtribu/logic/qchat_messages.py create mode 100644 qtribu/logic/qchat_websocket.py delete mode 100644 qtribu/resources/sounds/dontcrybaby.mp3 diff --git a/qtribu/constants.py b/qtribu/constants.py index adb35c8c..c019654a 100644 --- a/qtribu/constants.py +++ b/qtribu/constants.py @@ -196,7 +196,6 @@ def local_path(self, base_path: Path = Path().home() / ".geotribu/cdn/") -> Path ADMIN_MESSAGES_NICKNAME: str = "admin" ADMIN_MESSAGES_AVATAR: str = "mIconWarning.svg" ERROR_MESSAGES_COLOR: str = "#ff0000" -INTERNAL_MESSAGE_AUTHOR: str = "internal" QCHAT_USER_AVATARS: dict[str, str] = { "Arrow Up": "mActionArrowUp.svg", "Calculate": "mActionCalculateField.svg", @@ -221,14 +220,12 @@ def local_path(self, base_path: Path = Path().home() / ".geotribu/cdn/") -> Path # QChat cheatcodes CHEATCODE_DIZZY: str = "givemesomecheese" -CHEATCODE_DONTCRYBABY: str = "dontcrybaby" CHEATCODE_IAMAROBOT: str = "iamarobot" CHEATCODE_10OCLOCK: str = "its10oclock" CHEATCODE_QGIS_PRO_LICENSE: str = "qgisprolicense" CHEATCODES = [ CHEATCODE_DIZZY, - CHEATCODE_DONTCRYBABY, CHEATCODE_IAMAROBOT, CHEATCODE_10OCLOCK, CHEATCODE_QGIS_PRO_LICENSE, diff --git a/qtribu/gui/dck_qchat.py b/qtribu/gui/dck_qchat.py index 2392220e..6a28409e 100644 --- a/qtribu/gui/dck_qchat.py +++ b/qtribu/gui/dck_qchat.py @@ -1,17 +1,29 @@ # standard -import json +import base64 +import os +import tempfile from functools import partial from pathlib import Path -from typing import Any, Optional +from typing import Optional # PyQGIS from PyQt5 import QtWebSockets # noqa QGS103 from qgis.core import Qgis, QgsApplication from qgis.gui import QgisInterface, QgsDockWidget from qgis.PyQt import uic -from qgis.PyQt.QtCore import QPoint, Qt, QTime, QUrl -from qgis.PyQt.QtGui import QBrush, QColor, QCursor, QIcon -from qgis.PyQt.QtWidgets import QAction, QMenu, QMessageBox, QTreeWidgetItem, QWidget +from qgis.PyQt.QtCore import QPoint, Qt, QTime +from qgis.PyQt.QtGui import QBrush, QColor, QCursor, QIcon, QPixmap +from qgis.PyQt.QtWidgets import ( + QAction, + QDialog, + QFileDialog, + QLabel, + QMenu, + QMessageBox, + QTreeWidgetItem, + QVBoxLayout, + QWidget, +) from qtribu.__about__ import __title__ from qtribu.constants import ( @@ -19,14 +31,21 @@ ADMIN_MESSAGES_NICKNAME, CHEATCODE_10OCLOCK, CHEATCODE_DIZZY, - CHEATCODE_DONTCRYBABY, CHEATCODE_IAMAROBOT, CHEATCODE_QGIS_PRO_LICENSE, CHEATCODES, - INTERNAL_MESSAGE_AUTHOR, QCHAT_NICKNAME_MINLENGTH, ) -from qtribu.logic.qchat_client import QChatApiClient +from qtribu.logic.qchat_api_client import QChatApiClient +from qtribu.logic.qchat_messages import ( + QChatExiterMessage, + QChatImageMessage, + QChatLikeMessage, + QChatNbUsersMessage, + QChatNewcomerMessage, + QChatTextMessage, +) +from qtribu.logic.qchat_websocket import QChatWebsocket from qtribu.tasks.dizzy import DizzyTask # plugin @@ -44,7 +63,8 @@ class QChatWidget(QgsDockWidget): connected: bool = False current_room: Optional[str] = None - qchat_client = QChatApiClient + qchat_client: QChatApiClient + qchat_ws: QChatWebsocket def __init__( self, @@ -96,6 +116,7 @@ def __init__( self.tr("Message"), ] ) + self.twg_chat.itemClicked.connect(self.on_message_clicked) self.twg_chat.itemDoubleClicked.connect(self.on_message_double_clicked) self.twg_chat.setContextMenuPolicy(Qt.CustomContextMenu) self.twg_chat.customContextMenuRequested.connect( @@ -115,11 +136,18 @@ def __init__( ) # initialize websocket client - self.ws_client = QtWebSockets.QWebSocket( - "", QtWebSockets.QWebSocketProtocol.Version13, None + self.qchat_ws = QChatWebsocket() + self.qchat_ws.error.connect(self.on_ws_error) + self.qchat_ws.text_message_received.connect(self.on_text_message_received) + self.qchat_ws.image_message_received.connect(self.on_image_message_received) + self.qchat_ws.nb_users_message_received.connect( + self.on_nb_users_message_received ) - self.ws_client.error.connect(self.on_ws_error) - self.ws_client.textMessageReceived.connect(self.on_ws_message_received) + self.qchat_ws.newcomer_message_received.connect( + self.on_newcomer_message_received + ) + self.qchat_ws.exiter_message_received.connect(self.on_exiter_message_received) + self.qchat_ws.like_message_received.connect(self.on_like_message_received) # send message signal listener self.lne_message.returnPressed.connect(self.on_send_button_clicked) @@ -128,6 +156,18 @@ def __init__( QIcon(QgsApplication.iconPath("mActionDoubleArrowRight.svg")) ) + # send image message signal listener + self.btn_send_image.pressed.connect(self.on_send_image_button_clicked) + self.btn_send_image.setIcon( + QIcon(QgsApplication.iconPath("mActionAddImage.svg")) + ) + + # send QGIS screenshot message signal listener + self.btn_send_screenshot.pressed.connect(self.on_send_screenshot_button_clicked) + self.btn_send_screenshot.setIcon( + QIcon(QgsApplication.iconPath("mActionAddImage.svg")) + ) + @property def settings(self) -> PlgSettingsStructure: return self.plg_settings.get_plg_settings() @@ -297,12 +337,8 @@ def connect_to_room(self, room: str) -> None: """ Connect widget to a specific room """ - protocol, domain = self.settings.qchat_instance_uri.split("://") - ws_protocol = "wss" if protocol == "https" else "ws" - ws_instance_url = f"{ws_protocol}://{domain}" - ws_url = f"{ws_instance_url}/room/{room}/ws" - self.ws_client.open(QUrl(ws_url)) - self.ws_client.connected.connect(partial(self.on_ws_connected, room)) + self.qchat_ws.open(self.settings.qchat_instance_uri, room) + self.qchat_ws.connected.connect(partial(self.on_ws_connected, room)) def on_ws_connected(self, room: str) -> None: """ @@ -322,7 +358,7 @@ def on_ws_connected(self, room: str) -> None: self.plg_settings.save_from_object(settings) self.connected = True - self.log(message=f"Websocket connected to room {room}") + self.twg_chat.clear() if self.settings.qchat_display_admin_messages: self.add_admin_message( self.tr("Connected to room '{room}'").format(room=room) @@ -330,11 +366,10 @@ def on_ws_connected(self, room: str) -> None: # send newcomer message to websocket if not self.settings.qchat_incognito_mode: - message = { - "author": INTERNAL_MESSAGE_AUTHOR, - "newcomer": self.settings.author_nickname, - } - self.ws_client.sendTextMessage(json.dumps(message)) + message = QChatNewcomerMessage( + type="newcomer", newcomer=self.settings.author_nickname + ) + self.qchat_ws.send_message(message) def disconnect_from_room(self, log: bool = True, close_ws: bool = True) -> None: """ @@ -354,8 +389,8 @@ def disconnect_from_room(self, log: bool = True, close_ws: bool = True) -> None: self.grb_user.setEnabled(False) self.connected = False if close_ws: - self.ws_client.connected.disconnect() - self.ws_client.close() + self.qchat_ws.connected.disconnect() + self.qchat_ws.close() def on_ws_disconnected(self) -> None: """ @@ -369,51 +404,42 @@ def on_ws_error(self, error_code: int) -> None: Action called when an error appears on the websocket """ if self.settings.qchat_display_admin_messages: - self.add_admin_message(self.ws_client.errorString()) + self.add_admin_message(self.qchat_ws.error_string()) self.log( - message=f"{error_code}: {self.ws_client.errorString()}", + message=f"{error_code}: {self.qchat_ws.error_string()}", log_level=Qgis.Critical, ) - def on_ws_message_received(self, message: str) -> None: + # region websocket message received + + def on_text_message_received(self, message: QChatTextMessage) -> None: """ - Action called when a message is received from the websocket + Launched when a text message is received from the websocket """ - message = json.loads(message) - - # check if this is an internal message - if message["author"] == INTERNAL_MESSAGE_AUTHOR: - self.handle_internal_message(message) - return - - self.log( - message=f"Message received: [{message['author']}]: '{message['message']}'" - ) - # check if a cheatcode is activated if self.settings.qchat_activate_cheatcode: - activated = self.check_cheatcode(message) + activated = self.check_cheatcode(message.text) if activated: return - # do not display cheatcodes - if message["message"] in CHEATCODES: + # do not display cheatcodes even if not activated + if message.text in CHEATCODES: return # check if message mentions current user - words = message["message"].split(" ") + words = message.text.split(" ") if f"@{self.settings.author_nickname}" in words or "@all" in words: item = self.create_message_item( - message["author"], - message["avatar"], - message["message"], + message.author, + message.avatar, + message.text, foreground_color=self.settings.qchat_color_mention, ) - if message["author"] != self.settings.author_nickname: + if message.author != self.settings.author_nickname: self.log( message=self.tr( "You were mentionned by {sender}: {message}" - ).format(sender=message["author"], message=message["message"]), + ).format(sender=message.author, message=message.text), application=self.tr("QChat"), log_level=Qgis.Info, push=PlgOptionsManager().get_plg_settings().notify_push_info, @@ -427,61 +453,86 @@ def on_ws_message_received(self, message: str) -> None: play_resource_sound( self.settings.qchat_ring_tone, self.settings.qchat_sound_volume ) - elif message["author"] == self.settings.author_nickname: + elif message.author == self.settings.author_nickname: item = self.create_message_item( - message["author"], - message["avatar"], - message["message"], + message.author, + message.avatar, + message.text, foreground_color=self.settings.qchat_color_self, ) else: item = self.create_message_item( - message["author"], - message["avatar"], - message["message"], + message.author, + message.avatar, + message.text, ) self.twg_chat.addTopLevelItem(item) self.twg_chat.scrollToItem(item) - def handle_internal_message(self, message: dict[str, Any]) -> None: + def on_image_message_received(self, message: QChatImageMessage) -> None: """ - Handle an internal message, spotted by its author + Launched when an image message is received from the websocket """ - if "nb_users" in message: - nb_users = message["nb_users"] - self.grb_qchat.setTitle( - self.tr("QChat - {nb_users} {user_txt}").format( - nb_users=nb_users, - user_txt=self.tr("user") if nb_users <= 1 else self.tr("users"), - ) + pixmap = QPixmap() + data = base64.b64decode(message.image_data) + pixmap.loadFromData(data) + item = self.create_image_item( + QTime.currentTime(), + message.author, + message.avatar, + pixmap, + ) + # set foreground color if sent by user + if message.author == self.settings.author_nickname: + for i in range(2): + item.setForeground(i, QBrush(QColor(self.settings.qchat_color_self))) + self.twg_chat.addTopLevelItem(item) + + def on_nb_users_message_received(self, message: QChatNbUsersMessage) -> None: + """ + Launched when a nb_users message is received from the websocket + """ + self.grb_qchat.setTitle( + self.tr("QChat - {nb_users} {user_txt}").format( + nb_users=message.nb_users, + user_txt=self.tr("user") if message.nb_users <= 1 else self.tr("users"), ) - self.log(message=f"Internal message received: {nb_users} users in room") + ) + + def on_newcomer_message_received(self, message: QChatNewcomerMessage) -> None: + """ + Launched when a newcomer message is received from the websocket + """ if ( - "newcomer" in message - and self.settings.qchat_display_admin_messages - and message["newcomer"] != self.settings.author_nickname + self.settings.qchat_display_admin_messages + and message.newcomer != self.settings.author_nickname ): - newcomer = message["newcomer"] self.add_admin_message( - self.tr("{newcomer} has joined the room").format(newcomer=newcomer) + self.tr("{newcomer} has joined the room").format( + newcomer=message.newcomer + ) ) + + def on_exiter_message_received(self, message: QChatExiterMessage) -> None: + """ + Launched when an exiter message is received from the websocket + """ if ( - "exiter" in message - and self.settings.qchat_display_admin_messages - and message["exiter"] != self.settings.author_nickname + self.settings.qchat_display_admin_messages + and message.exiter != self.settings.author_nickname ): - exiter = message["exiter"] self.add_admin_message( - self.tr("{newcomer} has left the room").format(newcomer=exiter) + self.tr("{exiter} has left the room").format(exiter=message.exiter) ) - if ( - "liker_author" in message - and "liked_author" in message - and message["liked_author"] == self.settings.author_nickname - ): + + def on_like_message_received(self, message: QChatLikeMessage) -> None: + """ + Launched when a like message is received from the websocket + """ + if message.liked_author == self.settings.author_nickname: self.log( - message=self.tr('{liker_author} liked your message "{message}"').format( - liker_author=message["liker_author"], message=message["message"] + message=self.tr("{liker_author} liked your message: {message}").format( + liker_author=message.liker_author, message=message.message ), application=self.tr("QChat"), log_level=Qgis.Success, @@ -494,27 +545,55 @@ def handle_internal_message(self, message: dict[str, Any]) -> None: self.settings.qchat_ring_tone, self.settings.qchat_sound_volume ) + # endregion + + def on_message_clicked(self, item: QTreeWidgetItem, column: int) -> None: + """ + Action called when clicking on a chat message + """ + author = item.text(1) + widget = self.twg_chat.itemWidget(item, 2) + # if there is a widget (QLabel) usually, + # it means that there is an image + # -> display the image in a new window + if column == 2 and widget: + pixmap = widget.pixmap() + dialog = QDialog(self) + dialog.setWindowTitle( + self.tr("QChat image sent by {author}").format(author=author) + ) + layout = QVBoxLayout() + label = QLabel() + label.setPixmap(pixmap) + layout.addWidget(label) + dialog.setLayout(layout) + dialog.setModal(True) + dialog.show() + def on_message_double_clicked(self, item: QTreeWidgetItem, column: int) -> None: """ Action called when double clicking on a chat message """ - text = self.lne_message.text() author = item.text(1) + # do nothing if double click on admin message + if author == ADMIN_MESSAGES_NICKNAME: + return + text = self.lne_message.text() self.lne_message.setText(f"{text}@{author} ") self.lne_message.setFocus() - def on_like_message(self, liked_author: str, message: str) -> None: + def on_like_message(self, liked_author: str, msg: str) -> None: """ Action called when the "Like message" action is triggered This may happen on right-click on a message """ - internal_message = { - "author": INTERNAL_MESSAGE_AUTHOR, - "message": message, - "liker_author": self.settings.author_nickname, - "liked_author": liked_author, - } - self.ws_client.sendTextMessage(json.dumps(internal_message)) + message = QChatLikeMessage( + type="like", + liker_author=self.settings.author_nickname, + liked_author=liked_author, + message=msg, + ) + self.qchat_ws.send_message(message) def on_custom_context_menu_requested(self, point: QPoint) -> None: """ @@ -649,14 +728,48 @@ def on_send_button_clicked(self) -> None: return # send message to websocket - message = { - "message": message_text.strip(), - "author": nickname, - "avatar": avatar, - } - self.ws_client.sendTextMessage(json.dumps(message)) + message = QChatTextMessage( + type="text", author=nickname, avatar=avatar, text=message_text.strip() + ) + self.qchat_ws.send_message(message) self.lne_message.setText("") + def on_send_image_button_clicked(self) -> None: + """ + Action called when the send image button is clicked + """ + + # select some image files on disk + files = QFileDialog.getOpenFileNames( + parent=self, + caption=self.tr("Select images to send to the chat"), + filter="Images (*.png *.jpg *.jpeg)", + ) + for fp in files[0]: + # send the image through the websocket + with open(fp, "rb") as file: + data = file.read() + message = QChatImageMessage( + type="image", + author=self.settings.author_nickname, + avatar=self.settings.author_avatar, + image_data=base64.b64encode(data).decode("utf-8"), + ) + self.qchat_ws.send_message(message) + + def on_send_screenshot_button_clicked(self) -> None: + sc_fp = os.path.join(tempfile.gettempdir(), "qgis_screenshot.png") + self.iface.mapCanvas().saveAsImage(sc_fp) + with open(sc_fp, "rb") as file: + data = file.read() + message = QChatImageMessage( + type="image", + author=self.settings.author_nickname, + avatar=self.settings.author_avatar, + image_data=base64.b64encode(data).decode("utf-8"), + ) + self.qchat_ws.send_message(message) + def add_admin_message(self, message: str) -> None: """ Adds an admin message to QTreeWidget chat @@ -699,6 +812,20 @@ def create_message_item( item.setBackground(i, QBrush(QColor(background_color))) return item + def create_image_item( + self, time: QTime, author: str, avatar: Optional[str], pixmap: QPixmap + ) -> QTreeWidgetItem: + item = QTreeWidgetItem(self.twg_chat) + item.setText(0, time.toString()) + item.setText(1, author) + if self.settings.qchat_show_avatars: + item.setIcon(1, QIcon(QgsApplication.iconPath(avatar))) + label = QLabel(self.twg_chat) + label.setPixmap(pixmap) + item.treeWidget().setItemWidget(item, 2, label) + item.setSizeHint(2, pixmap.size()) + return item + def on_widget_closed(self) -> None: """ Action called when the widget is closed @@ -708,22 +835,20 @@ def on_widget_closed(self) -> None: self.cbb_room.currentIndexChanged.disconnect() self.initialized = False - def check_cheatcode(self, message: dict[str, str]) -> bool: + def check_cheatcode(self, text: str) -> bool: """ Checks if a received message contains a cheatcode Does action if necessary Returns true if a cheatcode has been activated """ - msg = message["message"] - # make QGIS shuffle for a few seconds - if msg == CHEATCODE_DIZZY: + if text == CHEATCODE_DIZZY: task = DizzyTask(f"Cheatcode activation: {CHEATCODE_DIZZY}", self.iface) self.task_manager.addTask(task) return True # QGIS pro license expiration message - if msg == CHEATCODE_QGIS_PRO_LICENSE: + if text == CHEATCODE_QGIS_PRO_LICENSE: self.log( message=self.tr("Your QGIS Pro license is about to expire"), application=self.tr("QGIS Pro"), @@ -737,8 +862,8 @@ def check_cheatcode(self, message: dict[str, str]) -> bool: return True # play sounds if self.settings.qchat_play_sounds: - if msg in [CHEATCODE_DONTCRYBABY, CHEATCODE_IAMAROBOT, CHEATCODE_10OCLOCK]: - play_resource_sound(msg, self.settings.qchat_sound_volume) + if text in [CHEATCODE_IAMAROBOT, CHEATCODE_10OCLOCK]: + play_resource_sound(text, self.settings.qchat_sound_volume) return True return False diff --git a/qtribu/gui/dck_qchat.ui b/qtribu/gui/dck_qchat.ui index bbc29f9e..b22c39cc 100644 --- a/qtribu/gui/dck_qchat.ui +++ b/qtribu/gui/dck_qchat.ui @@ -16,6 +16,9 @@ 0 + + ArrowCursor + @@ -318,6 +321,26 @@ + + + + PointingHandCursor + + + Send Image + + + + + + + PointingHandCursor + + + Send QGIS screenshot + + + diff --git a/qtribu/logic/qchat_client.py b/qtribu/logic/qchat_api_client.py similarity index 100% rename from qtribu/logic/qchat_client.py rename to qtribu/logic/qchat_api_client.py diff --git a/qtribu/logic/qchat_messages.py b/qtribu/logic/qchat_messages.py new file mode 100644 index 00000000..01635eba --- /dev/null +++ b/qtribu/logic/qchat_messages.py @@ -0,0 +1,43 @@ +from dataclasses import dataclass +from typing import Optional + + +@dataclass(init=True, frozen=True) +class QChatMessage: + type: str + + +@dataclass(init=True, frozen=True) +class QChatTextMessage(QChatMessage): + author: str + avatar: Optional[str] + text: str + + +@dataclass(init=True, frozen=True) +class QChatImageMessage(QChatMessage): + author: str + avatar: Optional[str] + image_data: str + + +@dataclass(init=True, frozen=True) +class QChatNbUsersMessage(QChatMessage): + nb_users: int + + +@dataclass(init=True, frozen=True) +class QChatNewcomerMessage(QChatMessage): + newcomer: str + + +@dataclass(init=True, frozen=True) +class QChatExiterMessage(QChatMessage): + exiter: str + + +@dataclass(init=True, frozen=True) +class QChatLikeMessage(QChatMessage): + liker_author: str + liked_author: str + message: str diff --git a/qtribu/logic/qchat_websocket.py b/qtribu/logic/qchat_websocket.py new file mode 100644 index 00000000..351b9f5e --- /dev/null +++ b/qtribu/logic/qchat_websocket.py @@ -0,0 +1,108 @@ +import dataclasses +import json +from json import JSONEncoder + +from PyQt5 import QtWebSockets # noqa QGS103 +from qgis.PyQt.QtCore import QObject, QUrl, pyqtSignal + +from qtribu.logic.qchat_messages import ( + QChatExiterMessage, + QChatImageMessage, + QChatLikeMessage, + QChatMessage, + QChatNbUsersMessage, + QChatNewcomerMessage, + QChatTextMessage, +) +from qtribu.toolbelt import PlgLogger + + +class EnhancedJSONEncoder(JSONEncoder): + """ + Custom JSON encoder for dataclass objects + """ + + def default(self, o): + if dataclasses.is_dataclass(o): + return dataclasses.asdict(o) + return super().default(o) + + +class QChatWebsocket(QObject): + """ + Websocket wrapper for handling the QChat communications and messages + """ + + def __init__(self): + super().__init__() + self.log = PlgLogger().log + + self.ws_client = QtWebSockets.QWebSocket( + "", QtWebSockets.QWebSocketProtocol.Version13, None + ) + self.ws_client.error.connect(lambda code: self.error.emit(code)) + self.ws_client.textMessageReceived.connect(self.on_message_received) + + connected = pyqtSignal() + disconnected = pyqtSignal() + error = pyqtSignal(int) + + # QChat message signals + text_message_received = pyqtSignal(QChatTextMessage) + image_message_received = pyqtSignal(QChatImageMessage) + nb_users_message_received = pyqtSignal(QChatNbUsersMessage) + newcomer_message_received = pyqtSignal(QChatNewcomerMessage) + exiter_message_received = pyqtSignal(QChatExiterMessage) + like_message_received = pyqtSignal(QChatLikeMessage) + + def open(self, qchat_instance_uri: str, room: str) -> None: + """ + Opens a websocket to a QChat instance + :param qchat_instance_uri: URI of the QChat instance to connect to + :param room: room to connect to + """ + protocol, domain = qchat_instance_uri.split("://") + ws_protocol = "wss" if protocol == "https" else "ws" + ws_instance_url = f"{ws_protocol}://{domain}" + ws_url = f"{ws_instance_url}/room/{room}/ws" + self.ws_client.open(QUrl(ws_url)) + self.ws_client.connected.connect(self.connected.emit) + + def close(self) -> None: + """ + Closes a websocket connection + """ + self.ws_client.connected.disconnect() + self.ws_client.close() + + def send_message(self, message: QChatMessage) -> None: + """ + Sends a QChat message to the websocket + """ + self.ws_client.sendTextMessage(json.dumps(message, cls=EnhancedJSONEncoder)) + + def error_string(self) -> str: + """ + Returns the websocket error string if there is any + """ + return self.ws_client.errorString() + + def on_message_received(self, text: str) -> None: + """ + Launched when a text message is received from the websocket + :param text: text message received, should be a jsonified string + """ + message = json.loads(text) + msg_type = message["type"] + if msg_type == "text": + self.text_message_received.emit(QChatTextMessage(**message)) + elif msg_type == "image": + self.image_message_received.emit(QChatImageMessage(**message)) + elif msg_type == "nb_users": + self.nb_users_message_received.emit(QChatNbUsersMessage(**message)) + elif msg_type == "newcomer": + self.newcomer_message_received.emit(QChatNewcomerMessage(**message)) + elif msg_type == "exiter": + self.exiter_message_received.emit(QChatExiterMessage(**message)) + elif msg_type == "like": + self.like_message_received.emit(QChatLikeMessage(**message)) diff --git a/qtribu/resources/sounds/dontcrybaby.mp3 b/qtribu/resources/sounds/dontcrybaby.mp3 deleted file mode 100644 index 0605dfd16f6f6baa9b8b256f0cc60be1c2301c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205053 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�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 From b4afabc142cc5174995bcfb459bfc4e2820ba984 Mon Sep 17 00:00:00 2001 From: Guilhem Allaman <40383801+gounux@users.noreply.github.com> Date: Fri, 1 Nov 2024 15:13:21 +0100 Subject: [PATCH 4/4] refactor(qchat): use custom tree widget items (#212) --- qtribu/gui/dck_qchat.py | 163 ++++------------------ qtribu/gui/qchat_tree_widget_items.py | 188 ++++++++++++++++++++++++++ 2 files changed, 218 insertions(+), 133 deletions(-) create mode 100644 qtribu/gui/qchat_tree_widget_items.py diff --git a/qtribu/gui/dck_qchat.py b/qtribu/gui/dck_qchat.py index 6a28409e..240efe98 100644 --- a/qtribu/gui/dck_qchat.py +++ b/qtribu/gui/dck_qchat.py @@ -11,23 +11,19 @@ from qgis.core import Qgis, QgsApplication from qgis.gui import QgisInterface, QgsDockWidget from qgis.PyQt import uic -from qgis.PyQt.QtCore import QPoint, Qt, QTime -from qgis.PyQt.QtGui import QBrush, QColor, QCursor, QIcon, QPixmap +from qgis.PyQt.QtCore import QPoint, Qt +from qgis.PyQt.QtGui import QCursor, QIcon from qgis.PyQt.QtWidgets import ( QAction, - QDialog, QFileDialog, - QLabel, QMenu, QMessageBox, QTreeWidgetItem, - QVBoxLayout, QWidget, ) from qtribu.__about__ import __title__ from qtribu.constants import ( - ADMIN_MESSAGES_AVATAR, ADMIN_MESSAGES_NICKNAME, CHEATCODE_10OCLOCK, CHEATCODE_DIZZY, @@ -36,6 +32,11 @@ CHEATCODES, QCHAT_NICKNAME_MINLENGTH, ) +from qtribu.gui.qchat_tree_widget_items import ( + QChatAdminTreeWidgetItem, + QChatImageTreeWidgetItem, + QChatTextTreeWidgetItem, +) from qtribu.logic.qchat_api_client import QChatApiClient from qtribu.logic.qchat_messages import ( QChatExiterMessage, @@ -426,15 +427,11 @@ def on_text_message_received(self, message: QChatTextMessage) -> None: if message.text in CHEATCODES: return + item = QChatTextTreeWidgetItem(self.twg_chat, message) + # check if message mentions current user words = message.text.split(" ") if f"@{self.settings.author_nickname}" in words or "@all" in words: - item = self.create_message_item( - message.author, - message.avatar, - message.text, - foreground_color=self.settings.qchat_color_mention, - ) if message.author != self.settings.author_nickname: self.log( message=self.tr( @@ -453,19 +450,7 @@ def on_text_message_received(self, message: QChatTextMessage) -> None: play_resource_sound( self.settings.qchat_ring_tone, self.settings.qchat_sound_volume ) - elif message.author == self.settings.author_nickname: - item = self.create_message_item( - message.author, - message.avatar, - message.text, - foreground_color=self.settings.qchat_color_self, - ) - else: - item = self.create_message_item( - message.author, - message.avatar, - message.text, - ) + self.twg_chat.addTopLevelItem(item) self.twg_chat.scrollToItem(item) @@ -473,20 +458,9 @@ def on_image_message_received(self, message: QChatImageMessage) -> None: """ Launched when an image message is received from the websocket """ - pixmap = QPixmap() - data = base64.b64decode(message.image_data) - pixmap.loadFromData(data) - item = self.create_image_item( - QTime.currentTime(), - message.author, - message.avatar, - pixmap, - ) - # set foreground color if sent by user - if message.author == self.settings.author_nickname: - for i in range(2): - item.setForeground(i, QBrush(QColor(self.settings.qchat_color_self))) + item = QChatImageTreeWidgetItem(self.twg_chat, message) self.twg_chat.addTopLevelItem(item) + self.twg_chat.scrollToItem(item) def on_nb_users_message_received(self, message: QChatNbUsersMessage) -> None: """ @@ -551,32 +525,15 @@ def on_message_clicked(self, item: QTreeWidgetItem, column: int) -> None: """ Action called when clicking on a chat message """ - author = item.text(1) - widget = self.twg_chat.itemWidget(item, 2) - # if there is a widget (QLabel) usually, - # it means that there is an image - # -> display the image in a new window - if column == 2 and widget: - pixmap = widget.pixmap() - dialog = QDialog(self) - dialog.setWindowTitle( - self.tr("QChat image sent by {author}").format(author=author) - ) - layout = QVBoxLayout() - label = QLabel() - label.setPixmap(pixmap) - layout.addWidget(label) - dialog.setLayout(layout) - dialog.setModal(True) - dialog.show() + item.on_click(column) def on_message_double_clicked(self, item: QTreeWidgetItem, column: int) -> None: """ Action called when double clicking on a chat message """ - author = item.text(1) + author = item.author # do nothing if double click on admin message - if author == ADMIN_MESSAGES_NICKNAME: + if author == ADMIN_MESSAGES_NICKNAME or author == self.settings.author_nickname: return text = self.lne_message.text() self.lne_message.setText(f"{text}@{author} ") @@ -600,26 +557,22 @@ def on_custom_context_menu_requested(self, point: QPoint) -> None: Action called when right clicking on a chat message """ item = self.twg_chat.itemAt(point) - author = item.text(1) - message = item.text(2) menu = QMenu(self.tr("QChat Menu"), self) - if ( - author != self.settings.author_nickname - and author != ADMIN_MESSAGES_NICKNAME - ): - # like message action + # like message action if possible + if item.can_be_liked: like_action = QAction( QgsApplication.getThemeIcon("mActionInOverview.svg"), self.tr("Like message"), ) like_action.triggered.connect( - partial(self.on_like_message, author, message) + partial(self.on_like_message, item.author, item.liked_message) ) menu.addAction(like_action) - # mention user action + # mention author action if possible + if item.can_be_mentioned: mention_action = QAction( QgsApplication.getThemeIcon("mMessageLogRead.svg"), self.tr("Mention user"), @@ -628,17 +581,15 @@ def on_custom_context_menu_requested(self, point: QPoint) -> None: partial(self.on_message_double_clicked, item, 2) ) menu.addAction(mention_action) - menu.addSeparator() - # copy message to clipboard action - copy_action = QAction( - QgsApplication.getThemeIcon("mActionEditCopy.svg"), - self.tr("Copy message to clipboard"), - ) - copy_action.triggered.connect( - partial(self.on_copy_message_to_clipboard, message) - ) - menu.addAction(copy_action) + # copy message to clipboard action if possible + if item.can_be_copied_to_clipboard: + copy_action = QAction( + QgsApplication.getThemeIcon("mActionEditCopy.svg"), + self.tr("Copy message to clipboard"), + ) + copy_action.triggered.connect(item.copy_to_clipboard) + menu.addAction(copy_action) # hide message action hide_action = QAction( @@ -650,12 +601,6 @@ def on_custom_context_menu_requested(self, point: QPoint) -> None: menu.exec(QCursor.pos()) - def on_copy_message_to_clipboard(self, message: str) -> None: - """ - Action called when copy to clipboard menu action is triggered - """ - QgsApplication.instance().clipboard().setText(message) - def on_hide_message(self, item: QTreeWidgetItem) -> None: """ Action called when hide message menu action is triggered @@ -770,62 +715,14 @@ def on_send_screenshot_button_clicked(self) -> None: ) self.qchat_ws.send_message(message) - def add_admin_message(self, message: str) -> None: + def add_admin_message(self, text: str) -> None: """ Adds an admin message to QTreeWidget chat """ - item = self.create_message_item( - ADMIN_MESSAGES_NICKNAME, - ADMIN_MESSAGES_AVATAR, - message, - foreground_color=self.settings.qchat_color_admin, - ) + item = QChatAdminTreeWidgetItem(self.twg_chat, text) self.twg_chat.addTopLevelItem(item) self.twg_chat.scrollToItem(item) - def create_message_item( - self, - author: str, - avatar: Optional[str], - message: str, - foreground_color: str = None, - background_color: str = None, - ) -> QTreeWidgetItem: - """ - Creates a QTreeWidgetItem for adding to QTreeWidget chat - Optionally with foreground / background colors given as hexa string - """ - item_data = [ - QTime.currentTime().toString(), - author, - message, - ] - item = QTreeWidgetItem(item_data) - if self.settings.qchat_show_avatars and avatar: - item.setIcon(1, QIcon(QgsApplication.iconPath(avatar))) - item.setToolTip(2, message) - if foreground_color: - for i in range(len(item_data)): - item.setForeground(i, QBrush(QColor(foreground_color))) - if background_color: - for i in range(len(item_data)): - item.setBackground(i, QBrush(QColor(background_color))) - return item - - def create_image_item( - self, time: QTime, author: str, avatar: Optional[str], pixmap: QPixmap - ) -> QTreeWidgetItem: - item = QTreeWidgetItem(self.twg_chat) - item.setText(0, time.toString()) - item.setText(1, author) - if self.settings.qchat_show_avatars: - item.setIcon(1, QIcon(QgsApplication.iconPath(avatar))) - label = QLabel(self.twg_chat) - label.setPixmap(pixmap) - item.treeWidget().setItemWidget(item, 2, label) - item.setSizeHint(2, pixmap.size()) - return item - def on_widget_closed(self) -> None: """ Action called when the widget is closed diff --git a/qtribu/gui/qchat_tree_widget_items.py b/qtribu/gui/qchat_tree_widget_items.py new file mode 100644 index 00000000..461bb651 --- /dev/null +++ b/qtribu/gui/qchat_tree_widget_items.py @@ -0,0 +1,188 @@ +import base64 +from typing import Optional + +from qgis.core import QgsApplication +from qgis.PyQt.QtCore import QTime +from qgis.PyQt.QtGui import QBrush, QColor, QIcon, QPixmap +from qgis.PyQt.QtWidgets import ( + QDialog, + QLabel, + QTreeWidget, + QTreeWidgetItem, + QVBoxLayout, +) + +from qtribu.constants import ADMIN_MESSAGES_AVATAR, ADMIN_MESSAGES_NICKNAME +from qtribu.logic.qchat_messages import QChatImageMessage, QChatTextMessage +from qtribu.toolbelt import PlgOptionsManager +from qtribu.toolbelt.preferences import PlgSettingsStructure + +TIME_COLUMN = 0 +AUTHOR_COLUM = 1 +MESSAGE_COLUMN = 2 + + +class QChatTreeWidgetItem(QTreeWidgetItem): + """ + Custom QTreeWidgetItem implementation for QChat + A QChatTreeWidgetItem should not be implemented + See inheriting classes for implementation + """ + + def __init__( + self, parent: QTreeWidget, time: QTime, author: str, avatar: Optional[str] + ): + super().__init__(parent) + self.plg_settings = PlgOptionsManager() + self.time = time + self.author = author + self.avatar = avatar + + @property + def settings(self) -> PlgSettingsStructure: + return self.plg_settings.get_plg_settings() + + def init_time_and_author(self) -> None: + self.setText(TIME_COLUMN, self.time.toString()) + self.setText(AUTHOR_COLUM, self.author) + if self.settings.qchat_show_avatars and self.avatar: + self.setIcon(AUTHOR_COLUM, QIcon(QgsApplication.iconPath(self.avatar))) + + def set_foreground_color(self, color: str) -> None: + fg_color = QBrush(QColor(color)) + self.setForeground(TIME_COLUMN, fg_color) + self.setForeground(AUTHOR_COLUM, fg_color) + self.setForeground(MESSAGE_COLUMN, fg_color) + + def on_click(self, column: int) -> None: + """ + Triggered when simple clicking on the item + Empty because this is the expected behaviour + :param column: column that has been clicked + """ + pass + + @property + def can_be_liked(self) -> bool: + """ + Returns if the item can be liked + """ + return self.author != self.settings.author_nickname + + @property + def liked_message(self) -> str: + """ + Returns the text message that was liked + """ + pass + + @property + def can_be_mentioned(self) -> bool: + """ + Returns if the item can be mentioned + """ + return self.author != self.settings.author_nickname + + @property + def can_be_copied_to_clipboard(self) -> bool: + """ + Returns if the item can be copied to clipboard + """ + return False + + def copy_to_clipboard(self) -> None: + """ + Performs action of copying message to clipboard + If the can_be_copied_to_clipboard is enabled ofc + """ + pass + + +class QChatAdminTreeWidgetItem(QChatTreeWidgetItem): + def __init__(self, parent: QTreeWidget, text: str): + super().__init__( + parent, QTime.currentTime(), ADMIN_MESSAGES_NICKNAME, ADMIN_MESSAGES_AVATAR + ) + self.text = text + self.init_time_and_author() + self.setText(MESSAGE_COLUMN, text) + self.setToolTip(MESSAGE_COLUMN, text) + self.set_foreground_color(self.settings.qchat_color_admin) + + @property + def can_be_liked(self) -> bool: + return False + + @property + def can_be_mentioned(self) -> bool: + return False + + +class QChatTextTreeWidgetItem(QChatTreeWidgetItem): + def __init__(self, parent: QTreeWidget, message: QChatTextMessage): + super().__init__(parent, QTime.currentTime(), message.author, message.avatar) + self.message = message + self.init_time_and_author() + self.setText(MESSAGE_COLUMN, message.text) + + # set foreground color if user is mentioned + words = message.text.split(" ") + if f"@{self.settings.author_nickname}" in words or "@all" in words: + self.set_foreground_color(self.settings.qchat_color_mention) + + # set foreground color if sent by user + if message.author == self.settings.author_nickname: + self.set_foreground_color(self.settings.qchat_color_self) + + @property + def liked_message(self) -> str: + return self.message.text + + @property + def can_be_copied_to_clipboard(self) -> bool: + return True + + def copy_to_clipboard(self) -> None: + QgsApplication.instance().clipboard().setPixmap(self.message.text) + + +class QChatImageTreeWidgetItem(QChatTreeWidgetItem): + def __init__(self, parent: QTreeWidget, message: QChatImageMessage): + super().__init__(parent, QTime.currentTime(), message.author, message.avatar) + self.message = message + self.init_time_and_author() + + # set foreground color if sent by user + if message.author == self.settings.author_nickname: + self.set_foreground_color(self.settings.qchat_color_self) + + self.pixmap = QPixmap() + data = base64.b64decode(message.image_data) + self.pixmap.loadFromData(data) + label = QLabel(self.parent()) + label.setPixmap(self.pixmap) + self.treeWidget().setItemWidget(self, MESSAGE_COLUMN, label) + self.setSizeHint(MESSAGE_COLUMN, self.pixmap.size()) + + def on_click(self, column: int) -> None: + if column == MESSAGE_COLUMN: + dialog = QDialog(self.treeWidget()) + dialog.setWindowTitle(f"QChat image {self.message.author}") + layout = QVBoxLayout() + label = QLabel() + label.setPixmap(self.pixmap) + layout.addWidget(label) + dialog.setLayout(layout) + dialog.setModal(True) + dialog.show() + + @property + def liked_message(self) -> str: + return "image" + + @property + def can_be_copied_to_clipboard(self) -> bool: + return True + + def copy_to_clipboard(self) -> None: + QgsApplication.instance().clipboard().setPixmap(self.pixmap)