11 Commits

29 changed files with 643 additions and 2609 deletions

3
.gitignore vendored
View File

@ -1,5 +1,6 @@
*.pyc
*.pyo
*.ui
toxygen/toxcore
tests/tests
tests/libs
@ -24,5 +25,3 @@ html
Toxygen.egg-info
*.tox
.cache
*.db

View File

@ -12,13 +12,13 @@ before_install:
- sudo apt-get install -y checkinstall build-essential
- sudo apt-get install portaudio19-dev
- sudo apt-get install libsecret-1-dev
- sudo apt-get install libconfig-dev libvpx-dev check -qq
install:
- pip install sip
- pip install pyqt5
- pip install pyaudio
- pip install opencv-python
- pip install pydenticon
- pip3 install sip
- pip3 install pyaudio
- pip3 install pyqt5==5.14
- pip3 install opencv-python
before_script:
# Opus
- wget http://downloads.xiph.org/releases/opus/opus-1.0.3.tar.gz
@ -38,16 +38,15 @@ before_script:
- sudo ldconfig
- cd ..
# Toxcore
- git clone https://github.com/ingvar1995/toxcore.git --branch=ngc_rebase
- git clone https://github.com/irungentoo/toxcore.git
- cd toxcore
- mkdir _build && cd _build
- cmake ..
- autoreconf -if
- ./configure
- make -j$(nproc)
- sudo make install
- echo '/usr/local/lib/' | sudo tee -a /etc/ld.so.conf.d/locallib.conf
- sudo ldconfig
- cd ..
- cd ..
script:
- py.test tests/travis.py
- py.test tests/tests.py

View File

@ -16,4 +16,4 @@ include toxygen/styles/*.qss
include toxygen/translations/*.qm
include toxygen/libs/libtox.dll
include toxygen/libs/libsodium.a
include toxygen/bootstrap/nodes.json
include toxygen/nodes.json

View File

@ -2,18 +2,10 @@
You can compile Toxygen using [PyInstaller](http://www.pyinstaller.org/)
Use Dockerfile and build script from `build` directory:
Install PyInstaller:
``pip3 install pyinstaller``
1. Build image:
```
docker build -t toxygen .
```
Compile Toxygen:
``pyinstaller --windowed --icon images/icon.ico main.py``
2. Run container:
```
docker run -it toxygen bash
```
3. Execute `build.sh` script:
```./build.sh```
Don't forget to copy /images/, /sounds/, /translations/, /styles/, /smileys/, /stickers/, /plugins/ (and /libs/libtox.dll, /libs/libsodium.a on Windows) to /dist/main/

View File

@ -2,4 +2,4 @@
1) Using GitHub - open issue
2) Use Toxygen Tox Group (NGC) - ID: 59D68B2709E81A679CF91416CB0E3692851C6CFCABEFF98B7131E3805A6D75FA
2) Use Toxygen Tox Group - add bot kalina@toxme.io (or 12EDB939AA529641CE53830B518D6EB30241868EE0E5023C46A372363CAEC91C2C948AEFE4EB)

View File

@ -2,17 +2,15 @@ from setuptools import setup
from setuptools.command.install import install
from platform import system
from subprocess import call
import main
from toxygen.util import program_version
import sys
import os
from utils.util import curr_directory, join_path
version = main.__version__ + '.0'
version = program_version + '.0'
if system() == 'Windows':
MODULES = ['PyQt5', 'PyAudio', 'numpy', 'opencv-python', 'pydenticon']
MODULES = ['PyQt5', 'PyAudio', 'numpy', 'opencv-python']
else:
MODULES = []
try:
@ -31,19 +29,6 @@ else:
import cv2
except ImportError:
MODULES.append('opencv-python')
try:
import pydenticon
except ImportError:
MODULES.append('pydenticon')
def get_packages():
directory = join_path(curr_directory(__file__), 'toxygen')
for root, dirs, files in os.walk(directory):
packages = map(lambda d: 'toxygen.' + d, dirs)
packages = ['toxygen'] + list(packages)
return packages
class InstallScript(install):
@ -77,7 +62,7 @@ setup(name='Toxygen',
author='Ingvar',
maintainer='Ingvar',
license='GPL3',
packages=get_packages(),
packages=['toxygen', 'toxygen.plugins', 'toxygen.styles'],
install_requires=MODULES,
include_package_data=True,
classifiers=[
@ -86,8 +71,8 @@ setup(name='Toxygen',
'Programming Language :: Python :: 3.6',
],
entry_points={
'console_scripts': ['toxygen=toxygen.main:main']
'console_scripts': ['toxygen=toxygen.main:main'],
},
cmdclass={
'install': InstallScript
'install': InstallScript,
})

View File

@ -1,18 +1,162 @@
from toxygen.middleware.tox_factory import *
from toxygen.profile import *
from toxygen.tox_dns import tox_dns
from toxygen.history import History
from toxygen.smileys import SmileyLoader
from toxygen.messages import *
import toxygen.toxes as encr
import toxygen.util as util
import time
# TODO: add new tests
class TestTox:
def test_creation(self):
name = 'Toxygen User'
status_message = 'Toxing on Toxygen'
name = b'Toxygen User'
status_message = b'Toxing on Toxygen'
tox = tox_factory()
tox.self_set_name(name)
tox.self_set_status_message(status_message)
data = tox.get_savedata()
del tox
tox = tox_factory(data)
assert tox.self_get_name() == name
assert tox.self_get_status_message() == status_message
assert tox.self_get_name() == str(name, 'utf-8')
assert tox.self_get_status_message() == str(status_message, 'utf-8')
class TestProfileHelper:
def test_creation(self):
file_name, path = 'test.tox', os.path.dirname(os.path.realpath(__file__)) + '/'
data = b'test'
with open(path + file_name, 'wb') as fl:
fl.write(data)
ph = ProfileHelper(path, file_name[:4])
assert ProfileHelper.get_path() == path
assert ph.open_profile() == data
assert os.path.exists(path + 'avatars/')
class TestEncryption:
def test_encr_decr(self):
tox = tox_factory()
data = tox.get_savedata()
lib = encr.ToxES()
for password in ('easypassword', 'njvnFjfn7vaGGV6', 'toxygen'):
lib.set_password(password)
copy_data = data[:]
new_data = lib.pass_encrypt(data)
assert lib.is_data_encrypted(new_data)
new_data = lib.pass_decrypt(new_data)
assert copy_data == new_data
class TestSmileys:
def test_loading(self):
settings = {'smiley_pack': 'default', 'smileys': True}
sm = SmileyLoader(settings)
assert sm.get_smileys_path() is not None
l = sm.get_packs_list()
assert len(l) == 4
def create_singletons():
folder = util.curr_directory() + '/abc'
Settings._instance = Settings.get_default_settings()
if not os.path.exists(folder):
os.makedirs(folder)
ProfileHelper(folder, 'test')
def create_friend(name, status_message, number, tox_id):
friend = Friend(None, number, name, status_message, None, tox_id)
return friend
def create_random_friend():
name, status_message, number = 'Friend', 'I am friend!', 0
tox_id = '76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6'
friend = create_friend(name, status_message, number, tox_id)
return friend
class TestFriend:
def test_friend_creation(self):
create_singletons()
name, status_message, number = 'Friend', 'I am friend!', 0
tox_id = '76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6'
friend = create_friend(name, status_message, number, tox_id)
assert friend.name == name
assert friend.tox_id == tox_id
assert friend.status_message == status_message
assert friend.number == number
def test_friend_corr(self):
create_singletons()
friend = create_random_friend()
t = time.time()
friend.append_message(InfoMessage('Info message', t))
friend.append_message(TextMessage('Hello! It is test!', MESSAGE_OWNER['ME'], t + 0.001, 0))
friend.append_message(TextMessage('Hello!', MESSAGE_OWNER['FRIEND'], t + 0.002, 0))
assert friend.get_last_message_text() == 'Hello! It is test!'
assert len(friend.get_corr()) == 3
assert len(friend.get_corr_for_saving()) == 2
friend.append_message(TextMessage('Not sent', MESSAGE_OWNER['NOT_SENT'], t + 0.002, 0))
arr = friend.get_unsent_messages_for_saving()
assert len(arr) == 1
assert arr[0][0] == 'Not sent'
tm = TransferMessage(MESSAGE_OWNER['FRIEND'],
time.time(),
TOX_FILE_TRANSFER_STATE['RUNNING'],
100, 'file_name', friend.number, 0)
friend.append_message(tm)
friend.clear_corr()
assert len(friend.get_corr()) == 1
assert len(friend.get_corr_for_saving()) == 0
friend.append_message(TextMessage('Hello! It is test!', MESSAGE_OWNER['ME'], t, 0))
assert len(friend.get_corr()) == 2
assert len(friend.get_corr_for_saving()) == 1
def test_history_search(self):
create_singletons()
friend = create_random_friend()
message = 'Hello! It is test!'
friend.append_message(TextMessage(message, MESSAGE_OWNER['ME'], time.time(), 0))
last_message = friend.get_last_message_text()
assert last_message == message
result = friend.search_string('e[m|s]')
assert result is not None
result = friend.search_string('tox')
assert result is None
class TestHistory:
def test_history(self):
create_singletons()
db_name = 'my_name'
name, status_message, number = 'Friend', 'I am friend!', 0
tox_id = '76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6'
friend = create_friend(name, status_message, number, tox_id)
history = History(db_name)
history.add_friend_to_db(friend.tox_id)
assert history.friend_exists_in_db(friend.tox_id)
text_message = 'Test!'
t = time.time()
friend.append_message(TextMessage(text_message, MESSAGE_OWNER['ME'], t, 0))
messages = friend.get_corr_for_saving()
history.save_messages_to_db(friend.tox_id, messages)
getter = history.messages_getter(friend.tox_id)
messages = getter.get_all()
assert len(messages) == 1
assert messages[0][0] == text_message
assert messages[0][1] == MESSAGE_OWNER['ME']
assert messages[0][-1] == 0
history.delete_message(friend.tox_id, t)
getter = history.messages_getter(friend.tox_id)
messages = getter.get_all()
assert len(messages) == 0
history.delete_friend_from_db(friend.tox_id)
assert not history.friend_exists_in_db(friend.tox_id)

View File

@ -1,49 +1,485 @@
import app
from user_data.settings import *
import utils.util as util
import argparse
import sys
from loginscreen import LoginScreen
import profile
from settings import *
from PyQt5 import QtCore, QtGui, QtWidgets
from bootstrap import generate_nodes, download_nodes_list
from mainscreen import MainWindow
from callbacks import init_callbacks, stop, start
from util import curr_directory, program_version, remove
import styles.style # reqired for styles loading
import platform
import toxes
from passwordscreen import PasswordScreen, UnlockAppScreen, SetProfilePasswordScreen
from plugin_support import PluginLoader
import updater
__maintainer__ = 'Ingvar'
__version__ = '0.5.0'
class Toxygen:
def __init__(self, path_or_uri=None):
super(Toxygen, self).__init__()
self.tox = self.ms = self.init = self.app = self.tray = self.mainloop = self.avloop = None
if path_or_uri is None:
self.uri = self.path = None
elif path_or_uri.startswith('tox:'):
self.path = None
self.uri = path_or_uri[4:]
else:
self.path = path_or_uri
self.uri = None
def enter_pass(self, data):
"""
Show password screen
"""
tmp = [data]
p = PasswordScreen(toxes.ToxES.get_instance(), tmp)
p.show()
self.app.lastWindowClosed.connect(self.app.quit)
self.app.exec_()
if tmp[0] == data:
raise SystemExit()
else:
return tmp[0]
def main(self):
"""
Main function of app. loads login screen if needed and starts main screen
"""
app = QtWidgets.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
self.app = app
if platform.system() == 'Linux':
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_X11InitThreads)
with open(curr_directory() + '/styles/dark_style.qss') as fl:
style = fl.read()
app.setStyleSheet(style)
encrypt_save = toxes.ToxES()
if self.path is not None:
path = os.path.dirname(self.path) + '/'
name = os.path.basename(self.path)[:-4]
data = ProfileHelper(path, name).open_profile()
if encrypt_save.is_data_encrypted(data):
data = self.enter_pass(data)
settings = Settings(name)
self.tox = profile.tox_factory(data, settings)
else:
auto_profile = Settings.get_auto_profile()
if not auto_profile[0]:
# show login screen if default profile not found
current_locale = QtCore.QLocale()
curr_lang = current_locale.languageToString(current_locale.language())
langs = Settings.supported_languages()
if curr_lang in langs:
lang_path = langs[curr_lang]
translator = QtCore.QTranslator()
translator.load(curr_directory() + '/translations/' + lang_path)
app.installTranslator(translator)
app.translator = translator
ls = LoginScreen()
ls.setWindowIconText("Toxygen")
profiles = ProfileHelper.find_profiles()
ls.update_select(map(lambda x: x[1], profiles))
_login = self.Login(profiles)
ls.update_on_close(_login.login_screen_close)
ls.show()
app.exec_()
if not _login.t:
return
elif _login.t == 1: # create new profile
_login.name = _login.name.strip()
name = _login.name if _login.name else 'toxygen_user'
pr = map(lambda x: x[1], ProfileHelper.find_profiles())
if name in list(pr):
msgBox = QtWidgets.QMessageBox()
msgBox.setWindowTitle(
QtWidgets.QApplication.translate("MainWindow", "Error"))
text = (QtWidgets.QApplication.translate("MainWindow",
'Profile with this name already exists'))
msgBox.setText(text)
msgBox.exec_()
return
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_status_message(b'Toxing on Toxygen')
reply = QtWidgets.QMessageBox.question(None,
'Profile {}'.format(name),
QtWidgets.QApplication.translate("login",
'Do you want to set profile password?'),
QtWidgets.QMessageBox.Yes,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
set_pass = SetProfilePasswordScreen(encrypt_save)
set_pass.show()
self.app.lastWindowClosed.connect(self.app.quit)
self.app.exec_()
reply = QtWidgets.QMessageBox.question(None,
'Profile {}'.format(name),
QtWidgets.QApplication.translate("login",
'Do you want to save profile in default folder? If no, profile will be saved in program folder'),
QtWidgets.QMessageBox.Yes,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
path = Settings.get_default_path()
else:
path = curr_directory() + '/'
try:
ProfileHelper(path, name).save_profile(self.tox.get_savedata())
except Exception as ex:
print(str(ex))
log('Profile creation exception: ' + str(ex))
msgBox = QtWidgets.QMessageBox()
msgBox.setText(QtWidgets.QApplication.translate("login",
'Profile saving error! Does Toxygen have permission to write to this directory?'))
msgBox.exec_()
return
path = Settings.get_default_path()
settings = Settings(name)
if curr_lang in langs:
settings['language'] = curr_lang
settings.save()
else: # load existing profile
path, name = _login.get_data()
if _login.default:
Settings.set_auto_profile(path, name)
data = ProfileHelper(path, name).open_profile()
if encrypt_save.is_data_encrypted(data):
data = self.enter_pass(data)
settings = Settings(name)
self.tox = profile.tox_factory(data, settings)
else:
path, name = auto_profile
data = ProfileHelper(path, name).open_profile()
if encrypt_save.is_data_encrypted(data):
data = self.enter_pass(data)
settings = Settings(name)
self.tox = profile.tox_factory(data, settings)
if Settings.is_active_profile(path, name): # profile is in use
reply = QtWidgets.QMessageBox.question(None,
'Profile {}'.format(name),
QtWidgets.QApplication.translate("login", 'Other instance of Toxygen uses this profile or profile was not properly closed. Continue?'),
QtWidgets.QMessageBox.Yes,
QtWidgets.QMessageBox.No)
if reply != QtWidgets.QMessageBox.Yes:
return
else:
settings.set_active_profile()
# application color scheme
for theme in settings.built_in_themes().keys():
if settings['theme'] == theme:
with open(curr_directory() + settings.built_in_themes()[theme]) as fl:
style = fl.read()
app.setStyleSheet(style)
lang = Settings.supported_languages()[settings['language']]
translator = QtCore.QTranslator()
translator.load(curr_directory() + '/translations/' + lang)
app.installTranslator(translator)
app.translator = translator
# tray icon
self.tray = QtWidgets.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
self.tray.setObjectName('tray')
self.ms = MainWindow(self.tox, self.reset, self.tray)
app.aboutToQuit.connect(self.ms.close_window)
class Menu(QtWidgets.QMenu):
def newStatus(self, status):
if not Settings.get_instance().locked:
profile.Profile.get_instance().set_status(status)
self.aboutToShowHandler()
self.hide()
def aboutToShowHandler(self):
status = profile.Profile.get_instance().status
act = self.act
if status is None or Settings.get_instance().locked:
self.actions()[1].setVisible(False)
else:
self.actions()[1].setVisible(True)
act.actions()[0].setChecked(False)
act.actions()[1].setChecked(False)
act.actions()[2].setChecked(False)
act.actions()[status].setChecked(True)
self.actions()[2].setVisible(not Settings.get_instance().locked)
def languageChange(self, *args, **kwargs):
self.actions()[0].setText(QtWidgets.QApplication.translate('tray', 'Open Toxygen'))
self.actions()[1].setText(QtWidgets.QApplication.translate('tray', 'Set status'))
self.actions()[2].setText(QtWidgets.QApplication.translate('tray', 'Exit'))
self.act.actions()[0].setText(QtWidgets.QApplication.translate('tray', 'Online'))
self.act.actions()[1].setText(QtWidgets.QApplication.translate('tray', 'Away'))
self.act.actions()[2].setText(QtWidgets.QApplication.translate('tray', 'Busy'))
m = Menu()
show = m.addAction(QtWidgets.QApplication.translate('tray', 'Open Toxygen'))
sub = m.addMenu(QtWidgets.QApplication.translate('tray', 'Set status'))
onl = sub.addAction(QtWidgets.QApplication.translate('tray', 'Online'))
away = sub.addAction(QtWidgets.QApplication.translate('tray', 'Away'))
busy = sub.addAction(QtWidgets.QApplication.translate('tray', 'Busy'))
onl.setCheckable(True)
away.setCheckable(True)
busy.setCheckable(True)
m.act = sub
exit = m.addAction(QtWidgets.QApplication.translate('tray', 'Exit'))
def show_window():
s = Settings.get_instance()
def show():
if not self.ms.isActiveWindow():
self.ms.setWindowState(self.ms.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
self.ms.activateWindow()
self.ms.show()
if not s.locked:
show()
else:
def correct_pass():
show()
s.locked = False
s.unlockScreen = False
if not s.unlockScreen:
s.unlockScreen = True
self.p = UnlockAppScreen(toxes.ToxES.get_instance(), correct_pass)
self.p.show()
def tray_activated(reason):
if reason == QtWidgets.QSystemTrayIcon.DoubleClick:
show_window()
def close_app():
if not Settings.get_instance().locked:
settings.closing = True
self.ms.close()
show.triggered.connect(show_window)
exit.triggered.connect(close_app)
m.aboutToShow.connect(lambda: m.aboutToShowHandler())
onl.triggered.connect(lambda: m.newStatus(0))
away.triggered.connect(lambda: m.newStatus(1))
busy.triggered.connect(lambda: m.newStatus(2))
self.tray.setContextMenu(m)
self.tray.show()
self.tray.activated.connect(tray_activated)
self.ms.show()
updating = False
if settings['update'] and updater.updater_available() and updater.connection_available(): # auto update
version = updater.check_for_updates()
if version is not None:
if settings['update'] == 2:
updater.download(version)
updating = True
else:
reply = QtWidgets.QMessageBox.question(None,
'Toxygen',
QtWidgets.QApplication.translate("login",
'Update for Toxygen was found. Download and install it?'),
QtWidgets.QMessageBox.Yes,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
updater.download(version)
updating = True
if updating:
data = self.tox.get_savedata()
ProfileHelper.get_instance().save_profile(data)
settings.close()
del self.tox
return
plugin_helper = PluginLoader(self.tox, settings) # plugin support
plugin_helper.load()
start()
# init thread
self.init = self.InitThread(self.tox, self.ms, self.tray)
self.init.start()
# starting threads for tox iterate and toxav iterate
self.mainloop = self.ToxIterateThread(self.tox)
self.mainloop.start()
self.avloop = self.ToxAVIterateThread(self.tox.AV)
self.avloop.start()
if self.uri is not None:
self.ms.add_contact(self.uri)
app.lastWindowClosed.connect(app.quit)
app.exec_()
self.init.stop = True
self.mainloop.stop = True
self.avloop.stop = True
plugin_helper.stop()
stop()
self.mainloop.wait()
self.init.wait()
self.avloop.wait()
self.tray.hide()
data = self.tox.get_savedata()
ProfileHelper.get_instance().save_profile(data)
settings.close()
del self.tox
def reset(self):
"""
Create new tox instance (new network settings)
:return: tox instance
"""
self.mainloop.stop = True
self.init.stop = True
self.avloop.stop = True
self.mainloop.wait()
self.init.wait()
self.avloop.wait()
data = self.tox.get_savedata()
ProfileHelper.get_instance().save_profile(data)
del self.tox
# create new tox instance
self.tox = profile.tox_factory(data, Settings.get_instance())
# init thread
self.init = self.InitThread(self.tox, self.ms, self.tray)
self.init.start()
# starting threads for tox iterate and toxav iterate
self.mainloop = self.ToxIterateThread(self.tox)
self.mainloop.start()
self.avloop = self.ToxAVIterateThread(self.tox.AV)
self.avloop.start()
plugin_helper = PluginLoader.get_instance()
plugin_helper.set_tox(self.tox)
return self.tox
# -----------------------------------------------------------------------------------------------------------------
# Inner classes
# -----------------------------------------------------------------------------------------------------------------
class InitThread(QtCore.QThread):
def __init__(self, tox, ms, tray):
QtCore.QThread.__init__(self)
self.tox, self.ms, self.tray = tox, ms, tray
self.stop = False
def run(self):
# initializing callbacks
init_callbacks(self.tox, self.ms, self.tray)
# download list of nodes if needed
download_nodes_list()
# bootstrap
try:
for data in generate_nodes():
if self.stop:
return
self.tox.bootstrap(*data)
self.tox.add_tcp_relay(*data)
except:
pass
for _ in range(10):
if self.stop:
return
self.msleep(1000)
while not self.tox.self_get_connection_status():
try:
for data in generate_nodes():
if self.stop:
return
self.tox.bootstrap(*data)
self.tox.add_tcp_relay(*data)
except:
pass
finally:
self.msleep(5000)
class ToxIterateThread(QtCore.QThread):
def __init__(self, tox):
QtCore.QThread.__init__(self)
self.tox = tox
self.stop = False
def run(self):
while not self.stop:
self.tox.iterate()
self.msleep(self.tox.iteration_interval())
class ToxAVIterateThread(QtCore.QThread):
def __init__(self, toxav):
QtCore.QThread.__init__(self)
self.toxav = toxav
self.stop = False
def run(self):
while not self.stop:
self.toxav.iterate()
self.msleep(self.toxav.iteration_interval())
class Login:
def __init__(self, arr):
self.arr = arr
def login_screen_close(self, t, number=-1, default=False, name=None):
""" Function which processes data from login screen
:param t: 0 - window was closed, 1 - new profile was created, 2 - profile loaded
:param number: num of chosen profile in list (-1 by default)
:param default: was or not chosen profile marked as default
:param name: name of new profile
"""
self.t = t
self.num = number
self.default = default
self.name = name
def get_data(self):
return self.arr[self.num]
def clean():
"""Removes libs folder"""
directory = util.get_libs_directory()
util.remove(directory)
"""Removes all windows libs from libs folder"""
d = curr_directory() + '/libs/'
remove(d)
def reset():
Settings.reset_auto_profile()
def print_toxygen_version():
print('Toxygen v' + __version__)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--version', action='store_true', help='Prints Toxygen version')
parser.add_argument('--clean', action='store_true', help='Delete toxcore libs from libs folder')
parser.add_argument('--reset', action='store_true', help='Reset default profile')
parser.add_argument('--uri', help='Add specified Tox ID to friends')
parser.add_argument('profile', nargs='?', default=None, help='Path to Tox profile')
args = parser.parse_args()
if args.version:
print_toxygen_version()
if len(sys.argv) == 1:
toxygen = Toxygen()
else: # started with argument(s)
arg = sys.argv[1]
if arg == '--version':
print('Toxygen v' + program_version)
return
if args.clean:
elif arg == '--help':
print('Usage:\ntoxygen path_to_profile\ntoxygen tox_id\ntoxygen --version\ntoxygen --reset')
return
elif arg == '--clean':
clean()
return
if args.reset:
elif arg == '--reset':
reset()
return
toxygen = app.App(__version__, args.profile, args.uri)
else:
toxygen = Toxygen(arg)
toxygen.main()

View File

@ -1,99 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>560</width>
<height>320</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>560</width>
<height>320</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>560</width>
<height>320</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="toxIdLabel">
<property name="geometry">
<rect>
<x>50</x>
<y>10</y>
<width>150</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="messageLabel">
<property name="geometry">
<rect>
<x>50</x>
<y>70</y>
<width>150</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPlainTextEdit" name="messagePlainTextEdit">
<property name="geometry">
<rect>
<x>50</x>
<y>110</y>
<width>460</width>
<height>150</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="addContactPushButton">
<property name="geometry">
<rect>
<x>50</x>
<y>270</y>
<width>460</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QLabel" name="errorLabel">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>220</x>
<y>10</y>
<width>321</width>
<height>31</height>
</rect>
</property>
<property name="contextMenuPolicy">
<enum>Qt::NoContextMenu</enum>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,87 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>315</width>
<height>218</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>315</width>
<height>218</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>315</width>
<height>218</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="inputDeviceLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>10</y>
<width>261</width>
<height>30</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="outputDeviceLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>100</y>
<width>261</width>
<height>30</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>16</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QComboBox" name="inputDeviceComboBox">
<property name="geometry">
<rect>
<x>30</x>
<y>50</y>
<width>255</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="outputDeviceComboBox">
<property name="geometry">
<rect>
<x>30</x>
<y>140</y>
<width>255</width>
<height>41</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>500</width>
<height>375</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QListWidget" name="bansListWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>500</width>
<height>375</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,127 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>640</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QPushButton" name="addGroupButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>20</x>
<y>250</y>
<width>601</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLineEdit" name="groupNameLineEdit">
<property name="geometry">
<rect>
<x>150</x>
<y>20</y>
<width>470</width>
<height>35</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="groupTypeComboBox">
<property name="geometry">
<rect>
<x>150</x>
<y>80</y>
<width>470</width>
<height>35</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="groupNameLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>121</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="groupTypeLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>80</y>
<width>121</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="statusLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>200</y>
<width>111</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="nickLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>150</y>
<width>111</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="nickLineEdit">
<property name="geometry">
<rect>
<x>150</x>
<y>140</y>
<width>470</width>
<height>35</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="statusComboBox">
<property name="geometry">
<rect>
<x>150</x>
<y>190</y>
<width>470</width>
<height>35</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,128 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>340</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>340</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>340</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QPushButton" name="createProfile">
<property name="geometry">
<rect>
<x>30</x>
<y>270</y>
<width>341</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QLineEdit" name="confirmPassword">
<property name="geometry">
<rect>
<x>30</x>
<y>170</y>
<width>341</width>
<height>41</height>
</rect>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
<widget class="QLineEdit" name="password">
<property name="geometry">
<rect>
<x>30</x>
<y>120</y>
<width>341</width>
<height>41</height>
</rect>
</property>
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
<widget class="QLabel" name="passwordLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>80</y>
<width>330</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QRadioButton" name="defaultFolder">
<property name="geometry">
<rect>
<x>30</x>
<y>10</y>
<width>330</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<widget class="QRadioButton" name="programFolder">
<property name="geometry">
<rect>
<x>30</x>
<y>40</y>
<width>330</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
<widget class="QLabel" name="errorLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>220</y>
<width>341</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>500</width>
<height>100</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QPushButton" name="cancelPushButton">
<property name="geometry">
<rect>
<x>330</x>
<y>30</y>
<width>161</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QLabel" name="banTargetLabel">
<property name="geometry">
<rect>
<x>15</x>
<y>20</y>
<width>305</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="banTimeLabel">
<property name="geometry">
<rect>
<x>15</x>
<y>50</y>
<width>305</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>150</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="friendNameLabel">
<property name="geometry">
<rect>
<x>250</x>
<y>30</y>
<width>300</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="groupNameLabel">
<property name="geometry">
<rect>
<x>250</x>
<y>70</y>
<width>300</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="friendAvatarLabel">
<property name="geometry">
<rect>
<x>140</x>
<y>30</y>
<width>60</width>
<height>60</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QCheckBox" name="selectCheckBox">
<property name="geometry">
<rect>
<x>40</x>
<y>50</y>
<width>20</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,83 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>220</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>220</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>220</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="passwordLabel">
<property name="geometry">
<rect>
<x>10</x>
<y>20</y>
<width>380</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="copyPasswordPushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>60</y>
<width>380</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QLabel" name="peerLimitLabel">
<property name="geometry">
<rect>
<x>10</x>
<y>120</y>
<width>380</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="privacyStateLabel">
<property name="geometry">
<rect>
<x>10</x>
<y>160</y>
<width>380</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,113 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>500</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>600</width>
<height>500</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>500</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="noInvitesLabel">
<property name="geometry">
<rect>
<x>0</x>
<y>150</y>
<width>600</width>
<height>25</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QListWidget" name="invitesListWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>341</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="nickLineEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>360</y>
<width>350</width>
<height>35</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="passwordLineEdit">
<property name="geometry">
<rect>
<x>10</x>
<y>410</y>
<width>350</width>
<height>35</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="statusComboBox">
<property name="geometry">
<rect>
<x>390</x>
<y>390</y>
<width>200</width>
<height>35</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="acceptPushButton">
<property name="geometry">
<rect>
<x>40</x>
<y>460</y>
<width>201</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="declinePushButton">
<property name="geometry">
<rect>
<x>360</x>
<y>460</y>
<width>201</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,110 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>658</width>
<height>238</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLineEdit" name="passwordLineEdit">
<property name="geometry">
<rect>
<x>180</x>
<y>20</y>
<width>450</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="passwordLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>30</y>
<width>145</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="peerLimitLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>80</y>
<width>145</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QSpinBox" name="peersLimitSpinBox">
<property name="geometry">
<rect>
<x>180</x>
<y>70</y>
<width>450</width>
<height>40</height>
</rect>
</property>
<property name="minimum">
<number>2</number>
</property>
<property name="maximum">
<number>9999</number>
</property>
<property name="value">
<number>512</number>
</property>
</widget>
<widget class="QLabel" name="privacyStateLabel">
<property name="geometry">
<rect>
<x>20</x>
<y>130</y>
<width>145</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QComboBox" name="privacyStateComboBox">
<property name="geometry">
<rect>
<x>180</x>
<y>120</y>
<width>450</width>
<height>40</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="savePushButton">
<property name="geometry">
<rect>
<x>20</x>
<y>180</y>
<width>611</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,253 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>552</width>
<height>847</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_3">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>532</width>
<height>827</height>
</rect>
</property>
<widget class="QLabel" name="themeLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>140</y>
<width>67</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QComboBox" name="themeComboBox">
<property name="geometry">
<rect>
<x>20</x>
<y>180</y>
<width>471</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="languageComboBox">
<property name="geometry">
<rect>
<x>20</x>
<y>60</y>
<width>471</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="languageLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>20</y>
<width>67</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QCheckBox" name="mirrorModeCheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>220</y>
<width>461</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QGroupBox" name="smileysGroupBox">
<property name="geometry">
<rect>
<x>30</x>
<y>280</y>
<width>461</width>
<height>221</height>
</rect>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<widget class="QCheckBox" name="smileysCheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>40</y>
<width>92</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QLabel" name="smileysPackLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>80</y>
<width>411</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QComboBox" name="smileysPackComboBox">
<property name="geometry">
<rect>
<x>30</x>
<y>120</y>
<width>411</width>
<height>31</height>
</rect>
</property>
</widget>
</widget>
<widget class="QCheckBox" name="compactModeCheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>250</y>
<width>461</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QPushButton" name="importStickersPushButton">
<property name="geometry">
<rect>
<x>30</x>
<y>750</y>
<width>471</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="importSmileysPushButton">
<property name="geometry">
<rect>
<x>30</x>
<y>690</y>
<width>471</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QCheckBox" name="showAvatarsCheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>520</y>
<width>461</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QGroupBox" name="appClosingGroupBox">
<property name="geometry">
<rect>
<x>30</x>
<y>550</y>
<width>471</width>
<height>131</height>
</rect>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<widget class="QRadioButton" name="closeRadioButton">
<property name="geometry">
<rect>
<x>30</x>
<y>30</y>
<width>421</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
<widget class="QRadioButton" name="hideRadioButton">
<property name="geometry">
<rect>
<x>30</x>
<y>60</y>
<width>431</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
<widget class="QRadioButton" name="closeToTrayRadioButton">
<property name="geometry">
<rect>
<x>30</x>
<y>90</y>
<width>421</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,139 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>740</width>
<height>320</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>740</width>
<height>320</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>740</width>
<height>320</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="chatIdLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>30</y>
<width>67</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="passwordLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>90</y>
<width>67</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="joinGroupButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="geometry">
<rect>
<x>30</x>
<y>260</y>
<width>680</width>
<height>51</height>
</rect>
</property>
<property name="text">
<string/>
</property>
</widget>
<widget class="QLineEdit" name="chatIdLineEdit">
<property name="geometry">
<rect>
<x>190</x>
<y>20</y>
<width>520</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="passwordLineEdit">
<property name="geometry">
<rect>
<x>190</x>
<y>80</y>
<width>520</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="nickLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>150</y>
<width>67</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="statusLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>210</y>
<width>67</width>
<height>17</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="nickLineEdit">
<property name="geometry">
<rect>
<x>190</x>
<y>140</y>
<width>520</width>
<height>41</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="statusComboBox">
<property name="geometry">
<rect>
<x>190</x>
<y>200</y>
<width>520</width>
<height>41</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,136 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>loginScreen</class>
<widget class="QWidget" name="loginScreen">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>200</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>200</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>200</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="toxygenLabel">
<property name="geometry">
<rect>
<x>0</x>
<y>5</y>
<width>401</width>
<height>30</height>
</rect>
</property>
<property name="font">
<font>
<family>Garuda</family>
<pointsize>16</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Toxygen</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QGroupBox" name="newProfileGroupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>180</width>
<height>150</height>
</rect>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<widget class="QPushButton" name="createProfilePushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>110</y>
<width>160</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="existingProfileGroupBox">
<property name="geometry">
<rect>
<x>210</x>
<y>40</y>
<width>180</width>
<height>150</height>
</rect>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<widget class="QComboBox" name="profilesComboBox">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>160</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QCheckBox" name="defaultProfileCheckBox">
<property name="geometry">
<rect>
<x>10</x>
<y>75</y>
<width>160</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QPushButton" name="loadProfilePushButton">
<property name="geometry">
<rect>
<x>10</x>
<y>110</y>
<width>160</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>270</width>
<height>500</height>
</rect>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="avatarLabel">
<property name="geometry">
<rect>
<x>5</x>
<y>5</y>
<width>64</width>
<height>64</height>
</rect>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="searchLineEdit">
<property name="geometry">
<rect>
<x>0</x>
<y>75</y>
<width>150</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="contactsFilterComboBox">
<property name="geometry">
<rect>
<x>150</x>
<y>75</y>
<width>120</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="searchLabel">
<property name="geometry">
<rect>
<x>0</x>
<y>77</y>
<width>20</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QListWidget" name="friendsListWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>270</width>
<height>400</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="groupInvitesPushButton">
<property name="geometry">
<rect>
<x>0</x>
<y>100</y>
<width>270</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,180 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>500</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>500</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>500</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QCheckBox" name="ipv6CheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>20</y>
<width>150</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QCheckBox" name="udpCheckBox">
<property name="geometry">
<rect>
<x>210</x>
<y>20</y>
<width>150</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QCheckBox" name="proxyCheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>140</y>
<width>150</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QRadioButton" name="httpProxyRadioButton">
<property name="geometry">
<rect>
<x>30</x>
<y>190</y>
<width>150</width>
<height>25</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
<widget class="QRadioButton" name="socksProxyRadioButton">
<property name="geometry">
<rect>
<x>30</x>
<y>230</y>
<width>150</width>
<height>25</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
<widget class="QCheckBox" name="lanCheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>100</y>
<width>150</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QLabel" name="ipLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>280</y>
<width>60</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QLabel" name="portLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>330</y>
<width>60</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
<widget class="QPushButton" name="restartCorePushButton">
<property name="geometry">
<rect>
<x>30</x>
<y>370</y>
<width>340</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QCheckBox" name="downloadNodesCheckBox">
<property name="geometry">
<rect>
<x>30</x>
<y>60</y>
<width>340</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QLabel" name="warningLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>420</y>
<width>340</width>
<height>65</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>320</width>
<height>201</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QCheckBox" name="notificationsCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>20</y>
<width>271</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QCheckBox" name="soundNotificationsCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>60</y>
<width>271</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QCheckBox" name="groupNotificationsCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>100</y>
<width>271</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QCheckBox" name="callsSoundCheckBox">
<property name="geometry">
<rect>
<x>20</x>
<y>140</y>
<width>271</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,200 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>500</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>600</width>
<height>500</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>500</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="peerNameLabel">
<property name="geometry">
<rect>
<x>110</x>
<y>10</y>
<width>431</width>
<height>40</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="sendPrivateMessagePushButton">
<property name="geometry">
<rect>
<x>50</x>
<y>140</y>
<width>500</width>
<height>50</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QCheckBox" name="ignorePeerCheckBox">
<property name="geometry">
<rect>
<x>50</x>
<y>100</y>
<width>500</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>CheckBox</string>
</property>
</widget>
<widget class="QGroupBox" name="banGroupBox">
<property name="geometry">
<rect>
<x>50</x>
<y>300</y>
<width>500</width>
<height>161</height>
</rect>
</property>
<property name="title">
<string>GroupBox</string>
</property>
<widget class="QPushButton" name="banPushButton">
<property name="geometry">
<rect>
<x>380</x>
<y>50</y>
<width>101</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QRadioButton" name="ipBanRadioButton">
<property name="geometry">
<rect>
<x>40</x>
<y>40</y>
<width>251</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
<widget class="QRadioButton" name="nickBanRadioButton">
<property name="geometry">
<rect>
<x>40</x>
<y>80</y>
<width>251</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
<widget class="QRadioButton" name="pkBanRadioButton">
<property name="geometry">
<rect>
<x>40</x>
<y>120</y>
<width>251</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>RadioButton</string>
</property>
</widget>
<widget class="QPushButton" name="kickPushButton">
<property name="geometry">
<rect>
<x>380</x>
<y>100</y>
<width>101</width>
<height>41</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<widget class="QLabel" name="roleLabel">
<property name="geometry">
<rect>
<x>50</x>
<y>60</y>
<width>67</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="roleNameLabel">
<property name="geometry">
<rect>
<x>130</x>
<y>60</y>
<width>411</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="copyPublicKeyPushButton">
<property name="geometry">
<rect>
<x>50</x>
<y>210</y>
<width>500</width>
<height>50</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QComboBox" name="rolesComboBox">
<property name="geometry">
<rect>
<x>130</x>
<y>55</y>
<width>291</width>
<height>30</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,280 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>900</width>
<height>702</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="nameLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>10</y>
<width>161</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="statusLabel">
<property name="geometry">
<rect>
<x>30</x>
<y>90</y>
<width>161</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="nameLineEdit">
<property name="geometry">
<rect>
<x>30</x>
<y>50</y>
<width>421</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="statusMessageLineEdit">
<property name="geometry">
<rect>
<x>30</x>
<y>130</y>
<width>421</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QComboBox" name="statusComboBox">
<property name="geometry">
<rect>
<x>520</x>
<y>30</y>
<width>311</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="toxIdTitleLabel">
<property name="geometry">
<rect>
<x>40</x>
<y>180</y>
<width>131</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="toxIdLabel">
<property name="geometry">
<rect>
<x>40</x>
<y>210</y>
<width>831</width>
<height>61</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="copyToxIdPushButton">
<property name="geometry">
<rect>
<x>40</x>
<y>280</y>
<width>371</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="copyPublicKeyPushButton">
<property name="geometry">
<rect>
<x>440</x>
<y>280</y>
<width>371</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="newAvatarPushButton">
<property name="geometry">
<rect>
<x>520</x>
<y>80</y>
<width>321</width>
<height>35</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="resetAvatarPushButton">
<property name="geometry">
<rect>
<x>520</x>
<y>130</y>
<width>321</width>
<height>35</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QLabel" name="profilePasswordLabel">
<property name="geometry">
<rect>
<x>60</x>
<y>380</y>
<width>161</width>
<height>31</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLineEdit" name="passwordLineEdit">
<property name="geometry">
<rect>
<x>50</x>
<y>420</y>
<width>421</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QLineEdit" name="confirmPasswordLineEdit">
<property name="geometry">
<rect>
<x>50</x>
<y>470</y>
<width>421</width>
<height>31</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="emptyPasswordLabel">
<property name="geometry">
<rect>
<x>500</x>
<y>420</y>
<width>381</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="warningLabel">
<property name="geometry">
<rect>
<x>60</x>
<y>580</y>
<width>381</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="defaultProfilePushButton">
<property name="geometry">
<rect>
<x>40</x>
<y>630</y>
<width>831</width>
<height>35</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="changePasswordPushButton">
<property name="geometry">
<rect>
<x>50</x>
<y>520</y>
<width>421</width>
<height>35</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QLabel" name="invalidPasswordsLabel">
<property name="geometry">
<rect>
<x>500</x>
<y>470</y>
<width>381</width>
<height>21</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="exportProfilePushButton">
<property name="geometry">
<rect>
<x>40</x>
<y>330</y>
<width>371</width>
<height>35</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QPushButton" name="newNoSpamPushButton">
<property name="geometry">
<rect>
<x>440</x>
<y>330</y>
<width>371</width>
<height>35</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,119 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>600</width>
<height>500</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>600</width>
<height>500</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>500</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="statusLabel">
<property name="geometry">
<rect>
<x>50</x>
<y>120</y>
<width>67</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="copyPublicKeyPushButton">
<property name="geometry">
<rect>
<x>50</x>
<y>250</y>
<width>500</width>
<height>50</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QComboBox" name="statusComboBox">
<property name="geometry">
<rect>
<x>140</x>
<y>110</y>
<width>400</width>
<height>40</height>
</rect>
</property>
</widget>
<widget class="QLabel" name="nameLabel">
<property name="geometry">
<rect>
<x>50</x>
<y>40</y>
<width>67</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="roleLabel">
<property name="geometry">
<rect>
<x>50</x>
<y>190</y>
<width>67</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QLabel" name="roleNameLabel">
<property name="geometry">
<rect>
<x>140</x>
<y>190</y>
<width>411</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QPushButton" name="savePushButton">
<property name="geometry">
<rect>
<x>50</x>
<y>330</y>
<width>500</width>
<height>50</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,67 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>120</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>120</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>120</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="updateModeLabel">
<property name="geometry">
<rect>
<x>25</x>
<y>5</y>
<width>350</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QComboBox" name="updateModeComboBox">
<property name="geometry">
<rect>
<x>25</x>
<y>30</y>
<width>350</width>
<height>30</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="updatePushButton">
<property name="geometry">
<rect>
<x>25</x>
<y>70</y>
<width>350</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>120</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>400</width>
<height>120</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>400</width>
<height>120</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<widget class="QLabel" name="deviceLabel">
<property name="geometry">
<rect>
<x>25</x>
<y>5</y>
<width>350</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
<widget class="QComboBox" name="deviceComboBox">
<property name="geometry">
<rect>
<x>25</x>
<y>30</y>
<width>350</width>
<height>30</height>
</rect>
</property>
</widget>
<widget class="QPushButton" name="selectRegionPushButton">
<property name="geometry">
<rect>
<x>25</x>
<y>70</y>
<width>350</width>
<height>30</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QComboBox" name="resolutionComboBox">
<property name="geometry">
<rect>
<x>25</x>
<y>70</y>
<width>350</width>
<height>30</height>
</rect>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>