home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Mac / Tools / IDE / MacPrefs.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-06-23  |  5.0 KB  |  126 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import macfs
  5. import marshal
  6. import types
  7. kOnSystemDisk = 32768
  8.  
  9. class PrefObject:
  10.     
  11.     def __init__(self, dict = None):
  12.         if dict == None:
  13.             self._prefsdict = { }
  14.         else:
  15.             self._prefsdict = dict
  16.  
  17.     
  18.     def __len__(self):
  19.         return len(self._prefsdict)
  20.  
  21.     
  22.     def __delattr__(self, attr):
  23.         if self._prefsdict.has_key(attr):
  24.             del self._prefsdict[attr]
  25.         else:
  26.             raise AttributeError, 'delete non-existing instance attribute'
  27.  
  28.     
  29.     def __getattr__(self, attr):
  30.         if attr == '__members__':
  31.             keys = self._prefsdict.keys()
  32.             keys.sort()
  33.             return keys
  34.         
  35.         
  36.         try:
  37.             return self._prefsdict[attr]
  38.         except KeyError:
  39.             raise AttributeError, attr
  40.  
  41.  
  42.     
  43.     def __setattr__(self, attr, value):
  44.         if attr[0] != '_':
  45.             self._prefsdict[attr] = value
  46.         else:
  47.             self.__dict__[attr] = value
  48.  
  49.     
  50.     def getprefsdict(self):
  51.         return self._prefsdict
  52.  
  53.  
  54.  
  55. class PrefFile(PrefObject):
  56.     
  57.     def __init__(self, path, creator = 'Pyth'):
  58.         self._PrefFile__path = path
  59.         self._PrefFile__creator = creator
  60.         self._prefsdict = { }
  61.         
  62.         try:
  63.             prefdict = marshal.load(open(self._PrefFile__path, 'rb'))
  64.         except IOError:
  65.             pass
  66.  
  67.         for key, value in prefdict.items():
  68.             pass
  69.         
  70.  
  71.     
  72.     def save(self):
  73.         prefdict = { }
  74.         for key, value in self._prefsdict.items():
  75.             if type(value) == types.InstanceType:
  76.                 prefdict[key] = value.getprefsdict()
  77.                 if not prefdict[key]:
  78.                     del prefdict[key]
  79.                 
  80.             else:
  81.                 prefdict[key] = value
  82.         
  83.         marshal.dump(prefdict, open(self._PrefFile__path, 'wb'))
  84.         fss = macfs.FSSpec(self._PrefFile__path)
  85.         fss.SetCreatorType(self._PrefFile__creator, 'pref')
  86.  
  87.     
  88.     def __getattr__(self, attr):
  89.         if attr == '__members__':
  90.             keys = self._prefsdict.keys()
  91.             keys.sort()
  92.             return keys
  93.         
  94.         
  95.         try:
  96.             return self._prefsdict[attr]
  97.         except KeyError:
  98.             if attr[0] != '_':
  99.                 self._prefsdict[attr] = PrefObject()
  100.                 return self._prefsdict[attr]
  101.             else:
  102.                 raise AttributeError, attr
  103.         except:
  104.             attr[0] != '_'
  105.  
  106.  
  107.  
  108. _prefscache = { }
  109.  
  110. def GetPrefs(prefname, creator = 'Pyth'):
  111.     import macostools
  112.     import os
  113.     if _prefscache.has_key(prefname):
  114.         return _prefscache[prefname]
  115.     
  116.     (vrefnum, dirid) = macfs.FindFolder(kOnSystemDisk, 'pref', 0)
  117.     prefsfolder_fss = macfs.FSSpec((vrefnum, dirid, ''))
  118.     prefsfolder = prefsfolder_fss.as_pathname()
  119.     path = os.path.join(prefsfolder, prefname)
  120.     (head, tail) = os.path.split(path)
  121.     macostools.mkdirs(head)
  122.     preffile = PrefFile(path, creator)
  123.     _prefscache[prefname] = preffile
  124.     return preffile
  125.  
  126.