diff --git a/toxygen/file_transfers.py b/toxygen/file_transfers.py index 7e0b193..1bbabe5 100644 --- a/toxygen/file_transfers.py +++ b/toxygen/file_transfers.py @@ -29,7 +29,7 @@ ALLOWED_FILES = ('toxygen_inline.png', 'utox-inline.png', 'sticker.png') def is_inline(file_name): - return file_name in ALLOWED_FILES or file_name.startswith('qTox_Screenshot_') + return file_name in ALLOWED_FILES or file_name.startswith('qTox_Screenshot_') or file_name.startswith('qTox_Image_') class StateSignal(QtCore.QObject): diff --git a/toxygen/mainscreen.py b/toxygen/mainscreen.py index 7d7b9e7..93ec72d 100644 --- a/toxygen/mainscreen.py +++ b/toxygen/mainscreen.py @@ -618,7 +618,7 @@ class MainWindow(QtWidgets.QMainWindow, Singleton): for i in range(len(chats)): name, number = chats[i] item = invite_menu.addAction(name) - item.triggered.connect(lambda: self.invite_friend_to_gc(num, number)) + item.triggered.connect(lambda number=number: self.invite_friend_to_gc(num, number)) plugins_loader = plugin_support.PluginLoader.get_instance() if plugins_loader is not None: diff --git a/toxygen/mainscreen_widgets.py b/toxygen/mainscreen_widgets.py index 0d1c26b..dcbc075 100644 --- a/toxygen/mainscreen_widgets.py +++ b/toxygen/mainscreen_widgets.py @@ -73,8 +73,16 @@ class MessageArea(QtWidgets.QPlainTextEdit): if text.startswith('file://'): file_name = self.parse_file_name(text) self.parent.profile.send_file(file_name) - else: + elif text: self.insertPlainText(text) + else: + image = QtWidgets.QApplication.clipboard().image() + if image is not None: + byte_array = QtCore.QByteArray() + buffer = QtCore.QBuffer(byte_array) + buffer.open(QtCore.QIODevice.WriteOnly) + image.save(buffer, 'PNG') + self.parent.profile.send_screenshot(bytes(byte_array.data())) def parse_file_name(self, file_name): import urllib diff --git a/toxygen/profile.py b/toxygen/profile.py index 16d117d..cf15e02 100644 --- a/toxygen/profile.py +++ b/toxygen/profile.py @@ -588,13 +588,16 @@ class Profile(basecontact.BaseContact, Singleton): print('Incoming not started transfer - no info found') elif message.get_type() == MESSAGE_TYPE['INLINE']: # inline image self.create_inline_item(message.get_data(), False) - else: # info message + elif message.get_type() < 5: # info message data = message.get_data() self.create_message_item(data[0], data[2], '', data[3], False) + else: + data = message.get_data() + self.create_gc_message_item(data[0], data[2], data[1], data[4], data[3], False) self._load_history = True def export_db(self, directory): @@ -1096,10 +1099,11 @@ class Profile(basecontact.BaseContact, Singleton): file_name, friend.number, st.get_file_number()) - item = self.create_file_transfer_item(tm) friend.append_message(tm) - st.set_state_changed_handler(item.update_transfer_state) - self._messages.scrollToBottom() + if friend_number == self.get_active_number(): + item = self.create_file_transfer_item(tm) + st.set_state_changed_handler(item.update_transfer_state) + self._messages.scrollToBottom() def send_file(self, path, number=None, is_resend=False, file_id=None): """ @@ -1316,6 +1320,8 @@ class Profile(basecontact.BaseContact, Singleton): return list(groups)[0] def add_gc(self, number): + if number == -1: + return widget = self.create_friend_item() gc = GroupChat('Group chat #' + str(number), '', widget, self._tox, number) self._contacts.append(gc) diff --git a/toxygen/util.py b/toxygen/util.py index d862d56..73959c6 100644 --- a/toxygen/util.py +++ b/toxygen/util.py @@ -5,7 +5,7 @@ import sys import re -program_version = '0.4.2' +program_version = '0.4.3' def cached(func):