Added UpdateThread to update_checker module, which checks for updates in a separate thread. And started implementing this in the OnionShareGui class, but have no finished

This commit is contained in:
Micah Lee 2017-04-15 19:07:02 -07:00
parent 47c1488512
commit dc1418cc3b
2 changed files with 35 additions and 5 deletions

View File

@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
from __future__ import division from __future__ import division
import os, sys, subprocess, inspect, platform, argparse, threading, time, math, inspect, platform import os, sys, subprocess, inspect, platform, argparse, threading, time, math, inspect
from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtCore import pyqtSlot from PyQt5.QtCore import pyqtSlot
@ -31,6 +31,7 @@ from .file_selection import FileSelection
from .server_status import ServerStatus from .server_status import ServerStatus
from .downloads import Downloads from .downloads import Downloads
from .alert import Alert from .alert import Alert
from .update_checker import UpdateThread
class Application(QtWidgets.QApplication): class Application(QtWidgets.QApplication):
""" """
@ -38,8 +39,8 @@ class Application(QtWidgets.QApplication):
and the quick keyboard shortcut. and the quick keyboard shortcut.
""" """
def __init__(self): def __init__(self):
platform = helpers.get_platform() system = platform.system()
if platform == 'Linux': if system == 'Linux':
self.setAttribute(QtCore.Qt.AA_X11InitThreads, True) self.setAttribute(QtCore.Qt.AA_X11InitThreads, True)
QtWidgets.QApplication.__init__(self, sys.argv) QtWidgets.QApplication.__init__(self, sys.argv)
self.installEventFilter(self) self.installEventFilter(self)
@ -71,9 +72,20 @@ class OnionShareGui(QtWidgets.QMainWindow):
self.setWindowTitle('OnionShare') self.setWindowTitle('OnionShare')
self.setWindowIcon(QtGui.QIcon(helpers.get_resource_path('images/logo.png'))) self.setWindowIcon(QtGui.QIcon(helpers.get_resource_path('images/logo.png')))
# the menu bar # Menu bar
self.setMenuBar(Menu(self.qtapp)) self.setMenuBar(Menu(self.qtapp))
# Check for updates in a new thread, if enabled
system = platform.system()
if system == 'Windows' or system == 'Darwin':
settings = Settings()
settings.load()
if settings.get('use_autoupdate'):
# TODO: make updates actually work
print("Updating in another thread")
#t = UpdateThread()
#t.start()
def send_files(self, filenames=None): def send_files(self, filenames=None):
""" """
Build the GUI in send files mode. Build the GUI in send files mode.

View File

@ -20,10 +20,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
from PyQt5 import QtCore from PyQt5 import QtCore
import datetime, time, socks, socket, re, platform import datetime, time, socks, socket, re, platform
from . import strings, helpers
from onionshare.settings import Settings from onionshare.settings import Settings
from onionshare.onion import Onion from onionshare.onion import Onion
from . import strings, helpers
from .alert import Alert
class UpdateCheckerTorError(Exception): class UpdateCheckerTorError(Exception):
""" """
Error checking for updates because of some Tor connection issue. Error checking for updates because of some Tor connection issue.
@ -127,3 +129,19 @@ class UpdateChecker(QtCore.QObject):
# No updates are available # No updates are available
self.update_not_available.emit() self.update_not_available.emit()
class UpdateThread(QtCore.QThread):
def __init__(self):
super(UpdateThread, self).__init__()
def run(self):
u = UpdateChecker()
u.update_available.connect(self.update_available)
try:
u.check()
except:
# If update check fails, silently ignore
pass
def update_available(update_url, installed_version, latest_version):
Alert(strings._("update_available", True).format(update_url, installed_version, latest_version))