<!-- $XConsortium: ch07.sgm /main/12 1996/09/08 19:47:09 rws $ -->
<!-- (c) Copyright 1995 Digital Equipment Corporation. -->
<!-- (c) Copyright 1995 Hewlett-Packard Company. -->
<!-- (c) Copyright 1995 International Business Machines Corp. -->
<!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
<!-- (c) Copyright 1995 Novell, Inc. -->
<!-- (c) Copyright 1995 FUJITSU LIMITED. -->
<!-- (c) Copyright 1995 Hitachi. -->

<chapter id="RDMAP.optin.div.1">
<title id="RDMAP.optin.mkr.1">Optional Integration</title>
<para>The Common Desktop Environment components discussed in this chapter
enable you to leverage services provided by the desktop for achieving specialized
tasks.<indexterm><primary>optional integration &lt;$startrange></primary></indexterm><indexterm><primary>integration</primary><secondary>optional</secondary></indexterm><indexterm><primary>levels of integration</primary><secondary>optional &lt;$startrange></secondary></indexterm></para>
<informaltable id="RDMAP.optin.itbl.1" frame="All">
<tgroup cols="1">
<colspec colname="1" colwidth="4.0 in">
<tbody>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Common Desktop Environment Motif
Control Widgets64'--><xref role="JumpText" linkend="RDMAP.optin.mkr.2"></para></entry>
</row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Data Typing67'--><xref role="JumpText"
linkend="RDMAP.optin.mkr.3"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Action Invocation69'--><xref role="JumpText"
linkend="RDMAP.optin.mkr.4"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Workspace Manager70'--><xref role="JumpText"
linkend="RDMAP.optin.mkr.5"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Terminal Emulator Widget72'--><xref
role="JumpText" linkend="RDMAP.optin.mkr.6"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Text Editor Widget73'--><xref role="JumpText"
linkend="RDMAP.optin.mkr.7"></para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Calendar74'--><xref role="JumpText"
linkend="RDMAP.optin.mkr.8"></para></entry></row>
<row rowsep="1">
<entry><para>Information Manager ??</para></entry></row>
<row rowsep="1">
<entry><para><!--Original XRef content: 'Desktop KornShell (dtksh)76'--><xref
role="JumpText" linkend="RDMAP.optin.mkr.9"></para></entry></row></tbody>
</tgroup></informaltable>
<note>
<para>In addition to incorporating any components described in this section
into your application, you should also follow the basic integration steps
outlined in <!--Original XRef content: 'Chapter&numsp;5, &xd2;Basic Application
Integration'--><xref role="ChapNumAndTitle" linkend="RDMAP.BIntg.mkr.1">.
The components discussed in <!--Original XRef content: 'Chapter&numsp;6,
&xd2;Recommended Integration'--><xref role="ChapNumAndTitle" linkend="RDMAP.recin.mkr.1">,
are critical to making your application highly integrated with the desktop.
</para>
</note>
<para>For more information on optional integration, see the <emphasis>Programmer's
Guide</emphasis>.</para>
<sect1 id="RDMAP.optin.div.2">
<title id="RDMAP.optin.mkr.2">Common Desktop Environment Motif Control Widgets</title>
<para>The Common Desktop Environment Motif<indexterm><primary>widget</primary>
<secondary>Common Desktop Environment &lt;$startrange></secondary></indexterm> control widgets are designed to
ease porting<indexterm><primary>OPEN LOOK</primary></indexterm> OPEN LOOK
and<indexterm><primary>Microsoft Windows</primary></indexterm> Microsoft
Windows applications to the Common Desktop Environment by providing equivalent
functionality in Common Desktop Environment Motif. The Common Desktop Environment
Motif widgets library <command>libDtWidget</command> contains widgets and
functions that are used to provide common functionality across all Common
Desktop Environment applications. The widgets provided include:</para>
<itemizedlist remap="Bullet1"><listitem><para>Text field and arrow button
widget (<filename>DtSpinBox)<indexterm><primary>text field and arrow button
widget (DtSpinBox)</primary></indexterm><indexterm><primary>DtSpinBox</primary>
</indexterm><indexterm><primary>Common Desktop Environment widgets</primary>
<secondary>DtSpinBox</secondary></indexterm></filename></para>
</listitem></itemizedlist>
<figure>
<title>Example of text field and arrow button widget (<command>DtSpinBox</command>)</title>
<graphic id="RDMAP.optin.grph.1" entityref="RDMAP.optin.fig.1"></graphic>
</figure>
<itemizedlist remap="Bullet1"><listitem><para>Text field and list box widget
(<filename>DtComboBox)<indexterm><primary>text field and list box widget (DtComboBox)</primary></indexterm><indexterm><primary>DtComboBox</primary></indexterm><indexterm>
<primary>Common Desktop Environment widgets</primary><secondary>DtComboBox</secondary></indexterm></filename></para>
</listitem></itemizedlist>
<figure>
<title>Examples of text field and list box widget (<command>DtComboBox</command>)</title>
<graphic id="RDMAP.optin.grph.2" entityref="RDMAP.optin.fig.2"></graphic>
<graphic id="RDMAP.optin.grph.4" Entityref="RDMAP.optin.fig.4"></graphic>
</figure>
<itemizedlist remap="Bullet1"><listitem><para>Menu button widget
(<filename>DtMenuButton)<indexterm><primary>menu button widget (DtMenuButton)</primary>
</indexterm><indexterm><primary>DtMenuButton</primary></indexterm><indexterm>
<primary>Common Desktop Environment widgets</primary><secondary>DtMenuButton</secondary></indexterm></filename></para>
</listitem></itemizedlist>
<figure>
<title>Example of menu button widget (<command>DtMenuButton</command>)</title>
<graphic id="RDMAP.optin.grph.3" entityref="RDMAP.optin.fig.3"></graphic>
</figure>
<para>The Common Desktop Environment Motif Widget library <command>libDtWidget</command> supports drivability between Common Desktop Environment applications
and legacy OPEN LOOK applications. That is, it enables you to write applications
that operate the same way OPEN LOOK applications do, in areas such as cut,
copy, paste, and mouse-button functionality.</para>
<note>
<para>The Common Desktop Environment supports all<indexterm><primary>Motif</primary></indexterm><indexterm><primary>widget</primary><secondary>Motif</secondary></indexterm> Motif widgets.</para>
</note>
<table id="RDMAP.optin.tbl.1" frame="Topbot">
<title>Common Desktop Environment Control Widgets</title>
<tgroup cols="2" colsep="0" rowsep="0">
<colspec colwidth="143*">
<colspec colwidth="313*">
<thead>
<row><entry align="left" valign="bottom"><para><literal>Widget Name</literal></para></entry>
<entry align="left" valign="bottom"><para><literal>Description</literal></para></entry>
</row></thead>
<tbody>
<row>
<entry align="left" valign="top"><para><command>DtSpinBox</command></para></entry>
<entry align="left" valign="top"><para><command>TextField</command> widget
with additional controls for incrementing and decrementing numeric values,
or browsing through and selecting from a list of text strings</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><command>DtComboBox</command></para></entry>
<entry align="left" valign="top"><para>Combination of <command>TextField</command>
and pop-up List widgets that provides a list of valid choices for the <command>TextField</command></para></entry></row>
<row>
<entry align="left" valign="top"><para><command>DtMenuButton</command></para></entry>
<entry align="left" valign="top"><para>Command widget that provides menu cascading
functionality of an <command>XmCascadeButton</command> widget outside of
a Menu Bar, or a Menu Pane (a pull-down menu, a pop-up menu, or an option
menu)</para></entry></row></tbody></tgroup></table>
<sect2 id="RDMAP.optin.div.4">
<title>Library and Header Files<indexterm><primary>Common Desktop Environment
widgets</primary><secondary>library and header files</secondary></indexterm></title>
<para>The library <command>libDtWidget</command> provides access to the <command>DtSpinBox</command>, <command>DtComboBox</command>, and <command>DtMenuButton</command> widgets. The <command>libDtWidget</command> header files for these
widgets are:</para>
<itemizedlist remap="Bullet1"><listitem><para><filename>Dt/SpinBox.h</filename></para>
</listitem><listitem><para><filename>Dt/ComboBox.h</filename></para>
</listitem><listitem><para><filename>Dt/MenuButton.h</filename></para>
</listitem></itemizedlist>
</sect2>
<sect2 id="RDMAP.optin.div.5">
<title>Demo Programs<indexterm><primary>Common Desktop Environment widgets</primary><secondary>demo programs</secondary></indexterm><indexterm><primary>demo programs</primary></indexterm></title>
<para>You can find the Common Desktop Environment Motif control widgets demos
in <filename>/usr/dt/examples/dtwidget</filename>. Read the <command>README</command> file for detailed information on the demos.</para>
<sect3 id="RDMAP.optin.div.6">
<title>Related Documentation</title>
<para>For more information on Common Desktop Environment Motif control widgets,
see the relevant man pages and the <emphasis>Programmer's Guide</emphasis>.<indexterm>
<primary>widget</primary><secondary>Common Desktop Environment &lt;$endrange></secondary></indexterm></para>
</sect3>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.7">
<title id="RDMAP.optin.mkr.3">Data Typing</title>
<para>You can define data types when you perform basic integration for your
application. This section focuses on a different aspect of data typing: extracting
information from the actions and data-types database.</para>
<para>Data typing provides an extension to the attributes of files and data
beyond what is provided by traditional<indexterm><primary>UNIX</primary>
</indexterm> UNIX file systems. These extensions include typing and attribute
management. Use the data-typing API if your application receives data from
external sources and must act on it. For example, your application might
want to display an icon or execute an action that has a system-wide definition.
</para>
<para>Data typing consist of two parts:<indexterm><primary>data typing</primary>
<secondary>two parts of</secondary></indexterm></para>
<itemizedlist remap="Bullet1"><listitem><para>A database that stores data
criteria and data attributes</para>
</listitem><listitem><para>A collection of routines that query the database
</para>
</listitem></itemizedlist>
<para>The data-typing system determines a type for a file or byte vector based
on a set of criteria. These criteria include its name, permissions, symbolic
link value, and contents. The attributes associated with a type describe
its user-visible interfaces, including a description, the icon to represent
it graphically, and the actions that apply to it. Attributes also exist that
name the interchange formats to which the data conforms.</para>
<para>The Common Desktop Environment File Manager and Common Desktop Environment
Mail attachment window use data typing to determine the icon and actions
associated with a file. For example, for a C file <symbol role="Variable">filename</symbol>.<command>c</command>, File Manager uses the. <command>c</command> extension to determine the file's data type, C_SOURCE. It then
uses C_SOURCE to determine the icon file name for the icon that it can use
for <symbol role="Variable">filename</symbol>.<command>c</command>.</para>
<sect2 id="RDMAP.optin.div.8">
<title>Database Loading<indexterm><primary>database</primary><secondary>loading</secondary></indexterm><indexterm><primary>data typing</primary><secondary>database loading</secondary></indexterm></title>
<para>This section discusses the loading API for the actions and data-types
database. The syntax for this and any Common Desktop Environment databases
a developer defines is discussed in man pages in the
<filename>/usr/dt/man/man4</filename> directory.</para>
<para>The external database loading API consists of two functions:</para>
<itemizedlist remap="Bullet1"><listitem><para><filename>DtDbLoad()</filename></para>
</listitem><listitem><para><filename>DtDbReloadNotify()</filename></para>
</listitem></itemizedlist>
<para><filename>DtDbLoad()</filename> reads in the actions and data-types
database. It determines the set of directories that are searched for database
files, and it loads into the database the <filename>.dt</filename> files
that are found. Your application must call <filename>DtDbLoad()</filename>
before calling any of the routines that query the actions and data-types
database.<indexterm><primary>DtDbLoad()</primary></indexterm><indexterm>
<primary>database</primary><secondary>DtDbLoad()</secondary></indexterm></para>
<para><filename>Use DtDbReLoadNotify()</filename> to request notification
of actions and data-types database reload events. It registers an application's
interest in database reload messages. <filename><indexterm><primary>DtDbReLoadNotify()</primary></indexterm><indexterm><primary>database</primary><secondary>DtDbReLoadNotify()</secondary></indexterm></filename></para>
<para>Your application should reload the database whenever it changes, so
that the end user will notice updates without having to restart the application.
</para>
</sect2>
<sect2 id="RDMAP.optin.div.9">
<title>Database Queries<indexterm><primary>database</primary><secondary>query
functions</secondary></indexterm><indexterm><primary>data typing</primary>
<secondary>database query functions</secondary></indexterm></title>
<para>To look up an attribute for a data object, you must first determine
the type of the object and then ask for the appropriate attribute value for
that type. The database query functions enable you to perform operations
such as retrieve type data and attributes, free memory, and load and unload
the database. These functions are documented in the <emphasis>Programmer's
Guide</emphasis> and also in man pages in the <filename>man3</filename> directory.
</para>
</sect2>
<sect2 id="RDMAP.optin.div.10">
<title>Library and Header Files<indexterm><primary>data typing</primary><secondary>library and header files</secondary></indexterm></title>
<para>The Desktop Services library, <command>libDtSvc</command>, provides
access to many desktop APIs, including that for data typing. Include the
<filename>Dt/Dt.h</filename> <command>and Dt/Dts.h</command> header files to access
the data-typing API.</para>
<note>
<para>If your application uses any of the data-typing APIs, or loads the
actions and data-types database, it must first initialize the <command>libDtSvc</command> library by calling either <filename><indexterm><primary>DtInitialize()</primary></indexterm>DtInitialize()</filename> or <filename><indexterm><primary>DtAppInitialize()</primary></indexterm>DtAppInitialize()</filename>. Refer
to the <filename>DtInitialize</filename>(3) or
<filename>DtAppInitialize</filename>(3) man page for more information.</para>
</note>
</sect2>
<sect2 id="RDMAP.optin.div.11">
<title>Demo Programs<indexterm><primary>data typing</primary><secondary>demo
programs</secondary></indexterm><indexterm><primary>demo programs</primary>
</indexterm></title>
<para>You can find the data typing demos in
<filename>/usr/dt/examples/dtdts</filename>.
Read the <command>README</command> file for detailed information
on the demos.</para>
<sect3 id="RDMAP.optin.div.12">
<title>Related Documentation</title>
<para>For more information on data typing, see the relevant man pages and
the <emphasis>Programmer's Guide</emphasis>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.13">
<title id="RDMAP.optin.mkr.4">Action Invocation</title>
<para>The action invocation API enables applications to invoke desktop actions
on file or buffer arguments. It chooses a suitable action for the file or
buffer based on the <command>Class</command>, <command>Type</command>, <command>Mode</command>, and <command>Number</command> of the action arguments. For
example, an Open action might invoke an image viewer for GIF files, a word
processor for complex documents, and a simple text editor for ordinary ASCII
files. Your application need not concern itself with the details of action
selection or invocation.</para>
<para>Use the action invocation API so that your application uses the same
mechanisms as the rest of the desktop. The user can then experience uniform
desktop behavior.</para>
<para>The action functions in the <command>libDtSvc</command> library provide
a way to invoke desktop actions (such as Open and Print) for files or buffers.
They contain parameters that enable you to modify an action's behavior. The
action invocation API consists of the following functions:<indexterm><primary>action invocation</primary><secondary>API</secondary></indexterm></para>
<informaltable>
<tgroup cols="2" colsep="0" rowsep="0">
<?PubTbl tgroup dispwid="6.13in">
<colspec align="left" colwidth="216*">
<colspec align="left" colwidth="289*">
<tbody>
<row>
<entry align="left" valign="top"><para><filename>DtActionInvoke()</filename></para></entry>
<entry align="left" valign="top"><para>Invokes the specified action on its
arguments, which can be files or buffers</para></entry></row>
<row>
<entry align="left" valign="top"><para><filename>DtActionLabel()</filename></para></entry>
<entry align="left" valign="top"><para>Provides access to the localizable
label string associated with an action</para></entry></row>
<row>
<entry align="left" valign="top"><para><filename>DtActionDescription()</filename></para></entry>
<entry align="left" valign="top"><para>Returns a string containing the description
information associated with the action your application called</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><filename>DtActionExists()</filename></para></entry>
<entry align="left" valign="top"><para>A Boolean function that checks whether
a given name corresponds to an existing action</para></entry>
</row>
<row>
<entry align="left" valign="top"><para><filename>DtActionIcon()</filename></para></entry>
<entry align="left" valign="top"><para>Returns the name of the icon associated
with the specified action</para></entry></row></tbody></tgroup></informaltable>
<sect2 id="rdmap.optin.div.14">
<title>Library and Header Files<indexterm><primary>action invocation</primary>
<secondary>library and header files</secondary></indexterm></title>
<para>The desktop services library, <command>libDtSvc</command>, provides
access to many desktop APIs, including that for actions. Include the
<filename>Dt/Dt.h</filename> and <filename>Dt/Action.h</filename> header files to access
the actions API.</para>
<note>
<para>If your application uses any of the action invocation APIs, it must
first initialize the <command>libDtSvc</command> library by calling either <filename><indexterm>
<primary>DtInitialize()</primary></indexterm>DtInitialize()</filename> or
<filename><indexterm><primary>DtAppInitialize()</primary></indexterm>DtAppInitialize()</filename>. Refer to the <filename>DtInitialize</filename>(3) or
<filename>DtAppInitialize</filename>(3) man page for more information.</para>
</note>
</sect2>
<sect2 id="rdmap.optin.div.15">
<title>Demo Programs<indexterm><primary>action invocation</primary><secondary>demo programs</secondary></indexterm><indexterm><primary>demo programs</primary>
</indexterm></title>
<para>You can find the action invocation demos in
<filename>/usr/dt/examples/dtaction</filename>.
Read the <command>README</command> file for detailed information
on the demos.</para>
<sect3 id="rdmap.optin.div.16">
<title>Related Documentation</title>
<para>For more information on actions, see the relevant man pages and the <emphasis>Programmer's Guide</emphasis>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.17">
<title id="RDMAP.optin.mkr.5">Workspace Manager</title>
<para>The Common Desktop Environment Workspace Manager provides support for
multiple workspaces. Each workspace is a <emphasis>virtual screen</emphasis>.
Windows can be placed in a single workspace, all workspaces, or any combination
of individual workspaces. Workspaces can be added, deleted, or renamed dynamically
by the user.</para>
<para>The Workspace Manager API provides functions for applications that need
to know in which workspaces their windows reside, or that need to have some
control over how the windows are placed in the workspaces. Additionally,
the API enables applications to monitor changes to the overall workspace
state, such as which workspace is the current one.</para>
<para>The Common Desktop Environment does not require applications to use
the Workspace Manager API to run on the desktop. Most desktop applications
can run as expected without knowledge of the Workspace Manager. In particular,
if your application has a single, main, top-level window and complies with
ICCCM 1.1 and<indexterm><primary>Motif 1.2</primary></indexterm> Motif 1.2,
you do not have to integrate with the Common Desktop Environment Workspace
Manager for the application to run on the desktop.</para>
<para>However, more complex applications with multiple top-level windows need
to use the Workspace Manager API in conjunction with the<indexterm><primary>Session Manager</primary></indexterm> Session Manager API to properly save
and restore the application's state. The Workspace Manager API enables an
application to find out which workspaces each of its windows is in. The API
also enables an application to display its windows in the correct workspace
when the session resumes.</para>
<para>The Workspace Manager API addresses the following tasks:</para>
<itemizedlist remap="Bullet1"><listitem><para>Get information on workspaces
</para>
</listitem><listitem><para>Get and set the current workspace</para>
</listitem><listitem><para>Notify a client of changes to workspace state</para>
</listitem><listitem><para>Add and remove workspace functions for a client
</para>
</listitem><listitem><para>Get and set the workspaces occupied by a client
</para>
</listitem><listitem><para>Identify backdrop windows</para>
</listitem></itemizedlist>
<para>All Workspace Manager API functions share the prefix <command>DtWsm</command>.</para>
<sect2 id="RDMAP.optin.div.18">
<title>Library and Header Files<indexterm><primary>Workspace Manager</primary>
<secondary>library and header files</secondary></indexterm></title>
<para>The desktop services library, <command>libDtSvc</command>, provides
access to many desktop APIs, including that for Workspace Manager. Include
the <filename>Dt/Dt.h</filename> and <filename>Dt/Wsm.h</filename> header
files to access the Workspace Manager API.</para>
<note>
<para>If your application uses any of the Workspace Manager APIs, it must
first initialize the <command>libDtSvc</command> library by calling either <filename><indexterm>
<primary>DtInitialize()</primary></indexterm>DtInitialize()</filename> or
<filename><indexterm><primary>DtAppInitialize()</primary></indexterm>DtAppInitialize()</filename>.
Refer to the <filename>DtInitialize</filename>(3) or
<filename>DtAppInitialize</filename>(3) man page for more information.</para>
</note>
</sect2>
<sect2 id="RDMAP.optin.div.19">
<title>Demo Programs<indexterm><primary>Workspace Manager</primary><secondary>demo programs</secondary></indexterm><indexterm><primary>demo programs</primary>
</indexterm></title>
<para>You can find the Workspace Manager demos in
<filename>/usr/dt/examples/dtwsm</filename>.
Read the <command>README</command> file for detailed information
on the demos.</para>
<sect3 id="RDMAP.optin.div.20">
<title>Related Documentation</title>
<para>For more information on Workspace Manager, see the relevant man pages
and the <emphasis>Programmer's Guide</emphasis>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.21">
<title id="RDMAP.optin.mkr.6">Terminal Emulator Widget</title>
<para>The <command>DtTerm</command> widget provides the functionality required
to emulate an ANSI X3.64-1979-style terminal emulator (specifically a DEC
VT220-like terminal with extensions). The Terminal Emulator widget library,
<filename>libDtTerm,</filename> provides the <command>DtTerm</command> widget for use
in adding a terminal emulator window to a GUI. If you include a terminal emulator
in your application, use Common Desktop Environment Motif widgets to add display
enhancements to it such as pop-up menus and scroll bars.<indexterm><primary>DEC VT220</primary></indexterm><indexterm><primary>Terminal Emulator</primary>
<secondary>DEC VT220-like</secondary></indexterm><indexterm><primary>widget</primary><secondary>DtTerm</secondary></indexterm><indexterm><primary>Terminal
Emulator</primary><secondary>DtTerm widget</secondary></indexterm></para>
<para>The Common Desktop Environment Terminal Emulator, which is a part of
the run-time environment, is a window that behaves as a terminal, enabling
access to traditional terminal-based applications from within the desktop.
The <command>DtTerm</command> widget is the foundation for the desktop run-time
terminal emulator, <command>dtterm</command>.<indexterm><primary>run-time</primary><secondary>terminal emulator</secondary></indexterm></para>
<para>The <command>libDtTerm</command> library includes a set of convenience
functions to create, access, and support the <command>DtTerm</command> widget.
</para>
<sect2 id="RDMAP.optin.div.22">
<title>Library and Header Files<indexterm><primary>Terminal Emulator Widget</primary><secondary>library and header files</secondary></indexterm></title>
<para>The <command>libDtTerm</command> library provides a set of widgets based
on Motif for designing a terminal emulator or for adding a terminal emulator
window to a GUI.</para>
<para>Include the <filename>Dt/Term.h</filename> header file to access <command>libDtTerm</command> APIs in your application.</para>
</sect2>
<sect2 id="RDMAP.optin.div.23">
<title>Demo Programs<indexterm><primary>Terminal Emulator Widget</primary>
<secondary>demo programs</secondary></indexterm><indexterm><primary>demo
programs</primary></indexterm></title>
<para>You can find the Terminal Emulator demos in
<filename>/usr/dt/examples/dtterm</filename>.
Read the <command>README</command> file for detailed information
on the demos.</para>
<sect3 id="RDMAP.optin.div.24">
<title>Related Documentation</title>
<para>For more information on the <command>DtTerm</command> widget, see the
relevant man pages.</para>
<para>For more information on the desktop terminal emulator, see the terminal
emulator help volume, the relevant man pages, or the <emphasis>User's Guide</emphasis>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.25">
<title id="RDMAP.optin.mkr.7">Text Editor Widget</title>
<para>The Common Desktop Environment text editing system consists of two
components:</para>
<itemizedlist remap="Bullet1"><listitem><para><command>The text editor application,
dtpad</command>, which provides editing services through graphical, action,
and ToolTalk interfaces<command><indexterm><primary>dtpad</primary></indexterm><indexterm>
<primary>Text Editor</primary><secondary>dtpad</secondary></indexterm></command></para>
</listitem><listitem><para><command>The editor widget, DtEditor</command>,
which provides a programmatic interface for the following editing services:<command><indexterm>
<primary>Text Editor</primary><secondary>DtEditor widget</secondary></indexterm></command></para>
<itemizedlist remap="Bullet2"><listitem><para>Cut and paste</para>
</listitem><listitem><para>Search and replace</para>
</listitem><listitem><para>Simple formatting</para>
</listitem><listitem><para>Spell checking (for 8-bit locales)</para>
</listitem><listitem><para>Undo previous edit</para>
</listitem><listitem><para>Enhanced I/O handling capabilities that support
input and output of ASCII text, multibyte text, and buffers of data</para>
</listitem><listitem><para>Support for reading and writing files directly
</para>
</listitem></itemizedlist>
</listitem></itemizedlist>
<para>Although the Motif text widget also provides a programmatic interface,
applications that want to assure a system-wide uniform editor should use
the <command>DtEditor</command> widget. The Common Desktop Environment Text
Editor and Mailer use the editor widget. Use this widget in the following
circumstances:<indexterm><primary>Text Editor</primary><secondary>when to
use widget &lt;$startrange></secondary>
</indexterm></para>
<itemizedlist remap="Bullet1"><listitem><para>You need the functionality,
such as spell checking, undo, and find/change, that is provided by the <command>DtEditor</command> widget.</para>
</listitem><listitem><para>You want users to be able to read and write data
to and from a file.</para>
</listitem><listitem><para>When your program does not need to edit the text
while the widget has control of the text<indexterm><primary>Text Editor</primary><secondary>when to use widget &lt;$endrange></secondary></indexterm>.</para>
</listitem></itemizedlist>
<sect2 id="RDMAP.optin.div.26">
<title>Library and Header Files<indexterm><primary>Text Editor</primary><secondary>library and header files</secondary></indexterm></title>
<para>The <command>DtEditor</command> widget is in the <command>libDtWidget</command> library. The header file is <filename>Dt/Editor.h</filename>.
</para>
</sect2>
<sect2 id="RDMAP.optin.div.27">
<title>Demo Programs<indexterm><primary>Text Editor</primary><secondary>demo programs</secondary></indexterm></title>
<para>A demo containing an example of the <command>DtEditor</command> widget
(<filename>editor.c</filename>) is in
<filename>/usr/dt/examples/dtwidget</filename> directory.
Read the <command>README</command> file for detailed
information on the demo.</para>
<sect3 id="RDMAP.optin.div.28">
<title>Related Documentation</title>
<para>For more information on the Text Editor widget, see the relevant man
pages and the <emphasis>Programmer's Guide</emphasis>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.29">
<title id="RDMAP.optin.mkr.8">Calendar</title>
<para>The Common Desktop Environment Calendar comprises the infrastructure
and API that enables users to schedule their time and resources in a networked
environment. The Calendar GUI is part of the Common Desktop Environment run-time
environment.<indexterm><primary>run-time</primary><secondary>Calendar GUI</secondary></indexterm></para>
<para>Calendar consists of:</para>
<itemizedlist remap="Bullet1"><listitem><para>A daemon that manages the calendar
database</para>
</listitem><listitem><para>A calendar and scheduling API that defines a set
of high-level functions so that calendar-enabled applications can access
the functionality supported by the daemon</para>
</listitem><listitem><para>A library implementation of the calendar and scheduling
API</para>
</listitem></itemizedlist>
<para>Additionally, it provides a user interface for both GUI and TTY interaction.
The system supports entering, deleting, and modifying calendar entries, as
well as browsing and search features. You can access all this functionality
through the network.</para>
<para>The development environment provides a library for client access to
the Calendar data. It is extensible in that it allows users to define their
own calendar entry attributes.The library provides a client callback mechanism
for notification of database updates.</para>
<para>The calendar daemon implements the services behind the library of calendar
and scheduling API calls. It supports deleting, inserting, and modifying
calendar entries. It also manages calendar reminders and supports the creation
and removal of the Calendar database. It also provides mechanisms for retrieving
Calendar data.</para>
<para>Calendar entry data integrates with the desktop through drag and drop
and the ToolTalk messaging interfaces.</para>
<para>The calendar and scheduling API is an implementation of the X.400 Application
Programming Interface Association (<indexterm><primary>X.400 API Association
(XAPIA)</primary></indexterm><indexterm><primary>Calendar</primary><secondary>XAPIA</secondary></indexterm>XAPIA) Calendaring and Scheduling API 1.0. Use
the calendar and scheduling API to integrate your application with Calendar,
or to develop your own calendar application.</para>
<sect2 id="RDMAP.optin.div.30">
<title>Library and Header Files<indexterm><primary>Calendar</primary><secondary>library and header files</secondary></indexterm></title>
<para>The Calendar library, <command>libcsa</command>, provides a programmatic
way to access and manage Calendar data in a networked environment.</para>
<para>Include the <filename>csa/csa.h</filename> header file to access <command>libcsa</command> APIs in your application.</para>
</sect2>
<sect2 id="RDMAP.optin.div.31">
<title>Demo Programs<indexterm><primary>Calendar</primary><secondary>demo
programs</secondary></indexterm><indexterm><primary>demo programs</primary>
</indexterm></title>
<para>You can find the Calendar demos in
<filename>/usr/dt/examples/dtcalendar</filename>.
Read the <command>README</command> file for detailed information
on the demos.</para>
<sect3 id="RDMAP.optin.div.32">
<title>Related Documentation</title>
<para>For more information on the calendar, see the relevant man pages, the
Calendar help volume, and the <emphasis>Programmer's Guide</emphasis>.</para>
</sect3>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.32a">
<title id="RDMAP.optin.mkr.8a">Information Manager</title>
<para><indexterm><primary>information manager</primary><secondary>general information</secondary></indexterm>The Information Manager provides access to on-line documentation, organized
in a manner that is typical of hardcopy manuals: bookcases contain books, which
contain sections, which in turn contain subsections, and so on. The Information Manager is
is separate from the Help facility.
</para>
<sect2 id="RDMAP.optin.div.32b">
<title>Header Files</title>
<indexterm><primary>information manager</primary><secondary>header files</secondary></indexterm>
<para>The header files are:
</para>
<itemizedlist>
<listitem>
<para><Filename>/usr/dt/include/Dt/Info.h</Filename>
</para>
</listitem>
<listitem>
<para><Filename>/usr/dt/include/Dt/Search.h</Filename>
</para>
</listitem>
<listitem>
<para><Filename>/usr/dt/include/Dt/Mmdb.h</Filename> (for extending or replacing the default
browser, <command>dtinfo</command>)
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="RDMAP.optin.div.32c">
<title>Related Documentation</title>
<indexterm><primary>information manager</primary><secondary>documentation</secondary></indexterm>
<para>For more information on the Information Manager, refer to
<citetitle>Information System Author's and Programmer's Guide</citetitle>.
</para>
</sect2>
</sect1>
<sect1 id="RDMAP.optin.div.33">
<title id="RDMAP.optin.mkr.9">Desktop KornShell (dtksh)</title>
<para>Desktop KornShell<indexterm><primary>dtksh</primary></indexterm><indexterm>
<primary>Desktop KornShell (dtksh)</primary></indexterm> (which is <command>dtksh</command>) provides a way to engage in graphic user interaction through
shell scripts. The user interface capabilities are based on the Common Desktop
Environment Motif widget set, the Xt Intrinsics, and the X11 library.</para>
<para><command>dtksh</command> is a version of <filename><indexterm><primary>ksh-93</primary></indexterm>ksh-93</filename> extended to access many X, Xt,
Motif, and Common Desktop Environment facilities. <filename>ksh-93</filename>
is a version of<indexterm><primary>KornShell</primary></indexterm> KornShell,
the command shell and programming language <command>ksh</command>. <command>dtksh</command> extends <command>ksh</command> to provide support
for:<emphasis><indexterm><primary>Desktop KornShell (dtksh)</primary><secondary>extension of ksh</secondary></indexterm></emphasis></para>
<itemizedlist remap="Bullet1"><listitem><para>Access to the Common Desktop
Environment Motif widget set from within a shell script</para>
</listitem><listitem><para>Fully localized shell scripts&mdash;<command>dtksh</command> scripts can use <command>catopen</command> and <command>catgets</command> commands</para>
</listitem><listitem><para>Access to the Common Desktop Environment application
Help system</para>
</listitem><listitem><para>Response to session-management Save state directives
</para>
</listitem><listitem><para>Access to most of the Common Desktop Environment
Desktop Services Message Set</para>
</listitem><listitem><para>Access to many of the Common Desktop Environment
data-typing API functions</para>
</listitem><listitem><para>Access to most of the Common Desktop Environment
action API functions</para>
</listitem></itemizedlist>
<sect2 id="RDMAP.optin.div.34">
<title>Demo Programs<indexterm><primary>Desktop KornShell (dtksh)</primary>
<secondary>demo programs</secondary></indexterm><indexterm><primary>demo programs</primary></indexterm></title>
<para>You can find the <command>dtksh</command> demos in
<filename>/usr/dt/examples/dtksh</filename>.
Read the <command>README</command> file for detailed information
on the demos.</para>
<sect3 id="RDMAP.optin.div.35">
<title>Related Documentation<?Pub Caret></title>
<para>For more information on <command>dtksh</command>, see the relevant man
pages and <emphasis>Desktop KornShell User's Guide</emphasis>.<indexterm>
<primary>optional integration &lt;$endrange></primary></indexterm><indexterm><primary>integration</primary>
<secondary>optional</secondary></indexterm><indexterm><primary>levels of integration</primary><secondary>optional &lt;$endrange></secondary></indexterm></para>
</sect3>
</sect2>
</sect1>
</chapter>
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 04:30:53-->
<?Pub *0000039352>
