mirror of
https://github.com/LorenEteval/Furious.git
synced 2026-09-22 23:08:08 +03:00
Move to saveGeometry & saveState implementation
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
This commit is contained in:
@@ -151,33 +151,55 @@ class AppQGroupBox(QTranslatable, QGroupBox):
|
||||
|
||||
class AppQHeaderView(SupportExitCleanup, SupportConnectedCallback, QHeaderView):
|
||||
def sectionSizeSettingsEmpty(self):
|
||||
return self.sectionSizeSettingsName == ''
|
||||
return (
|
||||
self.legacySectionSizeSettingsName == ''
|
||||
and self.sectionSizeSettingsName == ''
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.legacySectionSizeSettingsName = kwargs.pop(
|
||||
'legacySectionSizeSettingsName', ''
|
||||
)
|
||||
self.sectionSizeSettingsName = kwargs.pop('sectionSizeSettingsName', '')
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
self.columnCount = self.parent().columnCount()
|
||||
parent = self.parent()
|
||||
|
||||
assert isinstance(parent, QTableWidget)
|
||||
|
||||
self.columnCount = parent.columnCount()
|
||||
self.sectionSizeTable = {}
|
||||
|
||||
self.setSectionsClickable(True)
|
||||
self.setStyleSheet(self.getStyleSheet(AppHue.currentColor()))
|
||||
self.setFont(QFont(APP().customFontName))
|
||||
|
||||
self.sectionResized.connect(self.handleSectionResized)
|
||||
# self.sectionResized.connect(self.handleSectionResized)
|
||||
|
||||
def restoreSectionSize(self):
|
||||
if self.sectionSizeSettingsEmpty():
|
||||
return
|
||||
|
||||
if AppSettings.get(self.sectionSizeSettingsName) is not None:
|
||||
try:
|
||||
self.restoreState(AppSettings.get(self.sectionSizeSettingsName))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
# Fall back to legacy restore method
|
||||
pass
|
||||
else:
|
||||
return
|
||||
|
||||
# Fall back to legacy restore method
|
||||
try:
|
||||
# https://bugreports.qt.io/browse/QTBUG-119862
|
||||
# Affected: PySide6 6.6.1+
|
||||
self.setDefaultSectionSize(self.defaultSectionSize())
|
||||
|
||||
self.sectionSizeTable = UJSONEncoder.decode(
|
||||
AppSettings.get(self.sectionSizeSettingsName)
|
||||
AppSettings.get(self.legacySectionSizeSettingsName)
|
||||
)
|
||||
|
||||
# Fill missing value
|
||||
@@ -216,22 +238,25 @@ class AppQHeaderView(SupportExitCleanup, SupportConnectedCallback, QHeaderView):
|
||||
def connectedCallback(self):
|
||||
self.setStyleSheet(self.getStyleSheet(AppHue.connectedColor()))
|
||||
|
||||
@QtCore.Slot(int, int, int)
|
||||
def handleSectionResized(self, index: int, oldSize: int, newSize: int):
|
||||
if self.sectionSizeSettingsEmpty():
|
||||
return
|
||||
|
||||
# Keys are string when loaded from json
|
||||
self.sectionSizeTable[str(index)] = newSize
|
||||
# Legacy method. Not used
|
||||
# @QtCore.Slot(int, int, int)
|
||||
# def handleSectionResized(self, index: int, oldSize: int, newSize: int):
|
||||
# if self.sectionSizeSettingsEmpty():
|
||||
# return
|
||||
#
|
||||
# # Keys are string when loaded from json
|
||||
# self.sectionSizeTable[str(index)] = newSize
|
||||
|
||||
def cleanup(self):
|
||||
if self.sectionSizeSettingsEmpty():
|
||||
return
|
||||
|
||||
AppSettings.set(
|
||||
self.sectionSizeSettingsName,
|
||||
UJSONEncoder.encode(self.sectionSizeTable),
|
||||
)
|
||||
# AppSettings.set(
|
||||
# self.sectionSizeSettingsName,
|
||||
# UJSONEncoder.encode(self.sectionSizeTable),
|
||||
# )
|
||||
|
||||
AppSettings.set(self.sectionSizeSettingsName, self.saveState())
|
||||
|
||||
|
||||
class AppQLabel(QTranslatable, QLabel):
|
||||
|
||||
@@ -51,7 +51,9 @@ __all__ = ['UserServersQTableWidget']
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
registerAppSettings('ActivatedItemIndex')
|
||||
# Migrate legacy settings
|
||||
registerAppSettings('ServerWidgetSectionSizeTable')
|
||||
registerAppSettings('UserServersHeaderViewState')
|
||||
|
||||
|
||||
class UpdateSubsInfoMBox(AppQMessageBox):
|
||||
@@ -822,7 +824,8 @@ class UserServersQTableWidget(QTranslatable, AppQTableWidget):
|
||||
parent=self,
|
||||
clickGuardFn=lambda: False,
|
||||
customSortFn=self.customSortFn,
|
||||
sectionSizeSettingsName='ServerWidgetSectionSizeTable',
|
||||
legacySectionSizeSettingsName='ServerWidgetSectionSizeTable',
|
||||
sectionSizeSettingsName='UserServersHeaderViewState',
|
||||
)
|
||||
)
|
||||
self.setVerticalHeader(UserServersQTableWidgetVerticalHeader(self))
|
||||
|
||||
@@ -37,7 +37,9 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
__all__ = ['UserSubsQTableWidget']
|
||||
|
||||
# Migrate legacy settings
|
||||
registerAppSettings('SubscriptionWidgetSectionSizeTable')
|
||||
registerAppSettings('UserSubsHeaderViewState')
|
||||
|
||||
|
||||
class UserSubsQTableWidgetHorizontalHeader(AppQHeaderView):
|
||||
@@ -157,7 +159,8 @@ class UserSubsQTableWidget(QTranslatable, AppQTableWidget):
|
||||
self.setHorizontalHeader(
|
||||
UserSubsQTableWidgetHorizontalHeader(
|
||||
parent=self,
|
||||
sectionSizeSettingsName='SubscriptionWidgetSectionSizeTable',
|
||||
legacySectionSizeSettingsName='SubscriptionWidgetSectionSizeTable',
|
||||
sectionSizeSettingsName='UserSubsHeaderViewState',
|
||||
)
|
||||
)
|
||||
self.setVerticalHeader(UserSubsQTableWidgetVerticalHeader(self))
|
||||
|
||||
@@ -43,7 +43,10 @@ __all__ = ['AppMainWindow']
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Migrate legacy settings
|
||||
registerAppSettings('ServerWidgetWindowSize')
|
||||
registerAppSettings('AppMainWindowGeometry')
|
||||
registerAppSettings('AppMainWindowState')
|
||||
|
||||
|
||||
class AppNetworkStateManager(NetworkStateManager):
|
||||
@@ -453,17 +456,31 @@ class AppMainWindow(AppQMainWindow):
|
||||
logger.error('open about page failed')
|
||||
|
||||
def setWidthAndHeight(self):
|
||||
try:
|
||||
windowSize = AppSettings.get('ServerWidgetWindowSize').split(',')
|
||||
if AppSettings.get('AppMainWindowGeometry') is None:
|
||||
# Migrate legacy settings
|
||||
try:
|
||||
windowSize = AppSettings.get('ServerWidgetWindowSize').split(',')
|
||||
|
||||
self.setGeometry(100, 100, *list(int(size) for size in windowSize))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
self.resize(*list(int(size) for size in windowSize))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
self.setGeometry(100, 100, 1800, 960)
|
||||
self.resize(1800, 960)
|
||||
else:
|
||||
try:
|
||||
self.restoreGeometry(AppSettings.get('AppMainWindowGeometry'))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
pass
|
||||
|
||||
try:
|
||||
self.restoreState(AppSettings.get('AppMainWindowState'))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
pass
|
||||
|
||||
def cleanup(self):
|
||||
AppSettings.set(
|
||||
'ServerWidgetWindowSize',
|
||||
f'{self.geometry().width()},{self.geometry().height()}',
|
||||
)
|
||||
AppSettings.set('AppMainWindowGeometry', self.saveGeometry())
|
||||
AppSettings.set('AppMainWindowState', self.saveState())
|
||||
|
||||
@@ -31,7 +31,10 @@ import functools
|
||||
|
||||
__all__ = ['UserSubsWindow']
|
||||
|
||||
# Migrate legacy settings
|
||||
registerAppSettings('SubscriptionWidgetWindowSize')
|
||||
registerAppSettings('UserSubsWindowGeometry')
|
||||
registerAppSettings('UserSubsWindowState')
|
||||
|
||||
|
||||
class AddSubsDialog(AppQDialog):
|
||||
@@ -65,7 +68,7 @@ class AddSubsDialog(AppQDialog):
|
||||
self.setLayout(layout)
|
||||
|
||||
def setWidthAndHeight(self):
|
||||
self.setGeometry(100, 100, 456, 150)
|
||||
self.resize(456, 150)
|
||||
|
||||
def subsRemark(self):
|
||||
return self.remarkEdit.text()
|
||||
@@ -108,16 +111,6 @@ class UserSubsWindow(AppQMainWindow):
|
||||
|
||||
self.setCentralWidget(self.fakeCentralWidget)
|
||||
|
||||
def setWidthAndHeight(self):
|
||||
try:
|
||||
windowSize = AppSettings.get('SubscriptionWidgetWindowSize').split(',')
|
||||
|
||||
self.setGeometry(100, 100, *list(int(size) for size in windowSize))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
self.setGeometry(100, 100, 500 * GOLDEN_RATIO, 500)
|
||||
|
||||
def addSubs(self):
|
||||
def handleResultCode(_addSubsDialog, code):
|
||||
if code == PySide6LegacyEnumValueWrapper(AppQDialog.DialogCode.Accepted):
|
||||
@@ -153,8 +146,32 @@ class UserSubsWindow(AppQMainWindow):
|
||||
else:
|
||||
super().keyPressEvent(event)
|
||||
|
||||
def setWidthAndHeight(self):
|
||||
if AppSettings.get('UserSubsWindowGeometry') is None:
|
||||
# Migrate legacy settings
|
||||
try:
|
||||
windowSize = AppSettings.get('SubscriptionWidgetWindowSize').split(',')
|
||||
|
||||
self.resize(*list(int(size) for size in windowSize))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
self.resize(520 * GOLDEN_RATIO, 520)
|
||||
else:
|
||||
try:
|
||||
self.restoreGeometry(AppSettings.get('UserSubsWindowGeometry'))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
pass
|
||||
|
||||
try:
|
||||
self.restoreState(AppSettings.get('UserSubsWindowState'))
|
||||
except Exception:
|
||||
# Any non-exit exceptions
|
||||
|
||||
pass
|
||||
|
||||
def cleanup(self):
|
||||
AppSettings.set(
|
||||
'SubscriptionWidgetWindowSize',
|
||||
f'{self.geometry().width()},{self.geometry().height()}',
|
||||
)
|
||||
AppSettings.set('UserSubsWindowGeometry', self.saveGeometry())
|
||||
AppSettings.set('UserSubsWindowState', self.saveState())
|
||||
|
||||
@@ -86,7 +86,7 @@ class XrayAssetViewerWindow(AppQMainWindow):
|
||||
self.menuBar().addMenu(self.fileMenu)
|
||||
|
||||
def setWidthAndHeight(self):
|
||||
self.setGeometry(100, 100, 360, 360 * GOLDEN_RATIO)
|
||||
self.resize(360, 360 * GOLDEN_RATIO)
|
||||
|
||||
def flushItem(self):
|
||||
self.xrayAssetViewerWidget.flushItem()
|
||||
|
||||
Reference in New Issue
Block a user