Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- # vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
- import sip
- from datetime import datetime, timedelta
- sip.setapi(u'QDate', 2)
- sip.setapi(u'QDateTime', 2)
- sip.setapi(u'QString', 2)
- sip.setapi(u'QTextStream', 2)
- sip.setapi(u'QTime', 2)
- sip.setapi(u'QUrl', 2)
- sip.setapi(u'QVariant', 2)
- from PyQt4 import QtCore
- class Settings(QtCore.QSettings):
- __default_settings__ = {
- # This defaults to yesterday in order to force the update check to run when you've never run it before.
- u'core/last version test': datetime.now().date() - timedelta(days=1)
- }
- def value(self, key):
- # if group() is not empty the group has not been specified together with the key.
- if self.group():
- default_value = Settings.__default_settings__[self.group() + u'/' + key]
- else:
- default_value = Settings.__default_settings__[key]
- setting = super(Settings, self).value(key, default_value)
- return self._convert_value(setting, default_value)
- def _convert_value(self, setting, default_value):
- # On OS X (and probably on other platforms too) empty value from QSettings is represented as type
- # PyQt4.QtCore.QPyNullVariant. This type has to be converted to proper 'None' Python type.
- if isinstance(setting, QtCore.QPyNullVariant) and setting.isNull():
- setting = None
- # Handle 'None' type (empty value) properly.
- if setting is None:
- # An empty string saved to the settings results in a None type being returned.
- # Convert it to empty unicode string.
- if isinstance(default_value, unicode):
- return u''
- # An empty list saved to the settings results in a None type being returned.
- else:
- return []
- # Convert the setting to the correct type.
- if isinstance(default_value, bool):
- if isinstance(setting, bool):
- return setting
- # Sometimes setting is string instead of a boolean.
- return setting == u'true'
- if isinstance(default_value, int):
- return int(setting)
- return setting
- if __name__ == u'__main__':
- settings = Settings()
- print settings.fileName()
- settings.beginGroup(u'core')
- last_test = settings.value(u'last version test')
- this_test = datetime.now().date()
- settings.setValue(u'last version test', this_test)
- settings.endGroup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement