ExtraWidgets: Remove SideTab widgets and update imports
This commit is contained in:
parent
5938835249
commit
dd6df40e40
4 changed files with 5 additions and 107 deletions
|
@ -6,8 +6,8 @@ from PyQt5.QtWidgets import QTreeView
|
||||||
|
|
||||||
from rare.models.game import RareGame
|
from rare.models.game import RareGame
|
||||||
from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ArgumentsSingleton
|
from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ArgumentsSingleton
|
||||||
from rare.utils.extra_widgets import SideTabWidget
|
|
||||||
from rare.utils.json_formatter import QJsonModel
|
from rare.utils.json_formatter import QJsonModel
|
||||||
|
from rare.widgets.side_tab import SideTabWidget
|
||||||
from .game_dlc import GameDlc
|
from .game_dlc import GameDlc
|
||||||
from .game_info import GameInfo
|
from .game_info import GameInfo
|
||||||
from .game_settings import GameSettings
|
from .game_settings import GameSettings
|
||||||
|
|
|
@ -3,10 +3,10 @@ from typing import Optional
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
from PyQt5.QtWidgets import QVBoxLayout, QWidget, QLabel, QSpacerItem, QSizePolicy
|
from PyQt5.QtWidgets import QVBoxLayout, QWidget, QLabel, QSpacerItem, QSizePolicy
|
||||||
|
|
||||||
from rare.utils.extra_widgets import SideTabWidget
|
from rare.widgets.side_tab import SideTabWidget
|
||||||
from .egl_sync_group import EGLSyncGroup
|
from .egl_sync_group import EGLSyncGroup
|
||||||
from .import_group import ImportGroup
|
|
||||||
from .eos_group import EOSGroup
|
from .eos_group import EOSGroup
|
||||||
|
from .import_group import ImportGroup
|
||||||
from .ubisoft_group import UbisoftGroup
|
from .ubisoft_group import UbisoftGroup
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from rare.components.tabs.settings.widgets.linux import LinuxSettings
|
from rare.components.tabs.settings.widgets.linux import LinuxSettings
|
||||||
from rare.shared import ArgumentsSingleton
|
from rare.shared import ArgumentsSingleton
|
||||||
from rare.utils.extra_widgets import SideTabWidget
|
from rare.widgets.side_tab import SideTabWidget
|
||||||
from .about import About
|
from .about import About
|
||||||
from .debug import DebugSettings
|
from .debug import DebugSettings
|
||||||
from .default_game_settings import DefaultGameSettings
|
from .default_game_settings import DefaultGameSettings
|
||||||
|
|
|
@ -3,26 +3,17 @@ from logging import getLogger
|
||||||
|
|
||||||
from PyQt5.QtCore import (
|
from PyQt5.QtCore import (
|
||||||
Qt,
|
Qt,
|
||||||
QRect,
|
|
||||||
QSize,
|
|
||||||
QPoint,
|
|
||||||
pyqtSignal,
|
pyqtSignal,
|
||||||
)
|
)
|
||||||
from PyQt5.QtGui import QMovie, QPixmap, QFontMetrics, QImage
|
from PyQt5.QtGui import QMovie, QPixmap, QImage
|
||||||
from PyQt5.QtWidgets import (
|
from PyQt5.QtWidgets import (
|
||||||
QStyle,
|
QStyle,
|
||||||
QLabel,
|
QLabel,
|
||||||
QHBoxLayout,
|
QHBoxLayout,
|
||||||
QWidget,
|
QWidget,
|
||||||
QPushButton,
|
QPushButton,
|
||||||
QStyleOptionTab,
|
|
||||||
QStylePainter,
|
|
||||||
QTabBar,
|
|
||||||
QLineEdit,
|
QLineEdit,
|
||||||
QToolButton,
|
QToolButton,
|
||||||
QTabWidget,
|
|
||||||
QVBoxLayout,
|
|
||||||
QScrollArea,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
from rare.utils.misc import icon as qta_icon
|
from rare.utils.misc import icon as qta_icon
|
||||||
|
@ -32,99 +23,6 @@ from rare.utils.qt_requests import QtRequestManager
|
||||||
logger = getLogger("ExtraWidgets")
|
logger = getLogger("ExtraWidgets")
|
||||||
|
|
||||||
|
|
||||||
class SideTabBar(QTabBar):
|
|
||||||
def __init__(self, padding: int = -1, parent=None):
|
|
||||||
super(SideTabBar, self).__init__(parent=parent)
|
|
||||||
self.setObjectName("SideTabBar")
|
|
||||||
self.padding = padding
|
|
||||||
self.fm = QFontMetrics(self.font())
|
|
||||||
|
|
||||||
def tabSizeHint(self, index):
|
|
||||||
width = QTabBar.tabSizeHint(self, index).height()
|
|
||||||
if self.padding < 0:
|
|
||||||
width += QTabBar.tabSizeHint(self, index).width()
|
|
||||||
else:
|
|
||||||
width += self.padding
|
|
||||||
return QSize(width, self.fm.height() + 18)
|
|
||||||
|
|
||||||
def paintEvent(self, event):
|
|
||||||
painter = QStylePainter(self)
|
|
||||||
opt = QStyleOptionTab()
|
|
||||||
|
|
||||||
for i in range(self.count()):
|
|
||||||
self.initStyleOption(opt, i)
|
|
||||||
painter.drawControl(QStyle.CE_TabBarTabShape, opt)
|
|
||||||
painter.save()
|
|
||||||
|
|
||||||
s = opt.rect.size()
|
|
||||||
s.transpose()
|
|
||||||
r = QRect(QPoint(), s)
|
|
||||||
r.moveCenter(opt.rect.center())
|
|
||||||
opt.rect = r
|
|
||||||
|
|
||||||
c = self.tabRect(i).center()
|
|
||||||
painter.translate(c)
|
|
||||||
painter.rotate(90)
|
|
||||||
painter.translate(-c)
|
|
||||||
painter.drawControl(QStyle.CE_TabBarTabLabel, opt)
|
|
||||||
painter.restore()
|
|
||||||
|
|
||||||
|
|
||||||
class SideTabContainer(QWidget):
|
|
||||||
def __init__(self, widget: QWidget, title: str = "", parent: QWidget = None):
|
|
||||||
super(SideTabContainer, self).__init__(parent=parent)
|
|
||||||
self.title = QLabel(self)
|
|
||||||
self.setTitle(title)
|
|
||||||
|
|
||||||
self.scrollarea = QScrollArea(self)
|
|
||||||
self.scrollarea.setWidgetResizable(True)
|
|
||||||
self.scrollarea.setSizeAdjustPolicy(QScrollArea.AdjustToContents)
|
|
||||||
self.scrollarea.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
||||||
self.scrollarea.setFrameStyle(QScrollArea.NoFrame)
|
|
||||||
if widget.layout():
|
|
||||||
widget.layout().setAlignment(Qt.AlignTop)
|
|
||||||
widget.layout().setContentsMargins(0, 0, 3, 0)
|
|
||||||
widget.title = self.title
|
|
||||||
widget.title.setTitle = self.setTitle
|
|
||||||
self.scrollarea.setMinimumWidth(
|
|
||||||
widget.sizeHint().width() + self.scrollarea.verticalScrollBar().sizeHint().width()
|
|
||||||
)
|
|
||||||
self.scrollarea.setWidget(widget)
|
|
||||||
|
|
||||||
layout = QVBoxLayout()
|
|
||||||
layout.addWidget(self.title)
|
|
||||||
layout.addWidget(self.scrollarea)
|
|
||||||
self.setLayout(layout)
|
|
||||||
|
|
||||||
def setTitle(self, text: str) -> None:
|
|
||||||
self.title.setText(f"<h2>{text}</h2>")
|
|
||||||
self.title.setVisible(bool(text))
|
|
||||||
|
|
||||||
|
|
||||||
class SideTabWidget(QTabWidget):
|
|
||||||
back_clicked = pyqtSignal()
|
|
||||||
|
|
||||||
def __init__(self, show_back: bool = False, padding: int = -1, parent=None):
|
|
||||||
super(SideTabWidget, self).__init__(parent=parent)
|
|
||||||
self.setTabBar(SideTabBar(padding=padding, parent=self))
|
|
||||||
self.setDocumentMode(True)
|
|
||||||
self.setTabPosition(QTabWidget.West)
|
|
||||||
if show_back:
|
|
||||||
super(SideTabWidget, self).addTab(
|
|
||||||
QWidget(), qta_icon("mdi.keyboard-backspace", "ei.backward"), self.tr("Back")
|
|
||||||
)
|
|
||||||
self.tabBarClicked.connect(self.back_func)
|
|
||||||
|
|
||||||
def back_func(self, tab):
|
|
||||||
# shortcut for tab == 0
|
|
||||||
if not tab:
|
|
||||||
self.back_clicked.emit()
|
|
||||||
|
|
||||||
def addTab(self, widget: QWidget, a1: str, title: str = "") -> int:
|
|
||||||
container = SideTabContainer(widget, title, parent=self)
|
|
||||||
return super(SideTabWidget, self).addTab(container, a1)
|
|
||||||
|
|
||||||
|
|
||||||
class WaitingSpinner(QLabel):
|
class WaitingSpinner(QLabel):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(WaitingSpinner, self).__init__()
|
super(WaitingSpinner, self).__init__()
|
||||||
|
|
Loading…
Reference in a new issue