Advertisement
Guest User

Untitled

a guest
Apr 2nd, 2013
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- coding: utf-8 -*-
  2. # vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4
  3.  
  4. import sip
  5. from datetime import datetime, timedelta
  6.  
  7. sip.setapi(u'QDate', 2)
  8. sip.setapi(u'QDateTime', 2)
  9. sip.setapi(u'QString', 2)
  10. sip.setapi(u'QTextStream', 2)
  11. sip.setapi(u'QTime', 2)
  12. sip.setapi(u'QUrl', 2)
  13. sip.setapi(u'QVariant', 2)
  14.  
  15.  
  16. from PyQt4 import QtCore
  17.  
  18.  
  19. class Settings(QtCore.QSettings):
  20.     __default_settings__ = {
  21.         # This defaults to yesterday in order to force the update check to run when you've never run it before.
  22.         u'core/last version test': datetime.now().date() - timedelta(days=1)
  23.     }
  24.  
  25.     def value(self, key):
  26.         # if group() is not empty the group has not been specified together with the key.
  27.         if self.group():
  28.             default_value = Settings.__default_settings__[self.group() + u'/' + key]
  29.         else:
  30.             default_value = Settings.__default_settings__[key]
  31.         setting = super(Settings, self).value(key, default_value)
  32.         return self._convert_value(setting, default_value)
  33.  
  34.     def _convert_value(self, setting, default_value):
  35.         # On OS X (and probably on other platforms too) empty value from QSettings is represented as type
  36.         # PyQt4.QtCore.QPyNullVariant. This type has to be converted to proper 'None' Python type.
  37.         if isinstance(setting, QtCore.QPyNullVariant) and setting.isNull():
  38.             setting = None
  39.         # Handle 'None' type (empty value) properly.
  40.         if setting is None:
  41.             # An empty string saved to the settings results in a None type being returned.
  42.             # Convert it to empty unicode string.
  43.             if isinstance(default_value, unicode):
  44.                 return u''
  45.             # An empty list saved to the settings results in a None type being returned.
  46.             else:
  47.                 return []
  48.         # Convert the setting to the correct type.
  49.         if isinstance(default_value, bool):
  50.             if isinstance(setting, bool):
  51.                 return setting
  52.             # Sometimes setting is string instead of a boolean.
  53.             return setting == u'true'
  54.         if isinstance(default_value, int):
  55.             return int(setting)
  56.         return setting
  57.  
  58. if __name__ == u'__main__':
  59.     settings = Settings()
  60.     print settings.fileName()
  61.     settings.beginGroup(u'core')
  62.     last_test = settings.value(u'last version test')
  63.     this_test = datetime.now().date()
  64.     settings.setValue(u'last version test', this_test)
  65.     settings.endGroup()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement