1
0
Fork 0
mirror of synced 2024-06-26 18:20:50 +12:00

Add update button, to update EOS overlay

This commit is contained in:
Dummerle 2022-01-13 18:58:07 +01:00
parent 9072a78461
commit d801a145ab
No known key found for this signature in database
GPG key ID: AB68CC59CA39F2F1
3 changed files with 81 additions and 19 deletions

View file

@ -3,6 +3,7 @@ import platform
from logging import getLogger
from typing import List
from PyQt5.QtCore import QRunnable, QObject, pyqtSignal, QThreadPool
from PyQt5.QtWidgets import QGroupBox, QFormLayout, QMessageBox
from legendary.utils import eos
@ -34,7 +35,19 @@ def get_wine_prefixes() -> List[str]:
return prefixes
# TODO Update Button
class WorkerSignals(QObject):
update_available = pyqtSignal(bool)
class CheckForUpdateWorker(QRunnable):
def __init__(self):
super(CheckForUpdateWorker, self).__init__()
self.setAutoDelete(True)
self.signals = WorkerSignals()
def run(self) -> None:
shared.core.check_for_overlay_updates()
self.signals.update_available.emit(shared.core.overlay_update_available)
class EosWidget(QGroupBox, Ui_EosWidget):
@ -52,12 +65,14 @@ class EosWidget(QGroupBox, Ui_EosWidget):
self.uninstall_button.clicked.connect(self.uninstall_overlay)
self.update_button.setVisible(False)
self.update_info_lbl.setVisible(False)
self.overlay = self.core.lgd.get_overlay_install_info()
shared.signals.overlay_installation_finished.connect(self.overlay_installation_finished)
self.update_check_button.clicked.connect(self.check_for_update)
self.install_button.clicked.connect(self.install_overlay)
self.update_button.clicked.connect(lambda: self.install_overlay(True))
if self.overlay: # installed
self.installed_version_lbl.setText(self.overlay.version)
@ -85,9 +100,15 @@ class EosWidget(QGroupBox, Ui_EosWidget):
self.enabled_info_label.setText("")
def check_for_update(self):
self.core.check_for_overlay_updates()
if self.core.overlay_update_available:
self.update_button.setVisible(True)
def worker_finished(update_available):
self.update_button.setVisible(update_available)
self.update_info_lbl.setVisible(update_available)
self.update_check_button.setDisabled(False)
self.update_check_button.setDisabled(True)
worker = CheckForUpdateWorker()
worker.signals.update_available.connect(worker_finished)
QThreadPool.globalInstance().start(worker)
def overlay_installation_finished(self):
self.overlay = self.core.lgd.get_overlay_install_info()
@ -101,6 +122,9 @@ class EosWidget(QGroupBox, Ui_EosWidget):
self.installed_version_lbl.setText(self.overlay.version)
self.installed_path_lbl.setText(self.overlay.install_path)
self.update_button.setVisible(False)
self.update_info_lbl.setVisible(False)
self.enable_gb.setEnabled(True)
def update_select_combo(self, i: None):
@ -156,8 +180,18 @@ class EosWidget(QGroupBox, Ui_EosWidget):
enabled = True
self.enabled_cb.setChecked(enabled)
def install_overlay(self):
options = InstallOptionsModel(app_name="", base_path=os.path.expanduser("~/legendary/.overlay"),
def install_overlay(self, update=False):
base_path = os.path.expanduser("~/legendary/.overlay")
if update:
if not self.overlay:
self.info_stack.setCurrentIndex(1)
self.enable_gb.setDisabled(True)
QMessageBox.warning(self, "Warning", self.tr("Overlay is not installed. Could not update"))
return
base_path = self.overlay.install_path
options = InstallOptionsModel(app_name="", base_path=base_path,
platform="Windows", overlay=True)
shared.signals.install_game.emit(options)

View file

@ -76,9 +76,6 @@ class Ui_EosWidget(object):
self.update_check_button.setMaximumSize(QtCore.QSize(150, 16777215))
self.update_check_button.setObjectName("update_check_button")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.update_check_button)
self.update_button = QtWidgets.QPushButton(self.installed_info_gb)
self.update_button.setObjectName("update_button")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.SpanningRole, self.update_button)
self.uninstall_info_label = QtWidgets.QLabel(self.installed_info_gb)
self.uninstall_info_label.setObjectName("uninstall_info_label")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.uninstall_info_label)
@ -91,6 +88,18 @@ class Ui_EosWidget(object):
self.uninstall_button.setMaximumSize(QtCore.QSize(150, 16777215))
self.uninstall_button.setObjectName("uninstall_button")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.uninstall_button)
self.update_button = QtWidgets.QPushButton(self.installed_info_gb)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.update_button.sizePolicy().hasHeightForWidth())
self.update_button.setSizePolicy(sizePolicy)
self.update_button.setMaximumSize(QtCore.QSize(150, 16777215))
self.update_button.setObjectName("update_button")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.update_button)
self.update_info_lbl = QtWidgets.QLabel(self.installed_info_gb)
self.update_info_lbl.setObjectName("update_info_lbl")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.update_info_lbl)
self.horizontalLayout.addWidget(self.installed_info_gb)
self.install_overlay_gb = QtWidgets.QGroupBox(EosWidget)
self.install_overlay_gb.setObjectName("install_overlay_gb")
@ -119,13 +128,14 @@ class Ui_EosWidget(object):
self.enable_gb.setTitle(_translate("EosWidget", "Enable / Disable"))
self.enabled_cb.setText(_translate("EosWidget", "Activated"))
self.installed_info_gb.setTitle(_translate("EosWidget", "Installed Info"))
self.installed_version_info_lbl.setText(_translate("EosWidget", "Installed version: "))
self.installed_version_info_lbl.setText(_translate("EosWidget", "Installed version:"))
self.installed_path_info_lbl.setText(_translate("EosWidget", "Installed path"))
self.update_available_info_label.setText(_translate("EosWidget", "Updates"))
self.update_check_button.setText(_translate("EosWidget", "Check for Update"))
self.update_button.setText(_translate("EosWidget", "Update"))
self.uninstall_info_label.setText(_translate("EosWidget", "Uninstall"))
self.uninstall_button.setText(_translate("EosWidget", "Uninstall"))
self.update_button.setText(_translate("EosWidget", "Update"))
self.update_info_lbl.setText(_translate("EosWidget", "Install Update"))
self.install_overlay_gb.setTitle(_translate("EosWidget", "Install Overlay"))
self.label.setText(_translate("EosWidget", "No overlays are installed"))
self.install_button.setText(_translate("EosWidget", "Install"))
@ -133,7 +143,6 @@ class Ui_EosWidget(object):
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
EosWidget = QtWidgets.QGroupBox()
ui = Ui_EosWidget()

View file

@ -134,13 +134,6 @@
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QPushButton" name="update_button">
<property name="text">
<string>Update</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="uninstall_info_label">
<property name="text">
@ -167,6 +160,32 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="update_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>150</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Update</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="update_info_lbl">
<property name="text">
<string>Install Update</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>