Fix Icon error for Ubuntu LTS, which uses QtAwesome 0.4.4
This commit is contained in:
parent
0698231ca0
commit
0bc15be1f6
|
@ -8,9 +8,9 @@ from PyQt5.QtWidgets import (
|
|||
QHBoxLayout,
|
||||
QPushButton,
|
||||
)
|
||||
from qtawesome import icon
|
||||
|
||||
from legendary.models.game import Game
|
||||
from rare.utils.utils import icon
|
||||
|
||||
|
||||
class UninstallDialog(QDialog):
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
from PyQt5.QtCore import QSize
|
||||
from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction, QShortcut
|
||||
from qtawesome import icon
|
||||
|
||||
from rare import shared
|
||||
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.shop import Shop
|
||||
from rare.components.tabs.tab_utils import MainTabBar, TabButtonWidget
|
||||
from rare.utils.utils import icon
|
||||
|
||||
|
||||
class TabWidget(QTabWidget):
|
||||
|
@ -56,7 +56,7 @@ class TabWidget(QTabWidget):
|
|||
self.mini_widget = MiniWidget()
|
||||
account_action = QWidgetAction(self)
|
||||
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.menu().addAction(account_action)
|
||||
self.tabBar().setTabButton(
|
||||
|
|
|
@ -9,9 +9,9 @@ from PyQt5.QtWidgets import (
|
|||
QPushButton,
|
||||
QWidget,
|
||||
)
|
||||
from qtawesome import icon
|
||||
|
||||
from rare.utils.models import InstallQueueItemModel
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = getLogger("QueueWidget")
|
||||
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
import datetime
|
||||
import sys
|
||||
from dataclasses import dataclass
|
||||
from logging import getLogger
|
||||
from typing import Union, List
|
||||
|
||||
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, Qt, QSettings
|
||||
from PyQt5.QtWidgets import QDialog, QMessageBox, QSizePolicy, QLayout
|
||||
from qtawesome import icon
|
||||
from PyQt5.QtWidgets import QDialog, QMessageBox, QSizePolicy, QLayout, QApplication
|
||||
|
||||
from legendary.core import LegendaryCore
|
||||
from legendary.models.game import SaveGameStatus, InstalledGame, SaveGameFile
|
||||
from rare import shared
|
||||
from rare.ui.components.dialogs.sync_save_dialog import Ui_SyncSaveDialog
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = getLogger("Cloud Saves")
|
||||
|
||||
|
@ -101,8 +103,8 @@ class CloudSaveDialog(QDialog, Ui_SyncSaveDialog):
|
|||
elif newer == "local":
|
||||
self.local_gb.setTitle(self.local_gb.title() + new_text)
|
||||
|
||||
self.icon_local.setPixmap(icon("mdi.harddisk").pixmap(128, 128))
|
||||
self.icon_remote.setPixmap(icon("mdi.cloud-outline").pixmap(128, 128))
|
||||
self.icon_local.setPixmap(icon("mdi.harddisk", "fa.desktop").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.download_button.clicked.connect(lambda: self.btn_clicked(self.DOWNLOAD))
|
||||
|
@ -313,3 +315,16 @@ class CloudSaveUtils(QObject):
|
|||
self.tr("Syncing with cloud failed: \n ") + error_message,
|
||||
)
|
||||
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()
|
||||
|
|
|
@ -12,7 +12,6 @@ from PyQt5.QtWidgets import (
|
|||
QPushButton,
|
||||
QSizePolicy,
|
||||
)
|
||||
from qtawesome import icon
|
||||
|
||||
from legendary.core import LegendaryCore
|
||||
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.utils.extra_widgets import PathEdit
|
||||
from rare.utils.utils import WineResolver, get_raw_save_path
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = getLogger("GameSettings")
|
||||
|
||||
|
|
|
@ -3,12 +3,12 @@ from logging import getLogger
|
|||
from PyQt5.QtCore import QEvent, pyqtSignal, QSize, Qt
|
||||
from PyQt5.QtGui import QMouseEvent
|
||||
from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QPushButton, QLabel
|
||||
from qtawesome import icon
|
||||
|
||||
from rare import shared
|
||||
from rare.components.tabs.games.game_widgets.base_installed_widget import (
|
||||
BaseInstalledWidget,
|
||||
)
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = getLogger("GameWidgetInstalled")
|
||||
|
||||
|
|
|
@ -2,12 +2,12 @@ from logging import getLogger
|
|||
|
||||
from PyQt5.QtCore import QProcess, pyqtSignal, Qt
|
||||
from PyQt5.QtWidgets import QHBoxLayout, QLabel, QPushButton, QVBoxLayout
|
||||
from qtawesome import icon
|
||||
|
||||
from rare.components.tabs.games.game_widgets.base_installed_widget import (
|
||||
BaseInstalledWidget,
|
||||
)
|
||||
from rare.utils.utils import get_size
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = getLogger("GameWidget")
|
||||
|
||||
|
|
|
@ -7,10 +7,10 @@ from PyQt5.QtWidgets import (
|
|||
QHBoxLayout,
|
||||
QComboBox,
|
||||
)
|
||||
from qtawesome import icon
|
||||
|
||||
from rare import shared
|
||||
from rare.utils.extra_widgets import SelectViewWidget
|
||||
from rare.utils.utils import icon
|
||||
|
||||
|
||||
class GameListHeadBar(QWidget):
|
||||
|
@ -62,11 +62,11 @@ class GameListHeadBar(QWidget):
|
|||
self.filter.currentIndexChanged.connect(self.filter_changed)
|
||||
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.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.layout().addWidget(self.egl_sync)
|
||||
# FIXME: Until it is ready
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
from PyQt5.QtCore import QSettings, pyqtSignal
|
||||
from PyQt5.QtCore import QSettings
|
||||
from PyQt5.QtWidgets import QGroupBox
|
||||
|
||||
from rare.ui.components.tabs.settings.rpc import Ui_RPCSettings
|
||||
|
||||
|
||||
class RPCSettings(QGroupBox, Ui_RPCSettings):
|
||||
update_settings = pyqtSignal()
|
||||
|
||||
def __init__(self):
|
||||
super(RPCSettings, self).__init__()
|
||||
def __init__(self, parent):
|
||||
super(RPCSettings, self).__init__(parent=parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self.settings = QSettings()
|
||||
|
@ -33,4 +31,3 @@ class RPCSettings(QGroupBox, Ui_RPCSettings):
|
|||
|
||||
def changed(self, i):
|
||||
self.settings.setValue("rpc_enable", i)
|
||||
self.update_settings.emit()
|
||||
|
|
|
@ -4,10 +4,10 @@ from logging import getLogger
|
|||
|
||||
from PyQt5.QtCore import QObject, pyqtSignal, QRunnable, QThreadPool, QSize
|
||||
from PyQt5.QtWidgets import QWidget, QLabel, QHBoxLayout, QSizePolicy, QPushButton
|
||||
from qtawesome import icon
|
||||
|
||||
from legendary.models.game import Game
|
||||
from rare import shared
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = getLogger("Ubisoft")
|
||||
|
||||
|
|
|
@ -13,12 +13,12 @@ from PyQt5.QtWidgets import (
|
|||
QTabWidget,
|
||||
QGridLayout,
|
||||
)
|
||||
from qtawesome import icon
|
||||
|
||||
from rare import shared
|
||||
from rare.components.tabs.shop.shop_models import ShopGame
|
||||
from rare.ui.components.tabs.store.shop_game_info import Ui_shop_info
|
||||
from rare.utils.extra_widgets import WaitingSpinner, ImageLabel
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = logging.getLogger("ShopInfo")
|
||||
|
||||
|
@ -234,10 +234,10 @@ class ShopGameInfo(QWidget, Ui_shop_info):
|
|||
for name, url in self.game.links:
|
||||
|
||||
if name.lower() == "homepage":
|
||||
icn = icon("mdi.web", scale_factor=1.5)
|
||||
icn = icon("mdi.web", "fa.search", scale_factor=1.5)
|
||||
else:
|
||||
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:
|
||||
logger.error(str(e))
|
||||
continue
|
||||
|
|
|
@ -5,11 +5,11 @@ from PyQt5.QtCore import pyqtSignal
|
|||
from PyQt5.QtGui import QFont
|
||||
from PyQt5.QtNetwork import QNetworkAccessManager
|
||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout
|
||||
from qtawesome import icon
|
||||
|
||||
from rare.components.tabs.shop.shop_models import ImageUrlModel
|
||||
from rare.ui.components.tabs.store.wishlist_widget import Ui_WishlistWidget
|
||||
from rare.utils.extra_widgets import ImageLabel
|
||||
from rare.utils.utils import icon
|
||||
|
||||
logger = logging.getLogger("GameWidgets")
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
from PyQt5.QtCore import pyqtSignal
|
||||
from PyQt5.QtWidgets import QStackedWidget, QMessageBox
|
||||
from qtawesome import icon
|
||||
|
||||
from rare.components.tabs.shop import ShopApiCore
|
||||
from rare.components.tabs.shop.game_widgets import WishlistWidget
|
||||
from rare.ui.components.tabs.store.wishlist import Ui_Wishlist
|
||||
from rare.utils.extra_widgets import WaitingSpinner
|
||||
from rare.utils.utils import icon
|
||||
|
||||
|
||||
class Wishlist(QStackedWidget, Ui_Wishlist):
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from PyQt5.QtCore import QSize
|
||||
from PyQt5.QtWidgets import QTabBar, QToolButton
|
||||
from qtawesome import icon
|
||||
|
||||
from rare.utils.utils import icon
|
||||
|
||||
|
||||
class MainTabBar(QTabBar):
|
||||
|
@ -25,10 +26,10 @@ class MainTabBar(QTabBar):
|
|||
|
||||
|
||||
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__()
|
||||
self.setText("Icon")
|
||||
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.setIconSize(QSize(25, 25))
|
||||
|
|
|
@ -32,10 +32,10 @@ from PyQt5.QtWidgets import (
|
|||
QStyledItemDelegate,
|
||||
QFileIconProvider,
|
||||
)
|
||||
from qtawesome import icon as qta_icon
|
||||
|
||||
from rare import cache_dir
|
||||
from rare.utils.qt_requests import QtRequestManager
|
||||
from rare.utils.utils import icon as qta_icon
|
||||
|
||||
logger = getLogger("ExtraWidgets")
|
||||
|
||||
|
@ -244,22 +244,22 @@ class IndicatorLineEdit(QWidget):
|
|||
|
||||
class PathEditIconProvider(QFileIconProvider):
|
||||
icons = [
|
||||
"mdi.file-cancel", # Unknown
|
||||
"mdi.desktop-classic", # Computer
|
||||
"mdi.desktop-mac", # Desktop
|
||||
"mdi.trash-can", # Trashcan
|
||||
"mdi.server-network", # Network
|
||||
"mdi.harddisk", # Drive
|
||||
"mdi.folder", # Folder
|
||||
"mdi.file", # File
|
||||
"mdi.cog", # Executable
|
||||
("mdi.file-cancel", "fa.file-excel-o"), # Unknown
|
||||
("mdi.desktop-classic", "fa.desktop"), # Computer
|
||||
("mdi.desktop-mac", "fa.desktop"), # Desktop
|
||||
("mdi.trash-can", "fa.trash"), # Trashcan
|
||||
("mdi.server-network", "fa.server"), # Network
|
||||
("mdi.harddisk", "fa.desktop"), # Drive
|
||||
("mdi.folder", "fa.folder"), # Folder
|
||||
("mdi.file", "fa.file"), # File
|
||||
("mdi.cog", "fa.cog"), # Executable
|
||||
]
|
||||
|
||||
def __init__(self):
|
||||
super(PathEditIconProvider, self).__init__()
|
||||
self.icon_types = dict()
|
||||
for idx, icn in enumerate(self.icons):
|
||||
self.icon_types.update({idx - 1: qta_icon(icn, color="#eeeeee")})
|
||||
for idx, (icn, fallback) in enumerate(self.icons):
|
||||
self.icon_types.update({idx - 1: qta_icon(icn, fallback, color="#eeeeee")})
|
||||
|
||||
def icon(self, info_type):
|
||||
if isinstance(info_type, QFileInfo):
|
||||
|
@ -291,11 +291,14 @@ class PathEdit(IndicatorLineEdit):
|
|||
horiz_policy: QSizePolicy = QSizePolicy.Expanding,
|
||||
parent=None,
|
||||
):
|
||||
try:
|
||||
self.compl_model.setOptions(
|
||||
QFileSystemModel.DontWatchForChanges
|
||||
| QFileSystemModel.DontResolveSymlinks
|
||||
| QFileSystemModel.DontUseCustomDirectoryIcons
|
||||
)
|
||||
except AttributeError as e: # Error on Ubuntu
|
||||
logger.warning(e)
|
||||
self.compl_model.setIconProvider(PathEditIconProvider())
|
||||
self.compl_model.setRootPath(path)
|
||||
self.completer.setModel(self.compl_model)
|
||||
|
@ -381,7 +384,7 @@ class SideTabWidget(QTabWidget):
|
|||
self.setDocumentMode(True)
|
||||
self.setTabPosition(QTabWidget.West)
|
||||
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)
|
||||
|
||||
def back_func(self, tab):
|
||||
|
@ -417,12 +420,12 @@ class SelectViewWidget(QWidget):
|
|||
self.list_view = QPushButton()
|
||||
if icon_view:
|
||||
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:
|
||||
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline"))
|
||||
self.list_view.setIcon(qta_icon("fa5s.list", color="orange"))
|
||||
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", "ei.th-large"))
|
||||
self.list_view.setIcon(qta_icon("fa5s.list", "ei.th-list", color="orange"))
|
||||
|
||||
self.icon_view_button.clicked.connect(self.icon)
|
||||
self.list_view.clicked.connect(self.list)
|
||||
|
@ -437,14 +440,14 @@ class SelectViewWidget(QWidget):
|
|||
return self.icon_view
|
||||
|
||||
def icon(self):
|
||||
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", color="orange"))
|
||||
self.list_view.setIcon(qta_icon("fa5s.list"))
|
||||
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", "ei.th-large", color="orange"))
|
||||
self.list_view.setIcon(qta_icon("fa5s.list", "ei.th-list"))
|
||||
self.icon_view = False
|
||||
self.toggled.emit()
|
||||
|
||||
def list(self):
|
||||
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline"))
|
||||
self.list_view.setIcon(qta_icon("fa5s.list", color="orange"))
|
||||
self.icon_view_button.setIcon(qta_icon("mdi.view-grid-outline", "ei.th-large"))
|
||||
self.list_view.setIcon(qta_icon("fa5s.list", "ei.th-list", color="orange"))
|
||||
self.icon_view = True
|
||||
self.toggled.emit()
|
||||
|
||||
|
|
|
@ -539,6 +539,21 @@ def get_raw_save_path(game: Game):
|
|||
def get_default_platform(app_name):
|
||||
if platform.system() != "Darwin" or app_name not in shared.api_results.mac_games:
|
||||
return "Windows"
|
||||
|
||||
else:
|
||||
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)
|
||||
|
|
Loading…
Reference in a new issue