1
0
Fork 0
mirror of synced 2024-06-26 10:11:19 +12:00
Rare/rare/components/tabs/settings/about.py

60 lines
1.8 KiB
Python
Raw Normal View History

import webbrowser
from logging import getLogger
from PyQt5.QtCore import pyqtSignal
2021-04-22 08:54:24 +12:00
from PyQt5.QtWidgets import QWidget
from rare import __version__, code_name
from rare.ui.components.tabs.settings.about import Ui_About
from rare.utils.qt_requests import QtRequestManager
logger = getLogger("About")
2021-02-20 00:57:55 +13:00
def versiontuple(v):
2021-04-09 23:18:58 +12:00
try:
return tuple(map(int, (v.split("."))))
except:
return tuple((9, 9, 9)) # It is a beta version and newer
2021-04-22 08:54:24 +12:00
class About(QWidget, Ui_About):
update_available = False
update_available_ready = pyqtSignal()
2021-02-20 00:57:55 +13:00
def __init__(self):
super(About, self).__init__()
2021-04-22 08:54:24 +12:00
self.setupUi(self)
2021-02-20 00:57:55 +13:00
self.version.setText(f"{__version__} {code_name}")
2021-04-22 08:54:24 +12:00
2021-05-01 06:45:12 +12:00
self.update_label.setVisible(False)
self.update_lbl.setVisible(False)
2021-04-22 08:54:24 +12:00
self.open_browser.setVisible(False)
2021-02-20 00:57:55 +13:00
self.manager = QtRequestManager("json")
2021-12-24 22:09:50 +13:00
self.manager.get(
"https://api.github.com/repos/Dummerle/Rare/releases/latest",
self.update_available_finished,
)
2021-04-22 08:54:24 +12:00
self.open_browser.clicked.connect(
2021-12-24 22:09:50 +13:00
lambda: webbrowser.open("https://github.com/Dummerle/Rare/releases/latest")
)
2021-04-22 08:54:24 +12:00
def update_available_finished(self, data: dict):
if latest_tag := data.get("tag_name"):
self.update_available = versiontuple(latest_tag) > versiontuple(__version__)
else:
self.update_available = False
if self.update_available:
logger.info(f"Update available: {__version__} -> {latest_tag}")
2021-12-24 22:09:50 +13:00
self.update_lbl.setText(
self.tr("Update available: {} -> {}").format(__version__, latest_tag)
2021-12-24 22:09:50 +13:00
)
2021-05-01 06:45:12 +12:00
self.update_label.setVisible(True)
self.update_lbl.setVisible(True)
2021-04-22 08:54:24 +12:00
self.open_browser.setVisible(True)
self.update_available_ready.emit()