You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PyBitmessage/src/bitmessageqt/settingsmixin.py

80 lines
2.2 KiB
Python

#!/usr/bin/python2.7
from PyQt4 import QtCore, QtGui
class SettingsMixin(object):
def warnIfNoObjectName(self):
if self.objectName() == "":
# TODO: logger
pass
def writeState(self, source):
self.warnIfNoObjectName()
settings = QtCore.QSettings()
settings.beginGroup(self.objectName())
settings.setValue("state", source.saveState())
settings.endGroup()
def writeGeometry(self, source):
self.warnIfNoObjectName()
settings = QtCore.QSettings()
settings.beginGroup(self.objectName())
settings.setValue("geometry", source.saveGeometry())
settings.endGroup()
def readGeometry(self, target):
self.warnIfNoObjectName()
settings = QtCore.QSettings()
try:
geom = settings.value("/".join([str(self.objectName()), "geometry"]))
target.restoreGeometry(geom.toByteArray() if hasattr(geom, 'toByteArray') else geom)
except Exception as e:
pass
def readState(self, target):
self.warnIfNoObjectName()
settings = QtCore.QSettings()
try:
state = settings.value("/".join([str(self.objectName()), "state"]))
target.restoreState(state.toByteArray() if hasattr(state, 'toByteArray') else state)
except Exception as e:
pass
class SMainWindow(QtGui.QMainWindow, SettingsMixin):
def loadSettings(self):
self.readGeometry(self)
self.readState(self)
def saveSettings(self):
self.writeState(self)
self.writeGeometry(self)
class STableWidget(QtGui.QTableWidget, SettingsMixin):
def loadSettings(self):
self.readState(self.horizontalHeader())
def saveSettings(self):
self.writeState(self.horizontalHeader())
class SSplitter(QtGui.QSplitter, SettingsMixin):
def loadSettings(self):
self.readState(self)
def saveSettings(self):
self.writeState(self)
class STreeWidget(QtGui.QTreeWidget, SettingsMixin):
def loadSettings(self):
#recurse children
#self.readState(self)
pass
def saveSettings(self):
#recurse children
#self.writeState(self)
pass