1
0
Fork 0
mirror of synced 2024-06-28 03:00:49 +12:00

Fix Icon error for Ubuntu LTS, which uses QtAwesome 0.4.4

This commit is contained in:
Dummerle 2022-01-05 15:44:29 +01:00
parent 0698231ca0
commit 0bc15be1f6
No known key found for this signature in database
GPG key ID: AB68CC59CA39F2F1
16 changed files with 120 additions and 89 deletions

View file

@ -8,9 +8,9 @@ from PyQt5.QtWidgets import (
QHBoxLayout, QHBoxLayout,
QPushButton, QPushButton,
) )
from qtawesome import icon
from legendary.models.game import Game from legendary.models.game import Game
from rare.utils.utils import icon
class UninstallDialog(QDialog): class UninstallDialog(QDialog):

View file

@ -1,6 +1,5 @@
from PyQt5.QtCore import QSize from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction, QShortcut from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction, QShortcut
from qtawesome import icon
from rare import shared from rare import shared
from rare.components.tabs.account import MiniWidget from rare.components.tabs.account import MiniWidget
@ -10,6 +9,7 @@ from rare.components.tabs.settings import SettingsTab
from rare.components.tabs.settings.debug import DebugSettings from rare.components.tabs.settings.debug import DebugSettings
from rare.components.tabs.shop import Shop from rare.components.tabs.shop import Shop
from rare.components.tabs.tab_utils import MainTabBar, TabButtonWidget from rare.components.tabs.tab_utils import MainTabBar, TabButtonWidget
from rare.utils.utils import icon
class TabWidget(QTabWidget): class TabWidget(QTabWidget):
@ -56,7 +56,7 @@ class TabWidget(QTabWidget):
self.mini_widget = MiniWidget() self.mini_widget = MiniWidget()
account_action = QWidgetAction(self) account_action = QWidgetAction(self)
account_action.setDefaultWidget(self.mini_widget) account_action.setDefaultWidget(self.mini_widget)
account_button = TabButtonWidget("mdi.account-circle", "Account") account_button = TabButtonWidget("mdi.account-circle", "Account", fallback_icon="fa.user")
account_button.setMenu(QMenu()) account_button.setMenu(QMenu())
account_button.menu().addAction(account_action) account_button.menu().addAction(account_action)
self.tabBar().setTabButton( self.tabBar().setTabButton(

View file

@ -9,9 +9,9 @@ from PyQt5.QtWidgets import (
QPushButton, QPushButton,
QWidget, QWidget,
) )
from qtawesome import icon
from rare.utils.models import InstallQueueItemModel from rare.utils.models import InstallQueueItemModel
from rare.utils.utils import icon
logger = getLogger("QueueWidget") logger = getLogger("QueueWidget")

View file

@ -1,15 +1,17 @@
import datetime import datetime
import sys
from dataclasses import dataclass from dataclasses import dataclass
from logging import getLogger from logging import getLogger
from typing import Union, List from typing import Union, List
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, Qt, QSettings from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, Qt, QSettings
from PyQt5.QtWidgets import QDialog, QMessageBox, QSizePolicy, QLayout from PyQt5.QtWidgets import QDialog, QMessageBox, QSizePolicy, QLayout, QApplication
from qtawesome import icon
from legendary.core import LegendaryCore
from legendary.models.game import SaveGameStatus, InstalledGame, SaveGameFile from legendary.models.game import SaveGameStatus, InstalledGame, SaveGameFile
from rare import shared from rare import shared
from rare.ui.components.dialogs.sync_save_dialog import Ui_SyncSaveDialog from rare.ui.components.dialogs.sync_save_dialog import Ui_SyncSaveDialog
from rare.utils.utils import icon
logger = getLogger("Cloud Saves") logger = getLogger("Cloud Saves")
@ -76,11 +78,11 @@ class CloudSaveDialog(QDialog, Ui_SyncSaveDialog):
CANCEL = 0 CANCEL = 0
def __init__( def __init__(
self, self,
igame: InstalledGame, igame: InstalledGame,
dt_local: datetime.datetime, dt_local: datetime.datetime,
dt_remote: datetime.datetime, dt_remote: datetime.datetime,
newer: str, newer: str,
): ):
super(CloudSaveDialog, self).__init__() super(CloudSaveDialog, self).__init__()
self.setupUi(self) self.setupUi(self)
@ -101,8 +103,8 @@ class CloudSaveDialog(QDialog, Ui_SyncSaveDialog):
elif newer == "local": elif newer == "local":
self.local_gb.setTitle(self.local_gb.title() + new_text) self.local_gb.setTitle(self.local_gb.title() + new_text)
self.icon_local.setPixmap(icon("mdi.harddisk").pixmap(128, 128)) self.icon_local.setPixmap(icon("mdi.harddisk", "fa.desktop").pixmap(128, 128))
self.icon_remote.setPixmap(icon("mdi.cloud-outline").pixmap(128, 128)) self.icon_remote.setPixmap(icon("mdi.cloud-outline", "ei.cloud").pixmap(128, 128))
self.upload_button.clicked.connect(lambda: self.btn_clicked(self.UPLOAD)) self.upload_button.clicked.connect(lambda: self.btn_clicked(self.UPLOAD))
self.download_button.clicked.connect(lambda: self.btn_clicked(self.DOWNLOAD)) self.download_button.clicked.connect(lambda: self.btn_clicked(self.DOWNLOAD))
@ -168,16 +170,16 @@ class CloudSaveUtils(QObject):
logger.info(f"Set save path of {igame.title} to {savepath}") logger.info(f"Set save path of {igame.title} to {savepath}")
elif not ignore_settings: # sync on startup elif not ignore_settings: # sync on startup
if ( if (
QMessageBox.question( QMessageBox.question(
None, None,
"Warning", "Warning",
self.tr( self.tr(
"Could not compute cloud save path. Please set it in Game settings manually. \nDo you want to launch {} anyway?" "Could not compute cloud save path. Please set it in Game settings manually. \nDo you want to launch {} anyway?"
).format(igame.title), ).format(igame.title),
QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes | QMessageBox.No,
QMessageBox.No, QMessageBox.No,
) )
== QMessageBox.Yes == QMessageBox.Yes
): ):
return False return False
else: else:
@ -313,3 +315,16 @@ class CloudSaveUtils(QObject):
self.tr("Syncing with cloud failed: \n ") + error_message, self.tr("Syncing with cloud failed: \n ") + error_message,
) )
self.sync_finished.emit(app_name) self.sync_finished.emit(app_name)
def test_dialog():
app = QApplication(sys.argv)
core = LegendaryCore()
dlg = CloudSaveDialog(core.get_installed_list()[0], datetime.datetime.now(),
datetime.datetime.strptime("2021,1", "%Y,%M"), "local")
dlg.show()
app.exec_()
if __name__ == '__main__':
test_dialog()

View file

@ -12,7 +12,6 @@ from PyQt5.QtWidgets import (
QPushButton, QPushButton,
QSizePolicy, QSizePolicy,
) )
from qtawesome import icon
from legendary.core import LegendaryCore from legendary.core import LegendaryCore
from legendary.models.game import InstalledGame, Game from legendary.models.game import InstalledGame, Game
@ -20,6 +19,7 @@ from rare.components.tabs.settings.linux import LinuxSettings
from rare.ui.components.tabs.games.game_info.game_settings import Ui_GameSettings from rare.ui.components.tabs.games.game_info.game_settings import Ui_GameSettings
from rare.utils.extra_widgets import PathEdit from rare.utils.extra_widgets import PathEdit
from rare.utils.utils import WineResolver, get_raw_save_path from rare.utils.utils import WineResolver, get_raw_save_path
from rare.utils.utils import icon
logger = getLogger("GameSettings") logger = getLogger("GameSettings")

View file

@ -3,12 +3,12 @@ from logging import getLogger
from PyQt5.QtCore import QEvent, pyqtSignal, QSize, Qt from PyQt5.QtCore import QEvent, pyqtSignal, QSize, Qt
from PyQt5.QtGui import QMouseEvent from PyQt5.QtGui import QMouseEvent
from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QPushButton, QLabel from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QPushButton, QLabel
from qtawesome import icon
from rare import shared from rare import shared
from rare.components.tabs.games.game_widgets.base_installed_widget import ( from rare.components.tabs.games.game_widgets.base_installed_widget import (
BaseInstalledWidget, BaseInstalledWidget,
) )
from rare.utils.utils import icon
logger = getLogger("GameWidgetInstalled") logger = getLogger("GameWidgetInstalled")

View file

@ -2,12 +2,12 @@ from logging import getLogger
from PyQt5.QtCore import QProcess, pyqtSignal, Qt from PyQt5.QtCore import QProcess, pyqtSignal, Qt
from PyQt5.QtWidgets import QHBoxLayout, QLabel, QPushButton, QVBoxLayout from PyQt5.QtWidgets import QHBoxLayout, QLabel, QPushButton, QVBoxLayout
from qtawesome import icon
from rare.components.tabs.games.game_widgets.base_installed_widget import ( from rare.components.tabs.games.game_widgets.base_installed_widget import (
BaseInstalledWidget, BaseInstalledWidget,
) )
from rare.utils.utils import get_size from rare.utils.utils import get_size
from rare.utils.utils import icon
logger = getLogger("GameWidget") logger = getLogger("GameWidget")

View file

@ -7,10 +7,10 @@ from PyQt5.QtWidgets import (
QHBoxLayout, QHBoxLayout,
QComboBox, QComboBox,
) )
from qtawesome import icon
from rare import shared from rare import shared
from rare.utils.extra_widgets import SelectViewWidget from rare.utils.extra_widgets import SelectViewWidget
from rare.utils.utils import icon
class GameListHeadBar(QWidget): class GameListHeadBar(QWidget):
@ -62,11 +62,11 @@ class GameListHeadBar(QWidget):
self.filter.currentIndexChanged.connect(self.filter_changed) self.filter.currentIndexChanged.connect(self.filter_changed)
self.layout().addStretch(1) self.layout().addStretch(1)
self.import_game = QPushButton(icon("mdi.import"), self.tr("Import Game")) self.import_game = QPushButton(icon("mdi.import", "fa.arrow-down"), self.tr("Import Game"))
self.import_clicked = self.import_game.clicked self.import_clicked = self.import_game.clicked
self.layout().addWidget(self.import_game) self.layout().addWidget(self.import_game)
self.egl_sync = QPushButton(icon("mdi.sync"), self.tr("Sync with EGL")) self.egl_sync = QPushButton(icon("mdi.sync", "fa.refresh"), self.tr("Sync with EGL"))
self.egl_sync_clicked = self.egl_sync.clicked self.egl_sync_clicked = self.egl_sync.clicked
self.layout().addWidget(self.egl_sync) self.layout().addWidget(self.egl_sync)
# FIXME: Until it is ready # FIXME: Until it is ready

View file

@ -1,14 +1,12 @@
from PyQt5.QtCore import QSettings, pyqtSignal from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QGroupBox from PyQt5.QtWidgets import QGroupBox
from rare.ui.components.tabs.settings.rpc import Ui_RPCSettings from rare.ui.components.tabs.settings.rpc import Ui_RPCSettings
class RPCSettings(QGroupBox, Ui_RPCSettings): class RPCSettings(QGroupBox, Ui_RPCSettings):
update_settings = pyqtSignal() def __init__(self, parent):
super(RPCSettings, self).__init__(parent=parent)
def __init__(self):
super(RPCSettings, self).__init__()
self.setupUi(self) self.setupUi(self)
self.settings = QSettings() self.settings = QSettings()
@ -33,4 +31,3 @@ class RPCSettings(QGroupBox, Ui_RPCSettings):
def changed(self, i): def changed(self, i):
self.settings.setValue("rpc_enable", i) self.settings.setValue("rpc_enable", i)
self.update_settings.emit()

View file

@ -4,10 +4,10 @@ from logging import getLogger
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, QSize from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, QSize
from PyQt5.QtWidgets import QWidget, QLabel, QHBoxLayout, QSizePolicy, QPushButton from PyQt5.QtWidgets import QWidget, QLabel, QHBoxLayout, QSizePolicy, QPushButton
from qtawesome import icon
from legendary.models.game import Game from legendary.models.game import Game
from rare import shared from rare import shared
from rare.utils.utils import icon
logger = getLogger("Ubisoft") logger = getLogger("Ubisoft")

View file

@ -13,12 +13,12 @@ from PyQt5.QtWidgets import (
QTabWidget, QTabWidget,
QGridLayout, QGridLayout,
) )
from qtawesome import icon
from rare import shared from rare import shared
from rare.components.tabs.shop.shop_models import ShopGame from rare.components.tabs.shop.shop_models import ShopGame
from rare.ui.components.tabs.store.shop_game_info import Ui_shop_info from rare.ui.components.tabs.store.shop_game_info import Ui_shop_info
from rare.utils.extra_widgets import WaitingSpinner, ImageLabel from rare.utils.extra_widgets import WaitingSpinner, ImageLabel
from rare.utils.utils import icon
logger = logging.getLogger("ShopInfo") logger = logging.getLogger("ShopInfo")
@ -234,10 +234,10 @@ class ShopGameInfo(QWidget, Ui_shop_info):
for name, url in self.game.links: for name, url in self.game.links:
if name.lower() == "homepage": if name.lower() == "homepage":
icn = icon("mdi.web", scale_factor=1.5) icn = icon("mdi.web", "fa.search", scale_factor=1.5)
else: else:
try: try:
icn = icon("mdi." + name.lower(), scale_factor=1.5) icn = icon("mdi." + name.lower(), "fa." + name.lower(), scale_factor=1.5)
except Exception as e: except Exception as e:
logger.error(str(e)) logger.error(str(e))
continue continue

View file

@ -5,11 +5,11 @@ from PyQt5.QtCore import pyqtSignal
from PyQt5.QtGui import QFont from PyQt5.QtGui import QFont
from PyQt5.QtNetwork import QNetworkAccessManager from PyQt5.QtNetwork import QNetworkAccessManager
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout
from qtawesome import icon
from rare.components.tabs.shop.shop_models import ImageUrlModel from rare.components.tabs.shop.shop_models import ImageUrlModel
from rare.ui.components.tabs.store.wishlist_widget import Ui_WishlistWidget from rare.ui.components.tabs.store.wishlist_widget import Ui_WishlistWidget
from rare.utils.extra_widgets import ImageLabel from rare.utils.extra_widgets import ImageLabel
from rare.utils.utils import icon
logger = logging.getLogger("GameWidgets") logger = logging.getLogger("GameWidgets")

View file

@ -1,11 +1,11 @@
from PyQt5.QtCore import pyqtSignal from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QStackedWidget, QMessageBox from PyQt5.QtWidgets import QStackedWidget, QMessageBox
from qtawesome import icon
from rare.components.tabs.shop import ShopApiCore from rare.components.tabs.shop import ShopApiCore
from rare.components.tabs.shop.game_widgets import WishlistWidget from rare.components.tabs.shop.game_widgets import WishlistWidget
from rare.ui.components.tabs.store.wishlist import Ui_Wishlist from rare.ui.components.tabs.store.wishlist import Ui_Wishlist
from rare.utils.extra_widgets import WaitingSpinner from rare.utils.extra_widgets import WaitingSpinner
from rare.utils.utils import icon
class Wishlist(QStackedWidget, Ui_Wishlist): class Wishlist(QStackedWidget, Ui_Wishlist):

View file

@ -1,6 +1,7 @@
from PyQt5.QtCore import QSize from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QTabBar, QToolButton from PyQt5.QtWidgets import QTabBar, QToolButton
from qtawesome import icon
from rare.utils.utils import icon
class MainTabBar(QTabBar): class MainTabBar(QTabBar):
@ -25,10 +26,10 @@ class MainTabBar(QTabBar):
class TabButtonWidget(QToolButton): class TabButtonWidget(QToolButton):
def __init__(self, button_icon: str, tool_tip: str): def __init__(self, button_icon: str, tool_tip: str, fallback_icon=None):
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(button_icon, scale_factor=1.25)) self.setIcon(icon(button_icon, fallback_icon, scale_factor=1.25))
self.setToolTip(tool_tip) self.setToolTip(tool_tip)
self.setIconSize(QSize(25, 25)) self.setIconSize(QSize(25, 25))

View file

@ -32,10 +32,10 @@ from PyQt5.QtWidgets import (
QStyledItemDelegate, QStyledItemDelegate,
QFileIconProvider, QFileIconProvider,
) )
from qtawesome import icon as qta_icon
from rare import cache_dir from rare import cache_dir
from rare.utils.qt_requests import QtRequestManager from rare.utils.qt_requests import QtRequestManager
from rare.utils.utils import icon as qta_icon
logger = getLogger("ExtraWidgets") logger = getLogger("ExtraWidgets")
@ -244,22 +244,22 @@ class IndicatorLineEdit(QWidget):
class PathEditIconProvider(QFileIconProvider): class PathEditIconProvider(QFileIconProvider):
icons = [ icons = [
"mdi.file-cancel", # Unknown ("mdi.file-cancel", "fa.file-excel-o"), # Unknown
"mdi.desktop-classic", # Computer ("mdi.desktop-classic", "fa.desktop"), # Computer
"mdi.desktop-mac", # Desktop ("mdi.desktop-mac", "fa.desktop"), # Desktop
"mdi.trash-can", # Trashcan ("mdi.trash-can", "fa.trash"), # Trashcan
"mdi.server-network", # Network ("mdi.server-network", "fa.server"), # Network
"mdi.harddisk", # Drive ("mdi.harddisk", "fa.desktop"), # Drive
"mdi.folder", # Folder ("mdi.folder", "fa.folder"), # Folder
"mdi.file", # File ("mdi.file", "fa.file"), # File
"mdi.cog", # Executable ("mdi.cog", "fa.cog"), # Executable
] ]
def __init__(self): def __init__(self):
super(PathEditIconProvider, self).__init__() super(PathEditIconProvider, self).__init__()
self.icon_types = dict() self.icon_types = dict()
for idx, icn in enumerate(self.icons): for idx, (icn, fallback) in enumerate(self.icons):
self.icon_types.update({idx - 1: qta_icon(icn, color="#eeeeee")}) self.icon_types.update({idx - 1: qta_icon(icn, fallback, color="#eeeeee")})
def icon(self, info_type): def icon(self, info_type):
if isinstance(info_type, QFileInfo): if isinstance(info_type, QFileInfo):
@ -281,21 +281,24 @@ class PathEdit(IndicatorLineEdit):
def __init__( def __init__(
self, self,
path: str = "", path: str = "",
file_type: QFileDialog.FileType = QFileDialog.AnyFile, file_type: QFileDialog.FileType = QFileDialog.AnyFile,
type_filter: str = "", type_filter: str = "",
name_filter: str = "", name_filter: str = "",
ph_text: str = "", ph_text: str = "",
edit_func: Callable[[str], Tuple[bool, str]] = None, edit_func: Callable[[str], Tuple[bool, str]] = None,
save_func: Callable[[str], None] = None, save_func: Callable[[str], None] = None,
horiz_policy: QSizePolicy = QSizePolicy.Expanding, horiz_policy: QSizePolicy = QSizePolicy.Expanding,
parent=None, parent=None,
): ):
self.compl_model.setOptions( try:
QFileSystemModel.DontWatchForChanges self.compl_model.setOptions(
| QFileSystemModel.DontResolveSymlinks QFileSystemModel.DontWatchForChanges
| QFileSystemModel.DontUseCustomDirectoryIcons | QFileSystemModel.DontResolveSymlinks
) | QFileSystemModel.DontUseCustomDirectoryIcons
)
except AttributeError as e: # Error on Ubuntu
logger.warning(e)
self.compl_model.setIconProvider(PathEditIconProvider()) self.compl_model.setIconProvider(PathEditIconProvider())
self.compl_model.setRootPath(path) self.compl_model.setRootPath(path)
self.completer.setModel(self.compl_model) self.completer.setModel(self.compl_model)
@ -381,7 +384,7 @@ class SideTabWidget(QTabWidget):
self.setDocumentMode(True) self.setDocumentMode(True)
self.setTabPosition(QTabWidget.West) self.setTabPosition(QTabWidget.West)
if show_back: if show_back:
self.addTab(QWidget(), qta_icon("mdi.keyboard-backspace"), self.tr("Back")) self.addTab(QWidget(), qta_icon("mdi.keyboard-backspace", "ei.backward"), self.tr("Back"))
self.tabBarClicked.connect(self.back_func) self.tabBarClicked.connect(self.back_func)
def back_func(self, tab): def back_func(self, tab):
@ -417,12 +420,12 @@ class SelectViewWidget(QWidget):
self.list_view = QPushButton() self.list_view = QPushButton()
if icon_view: if icon_view:
self.icon_view_button.setIcon( self.icon_view_button.setIcon(
qta_icon("mdi.view-grid-outline", color="orange") qta_icon("mdi.view-grid-outline", "ei.th-large", color="orange")
) )
self.list_view.setIcon(qta_icon("fa5s.list")) self.list_view.setIcon(qta_icon("fa5s.list", "ei.th-list"))
else: else:
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline")) self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", "ei.th-large"))
self.list_view.setIcon(qta_icon("fa5s.list", color="orange")) self.list_view.setIcon(qta_icon("fa5s.list", "ei.th-list", color="orange"))
self.icon_view_button.clicked.connect(self.icon) self.icon_view_button.clicked.connect(self.icon)
self.list_view.clicked.connect(self.list) self.list_view.clicked.connect(self.list)
@ -437,14 +440,14 @@ class SelectViewWidget(QWidget):
return self.icon_view return self.icon_view
def icon(self): def icon(self):
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", color="orange")) self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", "ei.th-large", color="orange"))
self.list_view.setIcon(qta_icon("fa5s.list")) self.list_view.setIcon(qta_icon("fa5s.list", "ei.th-list"))
self.icon_view = False self.icon_view = False
self.toggled.emit() self.toggled.emit()
def list(self): def list(self):
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline")) self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", "ei.th-large"))
self.list_view.setIcon(qta_icon("fa5s.list", color="orange")) self.list_view.setIcon(qta_icon("fa5s.list", "ei.th-list", color="orange"))
self.icon_view = True self.icon_view = True
self.toggled.emit() self.toggled.emit()

View file

@ -86,14 +86,14 @@ def download_image(game, force=False):
# Download # Download
for image in game.metadata["keyImages"]: for image in game.metadata["keyImages"]:
if ( if (
image["type"] == "DieselGameBoxTall" image["type"] == "DieselGameBoxTall"
or image["type"] == "DieselGameBoxLogo" or image["type"] == "DieselGameBoxLogo"
or image["type"] == "Thumbnail" or image["type"] == "Thumbnail"
): ):
if image["type"] not in json_data.keys(): if image["type"] not in json_data.keys():
json_data[image["type"]] = None json_data[image["type"]] = None
if json_data[image["type"]] != image["md5"] or not os.path.isfile( if json_data[image["type"]] != image["md5"] or not os.path.isfile(
f"{image_dir}/{game.app_name}/{image['type']}.png" f"{image_dir}/{game.app_name}/{image['type']}.png"
): ):
# Download # Download
json_data[image["type"]] = image["md5"] json_data[image["type"]] = image["md5"]
@ -311,7 +311,7 @@ def create_desktop_link(app_name, core: LegendaryCore, type_of_link="desktop") -
if os.path.exists(p := os.path.join(image_dir, igame.app_name, "Thumbnail.png")): if os.path.exists(p := os.path.join(image_dir, igame.app_name, "Thumbnail.png")):
icon = p icon = p
elif os.path.exists( elif os.path.exists(
p := os.path.join(image_dir, igame.app_name, "DieselGameBoxLogo.png") p := os.path.join(image_dir, igame.app_name, "DieselGameBoxLogo.png")
): ):
icon = p icon = p
else: else:
@ -467,13 +467,13 @@ class WineResolver(QRunnable):
@pyqtSlot() @pyqtSlot()
def run(self): def run(self):
if "WINEPREFIX" not in self.wine_env or not os.path.exists( if "WINEPREFIX" not in self.wine_env or not os.path.exists(
self.wine_env["WINEPREFIX"] self.wine_env["WINEPREFIX"]
): ):
# pylint: disable=E1136 # pylint: disable=E1136
self.signals.result_ready[str].emit(str()) self.signals.result_ready[str].emit(str())
return return
if not os.path.exists(self.wine_binary) or not os.path.exists( if not os.path.exists(self.wine_binary) or not os.path.exists(
self.winepath_binary self.winepath_binary
): ):
# pylint: disable=E1136 # pylint: disable=E1136
self.signals.result_ready[str].emit(str()) self.signals.result_ready[str].emit(str())
@ -531,14 +531,29 @@ def get_raw_save_path(game: Game):
if game.supports_cloud_saves: if game.supports_cloud_saves:
return ( return (
game.metadata.get("customAttributes", {}) game.metadata.get("customAttributes", {})
.get("CloudSaveFolder", {}) .get("CloudSaveFolder", {})
.get("value") .get("value")
) )
def get_default_platform(app_name): def get_default_platform(app_name):
if platform.system() != "Darwin" or app_name not in shared.api_results.mac_games: if platform.system() != "Darwin" or app_name not in shared.api_results.mac_games:
return "Windows" return "Windows"
else: else:
return "Mac" return "Mac"
def icon(icn_str: str, fallback: str = None, **kwargs):
try:
return qtawesome.icon(icn_str, **kwargs)
except Exception as e:
if not fallback:
logger.warning(str(e) + " " + icn_str)
if fallback:
try:
return qtawesome.icon(fallback, **kwargs)
except Exception as e:
logger.error(str(e))
if kwargs.get("color"):
kwargs["color"] = "red"
return qtawesome.icon("ei.error", **kwargs)