Added icons, fixed login bug
This commit is contained in:
parent
d3eabac818
commit
9f28666d66
|
@ -67,7 +67,10 @@ class LaunchDialog(QDialog):
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
def login(self):
|
def login(self):
|
||||||
if not LoginDialog(core=self.core).login():
|
print("Login dlg")
|
||||||
|
if LoginDialog(core=self.core).login():
|
||||||
|
self.login_thread.start()
|
||||||
|
else:
|
||||||
exit(0)
|
exit(0)
|
||||||
|
|
||||||
def launch(self, core: LegendaryCore):
|
def launch(self, core: LegendaryCore):
|
||||||
|
|
|
@ -2,6 +2,7 @@ from PyQt5.QtCore import QSize
|
||||||
from PyQt5.QtGui import QIcon, QFont
|
from PyQt5.QtGui import QIcon, QFont
|
||||||
from PyQt5.QtWidgets import QTabWidget, QTabBar, QWidget, QToolButton, QWidgetAction, QMenu
|
from PyQt5.QtWidgets import QTabWidget, QTabBar, QWidget, QToolButton, QWidgetAction, QMenu
|
||||||
from legendary.core import LegendaryCore
|
from legendary.core import LegendaryCore
|
||||||
|
from qtawesome import icon
|
||||||
|
|
||||||
from Rare import style_path
|
from Rare import style_path
|
||||||
from Rare.Components.Tabs.Account.AccountWidget import MiniWidget
|
from Rare.Components.Tabs.Account.AccountWidget import MiniWidget
|
||||||
|
@ -37,8 +38,7 @@ class TabWidget(QTabWidget):
|
||||||
self.addTab(self.account, "")
|
self.addTab(self.account, "")
|
||||||
self.setTabEnabled(disabled_tab + 1, False)
|
self.setTabEnabled(disabled_tab + 1, False)
|
||||||
# self.settings = SettingsTab(core)
|
# self.settings = SettingsTab(core)
|
||||||
|
self.addTab(self.settings, icon("fa.gear", color='white'), None)
|
||||||
self.addTab(self.settings, QIcon(style_path + "/Icons/settings.png"), None)
|
|
||||||
self.setIconSize(QSize(25, 25))
|
self.setIconSize(QSize(25, 25))
|
||||||
self.tabBar().setTabButton(3, self.tabBar().RightSide, TabButtonWidget(core))
|
self.tabBar().setTabButton(3, self.tabBar().RightSide, TabButtonWidget(core))
|
||||||
|
|
||||||
|
@ -70,8 +70,7 @@ class TabButtonWidget(QToolButton):
|
||||||
super(TabButtonWidget, self).__init__()
|
super(TabButtonWidget, self).__init__()
|
||||||
self.setText("Icon")
|
self.setText("Icon")
|
||||||
self.setPopupMode(QToolButton.InstantPopup)
|
self.setPopupMode(QToolButton.InstantPopup)
|
||||||
|
self.setIcon(icon("mdi.account-circle", color="white", scale_factor=1.25))
|
||||||
self.setIcon(QIcon(style_path + "/Icons/account.png"))
|
|
||||||
self.setToolTip("Account")
|
self.setToolTip("Account")
|
||||||
self.setIconSize(QSize(25, 25))
|
self.setIconSize(QSize(25, 25))
|
||||||
self.setMenu(QMenu())
|
self.setMenu(QMenu())
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt, pyqtSignal
|
||||||
from PyQt5.QtGui import QPixmap
|
from PyQt5.QtGui import QPixmap
|
||||||
from PyQt5.QtWidgets import QWidget, QPushButton, QVBoxLayout, QLabel, QHBoxLayout, QTabWidget
|
from PyQt5.QtWidgets import QWidget, QPushButton, QVBoxLayout, QLabel, QHBoxLayout, QTabWidget, QMessageBox
|
||||||
from legendary.core import LegendaryCore
|
from legendary.core import LegendaryCore
|
||||||
from legendary.models.game import InstalledGame, Game
|
from legendary.models.game import InstalledGame, Game
|
||||||
|
|
||||||
|
from Rare.utils import LegendaryApi
|
||||||
from Rare.utils.QtExtensions import SideTabBar
|
from Rare.utils.QtExtensions import SideTabBar
|
||||||
from Rare.utils.utils import IMAGE_DIR
|
from Rare.utils.utils import IMAGE_DIR
|
||||||
|
|
||||||
|
@ -25,7 +26,7 @@ class InfoTabs(QTabWidget):
|
||||||
class GameInfo(QWidget):
|
class GameInfo(QWidget):
|
||||||
igame: InstalledGame
|
igame: InstalledGame
|
||||||
game: Game
|
game: Game
|
||||||
|
update_list = pyqtSignal()
|
||||||
def __init__(self, core: LegendaryCore):
|
def __init__(self, core: LegendaryCore):
|
||||||
super(GameInfo, self).__init__()
|
super(GameInfo, self).__init__()
|
||||||
self.core = core
|
self.core = core
|
||||||
|
@ -63,10 +64,21 @@ class GameInfo(QWidget):
|
||||||
top_layout.addLayout(right_layout)
|
top_layout.addLayout(right_layout)
|
||||||
top_layout.addStretch()
|
top_layout.addStretch()
|
||||||
|
|
||||||
|
self.game_actions = GameActions()
|
||||||
|
|
||||||
|
self.game_actions.uninstall_button.clicked.connect(self.uninstall)
|
||||||
|
|
||||||
self.layout.addLayout(top_layout)
|
self.layout.addLayout(top_layout)
|
||||||
|
self.layout.addWidget(self.game_actions)
|
||||||
self.layout.addStretch()
|
self.layout.addStretch()
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
def uninstall(self):
|
||||||
|
if QMessageBox.question(self, "Uninstall", self.tr("Are you sure to uninstall " + self.game.app_title), QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes:
|
||||||
|
LegendaryApi.uninstall(self.game.app_name, self.core)
|
||||||
|
self.update_list.emit()
|
||||||
|
self.back_button.click()
|
||||||
|
|
||||||
def update_game(self, app_name):
|
def update_game(self, app_name):
|
||||||
self.game = self.core.get_game(app_name)
|
self.game = self.core.get_game(app_name)
|
||||||
self.igame = self.core.get_installed_game(app_name)
|
self.igame = self.core.get_installed_game(app_name)
|
||||||
|
@ -86,10 +98,24 @@ class GameInfo(QWidget):
|
||||||
w = 200
|
w = 200
|
||||||
pixmap = pixmap.scaled(w, int(w * 4 / 3))
|
pixmap = pixmap.scaled(w, int(w * 4 / 3))
|
||||||
self.image.setPixmap(pixmap)
|
self.image.setPixmap(pixmap)
|
||||||
self.app_name.setText("App name: "+ self.game.app_name)
|
self.app_name.setText("App name: " + self.game.app_name)
|
||||||
self.version.setText("Version: " + self.game.app_version)
|
self.version.setText("Version: " + self.game.app_version)
|
||||||
self.dev.setText(self.tr("Developer: ") + self.game.metadata["developer"])
|
self.dev.setText(self.tr("Developer: ") + self.game.metadata["developer"])
|
||||||
self.install_size.setText(self.tr("Install size: ") + str(round(self.igame.install_size/(1024**3), 2))+ " GB")
|
self.install_size.setText(
|
||||||
|
self.tr("Install size: ") + str(round(self.igame.install_size / (1024 ** 3), 2)) + " GB")
|
||||||
self.install_path.setText(self.tr("Install path: ") + self.igame.install_path)
|
self.install_path.setText(self.tr("Install path: ") + self.igame.install_path)
|
||||||
print(self.game.__dict__)
|
|
||||||
print(self.igame.__dict__)
|
|
||||||
|
class GameActions(QWidget):
|
||||||
|
def __init__(self):
|
||||||
|
super(GameActions, self).__init__()
|
||||||
|
self.layout = QVBoxLayout()
|
||||||
|
self.game_actions = QLabel("<h3>Game actions</h3>")
|
||||||
|
self.layout.addWidget(self.game_actions)
|
||||||
|
uninstall_layout = QHBoxLayout()
|
||||||
|
self.uninstall_game = QLabel(self.tr("Uninstall game"))
|
||||||
|
uninstall_layout.addWidget(self.uninstall_game)
|
||||||
|
self.uninstall_button = QPushButton("Uninstall")
|
||||||
|
uninstall_layout.addWidget(self.uninstall_button)
|
||||||
|
self.layout.addLayout(uninstall_layout)
|
||||||
|
self.setLayout(self.layout)
|
|
@ -6,13 +6,15 @@ from Rare.Components.Tabs.Games.GameWidgetInstalled import GameWidgetInstalled
|
||||||
from Rare.Components.Tabs.Games.GameWidgetListUninstalled import UninstalledGameWidget
|
from Rare.Components.Tabs.Games.GameWidgetListUninstalled import UninstalledGameWidget
|
||||||
from Rare.Components.Tabs.Games.GameWidgetUninstalled import GameWidgetUninstalled
|
from Rare.Components.Tabs.Games.GameWidgetUninstalled import GameWidgetUninstalled
|
||||||
from Rare.Components.Tabs.Games.InstalledListWidget import GameWidget
|
from Rare.Components.Tabs.Games.InstalledListWidget import GameWidget
|
||||||
|
from Rare.utils.Models import InstallOptions
|
||||||
from Rare.utils.QtExtensions import FlowLayout
|
from Rare.utils.QtExtensions import FlowLayout
|
||||||
|
|
||||||
|
|
||||||
class GameList(QScrollArea):
|
class GameList(QScrollArea):
|
||||||
install_game = pyqtSignal(dict)
|
install_game = pyqtSignal(InstallOptions)
|
||||||
show_game_info = pyqtSignal(str)
|
show_game_info = pyqtSignal(str)
|
||||||
update_game = pyqtSignal()
|
update_game = pyqtSignal()
|
||||||
|
|
||||||
def __init__(self, core: LegendaryCore):
|
def __init__(self, core: LegendaryCore):
|
||||||
super(GameList, self).__init__()
|
super(GameList, self).__init__()
|
||||||
self.core = core
|
self.core = core
|
||||||
|
@ -49,8 +51,6 @@ class GameList(QScrollArea):
|
||||||
self.layout.addWidget(widget)
|
self.layout.addWidget(widget)
|
||||||
widget.update_list.connect(self.update_list)
|
widget.update_list.connect(self.update_list)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uninstalled_games = []
|
uninstalled_games = []
|
||||||
installed = [i.app_name for i in self.core.get_installed_list()]
|
installed = [i.app_name for i in self.core.get_installed_list()]
|
||||||
# get Uninstalled games
|
# get Uninstalled games
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import os
|
import os
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
|
|
||||||
from PyQt5.QtCore import QEvent, pyqtSignal, QSettings
|
from PyQt5.QtCore import QEvent, pyqtSignal, QSettings, QSize
|
||||||
from PyQt5.QtGui import QPixmap, QIcon
|
from PyQt5.QtGui import QPixmap
|
||||||
from PyQt5.QtWidgets import *
|
from PyQt5.QtWidgets import *
|
||||||
from legendary.core import LegendaryCore
|
from legendary.core import LegendaryCore
|
||||||
from legendary.models.game import InstalledGame
|
from legendary.models.game import InstalledGame
|
||||||
|
from qtawesome import icon
|
||||||
|
|
||||||
from Rare import style_path
|
|
||||||
from Rare.utils import LegendaryApi
|
from Rare.utils import LegendaryApi
|
||||||
from Rare.utils.QtExtensions import ClickableLabel
|
from Rare.utils.QtExtensions import ClickableLabel
|
||||||
|
|
||||||
|
@ -59,14 +59,22 @@ class GameWidgetInstalled(QWidget):
|
||||||
minilayout = QHBoxLayout()
|
minilayout = QHBoxLayout()
|
||||||
self.title_label.setObjectName("game_widget")
|
self.title_label.setObjectName("game_widget")
|
||||||
minilayout.addWidget(self.title_label)
|
minilayout.addWidget(self.title_label)
|
||||||
# minilayout.addStretch(1)
|
|
||||||
|
# Info Button
|
||||||
self.menu_btn = QPushButton()
|
self.menu_btn = QPushButton()
|
||||||
self.menu_btn.setIcon(QIcon(style_path + "/Icons/menu.png"))
|
self.menu_btn.setIcon(icon("ei.info-circle", color="white"))
|
||||||
self.menu_btn.setObjectName("installed_menu_button")
|
# self.menu_btn.setObjectName("installed_menu_button")
|
||||||
self.menu = Menu()
|
self.menu_btn.setIconSize(QSize(18, 18))
|
||||||
self.menu.action.connect(self.menu_action)
|
self.menu_btn.enterEvent = lambda x: self.info_label.setText("Information")
|
||||||
self.menu_btn.setMenu(self.menu)
|
self.menu_btn.leaveEvent = lambda x: self.info_label.setText(
|
||||||
self.menu_btn.setObjectName("menu")
|
"Please update Game") if self.update_available else self.info_label.setText("Start Game")
|
||||||
|
# remove Border
|
||||||
|
self.menu_btn.setStyleSheet("""
|
||||||
|
QPushButton{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
""")
|
||||||
|
self.menu_btn.clicked.connect(lambda: self.show_info.emit(self.game.app_name))
|
||||||
self.menu_btn.setFixedWidth(17)
|
self.menu_btn.setFixedWidth(17)
|
||||||
minilayout.addWidget(self.menu_btn)
|
minilayout.addWidget(self.menu_btn)
|
||||||
minilayout.addStretch(1)
|
minilayout.addStretch(1)
|
||||||
|
@ -81,7 +89,7 @@ class GameWidgetInstalled(QWidget):
|
||||||
|
|
||||||
def enterEvent(self, a0: QEvent) -> None:
|
def enterEvent(self, a0: QEvent) -> None:
|
||||||
if self.update_available:
|
if self.update_available:
|
||||||
self.info_label.setText("Please update Game")
|
self.info_label.setText(self.tr("Please update Game"))
|
||||||
elif not self.running:
|
elif not self.running:
|
||||||
self.info_label.setText("Start Game")
|
self.info_label.setText("Start Game")
|
||||||
|
|
||||||
|
@ -107,22 +115,3 @@ class GameWidgetInstalled(QWidget):
|
||||||
def finished(self):
|
def finished(self):
|
||||||
self.info_label.setText("")
|
self.info_label.setText("")
|
||||||
self.running = False
|
self.running = False
|
||||||
|
|
||||||
def menu_action(self, action: str):
|
|
||||||
if action == "uninstall":
|
|
||||||
if QMessageBox.question(self, "Uninstall", self.tr("Do you want to uninstall") + self.game.title,
|
|
||||||
QMessageBox.Yes | QMessageBox.No) == QMessageBox.Yes:
|
|
||||||
logger.info("Uninstalling " + self.game.title)
|
|
||||||
self.core.uninstall_game(self.game)
|
|
||||||
self.update_list.emit()
|
|
||||||
elif action == "info":
|
|
||||||
self.show_info.emit(self.game.app_name)
|
|
||||||
|
|
||||||
|
|
||||||
class Menu(QMenu):
|
|
||||||
action = pyqtSignal(str)
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super(Menu, self).__init__()
|
|
||||||
self.addAction(self.tr("Game info"), lambda: self.action.emit("info"))
|
|
||||||
self.addAction(self.tr("Uninstall"), lambda: self.action.emit("uninstall"))
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ from legendary.core import LegendaryCore
|
||||||
from legendary.models.game import Game
|
from legendary.models.game import Game
|
||||||
|
|
||||||
from Rare.Components.Dialogs.InstallDialog import InstallDialog
|
from Rare.Components.Dialogs.InstallDialog import InstallDialog
|
||||||
|
from Rare.utils.Models import InstallOptions
|
||||||
from Rare.utils.QtExtensions import ClickableLabel
|
from Rare.utils.QtExtensions import ClickableLabel
|
||||||
from Rare.utils.utils import download_image
|
from Rare.utils.utils import download_image
|
||||||
|
|
||||||
|
@ -15,7 +16,7 @@ logger = getLogger("Uninstalled")
|
||||||
|
|
||||||
|
|
||||||
class GameWidgetUninstalled(QWidget):
|
class GameWidgetUninstalled(QWidget):
|
||||||
install_game = pyqtSignal(dict)
|
install_game = pyqtSignal(InstallOptions)
|
||||||
|
|
||||||
def __init__(self, core: LegendaryCore, game: Game):
|
def __init__(self, core: LegendaryCore, game: Game):
|
||||||
super(GameWidgetUninstalled, self).__init__()
|
super(GameWidgetUninstalled, self).__init__()
|
||||||
|
@ -68,11 +69,5 @@ class GameWidgetUninstalled(QWidget):
|
||||||
infos = InstallDialog().get_information()
|
infos = InstallDialog().get_information()
|
||||||
if infos != 0:
|
if infos != 0:
|
||||||
path, max_workers = infos
|
path, max_workers = infos
|
||||||
self.install_game.emit({
|
self.install_game.emit(InstallOptions(app_name=self.game.app_name, max_workers=max_workers, path=path))
|
||||||
"app_name": self.game.app_name,
|
|
||||||
"options": {
|
|
||||||
"path": path,
|
|
||||||
"max_workers": max_workers
|
|
||||||
}
|
|
||||||
})
|
|
||||||
# wait for update of legendary to get progress
|
# wait for update of legendary to get progress
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from PyQt5.QtCore import QSettings
|
from PyQt5.QtCore import QSettings
|
||||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QCheckBox, QLineEdit, QLabel, QPushButton, QStyle, \
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QCheckBox, QLineEdit, QLabel, QPushButton, QStyle, \
|
||||||
QStackedLayout
|
QStackedLayout
|
||||||
|
from qtawesome import icon
|
||||||
|
|
||||||
from Rare.Components.Tabs.Games.GameInfo.GameInfo import InfoTabs
|
from Rare.Components.Tabs.Games.GameInfo.GameInfo import InfoTabs
|
||||||
from Rare.Components.Tabs.Games.GameList import GameList
|
from Rare.Components.Tabs.Games.GameList import GameList
|
||||||
|
@ -16,6 +17,8 @@ class GameTab(QWidget):
|
||||||
self.layout.addWidget(self.default_widget)
|
self.layout.addWidget(self.default_widget)
|
||||||
self.game_info = InfoTabs(core)
|
self.game_info = InfoTabs(core)
|
||||||
self.game_info.info.back_button.clicked.connect(lambda: self.layout.setCurrentIndex(0))
|
self.game_info.info.back_button.clicked.connect(lambda: self.layout.setCurrentIndex(0))
|
||||||
|
self.game_info.info.update_list.connect(
|
||||||
|
lambda: self.default_widget.game_list.update_list(not self.default_widget.head_bar.view.isChecked()))
|
||||||
self.layout.addWidget(self.game_info)
|
self.layout.addWidget(self.game_info)
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
|
@ -40,7 +43,7 @@ class Games(QWidget):
|
||||||
self.head_bar.installed_only.stateChanged.connect(lambda:
|
self.head_bar.installed_only.stateChanged.connect(lambda:
|
||||||
self.game_list.installed_only(
|
self.game_list.installed_only(
|
||||||
self.head_bar.installed_only.isChecked()))
|
self.head_bar.installed_only.isChecked()))
|
||||||
self.head_bar.refresh_list.clicked.connect(lambda: self.game_list.update_list())
|
self.head_bar.refresh_list.clicked.connect(lambda: self.game_list.update_list(not self.head_bar.view.isChecked()))
|
||||||
self.layout.addWidget(self.head_bar)
|
self.layout.addWidget(self.head_bar)
|
||||||
self.layout.addWidget(self.game_list)
|
self.layout.addWidget(self.game_list)
|
||||||
# self.layout.addStretch(1)
|
# self.layout.addStretch(1)
|
||||||
|
@ -76,7 +79,7 @@ class GameListHeadBar(QWidget):
|
||||||
self.layout.addWidget(self.list_view)
|
self.layout.addWidget(self.list_view)
|
||||||
|
|
||||||
self.refresh_list = QPushButton()
|
self.refresh_list = QPushButton()
|
||||||
self.refresh_list.setIcon(self.style().standardIcon(getattr(QStyle, "SP_BrowserReload"))) # Reload icon
|
self.refresh_list.setIcon(icon("fa.refresh", color="white")) # Reload icon
|
||||||
self.layout.addWidget(self.refresh_list)
|
self.layout.addWidget(self.refresh_list)
|
||||||
|
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 126 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 103 KiB |
|
@ -1,7 +1,10 @@
|
||||||
import os
|
import os
|
||||||
|
from logging import getLogger
|
||||||
|
|
||||||
from PyQt5.QtCore import QProcess, QProcessEnvironment
|
from PyQt5.QtCore import QProcess, QProcessEnvironment
|
||||||
|
|
||||||
|
logger = getLogger("Legendary Utils")
|
||||||
|
|
||||||
|
|
||||||
def launch_game(core, app_name: str, offline: bool = False, skip_version_check: bool = False):
|
def launch_game(core, app_name: str, offline: bool = False, skip_version_check: bool = False):
|
||||||
game = core.get_installed_game(app_name)
|
game = core.get_installed_game(app_name)
|
||||||
|
@ -36,3 +39,21 @@ def launch_game(core, app_name: str, offline: bool = False, skip_version_check:
|
||||||
process.setProcessEnvironment(environment)
|
process.setProcessEnvironment(environment)
|
||||||
process.start(params[0], params[1:])
|
process.start(params[0], params[1:])
|
||||||
return process
|
return process
|
||||||
|
|
||||||
|
|
||||||
|
def uninstall(app_name: str, core):
|
||||||
|
igame = core.get_installed_game(app_name)
|
||||||
|
try:
|
||||||
|
# Remove DLC first so directory is empty when game uninstall runs
|
||||||
|
dlcs = core.get_dlc_for_game(app_name)
|
||||||
|
for dlc in dlcs:
|
||||||
|
if (idlc := core.get_installed_game(dlc.app_name)) is not None:
|
||||||
|
logger.info(f'Uninstalling DLC "{dlc.app_name}"...')
|
||||||
|
core.uninstall_game(idlc, delete_files=True)
|
||||||
|
|
||||||
|
logger.info(f'Removing "{igame.title}" from "{igame.install_path}"...')
|
||||||
|
core.uninstall_game(igame, delete_files=True, delete_root_directory=True)
|
||||||
|
logger.info('Game has been uninstalled.')
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f'Removing game failed: {e!r}, please remove {igame.install_path} manually.')
|
||||||
|
|
|
@ -229,10 +229,10 @@ class SwitchPrivate(QObject):
|
||||||
button = self.mPointer.palette().color(QPalette.Button)
|
button = self.mPointer.palette().color(QPalette.Button)
|
||||||
painter.setPen(Qt.NoPen)
|
painter.setPen(Qt.NoPen)
|
||||||
|
|
||||||
self.mGradient.setColorAt(0, shadow.darker(130))
|
#self.mGradient.setColorAt(0, shadow.darker(130))
|
||||||
self.mGradient.setColorAt(1, light.darker(130))
|
#self.mGradient.setColorAt(1, light.darker(130))
|
||||||
self.mGradient.setStart(0, r.height())
|
#self.mGradient.setStart(0, r.height())
|
||||||
self.mGradient.setFinalStop(0, 0)
|
#self.mGradient.setFinalStop(0, 0)
|
||||||
painter.setBrush(self.mGradient)
|
painter.setBrush(self.mGradient)
|
||||||
painter.drawRoundedRect(r, r.height()/2, r.height()/2)
|
painter.drawRoundedRect(r, r.height()/2, r.height()/2)
|
||||||
|
|
||||||
|
|
|
@ -2,3 +2,4 @@ legendary-gl
|
||||||
requests
|
requests
|
||||||
Pillow
|
Pillow
|
||||||
PyQt5
|
PyQt5
|
||||||
|
QtAwesome
|
Loading…
Reference in a new issue