merge with pyqt5 branch and video sending
This commit is contained in:
parent
f8a7087779
commit
d0e2f61d03
24 changed files with 681 additions and 805 deletions
|
@ -1,14 +1,14 @@
|
||||||
language: python
|
language: python
|
||||||
python:
|
python:
|
||||||
- "3.4"
|
- "3.5"
|
||||||
|
- "3.6"
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update
|
- sudo apt-get update
|
||||||
- sudo apt-get install -y checkinstall build-essential
|
- sudo apt-get install -y checkinstall build-essential
|
||||||
- sudo apt-get install portaudio19-dev
|
- sudo apt-get install portaudio19-dev
|
||||||
- sudo apt-get install libconfig-dev libvpx-dev check -qq
|
- sudo apt-get install libconfig-dev libvpx-dev check -qq
|
||||||
|
- sudo apt-get install -y python3-pyqt5
|
||||||
install:
|
install:
|
||||||
- pip install PySide --no-index --find-links https://parkin.github.io/python-wheelhouse/;
|
|
||||||
- python ~/virtualenv/python${TRAVIS_PYTHON_VERSION}/bin/pyside_postinstall.py -install
|
|
||||||
- pip install pyaudio
|
- pip install pyaudio
|
||||||
before_script:
|
before_script:
|
||||||
# OPUS
|
# OPUS
|
||||||
|
|
6
setup.py
6
setup.py
|
@ -11,7 +11,8 @@ version = program_version + '.0'
|
||||||
MODULES = ['numpy']
|
MODULES = ['numpy']
|
||||||
|
|
||||||
if system() in ('Windows', 'Darwin'):
|
if system() in ('Windows', 'Darwin'):
|
||||||
MODULES.extend(['PyAudio', 'PySide'])
|
MODULES.extend['PyAudio', 'PyQt5']
|
||||||
|
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
import pyaudio
|
import pyaudio
|
||||||
|
@ -65,7 +66,8 @@ setup(name='Toxygen',
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Programming Language :: Python :: 3 :: Only',
|
'Programming Language :: Python :: 3 :: Only',
|
||||||
'Programming Language :: Python :: 3.4',
|
'Programming Language :: Python :: 3.5',
|
||||||
|
'Programming Language :: Python :: 3.6',
|
||||||
],
|
],
|
||||||
entry_points={
|
entry_points={
|
||||||
'console_scripts': ['toxygen=toxygen.main:main'],
|
'console_scripts': ['toxygen=toxygen.main:main'],
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
try:
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
import widgets
|
import widgets
|
||||||
import profile
|
import profile
|
||||||
import util
|
import util
|
||||||
|
@ -20,7 +17,7 @@ class IncomingCallWidget(widgets.CenteredWidget):
|
||||||
super(IncomingCallWidget, self).__init__()
|
super(IncomingCallWidget, self).__init__()
|
||||||
self.setWindowFlags(QtCore.Qt.CustomizeWindowHint | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowStaysOnTopHint)
|
self.setWindowFlags(QtCore.Qt.CustomizeWindowHint | QtCore.Qt.WindowTitleHint | QtCore.Qt.WindowStaysOnTopHint)
|
||||||
self.resize(QtCore.QSize(500, 270))
|
self.resize(QtCore.QSize(500, 270))
|
||||||
self.avatar_label = QtGui.QLabel(self)
|
self.avatar_label = QtWidgets.QLabel(self)
|
||||||
self.avatar_label.setGeometry(QtCore.QRect(10, 20, 64, 64))
|
self.avatar_label.setGeometry(QtCore.QRect(10, 20, 64, 64))
|
||||||
self.avatar_label.setScaledContents(False)
|
self.avatar_label.setScaledContents(False)
|
||||||
self.name = widgets.DataLabel(self)
|
self.name = widgets.DataLabel(self)
|
||||||
|
@ -33,11 +30,11 @@ class IncomingCallWidget(widgets.CenteredWidget):
|
||||||
self.call_type = widgets.DataLabel(self)
|
self.call_type = widgets.DataLabel(self)
|
||||||
self.call_type.setGeometry(QtCore.QRect(90, 55, 300, 25))
|
self.call_type.setGeometry(QtCore.QRect(90, 55, 300, 25))
|
||||||
self.call_type.setFont(font)
|
self.call_type.setFont(font)
|
||||||
self.accept_audio = QtGui.QPushButton(self)
|
self.accept_audio = QtWidgets.QPushButton(self)
|
||||||
self.accept_audio.setGeometry(QtCore.QRect(20, 100, 150, 150))
|
self.accept_audio.setGeometry(QtCore.QRect(20, 100, 150, 150))
|
||||||
self.accept_video = QtGui.QPushButton(self)
|
self.accept_video = QtWidgets.QPushButton(self)
|
||||||
self.accept_video.setGeometry(QtCore.QRect(170, 100, 150, 150))
|
self.accept_video.setGeometry(QtCore.QRect(170, 100, 150, 150))
|
||||||
self.decline = QtGui.QPushButton(self)
|
self.decline = QtWidgets.QPushButton(self)
|
||||||
self.decline.setGeometry(QtCore.QRect(320, 100, 150, 150))
|
self.decline.setGeometry(QtCore.QRect(320, 100, 150, 150))
|
||||||
pixmap = QtGui.QPixmap(util.curr_directory() + '/images/accept_audio.png')
|
pixmap = QtGui.QPixmap(util.curr_directory() + '/images/accept_audio.png')
|
||||||
icon = QtGui.QIcon(pixmap)
|
icon = QtGui.QIcon(pixmap)
|
||||||
|
@ -119,15 +116,14 @@ class AudioMessageRecorder(widgets.CenteredWidget):
|
||||||
|
|
||||||
def __init__(self, friend_number, name):
|
def __init__(self, friend_number, name):
|
||||||
super(AudioMessageRecorder, self).__init__()
|
super(AudioMessageRecorder, self).__init__()
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(10, 20, 250, 20))
|
self.label.setGeometry(QtCore.QRect(10, 20, 250, 20))
|
||||||
text = QtGui.QApplication.translate("MenuWindow", "Send audio message to friend {}", None, QtGui.QApplication.UnicodeUTF8)
|
text = QtWidgets.QApplication.translate("MenuWindow", "Send audio message to friend {}")
|
||||||
self.label.setText(text.format(name))
|
self.label.setText(text.format(name))
|
||||||
self.record = QtGui.QPushButton(self)
|
self.record = QtWidgets.QPushButton(self)
|
||||||
self.record.setGeometry(QtCore.QRect(20, 100, 150, 150))
|
self.record.setGeometry(QtCore.QRect(20, 100, 150, 150))
|
||||||
|
|
||||||
self.record.setText(QtGui.QApplication.translate("MenuWindow", "Start recording", None,
|
self.record.setText(QtWidgets.QApplication.translate("MenuWindow", "Start recording"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.record.clicked.connect(self.start_or_stop_recording)
|
self.record.clicked.connect(self.start_or_stop_recording)
|
||||||
self.recording = False
|
self.recording = False
|
||||||
self.friend_num = friend_number
|
self.friend_num = friend_number
|
||||||
|
@ -135,8 +131,7 @@ class AudioMessageRecorder(widgets.CenteredWidget):
|
||||||
def start_or_stop_recording(self):
|
def start_or_stop_recording(self):
|
||||||
if not self.recording:
|
if not self.recording:
|
||||||
self.recording = True
|
self.recording = True
|
||||||
self.record.setText(QtGui.QApplication.translate("MenuWindow", "Stop recording", None,
|
self.record.setText(QtWidgets.QApplication.translate("MenuWindow", "Stop recording"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
else:
|
else:
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
from settings import *
|
from settings import *
|
||||||
try:
|
from PyQt5 import QtCore, QtGui
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from toxcore_enums_and_consts import TOX_PUBLIC_KEY_SIZE
|
from toxcore_enums_and_consts import TOX_PUBLIC_KEY_SIZE
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
try:
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from PySide import QtCore
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore
|
|
||||||
from notifications import *
|
from notifications import *
|
||||||
from settings import Settings
|
from settings import Settings
|
||||||
from profile import Profile
|
from profile import Profile
|
||||||
|
@ -12,6 +9,8 @@ from plugin_support import PluginLoader
|
||||||
import queue
|
import queue
|
||||||
import threading
|
import threading
|
||||||
import util
|
import util
|
||||||
|
import cv2
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -225,7 +224,7 @@ def tox_file_recv(window, tray):
|
||||||
if not window.isActiveWindow():
|
if not window.isActiveWindow():
|
||||||
friend = profile.get_friend_by_number(friend_number)
|
friend = profile.get_friend_by_number(friend_number)
|
||||||
if settings['notifications'] and profile.status != TOX_USER_STATUS['BUSY'] and not settings.locked:
|
if settings['notifications'] and profile.status != TOX_USER_STATUS['BUSY'] and not settings.locked:
|
||||||
file_from = QtGui.QApplication.translate("Callback", "File from", None, QtGui.QApplication.UnicodeUTF8)
|
file_from = QtWidgets.QApplication.translate("Callback", "File from")
|
||||||
invoke_in_main_thread(tray_notification, file_from + ' ' + friend.name, file_name, tray, window)
|
invoke_in_main_thread(tray_notification, file_from + ' ' + friend.name, file_name, tray, window)
|
||||||
if settings['sound_notifications'] and profile.status != TOX_USER_STATUS['BUSY']:
|
if settings['sound_notifications'] and profile.status != TOX_USER_STATUS['BUSY']:
|
||||||
sound_notification(SOUND_NOTIFICATION['FILE_TRANSFER'])
|
sound_notification(SOUND_NOTIFICATION['FILE_TRANSFER'])
|
||||||
|
@ -327,6 +326,9 @@ def callback_audio(toxav, friend_number, samples, audio_samples_per_channel, aud
|
||||||
|
|
||||||
def video_receive_frame(toxav, friend_number, width, height, y, u, v, ystride, ustride, vstride, user_data):
|
def video_receive_frame(toxav, friend_number, width, height, y, u, v, ystride, ustride, vstride, user_data):
|
||||||
pass
|
pass
|
||||||
|
#frame = cv2.merge((np.asarray(y), np.asarray(u), np.asarray(v)))
|
||||||
|
#frame = cv2.cvtColor(frame, cv2.COLOR_YUV2BGR_I420)
|
||||||
|
#cv2.imshow("frame", frame)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# Callbacks - initialization
|
# Callbacks - initialization
|
||||||
|
|
|
@ -4,6 +4,8 @@ import threading
|
||||||
import settings
|
import settings
|
||||||
from toxav_enums import *
|
from toxav_enums import *
|
||||||
import cv2
|
import cv2
|
||||||
|
import itertools
|
||||||
|
import numpy as np
|
||||||
# TODO: play sound until outgoing call will be started or cancelled and add timeout
|
# TODO: play sound until outgoing call will be started or cancelled and add timeout
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,6 +57,7 @@ class AV:
|
||||||
self._toxav.call(friend_number, 32 if audio else 0, 5000 if video else 0)
|
self._toxav.call(friend_number, 32 if audio else 0, 5000 if video else 0)
|
||||||
self._calls[friend_number] = Call(audio, video)
|
self._calls[friend_number] = Call(audio, video)
|
||||||
self.start_audio_thread()
|
self.start_audio_thread()
|
||||||
|
self.start_video_thread()
|
||||||
|
|
||||||
def accept_call(self, friend_number, audio_enabled, video_enabled):
|
def accept_call(self, friend_number, audio_enabled, video_enabled):
|
||||||
|
|
||||||
|
@ -133,9 +136,9 @@ class AV:
|
||||||
self._video_running = True
|
self._video_running = True
|
||||||
|
|
||||||
self._video = cv2.VideoCapture(0)
|
self._video = cv2.VideoCapture(0)
|
||||||
self._video.set(cv2.CV_CAP_PROP_FPS, 25)
|
self._video.set(cv2.CAP_PROP_FPS, 25)
|
||||||
self._video.set(cv2.CV_CAP_PROP_FRAME_WIDTH, 640)
|
self._video.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
|
||||||
self._video.set(cv2.CV_CAP_PROP_FRAME_HEIGHT, 480)
|
self._video.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
|
||||||
|
|
||||||
self._video_thread = threading.Thread(target=self.send_video)
|
self._video_thread = threading.Thread(target=self.send_video)
|
||||||
self._video_thread.start()
|
self._video_thread.start()
|
||||||
|
@ -206,14 +209,23 @@ class AV:
|
||||||
y, u, v = convert_bgr_to_yuv(frame)
|
y, u, v = convert_bgr_to_yuv(frame)
|
||||||
self._toxav.video_send_frame(friend_num, width, height, y, u, v)
|
self._toxav.video_send_frame(friend_num, width, height, y, u, v)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print('1', e)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print('2', e)
|
||||||
|
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
|
|
||||||
|
|
||||||
def convert_bgr_to_yuv(frame):
|
def convert_bgr_to_yuv(frame):
|
||||||
print(frame.tostring())
|
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2YUV_I420)
|
||||||
print(dir(frame))
|
y = frame[:480,:].tolist()
|
||||||
return 0, 0, 0
|
y = list(itertools.chain.from_iterable(y))
|
||||||
|
v = np.zeros((240, 320), dtype=np.int)
|
||||||
|
v[::2,:] = frame[480:600, :320]
|
||||||
|
v[1::2,:] = frame[480:600, 320:]
|
||||||
|
v = list(itertools.chain.from_iterable(v))
|
||||||
|
u = np.zeros((240, 320), dtype=np.int)
|
||||||
|
u[::2,:] = frame[600:, :320]
|
||||||
|
u[1::2,:] = frame[600:, 320:]
|
||||||
|
u = list(itertools.chain.from_iterable(u))
|
||||||
|
return bytes(y), bytes(v), bytes(u)
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
try:
|
from PyQt5 import QtCore, QtGui
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from history import *
|
from history import *
|
||||||
import basecontact
|
import basecontact
|
||||||
import util
|
import util
|
||||||
|
|
|
@ -4,11 +4,7 @@ from os import remove, rename, chdir
|
||||||
from time import time, sleep
|
from time import time, sleep
|
||||||
from tox import Tox
|
from tox import Tox
|
||||||
import settings
|
import settings
|
||||||
try:
|
from PyQt5 import QtCore
|
||||||
from PySide import QtCore
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore
|
|
||||||
QtCore.Signal = QtCore.pyqtSignal
|
|
||||||
|
|
||||||
|
|
||||||
TOX_FILE_TRANSFER_STATE = {
|
TOX_FILE_TRANSFER_STATE = {
|
||||||
|
@ -38,12 +34,12 @@ def is_inline(file_name):
|
||||||
|
|
||||||
class StateSignal(QtCore.QObject):
|
class StateSignal(QtCore.QObject):
|
||||||
|
|
||||||
signal = QtCore.Signal(int, float, int) # state, progress, time in sec
|
signal = QtCore.pyqtSignal(int, float, int) # state, progress, time in sec
|
||||||
|
|
||||||
|
|
||||||
class TransferFinishedSignal(QtCore.QObject):
|
class TransferFinishedSignal(QtCore.QObject):
|
||||||
|
|
||||||
signal = QtCore.Signal(int, int) # friend number, file number
|
signal = QtCore.pyqtSignal(int, int) # friend number, file number
|
||||||
|
|
||||||
|
|
||||||
class FileTransfer(QtCore.QObject):
|
class FileTransfer(QtCore.QObject):
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
try:
|
from PyQt5 import QtWidgets, QtCore
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from list_items import *
|
from list_items import *
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,7 +10,7 @@ class ItemsFactory:
|
||||||
|
|
||||||
def friend_item(self):
|
def friend_item(self):
|
||||||
item = ContactItem()
|
item = ContactItem()
|
||||||
elem = QtGui.QListWidgetItem(self._friends)
|
elem = QtWidgets.QListWidgetItem(self._friends)
|
||||||
elem.setSizeHint(QtCore.QSize(250, item.height()))
|
elem.setSizeHint(QtCore.QSize(250, item.height()))
|
||||||
self._friends.addItem(elem)
|
self._friends.addItem(elem)
|
||||||
self._friends.setItemWidget(elem, item)
|
self._friends.setItemWidget(elem, item)
|
||||||
|
@ -23,7 +20,7 @@ class ItemsFactory:
|
||||||
item = MessageItem(text, time, name, sent, message_type, self._messages)
|
item = MessageItem(text, time, name, sent, message_type, self._messages)
|
||||||
if pixmap is not None:
|
if pixmap is not None:
|
||||||
item.set_avatar(pixmap)
|
item.set_avatar(pixmap)
|
||||||
elem = QtGui.QListWidgetItem()
|
elem = QtWidgets.QListWidgetItem()
|
||||||
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
||||||
if append:
|
if append:
|
||||||
self._messages.addItem(elem)
|
self._messages.addItem(elem)
|
||||||
|
@ -33,7 +30,7 @@ class ItemsFactory:
|
||||||
return item
|
return item
|
||||||
|
|
||||||
def inline_item(self, data, append):
|
def inline_item(self, data, append):
|
||||||
elem = QtGui.QListWidgetItem()
|
elem = QtWidgets.QListWidgetItem()
|
||||||
item = InlineImageItem(data, self._messages.width(), elem)
|
item = InlineImageItem(data, self._messages.width(), elem)
|
||||||
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
||||||
if append:
|
if append:
|
||||||
|
@ -49,7 +46,7 @@ class ItemsFactory:
|
||||||
name,
|
name,
|
||||||
time,
|
time,
|
||||||
self._messages.width())
|
self._messages.width())
|
||||||
elem = QtGui.QListWidgetItem()
|
elem = QtWidgets.QListWidgetItem()
|
||||||
elem.setSizeHint(QtCore.QSize(self._messages.width() - 30, 34))
|
elem.setSizeHint(QtCore.QSize(self._messages.width() - 30, 34))
|
||||||
if append:
|
if append:
|
||||||
self._messages.addItem(elem)
|
self._messages.addItem(elem)
|
||||||
|
@ -61,7 +58,7 @@ class ItemsFactory:
|
||||||
def file_transfer_item(self, data, append):
|
def file_transfer_item(self, data, append):
|
||||||
data.append(self._messages.width())
|
data.append(self._messages.width())
|
||||||
item = FileTransferItem(*data)
|
item = FileTransferItem(*data)
|
||||||
elem = QtGui.QListWidgetItem()
|
elem = QtWidgets.QListWidgetItem()
|
||||||
elem.setSizeHint(QtCore.QSize(self._messages.width() - 30, 34))
|
elem.setSizeHint(QtCore.QSize(self._messages.width() - 30, 34))
|
||||||
if append:
|
if append:
|
||||||
self._messages.addItem(elem)
|
self._messages.addItem(elem)
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
from toxcore_enums_and_consts import *
|
from toxcore_enums_and_consts import *
|
||||||
try:
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
QtCore.Slot = QtCore.pyqtSlot
|
|
||||||
import profile
|
import profile
|
||||||
from file_transfers import TOX_FILE_TRANSFER_STATE, PAUSED_FILE_TRANSFERS, DO_NOT_SHOW_ACCEPT_BUTTON, ACTIVE_FILE_TRANSFERS, SHOW_PROGRESS_BAR
|
from file_transfers import TOX_FILE_TRANSFER_STATE, PAUSED_FILE_TRANSFERS, DO_NOT_SHOW_ACCEPT_BUTTON, ACTIVE_FILE_TRANSFERS, SHOW_PROGRESS_BAR
|
||||||
from util import curr_directory, convert_time, curr_time
|
from util import curr_directory, convert_time, curr_time
|
||||||
|
@ -14,7 +10,7 @@ import settings
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
class MessageEdit(QtGui.QTextBrowser):
|
class MessageEdit(QtWidgets.QTextBrowser):
|
||||||
|
|
||||||
def __init__(self, text, width, message_type, parent=None):
|
def __init__(self, text, width, message_type, parent=None):
|
||||||
super(MessageEdit, self).__init__(parent)
|
super(MessageEdit, self).__init__(parent)
|
||||||
|
@ -46,7 +42,7 @@ class MessageEdit(QtGui.QTextBrowser):
|
||||||
|
|
||||||
def contextMenuEvent(self, event):
|
def contextMenuEvent(self, event):
|
||||||
menu = create_menu(self.createStandardContextMenu(event.pos()))
|
menu = create_menu(self.createStandardContextMenu(event.pos()))
|
||||||
quote = menu.addAction(QtGui.QApplication.translate("MainWindow", 'Quote selected text', None, QtGui.QApplication.UnicodeUTF8))
|
quote = menu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Quote selected text'))
|
||||||
quote.triggered.connect(self.quote_text)
|
quote.triggered.connect(self.quote_text)
|
||||||
text = self.textCursor().selection().toPlainText()
|
text = self.textCursor().selection().toPlainText()
|
||||||
if not text:
|
if not text:
|
||||||
|
@ -55,7 +51,7 @@ class MessageEdit(QtGui.QTextBrowser):
|
||||||
import plugin_support
|
import plugin_support
|
||||||
submenu = plugin_support.PluginLoader.get_instance().get_message_menu(menu, text)
|
submenu = plugin_support.PluginLoader.get_instance().get_message_menu(menu, text)
|
||||||
if len(submenu):
|
if len(submenu):
|
||||||
plug = menu.addMenu(QtGui.QApplication.translate("MainWindow", 'Plugins', None, QtGui.QApplication.UnicodeUTF8))
|
plug = menu.addMenu(QtWidgets.QApplication.translate("MainWindow", 'Plugins'))
|
||||||
plug.addActions(submenu)
|
plug.addActions(submenu)
|
||||||
menu.popup(event.globalPos())
|
menu.popup(event.globalPos())
|
||||||
menu.exec_(event.globalPos())
|
menu.exec_(event.globalPos())
|
||||||
|
@ -123,12 +119,12 @@ class MessageEdit(QtGui.QTextBrowser):
|
||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
class MessageItem(QtGui.QWidget):
|
class MessageItem(QtWidgets.QWidget):
|
||||||
"""
|
"""
|
||||||
Message in messages list
|
Message in messages list
|
||||||
"""
|
"""
|
||||||
def __init__(self, text, time, user='', sent=True, message_type=TOX_MESSAGE_TYPE['NORMAL'], parent=None):
|
def __init__(self, text, time, user='', sent=True, message_type=TOX_MESSAGE_TYPE['NORMAL'], parent=None):
|
||||||
QtGui.QWidget.__init__(self, parent)
|
QtWidgets.QWidget.__init__(self, parent)
|
||||||
self.name = DataLabel(self)
|
self.name = DataLabel(self)
|
||||||
self.name.setGeometry(QtCore.QRect(2, 2, 95, 23))
|
self.name.setGeometry(QtCore.QRect(2, 2, 95, 23))
|
||||||
self.name.setTextFormat(QtCore.Qt.PlainText)
|
self.name.setTextFormat(QtCore.Qt.PlainText)
|
||||||
|
@ -139,7 +135,7 @@ class MessageItem(QtGui.QWidget):
|
||||||
self.name.setFont(font)
|
self.name.setFont(font)
|
||||||
self.name.setText(user)
|
self.name.setText(user)
|
||||||
|
|
||||||
self.time = QtGui.QLabel(self)
|
self.time = QtWidgets.QLabel(self)
|
||||||
self.time.setGeometry(QtCore.QRect(parent.width() - 60, 0, 50, 25))
|
self.time.setGeometry(QtCore.QRect(parent.width() - 60, 0, 50, 25))
|
||||||
font.setPointSize(10)
|
font.setPointSize(10)
|
||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
|
@ -164,9 +160,9 @@ class MessageItem(QtGui.QWidget):
|
||||||
|
|
||||||
def mouseReleaseEvent(self, event):
|
def mouseReleaseEvent(self, event):
|
||||||
if event.button() == QtCore.Qt.RightButton and event.x() > self.time.x():
|
if event.button() == QtCore.Qt.RightButton and event.x() > self.time.x():
|
||||||
self.listMenu = QtGui.QMenu()
|
self.listMenu = QtWidgets.QMenu()
|
||||||
delete_item = self.listMenu.addAction(QtGui.QApplication.translate("MainWindow", 'Delete message', None, QtGui.QApplication.UnicodeUTF8))
|
delete_item = self.listMenu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Delete message'))
|
||||||
self.connect(delete_item, QtCore.SIGNAL("triggered()"), self.delete)
|
delete_item.triggered.connect(self.delete)
|
||||||
parent_position = self.time.mapToGlobal(QtCore.QPoint(0, 0))
|
parent_position = self.time.mapToGlobal(QtCore.QPoint(0, 0))
|
||||||
self.listMenu.move(parent_position)
|
self.listMenu.move(parent_position)
|
||||||
self.listMenu.show()
|
self.listMenu.show()
|
||||||
|
@ -216,16 +212,16 @@ class MessageItem(QtGui.QWidget):
|
||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
class ContactItem(QtGui.QWidget):
|
class ContactItem(QtWidgets.QWidget):
|
||||||
"""
|
"""
|
||||||
Contact in friends list
|
Contact in friends list
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QtGui.QWidget.__init__(self, parent)
|
QtWidgets.QWidget.__init__(self, parent)
|
||||||
mode = settings.Settings.get_instance()['compact_mode']
|
mode = settings.Settings.get_instance()['compact_mode']
|
||||||
self.setBaseSize(QtCore.QSize(250, 40 if mode else 70))
|
self.setBaseSize(QtCore.QSize(250, 40 if mode else 70))
|
||||||
self.avatar_label = QtGui.QLabel(self)
|
self.avatar_label = QtWidgets.QLabel(self)
|
||||||
size = 32 if mode else 64
|
size = 32 if mode else 64
|
||||||
self.avatar_label.setGeometry(QtCore.QRect(3, 4, size, size))
|
self.avatar_label.setGeometry(QtCore.QRect(3, 4, size, size))
|
||||||
self.avatar_label.setScaledContents(False)
|
self.avatar_label.setScaledContents(False)
|
||||||
|
@ -248,14 +244,14 @@ class ContactItem(QtGui.QWidget):
|
||||||
self.messages.setGeometry(QtCore.QRect(20 if mode else 52, 20 if mode else 50, 30, 20))
|
self.messages.setGeometry(QtCore.QRect(20 if mode else 52, 20 if mode else 50, 30, 20))
|
||||||
|
|
||||||
|
|
||||||
class StatusCircle(QtGui.QWidget):
|
class StatusCircle(QtWidgets.QWidget):
|
||||||
"""
|
"""
|
||||||
Connection status
|
Connection status
|
||||||
"""
|
"""
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
QtGui.QWidget.__init__(self, parent)
|
QtWidgets.QWidget.__init__(self, parent)
|
||||||
self.setGeometry(0, 0, 32, 32)
|
self.setGeometry(0, 0, 32, 32)
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(0, 0, 32, 32))
|
self.label.setGeometry(QtCore.QRect(0, 0, 32, 32))
|
||||||
self.unread = False
|
self.unread = False
|
||||||
|
|
||||||
|
@ -281,12 +277,12 @@ class StatusCircle(QtGui.QWidget):
|
||||||
self.label.setPixmap(pixmap)
|
self.label.setPixmap(pixmap)
|
||||||
|
|
||||||
|
|
||||||
class UnreadMessagesCount(QtGui.QWidget):
|
class UnreadMessagesCount(QtWidgets.QWidget):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(UnreadMessagesCount, self).__init__(parent)
|
super(UnreadMessagesCount, self).__init__(parent)
|
||||||
self.resize(30, 20)
|
self.resize(30, 20)
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(0, 0, 30, 20))
|
self.label.setGeometry(QtCore.QRect(0, 0, 30, 20))
|
||||||
self.label.setVisible(False)
|
self.label.setVisible(False)
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
|
@ -308,11 +304,11 @@ class UnreadMessagesCount(QtGui.QWidget):
|
||||||
self.label.setVisible(False)
|
self.label.setVisible(False)
|
||||||
|
|
||||||
|
|
||||||
class FileTransferItem(QtGui.QListWidget):
|
class FileTransferItem(QtWidgets.QListWidget):
|
||||||
|
|
||||||
def __init__(self, file_name, size, time, user, friend_number, file_number, state, width, parent=None):
|
def __init__(self, file_name, size, time, user, friend_number, file_number, state, width, parent=None):
|
||||||
|
|
||||||
QtGui.QListWidget.__init__(self, parent)
|
QtWidgets.QListWidget.__init__(self, parent)
|
||||||
self.resize(QtCore.QSize(width, 34))
|
self.resize(QtCore.QSize(width, 34))
|
||||||
if state == TOX_FILE_TRANSFER_STATE['CANCELLED']:
|
if state == TOX_FILE_TRANSFER_STATE['CANCELLED']:
|
||||||
self.setStyleSheet('QListWidget { border: 1px solid #B40404; }')
|
self.setStyleSheet('QListWidget { border: 1px solid #B40404; }')
|
||||||
|
@ -332,14 +328,14 @@ class FileTransferItem(QtGui.QListWidget):
|
||||||
self.name.setFont(font)
|
self.name.setFont(font)
|
||||||
self.name.setText(user)
|
self.name.setText(user)
|
||||||
|
|
||||||
self.time = QtGui.QLabel(self)
|
self.time = QtWidgets.QLabel(self)
|
||||||
self.time.setGeometry(QtCore.QRect(width - 60, 7, 50, 25))
|
self.time.setGeometry(QtCore.QRect(width - 60, 7, 50, 25))
|
||||||
font.setPointSize(10)
|
font.setPointSize(10)
|
||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
self.time.setFont(font)
|
self.time.setFont(font)
|
||||||
self.time.setText(convert_time(time))
|
self.time.setText(convert_time(time))
|
||||||
|
|
||||||
self.cancel = QtGui.QPushButton(self)
|
self.cancel = QtWidgets.QPushButton(self)
|
||||||
self.cancel.setGeometry(QtCore.QRect(width - 125, 2, 30, 30))
|
self.cancel.setGeometry(QtCore.QRect(width - 125, 2, 30, 30))
|
||||||
pixmap = QtGui.QPixmap(curr_directory() + '/images/decline.png')
|
pixmap = QtGui.QPixmap(curr_directory() + '/images/decline.png')
|
||||||
icon = QtGui.QIcon(pixmap)
|
icon = QtGui.QIcon(pixmap)
|
||||||
|
@ -349,7 +345,7 @@ class FileTransferItem(QtGui.QListWidget):
|
||||||
self.cancel.clicked.connect(lambda: self.cancel_transfer(friend_number, file_number))
|
self.cancel.clicked.connect(lambda: self.cancel_transfer(friend_number, file_number))
|
||||||
self.cancel.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none;}')
|
self.cancel.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none;}')
|
||||||
|
|
||||||
self.accept_or_pause = QtGui.QPushButton(self)
|
self.accept_or_pause = QtWidgets.QPushButton(self)
|
||||||
self.accept_or_pause.setGeometry(QtCore.QRect(width - 170, 2, 30, 30))
|
self.accept_or_pause.setGeometry(QtCore.QRect(width - 170, 2, 30, 30))
|
||||||
if state == TOX_FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']:
|
if state == TOX_FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']:
|
||||||
self.accept_or_pause.setVisible(True)
|
self.accept_or_pause.setVisible(True)
|
||||||
|
@ -366,7 +362,7 @@ class FileTransferItem(QtGui.QListWidget):
|
||||||
|
|
||||||
self.accept_or_pause.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none}')
|
self.accept_or_pause.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none}')
|
||||||
|
|
||||||
self.pb = QtGui.QProgressBar(self)
|
self.pb = QtWidgets.QProgressBar(self)
|
||||||
self.pb.setGeometry(QtCore.QRect(100, 7, 100, 20))
|
self.pb.setGeometry(QtCore.QRect(100, 7, 100, 20))
|
||||||
self.pb.setValue(0)
|
self.pb.setValue(0)
|
||||||
self.pb.setStyleSheet('QProgressBar { background-color: #302F2F; }')
|
self.pb.setStyleSheet('QProgressBar { background-color: #302F2F; }')
|
||||||
|
@ -387,7 +383,7 @@ class FileTransferItem(QtGui.QListWidget):
|
||||||
self.file_name.setText(file_data)
|
self.file_name.setText(file_data)
|
||||||
self.file_name.setToolTip(file_name)
|
self.file_name.setToolTip(file_name)
|
||||||
self.saved_name = file_name
|
self.saved_name = file_name
|
||||||
self.time_left = QtGui.QLabel(self)
|
self.time_left = QtWidgets.QLabel(self)
|
||||||
self.time_left.setGeometry(QtCore.QRect(width - 92, 7, 30, 20))
|
self.time_left.setGeometry(QtCore.QRect(width - 92, 7, 30, 20))
|
||||||
font.setPointSize(10)
|
font.setPointSize(10)
|
||||||
self.time_left.setFont(font)
|
self.time_left.setFont(font)
|
||||||
|
@ -405,10 +401,10 @@ class FileTransferItem(QtGui.QListWidget):
|
||||||
|
|
||||||
def accept_or_pause_transfer(self, friend_number, file_number, size):
|
def accept_or_pause_transfer(self, friend_number, file_number, size):
|
||||||
if self.state == TOX_FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']:
|
if self.state == TOX_FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']:
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(self,
|
directory = QtWidgets.QFileDialog.getExistingDirectory(self,
|
||||||
QtGui.QApplication.translate("MainWindow", 'Choose folder', None, QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QApplication.translate("MainWindow", 'Choose folder'),
|
||||||
curr_directory(),
|
curr_directory(),
|
||||||
QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontUseNativeDialog)
|
QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
self.pb.setVisible(True)
|
self.pb.setVisible(True)
|
||||||
if directory:
|
if directory:
|
||||||
pr = profile.Profile.get_instance()
|
pr = profile.Profile.get_instance()
|
||||||
|
@ -432,8 +428,7 @@ class FileTransferItem(QtGui.QListWidget):
|
||||||
self.accept_or_pause.setIcon(icon)
|
self.accept_or_pause.setIcon(icon)
|
||||||
self.accept_or_pause.setIconSize(QtCore.QSize(30, 30))
|
self.accept_or_pause.setIconSize(QtCore.QSize(30, 30))
|
||||||
|
|
||||||
@QtCore.Slot(int, float, int)
|
def update_transfer_state(self, state, progress, time):
|
||||||
def update(self, state, progress, time):
|
|
||||||
self.pb.setValue(int(progress * 100))
|
self.pb.setValue(int(progress * 100))
|
||||||
if time + 1:
|
if time + 1:
|
||||||
m, s = divmod(time, 60)
|
m, s = divmod(time, 60)
|
||||||
|
@ -496,14 +491,14 @@ class UnsentFileItem(FileTransferItem):
|
||||||
pr.cancel_not_started_transfer(self._time)
|
pr.cancel_not_started_transfer(self._time)
|
||||||
|
|
||||||
|
|
||||||
class InlineImageItem(QtGui.QScrollArea):
|
class InlineImageItem(QtWidgets.QScrollArea):
|
||||||
|
|
||||||
def __init__(self, data, width, elem):
|
def __init__(self, data, width, elem):
|
||||||
|
|
||||||
QtGui.QScrollArea.__init__(self)
|
QtWidgets.QScrollArea.__init__(self)
|
||||||
self.setFocusPolicy(QtCore.Qt.NoFocus)
|
self.setFocusPolicy(QtCore.Qt.NoFocus)
|
||||||
self._elem = elem
|
self._elem = elem
|
||||||
self._image_label = QtGui.QLabel(self)
|
self._image_label = QtWidgets.QLabel(self)
|
||||||
self._image_label.raise_()
|
self._image_label.raise_()
|
||||||
self.setWidget(self._image_label)
|
self.setWidget(self._image_label)
|
||||||
self._image_label.setScaledContents(False)
|
self._image_label.setScaledContents(False)
|
||||||
|
@ -537,12 +532,11 @@ class InlineImageItem(QtGui.QScrollArea):
|
||||||
self._full_size = not self._full_size
|
self._full_size = not self._full_size
|
||||||
self._elem.setSizeHint(QtCore.QSize(self.width(), self.height()))
|
self._elem.setSizeHint(QtCore.QSize(self.width(), self.height()))
|
||||||
elif event.button() == QtCore.Qt.RightButton: # save inline
|
elif event.button() == QtCore.Qt.RightButton: # save inline
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(self,
|
directory = QtWidgets.QFileDialog.getExistingDirectory(self,
|
||||||
QtGui.QApplication.translate("MainWindow",
|
QtWidgets.QApplication.translate("MainWindow",
|
||||||
'Choose folder', None,
|
'Choose folder'),
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
|
||||||
curr_directory(),
|
curr_directory(),
|
||||||
QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontUseNativeDialog)
|
QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
if directory:
|
if directory:
|
||||||
fl = QtCore.QFile(directory + '/toxygen_inline_' + curr_time().replace(':', '_') + '.png')
|
fl = QtCore.QFile(directory + '/toxygen_inline_' + curr_time().replace(':', '_') + '.png')
|
||||||
self._pixmap.save(fl, 'PNG')
|
self._pixmap.save(fl, 'PNG')
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
# -*- coding: utf-8 -*-
|
from PyQt5 import QtWidgets, QtCore
|
||||||
|
|
||||||
try:
|
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from widgets import *
|
from widgets import *
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,25 +26,25 @@ class LoginScreen(CenteredWidget):
|
||||||
self.resize(400, 200)
|
self.resize(400, 200)
|
||||||
self.setMinimumSize(QtCore.QSize(400, 200))
|
self.setMinimumSize(QtCore.QSize(400, 200))
|
||||||
self.setMaximumSize(QtCore.QSize(400, 200))
|
self.setMaximumSize(QtCore.QSize(400, 200))
|
||||||
self.new_profile = QtGui.QPushButton(self)
|
self.new_profile = QtWidgets.QPushButton(self)
|
||||||
self.new_profile.setGeometry(QtCore.QRect(20, 150, 171, 27))
|
self.new_profile.setGeometry(QtCore.QRect(20, 150, 171, 27))
|
||||||
self.new_profile.clicked.connect(self.create_profile)
|
self.new_profile.clicked.connect(self.create_profile)
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(20, 70, 101, 17))
|
self.label.setGeometry(QtCore.QRect(20, 70, 101, 17))
|
||||||
self.new_name = NickEdit(self)
|
self.new_name = NickEdit(self)
|
||||||
self.new_name.setGeometry(QtCore.QRect(20, 100, 171, 31))
|
self.new_name.setGeometry(QtCore.QRect(20, 100, 171, 31))
|
||||||
self.load_profile = QtGui.QPushButton(self)
|
self.load_profile = QtWidgets.QPushButton(self)
|
||||||
self.load_profile.setGeometry(QtCore.QRect(220, 150, 161, 27))
|
self.load_profile.setGeometry(QtCore.QRect(220, 150, 161, 27))
|
||||||
self.load_profile.clicked.connect(self.load_ex_profile)
|
self.load_profile.clicked.connect(self.load_ex_profile)
|
||||||
self.default = QtGui.QCheckBox(self)
|
self.default = QtWidgets.QCheckBox(self)
|
||||||
self.default.setGeometry(QtCore.QRect(220, 110, 131, 22))
|
self.default.setGeometry(QtCore.QRect(220, 110, 131, 22))
|
||||||
self.groupBox = QtGui.QGroupBox(self)
|
self.groupBox = QtWidgets.QGroupBox(self)
|
||||||
self.groupBox.setGeometry(QtCore.QRect(210, 40, 181, 151))
|
self.groupBox.setGeometry(QtCore.QRect(210, 40, 181, 151))
|
||||||
self.comboBox = QtGui.QComboBox(self.groupBox)
|
self.comboBox = QtWidgets.QComboBox(self.groupBox)
|
||||||
self.comboBox.setGeometry(QtCore.QRect(10, 30, 161, 27))
|
self.comboBox.setGeometry(QtCore.QRect(10, 30, 161, 27))
|
||||||
self.groupBox_2 = QtGui.QGroupBox(self)
|
self.groupBox_2 = QtWidgets.QGroupBox(self)
|
||||||
self.groupBox_2.setGeometry(QtCore.QRect(10, 40, 191, 151))
|
self.groupBox_2.setGeometry(QtCore.QRect(10, 40, 191, 151))
|
||||||
self.toxygen = QtGui.QLabel(self)
|
self.toxygen = QtWidgets.QLabel(self)
|
||||||
self.groupBox.raise_()
|
self.groupBox.raise_()
|
||||||
self.groupBox_2.raise_()
|
self.groupBox_2.raise_()
|
||||||
self.comboBox.raise_()
|
self.comboBox.raise_()
|
||||||
|
@ -71,15 +66,15 @@ class LoginScreen(CenteredWidget):
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.new_name.setPlaceholderText(QtGui.QApplication.translate("login", "Profile name", None, QtGui.QApplication.UnicodeUTF8))
|
self.new_name.setPlaceholderText(QtWidgets.QApplication.translate("login", "Profile name"))
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("login", "Log in", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("login", "Log in"))
|
||||||
self.new_profile.setText(QtGui.QApplication.translate("login", "Create", None, QtGui.QApplication.UnicodeUTF8))
|
self.new_profile.setText(QtWidgets.QApplication.translate("login", "Create"))
|
||||||
self.label.setText(QtGui.QApplication.translate("login", "Profile name:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label.setText(QtWidgets.QApplication.translate("login", "Profile name:"))
|
||||||
self.load_profile.setText(QtGui.QApplication.translate("login", "Load profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.load_profile.setText(QtWidgets.QApplication.translate("login", "Load profile"))
|
||||||
self.default.setText(QtGui.QApplication.translate("login", "Use as default", None, QtGui.QApplication.UnicodeUTF8))
|
self.default.setText(QtWidgets.QApplication.translate("login", "Use as default"))
|
||||||
self.groupBox.setTitle(QtGui.QApplication.translate("login", "Load existing profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.groupBox.setTitle(QtWidgets.QApplication.translate("login", "Load existing profile"))
|
||||||
self.groupBox_2.setTitle(QtGui.QApplication.translate("login", "Create new profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.groupBox_2.setTitle(QtWidgets.QApplication.translate("login", "Create new profile"))
|
||||||
self.toxygen.setText(QtGui.QApplication.translate("login", "toxygen", None, QtGui.QApplication.UnicodeUTF8))
|
self.toxygen.setText(QtWidgets.QApplication.translate("login", "toxygen"))
|
||||||
|
|
||||||
def create_profile(self):
|
def create_profile(self):
|
||||||
self.type = 1
|
self.type = 1
|
||||||
|
|
129
toxygen/main.py
129
toxygen/main.py
|
@ -2,10 +2,7 @@ import sys
|
||||||
from loginscreen import LoginScreen
|
from loginscreen import LoginScreen
|
||||||
import profile
|
import profile
|
||||||
from settings import *
|
from settings import *
|
||||||
try:
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from bootstrap import node_generator
|
from bootstrap import node_generator
|
||||||
from mainscreen import MainWindow
|
from mainscreen import MainWindow
|
||||||
from callbacks import init_callbacks, stop, start
|
from callbacks import init_callbacks, stop, start
|
||||||
|
@ -39,7 +36,7 @@ class Toxygen:
|
||||||
tmp = [data]
|
tmp = [data]
|
||||||
p = PasswordScreen(toxes.ToxES.get_instance(), tmp)
|
p = PasswordScreen(toxes.ToxES.get_instance(), tmp)
|
||||||
p.show()
|
p.show()
|
||||||
self.app.connect(self.app, QtCore.SIGNAL("lastWindowClosed()"), self.app, QtCore.SLOT("quit()"))
|
self.app.lastWindowClosed.connect(self.app.quit)
|
||||||
self.app.exec_()
|
self.app.exec_()
|
||||||
if tmp[0] == data:
|
if tmp[0] == data:
|
||||||
raise SystemExit()
|
raise SystemExit()
|
||||||
|
@ -50,7 +47,7 @@ class Toxygen:
|
||||||
"""
|
"""
|
||||||
Main function of app. loads login screen if needed and starts main screen
|
Main function of app. loads login screen if needed and starts main screen
|
||||||
"""
|
"""
|
||||||
app = QtGui.QApplication(sys.argv)
|
app = QtWidgets.QApplication(sys.argv)
|
||||||
app.setWindowIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
|
app.setWindowIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
|
||||||
self.app = app
|
self.app = app
|
||||||
|
|
||||||
|
@ -92,7 +89,6 @@ class Toxygen:
|
||||||
_login = self.Login(profiles)
|
_login = self.Login(profiles)
|
||||||
ls.update_on_close(_login.login_screen_close)
|
ls.update_on_close(_login.login_screen_close)
|
||||||
ls.show()
|
ls.show()
|
||||||
app.connect(app, QtCore.SIGNAL("lastWindowClosed()"), app, QtCore.SLOT("quit()"))
|
|
||||||
app.exec_()
|
app.exec_()
|
||||||
if not _login.t:
|
if not _login.t:
|
||||||
return
|
return
|
||||||
|
@ -101,40 +97,35 @@ class Toxygen:
|
||||||
name = _login.name if _login.name else 'toxygen_user'
|
name = _login.name if _login.name else 'toxygen_user'
|
||||||
pr = map(lambda x: x[1], ProfileHelper.find_profiles())
|
pr = map(lambda x: x[1], ProfileHelper.find_profiles())
|
||||||
if name in list(pr):
|
if name in list(pr):
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(
|
msgBox.setWindowTitle(
|
||||||
QtGui.QApplication.translate("MainWindow", "Error", None, QtGui.QApplication.UnicodeUTF8))
|
QtWidgets.QApplication.translate("MainWindow", "Error"))
|
||||||
text = (QtGui.QApplication.translate("MainWindow",
|
text = (QtWidgets.QApplication.translate("MainWindow",
|
||||||
'Profile with this name already exists',
|
'Profile with this name already exists'))
|
||||||
None, QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
return
|
return
|
||||||
self.tox = profile.tox_factory()
|
self.tox = profile.tox_factory()
|
||||||
self.tox.self_set_name(bytes(_login.name, 'utf-8') if _login.name else b'Toxygen User')
|
self.tox.self_set_name(bytes(_login.name, 'utf-8') if _login.name else b'Toxygen User')
|
||||||
self.tox.self_set_status_message(b'Toxing on Toxygen')
|
self.tox.self_set_status_message(b'Toxing on Toxygen')
|
||||||
reply = QtGui.QMessageBox.question(None,
|
reply = QtWidgets.QMessageBox.question(None,
|
||||||
'Profile {}'.format(name),
|
'Profile {}'.format(name),
|
||||||
QtGui.QApplication.translate("login",
|
QtWidgets.QApplication.translate("login",
|
||||||
'Do you want to set profile password?',
|
'Do you want to set profile password?'),
|
||||||
None,
|
QtWidgets.QMessageBox.Yes,
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QMessageBox.No)
|
||||||
QtGui.QMessageBox.Yes,
|
if reply == QtWidgets.QMessageBox.Yes:
|
||||||
QtGui.QMessageBox.No)
|
|
||||||
if reply == QtGui.QMessageBox.Yes:
|
|
||||||
set_pass = SetProfilePasswordScreen(encrypt_save)
|
set_pass = SetProfilePasswordScreen(encrypt_save)
|
||||||
set_pass.show()
|
set_pass.show()
|
||||||
self.app.connect(self.app, QtCore.SIGNAL("lastWindowClosed()"), self.app, QtCore.SLOT("quit()"))
|
self.app.lastWindowClosed.connect(self.app.quit)
|
||||||
self.app.exec_()
|
self.app.exec_()
|
||||||
reply = QtGui.QMessageBox.question(None,
|
reply = QtWidgets.QMessageBox.question(None,
|
||||||
'Profile {}'.format(name),
|
'Profile {}'.format(name),
|
||||||
QtGui.QApplication.translate("login",
|
QtWidgets.QApplication.translate("login",
|
||||||
'Do you want to save profile in default folder? If no, profile will be saved in program folder',
|
'Do you want to save profile in default folder? If no, profile will be saved in program folder'),
|
||||||
None,
|
QtWidgets.QMessageBox.Yes,
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QMessageBox.No)
|
||||||
QtGui.QMessageBox.Yes,
|
if reply == QtWidgets.QMessageBox.Yes:
|
||||||
QtGui.QMessageBox.No)
|
|
||||||
if reply == QtGui.QMessageBox.Yes:
|
|
||||||
path = Settings.get_default_path()
|
path = Settings.get_default_path()
|
||||||
else:
|
else:
|
||||||
path = curr_directory() + '/'
|
path = curr_directory() + '/'
|
||||||
|
@ -143,11 +134,9 @@ class Toxygen:
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
print(str(ex))
|
print(str(ex))
|
||||||
log('Profile creation exception: ' + str(ex))
|
log('Profile creation exception: ' + str(ex))
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setText(QtGui.QApplication.translate("login",
|
msgBox.setText(QtWidgets.QApplication.translate("login",
|
||||||
'Profile saving error! Does Toxygen have permission to write to this directory?',
|
'Profile saving error! Does Toxygen have permission to write to this directory?'))
|
||||||
None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
return
|
return
|
||||||
path = Settings.get_default_path()
|
path = Settings.get_default_path()
|
||||||
|
@ -173,12 +162,12 @@ class Toxygen:
|
||||||
self.tox = profile.tox_factory(data, settings)
|
self.tox = profile.tox_factory(data, settings)
|
||||||
|
|
||||||
if Settings.is_active_profile(path, name): # profile is in use
|
if Settings.is_active_profile(path, name): # profile is in use
|
||||||
reply = QtGui.QMessageBox.question(None,
|
reply = QtWidgets.QMessageBox.question(None,
|
||||||
'Profile {}'.format(name),
|
'Profile {}'.format(name),
|
||||||
QtGui.QApplication.translate("login", 'Other instance of Toxygen uses this profile or profile was not properly closed. Continue?', None, QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QApplication.translate("login", 'Other instance of Toxygen uses this profile or profile was not properly closed. Continue?'),
|
||||||
QtGui.QMessageBox.Yes,
|
QtWidgets.QMessageBox.Yes,
|
||||||
QtGui.QMessageBox.No)
|
QtWidgets.QMessageBox.No)
|
||||||
if reply != QtGui.QMessageBox.Yes:
|
if reply != QtWidgets.QMessageBox.Yes:
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
settings.set_active_profile()
|
settings.set_active_profile()
|
||||||
|
@ -190,21 +179,21 @@ class Toxygen:
|
||||||
app.translator = translator
|
app.translator = translator
|
||||||
|
|
||||||
# tray icon
|
# tray icon
|
||||||
self.tray = QtGui.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
|
self.tray = QtWidgets.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
|
||||||
self.tray.setObjectName('tray')
|
self.tray.setObjectName('tray')
|
||||||
|
|
||||||
self.ms = MainWindow(self.tox, self.reset, self.tray)
|
self.ms = MainWindow(self.tox, self.reset, self.tray)
|
||||||
app.aboutToQuit.connect(self.ms.close_window)
|
app.aboutToQuit.connect(self.ms.close_window)
|
||||||
|
|
||||||
class Menu(QtGui.QMenu):
|
class Menu(QtWidgets.QMenu):
|
||||||
|
|
||||||
def newStatus(self, status):
|
def newStatus(self, status):
|
||||||
if not Settings.get_instance().locked:
|
if not Settings.get_instance().locked:
|
||||||
profile.Profile.get_instance().set_status(status)
|
profile.Profile.get_instance().set_status(status)
|
||||||
self.aboutToShow()
|
self.aboutToShowHandler()
|
||||||
self.hide()
|
self.hide()
|
||||||
|
|
||||||
def aboutToShow(self):
|
def aboutToShowHandler(self):
|
||||||
status = profile.Profile.get_instance().status
|
status = profile.Profile.get_instance().status
|
||||||
act = self.act
|
act = self.act
|
||||||
if status is None or Settings.get_instance().locked:
|
if status is None or Settings.get_instance().locked:
|
||||||
|
@ -218,24 +207,24 @@ class Toxygen:
|
||||||
self.actions()[2].setVisible(not Settings.get_instance().locked)
|
self.actions()[2].setVisible(not Settings.get_instance().locked)
|
||||||
|
|
||||||
def languageChange(self, *args, **kwargs):
|
def languageChange(self, *args, **kwargs):
|
||||||
self.actions()[0].setText(QtGui.QApplication.translate('tray', 'Open Toxygen', None, QtGui.QApplication.UnicodeUTF8))
|
self.actions()[0].setText(QtWidgets.QApplication.translate('tray', 'Open Toxygen'))
|
||||||
self.actions()[1].setText(QtGui.QApplication.translate('tray', 'Set status', None, QtGui.QApplication.UnicodeUTF8))
|
self.actions()[1].setText(QtWidgets.QApplication.translate('tray', 'Set status'))
|
||||||
self.actions()[2].setText(QtGui.QApplication.translate('tray', 'Exit', None, QtGui.QApplication.UnicodeUTF8))
|
self.actions()[2].setText(QtWidgets.QApplication.translate('tray', 'Exit'))
|
||||||
self.act.actions()[0].setText(QtGui.QApplication.translate('tray', 'Online', None, QtGui.QApplication.UnicodeUTF8))
|
self.act.actions()[0].setText(QtWidgets.QApplication.translate('tray', 'Online'))
|
||||||
self.act.actions()[1].setText(QtGui.QApplication.translate('tray', 'Away', None, QtGui.QApplication.UnicodeUTF8))
|
self.act.actions()[1].setText(QtWidgets.QApplication.translate('tray', 'Away'))
|
||||||
self.act.actions()[2].setText(QtGui.QApplication.translate('tray', 'Busy', None, QtGui.QApplication.UnicodeUTF8))
|
self.act.actions()[2].setText(QtWidgets.QApplication.translate('tray', 'Busy'))
|
||||||
|
|
||||||
m = Menu()
|
m = Menu()
|
||||||
show = m.addAction(QtGui.QApplication.translate('tray', 'Open Toxygen', None, QtGui.QApplication.UnicodeUTF8))
|
show = m.addAction(QtWidgets.QApplication.translate('tray', 'Open Toxygen'))
|
||||||
sub = m.addMenu(QtGui.QApplication.translate('tray', 'Set status', None, QtGui.QApplication.UnicodeUTF8))
|
sub = m.addMenu(QtWidgets.QApplication.translate('tray', 'Set status'))
|
||||||
onl = sub.addAction(QtGui.QApplication.translate('tray', 'Online', None, QtGui.QApplication.UnicodeUTF8))
|
onl = sub.addAction(QtWidgets.QApplication.translate('tray', 'Online'))
|
||||||
away = sub.addAction(QtGui.QApplication.translate('tray', 'Away', None, QtGui.QApplication.UnicodeUTF8))
|
away = sub.addAction(QtWidgets.QApplication.translate('tray', 'Away'))
|
||||||
busy = sub.addAction(QtGui.QApplication.translate('tray', 'Busy', None, QtGui.QApplication.UnicodeUTF8))
|
busy = sub.addAction(QtWidgets.QApplication.translate('tray', 'Busy'))
|
||||||
onl.setCheckable(True)
|
onl.setCheckable(True)
|
||||||
away.setCheckable(True)
|
away.setCheckable(True)
|
||||||
busy.setCheckable(True)
|
busy.setCheckable(True)
|
||||||
m.act = sub
|
m.act = sub
|
||||||
exit = m.addAction(QtGui.QApplication.translate('tray', 'Exit', None, QtGui.QApplication.UnicodeUTF8))
|
exit = m.addAction(QtWidgets.QApplication.translate('tray', 'Exit'))
|
||||||
|
|
||||||
def show_window():
|
def show_window():
|
||||||
s = Settings.get_instance()
|
s = Settings.get_instance()
|
||||||
|
@ -258,7 +247,7 @@ class Toxygen:
|
||||||
self.p.show()
|
self.p.show()
|
||||||
|
|
||||||
def tray_activated(reason):
|
def tray_activated(reason):
|
||||||
if reason == QtGui.QSystemTrayIcon.DoubleClick:
|
if reason == QtWidgets.QSystemTrayIcon.DoubleClick:
|
||||||
show_window()
|
show_window()
|
||||||
|
|
||||||
def close_app():
|
def close_app():
|
||||||
|
@ -266,12 +255,12 @@ class Toxygen:
|
||||||
settings.closing = True
|
settings.closing = True
|
||||||
self.ms.close()
|
self.ms.close()
|
||||||
|
|
||||||
m.connect(show, QtCore.SIGNAL("triggered()"), show_window)
|
show.triggered.connect(show_window)
|
||||||
m.connect(exit, QtCore.SIGNAL("triggered()"), close_app)
|
exit.triggered.connect(close_app)
|
||||||
m.connect(m, QtCore.SIGNAL("aboutToShow()"), lambda: m.aboutToShow())
|
m.aboutToShow.connect(lambda: m.aboutToShowHandler())
|
||||||
sub.connect(onl, QtCore.SIGNAL("triggered()"), lambda: m.newStatus(0))
|
onl.triggered.connect(lambda: m.newStatus(0))
|
||||||
sub.connect(away, QtCore.SIGNAL("triggered()"), lambda: m.newStatus(1))
|
away.triggered.connect(lambda: m.newStatus(1))
|
||||||
sub.connect(busy, QtCore.SIGNAL("triggered()"), lambda: m.newStatus(2))
|
busy.triggered.connect(lambda: m.newStatus(2))
|
||||||
|
|
||||||
self.tray.setContextMenu(m)
|
self.tray.setContextMenu(m)
|
||||||
self.tray.show()
|
self.tray.show()
|
||||||
|
@ -287,15 +276,13 @@ class Toxygen:
|
||||||
updater.download(version)
|
updater.download(version)
|
||||||
updating = True
|
updating = True
|
||||||
else:
|
else:
|
||||||
reply = QtGui.QMessageBox.question(None,
|
reply = QtWidgets.QMessageBox.question(None,
|
||||||
'Toxygen',
|
'Toxygen',
|
||||||
QtGui.QApplication.translate("login",
|
QtWidgets.QApplication.translate("login",
|
||||||
'Update for Toxygen was found. Download and install it?',
|
'Update for Toxygen was found. Download and install it?'),
|
||||||
None,
|
QtWidgets.QMessageBox.Yes,
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QMessageBox.No)
|
||||||
QtGui.QMessageBox.Yes,
|
if reply == QtWidgets.QMessageBox.Yes:
|
||||||
QtGui.QMessageBox.No)
|
|
||||||
if reply == QtGui.QMessageBox.Yes:
|
|
||||||
updater.download(version)
|
updater.download(version)
|
||||||
updating = True
|
updating = True
|
||||||
|
|
||||||
|
@ -323,7 +310,7 @@ class Toxygen:
|
||||||
if self.uri is not None:
|
if self.uri is not None:
|
||||||
self.ms.add_contact(self.uri)
|
self.ms.add_contact(self.uri)
|
||||||
|
|
||||||
app.connect(app, QtCore.SIGNAL("lastWindowClosed()"), app, QtCore.SLOT("quit()"))
|
app.lastWindowClosed.connect(app.quit)
|
||||||
app.exec_()
|
app.exec_()
|
||||||
|
|
||||||
self.init.stop = True
|
self.init.stop = True
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from menu import *
|
from menu import *
|
||||||
from profile import *
|
from profile import *
|
||||||
from list_items import *
|
from list_items import *
|
||||||
from widgets import MultilineEdit, LineEdit, ComboBox
|
from widgets import MultilineEdit, ComboBox
|
||||||
import plugin_support
|
import plugin_support
|
||||||
from mainscreen_widgets import *
|
from mainscreen_widgets import *
|
||||||
import settings
|
import settings
|
||||||
|
@ -9,7 +9,7 @@ import platform
|
||||||
import toxes
|
import toxes
|
||||||
|
|
||||||
|
|
||||||
class MainWindow(QtGui.QMainWindow, Singleton):
|
class MainWindow(QtWidgets.QMainWindow, Singleton):
|
||||||
|
|
||||||
def __init__(self, tox, reset, tray):
|
def __init__(self, tox, reset, tray):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
|
@ -23,7 +23,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
self.ws = WelcomeScreen()
|
self.ws = WelcomeScreen()
|
||||||
|
|
||||||
def setup_menu(self, Form):
|
def setup_menu(self, Form):
|
||||||
box = QtGui.QHBoxLayout()
|
box = QtWidgets.QHBoxLayout()
|
||||||
box.setContentsMargins(0, 0, 0, 0)
|
box.setContentsMargins(0, 0, 0, 0)
|
||||||
box.setAlignment(QtCore.Qt.AlignLeft)
|
box.setAlignment(QtCore.Qt.AlignLeft)
|
||||||
self.profile_button = MainMenuButton(Form)
|
self.profile_button = MainMenuButton(Form)
|
||||||
|
@ -36,37 +36,37 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
box.addWidget(self.about_button)
|
box.addWidget(self.about_button)
|
||||||
box.setSpacing(0)
|
box.setSpacing(0)
|
||||||
|
|
||||||
self.menuProfile = QtGui.QMenu()
|
self.menuProfile = QtWidgets.QMenu()
|
||||||
self.menuProfile.setObjectName("menuProfile")
|
self.menuProfile.setObjectName("menuProfile")
|
||||||
self.menuSettings = QtGui.QMenu()
|
self.menuSettings = QtWidgets.QMenu()
|
||||||
self.menuSettings.setObjectName("menuSettings")
|
self.menuSettings.setObjectName("menuSettings")
|
||||||
self.menuPlugins = QtGui.QMenu()
|
self.menuPlugins = QtWidgets.QMenu()
|
||||||
self.menuPlugins.setObjectName("menuPlugins")
|
self.menuPlugins.setObjectName("menuPlugins")
|
||||||
self.menuAbout = QtGui.QMenu()
|
self.menuAbout = QtWidgets.QMenu()
|
||||||
self.menuAbout.setObjectName("menuAbout")
|
self.menuAbout.setObjectName("menuAbout")
|
||||||
|
|
||||||
self.actionAdd_friend = QtGui.QAction(Form)
|
self.actionAdd_friend = QtWidgets.QAction(Form)
|
||||||
self.actionAdd_friend.setObjectName("actionAdd_friend")
|
self.actionAdd_friend.setObjectName("actionAdd_friend")
|
||||||
self.actionprofilesettings = QtGui.QAction(Form)
|
self.actionprofilesettings = QtWidgets.QAction(Form)
|
||||||
self.actionprofilesettings.setObjectName("actionprofilesettings")
|
self.actionprofilesettings.setObjectName("actionprofilesettings")
|
||||||
self.actionPrivacy_settings = QtGui.QAction(Form)
|
self.actionPrivacy_settings = QtWidgets.QAction(Form)
|
||||||
self.actionPrivacy_settings.setObjectName("actionPrivacy_settings")
|
self.actionPrivacy_settings.setObjectName("actionPrivacy_settings")
|
||||||
self.actionInterface_settings = QtGui.QAction(Form)
|
self.actionInterface_settings = QtWidgets.QAction(Form)
|
||||||
self.actionInterface_settings.setObjectName("actionInterface_settings")
|
self.actionInterface_settings.setObjectName("actionInterface_settings")
|
||||||
self.actionNotifications = QtGui.QAction(Form)
|
self.actionNotifications = QtWidgets.QAction(Form)
|
||||||
self.actionNotifications.setObjectName("actionNotifications")
|
self.actionNotifications.setObjectName("actionNotifications")
|
||||||
self.actionNetwork = QtGui.QAction(Form)
|
self.actionNetwork = QtWidgets.QAction(Form)
|
||||||
self.actionNetwork.setObjectName("actionNetwork")
|
self.actionNetwork.setObjectName("actionNetwork")
|
||||||
self.actionAbout_program = QtGui.QAction(Form)
|
self.actionAbout_program = QtWidgets.QAction(Form)
|
||||||
self.actionAbout_program.setObjectName("actionAbout_program")
|
self.actionAbout_program.setObjectName("actionAbout_program")
|
||||||
self.updateSettings = QtGui.QAction(Form)
|
self.updateSettings = QtWidgets.QAction(Form)
|
||||||
self.actionSettings = QtGui.QAction(Form)
|
self.actionSettings = QtWidgets.QAction(Form)
|
||||||
self.actionSettings.setObjectName("actionSettings")
|
self.actionSettings.setObjectName("actionSettings")
|
||||||
self.audioSettings = QtGui.QAction(Form)
|
self.audioSettings = QtWidgets.QAction(Form)
|
||||||
self.pluginData = QtGui.QAction(Form)
|
self.pluginData = QtWidgets.QAction(Form)
|
||||||
self.importPlugin = QtGui.QAction(Form)
|
self.importPlugin = QtWidgets.QAction(Form)
|
||||||
self.reloadPlugins = QtGui.QAction(Form)
|
self.reloadPlugins = QtWidgets.QAction(Form)
|
||||||
self.lockApp = QtGui.QAction(Form)
|
self.lockApp = QtWidgets.QAction(Form)
|
||||||
self.menuProfile.addAction(self.actionAdd_friend)
|
self.menuProfile.addAction(self.actionAdd_friend)
|
||||||
self.menuProfile.addAction(self.actionSettings)
|
self.menuProfile.addAction(self.actionSettings)
|
||||||
self.menuProfile.addAction(self.lockApp)
|
self.menuProfile.addAction(self.lockApp)
|
||||||
|
@ -113,37 +113,37 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
return super(MainWindow, self).event(event)
|
return super(MainWindow, self).event(event)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.lockApp.setText(QtGui.QApplication.translate("MainWindow", "Lock", None, QtGui.QApplication.UnicodeUTF8))
|
self.lockApp.setText(QtWidgets.QApplication.translate("MainWindow", "Lock"))
|
||||||
self.plugins_button.setText(QtGui.QApplication.translate("MainWindow", "Plugins", None, QtGui.QApplication.UnicodeUTF8))
|
self.plugins_button.setText(QtWidgets.QApplication.translate("MainWindow", "Plugins"))
|
||||||
self.pluginData.setText(QtGui.QApplication.translate("MainWindow", "List of plugins", None, QtGui.QApplication.UnicodeUTF8))
|
self.pluginData.setText(QtWidgets.QApplication.translate("MainWindow", "List of plugins"))
|
||||||
self.profile_button.setText(QtGui.QApplication.translate("MainWindow", "Profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.profile_button.setText(QtWidgets.QApplication.translate("MainWindow", "Profile"))
|
||||||
self.settings_button.setText(QtGui.QApplication.translate("MainWindow", "Settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.settings_button.setText(QtWidgets.QApplication.translate("MainWindow", "Settings"))
|
||||||
self.about_button.setText(QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8))
|
self.about_button.setText(QtWidgets.QApplication.translate("MainWindow", "About"))
|
||||||
self.actionAdd_friend.setText(QtGui.QApplication.translate("MainWindow", "Add contact", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionAdd_friend.setText(QtWidgets.QApplication.translate("MainWindow", "Add contact"))
|
||||||
self.actionprofilesettings.setText(QtGui.QApplication.translate("MainWindow", "Profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionprofilesettings.setText(QtWidgets.QApplication.translate("MainWindow", "Profile"))
|
||||||
self.actionPrivacy_settings.setText(QtGui.QApplication.translate("MainWindow", "Privacy", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionPrivacy_settings.setText(QtWidgets.QApplication.translate("MainWindow", "Privacy"))
|
||||||
self.actionInterface_settings.setText(QtGui.QApplication.translate("MainWindow", "Interface", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionInterface_settings.setText(QtWidgets.QApplication.translate("MainWindow", "Interface"))
|
||||||
self.actionNotifications.setText(QtGui.QApplication.translate("MainWindow", "Notifications", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionNotifications.setText(QtWidgets.QApplication.translate("MainWindow", "Notifications"))
|
||||||
self.actionNetwork.setText(QtGui.QApplication.translate("MainWindow", "Network", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionNetwork.setText(QtWidgets.QApplication.translate("MainWindow", "Network"))
|
||||||
self.actionAbout_program.setText(QtGui.QApplication.translate("MainWindow", "About program", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionAbout_program.setText(QtWidgets.QApplication.translate("MainWindow", "About program"))
|
||||||
self.actionSettings.setText(QtGui.QApplication.translate("MainWindow", "Settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.actionSettings.setText(QtWidgets.QApplication.translate("MainWindow", "Settings"))
|
||||||
self.audioSettings.setText(QtGui.QApplication.translate("MainWindow", "Audio", None, QtGui.QApplication.UnicodeUTF8))
|
self.audioSettings.setText(QtWidgets.QApplication.translate("MainWindow", "Audio"))
|
||||||
self.updateSettings.setText(QtGui.QApplication.translate("MainWindow", "Updates", None, QtGui.QApplication.UnicodeUTF8))
|
self.updateSettings.setText(QtWidgets.QApplication.translate("MainWindow", "Updates"))
|
||||||
self.contact_name.setPlaceholderText(QtGui.QApplication.translate("MainWindow", "Search", None, QtGui.QApplication.UnicodeUTF8))
|
self.contact_name.setPlaceholderText(QtWidgets.QApplication.translate("MainWindow", "Search"))
|
||||||
self.sendMessageButton.setToolTip(QtGui.QApplication.translate("MainWindow", "Send message", None, QtGui.QApplication.UnicodeUTF8))
|
self.sendMessageButton.setToolTip(QtWidgets.QApplication.translate("MainWindow", "Send message"))
|
||||||
self.callButton.setToolTip(QtGui.QApplication.translate("MainWindow", "Start audio call with friend", None, QtGui.QApplication.UnicodeUTF8))
|
self.callButton.setToolTip(QtWidgets.QApplication.translate("MainWindow", "Start audio call with friend"))
|
||||||
self.online_contacts.clear()
|
self.online_contacts.clear()
|
||||||
self.online_contacts.addItem(QtGui.QApplication.translate("MainWindow", "All", None, QtGui.QApplication.UnicodeUTF8))
|
self.online_contacts.addItem(QtWidgets.QApplication.translate("MainWindow", "All"))
|
||||||
self.online_contacts.addItem(QtGui.QApplication.translate("MainWindow", "Online", None, QtGui.QApplication.UnicodeUTF8))
|
self.online_contacts.addItem(QtWidgets.QApplication.translate("MainWindow", "Online"))
|
||||||
self.online_contacts.addItem(QtGui.QApplication.translate("MainWindow", "Online first", None, QtGui.QApplication.UnicodeUTF8))
|
self.online_contacts.addItem(QtWidgets.QApplication.translate("MainWindow", "Online first"))
|
||||||
self.online_contacts.addItem(QtGui.QApplication.translate("MainWindow", "Name", None, QtGui.QApplication.UnicodeUTF8))
|
self.online_contacts.addItem(QtWidgets.QApplication.translate("MainWindow", "Name"))
|
||||||
self.online_contacts.addItem(QtGui.QApplication.translate("MainWindow", "Online and by name", None, QtGui.QApplication.UnicodeUTF8))
|
self.online_contacts.addItem(QtWidgets.QApplication.translate("MainWindow", "Online and by name"))
|
||||||
self.online_contacts.addItem(QtGui.QApplication.translate("MainWindow", "Online first and by name", None, QtGui.QApplication.UnicodeUTF8))
|
self.online_contacts.addItem(QtWidgets.QApplication.translate("MainWindow", "Online first and by name"))
|
||||||
ind = Settings.get_instance()['sorting']
|
ind = Settings.get_instance()['sorting']
|
||||||
d = {0: 0, 1: 1, 2: 2, 3: 4, 1 | 4: 4, 2 | 4: 5}
|
d = {0: 0, 1: 1, 2: 2, 3: 4, 1 | 4: 4, 2 | 4: 5}
|
||||||
self.online_contacts.setCurrentIndex(d[ind])
|
self.online_contacts.setCurrentIndex(d[ind])
|
||||||
self.importPlugin.setText(QtGui.QApplication.translate("MainWindow", "Import plugin", None, QtGui.QApplication.UnicodeUTF8))
|
self.importPlugin.setText(QtWidgets.QApplication.translate("MainWindow", "Import plugin"))
|
||||||
self.reloadPlugins.setText(QtGui.QApplication.translate("MainWindow", "Reload plugins", None, QtGui.QApplication.UnicodeUTF8))
|
self.reloadPlugins.setText(QtWidgets.QApplication.translate("MainWindow", "Reload plugins"))
|
||||||
|
|
||||||
def setup_right_bottom(self, Form):
|
def setup_right_bottom(self, Form):
|
||||||
Form.resize(650, 60)
|
Form.resize(650, 60)
|
||||||
|
@ -155,7 +155,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
font.setFamily(settings.Settings.get_instance()['font'])
|
font.setFamily(settings.Settings.get_instance()['font'])
|
||||||
self.messageEdit.setFont(font)
|
self.messageEdit.setFont(font)
|
||||||
|
|
||||||
self.sendMessageButton = QtGui.QPushButton(Form)
|
self.sendMessageButton = QtWidgets.QPushButton(Form)
|
||||||
self.sendMessageButton.setGeometry(QtCore.QRect(565, 3, 60, 55))
|
self.sendMessageButton.setGeometry(QtCore.QRect(565, 3, 60, 55))
|
||||||
self.sendMessageButton.setObjectName("sendMessageButton")
|
self.sendMessageButton.setObjectName("sendMessageButton")
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
|
|
||||||
def setup_left_center_menu(self, Form):
|
def setup_left_center_menu(self, Form):
|
||||||
Form.resize(270, 25)
|
Form.resize(270, 25)
|
||||||
self.search_label = QtGui.QLabel(Form)
|
self.search_label = QtWidgets.QLabel(Form)
|
||||||
self.search_label.setGeometry(QtCore.QRect(3, 2, 20, 20))
|
self.search_label.setGeometry(QtCore.QRect(3, 2, 20, 20))
|
||||||
pixmap = QtGui.QPixmap()
|
pixmap = QtGui.QPixmap()
|
||||||
pixmap.load(curr_directory() + '/images/search.png')
|
pixmap.load(curr_directory() + '/images/search.png')
|
||||||
|
@ -202,7 +202,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
Form.setMinimumSize(QtCore.QSize(270, 75))
|
Form.setMinimumSize(QtCore.QSize(270, 75))
|
||||||
Form.setMaximumSize(QtCore.QSize(270, 75))
|
Form.setMaximumSize(QtCore.QSize(270, 75))
|
||||||
Form.setBaseSize(QtCore.QSize(270, 75))
|
Form.setBaseSize(QtCore.QSize(270, 75))
|
||||||
self.avatar_label = Form.avatar_label = QtGui.QLabel(Form)
|
self.avatar_label = Form.avatar_label = QtWidgets.QLabel(Form)
|
||||||
self.avatar_label.setGeometry(QtCore.QRect(5, 5, 64, 64))
|
self.avatar_label.setGeometry(QtCore.QRect(5, 5, 64, 64))
|
||||||
self.avatar_label.setScaledContents(False)
|
self.avatar_label.setScaledContents(False)
|
||||||
self.avatar_label.setAlignment(QtCore.Qt.AlignCenter)
|
self.avatar_label.setAlignment(QtCore.Qt.AlignCenter)
|
||||||
|
@ -230,7 +230,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
|
|
||||||
def setup_right_top(self, Form):
|
def setup_right_top(self, Form):
|
||||||
Form.resize(650, 75)
|
Form.resize(650, 75)
|
||||||
self.account_avatar = QtGui.QLabel(Form)
|
self.account_avatar = QtWidgets.QLabel(Form)
|
||||||
self.account_avatar.setGeometry(QtCore.QRect(10, 5, 64, 64))
|
self.account_avatar.setGeometry(QtCore.QRect(10, 5, 64, 64))
|
||||||
self.account_avatar.setScaledContents(False)
|
self.account_avatar.setScaledContents(False)
|
||||||
self.account_name = DataLabel(Form)
|
self.account_name = DataLabel(Form)
|
||||||
|
@ -249,16 +249,16 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
font.setBold(False)
|
font.setBold(False)
|
||||||
self.account_status.setFont(font)
|
self.account_status.setFont(font)
|
||||||
self.account_status.setObjectName("account_status")
|
self.account_status.setObjectName("account_status")
|
||||||
self.callButton = QtGui.QPushButton(Form)
|
self.callButton = QtWidgets.QPushButton(Form)
|
||||||
self.callButton.setGeometry(QtCore.QRect(550, 5, 50, 50))
|
self.callButton.setGeometry(QtCore.QRect(550, 5, 50, 50))
|
||||||
self.callButton.setObjectName("callButton")
|
self.callButton.setObjectName("callButton")
|
||||||
self.callButton.clicked.connect(lambda: self.profile.call_click(True))
|
self.callButton.clicked.connect(lambda: self.profile.call_click(True))
|
||||||
self.videocallButton = QtGui.QPushButton(Form)
|
self.videocallButton = QtWidgets.QPushButton(Form)
|
||||||
self.videocallButton.setGeometry(QtCore.QRect(550, 5, 50, 50))
|
self.videocallButton.setGeometry(QtCore.QRect(550, 5, 50, 50))
|
||||||
self.videocallButton.setObjectName("videocallButton")
|
self.videocallButton.setObjectName("videocallButton")
|
||||||
self.videocallButton.clicked.connect(lambda: self.profile.call_click(True, True))
|
self.videocallButton.clicked.connect(lambda: self.profile.call_click(True, True))
|
||||||
self.update_call_state('call')
|
self.update_call_state('call')
|
||||||
self.typing = QtGui.QLabel(Form)
|
self.typing = QtWidgets.QLabel(Form)
|
||||||
self.typing.setGeometry(QtCore.QRect(500, 25, 50, 30))
|
self.typing.setGeometry(QtCore.QRect(500, 25, 50, 30))
|
||||||
pixmap = QtGui.QPixmap(QtCore.QSize(50, 30))
|
pixmap = QtGui.QPixmap(QtCore.QSize(50, 30))
|
||||||
pixmap.load(curr_directory() + '/images/typing.png')
|
pixmap.load(curr_directory() + '/images/typing.png')
|
||||||
|
@ -268,20 +268,19 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
QtCore.QMetaObject.connectSlotsByName(Form)
|
QtCore.QMetaObject.connectSlotsByName(Form)
|
||||||
|
|
||||||
def setup_left_center(self, widget):
|
def setup_left_center(self, widget):
|
||||||
self.friends_list = QtGui.QListWidget(widget)
|
self.friends_list = QtWidgets.QListWidget(widget)
|
||||||
self.friends_list.setObjectName("friends_list")
|
self.friends_list.setObjectName("friends_list")
|
||||||
self.friends_list.setGeometry(0, 0, 270, 310)
|
self.friends_list.setGeometry(0, 0, 270, 310)
|
||||||
self.friends_list.clicked.connect(self.friend_click)
|
self.friends_list.clicked.connect(self.friend_click)
|
||||||
self.friends_list.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
|
self.friends_list.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
|
||||||
self.friends_list.connect(self.friends_list, QtCore.SIGNAL("customContextMenuRequested(QPoint)"),
|
self.friends_list.customContextMenuRequested.connect(self.friend_right_click)
|
||||||
self.friend_right_click)
|
self.friends_list.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
||||||
self.friends_list.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel)
|
|
||||||
self.friends_list.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
|
self.friends_list.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
|
||||||
self.friends_list.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
self.friends_list.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||||
self.friends_list.verticalScrollBar().setContextMenuPolicy(QtCore.Qt.NoContextMenu)
|
self.friends_list.verticalScrollBar().setContextMenuPolicy(QtCore.Qt.NoContextMenu)
|
||||||
|
|
||||||
def setup_right_center(self, widget):
|
def setup_right_center(self, widget):
|
||||||
self.messages = QtGui.QListWidget(widget)
|
self.messages = QtWidgets.QListWidget(widget)
|
||||||
self.messages.setGeometry(0, 0, 620, 310)
|
self.messages.setGeometry(0, 0, 620, 310)
|
||||||
self.messages.setObjectName("messages")
|
self.messages.setObjectName("messages")
|
||||||
self.messages.setSpacing(1)
|
self.messages.setSpacing(1)
|
||||||
|
@ -295,8 +294,8 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
self.profile.load_history()
|
self.profile.load_history()
|
||||||
self.messages.verticalScrollBar().setValue(1)
|
self.messages.verticalScrollBar().setValue(1)
|
||||||
self.messages.verticalScrollBar().valueChanged.connect(load)
|
self.messages.verticalScrollBar().valueChanged.connect(load)
|
||||||
self.messages.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel)
|
self.messages.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
||||||
self.messages.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
|
self.messages.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
|
||||||
|
|
||||||
def initUI(self, tox):
|
def initUI(self, tox):
|
||||||
self.setMinimumSize(920, 500)
|
self.setMinimumSize(920, 500)
|
||||||
|
@ -304,15 +303,15 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
self.setGeometry(s['x'], s['y'], s['width'], s['height'])
|
self.setGeometry(s['x'], s['y'], s['width'], s['height'])
|
||||||
self.setWindowTitle('Toxygen')
|
self.setWindowTitle('Toxygen')
|
||||||
os.chdir(curr_directory() + '/images/')
|
os.chdir(curr_directory() + '/images/')
|
||||||
menu = QtGui.QWidget()
|
menu = QtWidgets.QWidget()
|
||||||
main = QtGui.QWidget()
|
main = QtWidgets.QWidget()
|
||||||
grid = QtGui.QGridLayout()
|
grid = QtWidgets.QGridLayout()
|
||||||
search = QtGui.QWidget()
|
search = QtWidgets.QWidget()
|
||||||
name = QtGui.QWidget()
|
name = QtWidgets.QWidget()
|
||||||
info = QtGui.QWidget()
|
info = QtWidgets.QWidget()
|
||||||
main_list = QtGui.QWidget()
|
main_list = QtWidgets.QWidget()
|
||||||
messages = QtGui.QWidget()
|
messages = QtWidgets.QWidget()
|
||||||
message_buttons = QtGui.QWidget()
|
message_buttons = QtWidgets.QWidget()
|
||||||
self.setup_left_center_menu(search)
|
self.setup_left_center_menu(search)
|
||||||
self.setup_left_top(name)
|
self.setup_left_top(name)
|
||||||
self.setup_right_center(messages)
|
self.setup_right_center(messages)
|
||||||
|
@ -369,9 +368,9 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
s['width'] = self.width()
|
s['width'] = self.width()
|
||||||
s['height'] = self.height()
|
s['height'] = self.height()
|
||||||
s.save()
|
s.save()
|
||||||
QtGui.QApplication.closeAllWindows()
|
QtWidgets.QApplication.closeAllWindows()
|
||||||
event.accept()
|
event.accept()
|
||||||
elif QtGui.QSystemTrayIcon.isSystemTrayAvailable():
|
elif QtWidgets.QSystemTrayIcon.isSystemTrayAvailable():
|
||||||
event.ignore()
|
event.ignore()
|
||||||
self.hide()
|
self.hide()
|
||||||
|
|
||||||
|
@ -401,13 +400,13 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
self.profile.update()
|
self.profile.update()
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
if event.key() == QtCore.Qt.Key_Escape and QtGui.QSystemTrayIcon.isSystemTrayAvailable():
|
if event.key() == QtCore.Qt.Key_Escape and QtWidgets.QSystemTrayIcon.isSystemTrayAvailable():
|
||||||
self.hide()
|
self.hide()
|
||||||
elif event.key() == QtCore.Qt.Key_C and event.modifiers() & QtCore.Qt.ControlModifier and self.messages.selectedIndexes():
|
elif event.key() == QtCore.Qt.Key_C and event.modifiers() & QtCore.Qt.ControlModifier and self.messages.selectedIndexes():
|
||||||
rows = list(map(lambda x: self.messages.row(x), self.messages.selectedItems()))
|
rows = list(map(lambda x: self.messages.row(x), self.messages.selectedItems()))
|
||||||
indexes = (rows[0] - self.messages.count(), rows[-1] - self.messages.count())
|
indexes = (rows[0] - self.messages.count(), rows[-1] - self.messages.count())
|
||||||
s = self.profile.export_history(self.profile.active_friend, True, indexes)
|
s = self.profile.export_history(self.profile.active_friend, True, indexes)
|
||||||
clipboard = QtGui.QApplication.clipboard()
|
clipboard = QtWidgets.QApplication.clipboard()
|
||||||
clipboard.setText(s)
|
clipboard.setText(s)
|
||||||
elif event.key() == QtCore.Qt.Key_Z and event.modifiers() & QtCore.Qt.ControlModifier and self.messages.selectedIndexes():
|
elif event.key() == QtCore.Qt.Key_Z and event.modifiers() & QtCore.Qt.ControlModifier and self.messages.selectedIndexes():
|
||||||
self.messages.clearSelection()
|
self.messages.clearSelection()
|
||||||
|
@ -422,9 +421,9 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
|
|
||||||
def about_program(self):
|
def about_program(self):
|
||||||
import util
|
import util
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8))
|
msgBox.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "About"))
|
||||||
text = (QtGui.QApplication.translate("MainWindow", 'Toxygen is Tox client written on Python.\nVersion: ', None, QtGui.QApplication.UnicodeUTF8))
|
text = (QtWidgets.QApplication.translate("MainWindow", 'Toxygen is Tox client written on Python.\nVersion: '))
|
||||||
msgBox.setText(text + util.program_version + '\nGitHub: https://github.com/toxygen-project/toxygen/')
|
msgBox.setText(text + util.program_version + '\nGitHub: https://github.com/toxygen-project/toxygen/')
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
||||||
|
@ -471,22 +470,19 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
|
|
||||||
def import_plugin(self):
|
def import_plugin(self):
|
||||||
import util
|
import util
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(self,
|
directory = QtWidgets.QFileDialog.getExistingDirectory(self,
|
||||||
QtGui.QApplication.translate("MainWindow", 'Choose folder with plugin',
|
QtWidgets.QApplication.translate("MainWindow", 'Choose folder with plugin'),
|
||||||
None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
|
||||||
util.curr_directory(),
|
util.curr_directory(),
|
||||||
QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontUseNativeDialog)
|
QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
if directory:
|
if directory:
|
||||||
src = directory + '/'
|
src = directory + '/'
|
||||||
dest = curr_directory() + '/plugins/'
|
dest = curr_directory() + '/plugins/'
|
||||||
util.copy(src, dest)
|
util.copy(src, dest)
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(
|
msgBox.setWindowTitle(
|
||||||
QtGui.QApplication.translate("MainWindow", "Restart Toxygen", None, QtGui.QApplication.UnicodeUTF8))
|
QtWidgets.QApplication.translate("MainWindow", "Restart Toxygen"))
|
||||||
msgBox.setText(
|
msgBox.setText(
|
||||||
QtGui.QApplication.translate("MainWindow", 'Plugin will be loaded after restart', None,
|
QtWidgets.QApplication.translate("MainWindow", 'Plugin will be loaded after restart'))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
||||||
def lock_app(self):
|
def lock_app(self):
|
||||||
|
@ -494,12 +490,11 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
Settings.get_instance().locked = True
|
Settings.get_instance().locked = True
|
||||||
self.hide()
|
self.hide()
|
||||||
else:
|
else:
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(
|
msgBox.setWindowTitle(
|
||||||
QtGui.QApplication.translate("MainWindow", "Cannot lock app", None, QtGui.QApplication.UnicodeUTF8))
|
QtWidgets.QApplication.translate("MainWindow", "Cannot lock app"))
|
||||||
msgBox.setText(
|
msgBox.setText(
|
||||||
QtGui.QApplication.translate("MainWindow", 'Error. Profile password is not set.', None,
|
QtWidgets.QApplication.translate("MainWindow", 'Error. Profile password is not set.'))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
||||||
def show_menu(self):
|
def show_menu(self):
|
||||||
|
@ -522,8 +517,8 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
def send_file(self):
|
def send_file(self):
|
||||||
self.menu.hide()
|
self.menu.hide()
|
||||||
if self.profile.active_friend + 1:
|
if self.profile.active_friend + 1:
|
||||||
choose = QtGui.QApplication.translate("MainWindow", 'Choose file', None, QtGui.QApplication.UnicodeUTF8)
|
choose = QtWidgets.QApplication.translate("MainWindow", 'Choose file')
|
||||||
name = QtGui.QFileDialog.getOpenFileName(self, choose, options=QtGui.QFileDialog.DontUseNativeDialog)
|
name = QtWidgets.QFileDialog.getOpenFileName(self, choose, options=QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
if name[0]:
|
if name[0]:
|
||||||
self.profile.send_file(name[0])
|
self.profile.send_file(name[0])
|
||||||
|
|
||||||
|
@ -588,44 +583,43 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
return
|
return
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
allowed = friend.tox_id in settings['auto_accept_from_friends']
|
allowed = friend.tox_id in settings['auto_accept_from_friends']
|
||||||
auto = QtGui.QApplication.translate("MainWindow", 'Disallow auto accept', None, QtGui.QApplication.UnicodeUTF8) if allowed else QtGui.QApplication.translate("MainWindow", 'Allow auto accept', None, QtGui.QApplication.UnicodeUTF8)
|
auto = QtWidgets.QApplication.translate("MainWindow", 'Disallow auto accept') if allowed else QtWidgets.QApplication.translate("MainWindow", 'Allow auto accept')
|
||||||
if item is not None:
|
if item is not None:
|
||||||
self.listMenu = QtGui.QMenu()
|
self.listMenu = QtWidgets.QMenu()
|
||||||
set_alias_item = self.listMenu.addAction(QtGui.QApplication.translate("MainWindow", 'Set alias', None, QtGui.QApplication.UnicodeUTF8))
|
set_alias_item = self.listMenu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Set alias'))
|
||||||
|
|
||||||
history_menu = self.listMenu.addMenu(QtGui.QApplication.translate("MainWindow", 'Chat history', None, QtGui.QApplication.UnicodeUTF8))
|
history_menu = self.listMenu.addMenu(QtWidgets.QApplication.translate("MainWindow", 'Chat history'))
|
||||||
clear_history_item = history_menu.addAction(QtGui.QApplication.translate("MainWindow", 'Clear history', None, QtGui.QApplication.UnicodeUTF8))
|
clear_history_item = history_menu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Clear history'))
|
||||||
export_to_text_item = history_menu.addAction(QtGui.QApplication.translate("MainWindow", 'Export as text', None, QtGui.QApplication.UnicodeUTF8))
|
export_to_text_item = history_menu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Export as text'))
|
||||||
export_to_html_item = history_menu.addAction(QtGui.QApplication.translate("MainWindow", 'Export as HTML', None, QtGui.QApplication.UnicodeUTF8))
|
export_to_html_item = history_menu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Export as HTML'))
|
||||||
|
|
||||||
copy_menu = self.listMenu.addMenu(QtGui.QApplication.translate("MainWindow", 'Copy', None, QtGui.QApplication.UnicodeUTF8))
|
copy_menu = self.listMenu.addMenu(QtWidgets.QApplication.translate("MainWindow", 'Copy'))
|
||||||
copy_name_item = copy_menu.addAction(QtGui.QApplication.translate("MainWindow", 'Name', None, QtGui.QApplication.UnicodeUTF8))
|
copy_name_item = copy_menu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Name'))
|
||||||
copy_status_item = copy_menu.addAction(QtGui.QApplication.translate("MainWindow", 'Status message', None, QtGui.QApplication.UnicodeUTF8))
|
copy_status_item = copy_menu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Status message'))
|
||||||
copy_key_item = copy_menu.addAction(QtGui.QApplication.translate("MainWindow", 'Public key', None, QtGui.QApplication.UnicodeUTF8))
|
copy_key_item = copy_menu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Public key'))
|
||||||
|
|
||||||
auto_accept_item = self.listMenu.addAction(auto)
|
auto_accept_item = self.listMenu.addAction(auto)
|
||||||
remove_item = self.listMenu.addAction(QtGui.QApplication.translate("MainWindow", 'Remove friend', None, QtGui.QApplication.UnicodeUTF8))
|
remove_item = self.listMenu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Remove friend'))
|
||||||
block_item = self.listMenu.addAction(QtGui.QApplication.translate("MainWindow", 'Block friend', None, QtGui.QApplication.UnicodeUTF8))
|
block_item = self.listMenu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Block friend'))
|
||||||
notes_item = self.listMenu.addAction(QtGui.QApplication.translate("MainWindow", 'Notes', None, QtGui.QApplication.UnicodeUTF8))
|
notes_item = self.listMenu.addAction(QtWidgets.QApplication.translate("MainWindow", 'Notes'))
|
||||||
|
|
||||||
plugins_loader = plugin_support.PluginLoader.get_instance()
|
plugins_loader = plugin_support.PluginLoader.get_instance()
|
||||||
if plugins_loader is not None:
|
if plugins_loader is not None:
|
||||||
submenu = plugins_loader.get_menu(self.listMenu, num)
|
submenu = plugins_loader.get_menu(self.listMenu, num)
|
||||||
if len(submenu):
|
if len(submenu):
|
||||||
plug = self.listMenu.addMenu(QtGui.QApplication.translate("MainWindow", 'Plugins', None, QtGui.QApplication.UnicodeUTF8))
|
plug = self.listMenu.addMenu(QtWidgets.QApplication.translate("MainWindow", 'Plugins'))
|
||||||
plug.addActions(submenu)
|
plug.addActions(submenu)
|
||||||
self.connect(set_alias_item, QtCore.SIGNAL("triggered()"), lambda: self.set_alias(num))
|
set_alias_item.triggered.connect(lambda: self.set_alias(num))
|
||||||
self.connect(remove_item, QtCore.SIGNAL("triggered()"), lambda: self.remove_friend(num))
|
remove_item.triggered.connect(lambda: self.remove_friend(num))
|
||||||
self.connect(block_item, QtCore.SIGNAL("triggered()"), lambda: self.block_friend(num))
|
block_item.triggered.connect(lambda: self.block_friend(num))
|
||||||
self.connect(copy_key_item, QtCore.SIGNAL("triggered()"), lambda: self.copy_friend_key(num))
|
copy_key_item.triggered.connect(lambda: self.copy_friend_key(num))
|
||||||
self.connect(clear_history_item, QtCore.SIGNAL("triggered()"), lambda: self.clear_history(num))
|
clear_history_item.triggered.connect(lambda: self.clear_history(num))
|
||||||
self.connect(auto_accept_item, QtCore.SIGNAL("triggered()"), lambda: self.auto_accept(num, not allowed))
|
auto_accept_item.triggered.connect(lambda: self.auto_accept(num, not allowed))
|
||||||
self.connect(notes_item, QtCore.SIGNAL("triggered()"), lambda: self.show_note(friend))
|
notes_item.triggered.connect(lambda: self.show_note(friend))
|
||||||
self.connect(copy_name_item, QtCore.SIGNAL("triggered()"), lambda: self.copy_name(friend))
|
copy_name_item.triggered.connect(lambda: self.copy_name(friend))
|
||||||
self.connect(copy_status_item, QtCore.SIGNAL("triggered()"), lambda: self.copy_status(friend))
|
copy_status_item.triggered.connect(lambda: self.copy_status(friend))
|
||||||
self.connect(export_to_text_item, QtCore.SIGNAL("triggered()"), lambda: self.export_history(num))
|
export_to_text_item.triggered.connect(lambda: self.export_history(num))
|
||||||
self.connect(export_to_html_item, QtCore.SIGNAL("triggered()"),
|
export_to_html_item.triggered.connect(lambda: self.export_history(num, False))
|
||||||
lambda: self.export_history(num, False))
|
|
||||||
parent_position = self.friends_list.mapToGlobal(QtCore.QPoint(0, 0))
|
parent_position = self.friends_list.mapToGlobal(QtCore.QPoint(0, 0))
|
||||||
self.listMenu.move(parent_position + pos)
|
self.listMenu.move(parent_position + pos)
|
||||||
self.listMenu.show()
|
self.listMenu.show()
|
||||||
|
@ -633,7 +627,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
def show_note(self, friend):
|
def show_note(self, friend):
|
||||||
s = Settings.get_instance()
|
s = Settings.get_instance()
|
||||||
note = s['notes'][friend.tox_id] if friend.tox_id in s['notes'] else ''
|
note = s['notes'][friend.tox_id] if friend.tox_id in s['notes'] else ''
|
||||||
user = QtGui.QApplication.translate("MainWindow", 'Notes about user', None, QtGui.QApplication.UnicodeUTF8)
|
user = QtWidgets.QApplication.translate("MainWindow", 'Notes about user')
|
||||||
user = '{} {}'.format(user, friend.name)
|
user = '{} {}'.format(user, friend.name)
|
||||||
|
|
||||||
def save_note(text):
|
def save_note(text):
|
||||||
|
@ -647,12 +641,11 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
|
|
||||||
def export_history(self, num, as_text=True):
|
def export_history(self, num, as_text=True):
|
||||||
s = self.profile.export_history(num, as_text)
|
s = self.profile.export_history(num, as_text)
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(None,
|
directory = QtWidgets.QFileDialog.getExistingDirectory(None,
|
||||||
QtGui.QApplication.translate("MainWindow", 'Choose folder',
|
QtWidgets.QApplication.translate("MainWindow",
|
||||||
None,
|
'Choose folder'),
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
|
||||||
curr_directory(),
|
curr_directory(),
|
||||||
QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontUseNativeDialog)
|
QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
|
|
||||||
if directory:
|
if directory:
|
||||||
name = 'exported_history_{}.{}'.format(convert_time(time.time()), 'txt' if as_text else 'html')
|
name = 'exported_history_{}.{}'.format(convert_time(time.time()), 'txt' if as_text else 'html')
|
||||||
|
@ -671,15 +664,15 @@ class MainWindow(QtGui.QMainWindow, Singleton):
|
||||||
|
|
||||||
def copy_friend_key(self, num):
|
def copy_friend_key(self, num):
|
||||||
tox_id = self.profile.friend_public_key(num)
|
tox_id = self.profile.friend_public_key(num)
|
||||||
clipboard = QtGui.QApplication.clipboard()
|
clipboard = QtWidgets.QApplication.clipboard()
|
||||||
clipboard.setText(tox_id)
|
clipboard.setText(tox_id)
|
||||||
|
|
||||||
def copy_name(self, friend):
|
def copy_name(self, friend):
|
||||||
clipboard = QtGui.QApplication.clipboard()
|
clipboard = QtWidgets.QApplication.clipboard()
|
||||||
clipboard.setText(friend.name)
|
clipboard.setText(friend.name)
|
||||||
|
|
||||||
def copy_status(self, friend):
|
def copy_status(self, friend):
|
||||||
clipboard = QtGui.QApplication.clipboard()
|
clipboard = QtWidgets.QApplication.clipboard()
|
||||||
clipboard.setText(friend.status_message)
|
clipboard.setText(friend.status_message)
|
||||||
|
|
||||||
def clear_history(self, num):
|
def clear_history(self, num):
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
try:
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from widgets import RubberBand, create_menu, QRightClickButton, CenteredWidget, LineEdit
|
from widgets import RubberBand, create_menu, QRightClickButton, CenteredWidget, LineEdit
|
||||||
from profile import Profile
|
from profile import Profile
|
||||||
import smileys
|
import smileys
|
||||||
import util
|
import util
|
||||||
|
|
||||||
|
|
||||||
class MessageArea(QtGui.QPlainTextEdit):
|
class MessageArea(QtWidgets.QPlainTextEdit):
|
||||||
"""User types messages here"""
|
"""User types messages here"""
|
||||||
|
|
||||||
def __init__(self, parent, form):
|
def __init__(self, parent, form):
|
||||||
|
@ -20,7 +17,7 @@ class MessageArea(QtGui.QPlainTextEdit):
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
if event.matches(QtGui.QKeySequence.Paste):
|
if event.matches(QtGui.QKeySequence.Paste):
|
||||||
mimeData = QtGui.QApplication.clipboard().mimeData()
|
mimeData = QtWidgets.QApplication.clipboard().mimeData()
|
||||||
if mimeData.hasUrls():
|
if mimeData.hasUrls():
|
||||||
for url in mimeData.urls():
|
for url in mimeData.urls():
|
||||||
self.pasteEvent(url.toString())
|
self.pasteEvent(url.toString())
|
||||||
|
@ -67,14 +64,14 @@ class MessageArea(QtGui.QPlainTextEdit):
|
||||||
e.ignore()
|
e.ignore()
|
||||||
|
|
||||||
def pasteEvent(self, text=None):
|
def pasteEvent(self, text=None):
|
||||||
text = text or QtGui.QApplication.clipboard().text()
|
text = text or QtWidgets.QApplication.clipboard().text()
|
||||||
if text.startswith('file://'):
|
if text.startswith('file://'):
|
||||||
self.parent.profile.send_file(text[7:])
|
self.parent.profile.send_file(text[7:])
|
||||||
else:
|
else:
|
||||||
self.insertPlainText(text)
|
self.insertPlainText(text)
|
||||||
|
|
||||||
|
|
||||||
class ScreenShotWindow(QtGui.QWidget):
|
class ScreenShotWindow(QtWidgets.QWidget):
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super(ScreenShotWindow, self).__init__()
|
super(ScreenShotWindow, self).__init__()
|
||||||
|
@ -84,6 +81,8 @@ class ScreenShotWindow(QtGui.QWidget):
|
||||||
self.showFullScreen()
|
self.showFullScreen()
|
||||||
self.setWindowOpacity(0.5)
|
self.setWindowOpacity(0.5)
|
||||||
self.rubberband = RubberBand()
|
self.rubberband = RubberBand()
|
||||||
|
self.rubberband.setWindowFlags(self.rubberband.windowFlags() | QtCore.Qt.FramelessWindowHint)
|
||||||
|
self.rubberband.setAttribute(QtCore.Qt.WA_TranslucentBackground)
|
||||||
|
|
||||||
def closeEvent(self, *args):
|
def closeEvent(self, *args):
|
||||||
if self.parent.isHidden():
|
if self.parent.isHidden():
|
||||||
|
@ -93,7 +92,7 @@ class ScreenShotWindow(QtGui.QWidget):
|
||||||
self.origin = event.pos()
|
self.origin = event.pos()
|
||||||
self.rubberband.setGeometry(QtCore.QRect(self.origin, QtCore.QSize()))
|
self.rubberband.setGeometry(QtCore.QRect(self.origin, QtCore.QSize()))
|
||||||
self.rubberband.show()
|
self.rubberband.show()
|
||||||
QtGui.QWidget.mousePressEvent(self, event)
|
QtWidgets.QWidget.mousePressEvent(self, event)
|
||||||
|
|
||||||
def mouseMoveEvent(self, event):
|
def mouseMoveEvent(self, event):
|
||||||
if self.rubberband.isVisible():
|
if self.rubberband.isVisible():
|
||||||
|
@ -109,7 +108,8 @@ class ScreenShotWindow(QtGui.QWidget):
|
||||||
self.rubberband.hide()
|
self.rubberband.hide()
|
||||||
rect = self.rubberband.geometry()
|
rect = self.rubberband.geometry()
|
||||||
if rect.width() and rect.height():
|
if rect.width() and rect.height():
|
||||||
p = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId(),
|
screen = QtWidgets.QApplication.primaryScreen()
|
||||||
|
p = screen.grabWindow(0,
|
||||||
rect.x() + 4,
|
rect.x() + 4,
|
||||||
rect.y() + 4,
|
rect.y() + 4,
|
||||||
rect.width() - 8,
|
rect.width() - 8,
|
||||||
|
@ -129,7 +129,7 @@ class ScreenShotWindow(QtGui.QWidget):
|
||||||
super(ScreenShotWindow, self).keyPressEvent(event)
|
super(ScreenShotWindow, self).keyPressEvent(event)
|
||||||
|
|
||||||
|
|
||||||
class SmileyWindow(QtGui.QWidget):
|
class SmileyWindow(QtWidgets.QWidget):
|
||||||
"""
|
"""
|
||||||
Smiley selection window
|
Smiley selection window
|
||||||
"""
|
"""
|
||||||
|
@ -151,7 +151,7 @@ class SmileyWindow(QtGui.QWidget):
|
||||||
self.radio = []
|
self.radio = []
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
for i in range(self.page_count): # buttons with smileys
|
for i in range(self.page_count): # buttons with smileys
|
||||||
elem = QtGui.QRadioButton(self)
|
elem = QtWidgets.QRadioButton(self)
|
||||||
elem.setGeometry(QtCore.QRect(i * 20 + 5, 180, 20, 20))
|
elem.setGeometry(QtCore.QRect(i * 20 + 5, 180, 20, 20))
|
||||||
elem.clicked.connect(lambda i=i: self.checked(i))
|
elem.clicked.connect(lambda i=i: self.checked(i))
|
||||||
self.radio.append(elem)
|
self.radio.append(elem)
|
||||||
|
@ -160,7 +160,7 @@ class SmileyWindow(QtGui.QWidget):
|
||||||
self.setMinimumSize(width, 200)
|
self.setMinimumSize(width, 200)
|
||||||
self.buttons = []
|
self.buttons = []
|
||||||
for i in range(self.page_size): # pages - radio buttons
|
for i in range(self.page_size): # pages - radio buttons
|
||||||
b = QtGui.QPushButton(self)
|
b = QtWidgets.QPushButton(self)
|
||||||
b.setGeometry(QtCore.QRect((i // 8) * 20 + 5, (i % 8) * 20, 20, 20))
|
b.setGeometry(QtCore.QRect((i // 8) * 20 + 5, (i % 8) * 20, 20, 20))
|
||||||
b.clicked.connect(lambda i=i: self.clicked(i))
|
b.clicked.connect(lambda i=i: self.clicked(i))
|
||||||
self.buttons.append(b)
|
self.buttons.append(b)
|
||||||
|
@ -190,7 +190,7 @@ class SmileyWindow(QtGui.QWidget):
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
class MenuButton(QtGui.QPushButton):
|
class MenuButton(QtWidgets.QPushButton):
|
||||||
|
|
||||||
def __init__(self, parent, enter):
|
def __init__(self, parent, enter):
|
||||||
super(MenuButton, self).__init__(parent)
|
super(MenuButton, self).__init__(parent)
|
||||||
|
@ -201,7 +201,7 @@ class MenuButton(QtGui.QPushButton):
|
||||||
super(MenuButton, self).enterEvent(event)
|
super(MenuButton, self).enterEvent(event)
|
||||||
|
|
||||||
|
|
||||||
class DropdownMenu(QtGui.QWidget):
|
class DropdownMenu(QtWidgets.QWidget):
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super(DropdownMenu, self).__init__(parent)
|
super(DropdownMenu, self).__init__(parent)
|
||||||
|
@ -213,20 +213,20 @@ class DropdownMenu(QtGui.QWidget):
|
||||||
self.screenshotButton.setGeometry(QtCore.QRect(0, 60, 60, 60))
|
self.screenshotButton.setGeometry(QtCore.QRect(0, 60, 60, 60))
|
||||||
self.screenshotButton.setObjectName("screenshotButton")
|
self.screenshotButton.setObjectName("screenshotButton")
|
||||||
|
|
||||||
self.fileTransferButton = QtGui.QPushButton(self)
|
self.fileTransferButton = QtWidgets.QPushButton(self)
|
||||||
self.fileTransferButton.setGeometry(QtCore.QRect(60, 60, 60, 60))
|
self.fileTransferButton.setGeometry(QtCore.QRect(60, 60, 60, 60))
|
||||||
self.fileTransferButton.setObjectName("fileTransferButton")
|
self.fileTransferButton.setObjectName("fileTransferButton")
|
||||||
|
|
||||||
self.audioMessageButton = QtGui.QPushButton(self)
|
self.audioMessageButton = QtWidgets.QPushButton(self)
|
||||||
self.audioMessageButton.setGeometry(QtCore.QRect(120, 60, 60, 60))
|
self.audioMessageButton.setGeometry(QtCore.QRect(120, 60, 60, 60))
|
||||||
|
|
||||||
self.smileyButton = QtGui.QPushButton(self)
|
self.smileyButton = QtWidgets.QPushButton(self)
|
||||||
self.smileyButton.setGeometry(QtCore.QRect(0, 0, 60, 60))
|
self.smileyButton.setGeometry(QtCore.QRect(0, 0, 60, 60))
|
||||||
|
|
||||||
self.videoMessageButton = QtGui.QPushButton(self)
|
self.videoMessageButton = QtWidgets.QPushButton(self)
|
||||||
self.videoMessageButton.setGeometry(QtCore.QRect(120, 0, 60, 60))
|
self.videoMessageButton.setGeometry(QtCore.QRect(120, 0, 60, 60))
|
||||||
|
|
||||||
self.stickerButton = QtGui.QPushButton(self)
|
self.stickerButton = QtWidgets.QPushButton(self)
|
||||||
self.stickerButton.setGeometry(QtCore.QRect(60, 0, 60, 60))
|
self.stickerButton.setGeometry(QtCore.QRect(60, 0, 60, 60))
|
||||||
|
|
||||||
pixmap = QtGui.QPixmap(util.curr_directory() + '/images/file.png')
|
pixmap = QtGui.QPixmap(util.curr_directory() + '/images/file.png')
|
||||||
|
@ -254,16 +254,16 @@ class DropdownMenu(QtGui.QWidget):
|
||||||
self.stickerButton.setIcon(icon)
|
self.stickerButton.setIcon(icon)
|
||||||
self.stickerButton.setIconSize(QtCore.QSize(55, 55))
|
self.stickerButton.setIconSize(QtCore.QSize(55, 55))
|
||||||
|
|
||||||
self.screenshotButton.setToolTip(QtGui.QApplication.translate("MenuWindow", "Send screenshot", None, QtGui.QApplication.UnicodeUTF8))
|
self.screenshotButton.setToolTip(QtWidgets.QApplication.translate("MenuWindow", "Send screenshot"))
|
||||||
self.fileTransferButton.setToolTip(QtGui.QApplication.translate("MenuWindow", "Send file", None, QtGui.QApplication.UnicodeUTF8))
|
self.fileTransferButton.setToolTip(QtWidgets.QApplication.translate("MenuWindow", "Send file"))
|
||||||
self.audioMessageButton.setToolTip(QtGui.QApplication.translate("MenuWindow", "Send audio message", None, QtGui.QApplication.UnicodeUTF8))
|
self.audioMessageButton.setToolTip(QtWidgets.QApplication.translate("MenuWindow", "Send audio message"))
|
||||||
self.videoMessageButton.setToolTip(QtGui.QApplication.translate("MenuWindow", "Send video message", None, QtGui.QApplication.UnicodeUTF8))
|
self.videoMessageButton.setToolTip(QtWidgets.QApplication.translate("MenuWindow", "Send video message"))
|
||||||
self.smileyButton.setToolTip(QtGui.QApplication.translate("MenuWindow", "Add smiley", None, QtGui.QApplication.UnicodeUTF8))
|
self.smileyButton.setToolTip(QtWidgets.QApplication.translate("MenuWindow", "Add smiley"))
|
||||||
self.stickerButton.setToolTip(QtGui.QApplication.translate("MenuWindow", "Send sticker", None, QtGui.QApplication.UnicodeUTF8))
|
self.stickerButton.setToolTip(QtWidgets.QApplication.translate("MenuWindow", "Send sticker"))
|
||||||
|
|
||||||
self.fileTransferButton.clicked.connect(parent.send_file)
|
self.fileTransferButton.clicked.connect(parent.send_file)
|
||||||
self.screenshotButton.clicked.connect(parent.send_screenshot)
|
self.screenshotButton.clicked.connect(parent.send_screenshot)
|
||||||
self.connect(self.screenshotButton, QtCore.SIGNAL("rightClicked()"), lambda: parent.send_screenshot(True))
|
self.screenshotButton.rightClicked.connect(lambda: parent.send_screenshot(True))
|
||||||
self.smileyButton.clicked.connect(parent.send_smiley)
|
self.smileyButton.clicked.connect(parent.send_smiley)
|
||||||
self.stickerButton.clicked.connect(parent.send_sticker)
|
self.stickerButton.clicked.connect(parent.send_sticker)
|
||||||
|
|
||||||
|
@ -276,11 +276,11 @@ class DropdownMenu(QtGui.QWidget):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
class StickerItem(QtGui.QWidget):
|
class StickerItem(QtWidgets.QWidget):
|
||||||
|
|
||||||
def __init__(self, fl):
|
def __init__(self, fl):
|
||||||
super(StickerItem, self).__init__()
|
super(StickerItem, self).__init__()
|
||||||
self._image_label = QtGui.QLabel(self)
|
self._image_label = QtWidgets.QLabel(self)
|
||||||
self.path = fl
|
self.path = fl
|
||||||
self.pixmap = QtGui.QPixmap()
|
self.pixmap = QtGui.QPixmap()
|
||||||
self.pixmap.load(fl)
|
self.pixmap.load(fl)
|
||||||
|
@ -290,7 +290,7 @@ class StickerItem(QtGui.QWidget):
|
||||||
self._image_label.setPixmap(self.pixmap)
|
self._image_label.setPixmap(self.pixmap)
|
||||||
|
|
||||||
|
|
||||||
class StickerWindow(QtGui.QWidget):
|
class StickerWindow(QtWidgets.QWidget):
|
||||||
"""Sticker selection window"""
|
"""Sticker selection window"""
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
|
@ -298,16 +298,16 @@ class StickerWindow(QtGui.QWidget):
|
||||||
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
|
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
|
||||||
self.setMaximumSize(250, 200)
|
self.setMaximumSize(250, 200)
|
||||||
self.setMinimumSize(250, 200)
|
self.setMinimumSize(250, 200)
|
||||||
self.list = QtGui.QListWidget(self)
|
self.list = QtWidgets.QListWidget(self)
|
||||||
self.list.setGeometry(QtCore.QRect(0, 0, 250, 200))
|
self.list.setGeometry(QtCore.QRect(0, 0, 250, 200))
|
||||||
self.arr = smileys.sticker_loader()
|
self.arr = smileys.sticker_loader()
|
||||||
for sticker in self.arr:
|
for sticker in self.arr:
|
||||||
item = StickerItem(sticker)
|
item = StickerItem(sticker)
|
||||||
elem = QtGui.QListWidgetItem()
|
elem = QtWidgets.QListWidgetItem()
|
||||||
elem.setSizeHint(QtCore.QSize(250, item.height()))
|
elem.setSizeHint(QtCore.QSize(250, item.height()))
|
||||||
self.list.addItem(elem)
|
self.list.addItem(elem)
|
||||||
self.list.setItemWidget(elem, item)
|
self.list.setItemWidget(elem, item)
|
||||||
self.list.setVerticalScrollMode(QtGui.QAbstractItemView.ScrollPerPixel)
|
self.list.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
||||||
self.list.setSpacing(3)
|
self.list.setSpacing(3)
|
||||||
self.list.clicked.connect(self.click)
|
self.list.clicked.connect(self.click)
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
|
@ -329,56 +329,44 @@ class WelcomeScreen(CenteredWidget):
|
||||||
self.setMinimumSize(250, 200)
|
self.setMinimumSize(250, 200)
|
||||||
self.center()
|
self.center()
|
||||||
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
|
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
|
||||||
self.text = QtGui.QTextBrowser(self)
|
self.text = QtWidgets.QTextBrowser(self)
|
||||||
self.text.setGeometry(QtCore.QRect(0, 0, 250, 170))
|
self.text.setGeometry(QtCore.QRect(0, 0, 250, 170))
|
||||||
self.text.setOpenExternalLinks(True)
|
self.text.setOpenExternalLinks(True)
|
||||||
self.checkbox = QtGui.QCheckBox(self)
|
self.checkbox = QtWidgets.QCheckBox(self)
|
||||||
self.checkbox.setGeometry(QtCore.QRect(5, 170, 240, 30))
|
self.checkbox.setGeometry(QtCore.QRect(5, 170, 240, 30))
|
||||||
self.checkbox.setText(QtGui.QApplication.translate('WelcomeScreen', "Don't show again",
|
self.checkbox.setText(QtWidgets.QApplication.translate('WelcomeScreen', "Don't show again"))
|
||||||
None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate('WelcomeScreen', 'Tip of the day'))
|
||||||
self.setWindowTitle(QtGui.QApplication.translate('WelcomeScreen', 'Tip of the day',
|
|
||||||
None, QtGui.QApplication.UnicodeUTF8))
|
|
||||||
import random
|
import random
|
||||||
num = random.randint(0, 10)
|
num = random.randint(0, 10)
|
||||||
if num == 0:
|
if num == 0:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen', 'Press Esc if you want hide app to tray.',
|
text = QtWidgets.QApplication.translate('WelcomeScreen', 'Press Esc if you want hide app to tray.')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num == 1:
|
elif num == 1:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Right click on screenshot button hides app to tray during screenshot.',
|
'Right click on screenshot button hides app to tray during screenshot.')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num == 2:
|
elif num == 2:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'You can use Tox over Tor. For more info read <a href="https://wiki.tox.chat/users/tox_over_tor_tot">this post</a>',
|
'You can use Tox over Tor. For more info read <a href="https://wiki.tox.chat/users/tox_over_tor_tot">this post</a>')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num == 3:
|
elif num == 3:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Use Settings -> Interface to customize interface.',
|
'Use Settings -> Interface to customize interface.')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num == 4:
|
elif num == 4:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Set profile password via Profile -> Settings. Password allows Toxygen encrypt your history and settings.',
|
'Set profile password via Profile -> Settings. Password allows Toxygen encrypt your history and settings.')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num == 5:
|
elif num == 5:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Since v0.1.3 Toxygen supports plugins. <a href="https://github.com/xveduk/toxygen/blob/master/docs/plugins.md">Read more</a>',
|
'Since v0.1.3 Toxygen supports plugins. <a href="https://github.com/xveduk/toxygen/blob/master/docs/plugins.md">Read more</a>')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num in (6, 7):
|
elif num in (6, 7):
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Toxygen supports faux offline messages and file transfers. Send message or file to offline friend and he will get it later.',
|
'Toxygen supports faux offline messages and file transfers. Send message or file to offline friend and he will get it later.')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num == 8:
|
elif num == 8:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Delete single message in chat: make right click on spinner or message time and choose "Delete" in menu',
|
'Delete single message in chat: make right click on spinner or message time and choose "Delete" in menu')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
elif num == 9:
|
elif num == 9:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Use right click on inline image to save it',
|
'Use right click on inline image to save it')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
else:
|
else:
|
||||||
text = QtGui.QApplication.translate('WelcomeScreen',
|
text = QtWidgets.QApplication.translate('WelcomeScreen',
|
||||||
'Set new NoSpam to avoid spam friend requests: Profile -> Settings -> Set new NoSpam.',
|
'Set new NoSpam to avoid spam friend requests: Profile -> Settings -> Set new NoSpam.')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
self.text.setHtml(text)
|
self.text.setHtml(text)
|
||||||
self.checkbox.stateChanged.connect(self.not_show)
|
self.checkbox.stateChanged.connect(self.not_show)
|
||||||
QtCore.QTimer.singleShot(1000, self.show)
|
QtCore.QTimer.singleShot(1000, self.show)
|
||||||
|
@ -390,7 +378,7 @@ class WelcomeScreen(CenteredWidget):
|
||||||
s.save()
|
s.save()
|
||||||
|
|
||||||
|
|
||||||
class MainMenuButton(QtGui.QPushButton):
|
class MainMenuButton(QtWidgets.QPushButton):
|
||||||
|
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
super().__init__(*args)
|
super().__init__(*args)
|
||||||
|
@ -402,16 +390,18 @@ class MainMenuButton(QtGui.QPushButton):
|
||||||
super().setText(text)
|
super().setText(text)
|
||||||
|
|
||||||
|
|
||||||
class ClickableLabel(QtGui.QLabel):
|
class ClickableLabel(QtWidgets.QLabel):
|
||||||
|
|
||||||
|
clicked = QtCore.pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
super().__init__(*args)
|
super().__init__(*args)
|
||||||
|
|
||||||
def mouseReleaseEvent(self, ev):
|
def mouseReleaseEvent(self, ev):
|
||||||
self.emit(QtCore.SIGNAL('clicked()'))
|
self.clicked.emit()
|
||||||
|
|
||||||
|
|
||||||
class SearchScreen(QtGui.QWidget):
|
class SearchScreen(QtWidgets.QWidget):
|
||||||
|
|
||||||
def __init__(self, messages, width, *args):
|
def __init__(self, messages, width, *args):
|
||||||
super().__init__(*args)
|
super().__init__(*args)
|
||||||
|
@ -429,23 +419,23 @@ class SearchScreen(QtGui.QWidget):
|
||||||
self.search_button.setScaledContents(False)
|
self.search_button.setScaledContents(False)
|
||||||
self.search_button.setAlignment(QtCore.Qt.AlignCenter)
|
self.search_button.setAlignment(QtCore.Qt.AlignCenter)
|
||||||
self.search_button.setPixmap(pixmap)
|
self.search_button.setPixmap(pixmap)
|
||||||
self.connect(self.search_button, QtCore.SIGNAL('clicked()'), self.search)
|
self.search_button.clicked.connect(self.search)
|
||||||
|
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setPointSize(32)
|
font.setPointSize(32)
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
|
|
||||||
self.prev_button = QtGui.QPushButton(self)
|
self.prev_button = QtWidgets.QPushButton(self)
|
||||||
self.prev_button.setGeometry(width - 120, 0, 40, 40)
|
self.prev_button.setGeometry(width - 120, 0, 40, 40)
|
||||||
self.prev_button.clicked.connect(self.prev)
|
self.prev_button.clicked.connect(self.prev)
|
||||||
self.prev_button.setText('\u25B2')
|
self.prev_button.setText('\u25B2')
|
||||||
|
|
||||||
self.next_button = QtGui.QPushButton(self)
|
self.next_button = QtWidgets.QPushButton(self)
|
||||||
self.next_button.setGeometry(width - 80, 0, 40, 40)
|
self.next_button.setGeometry(width - 80, 0, 40, 40)
|
||||||
self.next_button.clicked.connect(self.next)
|
self.next_button.clicked.connect(self.next)
|
||||||
self.next_button.setText('\u25BC')
|
self.next_button.setText('\u25BC')
|
||||||
|
|
||||||
self.close_button = QtGui.QPushButton(self)
|
self.close_button = QtWidgets.QPushButton(self)
|
||||||
self.close_button.setGeometry(width - 40, 0, 40, 40)
|
self.close_button.setGeometry(width - 40, 0, 40, 40)
|
||||||
self.close_button.clicked.connect(self.close)
|
self.close_button.clicked.connect(self.close)
|
||||||
self.close_button.setText('×')
|
self.close_button.setText('×')
|
||||||
|
@ -458,8 +448,7 @@ class SearchScreen(QtGui.QWidget):
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.search_text.setPlaceholderText(QtGui.QApplication.translate("MainWindow", "Search", None,
|
self.search_text.setPlaceholderText(QtWidgets.QApplication.translate("MainWindow", "Search"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
|
|
||||||
def show(self):
|
def show(self):
|
||||||
super().show()
|
super().show()
|
||||||
|
@ -515,15 +504,11 @@ class SearchScreen(QtGui.QWidget):
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def not_found(text):
|
def not_found(text):
|
||||||
mbox = QtGui.QMessageBox()
|
mbox = QtWidgets.QMessageBox()
|
||||||
mbox_text = QtGui.QApplication.translate("MainWindow",
|
mbox_text = QtWidgets.QApplication.translate("MainWindow",
|
||||||
'Text "{}" was not found',
|
'Text "{}" was not found')
|
||||||
None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
|
||||||
|
|
||||||
mbox.setText(mbox_text.format(text))
|
mbox.setText(mbox_text.format(text))
|
||||||
mbox.setWindowTitle(QtGui.QApplication.translate("MainWindow",
|
mbox.setWindowTitle(QtWidgets.QApplication.translate("MainWindow",
|
||||||
'Not found',
|
'Not found'))
|
||||||
None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
mbox.exec_()
|
mbox.exec_()
|
||||||
|
|
489
toxygen/menu.py
489
toxygen/menu.py
|
@ -1,7 +1,4 @@
|
||||||
try:
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from settings import *
|
from settings import *
|
||||||
from profile import Profile
|
from profile import Profile
|
||||||
from util import curr_directory, copy
|
from util import curr_directory, copy
|
||||||
|
@ -23,7 +20,7 @@ class AddContact(CenteredWidget):
|
||||||
def initUI(self, tox_id):
|
def initUI(self, tox_id):
|
||||||
self.setObjectName('AddContact')
|
self.setObjectName('AddContact')
|
||||||
self.resize(568, 306)
|
self.resize(568, 306)
|
||||||
self.sendRequestButton = QtGui.QPushButton(self)
|
self.sendRequestButton = QtWidgets.QPushButton(self)
|
||||||
self.sendRequestButton.setGeometry(QtCore.QRect(50, 270, 471, 31))
|
self.sendRequestButton.setGeometry(QtCore.QRect(50, 270, 471, 31))
|
||||||
self.sendRequestButton.setMinimumSize(QtCore.QSize(0, 0))
|
self.sendRequestButton.setMinimumSize(QtCore.QSize(0, 0))
|
||||||
self.sendRequestButton.setBaseSize(QtCore.QSize(0, 0))
|
self.sendRequestButton.setBaseSize(QtCore.QSize(0, 0))
|
||||||
|
@ -33,7 +30,7 @@ class AddContact(CenteredWidget):
|
||||||
self.tox_id.setGeometry(QtCore.QRect(50, 40, 471, 27))
|
self.tox_id.setGeometry(QtCore.QRect(50, 40, 471, 27))
|
||||||
self.tox_id.setObjectName("lineEdit")
|
self.tox_id.setObjectName("lineEdit")
|
||||||
self.tox_id.setText(tox_id)
|
self.tox_id.setText(tox_id)
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(50, 10, 80, 20))
|
self.label.setGeometry(QtCore.QRect(50, 10, 80, 20))
|
||||||
self.error_label = DataLabel(self)
|
self.error_label = DataLabel(self)
|
||||||
self.error_label.setGeometry(QtCore.QRect(120, 10, 420, 20))
|
self.error_label.setGeometry(QtCore.QRect(120, 10, 420, 20))
|
||||||
|
@ -44,10 +41,10 @@ class AddContact(CenteredWidget):
|
||||||
self.error_label.setFont(font)
|
self.error_label.setFont(font)
|
||||||
self.error_label.setStyleSheet("QLabel { color: #BC1C1C; }")
|
self.error_label.setStyleSheet("QLabel { color: #BC1C1C; }")
|
||||||
self.label.setObjectName("label")
|
self.label.setObjectName("label")
|
||||||
self.message_edit = QtGui.QTextEdit(self)
|
self.message_edit = QtWidgets.QTextEdit(self)
|
||||||
self.message_edit.setGeometry(QtCore.QRect(50, 110, 471, 151))
|
self.message_edit.setGeometry(QtCore.QRect(50, 110, 471, 151))
|
||||||
self.message_edit.setObjectName("textEdit")
|
self.message_edit.setObjectName("textEdit")
|
||||||
self.message = QtGui.QLabel(self)
|
self.message = QtWidgets.QLabel(self)
|
||||||
self.message.setGeometry(QtCore.QRect(50, 70, 101, 31))
|
self.message.setGeometry(QtCore.QRect(50, 70, 101, 31))
|
||||||
self.message.setFont(font)
|
self.message.setFont(font)
|
||||||
self.message.setObjectName("label_2")
|
self.message.setObjectName("label_2")
|
||||||
|
@ -73,11 +70,11 @@ class AddContact(CenteredWidget):
|
||||||
self.error_label.setText(send)
|
self.error_label.setText(send)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate('AddContact', "Add contact", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate('AddContact', "Add contact"))
|
||||||
self.sendRequestButton.setText(QtGui.QApplication.translate("Form", "Send request", None, QtGui.QApplication.UnicodeUTF8))
|
self.sendRequestButton.setText(QtWidgets.QApplication.translate("Form", "Send request"))
|
||||||
self.label.setText(QtGui.QApplication.translate('AddContact', "TOX ID:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label.setText(QtWidgets.QApplication.translate('AddContact', "TOX ID:"))
|
||||||
self.message.setText(QtGui.QApplication.translate('AddContact', "Message:", None, QtGui.QApplication.UnicodeUTF8))
|
self.message.setText(QtWidgets.QApplication.translate('AddContact', "Message:"))
|
||||||
self.tox_id.setPlaceholderText(QtGui.QApplication.translate('AddContact', "TOX ID or public key of contact", None, QtGui.QApplication.UnicodeUTF8))
|
self.tox_id.setPlaceholderText(QtWidgets.QApplication.translate('AddContact', "TOX ID or public key of contact"))
|
||||||
|
|
||||||
|
|
||||||
class ProfileSettings(CenteredWidget):
|
class ProfileSettings(CenteredWidget):
|
||||||
|
@ -95,12 +92,12 @@ class ProfileSettings(CenteredWidget):
|
||||||
self.nick.setGeometry(QtCore.QRect(30, 60, 350, 27))
|
self.nick.setGeometry(QtCore.QRect(30, 60, 350, 27))
|
||||||
profile = Profile.get_instance()
|
profile = Profile.get_instance()
|
||||||
self.nick.setText(profile.name)
|
self.nick.setText(profile.name)
|
||||||
self.status = QtGui.QComboBox(self)
|
self.status = QtWidgets.QComboBox(self)
|
||||||
self.status.setGeometry(QtCore.QRect(400, 60, 200, 27))
|
self.status.setGeometry(QtCore.QRect(400, 60, 200, 27))
|
||||||
self.status_message = LineEdit(self)
|
self.status_message = LineEdit(self)
|
||||||
self.status_message.setGeometry(QtCore.QRect(30, 130, 350, 27))
|
self.status_message.setGeometry(QtCore.QRect(30, 130, 350, 27))
|
||||||
self.status_message.setText(profile.status_message)
|
self.status_message.setText(profile.status_message)
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(40, 30, 91, 25))
|
self.label.setGeometry(QtCore.QRect(40, 30, 91, 25))
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setFamily(Settings.get_instance()['font'])
|
font.setFamily(Settings.get_instance()['font'])
|
||||||
|
@ -108,59 +105,59 @@ class ProfileSettings(CenteredWidget):
|
||||||
font.setWeight(75)
|
font.setWeight(75)
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
self.label.setFont(font)
|
self.label.setFont(font)
|
||||||
self.label_2 = QtGui.QLabel(self)
|
self.label_2 = QtWidgets.QLabel(self)
|
||||||
self.label_2.setGeometry(QtCore.QRect(40, 100, 100, 25))
|
self.label_2.setGeometry(QtCore.QRect(40, 100, 100, 25))
|
||||||
self.label_2.setFont(font)
|
self.label_2.setFont(font)
|
||||||
self.label_3 = QtGui.QLabel(self)
|
self.label_3 = QtWidgets.QLabel(self)
|
||||||
self.label_3.setGeometry(QtCore.QRect(40, 180, 100, 25))
|
self.label_3.setGeometry(QtCore.QRect(40, 180, 100, 25))
|
||||||
self.label_3.setFont(font)
|
self.label_3.setFont(font)
|
||||||
self.tox_id = QtGui.QLabel(self)
|
self.tox_id = QtWidgets.QLabel(self)
|
||||||
self.tox_id.setGeometry(QtCore.QRect(15, 210, 685, 21))
|
self.tox_id.setGeometry(QtCore.QRect(15, 210, 685, 21))
|
||||||
font.setPointSize(10)
|
font.setPointSize(10)
|
||||||
self.tox_id.setFont(font)
|
self.tox_id.setFont(font)
|
||||||
s = profile.tox_id
|
s = profile.tox_id
|
||||||
self.tox_id.setText(s)
|
self.tox_id.setText(s)
|
||||||
self.copyId = QtGui.QPushButton(self)
|
self.copyId = QtWidgets.QPushButton(self)
|
||||||
self.copyId.setGeometry(QtCore.QRect(40, 250, 180, 30))
|
self.copyId.setGeometry(QtCore.QRect(40, 250, 180, 30))
|
||||||
self.copyId.clicked.connect(self.copy)
|
self.copyId.clicked.connect(self.copy)
|
||||||
self.export = QtGui.QPushButton(self)
|
self.export = QtWidgets.QPushButton(self)
|
||||||
self.export.setGeometry(QtCore.QRect(230, 250, 180, 30))
|
self.export.setGeometry(QtCore.QRect(230, 250, 180, 30))
|
||||||
self.export.clicked.connect(self.export_profile)
|
self.export.clicked.connect(self.export_profile)
|
||||||
self.new_nospam = QtGui.QPushButton(self)
|
self.new_nospam = QtWidgets.QPushButton(self)
|
||||||
self.new_nospam.setGeometry(QtCore.QRect(420, 250, 180, 30))
|
self.new_nospam.setGeometry(QtCore.QRect(420, 250, 180, 30))
|
||||||
self.new_nospam.clicked.connect(self.new_no_spam)
|
self.new_nospam.clicked.connect(self.new_no_spam)
|
||||||
self.copy_pk = QtGui.QPushButton(self)
|
self.copy_pk = QtWidgets.QPushButton(self)
|
||||||
self.copy_pk.setGeometry(QtCore.QRect(40, 300, 180, 30))
|
self.copy_pk.setGeometry(QtCore.QRect(40, 300, 180, 30))
|
||||||
self.copy_pk.clicked.connect(self.copy_public_key)
|
self.copy_pk.clicked.connect(self.copy_public_key)
|
||||||
self.new_avatar = QtGui.QPushButton(self)
|
self.new_avatar = QtWidgets.QPushButton(self)
|
||||||
self.new_avatar.setGeometry(QtCore.QRect(230, 300, 180, 30))
|
self.new_avatar.setGeometry(QtCore.QRect(230, 300, 180, 30))
|
||||||
self.delete_avatar = QtGui.QPushButton(self)
|
self.delete_avatar = QtWidgets.QPushButton(self)
|
||||||
self.delete_avatar.setGeometry(QtCore.QRect(420, 300, 180, 30))
|
self.delete_avatar.setGeometry(QtCore.QRect(420, 300, 180, 30))
|
||||||
self.delete_avatar.clicked.connect(self.reset_avatar)
|
self.delete_avatar.clicked.connect(self.reset_avatar)
|
||||||
self.new_avatar.clicked.connect(self.set_avatar)
|
self.new_avatar.clicked.connect(self.set_avatar)
|
||||||
self.profilepass = QtGui.QLabel(self)
|
self.profilepass = QtWidgets.QLabel(self)
|
||||||
self.profilepass.setGeometry(QtCore.QRect(40, 340, 300, 30))
|
self.profilepass.setGeometry(QtCore.QRect(40, 340, 300, 30))
|
||||||
font.setPointSize(18)
|
font.setPointSize(18)
|
||||||
self.profilepass.setFont(font)
|
self.profilepass.setFont(font)
|
||||||
self.password = LineEdit(self)
|
self.password = LineEdit(self)
|
||||||
self.password.setGeometry(QtCore.QRect(40, 380, 300, 30))
|
self.password.setGeometry(QtCore.QRect(40, 380, 300, 30))
|
||||||
self.password.setEchoMode(QtGui.QLineEdit.EchoMode.Password)
|
self.password.setEchoMode(QtWidgets.QLineEdit.Password)
|
||||||
self.leave_blank = QtGui.QLabel(self)
|
self.leave_blank = QtWidgets.QLabel(self)
|
||||||
self.leave_blank.setGeometry(QtCore.QRect(350, 380, 300, 30))
|
self.leave_blank.setGeometry(QtCore.QRect(350, 380, 300, 30))
|
||||||
self.confirm_password = LineEdit(self)
|
self.confirm_password = LineEdit(self)
|
||||||
self.confirm_password.setGeometry(QtCore.QRect(40, 420, 300, 30))
|
self.confirm_password.setGeometry(QtCore.QRect(40, 420, 300, 30))
|
||||||
self.confirm_password.setEchoMode(QtGui.QLineEdit.EchoMode.Password)
|
self.confirm_password.setEchoMode(QtWidgets.QLineEdit.Password)
|
||||||
self.set_password = QtGui.QPushButton(self)
|
self.set_password = QtWidgets.QPushButton(self)
|
||||||
self.set_password.setGeometry(QtCore.QRect(40, 470, 300, 30))
|
self.set_password.setGeometry(QtCore.QRect(40, 470, 300, 30))
|
||||||
self.set_password.clicked.connect(self.new_password)
|
self.set_password.clicked.connect(self.new_password)
|
||||||
self.not_match = QtGui.QLabel(self)
|
self.not_match = QtWidgets.QLabel(self)
|
||||||
self.not_match.setGeometry(QtCore.QRect(350, 420, 300, 30))
|
self.not_match.setGeometry(QtCore.QRect(350, 420, 300, 30))
|
||||||
self.not_match.setVisible(False)
|
self.not_match.setVisible(False)
|
||||||
self.not_match.setStyleSheet('QLabel { color: #BC1C1C; }')
|
self.not_match.setStyleSheet('QLabel { color: #BC1C1C; }')
|
||||||
self.warning = QtGui.QLabel(self)
|
self.warning = QtWidgets.QLabel(self)
|
||||||
self.warning.setGeometry(QtCore.QRect(40, 510, 500, 30))
|
self.warning.setGeometry(QtCore.QRect(40, 510, 500, 30))
|
||||||
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
||||||
self.default = QtGui.QPushButton(self)
|
self.default = QtWidgets.QPushButton(self)
|
||||||
self.default.setGeometry(QtCore.QRect(40, 550, 620, 30))
|
self.default.setGeometry(QtCore.QRect(40, 550, 620, 30))
|
||||||
path, name = Settings.get_auto_profile()
|
path, name = Settings.get_auto_profile()
|
||||||
self.auto = path + name == ProfileHelper.get_path() + Settings.get_instance().name
|
self.auto = path + name == ProfileHelper.get_path() + Settings.get_instance().name
|
||||||
|
@ -173,30 +170,30 @@ class ProfileSettings(CenteredWidget):
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.export.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Export profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.export.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Export profile"))
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("ProfileSettingsForm", "Profile settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("ProfileSettingsForm", "Profile settings"))
|
||||||
self.label.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Name:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Name:"))
|
||||||
self.label_2.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Status:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label_2.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Status:"))
|
||||||
self.label_3.setText(QtGui.QApplication.translate("ProfileSettingsForm", "TOX ID:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label_3.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "TOX ID:"))
|
||||||
self.copyId.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Copy TOX ID", None, QtGui.QApplication.UnicodeUTF8))
|
self.copyId.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Copy TOX ID"))
|
||||||
self.new_avatar.setText(QtGui.QApplication.translate("ProfileSettingsForm", "New avatar", None, QtGui.QApplication.UnicodeUTF8))
|
self.new_avatar.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "New avatar"))
|
||||||
self.delete_avatar.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Reset avatar", None, QtGui.QApplication.UnicodeUTF8))
|
self.delete_avatar.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Reset avatar"))
|
||||||
self.new_nospam.setText(QtGui.QApplication.translate("ProfileSettingsForm", "New NoSpam", None, QtGui.QApplication.UnicodeUTF8))
|
self.new_nospam.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "New NoSpam"))
|
||||||
self.profilepass.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Profile password", None, QtGui.QApplication.UnicodeUTF8))
|
self.profilepass.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Profile password"))
|
||||||
self.password.setPlaceholderText(QtGui.QApplication.translate("ProfileSettingsForm", "Password (at least 8 symbols)", None, QtGui.QApplication.UnicodeUTF8))
|
self.password.setPlaceholderText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Password (at least 8 symbols)"))
|
||||||
self.confirm_password.setPlaceholderText(QtGui.QApplication.translate("ProfileSettingsForm", "Confirm password", None, QtGui.QApplication.UnicodeUTF8))
|
self.confirm_password.setPlaceholderText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Confirm password"))
|
||||||
self.set_password.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Set password", None, QtGui.QApplication.UnicodeUTF8))
|
self.set_password.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Set password"))
|
||||||
self.not_match.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Passwords do not match", None, QtGui.QApplication.UnicodeUTF8))
|
self.not_match.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Passwords do not match"))
|
||||||
self.leave_blank.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Leaving blank will reset current password", None, QtGui.QApplication.UnicodeUTF8))
|
self.leave_blank.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Leaving blank will reset current password"))
|
||||||
self.warning.setText(QtGui.QApplication.translate("ProfileSettingsForm", "There is no way to recover lost passwords", None, QtGui.QApplication.UnicodeUTF8))
|
self.warning.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "There is no way to recover lost passwords"))
|
||||||
self.status.addItem(QtGui.QApplication.translate("ProfileSettingsForm", "Online", None, QtGui.QApplication.UnicodeUTF8))
|
self.status.addItem(QtWidgets.QApplication.translate("ProfileSettingsForm", "Online"))
|
||||||
self.status.addItem(QtGui.QApplication.translate("ProfileSettingsForm", "Away", None, QtGui.QApplication.UnicodeUTF8))
|
self.status.addItem(QtWidgets.QApplication.translate("ProfileSettingsForm", "Away"))
|
||||||
self.status.addItem(QtGui.QApplication.translate("ProfileSettingsForm", "Busy", None, QtGui.QApplication.UnicodeUTF8))
|
self.status.addItem(QtWidgets.QApplication.translate("ProfileSettingsForm", "Busy"))
|
||||||
self.copy_pk.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Copy public key", None, QtGui.QApplication.UnicodeUTF8))
|
self.copy_pk.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Copy public key"))
|
||||||
if self.auto:
|
if self.auto:
|
||||||
self.default.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Mark as not default profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.default.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Mark as not default profile"))
|
||||||
else:
|
else:
|
||||||
self.default.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Mark as default profile", None, QtGui.QApplication.UnicodeUTF8))
|
self.default.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Mark as default profile"))
|
||||||
|
|
||||||
def auto_profile(self):
|
def auto_profile(self):
|
||||||
if self.auto:
|
if self.auto:
|
||||||
|
@ -205,12 +202,10 @@ class ProfileSettings(CenteredWidget):
|
||||||
Settings.set_auto_profile(ProfileHelper.get_path(), Settings.get_instance().name)
|
Settings.set_auto_profile(ProfileHelper.get_path(), Settings.get_instance().name)
|
||||||
self.auto = not self.auto
|
self.auto = not self.auto
|
||||||
if self.auto:
|
if self.auto:
|
||||||
self.default.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Mark as not default profile", None,
|
self.default.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Mark as not default profile"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
else:
|
else:
|
||||||
self.default.setText(
|
self.default.setText(
|
||||||
QtGui.QApplication.translate("ProfileSettingsForm", "Mark as default profile", None,
|
QtWidgets.QApplication.translate("ProfileSettingsForm", "Mark as default profile"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
|
|
||||||
def new_password(self):
|
def new_password(self):
|
||||||
if self.password.text() == self.confirm_password.text():
|
if self.password.text() == self.confirm_password.text():
|
||||||
|
@ -220,16 +215,14 @@ class ProfileSettings(CenteredWidget):
|
||||||
self.close()
|
self.close()
|
||||||
else:
|
else:
|
||||||
self.not_match.setText(
|
self.not_match.setText(
|
||||||
QtGui.QApplication.translate("ProfileSettingsForm", "Password must be at least 8 symbols", None,
|
QtWidgets.QApplication.translate("ProfileSettingsForm", "Password must be at least 8 symbols"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.not_match.setVisible(True)
|
self.not_match.setVisible(True)
|
||||||
else:
|
else:
|
||||||
self.not_match.setText(QtGui.QApplication.translate("ProfileSettingsForm", "Passwords do not match", None,
|
self.not_match.setText(QtWidgets.QApplication.translate("ProfileSettingsForm", "Passwords do not match"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.not_match.setVisible(True)
|
self.not_match.setVisible(True)
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
clipboard = QtGui.QApplication.clipboard()
|
clipboard = QtWidgets.QApplication.clipboard()
|
||||||
profile = Profile.get_instance()
|
profile = Profile.get_instance()
|
||||||
clipboard.setText(profile.tox_id)
|
clipboard.setText(profile.tox_id)
|
||||||
pixmap = QtGui.QPixmap(curr_directory() + '/images/accept.png')
|
pixmap = QtGui.QPixmap(curr_directory() + '/images/accept.png')
|
||||||
|
@ -238,7 +231,7 @@ class ProfileSettings(CenteredWidget):
|
||||||
self.copyId.setIconSize(QtCore.QSize(10, 10))
|
self.copyId.setIconSize(QtCore.QSize(10, 10))
|
||||||
|
|
||||||
def copy_public_key(self):
|
def copy_public_key(self):
|
||||||
clipboard = QtGui.QApplication.clipboard()
|
clipboard = QtWidgets.QApplication.clipboard()
|
||||||
profile = Profile.get_instance()
|
profile = Profile.get_instance()
|
||||||
clipboard.setText(profile.tox_id[:64])
|
clipboard.setText(profile.tox_id[:64])
|
||||||
pixmap = QtGui.QPixmap(curr_directory() + '/images/accept.png')
|
pixmap = QtGui.QPixmap(curr_directory() + '/images/accept.png')
|
||||||
|
@ -253,9 +246,9 @@ class ProfileSettings(CenteredWidget):
|
||||||
Profile.get_instance().reset_avatar()
|
Profile.get_instance().reset_avatar()
|
||||||
|
|
||||||
def set_avatar(self):
|
def set_avatar(self):
|
||||||
choose = QtGui.QApplication.translate("ProfileSettingsForm", "Choose avatar", None, QtGui.QApplication.UnicodeUTF8)
|
choose = QtWidgets.QApplication.translate("ProfileSettingsForm", "Choose avatar")
|
||||||
name = QtGui.QFileDialog.getOpenFileName(self, choose, None, 'Images (*.png)',
|
name = QtWidgets.QFileDialog.getOpenFileName(self, choose, None, 'Images (*.png)',
|
||||||
options=QtGui.QFileDialog.DontUseNativeDialog)
|
QtGui.QComboBoxQtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
if name[0]:
|
if name[0]:
|
||||||
bitmap = QtGui.QPixmap(name[0])
|
bitmap = QtGui.QPixmap(name[0])
|
||||||
bitmap.scaled(QtCore.QSize(128, 128), aspectMode=QtCore.Qt.KeepAspectRatio,
|
bitmap.scaled(QtCore.QSize(128, 128), aspectMode=QtCore.Qt.KeepAspectRatio,
|
||||||
|
@ -268,25 +261,21 @@ class ProfileSettings(CenteredWidget):
|
||||||
Profile.get_instance().set_avatar(bytes(byte_array.data()))
|
Profile.get_instance().set_avatar(bytes(byte_array.data()))
|
||||||
|
|
||||||
def export_profile(self):
|
def export_profile(self):
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(options=QtGui.QFileDialog.DontUseNativeDialog,
|
directory = QtWidgets.QFileDialog.getExistingDirectory(options=QtWidgets.QFileDialog.DontUseNativeDialog,
|
||||||
dir=curr_directory()) + '/'
|
dir=curr_directory()) + '/'
|
||||||
if directory != '/':
|
if directory != '/':
|
||||||
reply = QtGui.QMessageBox.question(None,
|
reply = QtWidgets.QMessageBox.question(None,
|
||||||
QtGui.QApplication.translate("ProfileSettingsForm",
|
QtWidgets.QApplication.translate("ProfileSettingsForm",
|
||||||
'Use new path',
|
'Use new path'),
|
||||||
None,
|
QtWidgets.QApplication.translate("ProfileSettingsForm",
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
'Do you want to move your profile to this location?'),
|
||||||
QtGui.QApplication.translate("ProfileSettingsForm",
|
QtWidgets.QMessageBox.Yes,
|
||||||
'Do you want to move your profile to this location?',
|
QtWidgets.QMessageBox.No)
|
||||||
None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
|
||||||
QtGui.QMessageBox.Yes,
|
|
||||||
QtGui.QMessageBox.No)
|
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
settings.export(directory)
|
settings.export(directory)
|
||||||
profile = Profile.get_instance()
|
profile = Profile.get_instance()
|
||||||
profile.export_db(directory)
|
profile.export_db(directory)
|
||||||
ProfileHelper.get_instance().export_profile(directory, reply == QtGui.QMessageBox.Yes)
|
ProfileHelper.get_instance().export_profile(directory, reply == QtWidgets.QMessageBox.Yes)
|
||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
profile = Profile.get_instance()
|
profile = Profile.get_instance()
|
||||||
|
@ -309,15 +298,15 @@ class NetworkSettings(CenteredWidget):
|
||||||
self.setMinimumSize(QtCore.QSize(300, 330))
|
self.setMinimumSize(QtCore.QSize(300, 330))
|
||||||
self.setMaximumSize(QtCore.QSize(300, 330))
|
self.setMaximumSize(QtCore.QSize(300, 330))
|
||||||
self.setBaseSize(QtCore.QSize(300, 330))
|
self.setBaseSize(QtCore.QSize(300, 330))
|
||||||
self.ipv = QtGui.QCheckBox(self)
|
self.ipv = QtWidgets.QCheckBox(self)
|
||||||
self.ipv.setGeometry(QtCore.QRect(20, 10, 97, 22))
|
self.ipv.setGeometry(QtCore.QRect(20, 10, 97, 22))
|
||||||
self.ipv.setObjectName("ipv")
|
self.ipv.setObjectName("ipv")
|
||||||
self.udp = QtGui.QCheckBox(self)
|
self.udp = QtWidgets.QCheckBox(self)
|
||||||
self.udp.setGeometry(QtCore.QRect(150, 10, 97, 22))
|
self.udp.setGeometry(QtCore.QRect(150, 10, 97, 22))
|
||||||
self.udp.setObjectName("udp")
|
self.udp.setObjectName("udp")
|
||||||
self.proxy = QtGui.QCheckBox(self)
|
self.proxy = QtWidgets.QCheckBox(self)
|
||||||
self.proxy.setGeometry(QtCore.QRect(20, 40, 97, 22))
|
self.proxy.setGeometry(QtCore.QRect(20, 40, 97, 22))
|
||||||
self.http = QtGui.QCheckBox(self)
|
self.http = QtWidgets.QCheckBox(self)
|
||||||
self.http.setGeometry(QtCore.QRect(20, 70, 97, 22))
|
self.http.setGeometry(QtCore.QRect(20, 70, 97, 22))
|
||||||
self.proxy.setObjectName("proxy")
|
self.proxy.setObjectName("proxy")
|
||||||
self.proxyip = LineEdit(self)
|
self.proxyip = LineEdit(self)
|
||||||
|
@ -326,11 +315,11 @@ class NetworkSettings(CenteredWidget):
|
||||||
self.proxyport = LineEdit(self)
|
self.proxyport = LineEdit(self)
|
||||||
self.proxyport.setGeometry(QtCore.QRect(40, 190, 231, 27))
|
self.proxyport.setGeometry(QtCore.QRect(40, 190, 231, 27))
|
||||||
self.proxyport.setObjectName("proxyport")
|
self.proxyport.setObjectName("proxyport")
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(40, 100, 66, 17))
|
self.label.setGeometry(QtCore.QRect(40, 100, 66, 17))
|
||||||
self.label_2 = QtGui.QLabel(self)
|
self.label_2 = QtWidgets.QLabel(self)
|
||||||
self.label_2.setGeometry(QtCore.QRect(40, 165, 66, 17))
|
self.label_2.setGeometry(QtCore.QRect(40, 165, 66, 17))
|
||||||
self.reconnect = QtGui.QPushButton(self)
|
self.reconnect = QtWidgets.QPushButton(self)
|
||||||
self.reconnect.setGeometry(QtCore.QRect(40, 230, 231, 30))
|
self.reconnect.setGeometry(QtCore.QRect(40, 230, 231, 30))
|
||||||
self.reconnect.clicked.connect(self.restart_core)
|
self.reconnect.clicked.connect(self.restart_core)
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
|
@ -340,7 +329,7 @@ class NetworkSettings(CenteredWidget):
|
||||||
self.proxyip.setText(settings['proxy_host'])
|
self.proxyip.setText(settings['proxy_host'])
|
||||||
self.proxyport.setText(str(settings['proxy_port']))
|
self.proxyport.setText(str(settings['proxy_port']))
|
||||||
self.http.setChecked(settings['proxy_type'] == 1)
|
self.http.setChecked(settings['proxy_type'] == 1)
|
||||||
self.warning = QtGui.QLabel(self)
|
self.warning = QtWidgets.QLabel(self)
|
||||||
self.warning.setGeometry(QtCore.QRect(5, 270, 290, 60))
|
self.warning.setGeometry(QtCore.QRect(5, 270, 290, 60))
|
||||||
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
|
@ -349,16 +338,15 @@ class NetworkSettings(CenteredWidget):
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("NetworkSettings", "Network settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("NetworkSettings", "Network settings"))
|
||||||
self.ipv.setText(QtGui.QApplication.translate("Form", "IPv6", None, QtGui.QApplication.UnicodeUTF8))
|
self.ipv.setText(QtWidgets.QApplication.translate("Form", "IPv6"))
|
||||||
self.udp.setText(QtGui.QApplication.translate("Form", "UDP", None, QtGui.QApplication.UnicodeUTF8))
|
self.udp.setText(QtWidgets.QApplication.translate("Form", "UDP"))
|
||||||
self.proxy.setText(QtGui.QApplication.translate("Form", "Proxy", None, QtGui.QApplication.UnicodeUTF8))
|
self.proxy.setText(QtWidgets.QApplication.translate("Form", "Proxy"))
|
||||||
self.label.setText(QtGui.QApplication.translate("Form", "IP:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label.setText(QtWidgets.QApplication.translate("Form", "IP:"))
|
||||||
self.label_2.setText(QtGui.QApplication.translate("Form", "Port:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label_2.setText(QtWidgets.QApplication.translate("Form", "Port:"))
|
||||||
self.reconnect.setText(QtGui.QApplication.translate("NetworkSettings", "Restart TOX core", None, QtGui.QApplication.UnicodeUTF8))
|
self.reconnect.setText(QtWidgets.QApplication.translate("NetworkSettings", "Restart TOX core"))
|
||||||
self.http.setText(QtGui.QApplication.translate("Form", "HTTP", None, QtGui.QApplication.UnicodeUTF8))
|
self.http.setText(QtWidgets.QApplication.translate("Form", "HTTP"))
|
||||||
self.warning.setText(QtGui.QApplication.translate("Form", "WARNING:\nusing proxy with enabled UDP\ncan produce IP leak",
|
self.warning.setText(QtWidgets.QApplication.translate("Form", "WARNING:\nusing proxy with enabled UDP\ncan produce IP leak"))
|
||||||
None, QtGui.QApplication.UnicodeUTF8))
|
|
||||||
|
|
||||||
def activate(self):
|
def activate(self):
|
||||||
bl = self.proxy.isChecked()
|
bl = self.proxy.isChecked()
|
||||||
|
@ -395,23 +383,23 @@ class PrivacySettings(CenteredWidget):
|
||||||
self.resize(370, 600)
|
self.resize(370, 600)
|
||||||
self.setMinimumSize(QtCore.QSize(370, 600))
|
self.setMinimumSize(QtCore.QSize(370, 600))
|
||||||
self.setMaximumSize(QtCore.QSize(370, 600))
|
self.setMaximumSize(QtCore.QSize(370, 600))
|
||||||
self.saveHistory = QtGui.QCheckBox(self)
|
self.saveHistory = QtWidgets.QCheckBox(self)
|
||||||
self.saveHistory.setGeometry(QtCore.QRect(10, 20, 350, 22))
|
self.saveHistory.setGeometry(QtCore.QRect(10, 20, 350, 22))
|
||||||
self.saveUnsentOnly = QtGui.QCheckBox(self)
|
self.saveUnsentOnly = QtWidgets.QCheckBox(self)
|
||||||
self.saveUnsentOnly.setGeometry(QtCore.QRect(10, 60, 350, 22))
|
self.saveUnsentOnly.setGeometry(QtCore.QRect(10, 60, 350, 22))
|
||||||
|
|
||||||
self.fileautoaccept = QtGui.QCheckBox(self)
|
self.fileautoaccept = QtWidgets.QCheckBox(self)
|
||||||
self.fileautoaccept.setGeometry(QtCore.QRect(10, 100, 350, 22))
|
self.fileautoaccept.setGeometry(QtCore.QRect(10, 100, 350, 22))
|
||||||
|
|
||||||
self.typingNotifications = QtGui.QCheckBox(self)
|
self.typingNotifications = QtWidgets.QCheckBox(self)
|
||||||
self.typingNotifications.setGeometry(QtCore.QRect(10, 140, 350, 30))
|
self.typingNotifications.setGeometry(QtCore.QRect(10, 140, 350, 30))
|
||||||
self.inlines = QtGui.QCheckBox(self)
|
self.inlines = QtWidgets.QCheckBox(self)
|
||||||
self.inlines.setGeometry(QtCore.QRect(10, 180, 350, 30))
|
self.inlines.setGeometry(QtCore.QRect(10, 180, 350, 30))
|
||||||
self.auto_path = QtGui.QLabel(self)
|
self.auto_path = QtWidgets.QLabel(self)
|
||||||
self.auto_path.setGeometry(QtCore.QRect(10, 230, 350, 30))
|
self.auto_path.setGeometry(QtCore.QRect(10, 230, 350, 30))
|
||||||
self.path = QtGui.QPlainTextEdit(self)
|
self.path = QtWidgets.QPlainTextEdit(self)
|
||||||
self.path.setGeometry(QtCore.QRect(10, 265, 350, 45))
|
self.path.setGeometry(QtCore.QRect(10, 265, 350, 45))
|
||||||
self.change_path = QtGui.QPushButton(self)
|
self.change_path = QtWidgets.QPushButton(self)
|
||||||
self.change_path.setGeometry(QtCore.QRect(10, 320, 350, 30))
|
self.change_path.setGeometry(QtCore.QRect(10, 320, 350, 30))
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
self.typingNotifications.setChecked(settings['typing_notifications'])
|
self.typingNotifications.setChecked(settings['typing_notifications'])
|
||||||
|
@ -423,37 +411,37 @@ class PrivacySettings(CenteredWidget):
|
||||||
self.saveHistory.stateChanged.connect(self.update)
|
self.saveHistory.stateChanged.connect(self.update)
|
||||||
self.path.setPlainText(settings['auto_accept_path'] or curr_directory())
|
self.path.setPlainText(settings['auto_accept_path'] or curr_directory())
|
||||||
self.change_path.clicked.connect(self.new_path)
|
self.change_path.clicked.connect(self.new_path)
|
||||||
self.block_user_label = QtGui.QLabel(self)
|
self.block_user_label = QtWidgets.QLabel(self)
|
||||||
self.block_user_label.setGeometry(QtCore.QRect(10, 360, 350, 30))
|
self.block_user_label.setGeometry(QtCore.QRect(10, 360, 350, 30))
|
||||||
self.block_id = QtGui.QPlainTextEdit(self)
|
self.block_id = QtWidgets.QPlainTextEdit(self)
|
||||||
self.block_id.setGeometry(QtCore.QRect(10, 390, 350, 30))
|
self.block_id.setGeometry(QtCore.QRect(10, 390, 350, 30))
|
||||||
self.block = QtGui.QPushButton(self)
|
self.block = QtWidgets.QPushButton(self)
|
||||||
self.block.setGeometry(QtCore.QRect(10, 430, 350, 30))
|
self.block.setGeometry(QtCore.QRect(10, 430, 350, 30))
|
||||||
self.block.clicked.connect(lambda: Profile.get_instance().block_user(self.block_id.toPlainText()) or self.close())
|
self.block.clicked.connect(lambda: Profile.get_instance().block_user(self.block_id.toPlainText()) or self.close())
|
||||||
self.blocked_users_label = QtGui.QLabel(self)
|
self.blocked_users_label = QtWidgets.QLabel(self)
|
||||||
self.blocked_users_label.setGeometry(QtCore.QRect(10, 470, 350, 30))
|
self.blocked_users_label.setGeometry(QtCore.QRect(10, 470, 350, 30))
|
||||||
self.comboBox = QtGui.QComboBox(self)
|
self.comboBox = QtWidgets.QComboBox(self)
|
||||||
self.comboBox.setGeometry(QtCore.QRect(10, 500, 350, 30))
|
self.comboBox.setGeometry(QtCore.QRect(10, 500, 350, 30))
|
||||||
self.comboBox.addItems(settings['blocked'])
|
self.comboBox.addItems(settings['blocked'])
|
||||||
self.unblock = QtGui.QPushButton(self)
|
self.unblock = QtWidgets.QPushButton(self)
|
||||||
self.unblock.setGeometry(QtCore.QRect(10, 540, 350, 30))
|
self.unblock.setGeometry(QtCore.QRect(10, 540, 350, 30))
|
||||||
self.unblock.clicked.connect(lambda: self.unblock_user())
|
self.unblock.clicked.connect(lambda: self.unblock_user())
|
||||||
self.retranslateUi()
|
self.retranslateUi()
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("privacySettings", "Privacy settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("privacySettings", "Privacy settings"))
|
||||||
self.saveHistory.setText(QtGui.QApplication.translate("privacySettings", "Save chat history", None, QtGui.QApplication.UnicodeUTF8))
|
self.saveHistory.setText(QtWidgets.QApplication.translate("privacySettings", "Save chat history"))
|
||||||
self.fileautoaccept.setText(QtGui.QApplication.translate("privacySettings", "Allow file auto accept", None, QtGui.QApplication.UnicodeUTF8))
|
self.fileautoaccept.setText(QtWidgets.QApplication.translate("privacySettings", "Allow file auto accept"))
|
||||||
self.typingNotifications.setText(QtGui.QApplication.translate("privacySettings", "Send typing notifications", None, QtGui.QApplication.UnicodeUTF8))
|
self.typingNotifications.setText(QtWidgets.QApplication.translate("privacySettings", "Send typing notifications"))
|
||||||
self.auto_path.setText(QtGui.QApplication.translate("privacySettings", "Auto accept default path:", None, QtGui.QApplication.UnicodeUTF8))
|
self.auto_path.setText(QtWidgets.QApplication.translate("privacySettings", "Auto accept default path:"))
|
||||||
self.change_path.setText(QtGui.QApplication.translate("privacySettings", "Change", None, QtGui.QApplication.UnicodeUTF8))
|
self.change_path.setText(QtWidgets.QApplication.translate("privacySettings", "Change"))
|
||||||
self.inlines.setText(QtGui.QApplication.translate("privacySettings", "Allow inlines", None, QtGui.QApplication.UnicodeUTF8))
|
self.inlines.setText(QtWidgets.QApplication.translate("privacySettings", "Allow inlines"))
|
||||||
self.block_user_label.setText(QtGui.QApplication.translate("privacySettings", "Block by public key:", None, QtGui.QApplication.UnicodeUTF8))
|
self.block_user_label.setText(QtWidgets.QApplication.translate("privacySettings", "Block by public key:"))
|
||||||
self.blocked_users_label.setText(QtGui.QApplication.translate("privacySettings", "Blocked users:", None, QtGui.QApplication.UnicodeUTF8))
|
self.blocked_users_label.setText(QtWidgets.QApplication.translate("privacySettings", "Blocked users:"))
|
||||||
self.unblock.setText(QtGui.QApplication.translate("privacySettings", "Unblock", None, QtGui.QApplication.UnicodeUTF8))
|
self.unblock.setText(QtWidgets.QApplication.translate("privacySettings", "Unblock"))
|
||||||
self.block.setText(QtGui.QApplication.translate("privacySettings", "Block user", None, QtGui.QApplication.UnicodeUTF8))
|
self.block.setText(QtWidgets.QApplication.translate("privacySettings", "Block user"))
|
||||||
self.saveUnsentOnly.setText(QtGui.QApplication.translate("privacySettings", "Save unsent messages only", None, QtGui.QApplication.UnicodeUTF8))
|
self.saveUnsentOnly.setText(QtWidgets.QApplication.translate("privacySettings", "Save unsent messages only"))
|
||||||
|
|
||||||
def update(self, new_state):
|
def update(self, new_state):
|
||||||
self.saveUnsentOnly.setEnabled(new_state)
|
self.saveUnsentOnly.setEnabled(new_state)
|
||||||
|
@ -463,10 +451,10 @@ class PrivacySettings(CenteredWidget):
|
||||||
def unblock_user(self):
|
def unblock_user(self):
|
||||||
if not self.comboBox.count():
|
if not self.comboBox.count():
|
||||||
return
|
return
|
||||||
title = QtGui.QApplication.translate("privacySettings", "Add to friend list", None, QtGui.QApplication.UnicodeUTF8)
|
title = QtWidgets.QApplication.translate("privacySettings", "Add to friend list")
|
||||||
info = QtGui.QApplication.translate("privacySettings", "Do you want to add this user to friend list?", None, QtGui.QApplication.UnicodeUTF8)
|
info = QtWidgets.QApplication.translate("privacySettings", "Do you want to add this user to friend list?")
|
||||||
reply = QtGui.QMessageBox.question(None, title, info, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
|
reply = QtWidgets.QMessageBox.question(None, title, info, QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No)
|
||||||
Profile.get_instance().unblock_user(self.comboBox.currentText(), reply == QtGui.QMessageBox.Yes)
|
Profile.get_instance().unblock_user(self.comboBox.currentText(), reply == QtWidgets.QMessageBox.Yes)
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
|
@ -475,31 +463,27 @@ class PrivacySettings(CenteredWidget):
|
||||||
settings['allow_auto_accept'] = self.fileautoaccept.isChecked()
|
settings['allow_auto_accept'] = self.fileautoaccept.isChecked()
|
||||||
|
|
||||||
if settings['save_history'] and not self.saveHistory.isChecked(): # clear history
|
if settings['save_history'] and not self.saveHistory.isChecked(): # clear history
|
||||||
reply = QtGui.QMessageBox.question(None,
|
reply = QtWidgets.QMessageBox.question(None,
|
||||||
QtGui.QApplication.translate("privacySettings",
|
QtWidgets.QApplication.translate("privacySettings",
|
||||||
'Chat history',
|
'Chat history'),
|
||||||
None, QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QApplication.translate("privacySettings",
|
||||||
QtGui.QApplication.translate("privacySettings",
|
'History will be cleaned! Continue?'),
|
||||||
'History will be cleaned! Continue?',
|
QtWidgets.QMessageBox.Yes,
|
||||||
None, QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QMessageBox.No)
|
||||||
QtGui.QMessageBox.Yes,
|
if reply == QtWidgets.QMessageBox.Yes:
|
||||||
QtGui.QMessageBox.No)
|
|
||||||
if reply == QtGui.QMessageBox.Yes:
|
|
||||||
Profile.get_instance().clear_history()
|
Profile.get_instance().clear_history()
|
||||||
settings['save_history'] = self.saveHistory.isChecked()
|
settings['save_history'] = self.saveHistory.isChecked()
|
||||||
else:
|
else:
|
||||||
settings['save_history'] = self.saveHistory.isChecked()
|
settings['save_history'] = self.saveHistory.isChecked()
|
||||||
if self.saveUnsentOnly.isChecked() and not settings['save_unsent_only']:
|
if self.saveUnsentOnly.isChecked() and not settings['save_unsent_only']:
|
||||||
reply = QtGui.QMessageBox.question(None,
|
reply = QtWidgets.QMessageBox.question(None,
|
||||||
QtGui.QApplication.translate("privacySettings",
|
QtWidgets.QApplication.translate("privacySettings",
|
||||||
'Chat history',
|
'Chat history'),
|
||||||
None, QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QApplication.translate("privacySettings",
|
||||||
QtGui.QApplication.translate("privacySettings",
|
'History will be cleaned! Continue?'),
|
||||||
'History will be cleaned! Continue?',
|
QtWidgets.QMessageBox.Yes,
|
||||||
None, QtGui.QApplication.UnicodeUTF8),
|
QtWidgets.QMessageBox.No)
|
||||||
QtGui.QMessageBox.Yes,
|
if reply == QtWidgets.QMessageBox.Yes:
|
||||||
QtGui.QMessageBox.No)
|
|
||||||
if reply == QtGui.QMessageBox.Yes:
|
|
||||||
Profile.get_instance().clear_history(None, True)
|
Profile.get_instance().clear_history(None, True)
|
||||||
settings['save_unsent_only'] = self.saveUnsentOnly.isChecked()
|
settings['save_unsent_only'] = self.saveUnsentOnly.isChecked()
|
||||||
else:
|
else:
|
||||||
|
@ -509,7 +493,7 @@ class PrivacySettings(CenteredWidget):
|
||||||
settings.save()
|
settings.save()
|
||||||
|
|
||||||
def new_path(self):
|
def new_path(self):
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(options=QtGui.QFileDialog.DontUseNativeDialog) + '/'
|
directory = QtWidgets.QFileDialog.getExistingDirectory(options=QtWidgets.QFileDialog.DontUseNativeDialog) + '/'
|
||||||
if directory != '/':
|
if directory != '/':
|
||||||
self.path.setPlainText(directory)
|
self.path.setPlainText(directory)
|
||||||
|
|
||||||
|
@ -527,11 +511,11 @@ class NotificationsSettings(CenteredWidget):
|
||||||
self.resize(350, 180)
|
self.resize(350, 180)
|
||||||
self.setMinimumSize(QtCore.QSize(350, 180))
|
self.setMinimumSize(QtCore.QSize(350, 180))
|
||||||
self.setMaximumSize(QtCore.QSize(350, 180))
|
self.setMaximumSize(QtCore.QSize(350, 180))
|
||||||
self.enableNotifications = QtGui.QCheckBox(self)
|
self.enableNotifications = QtWidgets.QCheckBox(self)
|
||||||
self.enableNotifications.setGeometry(QtCore.QRect(10, 20, 340, 18))
|
self.enableNotifications.setGeometry(QtCore.QRect(10, 20, 340, 18))
|
||||||
self.callsSound = QtGui.QCheckBox(self)
|
self.callsSound = QtWidgets.QCheckBox(self)
|
||||||
self.callsSound.setGeometry(QtCore.QRect(10, 120, 340, 18))
|
self.callsSound.setGeometry(QtCore.QRect(10, 120, 340, 18))
|
||||||
self.soundNotifications = QtGui.QCheckBox(self)
|
self.soundNotifications = QtWidgets.QCheckBox(self)
|
||||||
self.soundNotifications.setGeometry(QtCore.QRect(10, 70, 340, 18))
|
self.soundNotifications.setGeometry(QtCore.QRect(10, 70, 340, 18))
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
s = Settings.get_instance()
|
s = Settings.get_instance()
|
||||||
|
@ -547,10 +531,10 @@ class NotificationsSettings(CenteredWidget):
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("notificationsForm", "Notification settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("notificationsForm", "Notification settings"))
|
||||||
self.enableNotifications.setText(QtGui.QApplication.translate("notificationsForm", "Enable notifications", None, QtGui.QApplication.UnicodeUTF8))
|
self.enableNotifications.setText(QtWidgets.QApplication.translate("notificationsForm", "Enable notifications"))
|
||||||
self.callsSound.setText(QtGui.QApplication.translate("notificationsForm", "Enable call\'s sound", None, QtGui.QApplication.UnicodeUTF8))
|
self.callsSound.setText(QtWidgets.QApplication.translate("notificationsForm", "Enable call\'s sound"))
|
||||||
self.soundNotifications.setText(QtGui.QApplication.translate("notificationsForm", "Enable sound notifications", None, QtGui.QApplication.UnicodeUTF8))
|
self.soundNotifications.setText(QtWidgets.QApplication.translate("notificationsForm", "Enable sound notifications"))
|
||||||
|
|
||||||
def closeEvent(self, *args, **kwargs):
|
def closeEvent(self, *args, **kwargs):
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
|
@ -571,7 +555,7 @@ class InterfaceSettings(CenteredWidget):
|
||||||
self.setObjectName("interfaceForm")
|
self.setObjectName("interfaceForm")
|
||||||
self.setMinimumSize(QtCore.QSize(400, 650))
|
self.setMinimumSize(QtCore.QSize(400, 650))
|
||||||
self.setMaximumSize(QtCore.QSize(400, 650))
|
self.setMaximumSize(QtCore.QSize(400, 650))
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(30, 10, 370, 20))
|
self.label.setGeometry(QtCore.QRect(30, 10, 370, 20))
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
|
@ -579,7 +563,7 @@ class InterfaceSettings(CenteredWidget):
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setFamily(settings['font'])
|
font.setFamily(settings['font'])
|
||||||
self.label.setFont(font)
|
self.label.setFont(font)
|
||||||
self.themeSelect = QtGui.QComboBox(self)
|
self.themeSelect = QtWidgets.QComboBox(self)
|
||||||
self.themeSelect.setGeometry(QtCore.QRect(30, 40, 120, 30))
|
self.themeSelect.setGeometry(QtCore.QRect(30, 40, 120, 30))
|
||||||
list_of_themes = ['dark']
|
list_of_themes = ['dark']
|
||||||
self.themeSelect.addItems(list_of_themes)
|
self.themeSelect.addItems(list_of_themes)
|
||||||
|
@ -589,26 +573,26 @@ class InterfaceSettings(CenteredWidget):
|
||||||
else:
|
else:
|
||||||
index = 0
|
index = 0
|
||||||
self.themeSelect.setCurrentIndex(index)
|
self.themeSelect.setCurrentIndex(index)
|
||||||
self.lang_choose = QtGui.QComboBox(self)
|
self.lang_choose = QtWidgets.QComboBox(self)
|
||||||
self.lang_choose.setGeometry(QtCore.QRect(30, 110, 120, 30))
|
self.lang_choose.setGeometry(QtCore.QRect(30, 110, 120, 30))
|
||||||
supported = sorted(Settings.supported_languages().keys(), reverse=True)
|
supported = sorted(Settings.supported_languages().keys(), reverse=True)
|
||||||
for key in supported:
|
for key in supported:
|
||||||
self.lang_choose.insertItem(0, key)
|
self.lang_choose.insertItem(0, key)
|
||||||
if settings['language'] == key:
|
if settings['language'] == key:
|
||||||
self.lang_choose.setCurrentIndex(0)
|
self.lang_choose.setCurrentIndex(0)
|
||||||
self.lang = QtGui.QLabel(self)
|
self.lang = QtWidgets.QLabel(self)
|
||||||
self.lang.setGeometry(QtCore.QRect(30, 80, 370, 20))
|
self.lang.setGeometry(QtCore.QRect(30, 80, 370, 20))
|
||||||
self.lang.setFont(font)
|
self.lang.setFont(font)
|
||||||
self.mirror_mode = QtGui.QCheckBox(self)
|
self.mirror_mode = QtWidgets.QCheckBox(self)
|
||||||
self.mirror_mode.setGeometry(QtCore.QRect(30, 160, 370, 20))
|
self.mirror_mode.setGeometry(QtCore.QRect(30, 160, 370, 20))
|
||||||
self.mirror_mode.setChecked(settings['mirror_mode'])
|
self.mirror_mode.setChecked(settings['mirror_mode'])
|
||||||
self.smileys = QtGui.QCheckBox(self)
|
self.smileys = QtWidgets.QCheckBox(self)
|
||||||
self.smileys.setGeometry(QtCore.QRect(30, 190, 120, 20))
|
self.smileys.setGeometry(QtCore.QRect(30, 190, 120, 20))
|
||||||
self.smileys.setChecked(settings['smileys'])
|
self.smileys.setChecked(settings['smileys'])
|
||||||
self.smiley_pack_label = QtGui.QLabel(self)
|
self.smiley_pack_label = QtWidgets.QLabel(self)
|
||||||
self.smiley_pack_label.setGeometry(QtCore.QRect(30, 230, 370, 20))
|
self.smiley_pack_label.setGeometry(QtCore.QRect(30, 230, 370, 20))
|
||||||
self.smiley_pack_label.setFont(font)
|
self.smiley_pack_label.setFont(font)
|
||||||
self.smiley_pack = QtGui.QComboBox(self)
|
self.smiley_pack = QtWidgets.QComboBox(self)
|
||||||
self.smiley_pack.setGeometry(QtCore.QRect(30, 260, 160, 30))
|
self.smiley_pack.setGeometry(QtCore.QRect(30, 260, 160, 30))
|
||||||
sm = smileys.SmileyLoader.get_instance()
|
sm = smileys.SmileyLoader.get_instance()
|
||||||
self.smiley_pack.addItems(sm.get_packs_list())
|
self.smiley_pack.addItems(sm.get_packs_list())
|
||||||
|
@ -617,39 +601,39 @@ class InterfaceSettings(CenteredWidget):
|
||||||
except:
|
except:
|
||||||
ind = sm.get_packs_list().index('default')
|
ind = sm.get_packs_list().index('default')
|
||||||
self.smiley_pack.setCurrentIndex(ind)
|
self.smiley_pack.setCurrentIndex(ind)
|
||||||
self.messages_font_size_label = QtGui.QLabel(self)
|
self.messages_font_size_label = QtWidgets.QLabel(self)
|
||||||
self.messages_font_size_label.setGeometry(QtCore.QRect(30, 300, 370, 20))
|
self.messages_font_size_label.setGeometry(QtCore.QRect(30, 300, 370, 20))
|
||||||
self.messages_font_size_label.setFont(font)
|
self.messages_font_size_label.setFont(font)
|
||||||
self.messages_font_size = QtGui.QComboBox(self)
|
self.messages_font_size = QtWidgets.QComboBox(self)
|
||||||
self.messages_font_size.setGeometry(QtCore.QRect(30, 330, 160, 30))
|
self.messages_font_size.setGeometry(QtCore.QRect(30, 330, 160, 30))
|
||||||
self.messages_font_size.addItems([str(x) for x in range(10, 19)])
|
self.messages_font_size.addItems([str(x) for x in range(10, 19)])
|
||||||
self.messages_font_size.setCurrentIndex(settings['message_font_size'] - 10)
|
self.messages_font_size.setCurrentIndex(settings['message_font_size'] - 10)
|
||||||
|
|
||||||
self.unread = QtGui.QPushButton(self)
|
self.unread = QtWidgets.QPushButton(self)
|
||||||
self.unread.setGeometry(QtCore.QRect(30, 470, 340, 30))
|
self.unread.setGeometry(QtCore.QRect(30, 470, 340, 30))
|
||||||
self.unread.clicked.connect(self.select_color)
|
self.unread.clicked.connect(self.select_color)
|
||||||
|
|
||||||
self.compact_mode = QtGui.QCheckBox(self)
|
self.compact_mode = QtWidgets.QCheckBox(self)
|
||||||
self.compact_mode.setGeometry(QtCore.QRect(30, 380, 370, 20))
|
self.compact_mode.setGeometry(QtCore.QRect(30, 380, 370, 20))
|
||||||
self.compact_mode.setChecked(settings['compact_mode'])
|
self.compact_mode.setChecked(settings['compact_mode'])
|
||||||
|
|
||||||
self.close_to_tray = QtGui.QCheckBox(self)
|
self.close_to_tray = QtWidgets.QCheckBox(self)
|
||||||
self.close_to_tray.setGeometry(QtCore.QRect(30, 410, 370, 20))
|
self.close_to_tray.setGeometry(QtCore.QRect(30, 410, 370, 20))
|
||||||
self.close_to_tray.setChecked(settings['close_to_tray'])
|
self.close_to_tray.setChecked(settings['close_to_tray'])
|
||||||
|
|
||||||
self.show_avatars = QtGui.QCheckBox(self)
|
self.show_avatars = QtWidgets.QCheckBox(self)
|
||||||
self.show_avatars.setGeometry(QtCore.QRect(30, 440, 370, 20))
|
self.show_avatars.setGeometry(QtCore.QRect(30, 440, 370, 20))
|
||||||
self.show_avatars.setChecked(settings['show_avatars'])
|
self.show_avatars.setChecked(settings['show_avatars'])
|
||||||
|
|
||||||
self.choose_font = QtGui.QPushButton(self)
|
self.choose_font = QtWidgets.QPushButton(self)
|
||||||
self.choose_font.setGeometry(QtCore.QRect(30, 510, 340, 30))
|
self.choose_font.setGeometry(QtCore.QRect(30, 510, 340, 30))
|
||||||
self.choose_font.clicked.connect(self.new_font)
|
self.choose_font.clicked.connect(self.new_font)
|
||||||
|
|
||||||
self.import_smileys = QtGui.QPushButton(self)
|
self.import_smileys = QtWidgets.QPushButton(self)
|
||||||
self.import_smileys.setGeometry(QtCore.QRect(30, 550, 340, 30))
|
self.import_smileys.setGeometry(QtCore.QRect(30, 550, 340, 30))
|
||||||
self.import_smileys.clicked.connect(self.import_sm)
|
self.import_smileys.clicked.connect(self.import_sm)
|
||||||
|
|
||||||
self.import_stickers = QtGui.QPushButton(self)
|
self.import_stickers = QtWidgets.QPushButton(self)
|
||||||
self.import_stickers.setGeometry(QtCore.QRect(30, 590, 340, 30))
|
self.import_stickers.setGeometry(QtCore.QRect(30, 590, 340, 30))
|
||||||
self.import_stickers.clicked.connect(self.import_st)
|
self.import_stickers.clicked.connect(self.import_st)
|
||||||
|
|
||||||
|
@ -657,29 +641,27 @@ class InterfaceSettings(CenteredWidget):
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.show_avatars.setText(QtGui.QApplication.translate("interfaceForm", "Show avatars in chat", None, QtGui.QApplication.UnicodeUTF8))
|
self.show_avatars.setText(QtWidgets.QApplication.translate("interfaceForm", "Show avatars in chat"))
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("interfaceForm", "Interface settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("interfaceForm", "Interface settings"))
|
||||||
self.label.setText(QtGui.QApplication.translate("interfaceForm", "Theme:", None, QtGui.QApplication.UnicodeUTF8))
|
self.label.setText(QtWidgets.QApplication.translate("interfaceForm", "Theme:"))
|
||||||
self.lang.setText(QtGui.QApplication.translate("interfaceForm", "Language:", None, QtGui.QApplication.UnicodeUTF8))
|
self.lang.setText(QtWidgets.QApplication.translate("interfaceForm", "Language:"))
|
||||||
self.smileys.setText(QtGui.QApplication.translate("interfaceForm", "Smileys", None, QtGui.QApplication.UnicodeUTF8))
|
self.smileys.setText(QtWidgets.QApplication.translate("interfaceForm", "Smileys"))
|
||||||
self.smiley_pack_label.setText(QtGui.QApplication.translate("interfaceForm", "Smiley pack:", None, QtGui.QApplication.UnicodeUTF8))
|
self.smiley_pack_label.setText(QtWidgets.QApplication.translate("interfaceForm", "Smiley pack:"))
|
||||||
self.mirror_mode.setText(QtGui.QApplication.translate("interfaceForm", "Mirror mode", None, QtGui.QApplication.UnicodeUTF8))
|
self.mirror_mode.setText(QtWidgets.QApplication.translate("interfaceForm", "Mirror mode"))
|
||||||
self.messages_font_size_label.setText(QtGui.QApplication.translate("interfaceForm", "Messages font size:", None, QtGui.QApplication.UnicodeUTF8))
|
self.messages_font_size_label.setText(QtWidgets.QApplication.translate("interfaceForm", "Messages font size:"))
|
||||||
self.unread.setText(QtGui.QApplication.translate("interfaceForm", "Select unread messages notification color", None, QtGui.QApplication.UnicodeUTF8))
|
self.unread.setText(QtWidgets.QApplication.translate("interfaceForm", "Select unread messages notification color"))
|
||||||
self.compact_mode.setText(QtGui.QApplication.translate("interfaceForm", "Compact contact list", None, QtGui.QApplication.UnicodeUTF8))
|
self.compact_mode.setText(QtWidgets.QApplication.translate("interfaceForm", "Compact contact list"))
|
||||||
self.import_smileys.setText(QtGui.QApplication.translate("interfaceForm", "Import smiley pack", None, QtGui.QApplication.UnicodeUTF8))
|
self.import_smileys.setText(QtWidgets.QApplication.translate("interfaceForm", "Import smiley pack"))
|
||||||
self.import_stickers.setText(QtGui.QApplication.translate("interfaceForm", "Import sticker pack", None, QtGui.QApplication.UnicodeUTF8))
|
self.import_stickers.setText(QtWidgets.QApplication.translate("interfaceForm", "Import sticker pack"))
|
||||||
self.close_to_tray.setText(QtGui.QApplication.translate("interfaceForm", "Close to tray", None, QtGui.QApplication.UnicodeUTF8))
|
self.close_to_tray.setText(QtWidgets.QApplication.translate("interfaceForm", "Close to tray"))
|
||||||
self.choose_font.setText(QtGui.QApplication.translate("interfaceForm", "Select font", None, QtGui.QApplication.UnicodeUTF8))
|
self.choose_font.setText(QtWidgets.QApplication.translate("interfaceForm", "Select font"))
|
||||||
|
|
||||||
def import_st(self):
|
def import_st(self):
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(self,
|
directory = QtWidgets.QFileDialog.getExistingDirectory(self,
|
||||||
QtGui.QApplication.translate("MainWindow",
|
QtWidgets.QApplication.translate("MainWindow",
|
||||||
'Choose folder with sticker pack',
|
'Choose folder with sticker pack'),
|
||||||
None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
|
||||||
curr_directory(),
|
curr_directory(),
|
||||||
QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontUseNativeDialog)
|
QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
|
|
||||||
if directory:
|
if directory:
|
||||||
src = directory + '/'
|
src = directory + '/'
|
||||||
|
@ -687,13 +669,11 @@ class InterfaceSettings(CenteredWidget):
|
||||||
copy(src, dest)
|
copy(src, dest)
|
||||||
|
|
||||||
def import_sm(self):
|
def import_sm(self):
|
||||||
directory = QtGui.QFileDialog.getExistingDirectory(self,
|
directory = QtWidgets.QFileDialog.getExistingDirectory(self,
|
||||||
QtGui.QApplication.translate("MainWindow",
|
QtWidgets.QApplication.translate("MainWindow",
|
||||||
'Choose folder with smiley pack',
|
'Choose folder with smiley pack'),
|
||||||
None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8),
|
|
||||||
curr_directory(),
|
curr_directory(),
|
||||||
QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontUseNativeDialog)
|
QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||||
|
|
||||||
if directory:
|
if directory:
|
||||||
src = directory + '/'
|
src = directory + '/'
|
||||||
|
@ -702,21 +682,19 @@ class InterfaceSettings(CenteredWidget):
|
||||||
|
|
||||||
def new_font(self):
|
def new_font(self):
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
font, ok = QtGui.QFontDialog.getFont(QtGui.QFont(settings['font'], 10), self)
|
font, ok = QtWidgets.QFontDialog.getFont(QtGui.QFont(settings['font'], 10), self)
|
||||||
if ok:
|
if ok:
|
||||||
settings['font'] = font.family()
|
settings['font'] = font.family()
|
||||||
settings.save()
|
settings.save()
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
text = QtGui.QApplication.translate("interfaceForm", 'Restart app to apply settings', None,
|
text = QtWidgets.QApplication.translate("interfaceForm", 'Restart app to apply settings')
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
msgBox.setWindowTitle(QtWidgets.QApplication.translate("interfaceForm", 'Restart required'))
|
||||||
msgBox.setWindowTitle(QtGui.QApplication.translate("interfaceForm", 'Restart required', None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
||||||
def select_color(self):
|
def select_color(self):
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
col = QtGui.QColorDialog.getColor(settings['unread_color'])
|
col = QtWidgets.QColorDialog.getColor(QtGui.QColor(settings['unread_color']))
|
||||||
|
|
||||||
if col.isValid():
|
if col.isValid():
|
||||||
name = col.name()
|
name = col.name()
|
||||||
|
@ -745,7 +723,7 @@ class InterfaceSettings(CenteredWidget):
|
||||||
settings['language'] = language
|
settings['language'] = language
|
||||||
text = self.lang_choose.currentText()
|
text = self.lang_choose.currentText()
|
||||||
path = Settings.supported_languages()[text]
|
path = Settings.supported_languages()[text]
|
||||||
app = QtGui.QApplication.instance()
|
app = QtWidgets.QApplication.instance()
|
||||||
app.removeTranslator(app.translator)
|
app.removeTranslator(app.translator)
|
||||||
app.translator.load(curr_directory() + '/translations/' + path)
|
app.translator.load(curr_directory() + '/translations/' + path)
|
||||||
app.installTranslator(app.translator)
|
app.installTranslator(app.translator)
|
||||||
|
@ -753,11 +731,9 @@ class InterfaceSettings(CenteredWidget):
|
||||||
Profile.get_instance().update()
|
Profile.get_instance().update()
|
||||||
settings.save()
|
settings.save()
|
||||||
if restart:
|
if restart:
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
text = QtGui.QApplication.translate("interfaceForm", 'Restart app to apply settings', None,
|
text = QtWidgets.QApplication.translate("interfaceForm", 'Restart app to apply settings')
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
msgBox.setWindowTitle(QtWidgets.QApplication.translate("interfaceForm", 'Restart required'))
|
||||||
msgBox.setWindowTitle(QtGui.QApplication.translate("interfaceForm", 'Restart required', None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
||||||
|
@ -778,9 +754,9 @@ class AudioSettings(CenteredWidget):
|
||||||
self.resize(400, 150)
|
self.resize(400, 150)
|
||||||
self.setMinimumSize(QtCore.QSize(400, 150))
|
self.setMinimumSize(QtCore.QSize(400, 150))
|
||||||
self.setMaximumSize(QtCore.QSize(400, 150))
|
self.setMaximumSize(QtCore.QSize(400, 150))
|
||||||
self.in_label = QtGui.QLabel(self)
|
self.in_label = QtWidgets.QLabel(self)
|
||||||
self.in_label.setGeometry(QtCore.QRect(25, 5, 350, 20))
|
self.in_label.setGeometry(QtCore.QRect(25, 5, 350, 20))
|
||||||
self.out_label = QtGui.QLabel(self)
|
self.out_label = QtWidgets.QLabel(self)
|
||||||
self.out_label.setGeometry(QtCore.QRect(25, 65, 350, 20))
|
self.out_label.setGeometry(QtCore.QRect(25, 65, 350, 20))
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
|
@ -789,9 +765,9 @@ class AudioSettings(CenteredWidget):
|
||||||
font.setFamily(settings['font'])
|
font.setFamily(settings['font'])
|
||||||
self.in_label.setFont(font)
|
self.in_label.setFont(font)
|
||||||
self.out_label.setFont(font)
|
self.out_label.setFont(font)
|
||||||
self.input = QtGui.QComboBox(self)
|
self.input = QtWidgets.QComboBox(self)
|
||||||
self.input.setGeometry(QtCore.QRect(25, 30, 350, 30))
|
self.input.setGeometry(QtCore.QRect(25, 30, 350, 30))
|
||||||
self.output = QtGui.QComboBox(self)
|
self.output = QtWidgets.QComboBox(self)
|
||||||
self.output.setGeometry(QtCore.QRect(25, 90, 350, 30))
|
self.output.setGeometry(QtCore.QRect(25, 90, 350, 30))
|
||||||
p = pyaudio.PyAudio()
|
p = pyaudio.PyAudio()
|
||||||
self.in_indexes, self.out_indexes = [], []
|
self.in_indexes, self.out_indexes = [], []
|
||||||
|
@ -808,9 +784,9 @@ class AudioSettings(CenteredWidget):
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("audioSettingsForm", "Audio settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("audioSettingsForm", "Audio settings"))
|
||||||
self.in_label.setText(QtGui.QApplication.translate("audioSettingsForm", "Input device:", None, QtGui.QApplication.UnicodeUTF8))
|
self.in_label.setText(QtWidgets.QApplication.translate("audioSettingsForm", "Input device:"))
|
||||||
self.out_label.setText(QtGui.QApplication.translate("audioSettingsForm", "Output device:", None, QtGui.QApplication.UnicodeUTF8))
|
self.out_label.setText(QtWidgets.QApplication.translate("audioSettingsForm", "Output device:"))
|
||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
|
@ -834,15 +810,15 @@ class PluginsSettings(CenteredWidget):
|
||||||
self.resize(400, 210)
|
self.resize(400, 210)
|
||||||
self.setMinimumSize(QtCore.QSize(400, 210))
|
self.setMinimumSize(QtCore.QSize(400, 210))
|
||||||
self.setMaximumSize(QtCore.QSize(400, 210))
|
self.setMaximumSize(QtCore.QSize(400, 210))
|
||||||
self.comboBox = QtGui.QComboBox(self)
|
self.comboBox = QtWidgets.QComboBox(self)
|
||||||
self.comboBox.setGeometry(QtCore.QRect(30, 10, 340, 30))
|
self.comboBox.setGeometry(QtCore.QRect(30, 10, 340, 30))
|
||||||
self.label = QtGui.QLabel(self)
|
self.label = QtWidgets.QLabel(self)
|
||||||
self.label.setGeometry(QtCore.QRect(30, 40, 340, 90))
|
self.label.setGeometry(QtCore.QRect(30, 40, 340, 90))
|
||||||
self.label.setWordWrap(True)
|
self.label.setWordWrap(True)
|
||||||
self.button = QtGui.QPushButton(self)
|
self.button = QtWidgets.QPushButton(self)
|
||||||
self.button.setGeometry(QtCore.QRect(30, 130, 340, 30))
|
self.button.setGeometry(QtCore.QRect(30, 130, 340, 30))
|
||||||
self.button.clicked.connect(self.button_click)
|
self.button.clicked.connect(self.button_click)
|
||||||
self.open = QtGui.QPushButton(self)
|
self.open = QtWidgets.QPushButton(self)
|
||||||
self.open.setGeometry(QtCore.QRect(30, 170, 340, 30))
|
self.open.setGeometry(QtCore.QRect(30, 170, 340, 30))
|
||||||
self.open.clicked.connect(self.open_plugin)
|
self.open.clicked.connect(self.open_plugin)
|
||||||
self.pl_loader = plugin_support.PluginLoader.get_instance()
|
self.pl_loader = plugin_support.PluginLoader.get_instance()
|
||||||
|
@ -851,8 +827,8 @@ class PluginsSettings(CenteredWidget):
|
||||||
self.show_data()
|
self.show_data()
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate('PluginsForm', "Plugins", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate('PluginsForm', "Plugins"))
|
||||||
self.open.setText(QtGui.QApplication.translate('PluginsForm', "Open selected plugin", None, QtGui.QApplication.UnicodeUTF8))
|
self.open.setText(QtWidgets.QApplication.translate('PluginsForm', "Open selected plugin"))
|
||||||
|
|
||||||
def open_plugin(self):
|
def open_plugin(self):
|
||||||
ind = self.comboBox.currentIndex()
|
ind = self.comboBox.currentIndex()
|
||||||
|
@ -862,11 +838,9 @@ class PluginsSettings(CenteredWidget):
|
||||||
self.window = window
|
self.window = window
|
||||||
self.window.show()
|
self.window.show()
|
||||||
else:
|
else:
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
text = QtGui.QApplication.translate("PluginsForm", 'No GUI found for this plugin', None,
|
text = QtWidgets.QApplication.translate("PluginsForm", 'No GUI found for this plugin')
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
msgBox.setWindowTitle(QtWidgets.QApplication.translate("PluginsForm", 'Error'))
|
||||||
msgBox.setWindowTitle(QtGui.QApplication.translate("PluginsForm", 'Error', None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
||||||
|
@ -880,16 +854,16 @@ class PluginsSettings(CenteredWidget):
|
||||||
ind = self.comboBox.currentIndex()
|
ind = self.comboBox.currentIndex()
|
||||||
if len(self.data):
|
if len(self.data):
|
||||||
plugin = self.data[ind]
|
plugin = self.data[ind]
|
||||||
descr = plugin[2] or QtGui.QApplication.translate("PluginsForm", "No description available", None, QtGui.QApplication.UnicodeUTF8)
|
descr = plugin[2] or QtWidgets.QApplication.translate("PluginsForm", "No description available")
|
||||||
self.label.setText(descr)
|
self.label.setText(descr)
|
||||||
if plugin[1]:
|
if plugin[1]:
|
||||||
self.button.setText(QtGui.QApplication.translate("PluginsForm", "Disable plugin", None, QtGui.QApplication.UnicodeUTF8))
|
self.button.setText(QtWidgets.QApplication.translate("PluginsForm", "Disable plugin"))
|
||||||
else:
|
else:
|
||||||
self.button.setText(QtGui.QApplication.translate("PluginsForm", "Enable plugin", None, QtGui.QApplication.UnicodeUTF8))
|
self.button.setText(QtWidgets.QApplication.translate("PluginsForm", "Enable plugin"))
|
||||||
else:
|
else:
|
||||||
self.open.setVisible(False)
|
self.open.setVisible(False)
|
||||||
self.button.setVisible(False)
|
self.button.setVisible(False)
|
||||||
self.label.setText(QtGui.QApplication.translate("PluginsForm", "No plugins found", None, QtGui.QApplication.UnicodeUTF8))
|
self.label.setText(QtWidgets.QApplication.translate("PluginsForm", "No plugins found"))
|
||||||
|
|
||||||
def button_click(self):
|
def button_click(self):
|
||||||
ind = self.comboBox.currentIndex()
|
ind = self.comboBox.currentIndex()
|
||||||
|
@ -897,9 +871,9 @@ class PluginsSettings(CenteredWidget):
|
||||||
self.pl_loader.toggle_plugin(plugin[-1])
|
self.pl_loader.toggle_plugin(plugin[-1])
|
||||||
plugin[1] = not plugin[1]
|
plugin[1] = not plugin[1]
|
||||||
if plugin[1]:
|
if plugin[1]:
|
||||||
self.button.setText(QtGui.QApplication.translate("PluginsForm", "Disable plugin", None, QtGui.QApplication.UnicodeUTF8))
|
self.button.setText(QtWidgets.QApplication.translate("PluginsForm", "Disable plugin"))
|
||||||
else:
|
else:
|
||||||
self.button.setText(QtGui.QApplication.translate("PluginsForm", "Enable plugin", None, QtGui.QApplication.UnicodeUTF8))
|
self.button.setText(QtWidgets.QApplication.translate("PluginsForm", "Enable plugin"))
|
||||||
|
|
||||||
|
|
||||||
class UpdateSettings(CenteredWidget):
|
class UpdateSettings(CenteredWidget):
|
||||||
|
@ -917,7 +891,7 @@ class UpdateSettings(CenteredWidget):
|
||||||
self.resize(400, 150)
|
self.resize(400, 150)
|
||||||
self.setMinimumSize(QtCore.QSize(400, 120))
|
self.setMinimumSize(QtCore.QSize(400, 120))
|
||||||
self.setMaximumSize(QtCore.QSize(400, 120))
|
self.setMaximumSize(QtCore.QSize(400, 120))
|
||||||
self.in_label = QtGui.QLabel(self)
|
self.in_label = QtWidgets.QLabel(self)
|
||||||
self.in_label.setGeometry(QtCore.QRect(25, 5, 350, 20))
|
self.in_label.setGeometry(QtCore.QRect(25, 5, 350, 20))
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
|
@ -925,9 +899,9 @@ class UpdateSettings(CenteredWidget):
|
||||||
font.setBold(True)
|
font.setBold(True)
|
||||||
font.setFamily(settings['font'])
|
font.setFamily(settings['font'])
|
||||||
self.in_label.setFont(font)
|
self.in_label.setFont(font)
|
||||||
self.autoupdate = QtGui.QComboBox(self)
|
self.autoupdate = QtWidgets.QComboBox(self)
|
||||||
self.autoupdate.setGeometry(QtCore.QRect(25, 30, 350, 30))
|
self.autoupdate.setGeometry(QtCore.QRect(25, 30, 350, 30))
|
||||||
self.button = QtGui.QPushButton(self)
|
self.button = QtWidgets.QPushButton(self)
|
||||||
self.button.setGeometry(QtCore.QRect(25, 70, 350, 30))
|
self.button.setGeometry(QtCore.QRect(25, 70, 350, 30))
|
||||||
self.button.setEnabled(settings['update'])
|
self.button.setEnabled(settings['update'])
|
||||||
self.button.clicked.connect(self.update_client)
|
self.button.clicked.connect(self.update_client)
|
||||||
|
@ -937,12 +911,12 @@ class UpdateSettings(CenteredWidget):
|
||||||
QtCore.QMetaObject.connectSlotsByName(self)
|
QtCore.QMetaObject.connectSlotsByName(self)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("updateSettingsForm", "Update settings", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("updateSettingsForm", "Update settings"))
|
||||||
self.in_label.setText(QtGui.QApplication.translate("updateSettingsForm", "Select update mode:", None, QtGui.QApplication.UnicodeUTF8))
|
self.in_label.setText(QtWidgets.QApplication.translate("updateSettingsForm", "Select update mode:"))
|
||||||
self.button.setText(QtGui.QApplication.translate("updateSettingsForm", "Update Toxygen", None, QtGui.QApplication.UnicodeUTF8))
|
self.button.setText(QtWidgets.QApplication.translate("updateSettingsForm", "Update Toxygen"))
|
||||||
self.autoupdate.addItem(QtGui.QApplication.translate("updateSettingsForm", "Disabled", None, QtGui.QApplication.UnicodeUTF8))
|
self.autoupdate.addItem(QtWidgets.QApplication.translate("updateSettingsForm", "Disabled"))
|
||||||
self.autoupdate.addItem(QtGui.QApplication.translate("updateSettingsForm", "Manual", None, QtGui.QApplication.UnicodeUTF8))
|
self.autoupdate.addItem(QtWidgets.QApplication.translate("updateSettingsForm", "Manual"))
|
||||||
self.autoupdate.addItem(QtGui.QApplication.translate("updateSettingsForm", "Auto", None, QtGui.QApplication.UnicodeUTF8))
|
self.autoupdate.addItem(QtWidgets.QApplication.translate("updateSettingsForm", "Auto"))
|
||||||
|
|
||||||
def closeEvent(self, event):
|
def closeEvent(self, event):
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
|
@ -951,34 +925,29 @@ class UpdateSettings(CenteredWidget):
|
||||||
|
|
||||||
def update_client(self):
|
def update_client(self):
|
||||||
if not updater.connection_available():
|
if not updater.connection_available():
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(
|
msgBox.setWindowTitle(
|
||||||
QtGui.QApplication.translate("updateSettingsForm", "Error", None,
|
QtWidgets.QApplication.translate("updateSettingsForm", "Error"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
text = (QtWidgets.QApplication.translate("updateSettingsForm", 'Problems with internet connection'))
|
||||||
text = (QtGui.QApplication.translate("updateSettingsForm", 'Problems with internet connection', None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
return
|
return
|
||||||
if not updater.updater_available():
|
if not updater.updater_available():
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(
|
msgBox.setWindowTitle(
|
||||||
QtGui.QApplication.translate("updateSettingsForm", "Error", None,
|
QtWidgets.QApplication.translate("updateSettingsForm", "Error"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
text = (QtWidgets.QApplication.translate("updateSettingsForm", 'Updater not found'))
|
||||||
text = (QtGui.QApplication.translate("updateSettingsForm", 'Updater not found', None,
|
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
return
|
return
|
||||||
version = updater.check_for_updates()
|
version = updater.check_for_updates()
|
||||||
if version is not None:
|
if version is not None:
|
||||||
updater.download(version)
|
updater.download(version)
|
||||||
QtGui.QApplication.closeAllWindows()
|
QtWidgets.QApplication.closeAllWindows()
|
||||||
else:
|
else:
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(
|
msgBox.setWindowTitle(
|
||||||
QtGui.QApplication.translate("updateSettingsForm", "No updates found", None, QtGui.QApplication.UnicodeUTF8))
|
QtWidgets.QApplication.translate("updateSettingsForm", "No updates found"))
|
||||||
text = (QtGui.QApplication.translate("updateSettingsForm", 'Toxygen is up to date', None,
|
text = (QtWidgets.QApplication.translate("updateSettingsForm", 'Toxygen is up to date'))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
try:
|
from PyQt5 import QtCore, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from util import curr_directory
|
from util import curr_directory
|
||||||
import wave
|
import wave
|
||||||
import pyaudio
|
import pyaudio
|
||||||
|
@ -23,16 +20,16 @@ def tray_notification(title, text, tray, window):
|
||||||
:param tray: ref to tray icon
|
:param tray: ref to tray icon
|
||||||
:param window: main window
|
:param window: main window
|
||||||
"""
|
"""
|
||||||
if QtGui.QSystemTrayIcon.isSystemTrayAvailable():
|
if QtWidgets.QSystemTrayIcon.isSystemTrayAvailable():
|
||||||
if len(text) > 30:
|
if len(text) > 30:
|
||||||
text = text[:27] + '...'
|
text = text[:27] + '...'
|
||||||
tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 3000)
|
tray.showMessage(title, text, QtWidgets.QSystemTrayIcon.NoIcon, 3000)
|
||||||
QtGui.QApplication.alert(window, 0)
|
QtWidgets.QApplication.alert(window, 0)
|
||||||
|
|
||||||
def message_clicked():
|
def message_clicked():
|
||||||
window.setWindowState(window.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
|
window.setWindowState(window.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
|
||||||
window.activateWindow()
|
window.activateWindow()
|
||||||
tray.connect(tray, QtCore.SIGNAL("messageClicked()"), message_clicked)
|
tray.messageClicked.connect(message_clicked)
|
||||||
|
|
||||||
|
|
||||||
class AudioFile:
|
class AudioFile:
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
from widgets import CenteredWidget, LineEdit
|
from widgets import CenteredWidget, LineEdit
|
||||||
try:
|
from PyQt5 import QtCore, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
|
|
||||||
|
|
||||||
class PasswordArea(LineEdit):
|
class PasswordArea(LineEdit):
|
||||||
|
@ -10,7 +7,7 @@ class PasswordArea(LineEdit):
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super(PasswordArea, self).__init__(parent)
|
super(PasswordArea, self).__init__(parent)
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.setEchoMode(QtGui.QLineEdit.EchoMode.Password)
|
self.setEchoMode(QtWidgets.QLineEdit.Password)
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
def keyPressEvent(self, event):
|
||||||
if event.key() == QtCore.Qt.Key_Return:
|
if event.key() == QtCore.Qt.Key_Return:
|
||||||
|
@ -31,18 +28,18 @@ class PasswordScreenBase(CenteredWidget):
|
||||||
self.setMinimumSize(QtCore.QSize(360, 170))
|
self.setMinimumSize(QtCore.QSize(360, 170))
|
||||||
self.setMaximumSize(QtCore.QSize(360, 170))
|
self.setMaximumSize(QtCore.QSize(360, 170))
|
||||||
|
|
||||||
self.enter_pass = QtGui.QLabel(self)
|
self.enter_pass = QtWidgets.QLabel(self)
|
||||||
self.enter_pass.setGeometry(QtCore.QRect(30, 10, 300, 30))
|
self.enter_pass.setGeometry(QtCore.QRect(30, 10, 300, 30))
|
||||||
|
|
||||||
self.password = PasswordArea(self)
|
self.password = PasswordArea(self)
|
||||||
self.password.setGeometry(QtCore.QRect(30, 50, 300, 30))
|
self.password.setGeometry(QtCore.QRect(30, 50, 300, 30))
|
||||||
|
|
||||||
self.button = QtGui.QPushButton(self)
|
self.button = QtWidgets.QPushButton(self)
|
||||||
self.button.setGeometry(QtCore.QRect(30, 90, 300, 30))
|
self.button.setGeometry(QtCore.QRect(30, 90, 300, 30))
|
||||||
self.button.setText('OK')
|
self.button.setText('OK')
|
||||||
self.button.clicked.connect(self.button_click)
|
self.button.clicked.connect(self.button_click)
|
||||||
|
|
||||||
self.warning = QtGui.QLabel(self)
|
self.warning = QtWidgets.QLabel(self)
|
||||||
self.warning.setGeometry(QtCore.QRect(30, 130, 300, 30))
|
self.warning.setGeometry(QtCore.QRect(30, 130, 300, 30))
|
||||||
self.warning.setStyleSheet('QLabel { color: #F70D1A; }')
|
self.warning.setStyleSheet('QLabel { color: #F70D1A; }')
|
||||||
self.warning.setVisible(False)
|
self.warning.setVisible(False)
|
||||||
|
@ -61,9 +58,9 @@ class PasswordScreenBase(CenteredWidget):
|
||||||
super(PasswordScreenBase, self).keyPressEvent(event)
|
super(PasswordScreenBase, self).keyPressEvent(event)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("pass", "Enter password", None, QtGui.QApplication.UnicodeUTF8))
|
self.setWindowTitle(QtWidgets.QApplication.translate("pass", "Enter password"))
|
||||||
self.enter_pass.setText(QtGui.QApplication.translate("pass", "Password:", None, QtGui.QApplication.UnicodeUTF8))
|
self.enter_pass.setText(QtWidgets.QApplication.translate("pass", "Password:"))
|
||||||
self.warning.setText(QtGui.QApplication.translate("pass", "Incorrect password", None, QtGui.QApplication.UnicodeUTF8))
|
self.warning.setText(QtWidgets.QApplication.translate("pass", "Incorrect password"))
|
||||||
|
|
||||||
|
|
||||||
class PasswordScreen(PasswordScreenBase):
|
class PasswordScreen(PasswordScreenBase):
|
||||||
|
@ -116,37 +113,32 @@ class SetProfilePasswordScreen(CenteredWidget):
|
||||||
self.setMaximumSize(QtCore.QSize(700, 200))
|
self.setMaximumSize(QtCore.QSize(700, 200))
|
||||||
self.password = LineEdit(self)
|
self.password = LineEdit(self)
|
||||||
self.password.setGeometry(QtCore.QRect(40, 10, 300, 30))
|
self.password.setGeometry(QtCore.QRect(40, 10, 300, 30))
|
||||||
self.password.setEchoMode(QtGui.QLineEdit.EchoMode.Password)
|
self.password.setEchoMode(QtWidgets.QLineEdit.Password)
|
||||||
self.confirm_password = LineEdit(self)
|
self.confirm_password = LineEdit(self)
|
||||||
self.confirm_password.setGeometry(QtCore.QRect(40, 50, 300, 30))
|
self.confirm_password.setGeometry(QtCore.QRect(40, 50, 300, 30))
|
||||||
self.confirm_password.setEchoMode(QtGui.QLineEdit.EchoMode.Password)
|
self.confirm_password.setEchoMode(QtWidgets.QLineEdit.Password)
|
||||||
self.set_password = QtGui.QPushButton(self)
|
self.set_password = QtWidgets.QPushButton(self)
|
||||||
self.set_password.setGeometry(QtCore.QRect(40, 100, 300, 30))
|
self.set_password.setGeometry(QtCore.QRect(40, 100, 300, 30))
|
||||||
self.set_password.clicked.connect(self.new_password)
|
self.set_password.clicked.connect(self.new_password)
|
||||||
self.not_match = QtGui.QLabel(self)
|
self.not_match = QtWidgets.QLabel(self)
|
||||||
self.not_match.setGeometry(QtCore.QRect(350, 50, 300, 30))
|
self.not_match.setGeometry(QtCore.QRect(350, 50, 300, 30))
|
||||||
self.not_match.setVisible(False)
|
self.not_match.setVisible(False)
|
||||||
self.not_match.setStyleSheet('QLabel { color: #BC1C1C; }')
|
self.not_match.setStyleSheet('QLabel { color: #BC1C1C; }')
|
||||||
self.warning = QtGui.QLabel(self)
|
self.warning = QtWidgets.QLabel(self)
|
||||||
self.warning.setGeometry(QtCore.QRect(40, 160, 500, 30))
|
self.warning.setGeometry(QtCore.QRect(40, 160, 500, 30))
|
||||||
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
self.warning.setStyleSheet('QLabel { color: #BC1C1C; }')
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
self.setWindowTitle(QtGui.QApplication.translate("PasswordScreen", "Profile password", None,
|
self.setWindowTitle(QtWidgets.QApplication.translate("PasswordScreen", "Profile password"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.password.setPlaceholderText(
|
self.password.setPlaceholderText(
|
||||||
QtGui.QApplication.translate("PasswordScreen", "Password (at least 8 symbols)", None,
|
QtWidgets.QApplication.translate("PasswordScreen", "Password (at least 8 symbols)"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.confirm_password.setPlaceholderText(
|
self.confirm_password.setPlaceholderText(
|
||||||
QtGui.QApplication.translate("PasswordScreen", "Confirm password", None,
|
QtWidgets.QApplication.translate("PasswordScreen", "Confirm password"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.set_password.setText(
|
self.set_password.setText(
|
||||||
QtGui.QApplication.translate("PasswordScreen", "Set password", None, QtGui.QApplication.UnicodeUTF8))
|
QtWidgets.QApplication.translate("PasswordScreen", "Set password"))
|
||||||
self.not_match.setText(QtGui.QApplication.translate("PasswordScreen", "Passwords do not match", None,
|
self.not_match.setText(QtWidgets.QApplication.translate("PasswordScreen", "Passwords do not match"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.warning.setText(
|
self.warning.setText(
|
||||||
QtGui.QApplication.translate("PasswordScreen", "There is no way to recover lost passwords", None,
|
QtWidgets.QApplication.translate("PasswordScreen", "There is no way to recover lost passwords"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
|
|
||||||
def new_password(self):
|
def new_password(self):
|
||||||
if self.password.text() == self.confirm_password.text():
|
if self.password.text() == self.confirm_password.text():
|
||||||
|
@ -155,10 +147,8 @@ class SetProfilePasswordScreen(CenteredWidget):
|
||||||
self.close()
|
self.close()
|
||||||
else:
|
else:
|
||||||
self.not_match.setText(
|
self.not_match.setText(
|
||||||
QtGui.QApplication.translate("PasswordScreen", "Password must be at least 8 symbols", None,
|
QtWidgets.QApplication.translate("PasswordScreen", "Password must be at least 8 symbols"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.not_match.setVisible(True)
|
self.not_match.setVisible(True)
|
||||||
else:
|
else:
|
||||||
self.not_match.setText(QtGui.QApplication.translate("PasswordScreen", "Passwords do not match", None,
|
self.not_match.setText(QtWidgets.QApplication.translate("PasswordScreen", "Passwords do not match"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
self.not_match.setVisible(True)
|
self.not_match.setVisible(True)
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
import os
|
import os
|
||||||
try:
|
from PyQt5 import QtCore, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
|
|
||||||
|
|
||||||
MAX_SHORT_NAME_LENGTH = 5
|
MAX_SHORT_NAME_LENGTH = 5
|
||||||
|
@ -137,10 +134,10 @@ class PluginSuperClass:
|
||||||
:param command: string with command
|
:param command: string with command
|
||||||
"""
|
"""
|
||||||
if command == 'help':
|
if command == 'help':
|
||||||
msgbox = QtGui.QMessageBox()
|
msgbox = QtWidgets.QMessageBox()
|
||||||
title = QtGui.QApplication.translate("PluginWindow", "List of commands for plugin {}", None, QtGui.QApplication.UnicodeUTF8)
|
title = QtWidgets.QApplication.translate("PluginWindow", "List of commands for plugin {}")
|
||||||
msgbox.setWindowTitle(title.format(self._name))
|
msgbox.setWindowTitle(title.format(self._name))
|
||||||
msgbox.setText(QtGui.QApplication.translate("PluginWindow", "No commands available", None, QtGui.QApplication.UnicodeUTF8))
|
msgbox.setText(QtWidgets.QApplication.translate("PluginWindow", "No commands available"))
|
||||||
msgbox.exec_()
|
msgbox.exec_()
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -151,7 +148,7 @@ class PluginSuperClass:
|
||||||
"""
|
"""
|
||||||
This method loads translations for GUI
|
This method loads translations for GUI
|
||||||
"""
|
"""
|
||||||
app = QtGui.QApplication.instance()
|
app = QtWidgets.QApplication.instance()
|
||||||
langs = self._settings.supported_languages()
|
langs = self._settings.supported_languages()
|
||||||
curr_lang = self._settings['language']
|
curr_lang = self._settings['language']
|
||||||
if curr_lang in langs:
|
if curr_lang in langs:
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
from list_items import *
|
from list_items import *
|
||||||
try:
|
from PyQt5 import QtGui, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
from friend import *
|
from friend import *
|
||||||
from settings import *
|
from settings import *
|
||||||
from toxcore_enums_and_consts import *
|
from toxcore_enums_and_consts import *
|
||||||
|
@ -97,8 +94,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
tmp = self.name
|
tmp = self.name
|
||||||
super(Profile, self).set_name(value.encode('utf-8'))
|
super(Profile, self).set_name(value.encode('utf-8'))
|
||||||
self._tox.self_set_name(self._name.encode('utf-8'))
|
self._tox.self_set_name(self._name.encode('utf-8'))
|
||||||
message = QtGui.QApplication.translate("MainWindow", 'User {} is now known as {}', None,
|
message = QtWidgets.QApplication.translate("MainWindow", 'User {} is now known as {}')
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
|
||||||
message = message.format(tmp, value)
|
message = message.format(tmp, value)
|
||||||
for friend in self._contacts:
|
for friend in self._contacts:
|
||||||
friend.append_message(InfoMessage(message, time.time()))
|
friend.append_message(InfoMessage(message, time.time()))
|
||||||
|
@ -246,7 +242,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
if message.get_status() in ACTIVE_FILE_TRANSFERS: # active file transfer
|
if message.get_status() in ACTIVE_FILE_TRANSFERS: # active file transfer
|
||||||
try:
|
try:
|
||||||
ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())]
|
ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())]
|
||||||
ft.set_state_changed_handler(item.update)
|
ft.set_state_changed_handler(item.update_transfer_state)
|
||||||
ft.signal()
|
ft.signal()
|
||||||
except:
|
except:
|
||||||
print('Incoming not started transfer - no info found')
|
print('Incoming not started transfer - no info found')
|
||||||
|
@ -312,7 +308,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
friend.set_name(name)
|
friend.set_name(name)
|
||||||
name = str(name, 'utf-8')
|
name = str(name, 'utf-8')
|
||||||
if friend.name == name and tmp != name:
|
if friend.name == name and tmp != name:
|
||||||
message = QtGui.QApplication.translate("MainWindow", 'User {} is now known as {}', None, QtGui.QApplication.UnicodeUTF8)
|
message = QtWidgets.QApplication.translate("MainWindow", 'User {} is now known as {}')
|
||||||
message = message.format(tmp, name)
|
message = message.format(tmp, name)
|
||||||
friend.append_message(InfoMessage(message, time.time()))
|
friend.append_message(InfoMessage(message, time.time()))
|
||||||
friend.actions = True
|
friend.actions = True
|
||||||
|
@ -566,7 +562,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
if message.get_status() in ACTIVE_FILE_TRANSFERS: # active file transfer
|
if message.get_status() in ACTIVE_FILE_TRANSFERS: # active file transfer
|
||||||
try:
|
try:
|
||||||
ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())]
|
ft = self._file_transfers[(message.get_friend_number(), message.get_file_number())]
|
||||||
ft.set_state_changed_handler(item.update)
|
ft.set_state_changed_handler(item.update_transfer_state)
|
||||||
ft.signal()
|
ft.signal()
|
||||||
except:
|
except:
|
||||||
print('Incoming not started transfer - no info found')
|
print('Incoming not started transfer - no info found')
|
||||||
|
@ -663,17 +659,15 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
"""
|
"""
|
||||||
friend = self._contacts[num]
|
friend = self._contacts[num]
|
||||||
name = friend.name
|
name = friend.name
|
||||||
dialog = QtGui.QApplication.translate('MainWindow',
|
dialog = QtWidgets.QApplication.translate('MainWindow',
|
||||||
"Enter new alias for friend {} or leave empty to use friend's name:",
|
"Enter new alias for friend {} or leave empty to use friend's name:")
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
dialog = dialog.format(name)
|
dialog = dialog.format(name)
|
||||||
title = QtGui.QApplication.translate('MainWindow',
|
title = QtWidgets.QApplication.translate('MainWindow',
|
||||||
'Set alias',
|
'Set alias')
|
||||||
None, QtGui.QApplication.UnicodeUTF8)
|
|
||||||
text, ok = QtGui.QInputDialog.getText(None,
|
text, ok = QtGui.QInputDialog.getText(None,
|
||||||
title,
|
title,
|
||||||
dialog,
|
dialog,
|
||||||
QtGui.QLineEdit.Normal,
|
QtWidgets.QLineEdit.Normal,
|
||||||
name)
|
name)
|
||||||
if ok:
|
if ok:
|
||||||
settings = Settings.get_instance()
|
settings = Settings.get_instance()
|
||||||
|
@ -798,9 +792,9 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
raise Exception('TOX DNS lookup failed')
|
raise Exception('TOX DNS lookup failed')
|
||||||
if len(tox_id) == TOX_PUBLIC_KEY_SIZE * 2: # public key
|
if len(tox_id) == TOX_PUBLIC_KEY_SIZE * 2: # public key
|
||||||
self.add_friend(tox_id)
|
self.add_friend(tox_id)
|
||||||
msgBox = QtGui.QMessageBox()
|
msgBox = QtWidgets.QMessageBox()
|
||||||
msgBox.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Friend added", None, QtGui.QApplication.UnicodeUTF8))
|
msgBox.setWindowTitle(QtWidgets.QApplication.translate("MainWindow", "Friend added"))
|
||||||
text = (QtGui.QApplication.translate("MainWindow", 'Friend added without sending friend request', None, QtGui.QApplication.UnicodeUTF8))
|
text = (QtWidgets.QApplication.translate("MainWindow", 'Friend added without sending friend request'))
|
||||||
msgBox.setText(text)
|
msgBox.setText(text)
|
||||||
msgBox.exec_()
|
msgBox.exec_()
|
||||||
else:
|
else:
|
||||||
|
@ -826,11 +820,11 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
:param message: message
|
:param message: message
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
text = QtGui.QApplication.translate('MainWindow', 'User {} wants to add you to contact list. Message:\n{}', None, QtGui.QApplication.UnicodeUTF8)
|
text = QtWidgets.QApplication.translate('MainWindow', 'User {} wants to add you to contact list. Message:\n{}')
|
||||||
info = text.format(tox_id, message)
|
info = text.format(tox_id, message)
|
||||||
fr_req = QtGui.QApplication.translate('MainWindow', 'Friend request', None, QtGui.QApplication.UnicodeUTF8)
|
fr_req = QtWidgets.QApplication.translate('MainWindow', 'Friend request')
|
||||||
reply = QtGui.QMessageBox.question(None, fr_req, info, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
|
reply = QtWidgets.QMessageBox.question(None, fr_req, info, QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No)
|
||||||
if reply == QtGui.QMessageBox.Yes: # accepted
|
if reply == QtWidgets.QMessageBox.Yes: # accepted
|
||||||
self.add_friend(tox_id)
|
self.add_friend(tox_id)
|
||||||
data = self._tox.get_savedata()
|
data = self._tox.get_savedata()
|
||||||
ProfileHelper.get_instance().save_profile(data)
|
ProfileHelper.get_instance().save_profile(data)
|
||||||
|
@ -942,7 +936,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
if friend_number == self.get_active_number():
|
if friend_number == self.get_active_number():
|
||||||
item = self.create_file_transfer_item(tm)
|
item = self.create_file_transfer_item(tm)
|
||||||
if accepted:
|
if accepted:
|
||||||
self._file_transfers[(friend_number, file_number)].set_state_changed_handler(item.update)
|
self._file_transfers[(friend_number, file_number)].set_state_changed_handler(item.update_transfer_state)
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
else:
|
else:
|
||||||
friend.actions = True
|
friend.actions = True
|
||||||
|
@ -1031,7 +1025,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
self._file_transfers[(friend_number, file_number)] = rt
|
self._file_transfers[(friend_number, file_number)] = rt
|
||||||
self._tox.file_control(friend_number, file_number, TOX_FILE_CONTROL['RESUME'])
|
self._tox.file_control(friend_number, file_number, TOX_FILE_CONTROL['RESUME'])
|
||||||
if item is not None:
|
if item is not None:
|
||||||
rt.set_state_changed_handler(item.update)
|
rt.set_state_changed_handler(item.update_transfer_state)
|
||||||
self.get_friend_by_number(friend_number).update_transfer_data(file_number,
|
self.get_friend_by_number(friend_number).update_transfer_data(file_number,
|
||||||
TOX_FILE_TRANSFER_STATE['RUNNING'])
|
TOX_FILE_TRANSFER_STATE['RUNNING'])
|
||||||
|
|
||||||
|
@ -1070,7 +1064,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
st.get_file_number())
|
st.get_file_number())
|
||||||
item = self.create_file_transfer_item(tm)
|
item = self.create_file_transfer_item(tm)
|
||||||
friend.append_message(tm)
|
friend.append_message(tm)
|
||||||
st.set_state_changed_handler(item.update)
|
st.set_state_changed_handler(item.update_transfer_state)
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
|
|
||||||
def send_file(self, path, number=None, is_resend=False, file_id=None):
|
def send_file(self, path, number=None, is_resend=False, file_id=None):
|
||||||
|
@ -1103,7 +1097,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
st.get_file_number())
|
st.get_file_number())
|
||||||
if friend_number == self.get_active_number():
|
if friend_number == self.get_active_number():
|
||||||
item = self.create_file_transfer_item(tm)
|
item = self.create_file_transfer_item(tm)
|
||||||
st.set_state_changed_handler(item.update)
|
st.set_state_changed_handler(item.update_transfer_state)
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
self._contacts[friend_number].append_message(tm)
|
self._contacts[friend_number].append_message(tm)
|
||||||
|
|
||||||
|
@ -1119,7 +1113,6 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
"""
|
"""
|
||||||
self._file_transfers[(friend_number, file_number)].send_chunk(position, size)
|
self._file_transfers[(friend_number, file_number)].send_chunk(position, size)
|
||||||
|
|
||||||
@QtCore.Slot(int, int)
|
|
||||||
def transfer_finished(self, friend_number, file_number):
|
def transfer_finished(self, friend_number, file_number):
|
||||||
transfer = self._file_transfers[(friend_number, file_number)]
|
transfer = self._file_transfers[(friend_number, file_number)]
|
||||||
t = type(transfer)
|
t = type(transfer)
|
||||||
|
@ -1136,7 +1129,7 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
if friend_number == self.get_active_number():
|
if friend_number == self.get_active_number():
|
||||||
count = self._messages.count()
|
count = self._messages.count()
|
||||||
if count + i + 1 >= 0:
|
if count + i + 1 >= 0:
|
||||||
elem = QtGui.QListWidgetItem()
|
elem = QtWidgets.QListWidgetItem()
|
||||||
item = InlineImageItem(transfer.get_data(), self._messages.width(), elem)
|
item = InlineImageItem(transfer.get_data(), self._messages.width(), elem)
|
||||||
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
||||||
self._messages.insertItem(count + i + 1, elem)
|
self._messages.insertItem(count + i + 1, elem)
|
||||||
|
@ -1206,11 +1199,9 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
self._call(num, audio, video)
|
self._call(num, audio, video)
|
||||||
self._screen.active_call()
|
self._screen.active_call()
|
||||||
if video:
|
if video:
|
||||||
text = QtGui.QApplication.translate("incoming_call", "Outgoing video call", None,
|
text = QtWidgets.QApplication.translate("incoming_call", "Outgoing video call")
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
|
||||||
else:
|
else:
|
||||||
text = QtGui.QApplication.translate("incoming_call", "Outgoing audio call", None,
|
text = QtWidgets.QApplication.translate("incoming_call", "Outgoing audio call")
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
|
||||||
self.get_curr_friend().append_message(InfoMessage(text, time.time()))
|
self.get_curr_friend().append_message(InfoMessage(text, time.time()))
|
||||||
self.create_message_item(text, time.time(), '', MESSAGE_TYPE['INFO_MESSAGE'])
|
self.create_message_item(text, time.time(), '', MESSAGE_TYPE['INFO_MESSAGE'])
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
|
@ -1225,11 +1216,9 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
return
|
return
|
||||||
friend = self.get_friend_by_number(friend_number)
|
friend = self.get_friend_by_number(friend_number)
|
||||||
if video:
|
if video:
|
||||||
text = QtGui.QApplication.translate("incoming_call", "Incoming video call", None,
|
text = QtWidgets.QApplication.translate("incoming_call", "Incoming video call")
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
|
||||||
else:
|
else:
|
||||||
text = QtGui.QApplication.translate("incoming_call", "Incoming audio call", None,
|
text = QtWidgets.QApplication.translate("incoming_call", "Incoming audio call")
|
||||||
QtGui.QApplication.UnicodeUTF8)
|
|
||||||
friend.append_message(InfoMessage(text, time.time()))
|
friend.append_message(InfoMessage(text, time.time()))
|
||||||
self._incoming_calls.add(friend_number)
|
self._incoming_calls.add(friend_number)
|
||||||
if friend_number == self.get_active_number():
|
if friend_number == self.get_active_number():
|
||||||
|
@ -1258,9 +1247,9 @@ class Profile(basecontact.BaseContact, Singleton):
|
||||||
"""
|
"""
|
||||||
if friend_number in self._incoming_calls:
|
if friend_number in self._incoming_calls:
|
||||||
self._incoming_calls.remove(friend_number)
|
self._incoming_calls.remove(friend_number)
|
||||||
text = QtGui.QApplication.translate("incoming_call", "Call declined", None, QtGui.QApplication.UnicodeUTF8)
|
text = QtWidgets.QApplication.translate("incoming_call", "Call declined")
|
||||||
else:
|
else:
|
||||||
text = QtGui.QApplication.translate("incoming_call", "Call finished", None, QtGui.QApplication.UnicodeUTF8)
|
text = QtWidgets.QApplication.translate("incoming_call", "Call finished")
|
||||||
self._screen.call_finished()
|
self._screen.call_finished()
|
||||||
self._call.finish_call(friend_number, by_friend) # finish or decline call
|
self._call.finish_call(friend_number, by_friend) # finish or decline call
|
||||||
if hasattr(self, '_call_widget'):
|
if hasattr(self, '_call_widget'):
|
||||||
|
|
|
@ -2,10 +2,7 @@ import util
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
try:
|
from PyQt5 import QtCore
|
||||||
from PySide import QtCore
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore
|
|
||||||
|
|
||||||
|
|
||||||
class SmileyLoader(util.Singleton):
|
class SmileyLoader(util.Singleton):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from PySide import QtCore
|
from PyQt5 import QtCore
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from PyQt4 import QtCore
|
from PyQt4 import QtCore
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,7 @@ import json
|
||||||
import urllib.request
|
import urllib.request
|
||||||
from util import log
|
from util import log
|
||||||
import settings
|
import settings
|
||||||
try:
|
from PyQt5 import QtNetwork, QtCore
|
||||||
from PySide import QtNetwork, QtCore
|
|
||||||
except:
|
|
||||||
from PyQt4 import QtNetwork, QtCore
|
|
||||||
|
|
||||||
|
|
||||||
def tox_dns(email):
|
def tox_dns(email):
|
||||||
|
|
|
@ -3,10 +3,7 @@ import os
|
||||||
import settings
|
import settings
|
||||||
import platform
|
import platform
|
||||||
import urllib
|
import urllib
|
||||||
try:
|
from PyQt5 import QtNetwork, QtCore
|
||||||
from PySide import QtNetwork, QtCore
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtNetwork, QtCore
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
try:
|
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
from PySide import QtCore, QtGui
|
|
||||||
except ImportError:
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
|
|
||||||
|
|
||||||
class DataLabel(QtGui.QLabel):
|
class DataLabel(QtWidgets.QLabel):
|
||||||
"""
|
"""
|
||||||
Label with elided text
|
Label with elided text
|
||||||
"""
|
"""
|
||||||
|
@ -15,14 +12,14 @@ class DataLabel(QtGui.QLabel):
|
||||||
super().setText(text)
|
super().setText(text)
|
||||||
|
|
||||||
|
|
||||||
class ComboBox(QtGui.QComboBox):
|
class ComboBox(QtWidgets.QComboBox):
|
||||||
|
|
||||||
def __init__(self, *args):
|
def __init__(self, *args):
|
||||||
super().__init__(*args)
|
super().__init__(*args)
|
||||||
self.view().setSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Expanding)
|
self.view().setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Expanding)
|
||||||
|
|
||||||
|
|
||||||
class CenteredWidget(QtGui.QWidget):
|
class CenteredWidget(QtWidgets.QWidget):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(CenteredWidget, self).__init__()
|
super(CenteredWidget, self).__init__()
|
||||||
|
@ -30,12 +27,12 @@ class CenteredWidget(QtGui.QWidget):
|
||||||
|
|
||||||
def center(self):
|
def center(self):
|
||||||
qr = self.frameGeometry()
|
qr = self.frameGeometry()
|
||||||
cp = QtGui.QDesktopWidget().availableGeometry().center()
|
cp = QtWidgets.QDesktopWidget().availableGeometry().center()
|
||||||
qr.moveCenter(cp)
|
qr.moveCenter(cp)
|
||||||
self.move(qr.topLeft())
|
self.move(qr.topLeft())
|
||||||
|
|
||||||
|
|
||||||
class LineEdit(QtGui.QLineEdit):
|
class LineEdit(QtWidgets.QLineEdit):
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
super(LineEdit, self).__init__(parent)
|
super(LineEdit, self).__init__(parent)
|
||||||
|
@ -46,25 +43,27 @@ class LineEdit(QtGui.QLineEdit):
|
||||||
del menu
|
del menu
|
||||||
|
|
||||||
|
|
||||||
class QRightClickButton(QtGui.QPushButton):
|
class QRightClickButton(QtWidgets.QPushButton):
|
||||||
"""
|
"""
|
||||||
Button with right click support
|
Button with right click support
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
rightClicked = QtCore.pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super(QRightClickButton, self).__init__(parent)
|
super(QRightClickButton, self).__init__(parent)
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
def mousePressEvent(self, event):
|
||||||
if event.button() == QtCore.Qt.RightButton:
|
if event.button() == QtCore.Qt.RightButton:
|
||||||
self.emit(QtCore.SIGNAL("rightClicked()"))
|
self.rightClicked.emit()
|
||||||
else:
|
else:
|
||||||
super(QRightClickButton, self).mousePressEvent(event)
|
super(QRightClickButton, self).mousePressEvent(event)
|
||||||
|
|
||||||
|
|
||||||
class RubberBand(QtGui.QRubberBand):
|
class RubberBand(QtWidgets.QRubberBand):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(RubberBand, self).__init__(QtGui.QRubberBand.Rectangle, None)
|
super(RubberBand, self).__init__(QtWidgets.QRubberBand.Rectangle, None)
|
||||||
self.setPalette(QtGui.QPalette(QtCore.Qt.transparent))
|
self.setPalette(QtGui.QPalette(QtCore.Qt.transparent))
|
||||||
self.pen = QtGui.QPen(QtCore.Qt.blue, 4)
|
self.pen = QtGui.QPen(QtCore.Qt.blue, 4)
|
||||||
self.pen.setStyle(QtCore.Qt.SolidLine)
|
self.pen.setStyle(QtCore.Qt.SolidLine)
|
||||||
|
@ -86,29 +85,21 @@ def create_menu(menu):
|
||||||
text = action.text()
|
text = action.text()
|
||||||
if 'Link Location' in text:
|
if 'Link Location' in text:
|
||||||
text = text.replace('Copy &Link Location',
|
text = text.replace('Copy &Link Location',
|
||||||
QtGui.QApplication.translate("MainWindow", "Copy link location", None,
|
QtWidgets.QApplication.translate("MainWindow", "Copy link location"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
elif '&Copy' in text:
|
elif '&Copy' in text:
|
||||||
text = text.replace('&Copy', QtGui.QApplication.translate("MainWindow", "Copy", None,
|
text = text.replace('&Copy', QtWidgets.QApplication.translate("MainWindow", "Copy"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
elif 'All' in text:
|
elif 'All' in text:
|
||||||
text = text.replace('Select All', QtGui.QApplication.translate("MainWindow", "Select all", None,
|
text = text.replace('Select All', QtWidgets.QApplication.translate("MainWindow", "Select all"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
elif 'Delete' in text:
|
elif 'Delete' in text:
|
||||||
text = text.replace('Delete', QtGui.QApplication.translate("MainWindow", "Delete", None,
|
text = text.replace('Delete', QtWidgets.QApplication.translate("MainWindow", "Delete"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
elif '&Paste' in text:
|
elif '&Paste' in text:
|
||||||
text = text.replace('&Paste', QtGui.QApplication.translate("MainWindow", "Paste", None,
|
text = text.replace('&Paste', QtWidgets.QApplication.translate("MainWindow", "Paste"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
elif 'Cu&t' in text:
|
elif 'Cu&t' in text:
|
||||||
text = text.replace('Cu&t', QtGui.QApplication.translate("MainWindow", "Cut", None,
|
text = text.replace('Cu&t', QtWidgets.QApplication.translate("MainWindow", "Cut"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
elif '&Undo' in text:
|
elif '&Undo' in text:
|
||||||
text = text.replace('&Undo', QtGui.QApplication.translate("MainWindow", "Undo", None,
|
text = text.replace('&Undo', QtWidgets.QApplication.translate("MainWindow", "Undo"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
elif '&Redo' in text:
|
elif '&Redo' in text:
|
||||||
text = text.replace('&Redo', QtGui.QApplication.translate("MainWindow", "Redo", None,
|
text = text.replace('&Redo', QtWidgets.QApplication.translate("MainWindow", "Redo"))
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
|
||||||
else:
|
else:
|
||||||
menu.removeAction(action)
|
menu.removeAction(action)
|
||||||
continue
|
continue
|
||||||
|
@ -124,12 +115,12 @@ class MultilineEdit(CenteredWidget):
|
||||||
self.setMinimumSize(QtCore.QSize(350, 200))
|
self.setMinimumSize(QtCore.QSize(350, 200))
|
||||||
self.setMaximumSize(QtCore.QSize(350, 200))
|
self.setMaximumSize(QtCore.QSize(350, 200))
|
||||||
self.setWindowTitle(title)
|
self.setWindowTitle(title)
|
||||||
self.edit = QtGui.QTextEdit(self)
|
self.edit = QtWidgets.QTextEdit(self)
|
||||||
self.edit.setGeometry(QtCore.QRect(0, 0, 350, 150))
|
self.edit.setGeometry(QtCore.QRect(0, 0, 350, 150))
|
||||||
self.edit.setText(text)
|
self.edit.setText(text)
|
||||||
self.button = QtGui.QPushButton(self)
|
self.button = QtWidgets.QPushButton(self)
|
||||||
self.button.setGeometry(QtCore.QRect(0, 150, 350, 50))
|
self.button.setGeometry(QtCore.QRect(0, 150, 350, 50))
|
||||||
self.button.setText(QtGui.QApplication.translate("MainWindow", "Save", None, QtGui.QApplication.UnicodeUTF8))
|
self.button.setText(QtWidgets.QApplication.translate("MainWindow", "Save"))
|
||||||
self.button.clicked.connect(self.button_click)
|
self.button.clicked.connect(self.button_click)
|
||||||
self.center()
|
self.center()
|
||||||
self.save = save
|
self.save = save
|
||||||
|
|
Loading…
Reference in a new issue