def setup_message_box_layout(self): container_layout = QtWidgets.QHBoxLayout() text_area_layout = QtWidgets.QVBoxLayout() if self.chat_window.user["username"] == self.username: text_area_layout.addWidget(self.messageBox) self.textArea.setLayout(text_area_layout) container_layout.addStretch() container_layout.addWidget(self.textArea) else: username_label = QtWidgets.QLabel(f"{self.username}") username_label.setContentsMargins(5, 5, 5, 0) label_font = QtGui.QFont() label_font.setBold(True) username_label.setFont(label_font) text_area_layout.addWidget(username_label) text_area_layout.addWidget(self.messageBox) self.textArea.setLayout(text_area_layout) container_layout.addWidget(self.textArea) container_layout.addStretch() for reply in self.replies: self.add_message_reply(reply) self.textArea.layout().setSpacing(0) self.textArea.layout().setContentsMargins(0, 0, 0, 0) container_layout.setSpacing(0) container_layout.setContentsMargins(5, 5, 5, 5) self.set_message_style() self.setLayout(container_layout)
def add_message_reply(self, reply): if self.replyArea is None: self.insert_reply_area() reply_username_label = QtWidgets.QLabel(f'{reply["username"]}:') label_font = QtGui.QFont() label_font.setBold(True) reply_username_label.setFont(label_font) reply_message_box = self.get_text_browser(reply["text"]) self.replyArea.layout().addRow(reply_username_label, reply_message_box)
def setup_image_message_box(self): MAX_WIDTH = MAX_HEIGHT = 300 self.messageBox = QtWidgets.QLabel() img_url = url_join(self.chat_window.mscolab_server_url, self.attachment_path) data = requests.get(img_url).content image = QtGui.QImage() image.loadFromData(data) self.message_image = image width, height = image.size().width(), image.size().height() if width > height and width > MAX_WIDTH: image = image.scaledToWidth(MAX_WIDTH) elif height > width and height > MAX_HEIGHT: image = image.scaledToHeight(MAX_HEIGHT) self.messageBox.setPixmap(QtGui.QPixmap(image)) self.messageBox.setContentsMargins(0, 5, 0, 5) self.messageBox.show()