home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 January / maximum-cd-2011-01.iso / DiscContents / calibre-0.7.26.msi / file_1417 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-10-31  |  2.6 KB  |  61 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
  6. __docformat__ = 'restructuredtext en'
  7. import json
  8. from calibre.constants import preferred_encoding
  9. from calibre.utils.config import to_json, from_json
  10.  
  11. class DBPrefs(dict):
  12.     
  13.     def __init__(self, db):
  14.         dict.__init__(self)
  15.         self.db = db
  16.         self.defaults = { }
  17.         for key, val in self.db.conn.get('SELECT key,val FROM preferences'):
  18.             val = self.raw_to_object(val)
  19.             dict.__setitem__(self, key, val)
  20.         
  21.  
  22.     
  23.     def raw_to_object(self, raw):
  24.         if not isinstance(raw, unicode):
  25.             raw = raw.decode(preferred_encoding)
  26.         
  27.         return json.loads(raw, object_hook = from_json)
  28.  
  29.     
  30.     def to_raw(self, val):
  31.         return json.dumps(val, indent = 2, default = to_json)
  32.  
  33.     
  34.     def __getitem__(self, key):
  35.         
  36.         try:
  37.             return dict.__getitem__(self, key)
  38.         except KeyError:
  39.             return self.defaults[key]
  40.  
  41.  
  42.     
  43.     def __delitem__(self, key):
  44.         dict.__delitem__(self, key)
  45.         self.db.conn.execute('DELETE FROM preferences WHERE key=?', (key,))
  46.         self.db.conn.commit()
  47.  
  48.     
  49.     def __setitem__(self, key, val):
  50.         raw = self.to_raw(val)
  51.         self.db.conn.execute('DELETE FROM preferences WHERE key=?', (key,))
  52.         self.db.conn.execute('INSERT INTO preferences (key,val) VALUES (?,?)', (key, raw))
  53.         self.db.conn.commit()
  54.         dict.__setitem__(self, key, val)
  55.  
  56.     
  57.     def set(self, key, val):
  58.         self.__setitem__(key, val)
  59.  
  60.  
  61.