Source Code for iHTML Environment Demo


# Get some basic modules

import sys,time,string

try:
    import ihPython  # This fails on very old versions.
except:
    pass

import ihBrowser, ihDoc, ihMarkup, ihURL

# Function to insert dynamic text into document.  Given an existing
# HTML tree and a dictionary mapping from names to HTML text, insert
# that text into the sections of the HTML tree marked by 
# tag pairs.

def insert_text(tree,dict):
    global ihMarkup
    #print 'ihMarkup module:', dir(ihMarkup)
    cursor = ihMarkup.NewHTMLCursor(tree)
    while cursor.MoveNextTag(ihMarkup.Tag.A):
	name = cursor.NodeAttr.ID
	if name and dict.has_key(name):
	    cursor.PasteAfter(ihMarkup.NewHTMLTree(dict[name]))
	elif type(name) == type("") and name[:13] == "IHTML_PYTHON:":
	    # Definitely a hack, but fun. :)
	    # [When we are able to delete markup nodes, we'll put the
	    # program inside the  group, evaluate it, and replace
	    # it with the results.  And -that- will be cool. ;)]
	    try:
		cursor.PasteAfter(ihMarkup.NewHTMLTree(eval(name[13:])))
	    except:
		cursor.PasteAfter(ihMarkup.NewHTMLTree(
		    str(sys.get_exception())))

class ihMain(ihDoc.Document):

    def get_cap(self,name):
	cap = getattr(self.Capabilities,name)
	if( cap ):
	    return "Yes"
	else:
	    return "No"

    def __init__(self,**args):

        apply(ihDoc.Document.__init__,(self,),args)

	# For quick and easy reference
	dochtml = self.VisHTMLTree

	# Insert data into the document

	# Pick a picture based on the host name
	user_name = ihBrowser.UserName
	host_name = ihBrowser.HostName
	disp_pic = "s_jazzfromhell.gif"
	if host_name == "nwacse-h1r5e" or host_name == "nwacse-h4r5e":
	    disp_pic = "s_manfromutopia.gif"
	elif host_name == "nwacse-h2r5e" or host_name == "nwacse-h5r5e":
	    disp_pic = "s_yellowsharkback.gif"
	elif host_name == "nwacse-h3r5e":
	    disp_pic = "s_youarewhatyouis.gif"
	if self.Capabilities.disp_color > 0:
	    color_disp = "Yes (" + `self.Capabilities.disp_color` \
			 + " distinct pens)"
	else:
	    color_disp = "No"
	if self.Capabilities.disp_true > 0:
	    true_disp = "Yes (" + `self.Capabilities.disp_true` + \
			" bits per pixel)"
	else:
	    true_disp = "No"

	ih_version = '0'
	ih_revision = '0'
	ih_subbuild = '0'
	ih_builddate = '?'

	try:
	    ih_version = str(ihPython.Version)
	    ih_revision = str(ihPython.Revision)
	    ih_subbuild = str(ihPython.SubBuild)
	    ih_builddate = ihPython.BuildDate
	except:
	    pass

	insert_text(dochtml,
		    { "IH_VERSION": str(ihBrowser.IHVersion),
		      "IH_REVISION": str(ihBrowser.IHRevision),
		      "IH_SUBBUILD": str(ihBrowser.IHSubBuild),
		      "BR_NAME": str(ihBrowser.BRFullName),
		      "BR_CODE": str(ihBrowser.BRName),
		      "BR_VERSION": str(ihBrowser.BRVersion),
		      "BR_REVISION": str(ihBrowser.BRRevision),
		      "BUILDDATE": str(ihBrowser.BuildDate),
		      "PY_VERSION": ih_version,
		      "PY_REVISION": ih_revision,
		      "PY_SUBBUILD": ih_subbuild,
		      "PY_BUILDDATE": ih_builddate,
		      "PY_LANGVER": sys.version,
		      "PY_LANGCOPY": sys.copyright,
		      "PY_PLATFORM": sys.platform,
		      "PY_MAXINT": str(sys.maxint),
		      "PY_MODULES": str(sys.builtin_module_names),
		      "USER_NAME": ihBrowser.UserName,
		      "USER_MACHINE": ihURL.GetHostName() + " (" \
		          + ihURL.GetHostByName(ihURL.GetHostName()) \
		          + ")",
		      "SOCKETS": self.get_cap("sockets"),
		      "MOSAIC": self.get_cap("mosaic"),
		      "TEXT_DISP": self.get_cap("disp_text"),
		      "GFX_DISP": self.get_cap("disp_graphics"),
		      "COLOR_DISP": color_disp,
		      "TRUE_DISP": true_disp,
		      "VIEW_WIDTH": str(self.ViewWidth),
		      "VIEW_HEIGHT": str(self.ViewHeight),
		      "DISP_PIC": '' + disp_pic + ''
		      } )

	self.ShowProgress()

	# Display the document.

	self.VisHTMLTree = dochtml
	self.Reformat()

__export__ = ['ihMain']

_________.oo_Q_Q_oo.____________________________________________
Dianne Kyra Hackborn <hackbod@angryredplanet.com>
Last modified: Wed Aug 14 14:54:38 PDT 1996

This web page and all material contained herein is Copyright (c) 1997 Dianne Hackborn, unless otherwise noted. All rights reserved.