launch gui
not installed gui
This commit is contained in:
parent
aff265f018
commit
431a5598b9
4 changed files with 63 additions and 106 deletions
|
@ -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()
|
|
|
@ -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)
|
|
@ -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):
|
||||||
|
|
|
@ -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])
|
||||||
|
|
Loading…
Reference in a new issue