1
0
Fork 0
mirror of synced 2024-06-24 17:20:23 +12:00

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.
This commit is contained in:
loathingKernel 2023-02-05 19:12:14 +02:00
parent 6ee6ce5255
commit f9b5385513
10 changed files with 687 additions and 687 deletions

View file

@ -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):

View file

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

View file

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

View file

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

View file

@ -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_())

View file

@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>BaseWidget</class>
<widget class="QFrame" name="BaseWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>332</width>
<height>70</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">BaseWidget</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<layout class="QHBoxLayout" name="download_widget_layout" stretch="1,0,0,0">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QHBoxLayout" name="info_layout"/>
</item>
<item>
<widget class="QWidget" name="move_buttons" native="true">
<layout class="QVBoxLayout" name="move_buttons_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item alignment="Qt::AlignLeft|Qt::AlignTop">
<widget class="QPushButton" name="move_up_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="isSquare" stdset="0">
<number>1</number>
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft|Qt::AlignBottom">
<widget class="QPushButton" name="move_down_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="isSquare" stdset="0">
<number>1</number>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="queue_buttons" native="true">
<layout class="QVBoxLayout" name="queue_buttons_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="force_button">
<property name="text">
<string>Update now</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="remove_button">
<property name="text">
<string>Remove from queue</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="update_buttons" native="true">
<layout class="QVBoxLayout" name="update_buttons_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="update_button">
<property name="text">
<string>Update game</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="settings_button">
<property name="text">
<string>Update with settings</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -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()

View file

@ -1,22 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DownloadWidget</class>
<widget class="QFrame" name="DownloadWidget">
<widget class="QWidget" name="DownloadWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>332</width>
<height>70</height>
<width>490</width>
<height>90</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">DownloadWidget</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<layout class="QHBoxLayout" name="download_widget_layout" stretch="0,1,0,0">
<layout class="QGridLayout" name="active_download_layout" columnstretch="0,1,0,1,0">
<property name="leftMargin">
<number>0</number>
</property>
@ -29,121 +26,181 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="move_buttons" native="true">
<layout class="QVBoxLayout" name="move_buttons_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item alignment="Qt::AlignLeft|Qt::AlignTop">
<widget class="QPushButton" name="move_up_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="isSquare" stdset="0">
<number>1</number>
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft|Qt::AlignBottom">
<widget class="QPushButton" name="move_down_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="isSquare" stdset="0">
<number>1</number>
</property>
</widget>
</item>
</layout>
<item row="2" column="3">
<widget class="QLabel" name="downloaded">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">downloaded</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="info_layout"/>
</item>
<item>
<widget class="QWidget" name="queue_buttons" native="true">
<layout class="QVBoxLayout" name="queue_buttons_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="force_button">
<property name="text">
<string>Update now</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="remove_button">
<property name="text">
<string>Remove from queue</string>
</property>
</widget>
</item>
</layout>
<item row="1" column="2">
<widget class="QLabel" name="dl_speed_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Download speed:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="update_buttons" native="true">
<layout class="QVBoxLayout" name="update_buttons_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="update_button">
<property name="text">
<string>Update game</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="settings_button">
<property name="text">
<string>Update with settings</string>
</property>
</widget>
</item>
</layout>
<item row="0" column="0">
<widget class="QLabel" name="dl_name_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Current download:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="cache_used">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">cache_used</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="time_left">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">time_left</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="downloaded_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Downloaded:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="dl_speed">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">dl_speed</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="cache_used_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Cache size:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1" colspan="3">
<widget class="QLabel" name="dl_name">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string notr="true">dl_name</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="time_left_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Time left:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QPushButton" name="kill_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Stop Download</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="4">
<widget class="QProgressBar" name="progress_bar">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
</layout>

View file

@ -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_())

View file

@ -1,270 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DownloadsTab</class>
<widget class="QWidget" name="DownloadsTab">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>677</width>
<height>203</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string notr="true">Form</string>
</property>
<layout class="QVBoxLayout" name="downloads_tab_layout">
<item>
<layout class="QGridLayout" name="download_layout" columnstretch="0,1,0,1">
<item row="1" column="2">
<widget class="QLabel" name="dl_speed_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Download speed:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLabel" name="dl_speed">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">dl_speed</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="cache_used">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">cache_used</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="time_left">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">time_left</string>
</property>
</widget>
</item>
<item row="0" column="1" colspan="3">
<widget class="QLabel" name="dl_name">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="text">
<string notr="true">dl_name</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="dl_name_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Current download:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="time_left_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Time left:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="downloaded_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Downloaded:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QLabel" name="downloaded">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true">downloaded</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="cache_used_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Cache size:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="progress_layout">
<item>
<widget class="QProgressBar" name="progress_bar">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="kill_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Stop Download</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="active_layout"/>
</item>
<item>
<widget class="QScrollArea" name="queue_scroll">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="focusPolicy">
<enum>Qt::WheelFocus</enum>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<widget class="QWidget" name="queue_scroll_contents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>665</width>
<height>16</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="queue_scroll_contents_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>