811 lines
52 KiB
Plaintext
811 lines
52 KiB
Plaintext
<!-- $XConsortium: ch06.sgm /main/10 1996/09/08 19:46:58 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.recin.div.1">
|
|
<title id="RDMAP.recin.mkr.1">Recommended Integration</title>
|
|
<para>The<indexterm><primary>recommended integration <$startrange></primary></indexterm><indexterm><primary>levels of
|
|
integration</primary><secondary>recommended <$startrange></secondary></indexterm><indexterm><primary>integration</primary><secondary>recommended <$startrange></secondary></indexterm> Common Desktop Environment contains
|
|
components and guidelines to use so that your application will integrate
|
|
well with other applications on the desktop. This chapter provides an overview
|
|
of each recommended component and guideline that you should use to enhance
|
|
your application's level of consistency with the desktop.</para>
|
|
<informaltable id="RDMAP.recin.itbl.1" frame="All">
|
|
<tgroup cols="1">
|
|
<colspec colname="1" colwidth="4.0 in">
|
|
<tbody>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'Help System46'--><xref role="JumpText"
|
|
linkend="RDMAP.recin.mkr.2"></para></entry></row>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'ToolTalk Messaging Service47'--><xref
|
|
role="JumpText" linkend="RDMAP.recin.mkr.3"></para></entry></row>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'Session Manager50'--><xref role="JumpText"
|
|
linkend="RDMAP.recin.mkr.9"></para></entry></row>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'Drag and Drop52'--><xref role="JumpText"
|
|
linkend="RDMAP.recin.mkr.10"></para></entry></row>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'Internationalization54'--><xref role="JumpText"
|
|
linkend="RDMAP.recin.mkr.11"></para></entry></row>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'Standard Font Names55'--><xref role="JumpText"
|
|
linkend="RDMAP.recin.mkr.12"></para></entry></row>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'Displaying Error Messages from Your
|
|
Application57'--><xref role="JumpText" linkend="RDMAP.recin.mkr.13"></para></entry>
|
|
</row>
|
|
<row rowsep="1">
|
|
<entry><para>Printing ??
|
|
</para></entry>
|
|
</row>
|
|
<row rowsep="1">
|
|
<entry><para><!--Original XRef content: 'User Customization Issues59'--><xref
|
|
role="JumpText" linkend="RDMAP.recin.mkr.14"></para></entry></row></tbody>
|
|
</tgroup></informaltable>
|
|
<note>
|
|
<para>In addition to incorporating the components and following the guidelines
|
|
in this section, you should also follow the basic integration steps outlined
|
|
in <!--Original XRef content: 'Chapter 5, &xd2;Basic Application Integration'--><xref
|
|
role="ChapNumAndTitle" linkend="RDMAP.BIntg.mkr.1">.</para>
|
|
</note>
|
|
<para>For more information on recommended integration, see the <emphasis>Programmer's Guide</emphasis>.</para>
|
|
<sect1 id="RDMAP.recin.div.2">
|
|
<title id="RDMAP.recin.mkr.2">Help System</title>
|
|
<para>The Common Desktop Environment Help system is a complete system for
|
|
developing and displaying online help for application software. It enables
|
|
authors to write online help that includes rich graphics and text formatting,
|
|
hyperlinks, and access to the Help system from within the application. The
|
|
Help system provides a programmer's toolkit for integrating the help facilities
|
|
into an application.</para>
|
|
<para>Creating and integrating online help into an application can be done
|
|
as a collaborative project. Developers design and implement how an application
|
|
responds to a user's request for help. Authors organize and write the actual
|
|
help information that is displayed.</para>
|
|
<para>The Help system includes support for authors and programmers.</para>
|
|
<sect2 id="RDMAP.recin.div.3">
|
|
<title>For Authors<indexterm><primary>Help system</primary><secondary>authors,
|
|
for</secondary></indexterm></title>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Common Desktop Environment HelpTag
|
|
markup language—a set of <symbol role="Variable">tags</symbol> used
|
|
in text files to mark organization and content of online help<indexterm><primary>HelpTag</primary></indexterm><indexterm><primary>Help system</primary><secondary>Help Tag</secondary></indexterm></para>
|
|
</listitem><listitem><para>Common Desktop Environment HelpTag software—a
|
|
set of software tools for converting HelpTag files into run-time help files
|
|
</para>
|
|
</listitem><listitem><para>Common Desktop Environment Helpview application—a
|
|
viewer program for displaying online help</para>
|
|
</listitem></itemizedlist>
|
|
<para>Authors create help topics using the Help tag set and follow Structured
|
|
Generalized Markup Language (SGML) tagging conventions. SGML markup is the
|
|
primary data format. When compiled, the run-time distribution format is SGML-compliant.<indexterm>
|
|
<primary>Standard Generalized Markup Language (SGML)</primary></indexterm><indexterm>
|
|
<primary>Help system</primary><secondary>SGML</secondary></indexterm></para>
|
|
<para>The Help system also supports non-SGML formats such as UNIX man pages,
|
|
text files, and text strings.<indexterm><primary>UNIX</primary></indexterm><indexterm>
|
|
<primary>Help system</primary><secondary>UNIX man pages</secondary></indexterm>
|
|
</para>
|
|
<sect3 id="RDMAP.recin.div.4">
|
|
<title>For Programmers<indexterm><primary>Help system</primary><secondary>programmers, for</secondary></indexterm></title>
|
|
<itemizedlist remap="Bullet1"><listitem><para><command>DtHelp</command> programming
|
|
library—Application program interface (API) for creating and integrating
|
|
help windows into your application</para>
|
|
</listitem><listitem><para><command>DtHelp</command><indexterm><primary>widget</primary><secondary>Help system</secondary></indexterm> widgets— <command>DtHelpDialog</command> and <command>DtHelpQuickDialog</command> widgets to
|
|
create help dialog boxes and quick help dialog boxes (these are also part
|
|
of the Help library)</para>
|
|
</listitem></itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.5">
|
|
<title><indexterm><primary>Help system</primary><secondary>library and header
|
|
files</secondary></indexterm>Library and Header Files</title>
|
|
<para>The Help library, <command>libDtHelp</command>, provides support for
|
|
creating and managing help dialogs based on Motif. The <command>libDtHelp</command> header files are:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para><filename>Dt/Help.h</filename></para>
|
|
</listitem><listitem><para><filename>Dt/HelpDialog.h</filename></para>
|
|
</listitem><listitem><para><filename>Dt/HelpQuickD.h</filename></para>
|
|
</listitem></itemizedlist>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.6">
|
|
<title>Demo Programs<indexterm><primary>Help system</primary><secondary>demo
|
|
programs</secondary></indexterm><indexterm><primary>demo programs</primary>
|
|
</indexterm></title>
|
|
<para>You can find the Help system demos in <filename>/usr/dt/examples/dthelp</filename>. Read the <command>README</command> file for detailed information
|
|
on the demos.</para>
|
|
<sect3 id="RDMAP.recin.div.7">
|
|
<title>Related Documentation</title>
|
|
<para>For more information on the Help system, see the relevant man pages
|
|
and the <emphasis>Help System Author's and Programmer's Guide</emphasis>.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.8">
|
|
<title id="RDMAP.recin.mkr.3">ToolTalk Messaging Service</title>
|
|
<para>The Common Desktop Environment defines two standard ToolTalk protocols
|
|
known as <emphasis><indexterm><primary>message sets</primary></indexterm><indexterm>
|
|
<primary>ToolTalk Messaging Service</primary><secondary>message sets</secondary>
|
|
</indexterm>message sets</emphasis>. A message set contains a number of messages
|
|
that can be exchanged between a sender and a handler process. These message
|
|
are grouped together because they describe related requests and notices.
|
|
The sender and recipient can be within the same process or on different hosts.
|
|
Message sets have associated utility functions that enable you to concentrate
|
|
on the semantics of the protocol without getting too involved in low-level
|
|
details. Some message set functions enable you to easily defer to default
|
|
behavior.</para>
|
|
<para>The <emphasis>desktop message set</emphasis> encompasses three areas:<indexterm>
|
|
<primary>desktop message set</primary></indexterm><indexterm><primary>ToolTalk
|
|
Messaging Service</primary><secondary>desktop message set</secondary></indexterm></para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Windowing behavior</para>
|
|
</listitem><listitem><para>File access and short-term file lifecycle control
|
|
</para>
|
|
</listitem><listitem><para>Application extension languages</para>
|
|
</listitem></itemizedlist>
|
|
<para>See <!--Original XRef content: '&xd2;Handle Desktop'--><xref role="SectionTitle"
|
|
linkend="RDMAP.recin.mkr.4"> and <!--Original XRef content: '&xd2;Send
|
|
Desktop'--><xref role="SectionTitle" linkend="RDMAP.recin.mkr.5">
|
|
for information on windowing behavior. See <!--Original XRef content: '&xd2;Desktop
|
|
File'--><xref role="SectionTitle" linkend="RDMAP.recin.mkr.8"> for
|
|
information on file access and short-term file lifecycle control. Implementing
|
|
the <filename>Do_Command</filename> request is specific to the application's
|
|
extension language and is not assisted by the ToolTalk Messaging Service.
|
|
</para>
|
|
<para>The <emphasis><indexterm><primary>media message set</primary></indexterm><indexterm>
|
|
<primary>ToolTalk Messaging Service</primary><secondary>media message set</secondary></indexterm>media message set</emphasis> enables an application
|
|
to be a container for arbitrary media or to be a media player and editor
|
|
that can be driven from such a container. The media message set enables a
|
|
container application to compose, display, edit, and print a document of
|
|
an arbitrary media type, without understanding anything about the format
|
|
of that media type. The ToolTalk Messaging Service routes a container's requests
|
|
to the user's preferred tool for the given media type and operation. This
|
|
includes routing the request to an already-running instance of the tool,
|
|
if that instance can best handle the request. See <!--Original XRef content:
|
|
'&xd2;Send Media'--><xref role="SectionTitle" linkend="RDMAP.recin.mkr.7">
|
|
and <!--Original XRef content: '&xd2;Handle Media&xd3; on page 49'--><xref
|
|
role="SecTitleAndPageNum" linkend="RDMAP.recin.mkr.6">.</para>
|
|
<para>The ToolTalk Messaging Service provides support for these message sets:
|
|
</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para id="RDMAP.recin.mkr.4">Handle
|
|
Desktop</para>
|
|
<para>Handling desktop requests is the most basic level of messaging integration.
|
|
Any application that sends ToolTalk messages, either through calling
|
|
<filename>tt_message_send()</filename> or <filename>DtActionInvoke()</filename>, should
|
|
handle the desktop requests. This enables other applications to set or query
|
|
things such as your application's current directory, iconic state, and
|
|
<filename>$DISPLAY</filename>. For further information, see the man pages for
|
|
<filename>ttdt_open()</filename>, <filename>ttdt_session_join()</filename>,
|
|
<filename>ttdt_session_quit()</filename>, and <filename>ttdt_close()</filename>.</para>
|
|
</listitem><listitem><para id="RDMAP.recin.mkr.5">Send Desktop</para>
|
|
<para>When an application is started by <command>ttsession</command> to handle
|
|
some ToolTalk request, it is a child of <command>ttsession</command> rather
|
|
than of the request sender. The application will usually be started on the
|
|
same X display session as the sender, but not necessarily on the same X11
|
|
screen or in the same current directory context. If the application is implemented
|
|
as a server process, it may already be displaying on a particular screen
|
|
or in a particular directory context.</para>
|
|
<para>Using desktop requests, a handling application can inherit from the
|
|
sender attributes that might otherwise be inherited through command-line
|
|
invocation. Use the desktop message set in this way to reset the handler's
|
|
locale, current working directory, and even <filename>$DISPLAY</filename>.
|
|
This enables a carefully coded receiving application to come up on the same
|
|
X11 screen as the sender. A request handler can also find out the request
|
|
sender's current directory and window geometry. Knowing the window geometry
|
|
enables the request handler's window to avoid obscuring the request sender's
|
|
window, if possible. For more information, see the <filename>ttdt_sender_imprint_on()</filename> man page.</para>
|
|
</listitem><listitem><para id="RDMAP.recin.mkr.6">Handle Media</para>
|
|
<para>The ToolTalk Messaging Service enables an editor to easily handle the
|
|
standard media requests for the media types for which the editor is responsible.
|
|
For further information, see the man pages for <filename>ttmedia_ptype_declare()</filename>, <filename>ttdt_message_accept()</filename>, <filename>ttmedia_load_reply()</filename>, and <filename>ttmedia_Deposit()</filename>.</para>
|
|
</listitem><listitem><para id="RDMAP.recin.mkr.7">Send Media</para>
|
|
<para>The ToolTalk Messaging Service enables a container to easily send media
|
|
requests and manage the subsequent document updates sent back by the handler.
|
|
In those cases in which the container doesn't engage in any ongoing ToolTalk
|
|
dialog with a media handler, use the actions API instead of directly using
|
|
these ToolTalk APIs. Equivalent actions (Open and Print) represent a higher
|
|
level of abstraction that supports the equivalent of ToolTalk and non- ToolTalk
|
|
aware media handlers.For further information, see the man pages for
|
|
<filename>ttmedia_load()</filename> and <filename>ttdt_subcontract_manage()</filename>.
|
|
Note that, in most cases, a container application should perform operations
|
|
on objects using <filename>DtActionInvoke()</filename> instead of
|
|
<filename>ttmedia_load()</filename>. See the <emphasis>ToolTalk Messaging Overview</emphasis> for a description of how ToolTalk applications can be driven
|
|
using actions.</para>
|
|
</listitem><listitem><para id="RDMAP.recin.mkr.8">Desktop File</para>
|
|
<para>The ToolTalk Messaging Service makes it easy to send and receive the
|
|
desktop messages about files. These messages enable applications to coordinate
|
|
access to files. For further information, see the man pages for
|
|
<filename>ttdt_file_join()</filename>, <filename>ttdt_file_quit()</filename>,
|
|
<filename>ttdt_file_event()</filename>, <filename>ttdt_Get_Modified()</filename>,
|
|
<filename>ttdt_Save()</filename>, and <filename>ttdt_Revert()</filename>.</para>
|
|
</listitem></itemizedlist>
|
|
<para>Examples of applications that already use the ToolTalk Messaging Service
|
|
include the Common Desktop Environment Icon Editor, Mailer, Text Editor,
|
|
and Calendar. Other parts of the Common Desktop Environment use the ToolTalk
|
|
Messaging Service indirectly by defining actions that send messages.</para>
|
|
<sect2 id="RDMAP.recin.div.9">
|
|
<title>Library and Header Files<indexterm><primary>ToolTalk Messaging Service</primary><secondary>library and header files</secondary></indexterm></title>
|
|
<para>The ToolTalk messaging library is called <command>libtt</command>. The <command>libtt</command> header files are:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para><filename>Tt/tt_c.h</filename></para>
|
|
</listitem><listitem><para><filename>Tt/tttk.h</filename></para>
|
|
</listitem></itemizedlist>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.10">
|
|
<title>Demo Programs<indexterm><primary>ToolTalk Messaging Service</primary>
|
|
<secondary>demo programs</secondary></indexterm><indexterm><primary>demo
|
|
programs</primary></indexterm></title>
|
|
<para>You can find the ToolTalk Messaging Service demos in <filename>/usr/dt/examples/tt</filename>. Read the <command>README</command> file for detailed information
|
|
on the demos.</para>
|
|
<sect3 id="RDMAP.recin.div.11">
|
|
<title>Related Documentation</title>
|
|
<para>For more information on the ToolTalk Messaging Service, see the relevant
|
|
man pages and the <emphasis>ToolTalk Messaging</emphasis> <emphasis>Overview</emphasis>.</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.12">
|
|
<title id="RDMAP.recin.mkr.9">Session Manager</title>
|
|
<para>Session Manager supports the ICCCM 1.1 <filename><indexterm><primary>WM_COMMAND</primary></indexterm><indexterm><primary>Session Manager</primary>
|
|
<secondary>WM_COMMAND</secondary></indexterm>WM_COMMAND</filename> and <filename><indexterm>
|
|
<primary>WM_SAVE_YOURSELF</primary></indexterm><indexterm><primary>Session
|
|
Manager</primary><secondary>WM_SAVE_YOURSELF</secondary></indexterm>WM_SAVE_YOURSELF</filename><indexterm><primary>protocols</primary><secondary>WM_COMMAND</secondary></indexterm><indexterm><primary>protocols</primary><secondary>WM_SAVE_YOURSELF</secondary></indexterm> protocols, which permit:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Your application to save state
|
|
information at logout</para>
|
|
</listitem><listitem><para>Session Manager to restart your application at
|
|
login</para>
|
|
</listitem></itemizedlist>
|
|
<para>Session Manager also provides an API to assist your application in saving
|
|
and restoring its state at logout and login.</para>
|
|
<para>Session Manager is responsible for restarting applications at login.
|
|
To do this, your application must tell Session Manager what command and command-line
|
|
options are required to restart it. Use Xlib's <filename>XSetCommand()</filename>
|
|
to set the <filename>WM_COMMAND</filename> property on your application's
|
|
top-level window.</para>
|
|
<para>When Session Manager saves a session, such as at logout, your application
|
|
might need to save some state information so it can be restored to a similar
|
|
state. Session Manager can optionally notify your application that the session
|
|
is being saved. Your application must inform Session Manager that it wants
|
|
such notification. It does this by registering the <filename>WM_SAVE_YOURSELF</filename> protocol with its top-level window <filename>WM_PROTOCOLS</filename>
|
|
property and setting up a callback procedure to handle the notification.
|
|
To do this, use the <filename><indexterm><primary>XmAddWMProtocols()</primary>
|
|
</indexterm><indexterm><primary>Session Manager</primary><secondary>XmAddWMProtocols()</secondary></indexterm>XmAddWMProtocols()</filename> and <filename><indexterm>
|
|
<primary>XmAddWMProtocolsCallback()</primary></indexterm><indexterm><primary>Session Manager</primary><secondary>XmAddWMProtocolsCallback()</secondary>
|
|
</indexterm>XmAddWMProtocolsCallback()</filename> functions. Your application
|
|
should not interact with the user in any way when processing the
|
|
<filename>WM_SAVE_YOURSELF</filename> callback. (For example, it should not display
|
|
a Save As dialog box.) It must set the <filename>WM_COMMAND</filename> property
|
|
on its top-level window to notify Session Manager that it is done saving
|
|
its state.</para>
|
|
<para>To enable your application to save state information, use the <filename><indexterm>
|
|
<primary>DtSessionSavePath()</primary></indexterm><indexterm><primary>Session
|
|
Manager</primary><secondary>DtSessionSavePath()</secondary></indexterm>DtSessionSavePath()</filename> function to obtain the full path name of a file in which this
|
|
information can be saved. At session restore time, use the <filename><indexterm>
|
|
<primary>DtSessionRestorePath()</primary></indexterm><indexterm><primary>Session Manager</primary><secondary>DtSessionRestorePath()</secondary></indexterm>DtSessionRestorePath()</filename> function to obtain the full path name of the state file your
|
|
application uses to restore its state.</para>
|
|
<para>The Common Desktop Environment<indexterm><primary>Workspace Manager</primary></indexterm> Workspace Manager is responsible for restoring an application's
|
|
main top-level window (containing the <filename>WM_COMMAND</filename>) property
|
|
to the proper workspace, geometry, and icon state. If an application has
|
|
multiple top-level windows, it is the application's responsibility to restore
|
|
the states of the other top-level windows. Refer to <!--Original XRef content:
|
|
'&xd2;Workspace Manager&xd3; on page 70'--><xref role="SecTitleAndPageNum"
|
|
linkend="RDMAP.optin.mkr.5"> for additional information.</para>
|
|
<sect2 id="RDMAP.recin.div.13">
|
|
<title>Library and Header Files<indexterm><primary>Session 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 the one for session management. Include
|
|
the <filename>Dt/Dt.h</filename> and <filename>Dt/Session.h</filename> header
|
|
files to access the Session Manager API.</para>
|
|
<note>
|
|
<para>If your application uses any of the Session 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.recin.div.14">
|
|
<title>Demo Programs<indexterm><primary>Session Manager</primary><secondary>demo programs</secondary></indexterm><indexterm><primary>demo programs</primary>
|
|
</indexterm></title>
|
|
<para>You can find the Session Manager demos in <filename>/usr/dt/examples/dtsession</filename>. Read the <command>README</command> file for detailed information
|
|
on the demos.</para>
|
|
<sect3 id="RDMAP.recin.div.15">
|
|
<title>Related Documentation</title>
|
|
<para>For more information on Session Manager, see the relevant man pages
|
|
and the <emphasis>Programmer's Guide</emphasis>.</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.16">
|
|
<title id="RDMAP.recin.mkr.10">Drag and Drop</title>
|
|
<para>The Common Desktop Environment provides a drag-and-drop API, that is
|
|
layered on top of the Motif 2.1 drag-and-drop API, to provide convenient,
|
|
consistent, and interoperable drag and drop across the desktop. The Common
|
|
Desktop Environment drag-and-drop API makes it easier for developers to
|
|
implement drag and drop. With drag and drop, users can manipulate objects
|
|
on the screen directly by grabbing them, dragging them around the display,
|
|
and dropping them on other objects to change the object's location or perform
|
|
a data transfer.</para>
|
|
<para>Motif 2.1 drag and drop provides low-level drag-and-drop mechanisms;
|
|
Common Desktop Environment drag and drop incorporates policies for those
|
|
mechanisms.<indexterm><primary>drag and drop</primary><secondary>and Motif
|
|
2.1 drag and drop</secondary></indexterm></para>
|
|
<para>Common Desktop Environment drag and drop consists of an API and protocols
|
|
to simplify the interface to Motif drag and drop. It implements policies
|
|
such as the buffer transfer protocol and the drag cursors' appearances. Use
|
|
the Common Desktop Environment drag-and-drop API, with its built-in policies,
|
|
to ensure interoperability through consistency. Common Desktop Environment
|
|
drag-and-drop policies are compatible with standard Motif 2.1 drag-and-drop
|
|
protocols for text and file name transfers.</para>
|
|
<para>Common Desktop Environment drag and drop uses the X selection mechanism
|
|
to transfer data. Suitable targets exist and are registered with the X Consortium.
|
|
Two desktop applications can agree to transfer data through the text, file
|
|
name, or data transfer protocols.</para>
|
|
<para>The existing Motif 2.1 API for drag and drop is flexible and, therefore,
|
|
is somewhat difficult for nonexpert developers to use. The Common Desktop
|
|
Environment drag-and-drop API provides some convenience functions that result
|
|
in an API that is simpler and easier to use:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Manages the configuration and
|
|
appearance of drag icons.</para>
|
|
<para>Common Desktop Environment drag and drop provides graphics for the
|
|
default source, state, and operation icons that compose the drag icon in
|
|
Motif 2.1.</para>
|
|
</listitem><listitem><para>Defines a buffer transfer protocol.</para>
|
|
<para>Motif 2.1 drag and drop defines protocols for file name and text string
|
|
only.</para>
|
|
</listitem><listitem><para>Enables animation upon drop.</para>
|
|
<para>The drop zone can define an animation procedure that is called when
|
|
the drop completes.</para>
|
|
</listitem><listitem><para>Provides enumeration of targets for <command>TEXT</command> and <filename>FILE_NAME</filename> transfers.</para>
|
|
</listitem><listitem><para>Provides dual registration.</para>
|
|
<para>You can register a text widget as a drop zone for data other than text,
|
|
while preserving the ability to accept text drops.</para>
|
|
</listitem><listitem><para>Provides prioritized drop formats.</para>
|
|
<para>The order in which you specify protocols for the drop zone indicates
|
|
the relative priority of the protocols desired.</para>
|
|
</listitem></itemizedlist>
|
|
<sect2 id="RDMAP.recin.div.17">
|
|
<title>Library and Header Files<indexterm><primary>drag and drop</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 drag and drop. Include the
|
|
<filename>Dt/Dt.h</filename> and <filename>Dt/Dnd.h</filename> header files to access
|
|
the drag-and-drop API.</para>
|
|
<note>
|
|
<para>If your application uses any of the drag-and-drop 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.recin.div.18">
|
|
<title>Demo Programs<indexterm><primary>drag and drop</primary><secondary>demo programs</secondary></indexterm></title>
|
|
<para>You can find the drag-and-drop demos in <filename>/usr/dt/examples/dtdnd</filename>. Read the <command>README</command> file for detailed information
|
|
on the demos.</para>
|
|
<sect3 id="RDMAP.recin.div.19">
|
|
<title>Related Documentation</title>
|
|
<para>For more information on Common Desktop Environment drag and drop, see
|
|
the relevant man pages and the <emphasis>Programmer's Guide</emphasis>.</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.20">
|
|
<title id="RDMAP.recin.mkr.11">Internationalization</title>
|
|
<para>The Common Desktop Environment is internationalized to support single-byte
|
|
and multibyte locales. Developers can write internationalized applications
|
|
that can be easily localized to run on any Common Desktop Environment platform.<indexterm>
|
|
<primary>guidelines</primary><secondary>internationalization <$startrange></secondary></indexterm><indexterm>
|
|
<primary>single-byte locales</primary></indexterm><indexterm><primary>locales</primary><secondary>single-byte</secondary></indexterm><indexterm><primary>internationalization</primary><secondary>single-byte locales</secondary>
|
|
</indexterm><indexterm><primary>multibyte locales</primary></indexterm><indexterm>
|
|
<primary>locales</primary><secondary>multibyte</secondary></indexterm><indexterm>
|
|
<primary>internationalization</primary><secondary>multibyte locales</secondary>
|
|
</indexterm></para>
|
|
<para>Common Desktop Environment applications (both source and binary) can
|
|
be localized into regional languages and territories, and across multiple
|
|
vendors and hardware platforms:<indexterm><primary>locales</primary><secondary>applications can be localized into</secondary></indexterm><indexterm><primary>internationalization</primary><secondary>locales</secondary></indexterm></para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Latin American</para>
|
|
</listitem><listitem><para>Western European</para>
|
|
</listitem><listitem><para>Japanese</para>
|
|
</listitem><listitem><para>Korean</para>
|
|
</listitem><listitem><para>Chinese (Traditional and Simplified)</para>
|
|
</listitem></itemizedlist>
|
|
<para>The Common Desktop Environment takes advantage of internationalization
|
|
features in these standards:<indexterm><primary>standards</primary><secondary>internationalization</secondary></indexterm><indexterm><primary>internationalization</primary><secondary>standards</secondary></indexterm></para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>IEEE 1003.2-1992 (<indexterm>
|
|
<primary>POSIX</primary></indexterm> POSIX.2 Annex B)</para>
|
|
</listitem><listitem><para>X Window System, Version 11 Release 6.2 (Locales
|
|
and Internationalization Text Functions)<indexterm><primary>X11R6.2</primary>
|
|
</indexterm></para>
|
|
</listitem><listitem><para>Motif 2.1 (Internationalizing and Localizing Motif
|
|
clients)<indexterm><primary>Motif 2.1</primary></indexterm></para>
|
|
</listitem></itemizedlist>
|
|
<para>If you intend to internationalize your application, you must ensure
|
|
that it supports input and output of multibyte characters. CDE supports
|
|
vertical writing, which is useful for rendering some Asian
|
|
languages. Also, make sure
|
|
that message catalogs are used and code can be fully localized.</para>
|
|
<sect2 id="RDMAP.recin.div.21">
|
|
<title>Demo Programs<indexterm><primary>internationalization</primary><secondary>demo programs</secondary></indexterm><indexterm><primary>demo programs</primary>
|
|
</indexterm></title>
|
|
<para>The drawing program demo in <filename>/usr/dt/examples/template</filename>
|
|
is internationalized. Read the <command>README</command> file for detailed
|
|
information on this demo.</para>
|
|
<sect3 id="RDMAP.recin.div.22">
|
|
<title>Related Documentation</title>
|
|
<para>For more information on Common Desktop Environment internationalization,
|
|
see the development environment component man pages and the <emphasis>Internationalization
|
|
Programmer's Guid</emphasis><emphasis>e</emphasis>.<indexterm><primary>guidelines</primary><secondary>internationalization <$endrange></secondary></indexterm></para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.23">
|
|
<title id="RDMAP.recin.mkr.12">Standard Font Names</title>
|
|
<para>The standard font names defined by the Common Desktop Environment are
|
|
guaranteed to be available on all Common Desktop Environment-compliant systems.
|
|
These names do not specify actual fonts. Instead, they are aliases that each
|
|
system vendor maps to the vendor's best available fonts. If you use only
|
|
these font names in your application, you can be sure of getting the closest
|
|
matching font on any Common Desktop Environment-compliant system. These
|
|
comprise a set of X Window System font names you can use for the most common
|
|
categories of type designs and styles.<indexterm><primary>fonts</primary>
|
|
<secondary>standard font names</secondary></indexterm><indexterm><primary>guidelines</primary><secondary>font use <$startrange></secondary></indexterm></para>
|
|
<para>The standard font names are mapped to different fonts on different Common
|
|
Desktop Environment platforms, typically using the X font alias mechanism.
|
|
This eliminates the problem of having to select from a varying set of fonts
|
|
on different platforms. It also enables you to make use of the default set
|
|
of fonts on a particular vendor's Common Desktop Environment implementation.
|
|
</para>
|
|
<para>The Common Desktop Environment defines two types of standard fonts:
|
|
application fonts and interface fonts. Use the application fonts for output
|
|
produced by your application. Motif widgets and the desktop use interface
|
|
fonts; do <symbol role="Variable">not</symbol> change their default fonts.<indexterm>
|
|
<primary>interface fonts</primary></indexterm><indexterm><primary>fonts</primary><secondary>interface</secondary></indexterm></para>
|
|
<sect2 id="RDMAP.recin.div.24">
|
|
<title>Application Fonts<indexterm><primary>application fonts <$startrange></primary></indexterm><indexterm>
|
|
<primary>fonts</primary><secondary>application <$startrange></secondary></indexterm></title>
|
|
<para>At least six point sizes are available on all Common Desktop Environment
|
|
platforms for each font associated with a Standard Font Name: 8, 10, 12,
|
|
14, 18, and 24. XLFD font descriptions for Common Desktop Environment fonts
|
|
look like:</para>
|
|
<programlisting><filename>-dt-application-*</filename></programlisting>
|
|
<para>when used where such patterns are valid.</para>
|
|
<para>Two of the most common design variations in fonts used to display text
|
|
are the presence or absence of serifs and the choice between proportional
|
|
or regularly spaced (monospaced) characters. Combining these two design variations
|
|
yields four generic font designs:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Serif proportionally spaced
|
|
</para>
|
|
</listitem><listitem><para>Sans serif proportionally spaced</para>
|
|
</listitem><listitem><para>Serif monospaced</para>
|
|
</listitem><listitem><para>Sans serif monospaced</para>
|
|
</listitem></itemizedlist>
|
|
<para>Common examples of each of these four designs (in corresponding order)
|
|
are:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Times Roman</para>
|
|
</listitem><listitem><para>Helvetica</para>
|
|
</listitem><listitem><para>Courier</para>
|
|
</listitem><listitem><para>Lucida Typewriter</para>
|
|
</listitem></itemizedlist>
|
|
<para>Each of these designs for text fonts typically come in four styles (combinations
|
|
of weight and slant):</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Plain</para>
|
|
</listitem><listitem><para>Bold</para>
|
|
</listitem><listitem><para>Italic</para>
|
|
</listitem><listitem><para>Bold-italic</para>
|
|
</listitem></itemizedlist>
|
|
<para>The four styles of each of the four design variations yield 16 generic
|
|
font variations. These 16 generic fonts are among the most commonly used
|
|
in general desktop computing. For example, Times Roman, Helvetica, and Courier,
|
|
each in the four style variations, along with the Symbol font, constitute
|
|
the <emphasis>Adobe® 13</emphasis>—the minimum set of fonts built
|
|
into all PostScript printers.</para>
|
|
<para>Your application might not require an exact font family or name, but
|
|
will need to use, for example, a monospaced font, a sans serif font, or a
|
|
serif font. You do not have to know the exact font names present on a particular
|
|
Common Desktop Environment platform. The Common Desktop Environment standard
|
|
fonts default to the vendor's selection of the best font of a particular
|
|
design on the vendor's platform.</para>
|
|
<para>Specify the<indexterm><primary>XLFD font names</primary></indexterm><indexterm>
|
|
<primary>fonts</primary><secondary>XLFD</secondary></indexterm><indexterm>
|
|
<primary>standard font names</primary><secondary>XLFD font names</secondary>
|
|
</indexterm> XLFD font names for the standard application fonts your application
|
|
needs as font resource values in the application's <filename><indexterm><primary>app-defaults file</primary></indexterm><indexterm><primary>standard font
|
|
names</primary><secondary>app-defaults file</secondary></indexterm>app-defaults</filename> file. If you do not use these font names, you might need to supply
|
|
a different <computeroutput>app-defaults</computeroutput> file for each application
|
|
on each Common Desktop Environment platform<literal><indexterm><primary>application fonts <$endrange></primary></indexterm><indexterm><primary>fonts</primary><secondary>application <$endrange></secondary></indexterm></literal>.
|
|
</para>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.25">
|
|
<title>Interface Fonts<indexterm><primary>interface fonts</primary></indexterm><indexterm>
|
|
<primary>fonts</primary><secondary>interface</secondary></indexterm><indexterm>
|
|
<primary>standard font names</primary><secondary>interface fonts</secondary>
|
|
</indexterm></title>
|
|
<para>Interface fonts are the small set of finely optimized fonts that define
|
|
the look of the desktop on a particular platform. These fonts cleanly and
|
|
quickly convey small amounts of information, such as that appearing in window
|
|
titles, buttons, menus, and text fields.</para>
|
|
<para>The desktop and the Motif toolkit widgets use interface fonts. Do not
|
|
use these fonts directly within your application windows.</para>
|
|
<para>The standard interface font names are different from the standard application
|
|
font names. They, like the application font names, are mapped to different
|
|
fonts on different Common Desktop Environment platforms. Interface fonts
|
|
come in three styles:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para><emphasis>System</emphasis>—Read-only
|
|
text (used for limited amounts of text, for example, on menus, buttons, and
|
|
labels)</para>
|
|
</listitem><listitem><para><emphasis>User</emphasis>—Text the end user
|
|
enters, or text appearing in objects built from <command>XmText</command>-type
|
|
and <command>DtTerm</command>-type widgets</para>
|
|
</listitem><listitem><para><emphasis>User bold</emphasis>—Like the User
|
|
font, but in bold</para>
|
|
</listitem></itemizedlist>
|
|
<para>Each style comes in seven sizes. Using the<indexterm><primary>Style
|
|
Manager</primary></indexterm><indexterm><primary>fonts</primary><secondary>interface</secondary><tertiary>and the Style Manager</tertiary></indexterm> Style
|
|
Manager, users can choose the size of interface fonts they want on their
|
|
desktop.</para>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.26">
|
|
<title>Demo Programs<indexterm><primary>standard font names</primary><secondary>demo programs</secondary></indexterm></title>
|
|
<para>The drawing program demo in <filename>/usr/dt/examples/template</filename>
|
|
does not specify any of its own interface fonts. It serves as an example
|
|
of how the Common Desktop Environment Motif interface fonts appear. However,
|
|
this demo does not take advantage of application fonts.</para>
|
|
<sect3 id="RDMAP.recin.div.27">
|
|
<title>Related Documentation</title>
|
|
<para>For more information on standard fonts, see the relevant man pages—particularly
|
|
<filename>DtStdAppFontNames(5)</filename> and <filename>DtStdInterfaceFontNames(5)</filename> for the list of XLFD font names—and the <emphasis>Programmer's
|
|
Guid</emphasis><emphasis>e</emphasis>.<indexterm><primary>XLFD font names</primary></indexterm><indexterm><primary>fonts</primary><secondary>XLFD</secondary></indexterm><indexterm><primary>fonts</primary><secondary>standard
|
|
font names</secondary></indexterm><indexterm><primary>guidelines</primary>
|
|
<secondary>font use <$endrange></secondary></indexterm></para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.28">
|
|
<title id="rdmap.recin.mkr.13">Displaying Error Messages from Your Application<indexterm>
|
|
<primary>error messages</primary><secondary>displaying</secondary></indexterm><indexterm>
|
|
<primary>guidelines</primary><secondary>error message display <$startrange></secondary></indexterm></title>
|
|
<para>Applications in the Common Desktop Environment follow a common model
|
|
for presenting error messages and warnings. Users running your application
|
|
expect messages to be displayed in message footers, error dialog boxes, or
|
|
warning dialog boxes, with further explanations available in online help,
|
|
when appropriate.</para>
|
|
<para>This section outlines conventions for displaying error messages in your
|
|
application. Because of the way message text is handled, it is important
|
|
to follow these error presentation guidelines precisely. For example, casual
|
|
users who start your application from the Front Panel never see messages
|
|
that you send to standard error or standard out. In the Common Desktop Environment,
|
|
such messages are directed to log files (<filename>$HOME/.dt/*log</filename>)
|
|
that many users do not routinely examine or know about.</para>
|
|
<sect2 id="RDMAP.recin.div.29">
|
|
<title>How to Present Error Messages<indexterm><primary>error messages</primary>
|
|
<secondary>how to display</secondary></indexterm></title>
|
|
<para>Follow these rules when deciding where to tell users about warnings,
|
|
messages, and error conditions:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para><emphasis>If this message is
|
|
informational,</emphasis> display the text in the message footer of the application.
|
|
(<emphasis>Example:</emphasis> “<command>MyDoc</command> file copied.”)
|
|
</para>
|
|
</listitem><listitem><para><emphasis>If this message is about an error or
|
|
serious warning</emphasis>—a problem where an operation important to
|
|
the user has failed—display an error dialog box or warning dialog box.
|
|
</para>
|
|
</listitem></itemizedlist>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.30">
|
|
<title>What Information to Present in Error Dialogs<indexterm><primary>error
|
|
messages</primary><secondary>information to present in error dialogs</secondary>
|
|
</indexterm></title>
|
|
<para>A good error dialog or warning dialog gives a user the following information:
|
|
</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>What happened (from the user's
|
|
point of view)</para>
|
|
</listitem><listitem><para>Why it happened, in simple language</para>
|
|
</listitem><listitem><para>How to fix the problem</para>
|
|
</listitem></itemizedlist>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.31">
|
|
<title>Linking Message Dialogs to Online Help<indexterm><primary>error messages</primary><secondary>linking message dialogs to online help</secondary></indexterm></title>
|
|
<para>In cases where additional background information is required, or where
|
|
it takes more than four or five lines of a dialog to completely explain an
|
|
error, add a button that links the user to the appropriate section of online
|
|
help.</para>
|
|
<sect3 id="RDMAP.recin.div.32">
|
|
<title>Related Documentation</title>
|
|
<para>For details on displaying error messages in your application and linking
|
|
message dialogs to online help, see the <emphasis>Programmer's Guide</emphasis> .<indexterm>
|
|
<primary>error messages</primary><secondary>displaying</secondary></indexterm><indexterm>
|
|
<primary>guidelines</primary><secondary>error message display <$endrange></secondary></indexterm></para>
|
|
</sect3>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.32a">
|
|
<title>Using Message Logging</title>
|
|
<indexterm><primary>error messages</primary><secondary>logging</secondary></indexterm>
|
|
<para>The message logging service logs messages
|
|
for CDE applications. This service
|
|
provides a central location for messages
|
|
that users and system administrators
|
|
can consult to diagnose problems.
|
|
</para>
|
|
<para>The message logging service supports
|
|
several message types: Informational,
|
|
Stderr, Debug, Warning, and Error. In addition
|
|
to logging messages, the
|
|
API supports the use of alternative
|
|
message logging handlers and the ability
|
|
to open message log files.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.32b">
|
|
<title>Printing</title>
|
|
<indexterm><primary>printing</primary></indexterm>
|
|
<para>The CDE printing facility is for use primarily by applications
|
|
that perform X printing, but is sufficiently generalized for
|
|
use by any CDE application. The application user typically prints files through a set of dialogs
|
|
that are invoked when the user selects (for example) the application's
|
|
pull-down menu for printing a file.
|
|
</para>
|
|
<para>Two facilities for supporting printing are available to the application
|
|
developer:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>The DtPrint convenience functions &mdash These provide the user dialogs for
|
|
setting print options. This facility also establishes and maintains print connections,
|
|
initiates printing, and maintains the print setup data.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The Print Dialog Manager &mdash This process is separate from the X Print Server
|
|
and X Printing Application; it provides printer- and spooler-specific setup
|
|
dialogs.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect1>
|
|
<sect1 id="RDMAP.recin.div.33">
|
|
<title id="RDMAP.recin.mkr.14">User Customization Issues<indexterm><primary>user customization issues</primary></indexterm><indexterm><primary>customization</primary><secondary>user issues <$startrange></secondary></indexterm></title>
|
|
<para>This section presents guidelines to follow when designing your application's
|
|
user interface.</para>
|
|
<sect2 id="RDMAP.recin.div.34">
|
|
<title>Color Use<indexterm><primary>user customization issues</primary><secondary>color use</secondary></indexterm><indexterm><primary>color use and user
|
|
customization</primary></indexterm><indexterm><primary>guidelines</primary>
|
|
<secondary>color use</secondary></indexterm></title>
|
|
<para>When you design your application's user interface, do not specify color
|
|
settings that override the default color scheme that the Common Desktop
|
|
Environment provides for Motif and desktop widgets. For application-defined
|
|
colors, use the following colors to promote sharing with other desktop applications:
|
|
</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Black</para>
|
|
</listitem><listitem><para>White</para>
|
|
</listitem><listitem><para>Red</para>
|
|
</listitem><listitem><para>Green</para>
|
|
</listitem><listitem><para>Blue</para>
|
|
</listitem><listitem><para>Yellow</para>
|
|
</listitem><listitem><para>Cyan</para>
|
|
</listitem><listitem><para>Magenta</para>
|
|
</listitem><listitem><para>Gray (eight shades: #de, #bd, #ab, #94, #73, #63,
|
|
#42, and #21)</para>
|
|
</listitem></itemizedlist>
|
|
<para>In most cases, you should not specify colors, so that your application
|
|
uses the colors chosen by the end user in the desktop Style Manager.</para>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.35">
|
|
<title>Font Use<indexterm><primary>user customization issues</primary><secondary>font use</secondary></indexterm><indexterm><primary>fonts</primary><secondary>user customization issues</secondary></indexterm><indexterm><primary>guidelines</primary><secondary>font use</secondary></indexterm></title>
|
|
<para>For your Motif widgets, use the fonts supplied by the Common Desktop
|
|
Environment so that your application's windows look like other desktop client
|
|
windows and so that users can change the size of these fonts using the Style
|
|
Manager. If you override the supplied fonts by changing the Motif <computeroutput>fontList</computeroutput> resource specifications, then you must provide
|
|
additional functionality if you want users to be able to customize the fonts
|
|
in your application.</para>
|
|
<para>Use the fonts from the Common Desktop Environment standard application
|
|
font names to specify—in your <computeroutput><indexterm><primary>app-defaults file</primary></indexterm>app-defaults</computeroutput> file—resources
|
|
you use within your application (aside from the ones Motif uses for its widgets).
|
|
This ensures that your application finds the appropriate fonts on all Common
|
|
Desktop Environment platforms, which makes your application more portable
|
|
across such platforms. For more information, see <!--Original XRef content:
|
|
'&xd2;Standard Font Names&xd3; on page 55'--><xref role="SecTitleAndPageNum"
|
|
linkend="RDMAP.recin.mkr.12">.</para>
|
|
<note>
|
|
<para>The<indexterm><primary>Style Manager</primary></indexterm> Style Manager
|
|
only controls fonts for applications written using Motif version 2.1 or later.
|
|
It will <symbol role="Variable">not</symbol> supply correct fonts for Motif
|
|
1.1 (or earlier) applications. These applications must specify their own
|
|
fonts in the <filename>app-defaults</filename> file.</para>
|
|
</note>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.36">
|
|
<title>Accessibility<indexterm><primary>user customization issues</primary>
|
|
<secondary>accessibility <$startrange></secondary></indexterm><indexterm><primary>guidelines</primary>
|
|
<secondary>accessibility <$startrange></secondary></indexterm></title>
|
|
<para>This section provides guidelines for making software applications accessible
|
|
to people with disabilities.</para>
|
|
<sect3 id="RDMAP.recin.div.37">
|
|
<title>Physical Disabilities<indexterm><primary>accessibility</primary><secondary>physical disabilities</secondary></indexterm><indexterm><primary>physical
|
|
disabilities and user customization</primary></indexterm><indexterm><primary>disabilities and user customization</primary><secondary>physical</secondary>
|
|
</indexterm></title>
|
|
<para>Provide keyboard access to all application features, such as those usually
|
|
accessible through menus or drag and drop, to enable people with physical
|
|
disabilities to more easily use your application.</para>
|
|
</sect3>
|
|
<sect3 id="RDMAP.recin.div.38">
|
|
<title>Visual Disabilities<indexterm><primary>accessibility</primary><secondary>visual disabilities</secondary></indexterm><indexterm><primary>visual disabilities
|
|
and user customization</primary></indexterm><indexterm><primary>disabilities
|
|
and user customization</primary><secondary>visual</secondary></indexterm></title>
|
|
<para>Follow these guidelines to make your application more accessible to
|
|
people with visual disabilities:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Do not hardcode application
|
|
colors.</para>
|
|
</listitem><listitem><para>Do not hardcode graphic attributes such as line,
|
|
border, and shadow thickness. These attributes should scale with font size.
|
|
</para>
|
|
</listitem><listitem><para>Do not hardcode font sizes and styles.</para>
|
|
</listitem><listitem><para>Provide descriptive names for all widgets. In particular,
|
|
include descriptive names <emphasis>in your application code</emphasis> for
|
|
widgets that do not display labels on the screen; for example, palette items
|
|
or icons. This often enables screen-reading software to provide descriptive
|
|
information to blind users.</para>
|
|
</listitem></itemizedlist>
|
|
</sect3>
|
|
<sect3 id="RDMAP.recin.div.39">
|
|
<title>Hearing Disabilities<indexterm><primary>accessibility</primary><secondary>hearing disabilities</secondary></indexterm><indexterm><primary>hearing disabilities
|
|
and user customization</primary></indexterm><indexterm><primary>disabilities
|
|
and user customization</primary><secondary>hearing</secondary></indexterm></title>
|
|
<para>Follow these guidelines to make your application more accessible to
|
|
people with hearing disabilities:</para>
|
|
<itemizedlist remap="Bullet1"><listitem><para>Never assume that an end user
|
|
will hear an audible notification.</para>
|
|
</listitem><listitem><para>Where appropriate, allow end users to choose between
|
|
audible or visual cues.</para>
|
|
</listitem><listitem><para>Do not overuse or rely exclusively on audible cues.
|
|
</para>
|
|
</listitem><listitem><para>Enable end users to configure frequency and volume
|
|
of audible cues.</para>
|
|
</listitem></itemizedlist>
|
|
</sect3>
|
|
<sect3 id="RDMAP.recin.div.40">
|
|
<title>Language, Cognitive, and Other Disabilities<indexterm><primary>accessibility</primary><secondary>language, cognitive, and other disabilities</secondary>
|
|
</indexterm><indexterm><primary>language disabilities and user customization</primary></indexterm><indexterm><primary>disabilities and user customization</primary><secondary>language, cognitive, and other</secondary></indexterm></title>
|
|
<para>The access guidelines outlined for visual, hearing, and physical disabilities
|
|
typically benefit end users with cognitive, language, and other disabilities.
|
|
In addition to those guidelines, include tear-off menus and user-configurable
|
|
menus for important application features whenever possible.<indexterm>
|
|
<primary>user customization issues</primary><secondary>accessibility <$endrange></secondary></indexterm><indexterm>
|
|
<primary>guidelines</primary><secondary>accessibility <$endrange></secondary></indexterm></para>
|
|
</sect3>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.41">
|
|
<title>Mouse Double-Click Speed<indexterm><primary>mouse double-click speed</primary></indexterm><indexterm><primary>guidelines</primary><secondary>mouse double-click speed</secondary></indexterm><indexterm><primary>user
|
|
customization issues</primary><secondary>mouse double-click speed</secondary>
|
|
</indexterm></title>
|
|
<para>For the end user to experience consistency across applications, you
|
|
should not hardcode double-click durations into your application or <filename><indexterm>
|
|
<primary>app-defaults file</primary></indexterm>app-defaults</filename> files.
|
|
This way, when the user changes the double-click time in the<indexterm>
|
|
<primary>Style Manager</primary></indexterm> Style Manager, your application
|
|
responds along with the other desktop applications.</para>
|
|
</sect2>
|
|
<sect2 id="RDMAP.recin.div.42">
|
|
<title>Demo Programs<indexterm><primary>user customization issues</primary>
|
|
<secondary>demo program</secondary></indexterm></title>
|
|
<para>The drawing program demo in <filename>/usr/dt/examples/template</filename>
|
|
uses the Common Desktop Environment's default colors and fonts. This enables
|
|
the user to customize the colors and fonts in this program by using the Style
|
|
Manager. Read the <command>README</command> file for detailed information
|
|
on this demo.</para>
|
|
<sect3 id="RDMAP.recin.div.43">
|
|
<title>Related Documentation</title>
|
|
<para>For more information on user customization issues, see the <emphasis>Style Guide and Certification Checklist</emphasis>.<indexterm><primary>customization</primary><secondary>user issues <$endrange></secondary></indexterm><indexterm><primary>recommended integration <$endrange></primary></indexterm><indexterm>
|
|
<primary>levels of integration</primary><secondary>recommended <$endrange></secondary></indexterm><indexterm>
|
|
<primary>integration</primary><secondary>recommended <$endrange></secondary></indexterm></para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|
|
<!--fickle 1.14 mif-to-docbook 1.7 01/02/96 04:30:53-->
|
|
<?Pub *0000053768>
|