From f9b53855139b5097e1fabbff960ddc452503aa38 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Sun, 5 Feb 2023 19:12:14 +0200 Subject: [PATCH] DownloadsTab: Paint the background of the active download stats with the image of the game The Qt Designer UI file for the downloads tab was removed since the tab is simple enough to be implemented in code now. --- rare/components/tabs/downloads/__init__.py | 109 ++++--- rare/components/tabs/downloads/download.py | 79 +++++ rare/components/tabs/downloads/thread.py | 6 +- rare/components/tabs/downloads/widgets.py | 6 +- .../components/tabs/downloads/base_widget.py | 95 ++++++ .../components/tabs/downloads/base_widget.ui | 153 +++++++++ .../tabs/downloads/download_widget.py | 175 +++++++---- .../tabs/downloads/download_widget.ui | 293 +++++++++++------- .../tabs/downloads/downloads_tab.py | 188 ----------- .../tabs/downloads/downloads_tab.ui | 270 ---------------- 10 files changed, 687 insertions(+), 687 deletions(-) create mode 100644 rare/components/tabs/downloads/download.py create mode 100644 rare/ui/components/tabs/downloads/base_widget.py create mode 100644 rare/ui/components/tabs/downloads/base_widget.ui delete mode 100644 rare/ui/components/tabs/downloads/downloads_tab.py delete mode 100644 rare/ui/components/tabs/downloads/downloads_tab.ui diff --git a/rare/components/tabs/downloads/__init__.py b/rare/components/tabs/downloads/__init__.py index 812b2b04..fb2878db 100644 --- a/rare/components/tabs/downloads/__init__.py +++ b/rare/components/tabs/downloads/__init__.py @@ -1,24 +1,25 @@ import datetime -from ctypes import c_ulonglong +from ctypes import c_uint64 from logging import getLogger from typing import Union, Optional -from PyQt5.QtCore import pyqtSignal, QSettings, pyqtSlot, QThreadPool +from PyQt5.QtCore import pyqtSignal, QSettings, pyqtSlot, QThreadPool, Qt +from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import ( QWidget, - QMessageBox, + QMessageBox, QScrollArea, QVBoxLayout, QSizePolicy, ) from rare.components.dialogs.install_dialog import InstallDialog from rare.components.dialogs.uninstall_dialog import UninstallDialog from rare.lgndr.models.downloading import UIUpdate from rare.models.game import RareGame -from rare.models.install import InstallOptionsModel, InstallQueueItemModel, UninstallOptionsModel, InstallDownloadModel +from rare.models.install import InstallOptionsModel, InstallQueueItemModel, UninstallOptionsModel from rare.shared import RareCore from rare.shared.workers.install_info import InstallInfoWorker from rare.shared.workers.uninstall import UninstallWorker -from rare.ui.components.tabs.downloads.downloads_tab import Ui_DownloadsTab from rare.utils.misc import get_size, create_desktop_link +from .download import DownloadWidget from .groups import UpdateGroup, QueueGroup from .thread import DlThread, DlResultModel, DlResultCode from .widgets import UpdateWidget, QueueWidget @@ -36,38 +37,51 @@ class DownloadsTab(QWidget): def __init__(self, parent=None): super(DownloadsTab, self).__init__(parent=parent) - self.ui = Ui_DownloadsTab() - self.ui.setupUi(self) self.rcore = RareCore.instance() - self.core = self.rcore.core() - self.signals = self.rcore.signals() - self.args = self.rcore.args() + self.core = RareCore.instance().core() + self.signals = RareCore.instance().signals() + self.args = RareCore.instance().args() - self.thread: Optional[DlThread] = None - self.threadpool = QThreadPool.globalInstance() + self.__thread: Optional[DlThread] = None - self.ui.kill_button.clicked.connect(self.stop_download) + layout = QVBoxLayout(self) + + self.download_widget = DownloadWidget(self) + self.download_widget.ui.kill_button.clicked.connect(self.stop_download) + layout.addWidget(self.download_widget) + + self.queue_scrollarea = QScrollArea(self) + self.queue_scrollarea.setWidgetResizable(True) + self.queue_scrollarea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) + self.queue_scrollarea.setFrameStyle(QScrollArea.Plain | QScrollArea.NoFrame) + layout.addWidget(self.queue_scrollarea) + + queue_contents = QWidget(self.queue_scrollarea) + queue_contents.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) + self.queue_scrollarea.setWidget(queue_contents) + + queue_contents_layout = QVBoxLayout(queue_contents) + queue_contents_layout.setContentsMargins(0, 0, 3, 0) self.queue_group = QueueGroup(self) self.queue_group.update_count.connect(self.update_queues_count) self.queue_group.removed.connect(self.__on_queue_removed) self.queue_group.force.connect(self.__on_queue_force) - self.ui.queue_scroll_contents_layout.addWidget(self.queue_group) + queue_contents_layout.addWidget(self.queue_group) self.updates_group = UpdateGroup(self) self.updates_group.update_count.connect(self.update_queues_count) self.updates_group.enqueue.connect(self.__get_install_options) - self.ui.queue_scroll_contents_layout.addWidget(self.updates_group) + queue_contents_layout.addWidget(self.updates_group) self.__check_updates() + self.__reset_download() self.signals.game.install.connect(self.__get_install_options) self.signals.game.uninstall.connect(self.__get_uninstall_options) self.signals.download.enqueue.connect(self.__add_update) self.signals.download.dequeue.connect(self.__remove_update) - self.__reset_download() - self.__forced_item: Optional[InstallQueueItemModel] = None self.__omit_requeue = False @@ -79,7 +93,7 @@ class DownloadsTab(QWidget): @property def is_download_active(self): - return self.thread is not None + return self.__thread is not None def __check_updates(self): for rgame in self.rcore.updates: @@ -100,7 +114,7 @@ class DownloadsTab(QWidget): @pyqtSlot(str) def __remove_update(self, app_name): - if self.thread and self.thread.item.options.app_name == app_name: + if self.__thread and self.__thread.item.options.app_name == app_name: self.stop_download(omit_queue=True) if self.queue_group.contains(app_name): self.queue_group.remove(app_name) @@ -119,12 +133,13 @@ class DownloadsTab(QWidget): if self.updates_group.contains(app_name): self.updates_group.set_widget_enabled(app_name, True) else: - if self.rcore.get_game(app_name).is_installed: + rgame = self.rcore.get_game(app_name) + if rgame.is_installed and rgame.has_update: self.__add_update(app_name) @pyqtSlot(InstallQueueItemModel) def __on_queue_force(self, item: InstallQueueItemModel): - if self.thread: + if self.__thread: self.stop_download() self.__forced_item = item else: @@ -139,15 +154,15 @@ class DownloadsTab(QWidget): Defaults to `False` :return: """ - self.thread.kill() - self.ui.kill_button.setEnabled(False) + self.__thread.kill() + self.download_widget.ui.kill_button.setEnabled(False) # lk: if we are exitin Rare, waif for thread to finish # `self.on_exit` control whether we try to add the download # back in the queue. If we are on exit we wait for the thread # to finish, we do not care about handling the result really self.__omit_requeue = omit_queue if omit_queue: - self.thread.wait() + self.__thread.wait() def __refresh_download(self, item: InstallQueueItemModel): worker = InstallInfoWorker(self.core, item.options) @@ -160,7 +175,7 @@ class DownloadsTab(QWidget): worker.signals.finished.connect( lambda: logger.info(f"Download refresh worker finished for {item.options.app_name}") ) - self.threadpool.start(worker) + QThreadPool.globalInstance().start(worker) def __start_download(self, item: InstallQueueItemModel): rgame = self.rcore.get_game(item.options.app_name) @@ -178,21 +193,24 @@ class DownloadsTab(QWidget): thread.progress.connect(self.__on_download_progress) thread.finished.connect(thread.deleteLater) thread.start() - self.thread = thread - self.ui.kill_button.setDisabled(False) - self.ui.dl_name.setText(item.download.game.app_title) + self.__thread = thread + self.download_widget.ui.kill_button.setDisabled(False) + self.download_widget.ui.dl_name.setText(item.download.game.app_title) + self.download_widget.setPixmap( + RareCore.instance().image_manager().get_pixmap(rgame.app_name, True) + ) - @pyqtSlot(UIUpdate, c_ulonglong) - def __on_download_progress(self, ui_update: UIUpdate, dl_size: c_ulonglong): - self.ui.progress_bar.setValue(int(ui_update.progress)) - self.ui.dl_speed.setText(f"{get_size(ui_update.download_compressed_speed)}/s") - self.ui.cache_used.setText( + @pyqtSlot(UIUpdate, c_uint64) + def __on_download_progress(self, ui_update: UIUpdate, dl_size: c_uint64): + self.download_widget.ui.progress_bar.setValue(int(ui_update.progress)) + self.download_widget.ui.dl_speed.setText(f"{get_size(ui_update.download_compressed_speed)}/s") + self.download_widget.ui.cache_used.setText( f"{get_size(ui_update.cache_usage) if ui_update.cache_usage > 1023 else '0KB'}" ) - self.ui.downloaded.setText( + self.download_widget.ui.downloaded.setText( f"{get_size(ui_update.total_downloaded)} / {get_size(dl_size.value)}" ) - self.ui.time_left.setText(get_time(ui_update.estimated_time_left)) + self.download_widget.ui.time_left.setText(get_time(ui_update.estimated_time_left)) def __requeue_download(self, item: InstallQueueItemModel): rgame = self.rcore.get_game(item.options.app_name) @@ -244,14 +262,15 @@ class DownloadsTab(QWidget): self.__reset_download() def __reset_download(self): - self.ui.kill_button.setDisabled(True) - self.ui.dl_name.setText(self.tr("No active download")) - self.ui.progress_bar.setValue(0) - self.ui.dl_speed.setText("n/a") - self.ui.time_left.setText("n/a") - self.ui.cache_used.setText("n/a") - self.ui.downloaded.setText("n/a") - self.thread = None + self.download_widget.setPixmap(QPixmap()) + self.download_widget.ui.kill_button.setDisabled(True) + self.download_widget.ui.dl_name.setText(self.tr("No active download")) + self.download_widget.ui.progress_bar.setValue(0) + self.download_widget.ui.dl_speed.setText("n/a") + self.download_widget.ui.time_left.setText("n/a") + self.download_widget.ui.cache_used.setText("n/a") + self.download_widget.ui.downloaded.setText("n/a") + self.__thread = None @pyqtSlot(InstallOptionsModel) def __get_install_options(self, options: InstallOptionsModel): @@ -267,7 +286,7 @@ class DownloadsTab(QWidget): def __on_install_dialog_closed(self, item: InstallQueueItemModel): if item: # lk: start update only if there is no other active thread and there is no queue - if self.thread is None and not self.queue_group.count(): + if self.__thread is None and not self.queue_group.count(): self.__start_download(item) else: rgame = self.rcore.get_game(item.options.app_name) @@ -302,7 +321,7 @@ class DownloadsTab(QWidget): rgame.set_installed(False) worker = UninstallWorker(self.core, rgame, options) worker.signals.result.connect(self.__on_uninstall_worker_result) - self.threadpool.start(worker) + QThreadPool.globalInstance().start(worker) @pyqtSlot(RareGame, bool, str) def __on_uninstall_worker_result(self, rgame: RareGame, success: bool, message: str): diff --git a/rare/components/tabs/downloads/download.py b/rare/components/tabs/downloads/download.py new file mode 100644 index 00000000..6e0ab97b --- /dev/null +++ b/rare/components/tabs/downloads/download.py @@ -0,0 +1,79 @@ +from PyQt5.QtCore import QRect, Qt +from PyQt5.QtGui import ( + QPixmap, + QImage, + QPainter, + QBrush, + QLinearGradient, + QPaintEvent, + QPalette, +) + +from rare.ui.components.tabs.downloads.download_widget import Ui_DownloadWidget +from rare.widgets.image_widget import ImageWidget + + +class DownloadWidget(ImageWidget): + def __init__(self, parent=None): + super(DownloadWidget, self).__init__(parent=parent) + self.ui = Ui_DownloadWidget() + self.ui.setupUi(self) + self.ui.progress_bar.setStyleSheet( + """ + QProgressBar { + background-color : rgba(0, 0, 0, 0.25); + } + """ + ) + + """ + Painting overrides + Let them live here until a better alternative is divised. + + This is also part of list_game_widget and maybe a + common base can bring them together. + """ + + def prepare_pixmap(self, pixmap: QPixmap) -> QPixmap: + device: QImage = QImage( + pixmap.size().width() * 3, + int(self.sizeHint().height() * pixmap.devicePixelRatioF()) + 1, + QImage.Format_ARGB32_Premultiplied, + ) + painter = QPainter(device) + brush = QBrush(pixmap) + painter.fillRect(device.rect(), brush) + # the gradient could be cached and reused as it is expensive + gradient = QLinearGradient(0, 0, device.width(), 0) + gradient.setColorAt(0.15, Qt.transparent) + gradient.setColorAt(0.5, Qt.black) + gradient.setColorAt(0.85, Qt.transparent) + painter.setCompositionMode(QPainter.CompositionMode_DestinationIn) + painter.fillRect(device.rect(), gradient) + painter.end() + ret = QPixmap.fromImage(device) + ret.setDevicePixelRatio(pixmap.devicePixelRatioF()) + return ret + + def setPixmap(self, pixmap: QPixmap) -> None: + # lk: trade some possible delay and start-up time + # lk: for faster rendering. Gradients are expensive + # lk: so pre-generate the image + super(DownloadWidget, self).setPixmap(self.prepare_pixmap(pixmap)) + + def paint_image_empty(self, painter: QPainter, a0: QPaintEvent) -> None: + # when pixmap object is not available yet, show a gray rectangle + painter.setOpacity(0.5 * self._opacity) + painter.fillRect(a0.rect(), self.palette().color(QPalette.Background)) + + def paint_image_cover(self, painter: QPainter, a0: QPaintEvent) -> None: + painter.setOpacity(self._opacity) + color = self.palette().color(QPalette.Background) # .darker(75) + painter.fillRect(self.rect(), color) + brush = QBrush(self._pixmap) + brush.setTransform(self._transform) + width = int(self._pixmap.width() / self._pixmap.devicePixelRatioF()) + origin = self.width() - width + painter.setBrushOrigin(origin, 0) + fill_rect = QRect(origin, 0, width, self.height()) + painter.fillRect(fill_rect, brush) diff --git a/rare/components/tabs/downloads/thread.py b/rare/components/tabs/downloads/thread.py index beb72e51..43fecfb0 100644 --- a/rare/components/tabs/downloads/thread.py +++ b/rare/components/tabs/downloads/thread.py @@ -2,7 +2,7 @@ import os import platform import queue import time -from ctypes import c_ulonglong +from ctypes import c_uint64 from dataclasses import dataclass from enum import IntEnum from logging import getLogger @@ -39,14 +39,14 @@ class DlResultModel: class DlThread(QThread): result = pyqtSignal(DlResultModel) - progress = pyqtSignal(UIUpdate, c_ulonglong) + progress = pyqtSignal(UIUpdate, c_uint64) def __init__(self, item: InstallQueueItemModel, rgame: RareGame, core: LegendaryCore, debug: bool = False): super(DlThread, self).__init__() self.dlm_signals: DLManagerSignals = DLManagerSignals() self.core: LegendaryCore = core self.item: InstallQueueItemModel = item - self.dl_size = c_ulonglong(item.download.analysis.dl_size) + self.dl_size = c_uint64(item.download.analysis.dl_size) self.rgame = rgame self.debug = debug diff --git a/rare/components/tabs/downloads/widgets.py b/rare/components/tabs/downloads/widgets.py index 93f29189..89d376d0 100644 --- a/rare/components/tabs/downloads/widgets.py +++ b/rare/components/tabs/downloads/widgets.py @@ -10,7 +10,7 @@ from qtawesome import icon from rare.models.install import InstallQueueItemModel, InstallOptionsModel, InstallDownloadModel from rare.shared import RareCore, ImageManagerSingleton from rare.shared.workers.install_info import InstallInfoWorker -from rare.ui.components.tabs.downloads.download_widget import Ui_DownloadWidget +from rare.ui.components.tabs.downloads.base_widget import Ui_BaseWidget from rare.ui.components.tabs.downloads.info_widget import Ui_InfoWidget from rare.utils.misc import get_size, widget_object_name, elide_text from rare.widgets.image_widget import ImageWidget, ImageSize @@ -65,7 +65,7 @@ class UpdateWidget(QFrame): def __init__(self, game: Game, igame: InstalledGame, parent=None): super(UpdateWidget, self).__init__(parent=parent) - self.ui = Ui_DownloadWidget() + self.ui = Ui_BaseWidget() self.ui.setupUi(self) # lk: setObjectName has to be after `setupUi` because it is also set in that function self.setObjectName(widget_object_name(self, game.app_name)) @@ -107,7 +107,7 @@ class QueueWidget(QFrame): def __init__(self, item: InstallQueueItemModel, old_igame: InstalledGame, parent=None): super(QueueWidget, self).__init__(parent=parent) - self.ui = Ui_DownloadWidget() + self.ui = Ui_BaseWidget() self.ui.setupUi(self) # lk: setObjectName has to be after `setupUi` because it is also set in that function self.setObjectName(widget_object_name(self, item.options.app_name)) diff --git a/rare/ui/components/tabs/downloads/base_widget.py b/rare/ui/components/tabs/downloads/base_widget.py new file mode 100644 index 00000000..5b9fbb4c --- /dev/null +++ b/rare/ui/components/tabs/downloads/base_widget.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'rare/ui/components/tabs/downloads/base_widget.ui' +# +# Created by: PyQt5 UI code generator 5.15.8 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_BaseWidget(object): + def setupUi(self, BaseWidget): + BaseWidget.setObjectName("BaseWidget") + BaseWidget.resize(332, 70) + BaseWidget.setWindowTitle("BaseWidget") + BaseWidget.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.download_widget_layout = QtWidgets.QHBoxLayout(BaseWidget) + self.download_widget_layout.setContentsMargins(0, 0, 0, 0) + self.download_widget_layout.setObjectName("download_widget_layout") + self.info_layout = QtWidgets.QHBoxLayout() + self.info_layout.setObjectName("info_layout") + self.download_widget_layout.addLayout(self.info_layout) + self.move_buttons = QtWidgets.QWidget(BaseWidget) + self.move_buttons.setObjectName("move_buttons") + self.move_buttons_layout = QtWidgets.QVBoxLayout(self.move_buttons) + self.move_buttons_layout.setContentsMargins(0, 0, 0, 0) + self.move_buttons_layout.setObjectName("move_buttons_layout") + self.move_up_button = QtWidgets.QPushButton(self.move_buttons) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.move_up_button.sizePolicy().hasHeightForWidth()) + self.move_up_button.setSizePolicy(sizePolicy) + self.move_up_button.setText("") + self.move_up_button.setProperty("isSquare", 1) + self.move_up_button.setObjectName("move_up_button") + self.move_buttons_layout.addWidget(self.move_up_button, 0, QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.move_down_button = QtWidgets.QPushButton(self.move_buttons) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.move_down_button.sizePolicy().hasHeightForWidth()) + self.move_down_button.setSizePolicy(sizePolicy) + self.move_down_button.setText("") + self.move_down_button.setProperty("isSquare", 1) + self.move_down_button.setObjectName("move_down_button") + self.move_buttons_layout.addWidget(self.move_down_button, 0, QtCore.Qt.AlignLeft|QtCore.Qt.AlignBottom) + self.download_widget_layout.addWidget(self.move_buttons) + self.queue_buttons = QtWidgets.QWidget(BaseWidget) + self.queue_buttons.setObjectName("queue_buttons") + self.queue_buttons_layout = QtWidgets.QVBoxLayout(self.queue_buttons) + self.queue_buttons_layout.setContentsMargins(0, 0, 0, 0) + self.queue_buttons_layout.setObjectName("queue_buttons_layout") + self.force_button = QtWidgets.QPushButton(self.queue_buttons) + self.force_button.setObjectName("force_button") + self.queue_buttons_layout.addWidget(self.force_button) + self.remove_button = QtWidgets.QPushButton(self.queue_buttons) + self.remove_button.setObjectName("remove_button") + self.queue_buttons_layout.addWidget(self.remove_button, 0, QtCore.Qt.AlignTop) + self.download_widget_layout.addWidget(self.queue_buttons) + self.update_buttons = QtWidgets.QWidget(BaseWidget) + self.update_buttons.setObjectName("update_buttons") + self.update_buttons_layout = QtWidgets.QVBoxLayout(self.update_buttons) + self.update_buttons_layout.setContentsMargins(0, 0, 0, 0) + self.update_buttons_layout.setObjectName("update_buttons_layout") + self.update_button = QtWidgets.QPushButton(self.update_buttons) + self.update_button.setObjectName("update_button") + self.update_buttons_layout.addWidget(self.update_button, 0, QtCore.Qt.AlignTop) + self.settings_button = QtWidgets.QPushButton(self.update_buttons) + self.settings_button.setObjectName("settings_button") + self.update_buttons_layout.addWidget(self.settings_button, 0, QtCore.Qt.AlignTop) + self.download_widget_layout.addWidget(self.update_buttons) + self.download_widget_layout.setStretch(0, 1) + + self.retranslateUi(BaseWidget) + + def retranslateUi(self, BaseWidget): + _translate = QtCore.QCoreApplication.translate + self.force_button.setText(_translate("BaseWidget", "Update now")) + self.remove_button.setText(_translate("BaseWidget", "Remove from queue")) + self.update_button.setText(_translate("BaseWidget", "Update game")) + self.settings_button.setText(_translate("BaseWidget", "Update with settings")) + + +if __name__ == "__main__": + import sys + app = QtWidgets.QApplication(sys.argv) + BaseWidget = QtWidgets.QFrame() + ui = Ui_BaseWidget() + ui.setupUi(BaseWidget) + BaseWidget.show() + sys.exit(app.exec_()) diff --git a/rare/ui/components/tabs/downloads/base_widget.ui b/rare/ui/components/tabs/downloads/base_widget.ui new file mode 100644 index 00000000..bbc0218d --- /dev/null +++ b/rare/ui/components/tabs/downloads/base_widget.ui @@ -0,0 +1,153 @@ + + + BaseWidget + + + + 0 + 0 + 332 + 70 + + + + BaseWidget + + + QFrame::StyledPanel + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + + + 1 + + + + + + + + 0 + 0 + + + + + + + 1 + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Update now + + + + + + + Remove from queue + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Update game + + + + + + + Update with settings + + + + + + + + + + + diff --git a/rare/ui/components/tabs/downloads/download_widget.py b/rare/ui/components/tabs/downloads/download_widget.py index 5b5b20d4..4b0b3599 100644 --- a/rare/ui/components/tabs/downloads/download_widget.py +++ b/rare/ui/components/tabs/downloads/download_widget.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'rare/ui/components/tabs/downloads/download_widget.ui' # -# Created by: PyQt5 UI code generator 5.15.7 +# Created by: PyQt5 UI code generator 5.15.8 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. @@ -14,81 +14,136 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_DownloadWidget(object): def setupUi(self, DownloadWidget): DownloadWidget.setObjectName("DownloadWidget") - DownloadWidget.resize(332, 70) + DownloadWidget.resize(490, 90) DownloadWidget.setWindowTitle("DownloadWidget") - DownloadWidget.setFrameShape(QtWidgets.QFrame.StyledPanel) - self.download_widget_layout = QtWidgets.QHBoxLayout(DownloadWidget) - self.download_widget_layout.setContentsMargins(0, 0, 0, 0) - self.download_widget_layout.setObjectName("download_widget_layout") - self.move_buttons = QtWidgets.QWidget(DownloadWidget) - self.move_buttons.setObjectName("move_buttons") - self.move_buttons_layout = QtWidgets.QVBoxLayout(self.move_buttons) - self.move_buttons_layout.setContentsMargins(0, 0, 0, 0) - self.move_buttons_layout.setObjectName("move_buttons_layout") - self.move_up_button = QtWidgets.QPushButton(self.move_buttons) + self.active_download_layout = QtWidgets.QGridLayout(DownloadWidget) + self.active_download_layout.setContentsMargins(0, 0, 0, 0) + self.active_download_layout.setObjectName("active_download_layout") + self.downloaded = QtWidgets.QLabel(DownloadWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.downloaded.sizePolicy().hasHeightForWidth()) + self.downloaded.setSizePolicy(sizePolicy) + self.downloaded.setText("downloaded") + self.downloaded.setObjectName("downloaded") + self.active_download_layout.addWidget(self.downloaded, 2, 3, 1, 1) + self.dl_speed_label = QtWidgets.QLabel(DownloadWidget) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.dl_speed_label.setFont(font) + self.dl_speed_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.dl_speed_label.setObjectName("dl_speed_label") + self.active_download_layout.addWidget(self.dl_speed_label, 1, 2, 1, 1) + self.dl_name_label = QtWidgets.QLabel(DownloadWidget) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.dl_name_label.setFont(font) + self.dl_name_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.dl_name_label.setObjectName("dl_name_label") + self.active_download_layout.addWidget(self.dl_name_label, 0, 0, 1, 1) + self.cache_used = QtWidgets.QLabel(DownloadWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.cache_used.sizePolicy().hasHeightForWidth()) + self.cache_used.setSizePolicy(sizePolicy) + self.cache_used.setText("cache_used") + self.cache_used.setObjectName("cache_used") + self.active_download_layout.addWidget(self.cache_used, 2, 1, 1, 1) + self.time_left = QtWidgets.QLabel(DownloadWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.time_left.sizePolicy().hasHeightForWidth()) + self.time_left.setSizePolicy(sizePolicy) + self.time_left.setText("time_left") + self.time_left.setObjectName("time_left") + self.active_download_layout.addWidget(self.time_left, 1, 1, 1, 1) + self.downloaded_label = QtWidgets.QLabel(DownloadWidget) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.downloaded_label.setFont(font) + self.downloaded_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.downloaded_label.setObjectName("downloaded_label") + self.active_download_layout.addWidget(self.downloaded_label, 2, 2, 1, 1) + self.dl_speed = QtWidgets.QLabel(DownloadWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.dl_speed.sizePolicy().hasHeightForWidth()) + self.dl_speed.setSizePolicy(sizePolicy) + self.dl_speed.setText("dl_speed") + self.dl_speed.setObjectName("dl_speed") + self.active_download_layout.addWidget(self.dl_speed, 1, 3, 1, 1) + self.cache_used_label = QtWidgets.QLabel(DownloadWidget) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.cache_used_label.setFont(font) + self.cache_used_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.cache_used_label.setObjectName("cache_used_label") + self.active_download_layout.addWidget(self.cache_used_label, 2, 0, 1, 1) + self.dl_name = QtWidgets.QLabel(DownloadWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.dl_name.sizePolicy().hasHeightForWidth()) + self.dl_name.setSizePolicy(sizePolicy) + font = QtGui.QFont() + font.setBold(False) + font.setWeight(50) + self.dl_name.setFont(font) + self.dl_name.setText("dl_name") + self.dl_name.setObjectName("dl_name") + self.active_download_layout.addWidget(self.dl_name, 0, 1, 1, 3) + self.time_left_label = QtWidgets.QLabel(DownloadWidget) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.time_left_label.setFont(font) + self.time_left_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.time_left_label.setObjectName("time_left_label") + self.active_download_layout.addWidget(self.time_left_label, 1, 0, 1, 1) + self.kill_button = QtWidgets.QPushButton(DownloadWidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.move_up_button.sizePolicy().hasHeightForWidth()) - self.move_up_button.setSizePolicy(sizePolicy) - self.move_up_button.setText("") - self.move_up_button.setProperty("isSquare", 1) - self.move_up_button.setObjectName("move_up_button") - self.move_buttons_layout.addWidget(self.move_up_button, 0, QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) - self.move_down_button = QtWidgets.QPushButton(self.move_buttons) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHeightForWidth(self.kill_button.sizePolicy().hasHeightForWidth()) + self.kill_button.setSizePolicy(sizePolicy) + self.kill_button.setObjectName("kill_button") + self.active_download_layout.addWidget(self.kill_button, 3, 4, 1, 1) + self.progress_bar = QtWidgets.QProgressBar(DownloadWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.move_down_button.sizePolicy().hasHeightForWidth()) - self.move_down_button.setSizePolicy(sizePolicy) - self.move_down_button.setText("") - self.move_down_button.setProperty("isSquare", 1) - self.move_down_button.setObjectName("move_down_button") - self.move_buttons_layout.addWidget(self.move_down_button, 0, QtCore.Qt.AlignLeft|QtCore.Qt.AlignBottom) - self.download_widget_layout.addWidget(self.move_buttons) - self.info_layout = QtWidgets.QHBoxLayout() - self.info_layout.setObjectName("info_layout") - self.download_widget_layout.addLayout(self.info_layout) - self.queue_buttons = QtWidgets.QWidget(DownloadWidget) - self.queue_buttons.setObjectName("queue_buttons") - self.queue_buttons_layout = QtWidgets.QVBoxLayout(self.queue_buttons) - self.queue_buttons_layout.setContentsMargins(0, 0, 0, 0) - self.queue_buttons_layout.setObjectName("queue_buttons_layout") - self.force_button = QtWidgets.QPushButton(self.queue_buttons) - self.force_button.setObjectName("force_button") - self.queue_buttons_layout.addWidget(self.force_button) - self.remove_button = QtWidgets.QPushButton(self.queue_buttons) - self.remove_button.setObjectName("remove_button") - self.queue_buttons_layout.addWidget(self.remove_button, 0, QtCore.Qt.AlignTop) - self.download_widget_layout.addWidget(self.queue_buttons) - self.update_buttons = QtWidgets.QWidget(DownloadWidget) - self.update_buttons.setObjectName("update_buttons") - self.update_buttons_layout = QtWidgets.QVBoxLayout(self.update_buttons) - self.update_buttons_layout.setContentsMargins(0, 0, 0, 0) - self.update_buttons_layout.setObjectName("update_buttons_layout") - self.update_button = QtWidgets.QPushButton(self.update_buttons) - self.update_button.setObjectName("update_button") - self.update_buttons_layout.addWidget(self.update_button, 0, QtCore.Qt.AlignTop) - self.settings_button = QtWidgets.QPushButton(self.update_buttons) - self.settings_button.setObjectName("settings_button") - self.update_buttons_layout.addWidget(self.settings_button, 0, QtCore.Qt.AlignTop) - self.download_widget_layout.addWidget(self.update_buttons) - self.download_widget_layout.setStretch(1, 1) + sizePolicy.setHeightForWidth(self.progress_bar.sizePolicy().hasHeightForWidth()) + self.progress_bar.setSizePolicy(sizePolicy) + self.progress_bar.setProperty("value", 0) + self.progress_bar.setObjectName("progress_bar") + self.active_download_layout.addWidget(self.progress_bar, 3, 0, 1, 4) + self.active_download_layout.setColumnStretch(1, 1) + self.active_download_layout.setColumnStretch(3, 1) self.retranslateUi(DownloadWidget) def retranslateUi(self, DownloadWidget): _translate = QtCore.QCoreApplication.translate - self.force_button.setText(_translate("DownloadWidget", "Update now")) - self.remove_button.setText(_translate("DownloadWidget", "Remove from queue")) - self.update_button.setText(_translate("DownloadWidget", "Update game")) - self.settings_button.setText(_translate("DownloadWidget", "Update with settings")) + self.dl_speed_label.setText(_translate("DownloadWidget", "Download speed:")) + self.dl_name_label.setText(_translate("DownloadWidget", "Current download:")) + self.downloaded_label.setText(_translate("DownloadWidget", "Downloaded:")) + self.cache_used_label.setText(_translate("DownloadWidget", "Cache size:")) + self.time_left_label.setText(_translate("DownloadWidget", "Time left:")) + self.kill_button.setText(_translate("DownloadWidget", "Stop Download")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) - DownloadWidget = QtWidgets.QFrame() + DownloadWidget = QtWidgets.QWidget() ui = Ui_DownloadWidget() ui.setupUi(DownloadWidget) DownloadWidget.show() diff --git a/rare/ui/components/tabs/downloads/download_widget.ui b/rare/ui/components/tabs/downloads/download_widget.ui index a5fcb3d8..7cd0aa8a 100644 --- a/rare/ui/components/tabs/downloads/download_widget.ui +++ b/rare/ui/components/tabs/downloads/download_widget.ui @@ -1,22 +1,19 @@ DownloadWidget - + 0 0 - 332 - 70 + 490 + 90 DownloadWidget - - QFrame::StyledPanel - - + 0 @@ -29,121 +26,181 @@ 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - 1 - - - - - - - - 0 - 0 - - - - - - - 1 - - - - + + + + + 0 + 0 + + + + downloaded + - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Update now - - - - - - - Remove from queue - - - - + + + + + 75 + true + + + + Download speed: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Update game - - - - - - - Update with settings - - - - + + + + + 75 + true + + + + Current download: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + cache_used + + + + + + + + 0 + 0 + + + + time_left + + + + + + + + 75 + true + + + + Downloaded: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + dl_speed + + + + + + + + 75 + true + + + + Cache size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 50 + false + + + + dl_name + + + + + + + + 75 + true + + + + Time left: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + Stop Download + + + + + + + + 0 + 0 + + + + 0 + diff --git a/rare/ui/components/tabs/downloads/downloads_tab.py b/rare/ui/components/tabs/downloads/downloads_tab.py deleted file mode 100644 index aba75c7c..00000000 --- a/rare/ui/components/tabs/downloads/downloads_tab.py +++ /dev/null @@ -1,188 +0,0 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'rare/ui/components/tabs/downloads/downloads_tab.ui' -# -# Created by: PyQt5 UI code generator 5.15.7 -# -# WARNING: Any manual changes made to this file will be lost when pyuic5 is -# run again. Do not edit this file unless you know what you are doing. - - -from PyQt5 import QtCore, QtGui, QtWidgets - - -class Ui_DownloadsTab(object): - def setupUi(self, DownloadsTab): - DownloadsTab.setObjectName("DownloadsTab") - DownloadsTab.resize(677, 203) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(DownloadsTab.sizePolicy().hasHeightForWidth()) - DownloadsTab.setSizePolicy(sizePolicy) - DownloadsTab.setWindowTitle("Form") - self.downloads_tab_layout = QtWidgets.QVBoxLayout(DownloadsTab) - self.downloads_tab_layout.setObjectName("downloads_tab_layout") - self.download_layout = QtWidgets.QGridLayout() - self.download_layout.setObjectName("download_layout") - self.dl_speed_label = QtWidgets.QLabel(DownloadsTab) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.dl_speed_label.setFont(font) - self.dl_speed_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.dl_speed_label.setObjectName("dl_speed_label") - self.download_layout.addWidget(self.dl_speed_label, 1, 2, 1, 1) - self.dl_speed = QtWidgets.QLabel(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.dl_speed.sizePolicy().hasHeightForWidth()) - self.dl_speed.setSizePolicy(sizePolicy) - self.dl_speed.setText("dl_speed") - self.dl_speed.setObjectName("dl_speed") - self.download_layout.addWidget(self.dl_speed, 1, 3, 1, 1) - self.cache_used = QtWidgets.QLabel(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.cache_used.sizePolicy().hasHeightForWidth()) - self.cache_used.setSizePolicy(sizePolicy) - self.cache_used.setText("cache_used") - self.cache_used.setObjectName("cache_used") - self.download_layout.addWidget(self.cache_used, 2, 1, 1, 1) - self.time_left = QtWidgets.QLabel(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.time_left.sizePolicy().hasHeightForWidth()) - self.time_left.setSizePolicy(sizePolicy) - self.time_left.setText("time_left") - self.time_left.setObjectName("time_left") - self.download_layout.addWidget(self.time_left, 1, 1, 1, 1) - self.dl_name = QtWidgets.QLabel(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.dl_name.sizePolicy().hasHeightForWidth()) - self.dl_name.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setBold(False) - font.setWeight(50) - self.dl_name.setFont(font) - self.dl_name.setText("dl_name") - self.dl_name.setObjectName("dl_name") - self.download_layout.addWidget(self.dl_name, 0, 1, 1, 3) - self.dl_name_label = QtWidgets.QLabel(DownloadsTab) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.dl_name_label.setFont(font) - self.dl_name_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.dl_name_label.setObjectName("dl_name_label") - self.download_layout.addWidget(self.dl_name_label, 0, 0, 1, 1) - self.time_left_label = QtWidgets.QLabel(DownloadsTab) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.time_left_label.setFont(font) - self.time_left_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.time_left_label.setObjectName("time_left_label") - self.download_layout.addWidget(self.time_left_label, 1, 0, 1, 1) - self.downloaded_label = QtWidgets.QLabel(DownloadsTab) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.downloaded_label.setFont(font) - self.downloaded_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.downloaded_label.setObjectName("downloaded_label") - self.download_layout.addWidget(self.downloaded_label, 2, 2, 1, 1) - self.downloaded = QtWidgets.QLabel(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.downloaded.sizePolicy().hasHeightForWidth()) - self.downloaded.setSizePolicy(sizePolicy) - self.downloaded.setText("downloaded") - self.downloaded.setObjectName("downloaded") - self.download_layout.addWidget(self.downloaded, 2, 3, 1, 1) - self.cache_used_label = QtWidgets.QLabel(DownloadsTab) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.cache_used_label.setFont(font) - self.cache_used_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.cache_used_label.setObjectName("cache_used_label") - self.download_layout.addWidget(self.cache_used_label, 2, 0, 1, 1) - self.download_layout.setColumnStretch(1, 1) - self.download_layout.setColumnStretch(3, 1) - self.downloads_tab_layout.addLayout(self.download_layout) - self.progress_layout = QtWidgets.QHBoxLayout() - self.progress_layout.setObjectName("progress_layout") - self.progress_bar = QtWidgets.QProgressBar(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.progress_bar.sizePolicy().hasHeightForWidth()) - self.progress_bar.setSizePolicy(sizePolicy) - self.progress_bar.setProperty("value", 0) - self.progress_bar.setObjectName("progress_bar") - self.progress_layout.addWidget(self.progress_bar) - self.kill_button = QtWidgets.QPushButton(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.kill_button.sizePolicy().hasHeightForWidth()) - self.kill_button.setSizePolicy(sizePolicy) - self.kill_button.setObjectName("kill_button") - self.progress_layout.addWidget(self.kill_button) - self.downloads_tab_layout.addLayout(self.progress_layout) - self.active_layout = QtWidgets.QVBoxLayout() - self.active_layout.setObjectName("active_layout") - self.downloads_tab_layout.addLayout(self.active_layout) - self.queue_scroll = QtWidgets.QScrollArea(DownloadsTab) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.queue_scroll.sizePolicy().hasHeightForWidth()) - self.queue_scroll.setSizePolicy(sizePolicy) - self.queue_scroll.setFocusPolicy(QtCore.Qt.WheelFocus) - self.queue_scroll.setFrameShape(QtWidgets.QFrame.NoFrame) - self.queue_scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) - self.queue_scroll.setWidgetResizable(True) - self.queue_scroll.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) - self.queue_scroll.setObjectName("queue_scroll") - self.queue_scroll_contents = QtWidgets.QWidget() - self.queue_scroll_contents.setGeometry(QtCore.QRect(0, 0, 665, 16)) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.queue_scroll_contents.sizePolicy().hasHeightForWidth()) - self.queue_scroll_contents.setSizePolicy(sizePolicy) - self.queue_scroll_contents.setObjectName("queue_scroll_contents") - self.queue_scroll_contents_layout = QtWidgets.QVBoxLayout(self.queue_scroll_contents) - self.queue_scroll_contents_layout.setContentsMargins(0, 0, 3, 0) - self.queue_scroll_contents_layout.setObjectName("queue_scroll_contents_layout") - self.queue_scroll.setWidget(self.queue_scroll_contents) - self.downloads_tab_layout.addWidget(self.queue_scroll) - - self.retranslateUi(DownloadsTab) - - def retranslateUi(self, DownloadsTab): - _translate = QtCore.QCoreApplication.translate - self.dl_speed_label.setText(_translate("DownloadsTab", "Download speed:")) - self.dl_name_label.setText(_translate("DownloadsTab", "Current download:")) - self.time_left_label.setText(_translate("DownloadsTab", "Time left:")) - self.downloaded_label.setText(_translate("DownloadsTab", "Downloaded:")) - self.cache_used_label.setText(_translate("DownloadsTab", "Cache size:")) - self.kill_button.setText(_translate("DownloadsTab", "Stop Download")) - - -if __name__ == "__main__": - import sys - app = QtWidgets.QApplication(sys.argv) - DownloadsTab = QtWidgets.QWidget() - ui = Ui_DownloadsTab() - ui.setupUi(DownloadsTab) - DownloadsTab.show() - sys.exit(app.exec_()) diff --git a/rare/ui/components/tabs/downloads/downloads_tab.ui b/rare/ui/components/tabs/downloads/downloads_tab.ui deleted file mode 100644 index e00bc800..00000000 --- a/rare/ui/components/tabs/downloads/downloads_tab.ui +++ /dev/null @@ -1,270 +0,0 @@ - - - DownloadsTab - - - - 0 - 0 - 677 - 203 - - - - - 0 - 0 - - - - Form - - - - - - - - - 75 - true - - - - Download speed: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - dl_speed - - - - - - - - 0 - 0 - - - - cache_used - - - - - - - - 0 - 0 - - - - time_left - - - - - - - - 0 - 0 - - - - - 50 - false - - - - dl_name - - - - - - - - 75 - true - - - - Current download: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 75 - true - - - - Time left: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 75 - true - - - - Downloaded: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - downloaded - - - - - - - - 75 - true - - - - Cache size: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - 0 - 0 - - - - 0 - - - - - - - - 0 - 0 - - - - Stop Download - - - - - - - - - - - - - 0 - 0 - - - - Qt::WheelFocus - - - QFrame::NoFrame - - - Qt::ScrollBarAlwaysOff - - - true - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - 0 - 0 - 665 - 16 - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 3 - - - 0 - - - - - - - - - -