setup.py and fixes
This commit is contained in:
parent
88e9317a41
commit
1c788a73c6
14 changed files with 122 additions and 28 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -15,3 +15,9 @@ src/libs
|
|||
src/build
|
||||
src/dist
|
||||
*.spec
|
||||
dist/
|
||||
/src/avatars
|
||||
src/__pycache__
|
||||
/*.egg-info
|
||||
/*.egg
|
||||
|
||||
|
|
17
MANIFEST.in
Normal file
17
MANIFEST.in
Normal file
|
@ -0,0 +1,17 @@
|
|||
include src/images/*.png
|
||||
include src/images/*.ico
|
||||
include src/images/*.gif
|
||||
include src/sounds/*.wav
|
||||
include src/stickers/tox/*.png
|
||||
include src/smileys/default/*.png
|
||||
include src/smileys/default/config.json
|
||||
include src/smileys/animated/*.gif
|
||||
include src/smileys/animated/config.json
|
||||
include src/smileys/starwars/*.gif
|
||||
include src/smileys/starwars/*.png
|
||||
include src/smileys/starwars/config.json
|
||||
include src/styles/style.qss
|
||||
include src/translations/*.qm
|
||||
include src/libs/libtox.dll
|
||||
include src/libs/libsodium.a
|
||||
|
|
@ -3,6 +3,22 @@
|
|||
## Use precompiled binary:
|
||||
[Check our releases page](https://github.com/xveduk/toxygen/releases)
|
||||
|
||||
##Using pip3
|
||||
|
||||
### Windows (32-bit interpreter)
|
||||
|
||||
``pip3.4 install toxygen``
|
||||
Run app using ``toxygen`` command.
|
||||
|
||||
##Linux
|
||||
|
||||
1. Install [toxcore](https://github.com/irungentoo/toxcore/blob/master/INSTALL.md) with toxav support in your system (install in /usr/lib/)
|
||||
2. Install PortAudio:
|
||||
``sudo apt-get install portaudio19-dev``
|
||||
3. Install toxygen:
|
||||
``sudo pip3.4 install toxygen``
|
||||
4 Run toxygen using ``toxygen`` command.
|
||||
|
||||
## From source code (recommended for developers)
|
||||
|
||||
### Windows
|
||||
|
|
43
setup.py
Normal file
43
setup.py
Normal file
|
@ -0,0 +1,43 @@
|
|||
from setuptools import setup
|
||||
from setuptools.command.install import install
|
||||
from platform import system
|
||||
from ctypes import CDLL
|
||||
|
||||
|
||||
class DownloadScript(install):
|
||||
"""Install all required libs"""
|
||||
def run(self):
|
||||
OS = system()
|
||||
if OS == 'Linux': # install libtoxcore
|
||||
try:
|
||||
libtoxcore = CDLL('libtoxcore.so')
|
||||
libtoxencryptsave = CDLL('libtoxencryptsave.so')
|
||||
libtoxav = CDLL('libtoxav.so')
|
||||
except: # toxcore is not installed
|
||||
pass
|
||||
install.run(self)
|
||||
|
||||
setup(name='Toxygen',
|
||||
version='0.2.1.50',
|
||||
description='Toxygen - Tox client',
|
||||
long_description='Toxygen is powerful Tox client written in Python3',
|
||||
url='https://github.com/xveduk/toxygen/',
|
||||
keywords='toxygen tox',
|
||||
author='Ingvar',
|
||||
license='GPL3',
|
||||
package_dir={'': 'src'},
|
||||
packages=['', 'plugins', 'styles'],
|
||||
install_requires=['PyAudio', 'PySide', 'PySocks'],
|
||||
include_package_data=True,
|
||||
classifiers=[
|
||||
'Programming Language :: Python :: 3 :: Only',
|
||||
'Programming Language :: Python :: 3.3',
|
||||
'Programming Language :: Python :: 3.4',
|
||||
],
|
||||
entry_points={
|
||||
'console_scripts': ['toxygen=main:main'],
|
||||
},
|
||||
cmdclass={
|
||||
'install': DownloadScript,
|
||||
},
|
||||
)
|
|
@ -3,7 +3,7 @@ try:
|
|||
except ImportError:
|
||||
from PyQt4 import QtCore, QtGui
|
||||
import widgets
|
||||
import profile
|
||||
import profile_
|
||||
import util
|
||||
import pyaudio
|
||||
import wave
|
||||
|
@ -54,7 +54,7 @@ class IncomingCallWidget(widgets.CenteredWidget):
|
|||
self.setWindowTitle(text)
|
||||
self.name.setText(name)
|
||||
self.call_type.setText(text)
|
||||
pr = profile.Profile.get_instance()
|
||||
pr = profile_.Profile.get_instance()
|
||||
self.accept_audio.clicked.connect(lambda: pr.accept_call(friend_number, True, False) or self.stop())
|
||||
# self.accept_video.clicked.connect(lambda: pr.start_call(friend_number, True, True))
|
||||
self.decline.clicked.connect(lambda: pr.stop_call(friend_number, False) or self.stop())
|
||||
|
|
|
@ -4,7 +4,7 @@ except ImportError:
|
|||
from PyQt4 import QtCore
|
||||
from notifications import *
|
||||
from settings import Settings
|
||||
from profile import Profile
|
||||
from profile_ import Profile
|
||||
from toxcore_enums_and_consts import *
|
||||
from toxav_enums import *
|
||||
from tox import bin_to_string
|
||||
|
|
|
@ -3,7 +3,7 @@ try:
|
|||
from PySide import QtCore, QtGui
|
||||
except ImportError:
|
||||
from PyQt4 import QtCore, QtGui
|
||||
import profile
|
||||
import profile_
|
||||
from file_transfers import TOX_FILE_TRANSFER_STATE, PAUSED_FILE_TRANSFERS, DO_NOT_SHOW_ACCEPT_BUTTON, ACTIVE_FILE_TRANSFERS, SHOW_PROGRESS_BAR
|
||||
from util import curr_directory, convert_time, curr_time
|
||||
from widgets import DataLabel, create_menu
|
||||
|
@ -339,7 +339,7 @@ class FileTransferItem(QtGui.QListWidget):
|
|||
self.paused = False
|
||||
|
||||
def cancel_transfer(self, friend_number, file_number):
|
||||
pr = profile.Profile.get_instance()
|
||||
pr = profile_.Profile.get_instance()
|
||||
pr.cancel_transfer(friend_number, file_number)
|
||||
self.setStyleSheet('QListWidget { border: 1px solid #B40404; }')
|
||||
self.cancel.setVisible(False)
|
||||
|
@ -354,18 +354,18 @@ class FileTransferItem(QtGui.QListWidget):
|
|||
QtGui.QFileDialog.ShowDirsOnly | QtGui.QFileDialog.DontUseNativeDialog)
|
||||
self.pb.setVisible(True)
|
||||
if directory:
|
||||
pr = profile.Profile.get_instance()
|
||||
pr = profile_.Profile.get_instance()
|
||||
pr.accept_transfer(self, directory + '/' + self.saved_name, friend_number, file_number, size)
|
||||
self.button_update('pause')
|
||||
elif self.state == TOX_FILE_TRANSFER_STATE['PAUSED_BY_USER']: # resume
|
||||
self.paused = False
|
||||
profile.Profile.get_instance().resume_transfer(friend_number, file_number)
|
||||
profile_.Profile.get_instance().resume_transfer(friend_number, file_number)
|
||||
self.button_update('pause')
|
||||
self.state = TOX_FILE_TRANSFER_STATE['RUNNING']
|
||||
else: # pause
|
||||
self.paused = True
|
||||
self.state = TOX_FILE_TRANSFER_STATE['PAUSED_BY_USER']
|
||||
profile.Profile.get_instance().pause_transfer(friend_number, file_number)
|
||||
profile_.Profile.get_instance().pause_transfer(friend_number, file_number)
|
||||
self.button_update('resume')
|
||||
self.accept_or_pause.clearFocus()
|
||||
|
||||
|
@ -435,7 +435,7 @@ class UnsentFileItem(FileTransferItem):
|
|||
movie.start()
|
||||
|
||||
def cancel_transfer(self, *args):
|
||||
pr = profile.Profile.get_instance()
|
||||
pr = profile_.Profile.get_instance()
|
||||
pr.cancel_not_started_transfer(self._time)
|
||||
|
||||
|
||||
|
|
38
src/main.py
38
src/main.py
|
@ -1,5 +1,6 @@
|
|||
import sys
|
||||
from loginscreen import LoginScreen
|
||||
import profile_
|
||||
from settings import *
|
||||
try:
|
||||
from PySide import QtCore, QtGui
|
||||
|
@ -7,13 +8,11 @@ except ImportError:
|
|||
from PyQt4 import QtCore, QtGui
|
||||
from bootstrap import node_generator
|
||||
from mainscreen import MainWindow
|
||||
from profile import tox_factory
|
||||
from callbacks import init_callbacks
|
||||
from util import curr_directory
|
||||
from util import curr_directory, program_version
|
||||
import styles.style
|
||||
import toxencryptsave
|
||||
from passwordscreen import PasswordScreen, UnlockAppScreen
|
||||
import profile
|
||||
from plugin_support import PluginLoader
|
||||
|
||||
|
||||
|
@ -67,7 +66,7 @@ class Toxygen:
|
|||
if encrypt_save.is_data_encrypted(data):
|
||||
data = self.enter_pass(data)
|
||||
settings = Settings(name)
|
||||
self.tox = tox_factory(data, settings)
|
||||
self.tox = profile_.tox_factory(data, settings)
|
||||
else:
|
||||
auto_profile = Settings.get_auto_profile()
|
||||
if not auto_profile[0]:
|
||||
|
@ -95,7 +94,7 @@ class Toxygen:
|
|||
elif _login.t == 1: # create new profile
|
||||
_login.name = _login.name.strip()
|
||||
name = _login.name if _login.name else 'toxygen_user'
|
||||
self.tox = tox_factory()
|
||||
self.tox = profile_.tox_factory()
|
||||
self.tox.self_set_name(bytes(_login.name, 'utf-8') if _login.name else b'Toxygen User')
|
||||
self.tox.self_set_status_message(b'Toxing on Toxygen')
|
||||
ProfileHelper(Settings.get_default_path(), name).save_profile(self.tox.get_savedata())
|
||||
|
@ -112,14 +111,14 @@ class Toxygen:
|
|||
if encrypt_save.is_data_encrypted(data):
|
||||
data = self.enter_pass(data)
|
||||
settings = Settings(name)
|
||||
self.tox = tox_factory(data, settings)
|
||||
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 = tox_factory(data, settings)
|
||||
self.tox = profile_.tox_factory(data, settings)
|
||||
|
||||
if Settings.is_active_profile(path, name): # profile is in use
|
||||
reply = QtGui.QMessageBox.question(None,
|
||||
|
@ -147,12 +146,12 @@ class Toxygen:
|
|||
class Menu(QtGui.QMenu):
|
||||
|
||||
def newStatus(self, status):
|
||||
profile.Profile.get_instance().set_status(status)
|
||||
profile_.Profile.get_instance().set_status(status)
|
||||
self.aboutToShow()
|
||||
self.hide()
|
||||
|
||||
def aboutToShow(self):
|
||||
status = profile.Profile.get_instance().status
|
||||
status = profile_.Profile.get_instance().status
|
||||
act = self.act
|
||||
if status is None or Settings.get_instance().locked:
|
||||
self.actions()[1].setVisible(False)
|
||||
|
@ -256,7 +255,7 @@ class Toxygen:
|
|||
ProfileHelper.get_instance().save_profile(data)
|
||||
del self.tox
|
||||
# create new tox instance
|
||||
self.tox = tox_factory(data, Settings.get_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()
|
||||
|
@ -355,9 +354,22 @@ class Toxygen:
|
|||
return self.arr[self.num]
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
def main():
|
||||
if len(sys.argv) == 1:
|
||||
toxygen = Toxygen()
|
||||
else: # path to profile or tox: uri
|
||||
toxygen = Toxygen(sys.argv[1])
|
||||
else: # path to profile or tox: uri or --version or --help
|
||||
arg = sys.argv[1]
|
||||
if arg == '--version':
|
||||
print('Toxygen ' + program_version)
|
||||
return
|
||||
elif arg == '--help':
|
||||
print('Usage:\ntoxygen path_to_profile\ntoxygen tox_id\ntoxygen --version')
|
||||
return
|
||||
else:
|
||||
toxygen = Toxygen(arg)
|
||||
toxygen.main()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from menu import *
|
||||
from profile import *
|
||||
from profile_ import *
|
||||
from list_items import *
|
||||
from widgets import MultilineEdit, LineEdit
|
||||
import plugin_support
|
||||
|
|
|
@ -3,7 +3,7 @@ try:
|
|||
except ImportError:
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from widgets import RubberBand, create_menu, QRightClickButton, CenteredWidget
|
||||
from profile import Profile
|
||||
from profile_ import Profile
|
||||
import smileys
|
||||
import util
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ try:
|
|||
except ImportError:
|
||||
from PyQt4 import QtCore, QtGui
|
||||
from settings import *
|
||||
from profile import Profile
|
||||
from profile_ import Profile
|
||||
from util import curr_directory
|
||||
from widgets import CenteredWidget, DataLabel, LineEdit
|
||||
import pyaudio
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import util
|
||||
import profile
|
||||
import profile_
|
||||
import os
|
||||
import importlib
|
||||
import inspect
|
||||
|
@ -12,7 +12,7 @@ class PluginLoader(util.Singleton):
|
|||
|
||||
def __init__(self, tox, settings):
|
||||
super().__init__()
|
||||
self._profile = profile.Profile.get_instance()
|
||||
self._profile = profile_.Profile.get_instance()
|
||||
self._settings = settings
|
||||
self._plugins = {} # dict. key - plugin unique short name, value - tuple (plugin instance, is active)
|
||||
self._tox = tox
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from src.bootstrap import node_generator
|
||||
from src.profile import *
|
||||
from src.profile_ import *
|
||||
from src.settings import ProfileHelper
|
||||
from src.tox_dns import tox_dns
|
||||
import src.toxencryptsave as encr
|
||||
|
|
Loading…
Reference in a new issue