home *** CD-ROM | disk | FTP | other *** search
- #!/usr/local/bin/python
- #
- # Copyright (c) 1996 by Lele Gaifax. All Rights Reserved
- #
- # This file is part of the PyObjC package.
- #
- # $RCSfile: ShellText.py,v $
- # $Revision: 1.1.1.4 $
- # $Date: 1996/11/14 01:49:47 $
- #
- # Created Thu Oct 3 19:04:49 1996.
- #
-
- import ObjC
-
- # Generated by h2py from /usr/include/appkit/Window.h
- NX_PLAINSTYLE = 0
- NX_TITLEDSTYLE = 1
- NX_MENUSTYLE = 2
- NX_MINIWINDOWSTYLE = 3
- NX_MINIWORLDSTYLE = 4
- NX_TOKENSTYLE = 5
- NX_RESIZEBARSTYLE = 6
- NX_SIZEBARSTYLE = NX_RESIZEBARSTYLE
- NX_FIRSTWINSTYLE = NX_PLAINSTYLE
- NX_LASTWINSTYLE = NX_RESIZEBARSTYLE
- NX_NUMWINSTYLES = (NX_LASTWINSTYLE - NX_FIRSTWINSTYLE + 1)
- NX_CLOSEBUTTONMASK = 1
- NX_MINIATURIZEBUTTONMASK = 4
- NX_ICONWIDTH = 48.0
- NX_ICONHEIGHT = 48.0
- NX_TOKENWIDTH = 64.0
- NX_TOKENHEIGHT = 64.0
- NX_NORMALLEVEL = 0
- NX_FLOATINGLEVEL = 3
- NX_DOCKLEVEL = 5
- NX_SUBMENULEVEL = 10
- NX_MAINMENULEVEL = 20
- NX_MAXFRAMESTRINGLENGTH = 300
-
- NX_BUFFERED = 2
-
- class ShellText:
- def __init__ (self, title=None, frame=((150.0,750.0), (400.0, 400.0))):
- self.app = ObjC.runtime.Application()
- self.window = ObjC.runtime.Window (frame,
- NX_RESIZEBARSTYLE,
- NX_BUFFERED,
- NX_CLOSEBUTTONMASK,
- 0,
- init="initContent:style:backing:buttonMask:defer:")
- content = ObjC.runtime.ScrollView (frame, init="initFrame:")
- self.window.setContentView__ (content)
- if title:
- self.window.setTitle__ (title)
-
- self.text = ObjC.runtime.Text (frame, init="initFrame:")
- content.setDocView__ (self.text)
- content.setVertScrollerRequired__ (1)
- content.setHorizScrollerRequired__ (0);
- contentsizep = content.getContentSize__.pack_argument (0)
- content.getContentSize__ (contentsizep)
-
- self.text.setHorizResizable__ (0)
- self.text.setVertResizable__ (1)
- self.text.setMinSize__ (contentsizep)
- csize = contentsizep.unpack()
- self.text.sizeTo____ (csize[0], csize[1])
- self.text.setOpaque__ (1)
- self.text.setEditable__ (0)
- self.window.setDelegate__ (self)
- # end def
-
- def loadMessageFromFile (self, fname):
- s = ObjC.streams.openfile (fname)
- self.text.readText__ (s)
- self.text.sizeToFit()
-
- def run (self):
- self.window.orderFrontRegardless()
- self.window.display()
-
- self.app.run()
- # end def
-
- def windowWillClose__ (self, sender):
- self.app.terminate__ (sender)
- return self
- # end def
-
- def windowDidResize__ (self, sender):
- cv = sender.contentView()
- sizep = cv.getContentSize__.pack_argument (0)
- cv.getContentSize__ (sizep)
- size = sizep.unpack()
- self.text.setMinSize__ (sizep)
- self.text.sizeTo____ (size[0], size[1])
- self.text.sizeToFit()
- return self
- # end def
-
- # end class
-
- def main():
- import getopt
- import sys
-
- title = "Close this window to stop the application ;-)"
-
- optlist, args = getopt.getopt (sys.argv[1:], "t:", [ "title=" ])
- for opt in optlist:
- if opt[0] in [ 't', '--title' ]:
- title = opt[1]
- # end if
- # end for
-
- if len (args) == 0:
- import os
- path = ObjC.runtime.OC_PythonBundle.mainBundle().directory()
- filename = os.path.join (path, "ShellText.py")
- else:
- filename = args[0]
- # end if
-
- st = ShellText (title)
- st.loadMessageFromFile (filename)
- st.run()
- # end def
-
- if __name__ == "__main__":
- main()
- # end if
-
- ##
- ## Local Variables:
- ## change-log-default-name:"../../../ChangeLog.PyObjC"
- ## End:
- ##
-