mirror of
https://github.com/jdegenstein/jmwright-CQ-Editor.git
synced 2025-12-19 22:24:19 +01:00
110 lines
2.8 KiB
Python
110 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Wed May 23 22:02:30 2018
|
|
|
|
@author: adam
|
|
"""
|
|
|
|
from functools import reduce
|
|
from operator import add
|
|
from logbook import Logger
|
|
|
|
from PySide6.QtCore import QSettings
|
|
from PySide6.QtCore import Slot as pyqtSlot
|
|
|
|
|
|
class MainMixin(object):
|
|
name = "Main"
|
|
org = "Unknown"
|
|
|
|
components = {}
|
|
docks = {}
|
|
preferences = None
|
|
|
|
def __init__(self):
|
|
self.settings = QSettings(self.org, self.name)
|
|
|
|
def registerComponent(self, name, component, dock=None):
|
|
self.components[name] = component
|
|
|
|
if dock:
|
|
self.docks[name] = dock(component)
|
|
|
|
def saveWindow(self):
|
|
self.settings.setValue("geometry", self.saveGeometry())
|
|
self.settings.setValue("windowState", self.saveState())
|
|
|
|
def restoreWindow(self):
|
|
if self.settings.value("geometry"):
|
|
self.restoreGeometry(self.settings.value("geometry"))
|
|
if self.settings.value("windowState"):
|
|
self.restoreState(self.settings.value("windowState"))
|
|
|
|
def savePreferences(self):
|
|
settings = self.settings
|
|
|
|
if self.preferences:
|
|
settings.setValue("General", self.preferences.saveState())
|
|
|
|
for comp in (c for c in self.components.values() if c.preferences):
|
|
settings.setValue(comp.name, comp.preferences.saveState())
|
|
|
|
def restorePreferences(self):
|
|
settings = self.settings
|
|
|
|
if self.preferences and settings.value("General"):
|
|
self.preferences.restoreState(
|
|
settings.value("General"), removeChildren=False
|
|
)
|
|
|
|
for comp in (c for c in self.components.values() if c.preferences):
|
|
if settings.value(comp.name):
|
|
comp.preferences.restoreState(
|
|
settings.value(comp.name), removeChildren=False
|
|
)
|
|
|
|
def saveComponentState(self):
|
|
settings = self.settings
|
|
|
|
for comp in self.components.values():
|
|
comp.saveComponentState(settings)
|
|
|
|
def restoreComponentState(self):
|
|
settings = self.settings
|
|
|
|
for comp in self.components.values():
|
|
comp.restoreComponentState(settings)
|
|
|
|
|
|
class ComponentMixin(object):
|
|
name = "Component"
|
|
preferences = None
|
|
|
|
_actions = {}
|
|
|
|
def __init__(self):
|
|
if self.preferences:
|
|
self.preferences.sigTreeStateChanged.connect(self.updatePreferences)
|
|
|
|
self._logger = Logger(self.name)
|
|
|
|
def menuActions(self):
|
|
return self._actions
|
|
|
|
def toolbarActions(self):
|
|
if len(self._actions) > 0:
|
|
return reduce(add, [a for a in self._actions.values()])
|
|
else:
|
|
return []
|
|
|
|
@pyqtSlot(object, object)
|
|
def updatePreferences(self, *args):
|
|
pass
|
|
|
|
def saveComponentState(self, store):
|
|
pass
|
|
|
|
def restoreComponentState(self, store):
|
|
pass
|