1
0
Fork 0
mirror of synced 2024-05-04 20:52:58 +12:00

Merge pull request #385 from loathingKernel/next

Various UI fixes and CSS updates
This commit is contained in:
Stelios Tsampas 2024-02-22 12:08:53 +02:00 committed by GitHub
commit 4548a8b1e0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
52 changed files with 332 additions and 272 deletions

View file

@ -9,7 +9,7 @@ from legendary.core import LegendaryCore
from legendary.models.game import InstalledGame
from rare.ui.components.tabs.games.game_info.cloud_sync_widget import Ui_CloudSyncWidget
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.dialogs import ButtonDialog, game_title
logger = getLogger("CloudSyncDialog")
@ -41,7 +41,7 @@ class CloudSyncDialog(ButtonDialog):
layout.addWidget(sync_widget)
self.accept_button.setText(self.tr("Skip"))
self.accept_button.setIcon(icon("fa.chevron-right"))
self.accept_button.setIcon(qta_icon("fa.chevron-right"))
self.setCentralLayout(layout)
@ -62,8 +62,8 @@ class CloudSyncDialog(ButtonDialog):
self.sync_ui.date_info_local.setText(dt_local.strftime("%A, %d. %B %Y %X") if dt_local else "None")
self.sync_ui.date_info_remote.setText(dt_remote.strftime("%A, %d. %B %Y %X") if dt_remote else "None")
self.sync_ui.icon_local.setPixmap(icon("mdi.harddisk", "fa.desktop").pixmap(128, 128))
self.sync_ui.icon_remote.setPixmap(icon("mdi.cloud-outline", "ei.cloud").pixmap(128, 128))
self.sync_ui.icon_local.setPixmap(qta_icon("mdi.harddisk", "fa.desktop").pixmap(128, 128))
self.sync_ui.icon_remote.setPixmap(qta_icon("mdi.cloud-outline", "ei.cloud").pixmap(128, 128))
self.sync_ui.upload_button.clicked.connect(self.__on_upload)
self.sync_ui.download_button.clicked.connect(self.__on_download)

View file

@ -13,7 +13,7 @@ from PyQt5.QtWidgets import (
QSizePolicy, QTableWidgetItem, QHeaderView, QApplication,
)
from rare.ui.launcher.console_env import Ui_ConsoleEnv
from rare.ui.commands.launcher.console_env import Ui_ConsoleEnv
from rare.widgets.dialogs import dialog_title, game_title

View file

@ -13,7 +13,7 @@ from rare.models.install import InstallDownloadModel, InstallQueueItemModel, Ins
from rare.shared.workers.install_info import InstallInfoWorker
from rare.ui.components.dialogs.install_dialog import Ui_InstallDialog
from rare.ui.components.dialogs.install_dialog_advanced import Ui_InstallDialogAdvanced
from rare.utils.misc import format_size, icon
from rare.utils.misc import format_size, qta_icon
from rare.widgets.collapsible_widget import CollapsibleFrame
from rare.widgets.dialogs import ActionDialog, game_title
from rare.widgets.indicator_edit import PathEdit, IndicatorReasonsCommon
@ -63,17 +63,17 @@ class InstallDialog(ActionDialog):
super(InstallDialog, self).__init__(parent=parent)
header = self.tr("Install")
bicon = icon("ri.install-line")
bicon = qta_icon("ri.install-line")
if options.repair_mode:
header = self.tr("Repair")
bicon = icon("fa.wrench")
bicon = qta_icon("fa.wrench")
if options.repair_and_update:
header = self.tr("Repair and update")
elif options.update:
header = self.tr("Update")
elif options.reset_sdl:
header = self.tr("Modify")
bicon = icon("fa.gear")
bicon = qta_icon("fa.gear")
self.setWindowTitle(game_title(header, rgame.app_title))
self.setSubtitle(game_title(header, rgame.app_title))
@ -198,7 +198,7 @@ class InstallDialog(ActionDialog):
self.accept_button.setObjectName("InstallButton")
self.action_button.setText(self.tr("Verify"))
self.action_button.setIcon(icon("fa.check"))
self.action_button.setIcon(qta_icon("fa.check"))
self.setCentralWidget(install_widget)

View file

@ -7,7 +7,7 @@ from legendary.core import LegendaryCore
from rare.shared import ArgumentsSingleton
from rare.ui.components.dialogs.login.landing_page import Ui_LandingPage
from rare.ui.components.dialogs.login.login_dialog import Ui_LoginDialog
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.dialogs import BaseDialog
from rare.widgets.sliding_stack import SlidingStackedWidget
from .browser_login import BrowserLogin
@ -99,9 +99,9 @@ class LoginDialog(BaseDialog):
self.login_stack.setCurrentWidget(self.landing_page)
self.ui.exit_button.setIcon(icon("fa.remove"))
self.ui.back_button.setIcon(icon("fa.chevron-left"))
self.ui.next_button.setIcon(icon("fa.chevron-right"))
self.ui.exit_button.setIcon(qta_icon("fa.remove"))
self.ui.back_button.setIcon(qta_icon("fa.chevron-left"))
self.ui.next_button.setIcon(qta_icon("fa.chevron-right"))
# lk: Set next as the default button only to stop closing the dialog when pressing enter
self.ui.exit_button.setAutoDefault(False)

View file

@ -9,7 +9,7 @@ from legendary.utils import webview_login
from rare.lgndr.core import LegendaryCore
from rare.ui.components.dialogs.login.browser_login import Ui_BrowserLogin
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.utils.paths import get_rare_executable
from rare.widgets.indicator_edit import IndicatorLineEdit, IndicatorReasonsCommon
@ -34,7 +34,7 @@ class BrowserLogin(QFrame):
)
self.sid_edit.line_edit.setEchoMode(QLineEdit.Password)
self.ui.link_text.setText(self.login_url)
self.ui.copy_button.setIcon(icon("mdi.content-copy", "fa.copy"))
self.ui.copy_button.setIcon(qta_icon("mdi.content-copy", "fa.copy"))
self.ui.copy_button.clicked.connect(self.copy_link)
self.ui.form_layout.setWidget(
self.ui.form_layout.getWidgetPosition(self.ui.sid_label)[0],

View file

@ -54,7 +54,7 @@ class ImportLogin(QFrame):
else:
self.ui.status_label.setText(self.text_egl_notfound)
self.ui.prefix_tool.clicked.connect(self.prefix_path)
self.ui.prefix_button.clicked.connect(self.prefix_path)
self.ui.prefix_combo.editTextChanged.connect(self.changed.emit)
def get_wine_prefixes(self):

View file

@ -10,7 +10,7 @@ from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QLabel, QFileDialog, QLayo
from rare.models.install import MoveGameModel
from rare.models.game import RareGame
from rare.shared import RareCore
from rare.utils.misc import path_size, format_size, icon
from rare.utils.misc import path_size, format_size, qta_icon
from rare.widgets.dialogs import ActionDialog, game_title
from rare.widgets.elide_label import ElideLabel
from rare.widgets.indicator_edit import PathEdit, IndicatorReasons, IndicatorReasonsCommon
@ -76,7 +76,7 @@ class MoveDialog(ActionDialog):
self.setCentralLayout(layout)
self.accept_button.setText(self.tr("Move"))
self.accept_button.setIcon(icon("mdi.folder-move-outline"))
self.accept_button.setIcon(qta_icon("mdi.folder-move-outline"))
self.action_button.setHidden(True)

View file

@ -3,7 +3,7 @@ from PyQt5.QtWidgets import QVBoxLayout, QGroupBox
from rare.models.game import RareGame
from rare.models.install import SelectiveDownloadsModel
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.dialogs import ButtonDialog, game_title
from rare.widgets.selective_widget import SelectiveWidget
@ -31,7 +31,7 @@ class SelectiveDialog(ButtonDialog):
self.setCentralLayout(layout)
self.accept_button.setText(self.tr("Verify"))
self.accept_button.setIcon(icon("fa.check"))
self.accept_button.setIcon(qta_icon("fa.check"))
self.options: SelectiveDownloadsModel = SelectiveDownloadsModel(rgame.app_name)

View file

@ -6,7 +6,7 @@ from PyQt5.QtWidgets import (
from rare.models.game import RareGame
from rare.models.install import UninstallOptionsModel
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.dialogs import ButtonDialog, game_title
@ -39,7 +39,7 @@ class UninstallDialog(ButtonDialog):
self.setCentralLayout(layout)
self.accept_button.setText(self.tr("Uninstall"))
self.accept_button.setIcon(icon("ri.uninstall-line"))
self.accept_button.setIcon(qta_icon("ri.uninstall-line"))
self.accept_button.setObjectName("UninstallButton")
if rgame.sdl_name is not None:

View file

@ -2,7 +2,7 @@ from PyQt5.QtCore import QSize, pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction, QShortcut, QMessageBox
from rare.shared import RareCore, LegendaryCoreSingleton, GlobalSignalsSingleton, ArgumentsSingleton
from rare.utils.misc import icon, ExitCodes
from rare.utils.misc import qta_icon, ExitCodes
from .account import AccountWidget
from .downloads import DownloadsTab
from .games import GamesTab
@ -18,6 +18,7 @@ class MainTabWidget(QTabWidget):
def __init__(self, parent):
super(MainTabWidget, self).__init__(parent=parent)
self.rcore = RareCore.instance()
self.core = LegendaryCoreSingleton()
self.signals = GlobalSignalsSingleton()
@ -54,22 +55,22 @@ class MainTabWidget(QTabWidget):
self.account_widget.exit_app.connect(self.__on_exit_app)
account_action = QWidgetAction(self)
account_action.setDefaultWidget(self.account_widget)
account_button = TabButtonWidget("mdi.account-circle", "Account", fallback_icon="fa.user")
account_button.setMenu(QMenu())
account_button.menu().addAction(account_action)
account_button = TabButtonWidget(qta_icon("mdi.account-circle", fallback="fa.user"), tooltip="Menu")
account_menu = QMenu(account_button)
account_menu.addAction(account_action)
account_button.setMenu(account_menu)
self.tab_bar.setTabButton(
button_index, MainTabBar.RightSide, account_button
)
self.settings_tab = SettingsTab(self)
self.settings_index = self.addTab(self.settings_tab, icon("fa.gear"), "")
self.settings_index = self.addTab(self.settings_tab, qta_icon("fa.gear"), "")
self.settings_tab.about.update_available_ready.connect(
lambda: self.tab_bar.setTabText(self.settings_index, "(!)")
)
# Open game list on click on Games tab button
self.tabBarClicked.connect(self.mouse_clicked)
self.setIconSize(QSize(24, 24))
# shortcuts
QShortcut("Alt+1", self).activated.connect(lambda: self.setCurrentIndex(self.games_index))

View file

@ -4,7 +4,7 @@ from PyQt5.QtCore import pyqtSignal, pyqtSlot
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton
from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton
from rare.utils.misc import icon, ExitCodes
from rare.utils.misc import qta_icon, ExitCodes
class AccountWidget(QWidget):
@ -20,7 +20,7 @@ class AccountWidget(QWidget):
if not username:
username = "Offline"
self.open_browser = QPushButton(icon("fa.external-link"), self.tr("Account settings"))
self.open_browser = QPushButton(qta_icon("fa.external-link"), self.tr("Account settings"))
self.open_browser.clicked.connect(
lambda: webbrowser.open(
"https://www.epicgames.com/account/personal?productName=epicgames"

View file

@ -22,7 +22,7 @@ from rare.shared import RareCore
from rare.shared.workers.wine_resolver import WineSavePathResolver
from rare.ui.components.tabs.games.game_info.cloud_settings_widget import Ui_CloudSettingsWidget
from rare.ui.components.tabs.games.game_info.cloud_sync_widget import Ui_CloudSyncWidget
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.utils.metrics import timelogger
from rare.widgets.indicator_edit import PathEdit, IndicatorReasonsCommon
from rare.widgets.loading_widget import LoadingWidget
@ -45,8 +45,8 @@ class CloudSaves(QWidget, SideTabContents):
self.core = RareCore.instance().core()
self.settings = QSettings()
self.sync_ui.icon_local.setPixmap(icon("mdi.harddisk", "fa.desktop").pixmap(128, 128))
self.sync_ui.icon_remote.setPixmap(icon("mdi.cloud-outline", "ei.cloud").pixmap(128, 128))
self.sync_ui.icon_local.setPixmap(qta_icon("mdi.harddisk", "fa.desktop").pixmap(128, 128))
self.sync_ui.icon_remote.setPixmap(qta_icon("mdi.cloud-outline", "ei.cloud").pixmap(128, 128))
self.sync_ui.upload_button.clicked.connect(self.upload)
self.sync_ui.download_button.clicked.connect(self.download)
@ -73,7 +73,7 @@ class CloudSaves(QWidget, SideTabContents):
self.cloud_save_path_edit
)
self.compute_save_path_button = QPushButton(icon("fa.magic"), self.tr("Calculate path"))
self.compute_save_path_button = QPushButton(qta_icon("fa.magic"), self.tr("Calculate path"))
self.compute_save_path_button.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
self.compute_save_path_button.clicked.connect(self.compute_save_path)
self.cloud_ui.main_layout.addRow(None, self.compute_save_path_button)

View file

@ -10,7 +10,7 @@ from rare.ui.components.tabs.games.game_info.game_dlc import Ui_GameDlc
from rare.ui.components.tabs.games.game_info.game_dlc_widget import Ui_GameDlcWidget
from rare.widgets.image_widget import ImageWidget, ImageSize
from rare.widgets.side_tab import SideTabContents
from rare.utils.misc import widget_object_name, icon
from rare.utils.misc import widget_object_name, qta_icon
class GameDlcWidget(QFrame):
@ -57,7 +57,7 @@ class InstalledGameDlcWidget(GameDlcWidget):
self.ui.action_button.setObjectName("UninstallButton")
self.ui.action_button.clicked.connect(self.uninstall_dlc)
self.ui.action_button.setText(self.tr("Uninstall DLC"))
self.ui.action_button.setIcon(icon("ri.uninstall-line"))
self.ui.action_button.setIcon(qta_icon("ri.uninstall-line"))
# lk: don't reference `self.rdlc` here because the object has been deleted
rdlc.signals.game.uninstalled.connect(self.__uninstalled)
@ -78,7 +78,7 @@ class AvailableGameDlcWidget(GameDlcWidget):
self.ui.action_button.setObjectName("InstallButton")
self.ui.action_button.clicked.connect(self.install_dlc)
self.ui.action_button.setText(self.tr("Install DLC"))
self.ui.action_button.setIcon(icon("ri.install-line"))
self.ui.action_button.setIcon(qta_icon("ri.install-line"))
# lk: don't reference `self.rdlc` here because the object has been deleted
rdlc.signals.game.installed.connect(self.__installed)

View file

@ -20,7 +20,7 @@ from rare.models.game import RareGame
from rare.shared import RareCore
from rare.shared.workers import VerifyWorker, MoveWorker
from rare.ui.components.tabs.games.game_info.game_info import Ui_GameInfo
from rare.utils.misc import format_size, icon, style_hyperlink
from rare.utils.misc import format_size, qta_icon, style_hyperlink
from rare.widgets.image_widget import ImageWidget, ImageSize
from rare.widgets.side_tab import SideTabContents
from rare.components.dialogs.move_dialog import MoveDialog, is_game_dir
@ -41,14 +41,14 @@ class GameInfo(QWidget, SideTabContents):
self.ui.modify_button.setObjectName("InstallButton")
self.ui.uninstall_button.setObjectName("UninstallButton")
self.ui.install_button.setIcon(icon("ri.install-line"))
self.ui.import_button.setIcon(icon("mdi.application-import"))
self.ui.install_button.setIcon(qta_icon("ri.install-line"))
self.ui.import_button.setIcon(qta_icon("mdi.application-import"))
self.ui.modify_button.setIcon(icon("fa.gear"))
self.ui.verify_button.setIcon(icon("fa.check"))
self.ui.repair_button.setIcon(icon("fa.wrench"))
self.ui.move_button.setIcon(icon("mdi.folder-move-outline"))
self.ui.uninstall_button.setIcon(icon("ri.uninstall-line"))
self.ui.modify_button.setIcon(qta_icon("fa.gear"))
self.ui.verify_button.setIcon(qta_icon("fa.check"))
self.ui.repair_button.setIcon(qta_icon("fa.wrench"))
self.ui.move_button.setIcon(qta_icon("mdi.folder-move-outline"))
self.ui.uninstall_button.setIcon(qta_icon("ri.uninstall-line"))
self.rcore = RareCore.instance()
self.core = RareCore.instance().core()

View file

@ -10,7 +10,7 @@ from PyQt5.QtWidgets import (
QPushButton,
)
from rare.utils.misc import icon, widget_object_name
from rare.utils.misc import qta_icon, widget_object_name
from rare.widgets.elide_label import ElideLabel
@ -59,13 +59,13 @@ class IconWidget(object):
# play button
self.launch_btn = QPushButton(parent=self.mini_widget)
self.launch_btn.setObjectName(f"{type(self).__name__}Button")
self.launch_btn.setIcon(icon("ei.play-alt", color="white"))
self.launch_btn.setIcon(qta_icon("ei.play-alt", color="white"))
self.launch_btn.setIconSize(QSize(20, 20))
self.launch_btn.setFixedSize(QSize(widget.width() // 4, widget.width() // 4))
self.install_btn = QPushButton(parent=self.mini_widget)
self.install_btn.setObjectName(f"{type(self).__name__}Button")
self.install_btn.setIcon(icon("ri.install-fill", color="white"))
self.install_btn.setIcon(qta_icon("ri.install-fill", color="white"))
self.install_btn.setIconSize(QSize(20, 20))
self.install_btn.setFixedSize(QSize(widget.width() // 4, widget.width() // 4))

View file

@ -9,7 +9,7 @@ from PyQt5.QtWidgets import (
QWidget,
)
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.elide_label import ElideLabel
@ -40,13 +40,13 @@ class ListWidget(object):
self.install_btn = QPushButton(parent=widget)
self.install_btn.setObjectName(f"{type(self).__name__}Button")
self.install_btn.setIcon(icon("ri.install-line"))
self.install_btn.setIcon(qta_icon("ri.install-line"))
self.install_btn.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.install_btn.setFixedWidth(120)
self.launch_btn = QPushButton(parent=widget)
self.launch_btn.setObjectName(f"{type(self).__name__}Button")
self.launch_btn.setIcon(icon("ei.play-alt"))
self.launch_btn.setIcon(qta_icon("ei.play-alt"))
self.launch_btn.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
self.launch_btn.setFixedWidth(120)

View file

@ -5,15 +5,14 @@ from PyQt5.QtWidgets import (
QWidget,
QHBoxLayout,
QComboBox,
QToolButton,
QMenu,
QAction,
QAction, QSpacerItem, QSizePolicy,
)
from rare.shared import RareCore
from rare.models.options import options, LibraryFilter, LibraryOrder
from rare.shared import RareCore
from rare.utils.extra_widgets import ButtonLineEdit
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
class GameListHeadBar(QWidget):
@ -83,15 +82,15 @@ class GameListHeadBar(QWidget):
integrations_menu = QMenu(parent=self)
import_action = QAction(
icon("mdi.import", "fa.arrow-down"), self.tr("Import Game"), integrations_menu
qta_icon("mdi.import", "fa.arrow-down"), self.tr("Import Game"), integrations_menu
)
import_action.triggered.connect(self.goto_import)
egl_sync_action = QAction(icon("mdi.sync", "fa.refresh"), self.tr("Sync with EGL"), integrations_menu)
egl_sync_action = QAction(qta_icon("mdi.sync", "fa.refresh"), self.tr("Sync with EGL"), integrations_menu)
egl_sync_action.triggered.connect(self.goto_egl_sync)
eos_ubisoft_action = QAction(
icon("mdi.rocket", "fa.rocket"), self.tr("Epic Overlay and Ubisoft"), integrations_menu
qta_icon("mdi.rocket", "fa.rocket"), self.tr("Epic Overlay and Ubisoft"), integrations_menu
)
eos_ubisoft_action.triggered.connect(self.goto_eos_ubisoft)
@ -99,19 +98,18 @@ class GameListHeadBar(QWidget):
integrations_menu.addAction(egl_sync_action)
integrations_menu.addAction(eos_ubisoft_action)
integrations = QToolButton(parent=self)
integrations = QPushButton(parent=self)
integrations.setText(self.tr("Integrations"))
integrations.setMenu(integrations_menu)
integrations.setPopupMode(QToolButton.InstantPopup)
self.search_bar = ButtonLineEdit("fa.search", placeholder_text=self.tr("Search Game"))
self.search_bar = ButtonLineEdit("fa.search", placeholder_text=self.tr("Search"))
self.search_bar.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
self.search_bar.setObjectName("SearchBar")
self.search_bar.setFrame(False)
self.search_bar.setMinimumWidth(250)
installed_tooltip = self.tr("Installed games")
self.installed_icon = QLabel(parent=self)
self.installed_icon.setPixmap(icon("ph.floppy-disk-back-fill").pixmap(QSize(16, 16)))
self.installed_icon.setPixmap(qta_icon("ph.floppy-disk-back-fill").pixmap(QSize(16, 16)))
self.installed_icon.setToolTip(installed_tooltip)
self.installed_label = QLabel(parent=self)
font = self.installed_label.font()
@ -120,29 +118,27 @@ class GameListHeadBar(QWidget):
self.installed_label.setToolTip(installed_tooltip)
available_tooltip = self.tr("Available games")
self.available_icon = QLabel(parent=self)
self.available_icon.setPixmap(icon("ph.floppy-disk-back-light").pixmap(QSize(16, 16)))
self.available_icon.setPixmap(qta_icon("ph.floppy-disk-back-light").pixmap(QSize(16, 16)))
self.available_icon.setToolTip(available_tooltip)
self.available_label = QLabel(parent=self)
self.available_label.setToolTip(available_tooltip)
self.refresh_list = QPushButton(parent=self)
self.refresh_list.setIcon(icon("fa.refresh")) # Reload icon
self.refresh_list.setIcon(qta_icon("fa.refresh")) # Reload icon
self.refresh_list.clicked.connect(self.__refresh_clicked)
layout = QHBoxLayout(self)
layout.setContentsMargins(0, 5, 0, 5)
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(self.filter)
layout.addWidget(self.order)
layout.addStretch(0)
layout.addWidget(integrations)
layout.addStretch(3)
layout.addSpacerItem(QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed))
layout.addWidget(self.search_bar)
layout.addStretch(4)
layout.addWidget(self.installed_icon)
layout.addWidget(self.installed_label)
layout.addWidget(self.available_icon)
layout.addWidget(self.available_label)
layout.addStretch(4)
layout.addSpacerItem(QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed))
layout.addWidget(integrations)
layout.addWidget(self.refresh_list)
def set_games_count(self, inst: int, avail: int) -> None:

View file

@ -46,7 +46,6 @@ class EGLSyncGroup(QGroupBox):
)
self.egl_path_info = ElideLabel(parent=self)
self.egl_path_info.setProperty("infoLabel", 1)
self.ui.egl_sync_layout.setWidget(
self.ui.egl_sync_layout.getWidgetPosition(self.ui.egl_path_info_label)[0],
QFormLayout.FieldRole, self.egl_path_info

View file

@ -22,7 +22,7 @@ from rare.models.game import RareEosOverlay
from rare.shared import RareCore
from rare.ui.components.tabs.games.integrations.eos_widget import Ui_EosWidget
from rare.utils import config_helper as config
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.elide_label import ElideLabel
logger = getLogger("EpicOverlay")
@ -102,15 +102,15 @@ class EosPrefixWidget(QFrame):
if not self.overlay.is_installed and not self.overlay.available_paths(self.prefix):
self.setDisabled(True)
self.indicator.setPixmap(icon("fa.circle-o", color="grey").pixmap(20, 20))
self.indicator.setPixmap(qta_icon("fa.circle-o", color="grey").pixmap(20, 20))
self.overlay_label.setText(self.overlay.active_path(self.prefix))
self.button.setText(self.tr("Unavailable"))
return
if self.overlay.is_enabled(self.prefix):
self.indicator.setPixmap(icon("fa.check-circle-o", color="green").pixmap(QSize(20, 20)))
self.indicator.setPixmap(qta_icon("fa.check-circle-o", color="green").pixmap(QSize(20, 20)))
else:
self.indicator.setPixmap(icon("fa.times-circle-o", color="red").pixmap(QSize(20, 20)))
self.indicator.setPixmap(qta_icon("fa.times-circle-o", color="red").pixmap(QSize(20, 20)))
install_path = os.path.normpath(p) if (p := self.overlay.install_path) else ""
@ -171,8 +171,8 @@ class EosGroup(QGroupBox):
self.ui.install_page_layout.setAlignment(Qt.AlignTop)
self.ui.info_page_layout.setAlignment(Qt.AlignTop)
self.ui.install_button.setIcon(icon("ri.install-line"))
self.ui.uninstall_button.setIcon(icon("ri.uninstall-line"))
self.ui.install_button.setIcon(qta_icon("ri.install-line"))
self.ui.uninstall_button.setIcon(qta_icon("ri.uninstall-line"))
self.installed_path_label = ElideLabel(parent=self)
self.installed_version_label = ElideLabel(parent=self)

View file

@ -20,7 +20,7 @@ from rare.lgndr.core import LegendaryCore
from rare.shared import RareCore
from rare.shared.workers.worker import Worker
from rare.utils.metrics import timelogger
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.elide_label import ElideLabel
from rare.widgets.loading_widget import LoadingWidget
@ -104,7 +104,7 @@ class UbiLinkWidget(QFrame):
self.ubi_account_id = ubi_account_id
self.ok_indicator = QLabel(parent=self)
self.ok_indicator.setPixmap(icon("fa.circle-o", color="grey").pixmap(20, 20))
self.ok_indicator.setPixmap(qta_icon("fa.circle-o", color="grey").pixmap(20, 20))
self.ok_indicator.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
self.title_label = ElideLabel(game.app_title, parent=self)
@ -116,7 +116,7 @@ class UbiLinkWidget(QFrame):
if activated:
self.link_button.setText(self.tr("Already activated"))
self.link_button.setDisabled(True)
self.ok_indicator.setPixmap(icon("fa.check-circle-o", color="green").pixmap(QSize(20, 20)))
self.ok_indicator.setPixmap(qta_icon("fa.check-circle-o", color="green").pixmap(QSize(20, 20)))
layout = QHBoxLayout(self)
layout.setContentsMargins(-1, 0, 0, 0)
@ -127,7 +127,7 @@ class UbiLinkWidget(QFrame):
def activate(self):
self.link_button.setDisabled(True)
# self.ok_indicator.setPixmap(icon("mdi.loading", color="grey").pixmap(20, 20))
self.ok_indicator.setPixmap(icon("mdi.transit-connection-horizontal", color="grey").pixmap(20, 20))
self.ok_indicator.setPixmap(qta_icon("mdi.transit-connection-horizontal", color="grey").pixmap(20, 20))
if self.args.debug:
worker = UbiConnectWorker(RareCore.instance().core(), None, None)
@ -140,11 +140,11 @@ class UbiLinkWidget(QFrame):
def worker_finished(self, error):
if not error:
self.ok_indicator.setPixmap(icon("fa.check-circle-o", color="green").pixmap(QSize(20, 20)))
self.ok_indicator.setPixmap(qta_icon("fa.check-circle-o", color="green").pixmap(QSize(20, 20)))
self.link_button.setDisabled(True)
self.link_button.setText(self.tr("Already activated"))
else:
self.ok_indicator.setPixmap(icon("fa.times-circle-o", color="red").pixmap(QSize(20, 20)))
self.ok_indicator.setPixmap(qta_icon("fa.times-circle-o", color="red").pixmap(QSize(20, 20)))
self.ok_indicator.setToolTip(error)
self.link_button.setText(self.tr("Try again"))
self.link_button.setDisabled(False)

View file

@ -8,7 +8,7 @@ from PyQt5.QtCore import Qt, QModelIndex, QAbstractTableModel, pyqtSlot
from PyQt5.QtGui import QFont
from rare.lgndr.core import LegendaryCore
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
if platform.system() != "Windows":
from rare.utils.compat.wine import get_wine_environment
@ -139,12 +139,12 @@ class EnvVarsTableModel(QAbstractTableModel):
if orientation == Qt.Vertical:
if section < self.__data_length():
if self.__is_readonly(section) or not self.__is_local(section):
return icon("mdi.lock", "ei.lock")
return qta_icon("mdi.lock", "ei.lock")
if self.__is_global(section) and self.__is_local(section):
return icon("mdi.refresh", "ei.refresh")
return qta_icon("mdi.refresh", "ei.refresh")
if self.__is_local(section):
return icon("mdi.delete", "ei.remove-sign")
return icon("mdi.plus", "ei.plus-sign")
return qta_icon("mdi.delete", "ei.remove-sign")
return qta_icon("mdi.plus", "ei.plus-sign")
if role == Qt.TextAlignmentRole:
return Qt.AlignVCenter + Qt.AlignHCenter
return None

View file

@ -15,13 +15,12 @@ from PyQt5.QtWidgets import (
QWidget,
QScrollArea,
QAction,
QToolButton,
QMenu, QStackedWidget, QPushButton, QLineEdit, QVBoxLayout, QComboBox,
)
from rare.models.wrapper import Wrapper
from rare.shared import RareCore
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
from rare.widgets.dialogs import ButtonDialog, game_title
if pf.system() in {"Linux", "FreeBSD"}:
@ -45,7 +44,7 @@ class WrapperEditDialog(ButtonDialog):
self.setCentralLayout(self.widget_layout)
self.accept_button.setText(self.tr("Save"))
self.accept_button.setIcon(icon("fa.edit"))
self.accept_button.setIcon(qta_icon("fa.edit"))
self.accept_button.setEnabled(False)
self.result: Tuple = ()
@ -108,7 +107,7 @@ class WrapperWidget(QFrame):
text_lbl.setEnabled(wrapper.is_editable)
image_lbl = QLabel(parent=self)
image_lbl.setPixmap(icon("mdi.drag-vertical").pixmap(QSize(20, 20)))
image_lbl.setPixmap(qta_icon("mdi.drag-vertical").pixmap(QSize(20, 20)))
edit_action = QAction("Edit", parent=self)
edit_action.triggered.connect(self.__on_edit)
@ -118,10 +117,9 @@ class WrapperWidget(QFrame):
manage_menu = QMenu(parent=self)
manage_menu.addActions([edit_action, delete_action])
manage_button = QToolButton(parent=self)
manage_button.setIcon(icon("mdi.menu"))
manage_button = QPushButton(parent=self)
manage_button.setIcon(qta_icon("mdi.menu", fallback="fa.align-justify"))
manage_button.setMenu(manage_menu)
manage_button.setPopupMode(QToolButton.InstantPopup)
manage_button.setEnabled(wrapper.is_editable)
if not wrapper.is_editable:
manage_button.setToolTip(self.tr("Manage through settings"))

View file

@ -17,7 +17,7 @@ from rare.components.tabs.store.shop_models import ShopGame
from rare.shared import LegendaryCoreSingleton
from rare.ui.components.tabs.store.shop_game_info import Ui_shop_info
from rare.utils.extra_widgets import ImageLabel
from rare.utils.misc import icon
from rare.utils.misc import qta_icon as icon
from rare.widgets.loading_widget import LoadingWidget
logger = logging.getLogger("ShopInfo")

View file

@ -9,7 +9,7 @@ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout
from rare.components.tabs.store.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.misc import icon
from rare.utils.misc import qta_icon as icon
logger = logging.getLogger("GameWidgets")

View file

@ -5,7 +5,7 @@ from rare.components.tabs.store import ShopApiCore
from rare.components.tabs.store.game_widgets import WishlistWidget
from rare.ui.components.tabs.store.wishlist import Ui_Wishlist
from rare.utils.extra_widgets import WaitingSpinner
from rare.utils.misc import icon
from rare.utils.misc import qta_icon as icon
class Wishlist(QStackedWidget, Ui_Wishlist):

View file

@ -1,15 +1,13 @@
from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QTabBar, QToolButton
from rare.utils.misc import icon
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QTabBar, QSizePolicy, QPushButton
class MainTabBar(QTabBar):
def __init__(self, parent=None):
super(MainTabBar, self).__init__(parent=parent)
self.setObjectName("MainTabBar")
self.setObjectName(type(self).__name__)
font = self.font()
font.setPointSize(font.pointSize() + 2)
font.setPointSize(font.pointSize() + 1)
font.setBold(True)
self.setFont(font)
self.expanded = -1
@ -24,11 +22,9 @@ class MainTabBar(QTabBar):
return size
class TabButtonWidget(QToolButton):
def __init__(self, button_icon: str, tool_tip: str, fallback_icon=None, parent=None):
class TabButtonWidget(QPushButton):
def __init__(self, icon: QIcon, tooltip: str = "", parent=None):
super(TabButtonWidget, self).__init__(parent=parent)
self.setText("Icon")
self.setPopupMode(QToolButton.InstantPopup)
self.setIcon(icon(button_icon, fallback_icon, scale_factor=1.25))
self.setToolTip(tool_tip)
self.setIconSize(QSize(25, 25))
self.setObjectName(type(self).__name__)
self.setIcon(icon)
self.setToolTip(tooltip)

View file

@ -5,7 +5,7 @@ from typing import Union, Type
import qstylizer.style
from PyQt5.QtCore import QDir, QObject
from PyQt5.QtGui import QColor
from PyQt5.pyrcc import RCCResourceLibrary, CONSTANT_COMPRESSLEVEL_DEFAULT, CONSTANT_COMPRESSTHRESHOLD_DEFAULT
from PyQt5.pyrcc import RCCResourceLibrary, CONSTANT_COMPRESSTHRESHOLD_DEFAULT
from PyQt5.sip import wrappertype
from rare.utils.misc import widget_object_name
@ -64,6 +64,13 @@ def css_name(widget: Union[wrappertype, QObject, Type], subwidget: str = ""):
css = qstylizer.style.StyleSheet()
# InfoLabel
css.QLabel["#InfoLabel"].setValues(
color="#999",
fontStyle="italic",
fontWeight="normal",
)
# [Un]InstallButton
css.QPushButton["#InstallButton"].setValues(
borderColor=QColor(0, 180, 0).name(),
@ -197,6 +204,15 @@ css.QPushButton[css_name(SelectViewWidget, "Button")].setValues(
)
# ButtonLineEdit
from rare.utils.extra_widgets import ButtonLineEdit
css.QPushButton[css_name(ButtonLineEdit, "Button")].setValues(
backgroundColor="transparent",
border="0px",
padding="0px",
)
if __name__ == "__main__":
with open("stylesheet.qss", "w") as qss:
qss.write(f'\n/* This file is auto-generated from "{os.path.basename(__file__)}". DO NOT EDIT!!! */\n\n')

View file

@ -1,6 +1,11 @@
/* This file is auto-generated from "stylesheet.py". DO NOT EDIT!!! */
QLabel#InfoLabel {
color: #999;
font-style: italic;
font-weight: normal;
}
QPushButton#InstallButton {
border-color: #00b400;
background-color: #007800;
@ -106,3 +111,8 @@ QPushButton#SelectViewWidgetButton {
border: none;
background-color: transparent;
}
QPushButton#ButtonLineEditButton {
background-color: transparent;
border: 0px;
padding: 0px;
}

View file

@ -20,7 +20,6 @@ disabled: #43474d #767778 -- border for disabled widgets
alternate: #3c3f41 #A3DAAA -- border color for gradient backgrounds on widgets like Tabs and Popups
[Special]
info-normal: #bbb #4D5059 -- infoLabel
install-normal: #070 #F9A7FF -- install
install-hover: #050 #BB7DBF -- install
install-disabled: #020 #7D5380 -- install
@ -48,12 +47,6 @@ QLabel:disabled {
padding: 0px;
selection-background-color: #71DA7E;
}
QLabel[infoLabel="1"] {
color: #4D5059;
font-style: italic;
font-weight: normal;
}
QMenu,
QListView,
@ -101,6 +94,7 @@ QScrollBar {
background-color: #DADDDE;
selection-background-color: #71DA7E;
}
QLineEdit,
QTextEdit,
QTimeEdit,
@ -111,11 +105,22 @@ QSpinBox,
QDoubleSpinBox,
QProgressBar,
QPushButton {
height: 1.30em;
min-height: 1.30em;
}
QLineEdit,
QTextEdit
QTimeEdit,
QDateEdit,
QDateTimeEdit,
QSpinBox,
QDoubleSpinBox,
QProgressBar {
max-height: 1.30em;
}
QToolButton {
height: 1.10em;
min-height: 1.10em;
}
QFrame[frameShape="0"] {
border-width: 0px;
}
@ -314,12 +319,15 @@ QToolButton {
padding-left: 6px;
padding-right: 6px;
}
QPushButton::menu-indicator {
/*
QPushButton::menu-indicator,
QToolButton::menu-indicator {
subcontrol-position: right center;
subcontrol-origin: padding;
left: -2px;
border-style: none;
}
*/
QGroupBox,
QCheckBox,
@ -451,12 +459,6 @@ QSizeGrip {
height: 4px;
}
QLineEdit#SearchBar {
padding: 3px;
border-radius: 5px;
background-color: #DADDDE;
}
QTabWidget::pane {
}
QTabWidget::tab-bar {
@ -610,6 +612,39 @@ QTabBar::tab:right:selected:disabled {
border-left-color: transparent;
}
QStatusBar {
border-width: 1px;
border-style: solid;
border-color: transparent;
border-top-color: #5CD3FF;
border-bottom-color: #A3DAAA;
background: qlineargradient(
x1: 0, y1: 3,
x2: 0, y2: 0,
stop: 0 #A3DAAA,
stop: 1 #C2C4C5);
}
QToolTip {
border-width: 1px;
border-style: solid;
border-color: #5CD3FF;
border-radius: 4px;
padding: 1px;
opacity: 200;
}
QBalloonTip {
color: #36393F;
background-color: #C2C4C5;
border-width: 1px;
border-style: solid;
border-color: #5CD3FF;
border-radius: 4px;
padding: 1px;
}
/* Main tab bar styling */
QTabBar#MainTabBar {
border-width: 1px;
border-style: solid;
@ -651,6 +686,17 @@ QTabBar#MainTabBar::tab:top:selected {
border-color: #5CD3FF;
border-bottom-color: #C2C4C5;
}
QPushButton#TabButtonWidget,
QToolButton#TabButtonWidget {
padding: 0px;
border-color: rgb( 51, 54, 59);
}
QPushButton#TabButtonWidget:disabled,
QToolButton#TabButtonWidget:disabled {
border-color: rgb( 41, 43, 47);
}
/* Side tab bar styling */
QTabBar#SideTabBar {
border-width: 1px;
border-style: solid;
@ -688,36 +734,10 @@ QTabBar#SideTabBar::tab:disabled {
background-color: transparent;
}
QStatusBar {
border-width: 1px;
border-style: solid;
border-color: transparent;
border-top-color: #5CD3FF;
border-bottom-color: #A3DAAA;
background: qlineargradient(
x1: 0, y1: 3,
x2: 0, y2: 0,
stop: 0 #A3DAAA,
stop: 1 #C2C4C5);
}
QToolTip {
border-width: 1px;
border-style: solid;
border-color: #5CD3FF;
border-radius: 4px;
padding: 1px;
opacity: 200;
}
QBalloonTip {
color: #36393F;
background-color: #C2C4C5;
border-width: 1px;
border-style: solid;
border-color: #5CD3FF;
border-radius: 4px;
padding: 1px;
/* Search bar styling */
QLineEdit#SearchBar {
border-radius: 5px;
background-color: #DADDDE;
}
/* Wrapper settings styling */
@ -745,3 +765,7 @@ QLabel#WrapperSettingsLabel {
border-color: #71DA7E;
background-color: #BCBEBF;
}
QLabel#WrapperSettingsLabel:disabled {
border-color: rgb( 67, 71, 77);
background-color: rgb( 32, 34, 37);
}

View file

@ -1,4 +1,4 @@
<svg height="640" viewBox="0 0 320 640" width="320" xmlns="http://www.w3.org/2000/svg">
<path d="m41 236.475h238c21.4 0 32.1 25.9 17 41l-119 119c-9.4 9.4-24.6 9.4-33.9 0l-119.1-119c-15.1-15.1-4.4-41 17-41z"
fill="#eee"/>
fill="#ccc"/>
</svg>

Before

Width:  |  Height:  |  Size: 241 B

After

Width:  |  Height:  |  Size: 241 B

View file

@ -1,4 +1,4 @@
<svg height="320" viewBox="0 0 320 320" width="320" xmlns="http://www.w3.org/2000/svg">
<path d="m41 76.475h238c21.4 0 32.1 25.9 17 41l-119 119c-9.4 9.4-24.6 9.4-33.9 0l-119.1-119c-15.1-15.1-4.4-41 17-41z"
fill="#eee"/>
fill="#ccc"/>
</svg>

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 240 B

View file

@ -1,4 +1,4 @@
<svg height="320" viewBox="0 0 320 320" width="320" xmlns="http://www.w3.org/2000/svg">
<path d="m279.01546 243.525h-237.999997c-21.4 0-32.1000001-25.9-17-41l118.999997-119c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z"
fill="#eee"/>
fill="#ccc"/>
</svg>

Before

Width:  |  Height:  |  Size: 266 B

After

Width:  |  Height:  |  Size: 266 B

View file

@ -6,7 +6,7 @@ disabled: #43474d rgb( 67, 71, 77) -- disabled font color
rgba( 67, 71, 77, 25%) == rgb( 41, 43, 47)
[Background]
normal: #202225 rgb( 32, 34, 37) -- main background color
editable: #333344 rgb( 51, 51, 68) -- background color for reactive/editable widgets (TextEdits, ProgressBars etc)
editable: #272733 rgb( 38, 38, 51) -- background color for reactive/editable widgets (TextEdits, ProgressBars etc)
hover: #222233 rgb( 34, 34, 51) -- background color when hovering over reactive widgets (Buttons, Headers)
selection: #2f4f4f rgb( 47, 79, 79) -- background color for selectable widgets
alternate: #282a2e rgb( 40, 42, 46) -- background color for alternating rows in List/Tree/TableViews and for ScrollBars
@ -20,7 +20,6 @@ disabled: #43474d rgb( 67, 71, 77) -- border for disabled widgets
alternate: #3c3f41 rgb( 60, 63, 65) -- border color for gradient backgrounds on widgets like Tabs and Popups
[Special]
info-normal: #bbb rgb(187, 187, 187) -- infoLabel
install-normal: #070 rgb( 0, 119, 0) -- install
install-hover: #050 rgb( 0, 85, 0) -- install
install-disabled: #020 rgb( 0, 34, 0) -- install
@ -48,12 +47,6 @@ QLabel:disabled {
padding: 0px;
selection-background-color: rgb( 47, 79, 79);
}
QLabel[infoLabel="1"] {
color: rgb(187, 187, 187);
font-style: italic;
font-weight: normal;
}
QMenu,
QListView,
@ -98,9 +91,10 @@ QDoubleSpinBox,
QProgressBar,
QScrollBar {
border-color: rgb( 47, 79, 79);
background-color: rgb( 51, 51, 68);
background-color: rgb( 38, 38, 51);
selection-background-color: rgb( 47, 79, 79);
}
QLineEdit,
QTextEdit,
QTimeEdit,
@ -111,11 +105,22 @@ QSpinBox,
QDoubleSpinBox,
QProgressBar,
QPushButton {
height: 1.30em;
min-height: 1.30em;
}
QLineEdit,
QTextEdit
QTimeEdit,
QDateEdit,
QDateTimeEdit,
QSpinBox,
QDoubleSpinBox,
QProgressBar {
max-height: 1.30em;
}
QToolButton {
height: 1.10em;
min-height: 1.10em;
}
QFrame[frameShape="0"] {
border-width: 0px;
}
@ -230,7 +235,7 @@ QScrollBar::handle {
border-width: 1px;
border-style: solid;
border-color: rgb( 72, 61, 139);
background-color: rgb( 51, 51, 68);
background-color: rgb( 38, 38, 51);
border-radius: 2px;
min-height: 30px;
min-width: 30px;
@ -314,12 +319,15 @@ QToolButton {
padding-left: 6px;
padding-right: 6px;
}
QPushButton::menu-indicator {
/*
QPushButton::menu-indicator,
QToolButton::menu-indicator {
subcontrol-position: right center;
subcontrol-origin: padding;
left: -2px;
border-style: none;
}
*/
QGroupBox,
QCheckBox,
@ -451,12 +459,6 @@ QSizeGrip {
height: 4px;
}
QLineEdit#SearchBar {
padding: 3px;
border-radius: 5px;
background-color: rgb( 51, 51, 68);
}
QTabWidget::pane {
}
QTabWidget::tab-bar {
@ -610,6 +612,39 @@ QTabBar::tab:right:selected:disabled {
border-left-color: transparent;
}
QStatusBar {
border-width: 1px;
border-style: solid;
border-color: transparent;
border-top-color: rgb( 72, 61, 139);
border-bottom-color: rgb( 60, 63, 65);
background: qlineargradient(
x1: 0, y1: 3,
x2: 0, y2: 0,
stop: 0 rgb( 60, 63, 65),
stop: 1 rgb( 32, 34, 37));
}
QToolTip {
border-width: 1px;
border-style: solid;
border-color: rgb( 72, 61, 139);
border-radius: 4px;
padding: 1px;
opacity: 200;
}
QBalloonTip {
color: rgb(238, 238, 238);
background-color: rgb( 32, 34, 37);
border-width: 1px;
border-style: solid;
border-color: rgb( 72, 61, 139);
border-radius: 4px;
padding: 1px;
}
/* Main tab bar styling */
QTabBar#MainTabBar {
border-width: 1px;
border-style: solid;
@ -632,7 +667,7 @@ QTabBar#MainTabBar::tab {
margin-right: 3px;
border-top-color: transparent;
border-bottom-color: rgb( 72, 61, 139);
padding: 5px;
padding: 3px 5px;
}/*
QTabBar#MainTabBar::tab:top:first,
QTabBar#MainTabBar::tab:bottom:first {
@ -651,6 +686,17 @@ QTabBar#MainTabBar::tab:top:selected {
border-color: rgb( 72, 61, 139);
border-bottom-color: rgb( 32, 34, 37);
}
QPushButton#TabButtonWidget,
QToolButton#TabButtonWidget {
padding: 0px;
border-color: rgb( 51, 54, 59);
}
QPushButton#TabButtonWidget:disabled,
QToolButton#TabButtonWidget:disabled {
border-color: rgb( 41, 43, 47);
}
/* Side tab bar styling */
QTabBar#SideTabBar {
border-width: 1px;
border-style: solid;
@ -688,41 +734,16 @@ QTabBar#SideTabBar::tab:disabled {
background-color: transparent;
}
QStatusBar {
border-width: 1px;
border-style: solid;
border-color: transparent;
border-top-color: rgb( 72, 61, 139);
border-bottom-color: rgb( 60, 63, 65);
background: qlineargradient(
x1: 0, y1: 3,
x2: 0, y2: 0,
stop: 0 rgb( 60, 63, 65),
stop: 1 rgb( 32, 34, 37));
}
QToolTip {
border-width: 1px;
border-style: solid;
border-color: rgb( 72, 61, 139);
border-radius: 4px;
padding: 1px;
opacity: 200;
}
QBalloonTip {
color: rgb(238, 238, 238);
background-color: rgb( 32, 34, 37);
border-width: 1px;
border-style: solid;
border-color: rgb( 72, 61, 139);
border-radius: 4px;
padding: 1px;
/* Search bar styling */
QLineEdit#SearchBar {
border-radius: 5px;
background-color: rgb( 38, 38, 51);
}
/* Wrapper settings styling */
QPushButton#WrapperWidgetButton,
QToolButton#WrapperWidgetButton {
padding: 0px;
border-color: rgb( 51, 54, 59);
}
QPushButton#WrapperWidgetButton:disabled,
@ -731,7 +752,7 @@ QToolButton#WrapperWidgetButton:disabled {
}
QScrollArea#WrapperSettingsScroll {
border-color: rgb( 47, 79, 79);
background-color: rgb( 40, 42, 46);
background-color: rgb( 38, 38, 51);
}
QScrollBar#WrapperSettingsScrollBar {
background-color: rgb( 40, 42, 46);
@ -743,9 +764,9 @@ QLabel#WrapperSettingsLabel {
padding: 2px;
color: #999;
border-color: rgb( 47, 79, 79);
background-color: rgb( 40, 42, 46);
background-color: rgb( 38, 38, 51);
}
QLabel#WrapperSettingsLabel:disabled {
border-color: rgb( 67, 71, 77);
background-color: rgb( 32, 34, 37);
}
}

View file

View file

@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ImportLogin(object):
def setupUi(self, ImportLogin):
ImportLogin.setObjectName("ImportLogin")
ImportLogin.resize(233, 156)
ImportLogin.resize(256, 143)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@ -52,9 +52,9 @@ class Ui_ImportLogin(object):
self.prefix_combo.setEditable(True)
self.prefix_combo.setObjectName("prefix_combo")
self.prefix_layout.addWidget(self.prefix_combo)
self.prefix_tool = QtWidgets.QToolButton(ImportLogin)
self.prefix_tool.setObjectName("prefix_tool")
self.prefix_layout.addWidget(self.prefix_tool)
self.prefix_button = QtWidgets.QPushButton(ImportLogin)
self.prefix_button.setObjectName("prefix_button")
self.prefix_layout.addWidget(self.prefix_button)
self.prefix_layout.setStretch(0, 1)
self.form_layout.setLayout(0, QtWidgets.QFormLayout.FieldRole, self.prefix_layout)
self.prefix_label = QtWidgets.QLabel(ImportLogin)
@ -85,7 +85,7 @@ class Ui_ImportLogin(object):
def retranslateUi(self, ImportLogin):
_translate = QtCore.QCoreApplication.translate
self.title_label.setText(_translate("ImportLogin", "Import existing session from EGL"))
self.prefix_tool.setText(_translate("ImportLogin", "Browse"))
self.prefix_button.setText(_translate("ImportLogin", "Browse..."))
self.prefix_label.setText(_translate("ImportLogin", "Select prefix"))
self.info_label.setText(_translate("ImportLogin", "<i>Please select the Wine prefix where Epic Games Launcher is installed. You will get logged out from EGL in the process.</i>"))

View file

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>233</width>
<height>156</height>
<width>256</width>
<height>143</height>
</rect>
</property>
<property name="sizePolicy">
@ -69,9 +69,9 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="prefix_tool">
<widget class="QPushButton" name="prefix_button">
<property name="text">
<string>Browse</string>
<string>Browse...</string>
</property>
</widget>
</item>

View file

@ -45,7 +45,7 @@ class Ui_EGLSyncGroup(object):
def retranslateUi(self, EGLSyncGroup):
_translate = QtCore.QCoreApplication.translate
EGLSyncGroup.setTitle(_translate("EGLSyncGroup", "Sync with Epic Games Launcher"))
self.egl_path_edit_label.setText(_translate("EGLSyncGroup", "Prefix/Manifest path"))
self.egl_path_edit_label.setText(_translate("EGLSyncGroup", "Manifest path"))
self.egl_sync_check_label.setText(_translate("EGLSyncGroup", "Enable automatic sync"))
self.egl_sync_check.setText(_translate("EGLSyncGroup", "This will immediately synchronize with EGL"))
self.egl_path_info_label.setText(_translate("EGLSyncGroup", "Estimated path"))

View file

@ -29,7 +29,7 @@
<item row="0" column="0">
<widget class="QLabel" name="egl_path_edit_label">
<property name="text">
<string>Prefix/Manifest path</string>
<string>Manifest path</string>
</property>
</widget>
</item>

View file

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'rare/ui/components/tabs/games/integrations/eos_widget.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
# Created by: PyQt5 UI code generator 5.15.10
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_EosWidget(object):
def setupUi(self, EosWidget):
EosWidget.setObjectName("EosWidget")
EosWidget.resize(464, 98)
EosWidget.resize(465, 98)
EosWidget.setWindowTitle("GroupBox")
self.eos_layout = QtWidgets.QVBoxLayout(EosWidget)
self.eos_layout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
@ -27,8 +27,8 @@ class Ui_EosWidget(object):
self.install_page_layout.setContentsMargins(0, 0, 0, 0)
self.install_page_layout.setObjectName("install_page_layout")
self.install_label_layout = QtWidgets.QFormLayout()
self.install_label_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.install_label_layout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.install_label_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTop|QtCore.Qt.AlignTrailing)
self.install_label_layout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
self.install_label_layout.setObjectName("install_label_layout")
self.install_label = QtWidgets.QLabel(self.install_page)
self.install_label.setObjectName("install_label")
@ -43,7 +43,7 @@ class Ui_EosWidget(object):
self.install_button = QtWidgets.QPushButton(self.install_page)
self.install_button.setMinimumSize(QtCore.QSize(140, 0))
self.install_button.setObjectName("install_button")
self.install_button_layout.addWidget(self.install_button)
self.install_button_layout.addWidget(self.install_button, 0, QtCore.Qt.AlignTop)
self.install_page_layout.addLayout(self.install_button_layout)
self.install_page_layout.setStretch(0, 1)
self.overlay_stack.addWidget(self.install_page)
@ -53,8 +53,8 @@ class Ui_EosWidget(object):
self.info_page_layout.setContentsMargins(0, 0, 0, 0)
self.info_page_layout.setObjectName("info_page_layout")
self.info_label_layout = QtWidgets.QFormLayout()
self.info_label_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
self.info_label_layout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.info_label_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTop|QtCore.Qt.AlignTrailing)
self.info_label_layout.setFormAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
self.info_label_layout.setObjectName("info_label_layout")
self.version_label = QtWidgets.QLabel(self.info_page)
self.version_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
@ -70,11 +70,11 @@ class Ui_EosWidget(object):
self.update_button = QtWidgets.QPushButton(self.info_page)
self.update_button.setMinimumSize(QtCore.QSize(140, 0))
self.update_button.setObjectName("update_button")
self.info_button_layout.addWidget(self.update_button)
self.info_button_layout.addWidget(self.update_button, 0, QtCore.Qt.AlignTop)
self.uninstall_button = QtWidgets.QPushButton(self.info_page)
self.uninstall_button.setMinimumSize(QtCore.QSize(140, 0))
self.uninstall_button.setObjectName("uninstall_button")
self.info_button_layout.addWidget(self.uninstall_button)
self.info_button_layout.addWidget(self.uninstall_button, 0, QtCore.Qt.AlignTop)
self.info_page_layout.addLayout(self.info_button_layout)
self.info_page_layout.setStretch(0, 1)
self.overlay_stack.addWidget(self.info_page)
@ -86,11 +86,11 @@ class Ui_EosWidget(object):
def retranslateUi(self, EosWidget):
_translate = QtCore.QCoreApplication.translate
EosWidget.setTitle(_translate("EosWidget", "Epic Overlay"))
self.install_label.setText(_translate("EosWidget", "Status:"))
self.install_label.setText(_translate("EosWidget", "Version"))
self.install_text.setText(_translate("EosWidget", "Epic Online Services Overlay is not installed"))
self.install_button.setText(_translate("EosWidget", "Install"))
self.version_label.setText(_translate("EosWidget", "Version:"))
self.path_label.setText(_translate("EosWidget", "Path:"))
self.version_label.setText(_translate("EosWidget", "Version"))
self.path_label.setText(_translate("EosWidget", "Install folder"))
self.update_button.setText(_translate("EosWidget", "Update"))
self.uninstall_button.setText(_translate("EosWidget", "Uninstall"))

View file

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>464</width>
<width>465</width>
<height>98</height>
</rect>
</property>
@ -42,15 +42,15 @@
<item>
<layout class="QFormLayout" name="install_label_layout">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
</property>
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="install_label">
<property name="text">
<string>Status:</string>
<string>Version</string>
</property>
</widget>
</item>
@ -68,7 +68,7 @@
<property name="rightMargin">
<number>0</number>
</property>
<item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="install_button">
<property name="minimumSize">
<size>
@ -102,15 +102,15 @@
<item>
<layout class="QFormLayout" name="info_label_layout">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set>
</property>
<property name="formAlignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<item row="0" column="0">
<widget class="QLabel" name="version_label">
<property name="text">
<string>Version:</string>
<string>Version</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@ -120,7 +120,7 @@
<item row="1" column="0">
<widget class="QLabel" name="path_label">
<property name="text">
<string>Path:</string>
<string>Install folder</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@ -131,7 +131,7 @@
</item>
<item>
<layout class="QVBoxLayout" name="info_button_layout">
<item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="update_button">
<property name="minimumSize">
<size>
@ -144,7 +144,7 @@
</property>
</widget>
</item>
<item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="uninstall_button">
<property name="minimumSize">
<size>

View file

@ -9,10 +9,9 @@ from PyQt5.QtWidgets import (
QWidget,
QPushButton,
QLineEdit,
QToolButton,
)
from rare.utils.misc import icon as qta_icon
from rare.utils.misc import qta_icon
from rare.utils.paths import cache_dir
from rare.utils.qt_requests import QtRequests
@ -117,14 +116,12 @@ class ButtonLineEdit(QLineEdit):
super(ButtonLineEdit, self).__init__(parent=parent)
self.setObjectName(type(self).__name__)
self.button = QToolButton(self)
self.button = QPushButton(self)
self.button.setObjectName(f"{type(self).__name__}Button")
self.button.setIcon(qta_icon(icon_name, color="white"))
self.button.setStyleSheet(
f"QToolButton#{self.button.objectName()} {{border: 0px; padding: 0px;}}"
)
self.button.setIcon(qta_icon(icon_name))
self.button.setCursor(Qt.ArrowCursor)
self.button.clicked.connect(self.buttonClicked.emit)
self.setPlaceholderText(placeholder_text)
frame_width = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
button_size = self.button.sizeHint()

View file

@ -101,8 +101,9 @@ def set_color_pallete(color_scheme: str) -> None:
if custom_palette is not None:
qApp.setPalette(custom_palette)
qApp.setStyleSheet(static)
icon_color = qApp.palette().color(QPalette.Foreground).name()
qtawesome.set_defaults(color=icon_color)
icon_color_normal = qApp.palette().color(QPalette.Foreground).name()
icon_color_disabled = qApp.palette().color(QPalette.Foreground).name()
qtawesome.set_defaults(color=icon_color_normal, color_disabled=icon_color_disabled)
def get_color_schemes() -> Iterable[str]:
@ -124,8 +125,9 @@ def set_style_sheet(style_sheet: str) -> None:
file.close()
qApp.setStyleSheet(stylesheet + static)
icon_color = qApp.palette().color(QPalette.Text).name()
qtawesome.set_defaults(color="#eeeeee")
icon_color_normal = qApp.palette().color(QPalette.Text).name()
icon_color_disabled = qApp.palette().color(QPalette.Text).name()
qtawesome.set_defaults(color="#eee", color_disabled="#eee")
def get_style_sheets() -> Iterable[str]:
@ -157,7 +159,7 @@ def format_size(b: Union[int, float]) -> str:
b /= 1024
def icon(icn_str: str, fallback: str = None, **kwargs):
def qta_icon(icn_str: str, fallback: str = None, **kwargs):
try:
return qtawesome.icon(icn_str, **kwargs)
except Exception as e:

View file

@ -13,7 +13,7 @@ from PyQt5.QtWidgets import (
QLabel,
)
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
class CollapsibleBase(object):
@ -108,7 +108,7 @@ class CollapsibleFrame(QFrame, CollapsibleBase):
self.toggle_button = QToolButton(self)
self.toggle_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
self.toggle_button.setIcon(icon("fa.arrow-right"))
self.toggle_button.setIcon(qta_icon("fa.arrow-right"))
self.toggle_button.setCheckable(True)
self.toggle_button.setChecked(False)
@ -150,7 +150,7 @@ class CollapsibleFrame(QFrame, CollapsibleBase):
return super(CollapsibleFrame, self).sizeHint()
def animationStart(self, checked):
arrow_type = icon("fa.arrow-down") if checked else icon("fa.arrow-right")
arrow_type = qta_icon("fa.arrow-down") if checked else qta_icon("fa.arrow-right")
self.toggle_button.setIcon(arrow_type)
super(CollapsibleFrame, self).animationStart(checked)

View file

@ -14,7 +14,7 @@ from PyQt5.QtWidgets import (
QLayout, QSpacerItem, QSizePolicy, QLabel,
)
from rare.utils.misc import icon
from rare.utils.misc import qta_icon
def game_title(text: str, app_title: str) -> str:
@ -79,7 +79,7 @@ class ButtonDialog(BaseDialog):
self.reject_button = QPushButton(self)
self.reject_button.setText(self.tr("Cancel"))
self.reject_button.setIcon(icon("fa.remove"))
self.reject_button.setIcon(qta_icon("fa.remove"))
self.reject_button.setAutoDefault(False)
self.reject_button.clicked.connect(self.reject)

View file

@ -24,10 +24,10 @@ from PyQt5.QtWidgets import (
QCompleter,
QFileSystemModel,
QStyledItemDelegate,
QFileIconProvider,
QFileIconProvider, QPushButton,
)
from rare.utils.misc import icon as qta_icon
from rare.utils.misc import qta_icon
logger = getLogger("IndicatorEdit")
@ -304,7 +304,7 @@ class PathEdit(IndicatorLineEdit):
)
self.setObjectName(type(self).__name__)
self.line_edit.setMinimumSize(QSize(250, 0))
self.path_select = QToolButton(self)
self.path_select = QPushButton(self)
self.path_select.setObjectName(f"{type(self).__name__}Button")
layout = self.layout()
layout.addWidget(self.path_select)

View file

@ -21,7 +21,7 @@ from PyQt5.QtWidgets import (
QScrollArea, QLayout, QSizePolicy,
)
from rare.utils.misc import icon as qta_icon
from rare.utils.misc import qta_icon
logger = getLogger("SideTab")
@ -29,7 +29,7 @@ logger = getLogger("SideTab")
class SideTabBar(QTabBar):
def __init__(self, padding: int = -1, parent=None):
super(SideTabBar, self).__init__(parent=parent)
self.setObjectName("SideTabBar")
self.setObjectName(type(self).__name__)
self.padding = padding
self.fm = QFontMetrics(self.font())