fixes
This commit is contained in:
parent
99136cd4e3
commit
68f28fdac5
39 changed files with 219 additions and 285 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,3 +1,5 @@
|
|||
.pylint.err
|
||||
.pylint.out
|
||||
*.pyc
|
||||
*.pyo
|
||||
toxygen/toxcore
|
||||
|
@ -9,6 +11,7 @@ tests/avatars
|
|||
toxygen/libs
|
||||
.idea
|
||||
*~
|
||||
#*
|
||||
*.iml
|
||||
*.so
|
||||
*.log
|
||||
|
|
7
.rsync.sh
Normal file
7
.rsync.sh
Normal file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
find * -name \*.py | xargs grep -l '[ ]*$' | xargs sed -i -e 's/[ ]*$//'
|
||||
rsync "$@" -vax --include \*.py \
|
||||
--exclude Toxygen.egg-info --exclude build \
|
||||
--exclude \*.pyc --exclude .pyl\* --exclude \*~ \
|
||||
./ ../toxygen.git/|grep -v /$
|
62
setup.py
62
setup.py
|
@ -1,45 +1,15 @@
|
|||
from setuptools import setup
|
||||
from setuptools.command.install import install
|
||||
from platform import system
|
||||
from subprocess import call
|
||||
import main
|
||||
import sys
|
||||
import os
|
||||
from utils.util import curr_directory, join_path
|
||||
from setuptools import setup
|
||||
from setuptools.command.install import install
|
||||
|
||||
version = '1.0.0'
|
||||
|
||||
version = main.__version__ + '.0'
|
||||
|
||||
|
||||
if system() == 'Windows':
|
||||
MODULES = ['PyQt5', 'PyAudio', 'numpy', 'opencv-python', 'pydenticon', 'cv2']
|
||||
else:
|
||||
MODULES = ['pydenticon']
|
||||
MODULES.append('PyQt5')
|
||||
try:
|
||||
import pyaudio
|
||||
except ImportError:
|
||||
MODULES.append('PyAudio')
|
||||
try:
|
||||
import numpy
|
||||
except ImportError:
|
||||
MODULES.append('numpy')
|
||||
try:
|
||||
import cv2
|
||||
except ImportError:
|
||||
MODULES.append('opencv-python')
|
||||
try:
|
||||
import coloredlogs
|
||||
except ImportError:
|
||||
MODULES.append('coloredlogs')
|
||||
try:
|
||||
import pyqtconsole
|
||||
except ImportError:
|
||||
MODULES.append('pyqtconsole')
|
||||
|
||||
MODULES = ['argparse', 'PyQt5', 'PyAudio', 'numpy', 'opencv-python', 'cv2',
|
||||
'pydenticon', 'pyqtconsole', 'toxygen_wrapper'] # qweechat
|
||||
|
||||
def get_packages():
|
||||
directory = join_path(curr_directory(__file__), 'toxygen')
|
||||
directory = os.path.join(os.path.dirname(__file__), 'tox_wrapper')
|
||||
for root, dirs, files in os.walk(directory):
|
||||
packages = map(lambda d: 'toxygen.' + d, dirs)
|
||||
packages = ['toxygen'] + list(packages)
|
||||
|
@ -50,22 +20,6 @@ class InstallScript(install):
|
|||
|
||||
def run(self):
|
||||
install.run(self)
|
||||
try:
|
||||
if system() != 'Windows':
|
||||
call(["toxygen", "--clean"])
|
||||
except:
|
||||
try:
|
||||
params = list(filter(lambda x: x.startswith('--prefix='), sys.argv))
|
||||
if params:
|
||||
path = params[0][len('--prefix='):]
|
||||
if path[-1] not in ('/', '\\'):
|
||||
path += '/'
|
||||
path += 'bin/toxygen'
|
||||
if system() != 'Windows':
|
||||
call([path, "--clean"])
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
setup(name='Toxygen',
|
||||
version=version,
|
||||
|
@ -81,13 +35,13 @@ setup(name='Toxygen',
|
|||
include_package_data=True,
|
||||
classifiers=[
|
||||
'Programming Language :: Python :: 3 :: Only',
|
||||
'Programming Language :: Python :: 3.9',
|
||||
'Programming Language :: Python :: 3.11',
|
||||
],
|
||||
entry_points={
|
||||
'console_scripts': ['toxygen=toxygen.main:main']
|
||||
},
|
||||
cmdclass={
|
||||
'install': InstallScript
|
||||
'install': InstallScript,
|
||||
},
|
||||
zip_safe=False
|
||||
)
|
||||
|
|
|
@ -5,6 +5,7 @@ import traceback
|
|||
from random import shuffle
|
||||
import threading
|
||||
from time import sleep, time
|
||||
from copy import deepcopy
|
||||
|
||||
from gevent import monkey; monkey.patch_all(); del monkey # noqa
|
||||
import gevent
|
||||
|
@ -36,7 +37,7 @@ from middleware import threads
|
|||
import middleware.callbacks as callbacks
|
||||
import updater.updater as updater
|
||||
from middleware.tox_factory import tox_factory
|
||||
import wrapper.toxencryptsave as tox_encrypt_save
|
||||
import tox_wrapper.toxencryptsave as tox_encrypt_save
|
||||
import user_data.toxes
|
||||
from user_data import settings
|
||||
from user_data.settings import get_user_config_path, merge_args_into_settings
|
||||
|
@ -74,7 +75,7 @@ from ui.widgets_factory import WidgetsFactory
|
|||
from user_data.backup_service import BackupService
|
||||
import styles.style # TODO: dynamic loading
|
||||
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
@ -147,7 +148,6 @@ sSTYLE = """
|
|||
.QTextSingleLine {font-family Courier; weight: 75; }
|
||||
.QToolBar { font-weight: bold; }
|
||||
"""
|
||||
from copy import deepcopy
|
||||
class App:
|
||||
|
||||
def __init__(self, version, oArgs):
|
||||
|
@ -170,7 +170,8 @@ class App:
|
|||
self._app = self._settings = self._profile_manager = None
|
||||
self._plugin_loader = self._messenger = None
|
||||
self._tox = self._ms = self._init = self._main_loop = self._av_loop = None
|
||||
self._uri = self._toxes = self._tray = self._file_transfer_handler = self._contacts_provider = None
|
||||
self._uri = self._toxes = self._tray = None
|
||||
self._file_transfer_handler = self._contacts_provider = None
|
||||
self._friend_factory = self._calls_manager = None
|
||||
self._contacts_manager = self._smiley_loader = None
|
||||
self._group_peer_factory = self._tox_dns = self._backup_service = None
|
||||
|
@ -223,8 +224,6 @@ class App:
|
|||
|
||||
self._load_app_styles()
|
||||
if self._args.language != 'English':
|
||||
# > /var/local/src/toxygen/toxygen/app.py(303)_load_app_translations()->None
|
||||
# -> self._app.translator = translator
|
||||
# (Pdb) Fatal Python error: Segmentation fault
|
||||
self._load_app_translations()
|
||||
self._create_dependencies()
|
||||
|
@ -270,7 +269,7 @@ class App:
|
|||
LOG.debug("quit")
|
||||
self._stop_app()
|
||||
|
||||
# failsafe: segfaults on exit
|
||||
# failsafe: segfaults on exit - maybe it's Qt
|
||||
if hasattr(self, '_tox'):
|
||||
if self._tox and hasattr(self._tox, 'kill'):
|
||||
LOG.debug(f"quit: Killing {self._tox}")
|
||||
|
@ -739,7 +738,7 @@ class App:
|
|||
self._groups_service,
|
||||
history,
|
||||
self._contacts_provider)
|
||||
if False:
|
||||
if True: # try it
|
||||
self._tray = tray.init_tray(self._profile,
|
||||
self._settings,
|
||||
self._ms, self._toxes)
|
||||
|
@ -754,7 +753,7 @@ class App:
|
|||
self._calls_manager,
|
||||
self._groups_service, self._toxes, self)
|
||||
|
||||
if False:
|
||||
if True: # try it
|
||||
# the tray icon does not die with the app
|
||||
self._tray.show()
|
||||
self._ms.show()
|
||||
|
@ -979,7 +978,7 @@ class App:
|
|||
self._ms.log_console()
|
||||
|
||||
def _test_main(self):
|
||||
from toxygen_wrapper.wrapper_tests.tests_wrapper import main as tests_main
|
||||
from toxygen_tox_wrapper.tox_wrapper.tests.tests_wrapper import main as tests_main
|
||||
LOG.debug("_test_main")
|
||||
if not self._tox: return
|
||||
title = 'Extended Test Suite'
|
||||
|
|
|
@ -4,13 +4,16 @@ import time
|
|||
import threading
|
||||
import itertools
|
||||
|
||||
from wrapper.toxav_enums import *
|
||||
from tox_wrapper.toxav_enums import *
|
||||
from tox_wrapper.tests import support_testing as ts
|
||||
from tox_wrapper.tests.support_testing import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
from av import screen_sharing
|
||||
from av.call import Call
|
||||
import common.tox_save
|
||||
|
||||
from utils import ui as util_ui
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
from middleware.threads import invoke_in_main_thread
|
||||
from main import sleep
|
||||
from middleware.threads import BaseThread
|
||||
|
@ -18,18 +21,6 @@ from middleware.threads import BaseThread
|
|||
global LOG
|
||||
import logging
|
||||
LOG = logging.getLogger('app.'+__name__)
|
||||
# callbacks can be called in any thread so were being careful
|
||||
def LOG_ERROR(l): print('EROR< '+l)
|
||||
def LOG_WARN(l): print('WARN< '+l)
|
||||
def LOG_INFO(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 20-1
|
||||
if bIsVerbose: print('INFO< '+l)
|
||||
def LOG_DEBUG(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 10-1
|
||||
if bIsVerbose: print('DBUG< '+l)
|
||||
def LOG_TRACE(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel < 10-1
|
||||
pass # print('TRACE+ '+l)
|
||||
|
||||
TIMER_TIMEOUT = 30.0
|
||||
bSTREAM_CALLBACK = False
|
||||
|
@ -132,7 +123,7 @@ class AV(common.tox_save.ToxAvSave):
|
|||
self._toxav.answer(friend_number,
|
||||
self._audio_krate_tox_audio if audio_enabled else 0,
|
||||
self._audio_krate_tox_video if video_enabled else 0)
|
||||
except ArgumentError as e:
|
||||
except Exception as e:
|
||||
LOG.debug(f"AV accept_call error from {friend_number} {self._running}" +
|
||||
f"{e}")
|
||||
raise
|
||||
|
|
|
@ -11,9 +11,9 @@ except ImportError:
|
|||
certifi = None
|
||||
|
||||
from user_data.settings import get_user_config_path
|
||||
from wrapper_tests.support_testing import _get_nodes_path
|
||||
from wrapper_tests.support_http import download_url
|
||||
import wrapper_tests.support_testing as ts
|
||||
from tox_wrapper.tests.support_testing import _get_nodes_path
|
||||
from tox_wrapper.tests.support_http import download_url
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# -*- mode: python; indent-tabs-mode: nil; py-indent-offset: 4; coding: utf-8 -*-
|
||||
from user_data.settings import *
|
||||
from PyQt5 import QtCore, QtGui
|
||||
from wrapper.toxcore_enums_and_consts import TOX_PUBLIC_KEY_SIZE
|
||||
from tox_wrapper.toxcore_enums_and_consts import TOX_PUBLIC_KEY_SIZE
|
||||
import utils.util as util
|
||||
import common.event as event
|
||||
import contacts.common as common
|
||||
|
@ -117,7 +117,7 @@ class BaseContact:
|
|||
self._avatar_changed_event(avatar_path)
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
|
||||
def reset_avatar(self, generate_new):
|
||||
avatar_path = self.get_avatar_path()
|
||||
if os.path.isfile(avatar_path) and not avatar_path == self._get_default_avatar_path():
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
from PyQt5 import QtWidgets
|
||||
|
||||
import utils.ui as util_ui
|
||||
from wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
|
|
@ -7,17 +7,7 @@ import logging
|
|||
LOG = logging.getLogger(__name__)
|
||||
|
||||
# callbacks can be called in any thread so were being careful
|
||||
def LOG_ERROR(l): print('EROR< '+l)
|
||||
def LOG_WARN(l): print('WARN< '+l)
|
||||
def LOG_INFO(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 20-1
|
||||
if bIsVerbose: print('INFO< '+l)
|
||||
def LOG_DEBUG(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 10-1
|
||||
if bIsVerbose: print('DBUG< '+l)
|
||||
def LOG_TRACE(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel < 10-1
|
||||
pass # print('TRACE+ '+l)
|
||||
from av.calls import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
class ContactProvider(tox_save.ToxSave):
|
||||
|
||||
|
@ -52,10 +42,9 @@ class ContactProvider(tox_save.ToxSave):
|
|||
try:
|
||||
friend_numbers = self._tox.self_get_friend_list()
|
||||
except Exception as e:
|
||||
LOG_WARN(f"CP.get_all_friends NO {friend_numbers} {e} ")
|
||||
LOG_WARN(f"CP.get_all_friends EXCEPTION {e} ")
|
||||
return None
|
||||
friends = map(lambda n: self.get_friend_by_number(n), friend_numbers)
|
||||
|
||||
return list(friends)
|
||||
|
||||
# Groups
|
||||
|
@ -121,7 +110,7 @@ class ContactProvider(tox_save.ToxSave):
|
|||
return group
|
||||
group = self._group_factory.create_group_by_public_key(public_key)
|
||||
if group is None:
|
||||
LOG_ERROR(f"get_group_by_public_key NULL group public_key={get_group_by_chat_id}")
|
||||
LOG_ERROR(f"get_group_by_public_key NULL group public_key={public_key}")
|
||||
else:
|
||||
self._add_to_cache(public_key, group)
|
||||
|
||||
|
@ -139,8 +128,8 @@ class ContactProvider(tox_save.ToxSave):
|
|||
|
||||
def get_group_peer_by_public_key(self, group, public_key):
|
||||
peer = group.get_peer_by_public_key(public_key)
|
||||
|
||||
return self._get_group_peer(group, peer)
|
||||
if peer:
|
||||
return self._get_group_peer(group, peer)
|
||||
|
||||
# All contacts
|
||||
|
||||
|
|
|
@ -8,23 +8,19 @@ from messenger.messages import *
|
|||
from common.tox_save import ToxSave
|
||||
from contacts.group_peer_contact import GroupPeerContact
|
||||
from groups.group_peer import GroupChatPeer
|
||||
from middleware.callbacks import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
import tox_wrapper.toxcore_enums_and_consts as enums
|
||||
|
||||
# LOG=util.log
|
||||
global LOG
|
||||
import logging
|
||||
LOG = logging.getLogger('app.'+__name__)
|
||||
|
||||
def LOG_ERROR(l): print('ERROR_: '+l)
|
||||
def LOG_WARN(l): print('WARN_: '+l)
|
||||
def LOG_INFO(l): print('INFO_: '+l)
|
||||
def LOG_DEBUG(l): print('DEBUG_: '+l)
|
||||
def LOG_TRACE(l): pass # print('TRACE+ '+l)
|
||||
|
||||
|
||||
UINT32_MAX = 2 ** 32 -1
|
||||
|
||||
def set_contact_kind(contact):
|
||||
bInvite = len(contact.name) == TOX_PUBLIC_KEY_SIZE * 2 and \
|
||||
bInvite = len(contact.name) == enums.TOX_PUBLIC_KEY_SIZE * 2 and \
|
||||
contact.status_message == ''
|
||||
bBot = not bInvite and contact.name.lower().endswith(' bot')
|
||||
if type(contact) == Friend and bInvite:
|
||||
|
@ -377,8 +373,8 @@ class ContactsManager(ToxSave):
|
|||
"""
|
||||
Block user with specified tox id (or public key) - delete from friends list and ignore friend requests
|
||||
"""
|
||||
tox_id = tox_id[:TOX_PUBLIC_KEY_SIZE * 2]
|
||||
if tox_id == self._tox.self_get_address()[:TOX_PUBLIC_KEY_SIZE * 2]:
|
||||
tox_id = tox_id[:enums.TOX_PUBLIC_KEY_SIZE * 2]
|
||||
if tox_id == self._tox.self_get_address()[:enums.TOX_PUBLIC_KEY_SIZE * 2]:
|
||||
return
|
||||
if tox_id not in self._settings['blocked']:
|
||||
self._settings['blocked'].append(tox_id)
|
||||
|
@ -484,14 +480,14 @@ class ContactsManager(ToxSave):
|
|||
retval = ''
|
||||
try:
|
||||
message = message or 'Hello! Add me to your contact list please'
|
||||
if len(sToxPkOrId) == TOX_PUBLIC_KEY_SIZE * 2: # public key
|
||||
if len(sToxPkOrId) == enums.TOX_PUBLIC_KEY_SIZE * 2: # public key
|
||||
self.add_friend(sToxPkOrId)
|
||||
title = 'Friend added'
|
||||
text = 'Friend added without sending friend request'
|
||||
else:
|
||||
num = self._tox.friend_add(sToxPkOrId, message.encode('utf-8'))
|
||||
if num < UINT32_MAX:
|
||||
tox_pk = sToxPkOrId[:TOX_PUBLIC_KEY_SIZE * 2]
|
||||
tox_pk = sToxPkOrId[:enums.TOX_PUBLIC_KEY_SIZE * 2]
|
||||
self._add_friend(tox_pk)
|
||||
self.update_filtration()
|
||||
title = 'Friend added'
|
||||
|
|
|
@ -4,18 +4,14 @@ from contacts import contact
|
|||
from contacts.contact_menu import GroupMenuGenerator
|
||||
import utils.util as util
|
||||
from groups.group_peer import GroupChatPeer
|
||||
from wrapper import toxcore_enums_and_consts as constants
|
||||
from tox_wrapper import toxcore_enums_and_consts as constants
|
||||
from common.tox_save import ToxSave
|
||||
from groups.group_ban import GroupBan
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
LOG = logging.getLogger(__name__)
|
||||
def LOG_ERROR(l): print('ERROR_: '+l)
|
||||
def LOG_WARN(l): print('WARN_: '+l)
|
||||
def LOG_INFO(l): print('INFO_: '+l)
|
||||
def LOG_DEBUG(l): print('DEBUG_: '+l)
|
||||
def LOG_TRACE(l): pass # print('TRACE+ '+l)
|
||||
from av.calls import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
class GroupChat(contact.Contact, ToxSave):
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
from contacts.group_chat import GroupChat
|
||||
from common.tox_save import ToxSave
|
||||
import wrapper.toxcore_enums_and_consts as constants
|
||||
import tox_wrapper.toxcore_enums_and_consts as constants
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
|
1
toxygen/file_transfers/.#file_transfers.py
Symbolic link
1
toxygen/file_transfers/.#file_transfers.py
Symbolic link
|
@ -0,0 +1 @@
|
|||
root@devuan.29604:1700913818
|
|
@ -1,11 +1,13 @@
|
|||
import os
|
||||
from os import chdir, remove, rename
|
||||
from os.path import basename, getsize, exists, dirname
|
||||
from time import time
|
||||
|
||||
from common.event import Event
|
||||
from middleware.threads import invoke_in_main_thread
|
||||
from wrapper.tox import Tox
|
||||
from wrapper.toxcore_enums_and_consts import TOX_FILE_KIND, TOX_FILE_CONTROL
|
||||
from tox_wrapper.tox import Tox
|
||||
from tox_wrapper.toxcore_enums_and_consts import TOX_FILE_KIND, TOX_FILE_CONTROL
|
||||
from middleware.callbacks import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
FILE_TRANSFER_STATE = {
|
||||
'RUNNING': 0,
|
||||
|
@ -172,11 +174,14 @@ class SendAvatar(SendTransfer):
|
|||
"""
|
||||
|
||||
def __init__(self, path, tox, friend_number):
|
||||
if path is None:
|
||||
LOG_DEBUG(f"SendAvatar path={path} friend_number={friend_number}")
|
||||
if path is None or not os.path.exists(path):
|
||||
avatar_hash = None
|
||||
else:
|
||||
with open(path, 'rb') as fl:
|
||||
avatar_hash = Tox.hash(fl.read())
|
||||
data=fl.read()
|
||||
LOG_DEBUG(f"SendAvatar data={data} type={type(data)}")
|
||||
avatar_hash = tox.hash(data, None)
|
||||
super().__init__(path, tox, friend_number, TOX_FILE_KIND['AVATAR'], avatar_hash)
|
||||
|
||||
|
||||
|
@ -218,8 +223,8 @@ class SendFromFileBuffer(SendTransfer):
|
|||
def send_chunk(self, position, size):
|
||||
super().send_chunk(position, size)
|
||||
if not size:
|
||||
chdir(dirname(self._path))
|
||||
remove(self._path)
|
||||
os.chdir(dirname(self._path))
|
||||
os.remove(self._path)
|
||||
|
||||
# Receive file
|
||||
|
||||
|
@ -311,7 +316,6 @@ class ReceiveAvatar(ReceiveTransfer):
|
|||
Get friend's avatar. Doesn't need file transfer item
|
||||
"""
|
||||
MAX_AVATAR_SIZE = 512 * 1024
|
||||
|
||||
def __init__(self, path, tox, friend_number, size, file_number):
|
||||
full_path = path + '.tmp'
|
||||
super().__init__(full_path, tox, friend_number, size, file_number)
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
# -*- mode: python; indent-tabs-mode: nil; py-indent-offset: 4; coding: utf-8 -*-
|
||||
from copy import deepcopy
|
||||
|
||||
from messenger.messages import *
|
||||
from file_transfers.file_transfers import SendAvatar, is_inline
|
||||
from ui.contact_items import *
|
||||
import utils.util as util
|
||||
from common.tox_save import ToxSave
|
||||
from wrapper_tests.support_testing import assert_main_thread
|
||||
from copy import deepcopy
|
||||
|
||||
from middleware.callbacks import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
# LOG=util.log
|
||||
global LOG
|
||||
|
@ -36,6 +39,7 @@ class FileTransfersHandler(ToxSave):
|
|||
# File transfers support
|
||||
|
||||
def incoming_file_transfer(self, friend_number, file_number, size, file_name):
|
||||
# main thread
|
||||
"""
|
||||
New transfer
|
||||
:param friend_number: number of friend who sent file
|
||||
|
@ -44,12 +48,15 @@ class FileTransfersHandler(ToxSave):
|
|||
:param file_name: file name without path
|
||||
"""
|
||||
friend = self._get_friend_by_number(friend_number)
|
||||
if friend is None: return None
|
||||
if friend is None:
|
||||
LOG.info(f'incoming_file_handler Friend NULL friend_number={friend_number}')
|
||||
return None
|
||||
auto = self._settings['allow_auto_accept'] and friend.tox_id in self._settings['auto_accept_from_friends']
|
||||
inline = is_inline(file_name) and self._settings['allow_inline']
|
||||
inline = False # ?is_inline(file_name) and self._settings['allow_inline']
|
||||
file_id = self._tox.file_get_file_id(friend_number, file_number)
|
||||
accepted = True
|
||||
if file_id in self._paused_file_transfers:
|
||||
LOG_INFO(f'incoming_file_handler paused friend_number={friend_number}')
|
||||
(path, ft_friend_number, is_incoming, start_position) = self._paused_file_transfers[file_id]
|
||||
pos = start_position if os.path.exists(path) else 0
|
||||
if pos >= size:
|
||||
|
@ -60,16 +67,22 @@ class FileTransfersHandler(ToxSave):
|
|||
friend, accepted, size, file_name, file_number)
|
||||
self.accept_transfer(path, friend_number, file_number, size, False, pos)
|
||||
elif inline and size < 1024 * 1024:
|
||||
LOG_INFO(f'incoming_file_handler small friend_number={friend_number}')
|
||||
self._file_transfers_message_service.add_incoming_transfer_message(
|
||||
friend, accepted, size, file_name, file_number)
|
||||
self.accept_transfer('', friend_number, file_number, size, True)
|
||||
elif auto:
|
||||
# accepted is really started
|
||||
LOG_INFO(f'incoming_file_handler auto friend_number={friend_number}')
|
||||
path = self._settings['auto_accept_path'] or util.curr_directory()
|
||||
self._file_transfers_message_service.add_incoming_transfer_message(
|
||||
friend, accepted, size, file_name, file_number)
|
||||
self.accept_transfer(path + '/' + file_name, friend_number, file_number, size)
|
||||
else:
|
||||
LOG_INFO(f'incoming_file_handler reject friend_number={friend_number}')
|
||||
accepted = False
|
||||
# FixME: need GUI ask
|
||||
# accepted is really started
|
||||
self._file_transfers_message_service.add_incoming_transfer_message(
|
||||
friend, accepted, size, file_name, file_number)
|
||||
|
||||
|
@ -156,12 +169,15 @@ class FileTransfersHandler(ToxSave):
|
|||
|
||||
def send_inline(self, data, file_name, friend_number, is_resend=False):
|
||||
friend = self._get_friend_by_number(friend_number)
|
||||
if friend is None: return None
|
||||
if friend is None:
|
||||
LOG_WARN("fsend_inline Error friend is None file_name: {file_name}")
|
||||
return
|
||||
if friend.status is None and not is_resend:
|
||||
self._file_transfers_message_service.add_unsent_file_message(friend, file_name, data)
|
||||
return
|
||||
elif friend.status is None and is_resend:
|
||||
raise RuntimeError()
|
||||
LOG_WARN("fsend_inline Error friend.status is None file_name: {file_name}")
|
||||
return
|
||||
st = SendFromBuffer(self._tox, friend.number, data, file_name)
|
||||
self._send_file_add_set_handlers(st, friend, file_name, True)
|
||||
|
||||
|
@ -179,7 +195,7 @@ class FileTransfersHandler(ToxSave):
|
|||
self._file_transfers_message_service.add_unsent_file_message(friend, path, None)
|
||||
return
|
||||
elif friend.status is None and is_resend:
|
||||
LOG.error('Error in sending')
|
||||
LOG_WARN('Error in sending')
|
||||
return
|
||||
st = SendTransfer(path, self._tox, friend_number, TOX_FILE_KIND['DATA'], file_id)
|
||||
file_name = os.path.basename(path)
|
||||
|
@ -236,7 +252,7 @@ class FileTransfersHandler(ToxSave):
|
|||
self.send_file(path, friend_number, True, key)
|
||||
del self._paused_file_transfers[key]
|
||||
except Exception as ex:
|
||||
LOG.error('Exception in file sending: ' + str(ex))
|
||||
LOG_ERROR('send_files EXCEPTION in file sending: ' + str(ex))
|
||||
|
||||
def friend_exit(self, friend_number):
|
||||
# RuntimeError: dictionary changed size during iteration
|
||||
|
@ -248,9 +264,21 @@ class FileTransfersHandler(ToxSave):
|
|||
continue
|
||||
ft = self._file_transfers[(friend_num, file_num)]
|
||||
if type(ft) is SendTransfer:
|
||||
self._paused_file_transfers[ft.file_id] = [ft.path, friend_num, False, -1]
|
||||
try:
|
||||
file_id = ft.file_id
|
||||
except Exception as e:
|
||||
LOG_WARN("friend_exit SendTransfer Error getting file_id: {e}")
|
||||
# drop through
|
||||
else:
|
||||
self._paused_file_transfers[file_id] = [ft.path, friend_num, False, -1]
|
||||
elif type(ft) is ReceiveTransfer and ft.state != FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']:
|
||||
self._paused_file_transfers[ft.file_id] = [ft.path, friend_num, True, ft.total_size()]
|
||||
try:
|
||||
file_id = ft.file_id
|
||||
except Exception as e:
|
||||
LOG_WARN("friend_exit ReceiveTransfer Error getting file_id: {e}")
|
||||
# drop through
|
||||
else:
|
||||
self._paused_file_transfers[file_id] = [ft.path, friend_num, True, ft.total_size()]
|
||||
self.cancel_transfer(friend_num, file_num, True)
|
||||
|
||||
# Avatars support
|
||||
|
@ -260,15 +288,24 @@ class FileTransfersHandler(ToxSave):
|
|||
:param friend_number: number of friend who should get new avatar
|
||||
:param avatar_path: path to avatar or None if reset
|
||||
"""
|
||||
return
|
||||
if (avatar_path, friend_number,) in self.lBlockAvatars:
|
||||
return
|
||||
|
||||
if friend_number is None:
|
||||
LOG_WARN(f"send_avatar friend_number NULL {friend_number}")
|
||||
return
|
||||
if avatar_path and type(avatar_path) != str:
|
||||
LOG_WARN(f"send_avatar avatar_path type {type(avatar_path)}")
|
||||
return
|
||||
LOG_INFO(f"send_avatar avatar_path={avatar_path} friend_number={friend_number}")
|
||||
try:
|
||||
# self NOT missing - who's self?
|
||||
sa = SendAvatar(avatar_path, self._tox, friend_number)
|
||||
LOG_INFO(f"send_avatar avatar_path={avatar_path} sa={sa}")
|
||||
self._file_transfers[(friend_number, sa.file_number)] = sa
|
||||
except Exception as e:
|
||||
# ArgumentError('This client is currently not connected to the friend.')
|
||||
LOG.error(f"send_avatar {e}")
|
||||
LOG_WARN(f"send_avatar EXCEPTION {e}")
|
||||
self.lBlockAvatars.append( (avatar_path, friend_number,) )
|
||||
|
||||
def incoming_avatar(self, friend_number, file_number, size):
|
||||
|
|
|
@ -6,11 +6,7 @@ global LOG
|
|||
import logging
|
||||
LOG = logging.getLogger('app.'+__name__)
|
||||
|
||||
def LOG_ERROR(l): print('ERROR_: '+l)
|
||||
def LOG_WARN(l): print('WARN_: '+l)
|
||||
def LOG_INFO(l): print('INFO_: '+l)
|
||||
def LOG_DEBUG(l): print('DEBUG_: '+l)
|
||||
def LOG_TRACE(l): pass # print('TRACE+ '+l)
|
||||
from av.calls import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
class FileTransfersMessagesService:
|
||||
|
||||
|
@ -23,6 +19,7 @@ class FileTransfersMessagesService:
|
|||
def add_incoming_transfer_message(self, friend, accepted, size, file_name, file_number):
|
||||
assert friend
|
||||
author = MessageAuthor(friend.name, MESSAGE_AUTHOR['FRIEND'])
|
||||
# accepted is really started
|
||||
status = FILE_TRANSFER_STATE['RUNNING'] if accepted else FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']
|
||||
tm = TransferMessage(author, util.get_unix_time(), status, size, file_name, friend.number, file_number)
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ class GroupChatPeer:
|
|||
is_current_user = property(get_is_current_user)
|
||||
|
||||
def get_status_message(self):
|
||||
return self._peer_status_message
|
||||
return self._status_message
|
||||
|
||||
status_message = property(get_status_message)
|
||||
|
||||
|
|
|
@ -4,9 +4,9 @@ import common.tox_save as tox_save
|
|||
import utils.ui as util_ui
|
||||
from groups.peers_list import PeersListGenerator
|
||||
from groups.group_invite import GroupInvite
|
||||
import wrapper.toxcore_enums_and_consts as constants
|
||||
from wrapper.toxcore_enums_and_consts import *
|
||||
from wrapper.tox import UINT32_MAX
|
||||
import tox_wrapper.toxcore_enums_and_consts as constants
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.tox import UINT32_MAX
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from ui.group_peers_list import PeerItem, PeerTypeItem
|
||||
from wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
from ui.widgets import *
|
||||
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
import sys
|
||||
import os
|
||||
import app
|
||||
import argparse
|
||||
import logging
|
||||
import signal
|
||||
|
||||
|
@ -12,7 +11,7 @@ faulthandler.enable()
|
|||
import warnings
|
||||
warnings.filterwarnings('ignore')
|
||||
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
try:
|
||||
from trepan.interfaces import server as Mserver
|
||||
from trepan.api import debug
|
||||
|
@ -182,7 +181,6 @@ def main_parser(_=None, iMode=2):
|
|||
audio = setup_default_audio()
|
||||
default_video = setup_default_video()
|
||||
|
||||
# parser = argparse.ArgumentParser()
|
||||
parser = ts.oMainArgparser()
|
||||
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')
|
||||
|
@ -240,10 +238,10 @@ def main_parser(_=None, iMode=2):
|
|||
parser.add_argument('--theme', type=str, default='default',
|
||||
choices=['dark', 'default'],
|
||||
help='Theme - style of UI')
|
||||
parser.add_argument('--sleep', type=str, default='time',
|
||||
# could expand this to tk, gtk, gevent...
|
||||
choices=['qt','gevent','time'],
|
||||
help='Sleep method - one of qt, gevent , time')
|
||||
# parser.add_argument('--sleep', type=str, default='time',
|
||||
# # could expand this to tk, gtk, gevent...
|
||||
# choices=['qt','gevent','time'],
|
||||
# help='Sleep method - one of qt, gevent , time')
|
||||
supported_languages = settings.supported_languages()
|
||||
parser.add_argument('--language', type=str, default='English',
|
||||
choices=supported_languages,
|
||||
|
@ -318,6 +316,7 @@ def main(lArgs):
|
|||
aArgs = A()
|
||||
for key in oArgs.__dict__.keys():
|
||||
setattr(aArgs, key, getattr(oArgs, key))
|
||||
|
||||
#setattr(aArgs, 'video', setup_video(oArgs))
|
||||
aArgs.video = setup_video(oArgs)
|
||||
assert 'video' in aArgs.__dict__
|
||||
|
@ -327,10 +326,10 @@ def main(lArgs):
|
|||
assert 'audio' in aArgs.__dict__
|
||||
oArgs = aArgs
|
||||
|
||||
toxygen = app.App(__version__, oArgs)
|
||||
oApp = app.App(__version__, oArgs)
|
||||
# for pyqtconsole
|
||||
__builtins__.app = toxygen
|
||||
i = toxygen.iMain()
|
||||
__builtins__.app = oApp
|
||||
i = oApp.iMain()
|
||||
return i
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -83,7 +83,7 @@ class Message:
|
|||
|
||||
def _create_widget(self, *args):
|
||||
# overridden
|
||||
pass
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def _get_id():
|
||||
|
|
|
@ -3,8 +3,8 @@ import common.tox_save as tox_save
|
|||
import utils.ui as util_ui
|
||||
|
||||
from messenger.messages import *
|
||||
from wrapper_tests.support_testing import assert_main_thread
|
||||
from wrapper.toxcore_enums_and_consts import TOX_MAX_MESSAGE_LENGTH
|
||||
from tox_wrapper.tests.support_testing import assert_main_thread
|
||||
from tox_wrapper.toxcore_enums_and_consts import TOX_MAX_MESSAGE_LENGTH
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
|
|
@ -3,9 +3,9 @@ import sys
|
|||
import os
|
||||
import threading
|
||||
from PyQt5 import QtGui
|
||||
from wrapper.toxcore_enums_and_consts import *
|
||||
from wrapper.toxav_enums import *
|
||||
from wrapper.tox import bin_to_string
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.toxav_enums import *
|
||||
from tox_wrapper.tox import bin_to_string
|
||||
import utils.ui as util_ui
|
||||
import utils.util as util
|
||||
from middleware.threads import invoke_in_main_thread, execute
|
||||
|
@ -15,17 +15,17 @@ from datetime import datetime
|
|||
|
||||
iMAX_INT32 = 4294967295
|
||||
# callbacks can be called in any thread so were being careful
|
||||
def LOG_ERROR(l): print('EROR< '+l)
|
||||
def LOG_WARN(l): print('WARN< '+l)
|
||||
def LOG_ERROR(l): print(f"EROR. {l}")
|
||||
def LOG_WARN(l): print(f"WARN. {l}")
|
||||
def LOG_INFO(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 20-1
|
||||
if bIsVerbose: print('INFO< '+l)
|
||||
bIsVerbose = not hasattr(__builtins__, 'app') or app.oArgs.loglevel <= 20-1
|
||||
if bIsVerbose: print(f"INFO. {l}")
|
||||
def LOG_DEBUG(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 10-1
|
||||
if bIsVerbose: print('DBUG< '+l)
|
||||
bIsVerbose = not hasattr(__builtins__, 'app') or app.oArgs.loglevel <= 10-1
|
||||
if bIsVerbose: print(f"DBUG. {l}")
|
||||
def LOG_TRACE(l):
|
||||
bIsVerbose = hasattr(__builtins__, 'app') and app.oArgs.loglevel < 10-1
|
||||
pass # print('TRACE+ '+l)
|
||||
bIsVerbose = not hasattr(__builtins__, 'app') or app.oArgs.loglevel < 10-1
|
||||
pass # print(f"TRACE. {l}")
|
||||
|
||||
global aTIMES
|
||||
aTIMES=dict()
|
||||
|
@ -102,7 +102,7 @@ def friend_status(contacts_manager, file_transfer_handler, profile, settings):
|
|||
"""
|
||||
Check friend's status (none, busy, away)
|
||||
"""
|
||||
LOG_DEBUG(f"Friend's #{friend_number} status changed")
|
||||
LOG_INFO(f"Friend's #{friend_number} status changed")
|
||||
key = f"friend_number {friend_number}"
|
||||
if bTooSoon(key, sSlot, 10): return
|
||||
friend = contacts_manager.get_friend_by_number(friend_number)
|
||||
|
@ -240,7 +240,7 @@ def tox_file_recv(window, tray, profile, file_transfer_handler, contacts_manager
|
|||
"""
|
||||
def wrapped(tox, friend_number, file_number, file_type, size, file_name, file_name_size, user_data):
|
||||
if file_type == TOX_FILE_KIND['DATA']:
|
||||
LOG_DEBUG(f'file_transfer_handler File')
|
||||
LOG_INFO(f'file_transfer_handler File friend_number={friend_number}')
|
||||
try:
|
||||
file_name = str(file_name[:file_name_size], 'utf-8')
|
||||
except:
|
||||
|
|
|
@ -6,8 +6,8 @@ from PyQt5 import QtCore
|
|||
|
||||
from bootstrap.bootstrap import *
|
||||
from bootstrap.bootstrap import download_nodes_list
|
||||
from wrapper.toxcore_enums_and_consts import TOX_USER_STATUS, TOX_CONNECTION
|
||||
import wrapper_tests.support_testing as ts
|
||||
from tox_wrapper.toxcore_enums_and_consts import TOX_USER_STATUS, TOX_CONNECTION
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
from utils import util
|
||||
|
||||
import time
|
||||
|
@ -86,7 +86,7 @@ class InitThread(BaseThread):
|
|||
|
||||
def run(self):
|
||||
# DBUG+ InitThread run: ERROR name 'ts' is not defined
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
LOG_DEBUG('InitThread run: ')
|
||||
try:
|
||||
if self._is_first_start and ts.bAreWeConnected() and \
|
||||
|
|
|
@ -1,59 +1,25 @@
|
|||
# -*- mode: python; indent-tabs-mode: nil; py-indent-offset: 4; coding: utf-8 -*-
|
||||
import user_data.settings
|
||||
import wrapper.tox
|
||||
import wrapper.toxcore_enums_and_consts as enums
|
||||
|
||||
import ctypes
|
||||
import traceback
|
||||
import os
|
||||
from ctypes import *
|
||||
|
||||
import user_data.settings
|
||||
import tox_wrapper.tox
|
||||
import tox_wrapper.toxcore_enums_and_consts as enums
|
||||
from tox_wrapper.tests import support_testing as ts
|
||||
# callbacks can be called in any thread so were being careful
|
||||
# tox.py can be called by callbacks
|
||||
from tox_wrapper.tests.support_testing import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
LOG = logging.getLogger('app.'+'tox_factory')
|
||||
|
||||
from ctypes import *
|
||||
from utils import util
|
||||
from utils import ui as util_ui
|
||||
|
||||
# callbacks can be called in any thread so were being careful
|
||||
# tox.py can be called by callbacks
|
||||
def LOG_ERROR(a): print('EROR> '+a)
|
||||
def LOG_WARN(a): print('WARN> '+a)
|
||||
def LOG_INFO(a):
|
||||
bVERBOSE = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 20
|
||||
if bVERBOSE: print('INFO> '+a)
|
||||
def LOG_DEBUG(a):
|
||||
bVERBOSE = hasattr(__builtins__, 'app') and app.oArgs.loglevel <= 10
|
||||
if bVERBOSE: print('DBUG> '+a)
|
||||
def LOG_TRACE(a):
|
||||
bVERBOSE = hasattr(__builtins__, 'app') and app.oArgs.loglevel < 10
|
||||
if bVERBOSE: print('TRAC> '+a)
|
||||
def LOG_LOG(a): print('TRAC> '+a)
|
||||
|
||||
def tox_log_cb(iTox, level, file, line, func, message, *args):
|
||||
"""
|
||||
* @param level The severity of the log message.
|
||||
* @param file The source file from which the message originated.
|
||||
* @param line The source line from which the message originated.
|
||||
* @param func The function from which the message originated.
|
||||
* @param message The log message.
|
||||
* @param user_data The user data pointer passed to tox_new in options.
|
||||
"""
|
||||
try:
|
||||
file = str(file, 'UTF-8')
|
||||
# root WARNING 3network.c#944:b'send_packet'attempted to send message with network family 10 (probably IPv6) on IPv4 socket
|
||||
if file == 'network.c' and line in [944, 660]: return
|
||||
func = str(func, 'UTF-8')
|
||||
message = str(message, 'UTF-8')
|
||||
message = f"{file}#{line}:{func} {message}"
|
||||
LOG_LOG(message)
|
||||
except Exception as e:
|
||||
LOG_ERROR(f"tox_log_cb {e}")
|
||||
|
||||
#tox_log_handler (context=0x24763d0,
|
||||
# level=LOGGER_LEVEL_TRACE, file=0x7fffe599fb99 "TCP_common.c", line=203,
|
||||
# func=0x7fffe599fc50 <__func__.2> "read_TCP_packet",
|
||||
# message=0x7fffba7fabd0 "recv buffer has 0 bytes, but requested 10 bytes",
|
||||
# userdata=0x0) at /var/local/src/c-toxcore/toxcore/tox.c:78
|
||||
|
||||
def tox_factory(data=None, settings=None, args=None, app=None):
|
||||
"""
|
||||
|
@ -68,7 +34,7 @@ def tox_factory(data=None, settings=None, args=None, app=None):
|
|||
user_data.settings.clean_settings(settings)
|
||||
|
||||
try:
|
||||
tox_options = wrapper.tox.Tox.options_new()
|
||||
tox_options = tox_wrapper.tox.Tox.options_new()
|
||||
tox_options.contents.ipv6_enabled = settings['ipv6_enabled']
|
||||
tox_options.contents.udp_enabled = settings['udp_enabled']
|
||||
tox_options.contents.proxy_type = int(settings['proxy_type'])
|
||||
|
@ -99,27 +65,28 @@ def tox_factory(data=None, settings=None, args=None, app=None):
|
|||
tox_options.contents.ipv6_enabled = False
|
||||
tox_options.contents.hole_punching_enabled = False
|
||||
|
||||
LOG.debug("wrapper.tox.Tox settings: " +repr(settings))
|
||||
LOG.debug("tox_wrapper.tox.Tox settings: " +repr(settings))
|
||||
|
||||
if 'trace_enabled' in settings and settings['trace_enabled']:
|
||||
LOG_INFO("settings['trace_enabled' disabled" )
|
||||
if 'trace_enabled' in settings and not settings['trace_enabled']:
|
||||
LOG_DEBUG("settings['trace_enabled' disabled" )
|
||||
elif tox_options._options_pointer:
|
||||
c_callback = CFUNCTYPE(None, c_void_p, c_int, c_char_p, c_int, c_char_p, c_char_p, c_void_p)
|
||||
tox_options.self_logger_cb = c_callback(tox_log_cb)
|
||||
wrapper.tox.Tox.libtoxcore.tox_options_set_log_callback(
|
||||
tox_options.self_logger_cb = c_callback(ts.tox_log_cb)
|
||||
tox_wrapper.tox.Tox.libtoxcore.tox_options_set_log_callback(
|
||||
tox_options._options_pointer,
|
||||
tox_options.self_logger_cb)
|
||||
LOG_INFO("c-toxcore trace_enabled enabled" )
|
||||
else:
|
||||
LOG_WARN("No tox_options._options_pointer to add self_logger_cb" )
|
||||
|
||||
retval = wrapper.tox.Tox(tox_options)
|
||||
retval = tox_wrapper.tox.Tox(tox_options)
|
||||
except Exception as e:
|
||||
if app and hasattr(app, '_log'):
|
||||
pass
|
||||
LOG_ERROR(f"wrapper.tox.Tox failed: {e}")
|
||||
LOG_ERROR(f"tox_wrapper.tox.Tox failed: {e}")
|
||||
LOG_WARN(traceback.format_exc())
|
||||
raise
|
||||
|
||||
if app and hasattr(app, '_log'):
|
||||
app._log("DEBUG: wrapper.tox.Tox succeeded")
|
||||
app._log("DEBUG: tox_wrapper.tox.Tox succeeded")
|
||||
return retval
|
||||
|
|
|
@ -32,15 +32,15 @@ def LOG_debug(a): print('DBUG_ '+a)
|
|||
def LOG_trace(a): pass # print('TRAC_ '+a)
|
||||
|
||||
from middleware.tox_factory import tox_factory
|
||||
import wrapper
|
||||
import wrapper.toxcore_enums_and_consts as enums
|
||||
from wrapper.toxcore_enums_and_consts import TOX_CONNECTION, TOX_USER_STATUS, \
|
||||
import tox_wrapper
|
||||
import tox_wrapper.toxcore_enums_and_consts as enums
|
||||
from tox_wrapper.toxcore_enums_and_consts import TOX_CONNECTION, TOX_USER_STATUS, \
|
||||
TOX_MESSAGE_TYPE, TOX_PUBLIC_KEY_SIZE, TOX_FILE_CONTROL
|
||||
import user_data
|
||||
from wrapper.libtox import LibToxCore
|
||||
import wrapper_tests.support_testing as ts
|
||||
from wrapper_tests.support_testing import oMainArgparser
|
||||
from wrapper_tests.support_testing import logging_toxygen_echo
|
||||
from tox_wrapper.libtox import LibToxCore
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
from tox_wrapper.tests.support_testing import oMainArgparser
|
||||
from tox_wrapper.tests.support_testing import logging_toxygen_echo
|
||||
|
||||
def sleep(fSec):
|
||||
if 'QtCore' in globals():
|
||||
|
@ -57,7 +57,7 @@ except ImportError as e:
|
|||
# logging.log(logging.DEBUG, f"coloredlogs not available: {e}")
|
||||
coloredlogs = None
|
||||
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
if 'USER' in os.environ:
|
||||
sDATA_FILE = '/tmp/logging_toxygen_' +os.environ['USER'] +'.tox'
|
||||
elif 'USERNAME' in os.environ:
|
||||
|
@ -71,7 +71,7 @@ iDHT_TRY = 0
|
|||
|
||||
#?SERVER = lLOCAL[-1]
|
||||
|
||||
class AV(wrapper.tox.ToxAV):
|
||||
class AV(tox_wrapper.tox.ToxAV):
|
||||
def __init__(self, core):
|
||||
super(AV, self).__init__(core)
|
||||
self.core = self.get_tox()
|
||||
|
@ -149,7 +149,7 @@ class EchoBot():
|
|||
message_data_size,
|
||||
*largs):
|
||||
key = ''.join(chr(x) for x in public_key[:TOX_PUBLIC_KEY_SIZE])
|
||||
sPk = wrapper.tox.bin_to_string(key, TOX_PUBLIC_KEY_SIZE)
|
||||
sPk = tox_wrapper.tox.bin_to_string(key, TOX_PUBLIC_KEY_SIZE)
|
||||
sMd = str(message_data, 'UTF-8')
|
||||
LOG.debug('on_friend_request ' +sPk +' ' +sMd)
|
||||
self.on_friend_request(sPk, sMd)
|
||||
|
@ -339,7 +339,7 @@ def iMain(oArgs):
|
|||
oTox = tox_factory(data=opts.savedata_data,
|
||||
settings=opts, args=oArgs, app=None)
|
||||
else:
|
||||
oTox = wrapper.tox.Tox(opts)
|
||||
oTox = tox_wrapper.tox.Tox(opts)
|
||||
t = EchoBot(oTox)
|
||||
t._oargs = oArgs
|
||||
t.start()
|
||||
|
@ -358,7 +358,7 @@ def iMain(oArgs):
|
|||
return iRet
|
||||
|
||||
def oToxygenToxOptions(oArgs, data=None):
|
||||
tox_options = wrapper.tox.Tox.options_new()
|
||||
tox_options = tox_wrapper.tox.Tox.options_new()
|
||||
|
||||
tox_options.contents.local_discovery_enabled = False
|
||||
tox_options.contents.dht_announcements_enabled = False
|
||||
|
|
|
@ -36,11 +36,11 @@ try:
|
|||
except ImportError as e:
|
||||
nmap = False
|
||||
|
||||
import wrapper
|
||||
from wrapper.toxcore_enums_and_consts import TOX_CONNECTION, TOX_USER_STATUS
|
||||
import tox_wrapper
|
||||
from tox_wrapper.toxcore_enums_and_consts import TOX_CONNECTION, TOX_USER_STATUS
|
||||
|
||||
from wrapper_tests.support_http import bAreWeConnected
|
||||
from wrapper_tests.support_onions import (is_valid_fingerprint,
|
||||
from tox_wrapper.tests.support_http import bAreWeConnected
|
||||
from tox_wrapper.tests.support_onions import (is_valid_fingerprint,
|
||||
lIntroductionPoints,
|
||||
oGetStemController,
|
||||
sMapaddressResolv, sTorResolve)
|
||||
|
@ -245,7 +245,7 @@ def tox_log_cb(level, filename, line, func, message, *args):
|
|||
|
||||
def vAddLoggerCallback(tox_options, callback=None):
|
||||
if callback is None:
|
||||
wrapper.tox.Tox.libtoxcore.tox_options_set_log_callback(
|
||||
tox_wrapper.tox.Tox.libtoxcore.tox_options_set_log_callback(
|
||||
tox_options._options_pointer,
|
||||
POINTER(None)())
|
||||
tox_options.self_logger_cb = None
|
||||
|
@ -253,7 +253,7 @@ def vAddLoggerCallback(tox_options, callback=None):
|
|||
|
||||
c_callback = CFUNCTYPE(None, c_void_p, c_int, c_char_p, c_int, c_char_p, c_char_p, c_void_p)
|
||||
tox_options.self_logger_cb = c_callback(callback)
|
||||
wrapper.tox.Tox.libtoxcore.tox_options_set_log_callback(
|
||||
tox_wrapper.tox.Tox.libtoxcore.tox_options_set_log_callback(
|
||||
tox_options._options_pointer,
|
||||
tox_options.self_logger_cb)
|
||||
|
||||
|
|
|
@ -854,14 +854,14 @@ id(42)
|
|||
cmd = textwrap.dedent('''
|
||||
class MyList(list):
|
||||
def __init__(self):
|
||||
super().__init__() # wrapper_call()
|
||||
super().__init__() # tox_wrapper_call()
|
||||
|
||||
id("first break point")
|
||||
l = MyList()
|
||||
''')
|
||||
# Verify with "py-bt":
|
||||
gdb_output = self.get_stack_trace(cmd,
|
||||
cmds_after_breakpoint=['break wrapper_call', 'continue', 'py-bt'])
|
||||
cmds_after_breakpoint=['break tox_wrapper_call', 'continue', 'py-bt'])
|
||||
self.assertRegex(gdb_output,
|
||||
r"<method-wrapper u?'__init__' of MyList object at ")
|
||||
|
||||
|
|
|
@ -67,10 +67,10 @@ except ImportError as e:
|
|||
logging.log(logging.DEBUG, f"color_runner not available: {e}")
|
||||
color_runner = None
|
||||
|
||||
import wrapper
|
||||
import wrapper.toxcore_enums_and_consts as enums
|
||||
from wrapper.tox import Tox
|
||||
from wrapper.toxcore_enums_and_consts import (TOX_ADDRESS_SIZE, TOX_CONNECTION,
|
||||
import tox_wrapper
|
||||
import tox_wrapper.toxcore_enums_and_consts as enums
|
||||
from tox_wrapper.tox import Tox
|
||||
from tox_wrapper.toxcore_enums_and_consts import (TOX_ADDRESS_SIZE, TOX_CONNECTION,
|
||||
TOX_FILE_CONTROL,
|
||||
TOX_MESSAGE_TYPE,
|
||||
TOX_SECRET_KEY_SIZE,
|
||||
|
@ -79,7 +79,7 @@ from wrapper.toxcore_enums_and_consts import (TOX_ADDRESS_SIZE, TOX_CONNECTION,
|
|||
try:
|
||||
import support_testing as ts
|
||||
except ImportError:
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
|
||||
try:
|
||||
from tests.toxygen_tests import test_sound_notification
|
||||
|
@ -1788,7 +1788,7 @@ def iMain(oArgs):
|
|||
|
||||
def oToxygenToxOptions(oArgs):
|
||||
data = None
|
||||
tox_options = wrapper.tox.Tox.options_new()
|
||||
tox_options = tox_wrapper.tox.Tox.options_new()
|
||||
if oArgs.proxy_type:
|
||||
tox_options.contents.proxy_type = int(oArgs.proxy_type)
|
||||
tox_options.contents.proxy_host = bytes(oArgs.proxy_host, 'UTF-8')
|
||||
|
|
|
@ -67,10 +67,10 @@ except ImportError as e:
|
|||
logging.log(logging.DEBUG, f"color_runner not available: {e}")
|
||||
color_runner = None
|
||||
|
||||
import wrapper
|
||||
import wrapper.toxcore_enums_and_consts as enums
|
||||
from wrapper.tox import Tox
|
||||
from wrapper.toxcore_enums_and_consts import (TOX_ADDRESS_SIZE, TOX_CONNECTION,
|
||||
import tox_wrapper
|
||||
import tox_wrapper.toxcore_enums_and_consts as enums
|
||||
from tox_wrapper.tox import Tox
|
||||
from tox_wrapper.toxcore_enums_and_consts import (TOX_ADDRESS_SIZE, TOX_CONNECTION,
|
||||
TOX_FILE_CONTROL,
|
||||
TOX_MESSAGE_TYPE,
|
||||
TOX_SECRET_KEY_SIZE,
|
||||
|
@ -79,7 +79,7 @@ from wrapper.toxcore_enums_and_consts import (TOX_ADDRESS_SIZE, TOX_CONNECTION,
|
|||
try:
|
||||
import support_testing as ts
|
||||
except ImportError:
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
|
||||
try:
|
||||
from tests.toxygen_tests import test_sound_notification
|
||||
|
@ -1788,7 +1788,7 @@ def iMain(oArgs):
|
|||
|
||||
def oToxygenToxOptions(oArgs):
|
||||
data = None
|
||||
tox_options = wrapper.tox.Tox.options_new()
|
||||
tox_options = tox_wrapper.tox.Tox.options_new()
|
||||
if oArgs.proxy_type:
|
||||
tox_options.contents.proxy_type = int(oArgs.proxy_type)
|
||||
tox_options.contents.proxy_host = bytes(oArgs.proxy_host, 'UTF-8')
|
||||
|
|
|
@ -6,7 +6,7 @@ import wave
|
|||
|
||||
from ui import widgets
|
||||
import utils.util as util
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
from utils.util import *
|
||||
from ui.widgets import DataLabel
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from ui.widgets import *
|
||||
from wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
|
||||
|
||||
class PeerItem(QtWidgets.QWidget):
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from PyQt5 import uic
|
||||
import utils.util as util
|
||||
from ui.widgets import *
|
||||
from wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
|
||||
|
||||
class BaseGroupScreen(CenteredWidget):
|
||||
|
|
|
@ -7,7 +7,7 @@ from utils.util import *
|
|||
from ui.widgets import CenteredWidget, DataLabel, LineEdit, RubberBandWindow
|
||||
import updater.updater as updater
|
||||
import utils.ui as util_ui
|
||||
import wrapper_tests.support_testing as ts
|
||||
import tox_wrapper.tests.support_testing as ts
|
||||
from user_data import settings
|
||||
|
||||
global LOG
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from wrapper.toxcore_enums_and_consts import *
|
||||
from tox_wrapper.toxcore_enums_and_consts import *
|
||||
import ui.widgets as widgets
|
||||
import utils.util as util
|
||||
import ui.menu as menu
|
||||
|
|
|
@ -3,7 +3,7 @@ from PyQt5 import uic
|
|||
import utils.util as util
|
||||
import utils.ui as util_ui
|
||||
from ui.contact_items import *
|
||||
import wrapper.toxcore_enums_and_consts as consts
|
||||
import tox_wrapper.toxcore_enums_and_consts as consts
|
||||
|
||||
|
||||
class PeerScreen(CenteredWidget):
|
||||
|
|
|
@ -9,13 +9,7 @@ from user_data.settings import get_user_config_path
|
|||
global LOG
|
||||
import logging
|
||||
LOG = logging.getLogger('app.'+__name__)
|
||||
|
||||
|
||||
def LOG_ERROR(l): print('ERROR_: '+l)
|
||||
def LOG_WARN(l): print('WARN_: '+l)
|
||||
def LOG_INFO(l): print('INFO_: '+l)
|
||||
def LOG_DEBUG(l): print('DEBUG_: '+l)
|
||||
def LOG_TRACE(l): pass # print('TRACE+ '+l)
|
||||
from av.calls import LOG_ERROR, LOG_WARN, LOG_INFO, LOG_DEBUG, LOG_TRACE
|
||||
|
||||
class ProfileManager:
|
||||
"""
|
||||
|
|
|
@ -3,15 +3,13 @@
|
|||
import os
|
||||
from platform import system
|
||||
import json
|
||||
from pprint import pprint
|
||||
|
||||
from utils.util import *
|
||||
from utils import util
|
||||
from utils.util import log, join_path
|
||||
from common.event import Event
|
||||
import utils.ui as util_ui
|
||||
import utils.util as util_utils
|
||||
import user_data
|
||||
import wrapper_tests.support_testing as ts
|
||||
|
||||
global LOG
|
||||
import logging
|
||||
|
@ -106,8 +104,8 @@ def built_in_themes():
|
|||
'default': 'style.qss'
|
||||
}
|
||||
|
||||
def get_global_settings_path():
|
||||
return os.path.join(get_base_directory(), 'toxygen.json')
|
||||
#def get_global_settings_path():
|
||||
# return os.path.join(get_base_directory(), 'toxygen.json')
|
||||
|
||||
def is_active_profile(profile_path):
|
||||
sFile = profile_path + '.lock'
|
||||
|
@ -138,6 +136,7 @@ class Settings(dict):
|
|||
self._profile_path = path.replace('.json', '.tox')
|
||||
self._toxes = toxes
|
||||
self._app = app
|
||||
self._path = app._path
|
||||
self._args = app._args
|
||||
self._oArgs = app._args
|
||||
self._log = lambda l: LOG.log(self._oArgs.loglevel, l)
|
||||
|
@ -179,6 +178,7 @@ class Settings(dict):
|
|||
merge_args_into_settings(app._args, info)
|
||||
info['audio'] = getattr(app._args, 'audio')
|
||||
info['video'] = getattr(app._args, 'video')
|
||||
info['trace_enabled'] = getattr(app._args, 'trace_enabled')
|
||||
super().__init__(info)
|
||||
self._upgrade()
|
||||
|
||||
|
@ -191,7 +191,6 @@ class Settings(dict):
|
|||
self.closing = False
|
||||
self.unlockScreen = False
|
||||
|
||||
|
||||
# Properties
|
||||
|
||||
def get_settings_saved_event(self):
|
||||
|
@ -252,7 +251,8 @@ class Settings(dict):
|
|||
|
||||
@staticmethod
|
||||
def get_auto_profile():
|
||||
p = get_global_settings_path()
|
||||
# self._path =
|
||||
p = os.path.join(os.path.dirname(self._app._path), 'toxygen.json')
|
||||
if not os.path.isfile(p):
|
||||
return None
|
||||
with open(p) as fl:
|
||||
|
@ -276,7 +276,7 @@ class Settings(dict):
|
|||
|
||||
@staticmethod
|
||||
def set_auto_profile(path):
|
||||
p = get_global_settings_path()
|
||||
p = os.path.join(os.path.dirname(self._app._path), 'toxygen.json')
|
||||
if os.path.isfile(p):
|
||||
with open(p) as fl:
|
||||
data = fl.read()
|
||||
|
@ -289,7 +289,7 @@ class Settings(dict):
|
|||
|
||||
@staticmethod
|
||||
def reset_auto_profile():
|
||||
p = get_global_settings_path()
|
||||
p = os.path.join(os.path.dirname(self._app._path), 'toxygen.json')
|
||||
if os.path.isfile(p):
|
||||
with open(p) as fl:
|
||||
data = fl.read()
|
||||
|
|
Loading…
Reference in a new issue