home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_2336 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.2 KB  |  188 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4.  
  5. try:
  6.     set
  7. except NameError:
  8.     from sets import Set as set
  9.  
  10. from pyreadline.unicode_helper import ensure_unicode
  11. validkey = set([
  12.     'cancel',
  13.     'backspace',
  14.     'tab',
  15.     'clear',
  16.     'return',
  17.     'shift_l',
  18.     'control_l',
  19.     'alt_l',
  20.     'pause',
  21.     'caps_lock',
  22.     'escape',
  23.     'space',
  24.     'prior',
  25.     'next',
  26.     'end',
  27.     'home',
  28.     'left',
  29.     'up',
  30.     'right',
  31.     'down',
  32.     'select',
  33.     'print',
  34.     'execute',
  35.     'snapshot',
  36.     'insert',
  37.     'delete',
  38.     'help',
  39.     'f1',
  40.     'f2',
  41.     'f3',
  42.     'f4',
  43.     'f5',
  44.     'f6',
  45.     'f7',
  46.     'f8',
  47.     'f9',
  48.     'f10',
  49.     'f11',
  50.     'f12',
  51.     'f13',
  52.     'f14',
  53.     'f15',
  54.     'f16',
  55.     'f17',
  56.     'f18',
  57.     'f19',
  58.     'f20',
  59.     'f21',
  60.     'f22',
  61.     'f23',
  62.     'f24',
  63.     'num_lock',
  64.     'scroll_lock',
  65.     'vk_apps',
  66.     'vk_processkey',
  67.     'vk_attn',
  68.     'vk_crsel',
  69.     'vk_exsel',
  70.     'vk_ereof',
  71.     'vk_play',
  72.     'vk_zoom',
  73.     'vk_noname',
  74.     'vk_pa1',
  75.     'vk_oem_clear',
  76.     'numpad0',
  77.     'numpad1',
  78.     'numpad2',
  79.     'numpad3',
  80.     'numpad4',
  81.     'numpad5',
  82.     'numpad6',
  83.     'numpad7',
  84.     'numpad8',
  85.     'numpad9',
  86.     'divide',
  87.     'multiply',
  88.     'add',
  89.     'subtract',
  90.     'vk_decimal'])
  91. escape_sequence_to_special_key = {
  92.     '\\e[a': 'up',
  93.     '\\e[b': 'down',
  94.     'del': 'delete' }
  95.  
  96. class KeyPress(object):
  97.     
  98.     def __init__(self, char = '', shift = False, control = False, meta = False, keyname = ''):
  99.         if control and meta or shift:
  100.             char = char.upper()
  101.         
  102.         self.info = dict(char = char, shift = shift, control = control, meta = meta, keyname = keyname)
  103.  
  104.     
  105.     def create(name):
  106.         
  107.         def get(self):
  108.             return self.info[name]
  109.  
  110.         
  111.         def set(self, value):
  112.             self.info[name] = value
  113.  
  114.         return property(get, set)
  115.  
  116.     char = create('char')
  117.     shift = create('shift')
  118.     control = create('control')
  119.     meta = create('meta')
  120.     keyname = create('keyname')
  121.     
  122.     def __repr__(self):
  123.         return u'(%s,%s,%s,%s)' % tuple(map(ensure_unicode, self.tuple()))
  124.  
  125.     
  126.     def tuple(self):
  127.         if self.keyname:
  128.             return (self.control, self.meta, self.shift, self.keyname)
  129.         if self.control and self.meta or self.shift:
  130.             return (self.control, self.meta, self.shift, self.char.upper())
  131.         return (self.control, self.meta, self.shift, self.char)
  132.  
  133.  
  134.  
  135. def make_KeyPress_from_keydescr(keydescr):
  136.     keyinfo = KeyPress()
  137.     if len(keydescr) > 2 and keydescr[:1] == '"' and keydescr[-1:] == '"':
  138.         keydescr = keydescr[1:-1]
  139.     
  140.     while None:
  141.         lkeyname = keydescr.lower()
  142.         if lkeyname.startswith('control-'):
  143.             keyinfo.control = True
  144.             keydescr = keydescr[8:]
  145.             continue
  146.         if lkeyname.startswith('ctrl-'):
  147.             keyinfo.control = True
  148.             keydescr = keydescr[5:]
  149.             continue
  150.         if keydescr.lower().startswith('\\c-'):
  151.             keyinfo.control = True
  152.             keydescr = keydescr[3:]
  153.             continue
  154.         if keydescr.lower().startswith('\\m-'):
  155.             keyinfo.meta = True
  156.             keydescr = keydescr[3:]
  157.             continue
  158.         if keydescr in escape_sequence_to_special_key:
  159.             keydescr = escape_sequence_to_special_key[keydescr]
  160.             continue
  161.         if lkeyname.startswith('meta-'):
  162.             keyinfo.meta = True
  163.             keydescr = keydescr[5:]
  164.             continue
  165.         if lkeyname.startswith('alt-'):
  166.             keyinfo.meta = True
  167.             keydescr = keydescr[4:]
  168.             continue
  169.         if lkeyname.startswith('shift-'):
  170.             keyinfo.shift = True
  171.             keydescr = keydescr[6:]
  172.             continue
  173.         if len(keydescr) > 1:
  174.             if keydescr.strip().lower() in validkey:
  175.                 keyinfo.keyname = keydescr.strip().lower()
  176.                 keyinfo.char = ''
  177.             else:
  178.                 raise IndexError("Not a valid key: '%s'" % keydescr)
  179.         keydescr.strip().lower() in validkey
  180.         keyinfo.char = keydescr
  181.         return keyinfo
  182.         continue
  183.         return None
  184.  
  185. if __name__ == '__main__':
  186.     import startup
  187.  
  188.