home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / p / python / !ibrowse / pyc / ibrowse (.txt)
Encoding:
Python Compiled Bytecode  |  1997-02-17  |  8.0 KB  |  230 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.4)
  3.  
  4. import tbevent
  5. import window
  6. argv
  7. *
  8. NoSuchNode
  9. import icache
  10. import string
  11. import regex
  12. import regsub
  13. backcol = -256
  14. forecol = 0
  15. fontname = 'Corpus.Bold'
  16. pointsize = 11
  17. nchars = 80
  18. fh = swi(393345, '.sii00;i', fontname, pointsize * 16, pointsize * 16)
  19. bb = block(9, [
  20.     0,
  21.     0,
  22.     0,
  23.     0,
  24.     -1])
  25. big = 2147483647
  26. swi(393377, 'isiiib', fh, 'M' * nchars, (1 << 18) + (1 << 8) + (1 << 5), big, big, bb)
  27. width = (bb[7] - bb[5]) / 400
  28. ht = (bb[8] - bb[6]) / 200
  29. ctrlchars = regex.compile('[\x01-\x1f]')
  30.  
  31. class Display(window.Window):
  32.     actions = { }
  33.     
  34.     def __init__(self, file, ref):
  35.         self.list = []
  36.         self.file = ''
  37.         if self.move(file, ref):
  38.             window.Window.__init__(self, 'Display')
  39.             tbevent.tbclasses[self.id] = self
  40.             self.handle = self.getwimphandle()
  41.             tbevent.winclasses[self.handle] = self
  42.             self.toolbar = window.Window(self.gettoolbars()[1])
  43.             self.setup()
  44.         
  45.  
  46.     
  47.     def setup(self):
  48.         self.hide()
  49.         self.setextent(0, -ht * self.nl, width, ht + 64)
  50.         self.settitle('(' + self.file + ')' + self.node)
  51.         self.show()
  52.         self.findstr = ''
  53.         self.findline = 0
  54.  
  55.     
  56.     def move(self, file, ref):
  57.         
  58.         try:
  59.             (file, node, header, menu, footnotes, text) = icache.get_node(file, ref)
  60.         except NoSuchFile:
  61.             file = None
  62.             print "can't find file ", file
  63.             return 0
  64.         except NoSuchNode:
  65.             node = None
  66.             print "can't find node ", node
  67.             return 0
  68.  
  69.         self.lines = string.splitfields(text, '\n')
  70.         self.nl = len(self.lines)
  71.         for n in range(self.nl):
  72.             self.lines[n] = regsub.gsub(ctrlchars, ' ', self.lines[n])
  73.         
  74.         self.header = header
  75.         self.file = file
  76.         self.node = node
  77.         if menu:
  78.             self.newmenu = menu
  79.         else:
  80.             self.newmenu = []
  81.         self.notes = footnotes
  82.         return 1
  83.  
  84.     
  85.     def E_SS_ValueChanged(self):
  86.         g = tbevent.idblock[5]
  87.         n = self.toolbar.stringset_getindex(g) - 1
  88.         if n < 0:
  89.             return None
  90.         
  91.         if g == 3:
  92.             if self.move(self.file, self.menu[n][1]):
  93.                 self.setup()
  94.             
  95.         
  96.         if g == 10:
  97.             if self.move(self.file, self.notes[n][1]):
  98.                 self.setup()
  99.             
  100.         
  101.  
  102.     
  103.     def E_Move(self):
  104.         s = self.toolbar.writeable_getvalue(4)
  105.         if self.move(self.file, s):
  106.             self.setup()
  107.         
  108.  
  109.     
  110.     def E_Find(self):
  111.         s = self.toolbar.writeable_getvalue(4)
  112.         
  113.         try:
  114.             pat = regex.compile(s)
  115.         except regex.error:
  116.             msg = None
  117.             print 'bad pattern ', msg
  118.             return None
  119.  
  120.         if self.findstr != s:
  121.             self.findstr = s
  122.             self.findline = 0
  123.         
  124.         for n in range(self.findline + 1, self.nl):
  125.             pass
  126.         
  127.  
  128.     
  129.     def E_Next(self):
  130.         (prev, next, up) = self.header
  131.         if next:
  132.             if self.move(self.file, next):
  133.                 self.setup()
  134.             
  135.         
  136.  
  137.     
  138.     def E_Previous(self):
  139.         (prev, next, up) = self.header
  140.         if prev:
  141.             if self.move(self.file, prev):
  142.                 self.setup()
  143.             
  144.         
  145.  
  146.     
  147.     def E_Up(self):
  148.         (prev, next, up) = self.header
  149.         if up:
  150.             if self.move(self.file, up):
  151.                 self.setup()
  152.             
  153.         
  154.  
  155.     
  156.     def E_Clone(self):
  157.         a = Display(self.file, self.node)
  158.  
  159.     
  160.     def E_Dir(self):
  161.         if self.move('dir', 'Top'):
  162.             self.setup()
  163.         
  164.  
  165.     
  166.     def E_Last(self):
  167.         if self.list:
  168.             a = self.list[0]
  169.             self.list = self.list[1:]
  170.             if self.move(a[0], a[1]):
  171.                 self.setup()
  172.                 self.list = self.list[1:]
  173.             
  174.         
  175.  
  176.     
  177.     def W_Redraw(self):
  178.         more = swi(262344, '.b;i', tbevent.wblock)
  179.         bx = tbevent.wblock[1] - tbevent.wblock[5]
  180.         by = tbevent.wblock[4] - tbevent.wblock[6]
  181.         swi(264015, 'iiii', fh, backcol, forecol, 14)
  182.         while more:
  183.             tl = -1 + (by - tbevent.wblock[10]) / ht
  184.             if tl < 0:
  185.                 tl = 0
  186.             
  187.             bl = 2 + (by - tbevent.wblock[8]) / ht
  188.             if bl > self.nl:
  189.                 bl = self.nl
  190.             
  191.             for y in range(tl, bl):
  192.                 swi(262278, 'isiii000', fh, self.lines[y], 272, bx, by - y * ht)
  193.             
  194.             more = swi(262346, '.b;i', tbevent.wblock)
  195.             continue
  196.             0
  197.  
  198.  
  199.  
  200. class Orphans:
  201.     actions = { }
  202.     
  203.     def __init__(self):
  204.         tbevent.tbclasses[0] = self
  205.  
  206.     
  207.     def BarClick(self):
  208.         a = Display('dir', 'Top')
  209.  
  210.     
  211.     def E_Q_Quit(self):
  212.         exit()
  213.  
  214.  
  215.  
  216. class Messenger:
  217.     
  218.     def Wimp_MQuit(self):
  219.         exit()
  220.  
  221.  
  222. tbevent.initialise('<ibrowse$Dir>')
  223. oi = Orphans()
  224. tbevent.msghandler = Messenger()
  225. tbevent.usereport = 16
  226. while 1:
  227.     tbevent.poll()
  228.     continue
  229.     None if len(argv) > 2 else import sys
  230.