diff options
Diffstat (limited to 'itcl/iwidgets/doc/mkitclman')
-rw-r--r-- | itcl/iwidgets/doc/mkitclman | 320 |
1 files changed, 320 insertions, 0 deletions
diff --git a/itcl/iwidgets/doc/mkitclman b/itcl/iwidgets/doc/mkitclman new file mode 100644 index 00000000000..cbcd1dbb72e --- /dev/null +++ b/itcl/iwidgets/doc/mkitclman @@ -0,0 +1,320 @@ +#!/bin/sh +# \ + exec itkwish "$0" ${1+"$@"} +# +# mkitclman "4 Dec 1995" +# mkitclman - generate a man page from an itcl class +# +# SYNOPSIS +# mkitclman classfile +# +# DESCRIPTION +# Reads an [incr Tcl] or [incr Tk] class file as input, and outputs nroff. +# mkitclman generates a standard format used for [incr Widget] classes. It +# locates the class name, inheritance to one level, widget specific options, +# and widget specific methods. Areas that the script cannot handle it +# places and uppercased name delimited by leading and trailing '_' characters. +# +# [incr Tcl/Tk] 2.0 is the supported class format. +# +# CAVEATS +# mkitlcman does not work with normal Tk or Tcl script files. +# It expects only one class per file. In addition, it does not work on +# namespace files. + +proc init { } { + global _className + global _inheritClass + global _publicMethod + global _publicVariable + global _protectedMethod + global _protectedVariable + global _privateMethod + global _privateVariable + global _options + + set _className {} + set _inheritClass {} + +} +proc namespace { args } { + global _className + + set _className [lindex $args 0] + set classBody [lindex $args 1] + + eval $classBody +} +proc class { args } { + global _className + + set _className [lindex $args 0] + set classBody [lindex $args 1] + + eval $classBody +} +proc itk_option { action switch args } { + global _options + + if { $action == "define" } { + set _options($switch) $args + } +} +proc inherit { inheritClass } { + global _inheritClass + set _inheritClass $inheritClass +} + +# default is public method +proc method { name args } { + global _publicMethod + + set _publicMethod($name) $args +} + +# pick up arrays later... +proc common { name args } { + global _commonVariable + + # set to defaults + set _commonVariable($name) $args +} + +proc public { type args } { + global _publicMethod + global _publicVariable + + switch $type { + method { + set _publicMethod([lindex $args 0]) [lindex $args 1] + } + variable { + # _publicVariable(varName) = defaultValue + set _publicVariable([lindex $args 0]) [lindex $args 1] + } + } +} + +proc protected { type args } { + global _protectedMethod + global _protectedVariable + + switch $type { + method { + # _protectedMethod(methodName) = argList + set _protectedMethod([lindex $args 0]) [lrange $args 1 end] + } + variable { + # _protectedVariable(varName) = defaultValue + set _protectedVariable([lindex $args 0]) [lindex $args 1] + } + } +} + +proc private { type args } { + global _privateMethod + global _privateVariable + + switch $type { + method { + # _privateMethod(methodName) = argList + set _privateMethod([lindex $args 0]) [lrange $args 1 end] + } + variable { + # _privateVariable(varName) = defaultValue + set _privateVariable([lindex $args 0]) [lindex $args 1] + } + } +} + +proc body { args } { +} + +proc configbody { args } { +} + +proc destructor { args } { +} +proc constructor { args } { +} + +proc gen { } { + global _className + global _classBody + global _inheritClass + global _publicMethod + global _publicVariable + global _protectedMethod + global _protectedVariable + global _privateMethod + global _privateVariable + global _methodSection + global _optionSection + global _manpage + global _optionManFmt + global _methodManFmt + global _method + global _options + global _optionSwitch + global _optionName + global _optionClass + + if { $_inheritClass != {} } { + set _inheritClass "$_inheritClass <-" + } + set _optionManFmt {} + set _methodManFmt {} + set _methodArgs {} + foreach pbv [lsort [array names _publicVariable]] { + set _optionSwitch "-$pbv" + set _optionName $pbv + set _optionClass "[string toupper [string index $pbv 0]][string range $pbv 1 end]" + lappend _optionManFmt [subst -nobackslash -nocommand $_optionSection] + } + + foreach opt [lsort [array names _options]] { + set _optionSwitch $opt + set _optionName [lindex $_options($opt) 0] + set _optionClass [lindex $_options($opt) 1] + lappend _optionManFmt [subst -nobackslash -nocommand $_optionSection] + } + foreach pbm [lsort [array names _publicMethod]] { + set _method $pbm + eval set _methodArgs [list $_publicMethod($pbm)] + lappend _methodManFmt [subst -nobackslash -nocommand $_methodSection] + } + foreach ptm [lsort [array names _protectedMethod]] { + } + foreach ptv [lsort [array names _protectedVariable]] { + } + foreach pvm [lsort [array names _privateMethod]] { + } + foreach pvv [lsort [array names _privateVariable]] { + } + + set _methodManFmt [join $_methodManFmt " "] + set _optionManFmt [join $_optionManFmt " "] + + set _manpage [subst -nobackslash -nocommand $_manpage] + + puts $_manpage +} + +set _manpage { +'\" +'\" Copyright (c) _AUTHOR_ +'\" +'\" See the file "license.terms" for information on usage and redistribution +'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. +'\" +'\" @(#) $_className.n +'/" +.so man.macros +.HS $_className iwid +.BS +'\" Note: do not modify the .SH NAME line immediately below! +'\" +'\" +.SH NAME +$_className \- _NAME_DESCRIPTION_ +.SH SYNOPSIS +\fB$_className\fI \fIpathName\fR ?\fIoptions\fR? +.SH "INHERITANCE" +$_inheritClass $_className +.SH "STANDARD OPTIONS" +.LP +.nf +.ta 4c 8c 12c +_STANDARD_OPTIONS_ +.fi +.LP +See the "options" manual entry for details on the standard options. +.SH "ASSOCIATED OPTIONS" +.LP +.nf +.ta 4c 8c 12c +_ASSOCIATED_OPTIONS_ +.fi +.LP +See the "_ASSOCIATED_WIDGET_" widget manual entry for details on the above +associated options. +.SH "INHERITED OPTIONS" +.LP +.nf +.ta 4c 8c 12c +_INHERITED_OPTIONS_ +.fi +.LP +See the "_INHERITED_WIDGET_" class manual entry for details on the inherited options. +.SH "WIDGET-SPECIFIC OPTIONS" +.LP +$_optionManFmt +.BE +.SH DESCRIPTION +.PP +_DESCRIPTION_ +.SH "METHODS" +.PP +The \fB$_className\fR command creates a new Tcl command whose +name is \fIpathName\fR. This +command may be used to invoke various +operations on the widget. It has the following general form: +.DS C +\fIpathName option \fR?\fIarg arg ...\fR? +.DE +\fIOption\fR and the \fIarg\fRs +determine the exact behavior of the command. The following +commands are possible for $_className widgets: +.SH "ASSOCIATED METHODS" +.LP +.nf +.ta 4c 8c 12c +_ASSOCIATED_METHODS_ +.fi +.LP +See the "_ASSOCIATED_WIDGET_" manual entry for details on the standard methods. +.SH "WIDGET-SPECIFIC METHODS" +$_methodManFmt +.SH "COMPONENTS" +.LP +.nf +Name: \fB_COMPONENT_NAME_\fR +Class: \fB_COMPONENT_CLASS_\fR +.fi +.IP +_COMPONENT_DESCRIPTION_ +See the "_COMPONENT_TYPE_" widget manual entry for details on the _COMPONENT_NAME_ component item. +.fi +.SH EXAMPLE +.DS +_EXAMPLE_CODE_ +.DE +.SH AUTHOR +_AUTHOR_ +.SH KEYWORDS +_KEYWORDS_ +} + +set _optionSection { +.nf +Name: \fB$_optionName\fR +Class: \fB$_optionClass\fR +Command-Line Switch: \fB$_optionSwitch\fR +.fi +.IP +_OPTION_DESCRIPTION_ +.LP +} + +set _methodSection { +.TP +\fIpathName\fR \fB$_method\fR \fI$_methodArgs\fR +_METHOD_DESCRIPTION_ +} + +# Add these two lines up into the man page above to enable + +init +source [lindex $argv 0] +gen +exit |