home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / Languages / python / PyObjC-0.47-MIHS / pyobjc-0.47-src / Demo / ObjC / ShellText / ShellText.py < prev   
Encoding:
Python Source  |  1996-11-13  |  3.2 KB  |  139 lines

  1. #!/usr/local/bin/python
  2. #
  3. # Copyright (c) 1996 by Lele Gaifax.  All Rights Reserved
  4. #
  5. # This file is part of the PyObjC package.
  6. #
  7. # $RCSfile: ShellText.py,v $
  8. # $Revision: 1.1.1.4 $
  9. # $Date: 1996/11/14 01:49:47 $
  10. #
  11. # Created Thu Oct  3 19:04:49 1996.
  12. #
  13.  
  14. import ObjC
  15.  
  16. # Generated by h2py from /usr/include/appkit/Window.h
  17. NX_PLAINSTYLE = 0
  18. NX_TITLEDSTYLE = 1
  19. NX_MENUSTYLE = 2
  20. NX_MINIWINDOWSTYLE = 3
  21. NX_MINIWORLDSTYLE = 4
  22. NX_TOKENSTYLE = 5
  23. NX_RESIZEBARSTYLE = 6
  24. NX_SIZEBARSTYLE = NX_RESIZEBARSTYLE
  25. NX_FIRSTWINSTYLE = NX_PLAINSTYLE
  26. NX_LASTWINSTYLE = NX_RESIZEBARSTYLE
  27. NX_NUMWINSTYLES = (NX_LASTWINSTYLE - NX_FIRSTWINSTYLE + 1)
  28. NX_CLOSEBUTTONMASK = 1
  29. NX_MINIATURIZEBUTTONMASK = 4
  30. NX_ICONWIDTH = 48.0
  31. NX_ICONHEIGHT = 48.0
  32. NX_TOKENWIDTH = 64.0
  33. NX_TOKENHEIGHT = 64.0
  34. NX_NORMALLEVEL = 0
  35. NX_FLOATINGLEVEL = 3
  36. NX_DOCKLEVEL = 5
  37. NX_SUBMENULEVEL = 10
  38. NX_MAINMENULEVEL = 20
  39. NX_MAXFRAMESTRINGLENGTH = 300
  40.  
  41. NX_BUFFERED = 2
  42.  
  43. class ShellText:
  44.     def __init__ (self, title=None, frame=((150.0,750.0), (400.0, 400.0))):
  45.     self.app = ObjC.runtime.Application()
  46.     self.window = ObjC.runtime.Window (frame,
  47.                        NX_RESIZEBARSTYLE,
  48.                        NX_BUFFERED,
  49.                        NX_CLOSEBUTTONMASK,
  50.                        0,
  51.                        init="initContent:style:backing:buttonMask:defer:")
  52.     content = ObjC.runtime.ScrollView (frame, init="initFrame:")
  53.     self.window.setContentView__ (content)
  54.     if title:
  55.         self.window.setTitle__ (title)
  56.     
  57.     self.text = ObjC.runtime.Text (frame, init="initFrame:")
  58.     content.setDocView__ (self.text)
  59.     content.setVertScrollerRequired__ (1)
  60.     content.setHorizScrollerRequired__ (0);
  61.     contentsizep = content.getContentSize__.pack_argument (0)
  62.     content.getContentSize__ (contentsizep)
  63.     
  64.     self.text.setHorizResizable__ (0)
  65.     self.text.setVertResizable__ (1)
  66.     self.text.setMinSize__ (contentsizep)
  67.     csize = contentsizep.unpack()
  68.     self.text.sizeTo____ (csize[0], csize[1])
  69.     self.text.setOpaque__ (1)
  70.     self.text.setEditable__ (0)
  71.     self.window.setDelegate__ (self)
  72.     # end def
  73.  
  74.     def loadMessageFromFile (self, fname):
  75.     s = ObjC.streams.openfile (fname)
  76.     self.text.readText__ (s)
  77.     self.text.sizeToFit()
  78.     
  79.     def run (self):
  80.     self.window.orderFrontRegardless()
  81.     self.window.display()
  82.     
  83.     self.app.run()
  84.     # end def
  85.     
  86.     def windowWillClose__ (self, sender):
  87.     self.app.terminate__ (sender)
  88.     return self
  89.     # end def
  90.  
  91.     def windowDidResize__ (self, sender):
  92.     cv = sender.contentView()
  93.     sizep = cv.getContentSize__.pack_argument (0)
  94.     cv.getContentSize__ (sizep)
  95.     size = sizep.unpack()
  96.     self.text.setMinSize__ (sizep)
  97.     self.text.sizeTo____ (size[0], size[1])
  98.     self.text.sizeToFit()
  99.     return self
  100.     # end def
  101.     
  102. # end class
  103.  
  104. def main():
  105.     import getopt
  106.     import sys
  107.  
  108.     title = "Close this window to stop the application ;-)"
  109.  
  110.     optlist, args = getopt.getopt (sys.argv[1:], "t:", [ "title=" ])
  111.     for opt in optlist:
  112.     if opt[0] in [ 't', '--title' ]:
  113.         title = opt[1]
  114.     # end if
  115.     # end for
  116.     
  117.     if len (args) == 0:
  118.     import os
  119.     path = ObjC.runtime.OC_PythonBundle.mainBundle().directory()
  120.     filename = os.path.join (path, "ShellText.py")
  121.     else:
  122.     filename = args[0]
  123.     # end if
  124.  
  125.     st = ShellText (title)
  126.     st.loadMessageFromFile (filename)
  127.     st.run()
  128. # end def    
  129.  
  130. if __name__ == "__main__":
  131.     main()
  132. # end if
  133.     
  134. ##
  135. ## Local Variables:
  136. ## change-log-default-name:"../../../ChangeLog.PyObjC"
  137. ## End:
  138. ##
  139.