This document should outline the details you need to understand Webware and WebKit internals, and assist in becoming a more advanced Webware programmer.
Webware developers are requested to observe the rules defined in the Webware Style Guidelines.
Each plugin is a Python Package. WebKit finds plugins using the PlugIns and PluginDirs -- see Configuration. See also the Python tutorial on packages and the PlugIn.py doc string.
A plug-in must have __init__.py and Properties.py files. You can disable a specific plug-in by placing a dontload file in it.
__init.py__ must contain a function like:
def InstallInWebKit(appServer): pass
The function doesn't need to do anything, but this gives it the opportunity to do something with the AppServer -- for instance, the PSP plugin uses AppServer.addServletFactory to add a handler for .psp files.
The Properties.py file should contain a number of assignments:
name = "Plugin name" version = (1, 0, 0) docs = [{'name': 'Quick Start Guide', 'file': 'QuickStart.html'}, {'name': 'Reference Guide, 'file': 'Reference.html'}] status = 'beta' requiredPyVersion = (2, 0, 0) requiredOpSys = 'posix' synopsis = """A paragraph-long description of the plugin""" WebKitConfig = { 'examplePages': [ 'Example1', 'ComplexExample', ] } def willRunFunc(): if softwareNotInstalled: return "some message to that effect" else: return None
The documents (e.g. QuickStart.html) should be located in a Docs/ subdirectory. The example pages go in an Examples/ subdirectory.
A plugin who's requiredPyVersion or requiredOpSys aren't satisfied will simply be ignored. requiredOpSys should be something returned by os.name, like posix or nt. Or you can define a function willRunFunc to test. If there aren't requirements you can leave these variables and functions out.