updater - loading and version checking

This commit is contained in:
ingvar1995 2016-09-23 20:37:32 +03:00
parent 9fe9ba4743
commit 006b3cd197
5 changed files with 60 additions and 10 deletions

View file

@ -15,6 +15,7 @@ import platform
import toxencryptsave import toxencryptsave
from passwordscreen import PasswordScreen, UnlockAppScreen, SetProfilePasswordScreen from passwordscreen import PasswordScreen, UnlockAppScreen, SetProfilePasswordScreen
from plugin_support import PluginLoader from plugin_support import PluginLoader
import updater
class Toxygen: class Toxygen:
@ -278,6 +279,7 @@ class Toxygen:
app.connect(app, QtCore.SIGNAL("lastWindowClosed()"), app, QtCore.SLOT("quit()")) app.connect(app, QtCore.SIGNAL("lastWindowClosed()"), app, QtCore.SLOT("quit()"))
app.exec_() app.exec_()
self.init.stop = True self.init.stop = True
self.mainloop.stop = True self.mainloop.stop = True
self.avloop.stop = True self.avloop.stop = True

View file

@ -337,7 +337,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
s.save() s.save()
QtGui.QApplication.closeAllWindows() QtGui.QApplication.closeAllWindows()
event.accept() event.accept()
else: elif QtGui.QSystemTrayIcon.isSystemTrayAvailable():
event.ignore() event.ignore()
self.hide() self.hide()
@ -359,7 +359,7 @@ class MainWindow(QtGui.QMainWindow, Singleton):
self.profile.update() self.profile.update()
def keyPressEvent(self, event): def keyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Escape: if event.key() == QtCore.Qt.Key_Escape and QtGui.QSystemTrayIcon.isSystemTrayAvailable():
self.hide() self.hide()
elif event.key() == QtCore.Qt.Key_C and event.modifiers() & QtCore.Qt.ControlModifier and self.messages.selectedIndexes(): elif event.key() == QtCore.Qt.Key_C and event.modifiers() & QtCore.Qt.ControlModifier and self.messages.selectedIndexes():
rows = list(map(lambda x: self.messages.row(x), self.messages.selectedItems())) rows = list(map(lambda x: self.messages.row(x), self.messages.selectedItems()))

View file

@ -145,7 +145,8 @@ class Settings(dict, Singleton):
'compact_mode': False, 'compact_mode': False,
'show_welcome_screen': True, 'show_welcome_screen': True,
'close_to_tray': False, 'close_to_tray': False,
'font': 'Times New Roman' 'font': 'Times New Roman',
'update': 1
} }
@staticmethod @staticmethod

View file

@ -1,5 +1,9 @@
import util import util
import requests import settings
try:
from PySide import QtNetwork, QtCore
except:
from PyQt4 import QtNetwork, QtCore
def check_for_updates(): def check_for_updates():
@ -9,17 +13,60 @@ def check_for_updates():
for version in versions: for version in versions:
if send_request(version): if send_request(version):
return version return version
return None return None # no new version was found
def get_url(version):
return 'https://github.com/toxygen-project/toxygen/releases/tag/v' + version
def download(version):
s = settings.Settings.get_instance()
if s['update']:
netman = QtNetwork.QNetworkAccessManager()
proxy = QtNetwork.QNetworkProxy()
if s['proxy_type']:
proxy.setType(
QtNetwork.QNetworkProxy.Socks5Proxy if s['proxy_type'] == 2 else QtNetwork.QNetworkProxy.HttpProxy)
proxy.setHostName(s['proxy_host'])
proxy.setPort(s['proxy_port'])
netman.setProxy(proxy)
url = get_url(version)
try:
request = QtNetwork.QNetworkRequest(url)
reply = netman.get(request)
while not reply.isFinished():
QtCore.QThread.msleep(1)
data = bytes(reply.readAll().data())
with open('toxygen.zip', 'wb') as fl:
fl.write(data)
except Exception as ex:
util.log('Downloading new version of Toxygen failed with exception: ' + str(ex))
def send_request(version): def send_request(version):
# TODO: proxy support s = settings.Settings.get_instance()
request = requests.get('https://github.com/toxygen-project/toxygen/releases/tag/v' + version) netman = QtNetwork.QNetworkAccessManager()
return request.status_code == 200 proxy = QtNetwork.QNetworkProxy()
if s['proxy_type']:
proxy.setType(QtNetwork.QNetworkProxy.Socks5Proxy if s['proxy_type'] == 2 else QtNetwork.QNetworkProxy.HttpProxy)
proxy.setHostName(s['proxy_host'])
proxy.setPort(s['proxy_port'])
netman.setProxy(proxy)
url = get_url(version)
try:
request = QtNetwork.QNetworkRequest(url)
reply = netman.get(request)
while not reply.isFinished():
QtCore.QThread.msleep(1)
return reply.attribute() == 200
except Exception as ex:
util.log('TOXYGEN UPDATER ERROR: ' + str(ex))
return False
def generate_versions(major, minor, patch): def generate_versions(major, minor, patch):
new_major = '.'.join([str(major + 1), '0', '0']) new_major = '.'.join([str(major + 1), '0', '0'])
new_minor = '.'.join([str(major), str(minor + 1), '0']) new_minor = '.'.join([str(major), str(minor + 1), '0'])
new_patch = '.'.join([str(major), str(minor), str(patch + 1)]) new_patch = '.'.join([str(major), str(minor), str(patch + 1)])
return new_major, new_minor, new_patch return new_major, new_minor, new_patch

View file

@ -2,7 +2,7 @@ import os
import time import time
import shutil import shutil
program_version = '0.2.6' program_version = '0.2.3'
def log(data): def log(data):