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 - - - - - - - - - -