1
0
Fork 0
mirror of synced 2024-06-17 18:14:44 +12:00

launch gui

not installed gui
This commit is contained in:
Dummerle 2020-10-20 22:46:17 +02:00
parent aff265f018
commit 431a5598b9
4 changed files with 63 additions and 106 deletions

View file

@ -1,92 +0,0 @@
from PyQt5 import Qt
from PyQt5.QtCore import QRect, QPoint, QSize
from PyQt5.QtWidgets import QSizePolicy, QLayout
class FlowLayout(QLayout):
def __init__(self, parent=None, margin=0, spacing=-1):
super(FlowLayout, self).__init__(parent)
if parent is not None:
self.setContentsMargins(margin, margin, margin, margin)
self.setSpacing(spacing)
self.itemList = []
def __del__(self):
item = self.takeAt(0)
while item:
item = self.takeAt(0)
def addItem(self, item):
self.itemList.append(item)
def count(self):
return len(self.itemList)
def itemAt(self, index):
if index >= 0 and index < len(self.itemList):
return self.itemList[index]
return None
def takeAt(self, index):
if index >= 0 and index < len(self.itemList):
return self.itemList.pop(index)
return None
def expandingDirections(self):
return Qt.Orientations(Qt.Orientation(0))
def hasHeightForWidth(self):
return True
def heightForWidth(self, width):
height = self.doLayout(QRect(0, 0, width, 0), True)
return height
def setGeometry(self, rect):
super(FlowLayout, self).setGeometry(rect)
self.doLayout(rect, False)
def sizeHint(self):
return self.minimumSize()
def minimumSize(self):
size = QSize()
for item in self.itemList:
size = size.expandedTo(item.minimumSize())
margin, _, _, _ = self.getContentsMargins()
size += QSize(2 * margin, 2 * margin)
return size
def doLayout(self, rect, testOnly):
x = rect.x()
y = rect.y()
lineHeight = 0
for item in self.itemList:
wid = item.widget()
spaceX = self.spacing() + wid.style().layoutSpacing(QSizePolicy.PushButton, QSizePolicy.PushButton,
Qt.Horizontal)
spaceY = self.spacing() + wid.style().layoutSpacing(QSizePolicy.PushButton, QSizePolicy.PushButton,
Qt.Vertical)
nextX = x + item.sizeHint().width() + spaceX
if nextX - spaceX > rect.right() and lineHeight > 0:
x = rect.x()
y = y + lineHeight + spaceY
nextX = x + item.sizeHint().width() + spaceX
lineHeight = 0
if not testOnly:
item.setGeometry(QRect(QPoint(x, y), item.sizeHint()))
x = nextX
lineHeight = max(lineHeight, item.sizeHint().height())
return y + lineHeight - rect.y()

View file

@ -10,14 +10,14 @@ class GameWidget(QWidget):
self.title = game.title
self.version = game.version
self.size = game.install_size
self.layout = QHBoxLayout()
self.pixmap = QPixmap(f"../images/{game.app_name}/FinalArt.png")
self.pixmap = self.pixmap.scaled(240, 320)
pixmap = QPixmap(f"../images/{game.app_name}/FinalArt.png")
pixmap = pixmap.scaled(240, 320)
self.image = QLabel()
self.image.setPixmap(self.pixmap)
self.image.setPixmap(pixmap)
self.layout.addWidget(self.image)
##Layout on the right
@ -28,12 +28,16 @@ class GameWidget(QWidget):
self.launch_button = QPushButton(play_icon, "Launch")
self.launch_button.clicked.connect(self.launch)
self.wine_rating = QLabel("Wine Rating: Comming Soon")
self.wine_rating = QLabel("Wine Rating: " + self.get_rating())
self.version_label = QLabel("Version: " + str(self.version))
self.size_label = QLabel(f"Installed size: {round(self.size / (1024 ** 3), 2)} GB")
self.settings = QPushButton(qta.icon("fa5s.cogs"), " Settings")
self.childLayout.addWidget(self.launch_button)
self.childLayout.addWidget(self.wine_rating)
self.childLayout.addWidget(self.version_label)
self.childLayout.addWidget(self.size_label)
self.childLayout.addWidget(self.settings)
self.childLayout.addStretch(1)
# self.layout.addWidget(QLabel(game.title))
@ -42,3 +46,23 @@ class GameWidget(QWidget):
def launch(self):
print(f"launch {self.title}")
# TODO
def get_rating(self) -> str:
return "gold" # TODO
class UninstalledGameWidget(QWidget):
def __init__(self, game):
super(UninstalledGameWidget, self).__init__()
self.title = game.app_title
self.layout = QHBoxLayout()
pixmap = QPixmap(f"../images/{game.app_name}/UninstalledArt.png")
pixmap = pixmap.scaled(240, 320)
self.image = QLabel()
self.image.setPixmap(pixmap)
self.layout.addWidget(self.image)
self.layout.addWidget(QLabel(f"<h1>{self.title}</h1>"))
self.setLayout(self.layout)

View file

@ -2,8 +2,8 @@ from PyQt5.QtCore import QUrl, Qt
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QScrollArea
from Rare.utils.legendary import get_installed
from Rare.GameWidget import GameWidget
from Rare.utils.legendaryUtils import get_installed, get_not_installed
from Rare.GameWidget import GameWidget, UninstalledGameWidget
class BrowserTab(QWebEngineView):
@ -30,12 +30,12 @@ class GameListInstalled(QScrollArea):
super(GameListInstalled, self).__init__(parent=parent)
self.widget = QWidget()
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.layout = QVBoxLayout()
for i in get_installed():
widget = GameWidget(i)
#widget.setFixedSize(240, 340)
#print(i.)
self.layout.addWidget(widget)
self.widget.setLayout(self.layout)
@ -45,7 +45,16 @@ class GameListInstalled(QScrollArea):
class GameListUninstalled(QScrollArea):
def __init__(self, parent):
super(GameListUninstalled, self).__init__(parent=parent)
self.setWidget(QLabel("Hier kommen die nicht installierten Spiele"))
self.widget = QWidget()
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.layout = QVBoxLayout()
for game in get_not_installed():
self.layout.addWidget(UninstalledGameWidget(game))
self.widget.setLayout(self.layout)
self.setWidget(self.widget)
class UpdateList(QWidget):

View file

@ -9,7 +9,6 @@ cli = LegendaryCLI
def get_installed():
return core.get_installed_list()
# games = sorted(get_installed, key=lambda x: x.title)
def get_installed_names():
@ -18,23 +17,40 @@ def get_installed_names():
names.append(i.app_name)
return names
def get_not_installed():
games = []
installed = get_installed_names()
for game in get_games():
if not game.app_name in installed:
games.append(game)
return games
# return (games, dlcs)
def get_games_and_dlcs():
if not core.login():
print("Login Failed")
exit(1)
print('Getting game list... (this may take a while)')
return core.get_game_and_dlc_list()
def get_games_by_name():
if not core.login():
print("Login Failed")
exit(1)
game = []
for i in core.get_game_list():
game.append(i.app_name)
def get_game_by_name(name: str):
return core.get_game(name)
def get_games():
if not core.login():
print("Login Failed")
exit(1)
print('Getting game list... (this may take a while)')
return core.get_game_list()
def start(game_name: str, args):
subprocess.run(["legendary", "launch", game_name])
subprocess.run(["legendary", "launch", game_name])