aboutsummaryrefslogtreecommitdiff
path: root/libXaw/specs/CH1.xml
diff options
context:
space:
mode:
Diffstat (limited to 'libXaw/specs/CH1.xml')
-rw-r--r--libXaw/specs/CH1.xml725
1 files changed, 725 insertions, 0 deletions
diff --git a/libXaw/specs/CH1.xml b/libXaw/specs/CH1.xml
new file mode 100644
index 000000000..a4fb08c2d
--- /dev/null
+++ b/libXaw/specs/CH1.xml
@@ -0,0 +1,725 @@
+<chapter id="athena_widgets_and_the_intrinsics">
+<title>Athena Widgets and The Intrinsics</title>
+<para>
+The X Toolkit is made up of two distinct pieces, the Xt Intrinsics and a
+widget set. The Athena widget set is a sample implementation of a
+widget set built upon the Intrinsics. In the X Toolkit, a widget is the
+combination of an X window or subwindow and its associated input and
+output semantics.
+</para>
+<para>
+Because the Intrinsics provide the same basic functionality to all widget
+sets it may be possible to use widgets from the Athena widget set with
+other widget sets based upon the Intrinsics. Since widget sets may also
+implement private protocols, all functionality may not be available when
+mixing and matching widget sets. For information about the Intrinsics, see
+the <emphasis remap='I'>X Toolkit Intrinsics - C Language Interface</emphasis>.
+</para>
+<para>
+The Athena widget set is a library package layered on top of the Intrinsics
+and Xlib that provides a set of user interface tools sufficient to build
+a wide variety of applications. This layer extends the basic
+abstractions provided by X and provides the next layer of functionality
+primarily by supplying a cohesive set of sample widgets. Although the
+Intrinsics are a Consortium standard, there is no standard widget set.
+</para>
+
+<para>
+To the extent possible, the Intrinsics are "policy-free". The application
+environment and widget set, not the Intrinsics, define, implement, and
+enforce:
+</para>
+
+<itemizedlist>
+ <listitem><para>Policy</para></listitem>
+ <listitem><para>Consistency</para></listitem>
+ <listitem><para>Style</para></listitem>
+</itemizedlist>
+
+<para>
+Each individual widget implementation defines its own policy. The X Toolkit
+design allows for, but does not necessarily encourage, the free mixing
+of radically differing widget implementations.
+</para>
+
+<sect1 id="Introduction_to_the_tk">
+<title>Introduction to the X Toolkit</title>
+<para>
+<!-- .LP -->
+<!-- .XS -->
+<!-- Introduction to the X Toolkit -->
+<!-- .XE -->
+<!-- .IN "introduction" "" "@DEF@" -->
+The X Toolkit provides tools that simplify the design of
+application user interfaces in the X Window System programming environment.
+It assists application programmers by providing a set of common
+underlying user-interface functions. It also lets widget programmers
+modify existing widgets, by subclassing, or add new widgets. By using
+the X Toolkit in their applications, programmers can present a similar
+user interface across applications to all workstation users.
+</para>
+<para>
+<!-- .LP -->
+The X Toolkit consists of:
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A set of Intrinsics functions for building widgets
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+An architectural model for constructing widgets
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+A widget set for application programming
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+While the majority of the Intrinsics functions are intended
+for the widget programmer,
+a subset of the Intrinsics functions are to be used by application programmers
+(see <emphasis remap='I'>X Toolkit Intrinsics - C Language Interface</emphasis>).
+The architectural model lets the widget programmer design new widgets
+by using the Intrinsics and by combining other widgets.
+The application interface layers built on top of the X Toolkit include a
+coordinated set of widgets and composition policies.
+Some of these widgets and policies are specific to a single
+application domain, and others are common to a variety of
+applications.
+</para>
+<para>
+<!-- .LP -->
+The remainder of this chapter discusses the X Toolkit and Athena widget set:
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+Terminology
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Model
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Conventions used in this manual
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Format of the Widget Reference Chapters
+ </para>
+ </listitem>
+</itemizedlist>
+</sect1>
+<sect1 id="Terminology">
+<title>Terminology</title>
+<para>
+<!-- .LP -->
+<!-- .XS -->
+<!-- Terminology -->
+<!-- .XE -->
+</para>
+<para>
+<!-- .LP -->
+In addition to the terms already defined for X programming (see
+<emphasis remap='I'>Xlib - C Language Interface</emphasis>),
+the following terms are specific to the Intrinsics and Athena widget set
+and used throughout this document.
+</para>
+<para>
+<!-- .LP -->
+<function>Application programmer</function>
+<!-- .IN "application programmer" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A programmer who uses the X Toolkit to produce an application user interface.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Child</function>
+<!-- .IN "child" "" "@DEF" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A widget that is contained within another "parent" widget.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Class</function>
+<!-- .IN "class" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+The general group to which a specific object belongs.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Client</function>
+<!-- .IN "client" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A function that uses a widget in an application or for composing
+other widgets.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>FullName</function>
+<!-- .IN "FullName" "" "@DEF" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+The name of a widget instance appended to the full name of its parent.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Instance</function>
+<!-- .IN "instance" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A specific widget object as opposed to a general widget class.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Method</function>
+<!-- .IN "method" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A function or procedure implemented by a widget class.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Name</function>
+<!-- .IN "name" "widget" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+The name that is specific to an instance of a widget for a given client.
+This name is specified at creation time and cannot be modified.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Object</function>
+<!-- .IN "object" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A data abstraction consisting of private data and private and public
+functions that operate on the private data.
+Users of the abstraction can interact with the object only through calls
+to the object's public functions.
+In the X Toolkit,
+some of the object's public functions are called directly by the application,
+while others are called indirectly when the application calls the common
+Intrinsics functions.
+In general, if a function is common to all widgets,
+an application uses a single Intrinsics function to invoke the function for all
+types of widgets.
+If a function is unique to a single widget type,
+the widget exports the function.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Parent</function>
+<!-- .IN "parent" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A widget that contains at least one other ("child") widget.
+A parent widget is also known as a composite widget.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Resource</function>
+<!-- .IN "resource" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A named piece of data in a widget that can be set by a client,
+by an application, or by user defaults.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Superclass</function>
+<!-- .IN "superclass" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A larger class of which a specific class is a member.
+All members of a class are also members of the superclass.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>User</function>
+<!-- .IN "user" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A person interacting with a workstation.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Widget</function>
+<!-- .IN "widget" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+An object providing a user-interface abstraction (for example, a Scrollbar
+widget).
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Widget class</function>
+<!-- .IN "widget class" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+The general group to which a specific widget belongs,
+otherwise known as the type of the widget.
+ </para>
+ </listitem>
+</itemizedlist>
+<para>
+<!-- .LP -->
+<function>Widget programmer</function>
+<!-- .IN "widget programmer" "" "@DEF@" -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+A programmer who adds new widgets to the X Toolkit.
+ </para>
+ </listitem>
+</itemizedlist>
+</sect1>
+<sect1 id="Underlying_Model">
+<title>Underlying Model</title>
+<para>
+<!-- .LP -->
+<!-- .XS -->
+<!-- Underlying Model -->
+<!-- .XE -->
+<!-- .IN "underlying model" "" "@DEF@" -->
+The underlying architectural model is based on the following premises:
+<!-- .KS -->
+</para>
+<itemizedlist>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Every user-interface widget is associated with an X window.
+The X window ID for a widget is readily available from the widget.
+Standard Xlib calls can be used by widgets for many of their input and
+output operations.
+<!-- .KE -->
+<!-- .KS -->
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+The data for every widget is private to the widget and its subclasses.
+That is, the data is neither directly accessible
+nor visible outside of the module implementing the widget.
+All program interaction with the widget is performed by a set of operations
+(methods) that are defined for the widget.
+<!-- .KE -->
+<!-- .KS -->
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Widget semantics are clearly separated from widget layout geometry.
+Widgets are concerned with implementing specific user-interface
+semantics. They have little control over issues such as their size or
+placement relative to other widget peers. Mechanisms are provided for
+associating geometric managers with widgets and for widgets to make
+suggestions about their own geometry.
+<!-- .KE -->
+ </para>
+ </listitem>
+</itemizedlist>
+</sect1>
+<sect1 id="Conventions_Used_in_this_Manual">
+<title>Conventions Used in this Manual</title>
+<itemizedlist>
+ <listitem>
+ <para>
+<!-- .IN "conventions" "used in manual" "@DEF@" -->
+All resources available to the widgets are listed with each widget. Many
+of these are available to more than one widget class due to the object
+oriented nature of the Intrinsics. The new resources for each widget are
+listed in bold text, and the inherited resources are listed in plain text.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Global symbols are printed in <function>bold</function> and can be function names,
+symbols defined in include files, or structure names. Arguments are
+printed in <emphasis remap='I'>italics</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Each function is introduced by a general discussion that distinguishes
+it from other functions. The function declaration itself follows, and
+each argument is specifically explained. General discussion of the
+function, if any is required, follows the arguments. Where
+applicable, the last paragraph of the explanation lists the return values
+of the function.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+To eliminate any ambiguity between those arguments that you pass and
+those that a function returns to you, the explanations for all
+arguments that you pass start with the word <emphasis remap='I'>specifies</emphasis> or, in the
+case of multiple arguments, the word <emphasis remap='I'>specify</emphasis>. The explanations
+for all arguments that are returned to you start with the word
+<emphasis remap='I'>returns</emphasis> or, in the case of multiple arguments, the word
+<emphasis remap='I'>return</emphasis>. The explanations for all arguments that you can pass
+and are returned start with the words <emphasis remap='I'>specifies and returns</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+Any pointer to a structure that is used to return a value is
+designated as such by the <emphasis remap='I'>_return</emphasis> suffix as part of its name.
+All other pointers passed to these functions are used for reading
+only. A few arguments use pointers to structures that are used for
+both input and output and are indicated by using the <emphasis remap='I'>_in_out</emphasis>
+suffix.
+<!-- .IN "_return" "" "@DEF@" -->
+<!-- .IN "_in_out" "" "@DEF@" -->
+ </para>
+ </listitem>
+</itemizedlist>
+</sect1>
+<sect1 id="Format_of_the_Widget_Reference_Chapters">
+<title>Format of the Widget Reference Chapters</title>
+<para>
+<!-- .LP -->
+<!-- .IN "conventions" "chapter format" "@DEF@" -->
+<!-- .IN "chapter format" "" "@DEF@" -->
+The majority of this document is a reference guide for the Athena
+widget set. Chapters three through six give the programmer all
+information necessary to use the widgets. The layout of the chapters
+follows a specific pattern to allow the programmer to easily find the
+desired information.
+</para>
+<para>
+<!-- .LP -->
+The first few pages of every chapter give an overview of the widgets
+in that section. Widgets are grouped into chapters by functionality.
+<variablelist>
+ <varlistentry>
+ <term>
+ "Chapter <!-- xref -->
+ </term>
+ <listitem>
+ <para>
+Simple Widgets
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ "Chapter <!-- xref -->
+ </term>
+ <listitem>
+ <para>
+Menus
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ "Chapter <!-- xref -->
+ </term>
+ <listitem>
+ <para>
+Text Widgets
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ "Chapter <!-- xref -->
+ </term>
+ <listitem>
+ <para>
+Composite and Constraint Widget
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<para>
+<!-- .LP -->
+Following the introduction will be a description of each widget in that
+chapter. When no functional grouping is obvious the widgets are listed
+in alphabetical order, such as in chapters three and six.
+</para>
+<para>
+<!-- .LP -->
+The first section of each widget's description is a table that
+contains general information about this widget class. Here is the
+table for the Box widget, and an explanation of all the entries.
+<literallayout class="monospaced">
+<!-- .TA 2.0i -->
+<!-- .ta 2.0i -->
+<!-- .sp -->
+Application Header file &lt;X11/Xaw/Box.h&gt;
+Class Header file &lt;X11/Xaw/BoxP.h&gt;
+Class boxWidgetClass
+Class Name Box
+Superclass Composite
+<!-- .sp -->
+</literallayout>
+<variablelist>
+ <varlistentry>
+ <term>
+ <function>Application Header File</function>
+ </term>
+ <listitem>
+ <para>
+<!-- .IN "application header file" "" "@DEF@" -->
+This file must be included when an application uses this widget.
+It usually contains the class definition, and some resource macros.
+This is often called the ``public'' header file.
+<!-- .IN "class header file" "" "@DEF@" -->
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <function>Class Header File</function>
+ </term>
+ <listitem>
+ <para>
+This file will only be used by widget programmers. It will need to be
+included by any widget that subclasses this widget. This is often
+called the ``private'' header file.
+<!-- .IN "class" "" "@DEF@" -->
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <function>Class</function>
+ </term>
+ <listitem>
+ <para>
+This is the widget class of this widget. This global symbol is passed to
+<function>XtCreateWidget</function> so that the Intrinsics will know which type of widget
+to create.
+<!-- .IN "class name" "" "@DEF@" -->
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <function>Class Name</function>
+ </term>
+ <listitem>
+ <para>
+This is the resource name of this class. This name can be used in
+a resource file to match any widget of this class.
+<!-- .IN "superclass" "" -->
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <function>Superclass</function>
+ </term>
+ <listitem>
+ <para>
+This is the superclass that this widget class is descended from. If
+you understand how the superclass works it will allow you to more quickly
+understand what this widget does, since much of its functionality may be
+inherited from its superclass.
+<!-- .sp -->
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<para>
+<!-- .LP -->
+After this table follows a general description of the default behavior of
+this widget, as seen by the user. In many cases this functionality
+may be overridden by the application programmer, or by the user.
+</para>
+<para>
+<!-- .LP -->
+The next section is a table showing the
+name, class, type and default value of each resource that is available
+to this widget. There is also a column containing notes describing
+special restrictions placed upon individual resources.
+<!-- .IN "notes" "" "@DEF@" -->
+<!-- .IN "A, note" "" "@DEF@" -->
+<!-- .IN "D, note" "" "@DEF@" -->
+<!-- .IN "C, note" "" "@DEF@" -->
+<!-- .IN "R, note" "" "@DEF@" -->
+<variablelist>
+ <varlistentry>
+ <term>
+ A
+ </term>
+ <listitem>
+ <para>
+This resource may be automatically adjusted when another
+resource is changed.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ C
+ </term>
+ <listitem>
+ <para>
+This resource is only settable at widget creation time, and may not
+be modified with <function>XtSetValues</function>.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ D
+ </term>
+ <listitem>
+ <para>
+Do not modify this resource. While setting this resource will
+work, it can cause unexpected behavior. When this symbol appears
+there is another, preferred, interface provided by the X Toolkit.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ R
+ </term>
+ <listitem>
+ <para>
+This resource is READ-ONLY, and may not be modified.
+ </para>
+ </listitem>
+ </varlistentry>
+</variablelist>
+</para>
+<para>
+<!-- .LP -->
+After the resource table is a detailed description of every resource
+available to that widget. Many of these are redundant, but printing
+them with each widget saves page flipping. The names of the resources
+that are inherited are printed in plain text, while the names of the
+resources that are new to this class are printed in <function>bold</function>.
+If you have already read the description of the superclass you need
+only pay attention to the resources printed in bold.
+</para>
+<para>
+<!-- .LP -->
+For each composite widget there is a section on layout semantics that
+follows the resource description. This section will describe the
+effect of constraint resources on the layout of the children, as well
+as a general description of where it prefers to place its children.
+</para>
+<para>
+<!-- .LP -->
+Descriptions of default translations and action routines come next, for
+widgets to which they apply. The last item in each widget's
+documentation is the description of all convenience routines provided by
+the widget.
+</para>
+</sect1>
+<sect1 id="Input_Focus">
+<title>Input Focus</title>
+<!-- .XS -->
+<!-- Input Focus -->
+<!-- .XE -->
+<!-- .IN "input focus" "" "@DEF@" -->
+<!-- .IN "input" "" "@DEF@" -->
+<!-- .IN "XtNinput" "" "@DEF@" -->
+<para>
+<!-- .LP -->
+The Intrinsics define a resource on all Shell widgets that interact with
+the window manager called <function>input</function>. This resource requests the
+assistance of window manager in acquiring the input focus. The
+resource defaults to <function>False</function> in the Intrinsics, but is redefined to
+default to <function>True</function> when an application is using the Athena widget
+set. An application programmer may override this default and set the
+resource back to <function>False</function> if the application does not need the window
+manager to give it the input focus. See the
+<emphasis remap='I'>X Toolkit Intrinsics - C Language Interface</emphasis> for details
+on the <emphasis remap='I'>input</emphasis> resource.
+
+</para>
+</sect1>
+</chapter>