home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 February / maximum-cd-2011-02.iso / DiscContents / digsby_setup85.exe / lib / util / urlprotocol.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-11-24  |  4.4 KB  |  125 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. __all__ = 'isRegistered register unregister'.split()
  5. import platform
  6. from traceback import print_exc
  7. from warnings import warn
  8. platform = platform.system().lower()
  9. platform = {
  10.     'microsoft': 'windows',
  11.     '4nt': 'windows',
  12.     'darwin': 'darwin',
  13.     'linux': 'linux' }.get(platform, 'windows')
  14.  
  15. def attrget(obj, attr):
  16.     
  17.     try:
  18.         return obj[attr]
  19.     except TypeError:
  20.         return obj.name
  21.  
  22.  
  23.  
  24. def platform_call(name, *a, **k):
  25.     funcname = name + '_' + platform
  26.     
  27.     try:
  28.         func = globals()[funcname]
  29.     except KeyError:
  30.         warn('platform %s not implemented (%s)' % (platform, funcname))
  31.  
  32.     return func(*a, **k)
  33.  
  34.  
  35. def isRegistered(urlprotocol, system = True):
  36.     return platform_call('isDefault', urlprotocol, system = system)
  37.  
  38.  
  39. def get(protocol_name, system = True):
  40.     return platform_call('get', protocol_name, system = system)
  41.  
  42.  
  43. def register(urlprotocol, system = True):
  44.     return platform_call('register', urlprotocol, system = system)
  45.  
  46.  
  47. def unregister(protocol_or_name, system = True):
  48.     name = None if isinstance(protocol_or_name, basestring) else getattr(protocol_or_name, 'name', protocol_or_name['name'])
  49.     return platform_call('unregister', name, system = system)
  50.  
  51.  
  52. def _init_windows():
  53.     global reg
  54.     import _winreg as reg
  55.  
  56.  
  57. def get_windows(protocol_name, system = True):
  58.     fuzzydecode = fuzzydecode
  59.     import auxencodings
  60.     key = reg.OpenKey(basekey(system), '%s\\shell\\open\\command' % protocol_name)
  61.     val = reg.EnumValue(key, 0)[1]
  62.     if isinstance(val, str):
  63.         val = fuzzydecode(reg.EnumValue(key, 0)[1], 'utf-16-be')
  64.     
  65.     return val
  66.  
  67.  
  68. def urlkey(protocolname, system = False, write = False):
  69.     
  70.     try:
  71.         if system:
  72.             return None(reg.OpenKey, reg.HKEY_CLASSES_ROOT, '%s' % protocolname, 0 if write else reg.KEY_READ)
  73.         return system(reg.OpenKey, reg.HKEY_CURRENT_USER, 'Software\\Classes\\%s' % protocolname, 0 if write else reg.KEY_READ)
  74.     except reg.error:
  75.         return None
  76.  
  77.  
  78.  
  79. def basekey(system = False):
  80.     if system:
  81.         return reg.OpenKey(reg.HKEY_CLASSES_ROOT, '')
  82.     return reg.OpenKey(reg.HKEY_CURRENT_USER, 'Software\\Classes')
  83.  
  84.  
  85. def keyToObj(.0):
  86.     (obj, objtype) = .0
  87.     if objtype in reg.REG_NONE:
  88.         return None
  89.     if objtype in (reg.REG_SZ, reg.REG_EXPAND_SZ, reg.REG_RESOURCE_LIST, reg.REG_LINK, reg.REG_BINARY, reg.REG_DWORD, reg.REG_DWORD_LITTLE_ENDIAN, reg.REG_DWORD_BIG_ENDIAN, reg.REG_MULTI_SZ):
  90.         return obj
  91.     raise NotImplementedError, 'Registry type 0x%08X not supported' % (objtype,)
  92.  
  93.  
  94. def register_microsoft(urlprotocol, system = True):
  95.     protocol = attrget(urlprotocol, 'protocol')
  96.     key = urlkey(protocol, system)
  97.     if not key:
  98.         reg.CreateKey(basekey(system), 'Software\\Classes\\%s' % protocol)
  99.     
  100.  
  101.  
  102. def isRegistered_microsoft(urlprotocol, system = True):
  103.     name = attrget(urlprotocol, 'protocol')
  104.     key = urlkey(name, system)
  105.     if not key:
  106.         return False
  107.  
  108.  
  109. def _init_darwin():
  110.     pass
  111.  
  112.  
  113. def _init_linux():
  114.     pass
  115.  
  116.  
  117. try:
  118.     platform_call('_init')
  119. except Exception:
  120.     print_exc()
  121.  
  122. if __name__ == '__main__':
  123.     print get('mailto')
  124.  
  125.