home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 January / Chip_2003-01_cd2.bin / convert / eJayMp3Pro / mp3pro_demo.exe / CMD.PYC (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-06-29  |  5.4 KB  |  184 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import string
  5. import sys
  6. import linecache
  7. PROMPT = '(Cmd) '
  8. IDENTCHARS = string.letters + string.digits + '_'
  9.  
  10. class Cmd:
  11.     prompt = PROMPT
  12.     identchars = IDENTCHARS
  13.     ruler = '='
  14.     lastcmd = ''
  15.     cmdqueue = []
  16.     intro = None
  17.     doc_leader = ''
  18.     doc_header = 'Documented commands (type help <topic>):'
  19.     misc_header = 'Miscellaneous help topics:'
  20.     undoc_header = 'Undocumented commands:'
  21.     nohelp = '*** No help on %s'
  22.     
  23.     def __init__(self):
  24.         pass
  25.  
  26.     
  27.     def cmdloop(self, intro = None):
  28.         self.preloop()
  29.         if intro != None:
  30.             self.intro = intro
  31.         
  32.         if self.intro:
  33.             print self.intro
  34.         
  35.         stop = None
  36.         while not stop:
  37.             if self.cmdqueue:
  38.                 line = self.cmdqueue[0]
  39.                 del self.cmdqueue[0]
  40.             else:
  41.                 
  42.                 try:
  43.                     line = raw_input(self.prompt)
  44.                 except EOFError:
  45.                     line = 'EOF'
  46.  
  47.             line = self.precmd(line)
  48.             stop = self.onecmd(line)
  49.             stop = self.postcmd(stop, line)
  50.         self.postloop()
  51.  
  52.     
  53.     def precmd(self, line):
  54.         return line
  55.  
  56.     
  57.     def postcmd(self, stop, line):
  58.         return stop
  59.  
  60.     
  61.     def preloop(self):
  62.         pass
  63.  
  64.     
  65.     def postloop(self):
  66.         pass
  67.  
  68.     
  69.     def onecmd(self, line):
  70.         line = string.strip(line)
  71.         if line == '?':
  72.             line = 'help'
  73.         elif line == '!':
  74.             if hasattr(self, 'do_shell'):
  75.                 line = 'shell'
  76.             else:
  77.                 return self.default(line)
  78.         elif not line:
  79.             return self.emptyline()
  80.         
  81.         self.lastcmd = line
  82.         (i, n) = (0, len(line))
  83.         while i < n and line[i] in self.identchars:
  84.             i = i + 1
  85.         (cmd, arg) = (line[:i], string.strip(line[i:]))
  86.         if cmd == '':
  87.             return self.default(line)
  88.         else:
  89.             
  90.             try:
  91.                 func = getattr(self, 'do_' + cmd)
  92.             except AttributeError:
  93.                 return self.default(line)
  94.  
  95.             return func(arg)
  96.  
  97.     
  98.     def emptyline(self):
  99.         if self.lastcmd:
  100.             return self.onecmd(self.lastcmd)
  101.         
  102.  
  103.     
  104.     def default(self, line):
  105.         print '*** Unknown syntax:', line
  106.  
  107.     
  108.     def do_help(self, arg):
  109.         if arg:
  110.             
  111.             try:
  112.                 func = getattr(self, 'help_' + arg)
  113.             except:
  114.                 
  115.                 try:
  116.                     doc = getattr(self, 'do_' + arg).__doc__
  117.                     if doc:
  118.                         print doc
  119.                         return None
  120.                 except:
  121.                     pass
  122.  
  123.                 print self.nohelp % (arg,)
  124.                 return None
  125.  
  126.             func()
  127.         else:
  128.             names = []
  129.             classes = [
  130.                 self.__class__]
  131.             while classes:
  132.                 aclass = classes[0]
  133.                 if aclass.__bases__:
  134.                     classes = classes + list(aclass.__bases__)
  135.                 
  136.                 names = names + dir(aclass)
  137.                 del classes[0]
  138.             cmds_doc = []
  139.             cmds_undoc = []
  140.             help = { }
  141.             for name in names:
  142.                 pass
  143.             
  144.             names.sort()
  145.             prevname = ''
  146.             for name in names:
  147.                 if name[:3] == 'do_':
  148.                     prevname = name
  149.                     cmd = name[3:]
  150.                     if help.has_key(cmd):
  151.                         cmds_doc.append(cmd)
  152.                         del help[cmd]
  153.                     elif getattr(self, name).__doc__:
  154.                         cmds_doc.append(cmd)
  155.                     else:
  156.                         cmds_undoc.append(cmd)
  157.                 
  158.             
  159.             print self.doc_leader
  160.             self.print_topics(self.doc_header, cmds_doc, 15, 80)
  161.             self.print_topics(self.misc_header, help.keys(), 15, 80)
  162.             self.print_topics(self.undoc_header, cmds_undoc, 15, 80)
  163.  
  164.     
  165.     def print_topics(self, header, cmds, cmdlen, maxcol):
  166.         if cmds:
  167.             print header
  168.             if self.ruler:
  169.                 print self.ruler * len(header)
  170.             
  171.             (cmds_per_line, junk) = divmod(maxcol, cmdlen)
  172.             col = cmds_per_line
  173.             for cmd in cmds:
  174.                 if col == 0:
  175.                     print 
  176.                 
  177.                 print ('%-' + `cmdlen` + 's') % cmd,
  178.                 col = (col + 1) % cmds_per_line
  179.             
  180.             print '\n'
  181.         
  182.  
  183.  
  184.