diff --git a/src/cutecoin/core/app.py b/src/cutecoin/core/app.py index 697a3c53727d1e8db30995cfde8e7e7ed47010c3..2c1ef32c6d60ad8f0338d114bc36dc6c7f1a6bb1 100644 --- a/src/cutecoin/core/app.py +++ b/src/cutecoin/core/app.py @@ -45,11 +45,12 @@ class Application(QObject): self.accounts = {} self.current_account = None self.monitor = None - self.available_version = __version__ + self.available_version = (True, + __version__, + "") config.parse_arguments(argv) self._network_manager = QNetworkAccessManager() self._network_manager.finished.connect(self.read_available_version) - self.get_last_version() self.preferences = {'account': "", 'lang': 'en_GB', 'ref': 'Units' @@ -403,24 +404,26 @@ class Application(QObject): request = QNetworkRequest(url) self._network_manager.get(request) + @pyqtSlot(QNetworkReply) def read_available_version(self, reply): latest = None releases = reply.readAll().data().decode('utf-8') logging.debug(releases) - for r in json.loads(releases): - if not latest: - latest = r - else: - latest_date = datetime.datetime.strptime(latest['published_at'], "%Y-%m-%dT%H:%M:%SZ") - date = datetime.datetime.strptime(r['published_at'], "%Y-%m-%dT%H:%M:%SZ") - if latest_date < date: + if reply.error == QNetworkReply.NoError: + for r in json.loads(releases): + if not latest: latest = r - latest_version = latest["tag_name"] - version = (__version__ == latest_version, - latest_version, - latest["html_url"]) - logging.debug("Found version : {0}".format(latest_version)) - logging.debug("Current version : {0}".format(__version__)) - self.available_version = version + else: + latest_date = datetime.datetime.strptime(latest['published_at'], "%Y-%m-%dT%H:%M:%SZ") + date = datetime.datetime.strptime(r['published_at'], "%Y-%m-%dT%H:%M:%SZ") + if latest_date < date: + latest = r + latest_version = latest["tag_name"] + version = (__version__ == latest_version, + latest_version, + latest["html_url"]) + logging.debug("Found version : {0}".format(latest_version)) + logging.debug("Current version : {0}".format(__version__)) + self.available_version = version self.version_requested.emit() diff --git a/src/cutecoin/gui/homescreen.py b/src/cutecoin/gui/homescreen.py index 2bb33a10181215602d2c9759b32accea5391c800..15ffa516e54578667eb2fee82e557d663b13b27c 100644 --- a/src/cutecoin/gui/homescreen.py +++ b/src/cutecoin/gui/homescreen.py @@ -7,6 +7,7 @@ Created on 31 janv. 2015 from PyQt5.QtWidgets import QWidget from ..gen_resources.homescreen_uic import Ui_HomeScreenWidget from ..__init__ import __version__ +from . import toast class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): @@ -30,7 +31,7 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): version_url = "" if not latest[0]: version_info = self.tr("Please get the latest release {version}") \ - .format(version='.'.join(latest[1])) + .format(version=latest[1]) version_url = latest[2] self.label_welcome.setText( @@ -38,6 +39,7 @@ class HomeScreenWidget(QWidget, Ui_HomeScreenWidget): <h1>Welcome to Cutecoin {version}</h1> <h2>{version_info}</h2> <h3><a href={version_url}>Download link</a></h3> - """).format(version=__version__, + """).format(version=latest[1], version_info=version_info, version_url=version_url)) + diff --git a/src/cutecoin/gui/mainwindow.py b/src/cutecoin/gui/mainwindow.py index 9371811f85effcfd1d877a543d438a3b6dca2628..a2f759468c1b1d58da5057cb43fc375c071937fd 100644 --- a/src/cutecoin/gui/mainwindow.py +++ b/src/cutecoin/gui/mainwindow.py @@ -8,7 +8,7 @@ from ..gen_resources.about_uic import Ui_AboutPopup from PyQt5.QtWidgets import QMainWindow, QAction, QFileDialog, QProgressBar, \ QMessageBox, QLabel, QComboBox, QDialog, QApplication -from PyQt5.QtCore import QSignalMapper, QObject, QThread, \ +from PyQt5.QtCore import QSignalMapper, QObject, \ pyqtSlot, pyqtSignal, QDate, QDateTime, QTimer, QUrl, Qt from PyQt5.QtGui import QIcon, QDesktopServices, QPixmap @@ -24,6 +24,7 @@ from .preferences import PreferencesDialog from .homescreen import HomeScreenWidget from ..core.account import Account from ..__init__ import __version__ +from . import toast import logging import requests @@ -59,13 +60,15 @@ class MainWindow(QMainWindow, Ui_MainWindow): """ Init :param cutecoin.core.app.Application app: application + :type: cutecoin.core.app.Application """ # Set up the user interface from Designer. super().__init__() self.setupUi(self) QApplication.setWindowIcon(QIcon(":/icons/cutecoin_logo")) self.app = app - """:type: cutecoin.core.app.Application""" + logging.debug(app.thread()) + logging.debug(self.thread()) self.password_asker = None self.initialized = False @@ -75,6 +78,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.busybar.setValue(-1) self.statusbar.addWidget(self.busybar) self.busybar.hide() + self.app.version_requested.connect(self.latest_version_requested) + self.app.get_last_version() self.combo_referential = QComboBox(self) self.combo_referential.setEnabled(False) @@ -172,7 +177,6 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.status_label.setText(self.tr("Loading account {0}").format(account_name)) self.loader.set_account_name(account_name) QTimer.singleShot(10, self.loader.load) - #self.loader_thread.start(QThread.LowPriority) self.homescreen.button_new.hide() self.homescreen.button_import.hide() @@ -182,7 +186,11 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.refresh() self.busybar.hide() QApplication.setOverrideCursor(Qt.ArrowCursor) - self.app.disconnect() + try: + self.app.disconnect() + except: + logging.debug("Disconnect of app failed") + self.app.monitor.start_network_watchers() QApplication.processEvents() @@ -259,6 +267,22 @@ class MainWindow(QMainWindow, Ui_MainWindow): aboutUi.label.setText(text) aboutDialog.show() + @pyqtSlot() + def latest_version_requested(self): + latest = self.app.available_version + version_info = "" + version_url = "" + logging.debug("Latest version requested") + if not latest[0]: + version_info = self.tr("Please get the latest release {version}") \ + .format(version=latest[1]) + version_url = latest[2] + + toast.display("Cutecoin", """<p>{version_info}</br> +<a href={version_url}>Download link</a></p>""".format( + version_info=version_info, + version_url=version_url)) + def refresh_wallets(self): currency_tab = self.currencies_tabwidget.currentWidget() if currency_tab: