Implemented update notification to classic GUI

This commit is contained in:
Maran 2013-01-15 21:31:21 +01:00
parent 79dcc2bd57
commit de778da3c5
2 changed files with 87 additions and 0 deletions

View File

@ -1,3 +1,8 @@
# Release 1.6.2 (Not released)
== Classic GUI
* Added new version notification
# Release 1.6.1 (11-01-2013)
== Core

View File

@ -44,6 +44,9 @@ import exchange_rate
from decimal import Decimal
import platform
import httplib
import socket
import webbrowser
if platform.system() == 'Windows':
MONOSPACE_FONT = 'Lucida Console'
@ -54,6 +57,79 @@ else:
ALIAS_REGEXP = '^(|([\w\-\.]+)@)((\w[\w\-]+\.)+[\w\-]+)$'
from version import ELECTRUM_VERSION
import re
class UpdateLabel(QtGui.QLabel):
def __init__(self, config, parent=None):
QtGui.QLabel.__init__(self, parent)
self.setText("New version available:")
try:
con = httplib.HTTPConnection('electrum.bysh.me', 80, timeout=5)
con.request("GET", "/version")
res = con.getresponse()
if res.status == 200:
latest_version = res.read()
latest_version = latest_version.replace("\n","")
if(re.match('^\d\.\d.\d$', latest_version)):
self.config = config
self.latest_version = tuple(latest_version.split("."))
self.latest_version_text = latest_version
self.current_version = tuple(ELECTRUM_VERSION.split("."))
if(self.latest_version > self.current_version):
latest_seen = self.config.get("last_seen_version")
if(self.latest_version > latest_seen):
self.setText("New version available: " + '.'.join(list(self.latest_version)))
except socket.error as msg:
print "Could not retrieve version information"
def ignore_this_version(self):
self.setText("")
self.config.set_key("last_seen_version", self.latest_version)
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", tuple(['9','9','9']))
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_text), 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
def numbify(entry, is_int = False):
text = unicode(entry.text()).strip()
pos = entry.cursorPosition()
@ -1180,11 +1256,16 @@ class ElectrumWindow(QMainWindow):
textbox.setReadOnly(True)
return textbox
def create_status_bar(self):
self.status_text = ""
sb = QStatusBar()
sb.setFixedHeight(35)
qtVersion = qVersion()
update_notification = UpdateLabel(self.config)
sb.addPermanentWidget(update_notification)
if (int(qtVersion[0]) >= 4 and int(qtVersion[2]) >= 7):
sb.addPermanentWidget( StatusBarButton( QIcon(":icons/switchgui.png"), _("Switch to Lite Mode"), self.go_lite ) )
if self.wallet.seed:
@ -1194,6 +1275,7 @@ class ElectrumWindow(QMainWindow):
sb.addPermanentWidget( StatusBarButton( QIcon(":icons/seed.png"), _("Seed"), lambda: self.show_seed_dialog(self.wallet, self) ) )
self.status_button = StatusBarButton( QIcon(":icons/status_disconnected.png"), _("Network"), lambda: self.network_dialog(self.wallet, self) )
sb.addPermanentWidget( self.status_button )
self.setStatusBar(sb)
def go_lite(self):