diff options
Diffstat (limited to 'libXaw/specs/Sme.xml')
-rw-r--r-- | libXaw/specs/Sme.xml | 207 |
1 files changed, 207 insertions, 0 deletions
diff --git a/libXaw/specs/Sme.xml b/libXaw/specs/Sme.xml new file mode 100644 index 000000000..2d3d2f5f7 --- /dev/null +++ b/libXaw/specs/Sme.xml @@ -0,0 +1,207 @@ +<sect1 id="Sme_Object"> +<title>Sme Object</title> +<para> +<!-- .LP --> +<!-- .XS --> +<!-- Sme Object --> +<!-- .XE --> +<!-- .IN "Sme object" "" "@DEF@" --> +<!-- .sp --> +<literallayout class="monospaced"> +<!-- .TA 2.0i --> +<!-- .ta 2.0i --> +Application Header file <X11/Xaw/Sme.h> +<!-- .IN "Sme.h" "" --> +Class Header file <X11/Xaw/SmeP.h> +<!-- .IN "SmeP.h" "" --> +Class smeObjectClass +<!-- .IN "smeObjectClass" "" --> +Class Name Sme +<!-- .IN "Sme object" "class name" --> +Superclass RectObj +</literallayout> +<!-- .sp --> +</para> +<para> +<!-- .LP --> +The Sme object is the base class for all menu entries. While this +object is mainly intended to be subclassed, it may be used in a menu to +add blank space between menu entries. +</para> +<sect2 id="sme_resources"> +<title>Resources</title> +<!-- .IN "SmeLine object" "resources" --> +<para> +<!-- .LP --> +The resources associated with the SmeLine object are defined in this +section, and affect only the single menu entry specified by this object. +There are no new resources added for this class, as it picks up all its +resources from the RectObj class. +</para> +<informaltable> + <tgroup cols='5' align='center'> + <colspec colname='c1'/> + <colspec colname='c2'/> + <colspec colname='c3'/> + <colspec colname='c4'/> + <colspec colname='c5'/> + <thead> + <row> + <entry>Name</entry> + <entry>Class</entry> + <entry>Type</entry> + <entry>Notes</entry> + <entry>Default Value</entry> + </row> + </thead> + <tbody> + <row> + <entry>ancestorSensitive</entry> + <entry>AncestorSensitive</entry> + <entry>Boolean</entry> + <entry></entry> + <entry>True</entry> + </row> + <row> + <entry>callback</entry> + <entry>Callback</entry> + <entry>XtCallbackList</entry> + <entry></entry> + <entry>NULL</entry> + </row> + <row> + <entry>destroyCallback</entry> + <entry>Callback</entry> + <entry>XtCallbackList</entry> + <entry></entry> + <entry>NULL</entry> + </row> + <row> + <entry>height</entry> + <entry>Height</entry> + <entry>Dimension</entry> + <entry></entry> + <entry>0</entry> + </row> + <row> + <entry>international</entry> + <entry>International</entry> + <entry>Boolean</entry> + <entry>C</entry> + <entry>False</entry> + </row> + <row> + <entry>sensitive</entry> + <entry>Sensitive</entry> + <entry>Boolean</entry> + <entry></entry> + <entry>True</entry> + </row> + <row> + <entry>width</entry> + <entry>Width</entry> + <entry>Dimension</entry> + <entry></entry> + <entry>1</entry> + </row> + </tbody> + </tgroup> +</informaltable> +<!-- .As --> +<!-- .Dc --> +<!-- .Hw --> + +<para> +Keep in mind that the SimpleMenu widget will force all menu items to +be the width of the widest entry. +<!-- .Ix Bold --> +<!-- .Se --> +</para> +</sect2> +<sect2 id="Subclassing_the_Sme_Object"> +<title>Subclassing the Sme Object</title> +<!-- .IN "Sme object" "subclassing" "@DEF" --> +<para> +<!-- .LP --> +<!-- .sp --> +To Create a new Sme object <emphasis remap='I'>class</emphasis> you will need to define three class methods. +These methods allow the SimpleMenu to highlight and unhighlight the +menu entry as the pointer cursor moves over it, as well as notify the +entry when the user has selected it. All of +these methods may be inherited from the Sme object, although the default +semantics are not very interesting. +</para> +<para> +<variablelist> + <varlistentry> + <term> + <function>Highlight</function>(\|) + </term> + <listitem> + <para> +<!-- .IN "Sme object" "Highlight method" --> +Called to put the menu entry into the highlighted state. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <function>Unhighlight</function>(\|) + </term> + <listitem> + <para> +<!-- .IN "Sme object" "Unhighlight method" --> +Called to return the widget to its normal (unhighlighted) state. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term> + <function>Notify</function>(\|) + </term> + <listitem> + <para> +<!-- .IN "Sme object" "Notify method" --> +Called when the user selects this menu entry. + </para> + </listitem> + </varlistentry> +</variablelist> +</para> +<para> +<!-- .LP --> +<!-- .sp --> +Other then these methods, creating a new object +is straight forward. Here is some information that may help you +avoid some common mistakes. +</para> +<orderedlist> + <listitem><para>Objects can be zero pixels high.</para></listitem> + <listitem> + <para> +Objects draw on their parent's window, therefore the Drawing dimensions +are different from those of widgets. For instance, y locations vary +from <function>y</function> to <function>y + height</function>, not <function>0</function> to <function>height</function>. + </para> + </listitem> + <listitem> + <para> +<!-- .IP 3) 3n --> +XtSetValues calls may come from the application while the Sme is highlighted, +and if the SetValues method returns True, will result in an expose event. +The SimpleMenu may later call the menu entry's <function>unhighlight</function> +procedure. However, due to the asynchronous nature of +X, the expose event generated by <function>XtSetValues</function> will come <emphasis remap='I'>after</emphasis> +this unhighlight. + </para> + </listitem> + <listitem> + <para> +Remember that your subclass of the Sme does not own the +window. Share the space with other menu entries, and refrain +from drawing outside the subclass's own section of the menu. + </para> + </listitem> +</orderedlist> +</sect2> +</sect1> |