Some fixes: Update gamelist; dl_tab.finished; AppImageBuilder.yml; install_dialog: auto verify
This commit is contained in:
parent
e1c6e03812
commit
96806274f9
5 changed files with 84 additions and 70 deletions
|
@ -1,7 +1,7 @@
|
||||||
# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
|
# appimage-builder recipe see https://appimage-builder.readthedocs.io for details
|
||||||
|
|
||||||
version: 1
|
version: 1
|
||||||
|
|
||||||
|
|
||||||
script:
|
script:
|
||||||
# Remove any previous build
|
# Remove any previous build
|
||||||
- rm -rf AppDir Rare | true
|
- rm -rf AppDir Rare | true
|
||||||
|
@ -18,7 +18,6 @@ script:
|
||||||
|
|
||||||
|
|
||||||
AppDir:
|
AppDir:
|
||||||
|
|
||||||
path: AppDir
|
path: AppDir
|
||||||
app_info:
|
app_info:
|
||||||
id: org.dummerle.rare
|
id: org.dummerle.rare
|
||||||
|
@ -26,18 +25,27 @@ AppDir:
|
||||||
icon: Logo
|
icon: Logo
|
||||||
version: 1.5.0
|
version: 1.5.0
|
||||||
exec: usr/bin/python3
|
exec: usr/bin/python3
|
||||||
exec_args: "$APPDIR/usr/src/__main__.py $@"
|
exec_args: $APPDIR/usr/src/__main__.py $@
|
||||||
apt:
|
apt:
|
||||||
arch: amd64
|
arch: amd64
|
||||||
|
allow_unauthenticated: true
|
||||||
sources:
|
sources:
|
||||||
- sourceline: 'deb http://archive.ubuntu.com/ubuntu/ groovy-updates main
|
- sourceline: deb http://de.archive.ubuntu.com/ubuntu/ groovy main restricted
|
||||||
'
|
- sourceline: deb http://de.archive.ubuntu.com/ubuntu/ groovy-updates main restricted
|
||||||
key_url: 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3b4fe6acc0b21f32'
|
- sourceline: deb http://de.archive.ubuntu.com/ubuntu/ groovy universe
|
||||||
|
- sourceline: deb http://de.archive.ubuntu.com/ubuntu/ groovy-updates universe
|
||||||
|
- sourceline: deb http://de.archive.ubuntu.com/ubuntu/ groovy multiverse
|
||||||
|
- sourceline: deb http://de.archive.ubuntu.com/ubuntu/ groovy-updates multiverse
|
||||||
|
- sourceline: deb http://de.archive.ubuntu.com/ubuntu/ groovy-backports main restricted
|
||||||
|
universe multiverse
|
||||||
|
- sourceline: deb http://security.ubuntu.com/ubuntu groovy-security main restricted
|
||||||
|
- sourceline: deb http://security.ubuntu.com/ubuntu groovy-security universe
|
||||||
|
- sourceline: deb http://security.ubuntu.com/ubuntu groovy-security multiverse
|
||||||
include:
|
include:
|
||||||
- python3
|
- python3
|
||||||
- python3-pkg-resources
|
- python3-pkg-resources
|
||||||
exclude: [ ]
|
- python3-distutils
|
||||||
|
- python3-pyqt5
|
||||||
|
|
||||||
runtime:
|
runtime:
|
||||||
env:
|
env:
|
||||||
|
@ -49,29 +57,31 @@ AppDir:
|
||||||
PYTHONPATH: '${APPDIR}/usr/lib/python3.8/site-packages'
|
PYTHONPATH: '${APPDIR}/usr/lib/python3.8/site-packages'
|
||||||
|
|
||||||
|
|
||||||
AppImage:
|
files:
|
||||||
arch: x86_64
|
include: [ ]
|
||||||
update-information: 'gh-releases-zsync|Dummerle|Rare|latest|Rare-*x86_64.AppImage.zsync'
|
exclude: [ ]
|
||||||
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
fedora:
|
fedora:
|
||||||
image: appimagecrafters/tests-env:fedora-30
|
image: appimagecrafters/tests-env:fedora-30
|
||||||
command: ./AppRun
|
command: ./AppRun
|
||||||
use_host_x: true
|
use_host_x: true
|
||||||
debian:
|
debian-stable:
|
||||||
image: appimagecrafters/tests-env:debian-stable
|
image: appimagecrafters/tests-env:debian-stable
|
||||||
command: ./AppRun
|
command: ./AppRun
|
||||||
use_host_x: true
|
use_host_x: true
|
||||||
arch:
|
archlinux-latest:
|
||||||
image: appimagecrafters/tests-env:archlinux-latest
|
image: appimagecrafters/tests-env:archlinux-latest
|
||||||
command: ./AppRun
|
command: ./AppRun
|
||||||
use_host_x: true
|
use_host_x: true
|
||||||
centos:
|
centos-7:
|
||||||
image: appimagecrafters/tests-env:centos-7
|
image: appimagecrafters/tests-env:centos-7
|
||||||
command: ./AppRun
|
command: ./AppRun
|
||||||
use_host_x: true
|
use_host_x: true
|
||||||
ubuntu:
|
ubuntu-xenial:
|
||||||
image: appimagecrafters/tests-env:ubuntu-xenial
|
image: appimagecrafters/tests-env:ubuntu-xenial
|
||||||
command: ./AppRun
|
command: ./AppRun
|
||||||
use_host_x: true
|
use_host_x: true
|
||||||
|
AppImage:
|
||||||
|
arch: x86_64
|
||||||
|
update-information: gh-releases-zsync|Dummerle|Rare|latest|Rare-*x86_64.AppImage.zsync
|
||||||
|
|
|
@ -110,9 +110,10 @@ class App(QApplication):
|
||||||
self.tray_icon.start_rare.triggered.connect(self.mainwindow.show)
|
self.tray_icon.start_rare.triggered.connect(self.mainwindow.show)
|
||||||
self.tray_icon.activated.connect(self.tray)
|
self.tray_icon.activated.connect(self.tray)
|
||||||
if not offline:
|
if not offline:
|
||||||
self.mainwindow.tab_widget.downloadTab.finished.connect(lambda update: self.tray_icon.showMessage(
|
self.mainwindow.tab_widget.downloadTab.finished.connect(lambda x: self.tray_icon.showMessage(
|
||||||
self.tr("Download finished"), self.tr("Download finished. Game is playable now"),
|
self.tr("Download finished"),
|
||||||
QSystemTrayIcon.Information, 4000) if update else None)
|
self.tr("Download finished. {} is playable now").format(self.core.get_game(x[1]).app_title),
|
||||||
|
QSystemTrayIcon.Information, 4000) if x[0] else None)
|
||||||
|
|
||||||
if not self.args.silent:
|
if not self.args.silent:
|
||||||
self.mainwindow.show()
|
self.mainwindow.show()
|
||||||
|
|
|
@ -95,7 +95,9 @@ class InstallDialog(QDialog, Ui_InstallDialog):
|
||||||
self.reject_close = True
|
self.reject_close = True
|
||||||
|
|
||||||
self.resize(self.minimumSize())
|
self.resize(self.minimumSize())
|
||||||
self.setFixedSize(self.size())
|
# self.setFixedSize(self.size())
|
||||||
|
|
||||||
|
self.verify_clicked()
|
||||||
|
|
||||||
def execute(self):
|
def execute(self):
|
||||||
if self.silent:
|
if self.silent:
|
||||||
|
@ -154,9 +156,6 @@ class InstallDialog(QDialog, Ui_InstallDialog):
|
||||||
|
|
||||||
def on_worker_result(self, dl_item: InstallDownloadModel):
|
def on_worker_result(self, dl_item: InstallDownloadModel):
|
||||||
self.dl_item.download = dl_item
|
self.dl_item.download = dl_item
|
||||||
# TODO: Check available size and act accordingly
|
|
||||||
# TODO: (show message in label | color it | disable install unless ignore)
|
|
||||||
# TODO: Find a way to get the installation size delta and show it
|
|
||||||
download_size = self.dl_item.download.analysis.dl_size
|
download_size = self.dl_item.download.analysis.dl_size
|
||||||
install_size = self.dl_item.download.analysis.install_size
|
install_size = self.dl_item.download.analysis.install_size
|
||||||
if download_size:
|
if download_size:
|
||||||
|
@ -175,6 +174,7 @@ class InstallDialog(QDialog, Ui_InstallDialog):
|
||||||
self.warn_label.setVisible(True)
|
self.warn_label.setVisible(True)
|
||||||
self.warn_message.setText("\n".join(str(i) for i in dl_item.res.warnings))
|
self.warn_message.setText("\n".join(str(i) for i in dl_item.res.warnings))
|
||||||
self.warn_message.setVisible(True)
|
self.warn_message.setVisible(True)
|
||||||
|
|
||||||
if self.silent:
|
if self.silent:
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
|
@ -147,8 +147,6 @@ class DownloadTab(QWidget):
|
||||||
if len(self.update_widgets) == 0:
|
if len(self.update_widgets) == 0:
|
||||||
self.update_text.setVisible(True)
|
self.update_text.setVisible(True)
|
||||||
|
|
||||||
for i in self.update_widgets.values():
|
|
||||||
i.update_button.setDisabled(False)
|
|
||||||
|
|
||||||
self.finished.emit((True, app_name))
|
self.finished.emit((True, app_name))
|
||||||
|
|
||||||
|
@ -165,7 +163,7 @@ class DownloadTab(QWidget):
|
||||||
elif text == "stop":
|
elif text == "stop":
|
||||||
self.reset_infos()
|
self.reset_infos()
|
||||||
self.active_game = None
|
self.active_game = None
|
||||||
self.finished.emit((False, None))
|
self.finished.emit((False, ""))
|
||||||
if self.dl_queue:
|
if self.dl_queue:
|
||||||
self.start_installation(self.dl_queue[0])
|
self.start_installation(self.dl_queue[0])
|
||||||
|
|
||||||
|
|
|
@ -297,53 +297,12 @@ class GameList(QStackedWidget):
|
||||||
self.widgets.pop(widgets[0].game.app_name)
|
self.widgets.pop(widgets[0].game.app_name)
|
||||||
|
|
||||||
# QWidget().setLayout(self.icon_layout)
|
# QWidget().setLayout(self.icon_layout)
|
||||||
icon_layout = FlowLayout()
|
|
||||||
|
|
||||||
# QWidget().setLayout(self.list_layout)
|
|
||||||
list_layout = QVBoxLayout()
|
|
||||||
|
|
||||||
igame = self.core.get_installed_game(app_name)
|
igame = self.core.get_installed_game(app_name)
|
||||||
self.add_installed_widget(igame)
|
self.add_installed_widget(igame)
|
||||||
|
|
||||||
for igame in sorted(self.core.get_installed_list(), key=lambda x: x.title):
|
self._update_games()
|
||||||
i_widget, l_widget = self.widgets[igame.app_name]
|
|
||||||
icon_layout.addWidget(i_widget)
|
|
||||||
list_layout.addWidget(l_widget)
|
|
||||||
|
|
||||||
self.uninstalled_names = []
|
|
||||||
installed_names = [i.app_name for i in self.core.get_installed_list()]
|
|
||||||
# get Uninstalled games
|
|
||||||
games, self.dlcs = self.core.get_game_and_dlc_list()
|
|
||||||
for game in sorted(games, key=lambda x: x.app_title):
|
|
||||||
if not game.app_name in installed_names:
|
|
||||||
self.uninstalled_names.append(game)
|
|
||||||
for game in self.uninstalled_names:
|
|
||||||
i_widget, list_widget = self.widgets[game.app_name]
|
|
||||||
icon_layout.addWidget(i_widget)
|
|
||||||
list_layout.addWidget(list_widget)
|
|
||||||
|
|
||||||
QWidget().setLayout(self.icon_layout)
|
|
||||||
QWidget().setLayout(self.list_layout)
|
|
||||||
|
|
||||||
self.icon_widget = QWidget()
|
|
||||||
self.list_widget = QWidget()
|
|
||||||
|
|
||||||
self.icon_widget.setLayout(icon_layout)
|
|
||||||
self.list_widget.setLayout(list_layout)
|
|
||||||
|
|
||||||
self.list_scrollarea.setWidget(QWidget())
|
|
||||||
self.icon_scrollarea.setWidget(QWidget())
|
|
||||||
|
|
||||||
self.icon_scrollarea.setWidget(self.icon_widget)
|
|
||||||
self.list_scrollarea.setWidget(self.list_widget)
|
|
||||||
|
|
||||||
self.icon_layout = icon_layout
|
|
||||||
self.list_layout = list_layout
|
|
||||||
|
|
||||||
self.icon_widget.setLayout(self.icon_layout)
|
|
||||||
self.list_widget.setLayout(self.list_layout)
|
|
||||||
|
|
||||||
self.update()
|
|
||||||
|
|
||||||
# uninstalled
|
# uninstalled
|
||||||
elif not self.core.is_installed(widgets[0].game.app_name) and isinstance(widgets[0],
|
elif not self.core.is_installed(widgets[0].game.app_name) and isinstance(widgets[0],
|
||||||
|
@ -356,8 +315,8 @@ class GameList(QStackedWidget):
|
||||||
game = self.core.get_game(app_name, True)
|
game = self.core.get_game(app_name, True)
|
||||||
self.add_uninstalled_widget(game)
|
self.add_uninstalled_widget(game)
|
||||||
|
|
||||||
self.icon_layout.addWidget(self.widgets[app_name][0])
|
self._update_games()
|
||||||
self.list_layout.addWidget(self.widgets[app_name][1])
|
|
||||||
else:
|
else:
|
||||||
installed_names = [i.app_name for i in self.core.get_installed_list()]
|
installed_names = [i.app_name for i in self.core.get_installed_list()]
|
||||||
# get Uninstalled games
|
# get Uninstalled games
|
||||||
|
@ -407,3 +366,49 @@ class GameList(QStackedWidget):
|
||||||
i_widget, list_widget = self.widgets[name]
|
i_widget, list_widget = self.widgets[name]
|
||||||
self.icon_layout.addWidget(i_widget)
|
self.icon_layout.addWidget(i_widget)
|
||||||
self.list_layout.addWidget(list_widget)
|
self.list_layout.addWidget(list_widget)
|
||||||
|
|
||||||
|
def _update_games(self):
|
||||||
|
# new layouts to remove from old layout
|
||||||
|
icon_layout = FlowLayout()
|
||||||
|
# QWidget().setLayout(self.list_layout)
|
||||||
|
list_layout = QVBoxLayout()
|
||||||
|
|
||||||
|
for igame in sorted(self.core.get_installed_list(), key=lambda x: x.title):
|
||||||
|
i_widget, l_widget = self.widgets[igame.app_name]
|
||||||
|
icon_layout.addWidget(i_widget)
|
||||||
|
list_layout.addWidget(l_widget)
|
||||||
|
|
||||||
|
self.uninstalled_names = []
|
||||||
|
installed_names = [i.app_name for i in self.core.get_installed_list()]
|
||||||
|
# get Uninstalled games
|
||||||
|
games, self.dlcs = self.core.get_game_and_dlc_list()
|
||||||
|
for game in sorted(games, key=lambda x: x.app_title):
|
||||||
|
if not game.app_name in installed_names:
|
||||||
|
self.uninstalled_names.append(game)
|
||||||
|
for game in self.uninstalled_names:
|
||||||
|
i_widget, list_widget = self.widgets[game.app_name]
|
||||||
|
icon_layout.addWidget(i_widget)
|
||||||
|
list_layout.addWidget(list_widget)
|
||||||
|
|
||||||
|
QWidget().setLayout(self.icon_layout)
|
||||||
|
QWidget().setLayout(self.list_layout)
|
||||||
|
|
||||||
|
self.icon_widget = QWidget()
|
||||||
|
self.list_widget = QWidget()
|
||||||
|
|
||||||
|
self.icon_widget.setLayout(icon_layout)
|
||||||
|
self.list_widget.setLayout(list_layout)
|
||||||
|
|
||||||
|
self.list_scrollarea.setWidget(QWidget())
|
||||||
|
self.icon_scrollarea.setWidget(QWidget())
|
||||||
|
|
||||||
|
self.icon_scrollarea.setWidget(self.icon_widget)
|
||||||
|
self.list_scrollarea.setWidget(self.list_widget)
|
||||||
|
|
||||||
|
self.icon_layout = icon_layout
|
||||||
|
self.list_layout = list_layout
|
||||||
|
|
||||||
|
self.icon_widget.setLayout(self.icon_layout)
|
||||||
|
self.list_widget.setLayout(self.list_layout)
|
||||||
|
|
||||||
|
self.update()
|
||||||
|
|
Loading…
Reference in a new issue