1
0
Fork 0
mirror of synced 2024-06-26 18:20:50 +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.title = game.title
self.version = game.version self.version = game.version
self.size = game.install_size
self.layout = QHBoxLayout() self.layout = QHBoxLayout()
pixmap = QPixmap(f"../images/{game.app_name}/FinalArt.png")
self.pixmap = QPixmap(f"../images/{game.app_name}/FinalArt.png") pixmap = pixmap.scaled(240, 320)
self.pixmap = self.pixmap.scaled(240, 320)
self.image = QLabel() self.image = QLabel()
self.image.setPixmap(self.pixmap) self.image.setPixmap(pixmap)
self.layout.addWidget(self.image) self.layout.addWidget(self.image)
##Layout on the right ##Layout on the right
@ -28,12 +28,16 @@ class GameWidget(QWidget):
self.launch_button = QPushButton(play_icon, "Launch") self.launch_button = QPushButton(play_icon, "Launch")
self.launch_button.clicked.connect(self.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.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.launch_button)
self.childLayout.addWidget(self.wine_rating) self.childLayout.addWidget(self.wine_rating)
self.childLayout.addWidget(self.version_label) self.childLayout.addWidget(self.version_label)
self.childLayout.addWidget(self.size_label)
self.childLayout.addWidget(self.settings)
self.childLayout.addStretch(1) self.childLayout.addStretch(1)
# self.layout.addWidget(QLabel(game.title)) # self.layout.addWidget(QLabel(game.title))
@ -42,3 +46,23 @@ class GameWidget(QWidget):
def launch(self): def launch(self):
print(f"launch {self.title}") 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.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QScrollArea from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QScrollArea
from Rare.utils.legendary import get_installed from Rare.utils.legendaryUtils import get_installed, get_not_installed
from Rare.GameWidget import GameWidget from Rare.GameWidget import GameWidget, UninstalledGameWidget
class BrowserTab(QWebEngineView): class BrowserTab(QWebEngineView):
@ -30,12 +30,12 @@ class GameListInstalled(QScrollArea):
super(GameListInstalled, self).__init__(parent=parent) super(GameListInstalled, self).__init__(parent=parent)
self.widget = QWidget() self.widget = QWidget()
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.layout = QVBoxLayout() self.layout = QVBoxLayout()
for i in get_installed(): for i in get_installed():
widget = GameWidget(i) widget = GameWidget(i)
#widget.setFixedSize(240, 340) #print(i.)
self.layout.addWidget(widget) self.layout.addWidget(widget)
self.widget.setLayout(self.layout) self.widget.setLayout(self.layout)
@ -45,7 +45,16 @@ class GameListInstalled(QScrollArea):
class GameListUninstalled(QScrollArea): class GameListUninstalled(QScrollArea):
def __init__(self, parent): def __init__(self, parent):
super(GameListUninstalled, self).__init__(parent=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): class UpdateList(QWidget):

View file

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