<HTML> <HEAD><TITLE>Widget</TITLE></HEAD> <BODY BGCOLOR=white> <IMG SRC="constr.gif" WIDTH="40" HEIGHT="40"> Under construction ...<BR> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Widget</B> - The Widget base class </DD></DL> <DL> <DT><I><A HREF="#wc">COMMAND</A></I></DT> <DD>Widget::<A HREF="#addmap"><B>addmap</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DD> <DD>Widget::<A HREF="#bwinclude"><B>bwinclude</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> ?<I>arg...</I>? </DD> <DD>Widget::<A HREF="#cget"><B>cget</B></A> <I>path</I> <I>option</I> </DD> <DD>Widget::<A HREF="#configure"><B>configure</B></A> <I>path</I> <I>options</I> </DD> <DD>Widget::<A HREF="#declare"><B>declare</B></A> <I>class</I> <I>optlist</I> </DD> <DD>Widget::<A HREF="#destroy"><B>destroy</B></A> <I>path</I> </DD> <DD>Widget::<A HREF="#focusNext"><B>focusNext</B></A> <I>w</I> </DD> <DD>Widget::<A HREF="#focusOK"><B>focusOK</B></A> <I>w</I> </DD> <DD>Widget::<A HREF="#focusPrev"><B>focusPrev</B></A> <I>w</I> </DD> <DD>Widget::<A HREF="#generate-doc"><B>generate-doc</B></A> <I>dir</I> <I>widgetlist</I> </DD> <DD>Widget::<A HREF="#generate-widget-doc"><B>generate-widget-doc</B></A> <I>class</I> <I>iscmd</I> <I>file</I> </DD> <DD>Widget::<A HREF="#getoption"><B>getoption</B></A> <I>path</I> <I>option</I> </DD> <DD>Widget::<A HREF="#hasChanged"><B>hasChanged</B></A> <I>path</I> <I>option</I> <I>pvalue</I> </DD> <DD>Widget::<A HREF="#init"><B>init</B></A> <I>class</I> <I>path</I> <I>options</I> </DD> <DD>Widget::<A HREF="#setoption"><B>setoption</B></A> <I>path</I> <I>option</I> <I>value</I> </DD> <DD>Widget::<A HREF="#subcget"><B>subcget</B></A> <I>path</I> <I>subwidget</I> </DD> <DD>Widget::<A HREF="#syncoptions"><B>syncoptions</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DD> <DD>Widget::<A HREF="#tkinclude"><B>tkinclude</B></A> <I>class</I> <I>tkwidget</I> <I>subpath</I> ?<I>arg...</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> The <B>Widget</B> namespace handle data associated to all BWidget and provide commands to easily define BWidget. <BR>For commands can be used to define a BWidget: <B>tkinclude</B>, <B>bwinclude</B>, <B>declare</B>, <B>addmap</B> and <B>syncoptions</B>. Here is the definition of <A HREF="ComboBox.html">ComboBox</A> widget: <BR><BR> <CENTER> <TABLE BORDER=2 CELSPACING=2 WIDTH=80%> <TR><TD><PRE> namespace eval ComboBox { <FONT COLOR=red><I># We're using ArrowButton, Entry and LabelFrame</I></FONT> ArrowButton::use Entry::use LabelFrame::use <FONT COLOR=red><I># Include resources of LabelFrame</I></FONT> Widget::bwinclude ComboBox LabelFrame .labf \ rename {-text -label} \ remove {-focus} \ prefix {label -justify -width -anchor -height -font} \ initialize {-relief sunken -borderwidth 2} <FONT COLOR=red><I># Include resources of Entry</I></FONT> Widget::bwinclude ComboBox Entry .e \ remove {-relief -bd -borderwidth -bg -fg} \ rename {-foreground -entryfg -background -entrybg} <FONT COLOR=red><I># Declare new resources</I></FONT> Widget::declare ComboBox { {-height TkResource 0 0 listbox} {-values String "" 0} {-modifycmd String "" 0} {-postcommand String "" 0} } <FONT COLOR=red><I># Map resources to subwidget</I></FONT> Widget::addmap ComboBox "" :cmd {-background {}} Widget::addmap ComboBox ArrowButton .a \ {-foreground {} -background {} -disabledforeground {} -state {}} <FONT COLOR=red><I># Synchronize subwidget options</I></FONT> Widget::syncoptions ComboBox Entry .e {-text {}} Widget::syncoptions ComboBox LabelFrame .labf {-label -text -underline {}} proc use {} {} }</PRE> </TD></TR> </TABLE></CENTER> </P> <HR WIDTH="50%"><BR> <B><A NAME="wc">COMMAND</A></B><BR> <DL><DT><A NAME="addmap">Widget::<B>addmap</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DT><DD> This command map some resources to subwidget. Mapped resources automatically configure subwidget when widget is configured. <UL> <LI><I>class</I> is the class of the new BWidget <LI><I>subclass</I> is the class the subwidget (BWidget class, e.g Entry, or empty for Tk widget) <LI><I>subpath</I> is the path of the subwidget <LI><I>options</I> is the list <I>{option realres ...}</I> of options to map to subwidget </UL> </DD></DL> <DL><DT><A NAME="bwinclude">Widget::<B>bwinclude</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> ?<I>arg...</I>? </DT><DD> This command includes into a new BWidget the resources of another BWidget. Arguments are: <UL> <LI><I>class</I> class of the new widget <LI><I>subclass</I> class name of the BWidget to be included <LI><I>subpath</I> path of the widget to configure when BWidget is configured <LI><I>options</I> is: <UL> <LI><I><B>include</B> {option option ...}</I> <BR>list of options to include (all if not defined) <LI><I><B>remove</B> {option option ...}</I> <BR> list of options to remove <LI><I><B>rename</B> {option name option name ...}</I> <BR>list of options to rename <LI><I><B>prefix</B> {prefix option option ...}</I> <BR>pefix all <I>option</I> by <I>prefix</I> <LI><I><B>initialize</B> {option value option value ...}</I> <BR>default value of options <LI><I><B>readonly</B> {option value option value ...}</I> <BR>new readonly flag </UL></UL> </DD></DL> <DL><DT><A NAME="cget">Widget::<B>cget</B></A> <I>path</I> <I>option</I> </DT><DD> Returns the value of <I>option</I> of BWidget <I>path</I>. <B>cget</B> tests the option existence and takes care of synchronization with subwidget. Typically called by the BWidget <B>cget</B> command. </DD></DL> <DL><DT><A NAME="configure">Widget::<B>configure</B></A> <I>path</I> <I>options</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="declare">Widget::<B>declare</B></A> <I>class</I> <I>optlist</I> </DT><DD> This command declare new resources for a BWidget. <UL> <LI><I>class</I> is class of the new widget <LI><I>options</I> is the list describing new options. Each new option is a list <B>{option type value ro ?args?}</B> where: <UL> <LI><I>option</I> is the name of the option <LI><I>type</I> is the type of the option <LI><I>value</I> is the default value of the option <LI><I>ro</I> is the readonly flag of the option <LI><I>args</I> depends on type </UL></UL> <BR> <I>type</I> can be: <BR> <DL> <DT><B>TkResource</B></DT> <DD> <I>value</I> of <I>option</I> denotes a resource of a Tk widget. <I>args</I> must be <I>class</I> or <I>{class realoption}</I>. <I>class</I> is the creation command of the Tk widget, e.g. <B>entry</B>. The second form must be used if <I>option</I> has not the same name in Tk widget, but <I>realoption</I>. <BR>If <I>value</I> is empty, it is initialized to the default value of the Tk widget. </DD> <DT><B>BwResource</B></DT> <DD> <I>value</I> of <I>option</I> denotes a resource of a BWidget. <I>args</I> must be <I>class</I> or <I>{class realoption}</I>. <I>class</I> is the name of the namespace of the BWidget, e.g. <B>LabelFrame</B>. The second form must be used if <I>option</I> has not the same name in BWidget, but <I>realoption</I>. <BR>If <I>value</I> is empty, it is initialized to the default value of the BWidget. </DD> <DT><B>Int</B></DT> <DD><I>value</I> of <I>option</I> is an integer. <I>args</I> can be <I>{?min? ?max?}</I> to force it to be in a range. The test is <I>[expr $option>$min] && [expr $option<$max]</I> so if args is <I>{0 10}</I>, value must be beetween 0 and 10 exclude, if <I>args</I> is <I>{=0 =10}</I> , value must be beetween 0 and 10 include. </DD> <DT><B>Boolean</B></DT> <DD><I>value</I> of <I>option</I> is a boolean. True values can be <B>1</B>, <B>true</B> or <B>yes</B>. False values can be <B>0</B>, <B>false</B> or <B>no</B>. <B>Widget::cget</B> always return 0 or 1. </DD> <DT><B>Enum</B></DT> <DD> <I>value</I> of <I>option</I> is a element of a enumeration. <I>args</I> must be the list of enumeration, e.g. <I>{top left bottom right}</I>. </DD> <DT><B>Flag</B></DT> <DD> <I>value</I> of <I>option</I> is a combination of a set of chars. <I>args</I> must be a string defining the set. </DD> <DT><B>String</B></DT> <DD> <DD><I>value</I> of <I>option</I> is any uncontrolled string. </DD> <DT><B>Synonym</B></DT> <DD> <DD><I>option</I> is a synonym of option <I>args</I>. <I>value</I> has no effect here. </DD> </DL> </DD></DL> <DL><DT><A NAME="destroy">Widget::<B>destroy</B></A> <I>path</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="focusNext">Widget::<B>focusNext</B></A> <I>w</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="focusOK">Widget::<B>focusOK</B></A> <I>w</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="focusPrev">Widget::<B>focusPrev</B></A> <I>w</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="generate-doc">Widget::<B>generate-doc</B></A> <I>dir</I> <I>widgetlist</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="generate-widget-doc">Widget::<B>generate-widget-doc</B></A> <I>class</I> <I>iscmd</I> <I>file</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="getoption">Widget::<B>getoption</B></A> <I>path</I> <I>option</I> </DT><DD> Returns the value of <I>option</I> of BWidget <I>path</I>. This command does not test option existence, does not handle synonym and does not take care of synchronization with subwidget. </DD></DL> <DL><DT><A NAME="hasChanged">Widget::<B>hasChanged</B></A> <I>path</I> <I>option</I> <I>pvalue</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="init">Widget::<B>init</B></A> <I>class</I> <I>path</I> <I>options</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="setoption">Widget::<B>setoption</B></A> <I>path</I> <I>option</I> <I>value</I> </DT><DD> Set the value of <I>option</I> of BWidget <I>path</I> without option test, subwidget mapping, synonym handling and does not set the modification flag. </DD></DL> <DL><DT><A NAME="subcget">Widget::<B>subcget</B></A> <I>path</I> <I>subwidget</I> </DT><DD> Returns the list of all option/value of BWidget <I>path</I> that are mapped to <I>subwidget</I>. </DD></DL> <DL><DT><A NAME="syncoptions">Widget::<B>syncoptions</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DT><DD> This command synchronize options value of a subwidget. Used when an option of a subwidget is modified out of the BWidget <B>configure</B> command. <UL> <LI><I>class</I> is the class of the new BWidget <LI><I>subclass</I> is the class the subwidget (BWidget class, e.g Entry, or empty for Tk widget) <LI><I>subpath</I> is the path of the subwidget <LI><I>options</I> is the list <I>{option realres ...}</I> of options to synchronize with subwidget </UL> </DD></DL> <DL><DT><A NAME="tkinclude">Widget::<B>tkinclude</B></A> <I>class</I> <I>tkwidget</I> <I>subpath</I> ?<I>arg...</I>? </DT><DD> This command includes into a new BWidget the resources of a Tk widget. Arguments are: <UL> <LI><I>class</I> class of the new widget <LI><I>tkwidger</I> command name of the Tk widget to be included <LI><I>subpath</I> path of the widget to configure when BWidget is configured <LI><I>options</I> is: <UL> <LI><I><B>include</B> {option option ...}</I> <BR>list of options to include (all if not defined) <LI><I><B>remove</B> {option option ...}</I> <BR>list of options to remove <LI><I><B>rename</B> {option name option name ...}</I> <BR>list of options to rename <LI><I><B>prefix</B> {prefix option option ...}</I> <BR>pefix all <I>option</I> by <I>prefix</I> <LI><I><B>initialize</B> {option value option value ...}</I> <BR>default value of options <LI><I><B>readonly</B> {option value option value ...}</I> <BR>new readonly flag </UL></UL> </DD></DL> </BODY></HTML>