Contents in 1999-06-04-13 of release-21-2.
[chise/xemacs-chise.git.1] / man / external-widget.texi
1 \input texinfo  @c -*-texinfo-*-
2 @setfilename ../info/external-widget.info
3
4 @ifinfo
5 @dircategory XEmacs Editor
6 @direntry
7 * External Widget: (external-widget) External Client Widget.
8 @end direntry
9 @end ifinfo
10
11 @node Top, Using an External Client Widget,, (dir)
12
13 An @dfn{external client widget} is a widget that is part of another program
14 but functions as an Emacs frame.  This is intended to be a more
15 powerful replacement for standard text widgets.
16
17 @menu
18 * Using an External Client Widget::
19 * External Client Widget Resource Settings::
20 * Motif-Specific Info About the External Client Widget::
21 @end menu
22
23
24 @node Using an External Client Widget, External Client Widget Resource Settings, Top, Top
25 @chapter Using an External Client Widget
26
27 There are three different implementations of the external client widget.
28 One is designed for use in Motif applications and is linked with the
29 option @code{-lextcli_Xm}.  Another is designed for non-Motif
30 applications that still use the X toolkit; it is linked with the option
31 @code{-lextcli_Xt}.  The third is designed for applications that do not
32 use the X toolkit; it is linked with the option @code{-lextcli_Xlib}.
33 In order to use an external client widget in a client program that uses
34 the X toolkit (i.e. either of the first two options described above),
35 simply create an instance of widget type ExternalClient and link your
36 program with the appropriate library.  The corresponding header file is
37 called @file{ExternalClient.h}.
38
39 Documentation still needs to be provided for using the raw Xlib
40 version of the external client widget.
41
42 The external client widget will not do anything until an instance of
43 Emacs is told about this particular widget.  To do that, call the
44 function @code{make-frame}, specifying a value for the frame parameter
45 @code{window-id}.  This value should be a string containing the decimal
46 representation of the widget's X window ID number (this can be obtained
47 by the Xt function @code{XtWindow()}).  In order for the client program
48 to communicate this information to Emacs, a method such as sending a
49 ToolTalk message needs to be used.
50
51 Once @code{make-frame} has been called, Emacs will create a frame
52 that occupies the client widget's window.  This frame can be used just
53 like any other frame in Emacs.
54
55
56 @node External Client Widget Resource Settings, Motif-Specific Info About the External Client Widget, Using an External Client Widget, Top
57 @chapter External Client Widget Resource Settings
58
59 The external client widget is a subclass of the Motif widget XmPrimitive
60 and thus inherits all its resources.  In addition, the following new
61 resources are defined:
62
63 @table @samp
64 @item deadShell (class DeadShell)
65 A boolean resource indicating whether the last request to the
66 ExternalShell widget that contains the frame corresponding to this
67 widget timed out.  If true, no further requests will be made (all
68 requests will automatically fail) until a response to the last
69 request is received.  This resource should normally not be set by the
70 user.
71
72 @item shellTimeout (class ShellTimeout)
73 A value specifying how long (in milliseconds) the client should wait
74 for a response when making a request to the corresponding ExternalShell
75 widget.  If this timeout is exceeded, the client will assume that the
76 shell is dead and will fail the request and all subsequent requests
77 until a response to the request is received.  Default value is 5000,
78 or 5 seconds.
79 @end table
80
81 The shell that contains the frame corresponding to an external client
82 widget is of type ExternalShell, as opposed to standard frames, whose
83 shell is of type TopLevelShell.  The ExternalShell widget is a direct
84 subclass of Shell and thus inherits its resources.  In addition, the
85 following new resources are defined:
86
87 @table @samp
88 @item window (class Window)
89 The X window ID of the widget to use for this Emacs frame.  This is
90 normally set by the call to @code{x-create-frame} and should not be
91 modified by the user.
92
93 @item deadClient (class DeadClient)
94 A boolean resource indicating whether the last request to the
95 corresponding ExternalClient widget timed out.  If true, no further
96 requests will be made (all requests will automatically fail) until a
97 response to the last request is received.  This resource should
98 normally not be set by the user.
99
100 @item ClientTimeout (class ClientTimeout)
101 A value specifying how long (in milliseconds) the shell should wait
102 for a response when making a request to the corresponding ExternalClient
103 widget.  If this timeout is exceeded, the shell will assume that the
104 client is dead and will fail the request and all subsequent requests
105 until a response to the request is received.  Default value is 5000,
106 or 5 seconds.
107 @end table
108
109 Note that the requests that are made between the client and the shell
110 are primarily for handling query-geometry and geometry-manager requests
111 made by parent or child widgets.
112
113
114 @node Motif-Specific Info About the External Client Widget, , External Client Widget Resource Settings, Top
115 @chapter Motif-Specific Info About the External Client Widget
116
117 By default, the external client widget has navigation type
118 @samp{XmTAB_GROUP}.
119
120 The widget traversal keystrokes are modified slightly from the standard
121 XmPrimitive keystrokes.  In particular, @kbd{@key{TAB}} alone does not
122 traverse to the next widget (@kbd{Ctrl-@key{TAB}} must be used instead),
123 but functions like a normal @key{TAB} in Emacs.  This follows the
124 semantics of the Motif text widget.  The traversal keystrokes
125 @kbd{Ctrl-@key{TAB}} and @kbd{Shift-@key{TAB}} are silently filtered by
126 the external client widget and are not seen by Emacs.
127
128 @summarycontents
129 @contents
130 @bye