ThomasV
9 years ago
2 changed files with 0 additions and 128 deletions
@ -1,125 +0,0 @@ |
|||
#!/usr/bin/env python |
|||
# |
|||
# Electrum - lightweight Bitcoin client |
|||
# Copyright (C) 2012 thomasv@gitorious |
|||
# |
|||
# This program is free software: you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation, either version 3 of the License, or |
|||
# (at your option) any later version. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|||
|
|||
import threading, re, socket |
|||
import webbrowser |
|||
import requests |
|||
|
|||
from PyQt4.QtGui import * |
|||
from PyQt4.QtCore import * |
|||
import PyQt4.QtCore as QtCore |
|||
|
|||
from electrum.i18n import _ |
|||
from electrum import ELECTRUM_VERSION, print_error |
|||
|
|||
class VersionGetter(threading.Thread): |
|||
|
|||
def __init__(self, label): |
|||
threading.Thread.__init__(self) |
|||
self.label = label |
|||
self.daemon = True |
|||
|
|||
def run(self): |
|||
try: |
|||
res = requests.request("GET", "https://electrum.org/version") |
|||
except: |
|||
print_error("Could not retrieve version information") |
|||
return |
|||
|
|||
if res.status_code == 200: |
|||
latest_version = res.text |
|||
latest_version = latest_version.replace("\n","") |
|||
if(re.match('^\d+(\.\d+)*$', latest_version)): |
|||
self.label.callback(latest_version) |
|||
|
|||
class UpdateLabel(QLabel): |
|||
def __init__(self, config, sb): |
|||
QLabel.__init__(self) |
|||
self.new_version = False |
|||
self.sb = sb |
|||
self.config = config |
|||
self.current_version = ELECTRUM_VERSION |
|||
self.connect(self, QtCore.SIGNAL('new_electrum_version'), self.new_electrum_version) |
|||
# prevent HTTP leaks if a proxy is set |
|||
if self.config.get('proxy'): |
|||
return |
|||
VersionGetter(self).start() |
|||
|
|||
def callback(self, version): |
|||
self.latest_version = version |
|||
if(self.compare_versions(self.latest_version, self.current_version) == 1): |
|||
latest_seen = self.config.get("last_seen_version",ELECTRUM_VERSION) |
|||
if(self.compare_versions(self.latest_version, latest_seen) == 1): |
|||
self.new_version = True |
|||
self.emit(QtCore.SIGNAL('new_electrum_version')) |
|||
|
|||
def new_electrum_version(self): |
|||
if self.new_version: |
|||
self.setText(_("New version available") + ": " + self.latest_version) |
|||
self.sb.insertPermanentWidget(1, self) |
|||
|
|||
def compare_versions(self, version1, version2): |
|||
def normalize(v): |
|||
return [int(x) for x in re.sub(r'(\.0+)*$','', v).split(".")] |
|||
try: |
|||
return cmp(normalize(version1), normalize(version2)) |
|||
except: |
|||
return 0 |
|||
|
|||
def ignore_this_version(self): |
|||
self.setText("") |
|||
self.config.set_key("last_seen_version", self.latest_version, True) |
|||
QMessageBox.information(self, _("Preference saved"), _("Notifications about this update will not be shown again.")) |
|||
self.dialog.done(0) |
|||
|
|||
def ignore_all_version(self): |
|||
self.setText("") |
|||
self.config.set_key("last_seen_version", "9.9.9", True) |
|||
QMessageBox.information(self, _("Preference saved"), _("No more notifications about version updates will be shown.")) |
|||
self.dialog.done(0) |
|||
|
|||
def open_website(self): |
|||
webbrowser.open("http://electrum.org/download.html") |
|||
self.dialog.done(0) |
|||
|
|||
def mouseReleaseEvent(self, event): |
|||
dialog = QDialog(self) |
|||
dialog.setWindowTitle(_('Electrum update')) |
|||
dialog.setModal(1) |
|||
|
|||
main_layout = QGridLayout() |
|||
main_layout.addWidget(QLabel(_("A new version of Electrum is available:")+" " + self.latest_version), 0,0,1,3) |
|||
|
|||
ignore_version = QPushButton(_("Ignore this version")) |
|||
ignore_version.clicked.connect(self.ignore_this_version) |
|||
|
|||
ignore_all_versions = QPushButton(_("Ignore all versions")) |
|||
ignore_all_versions.clicked.connect(self.ignore_all_version) |
|||
|
|||
open_website = QPushButton(_("Goto download page")) |
|||
open_website.clicked.connect(self.open_website) |
|||
|
|||
main_layout.addWidget(ignore_version, 1, 0) |
|||
main_layout.addWidget(ignore_all_versions, 1, 1) |
|||
main_layout.addWidget(open_website, 1, 2) |
|||
|
|||
dialog.setLayout(main_layout) |
|||
|
|||
self.dialog = dialog |
|||
|
|||
if not dialog.exec_(): return |
Loading…
Reference in new issue