Mercurial > hg > xemacs-beta
comparison man/widget.texi @ 5741:d11efddf3617
Fix texinfo constructs that are rejected by texinfo 5.x. See xemacs-patches
message <CAHCOHQngK6wyLhBtP9i5ngMyGTV9GFh3qU9tq8XebYTdVOYU2w@mail.gmail.com>.
author | Jerry James <james@xemacs.org> |
---|---|
date | Fri, 21 Jun 2013 08:44:33 -0600 |
parents | 64be8a494bdc |
children |
comparison
equal
deleted
inserted
replaced
5740:00a421d2b2ba | 5741:d11efddf3617 |
---|---|
4 @settitle The Emacs Widget Library | 4 @settitle The Emacs Widget Library |
5 @syncodeindex fn cp | 5 @syncodeindex fn cp |
6 @syncodeindex vr cp | 6 @syncodeindex vr cp |
7 @syncodeindex ky cp | 7 @syncodeindex ky cp |
8 @c %**end of header | 8 @c %**end of header |
9 @c Synced up with: FSF 23.1.92. | 9 @c Synced up with: FSF 24.3 |
10 @c Synced by: Ben Wing, 2-17-10. | 10 @c Synced by: Jerry James, 19-Jun-2013. |
11 | 11 |
12 @copying | 12 @copying |
13 Copyright @copyright{} 2000, 2001, 2002, 2003, 2004, 2005, | 13 Copyright @copyright{} 2000--2013 Free Software Foundation, Inc. |
14 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. | |
15 | 14 |
16 @quotation | 15 @quotation |
17 Permission is granted to copy, distribute and/or modify this document | 16 Permission is granted to copy, distribute and/or modify this document |
18 under the terms of the GNU Free Documentation License, Version 1.3 or | 17 under the terms of the GNU Free Documentation License, Version 1.3 or |
19 any later version published by the Free Software Foundation; with no | 18 any later version published by the Free Software Foundation; with no |
106 * composite:: | 105 * composite:: |
107 | 106 |
108 @end detailmenu | 107 @end detailmenu |
109 @end menu | 108 @end menu |
110 | 109 |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 @node Introduction, User Interface, Top, Top | 110 @node Introduction, User Interface, Top, Top |
122 @comment node-name, next, previous, up | 111 @comment node-name, next, previous, up |
123 @section Introduction | 112 @chapter Introduction |
124 | 113 |
125 @c XEmacs changes to reflect history, native widgets, and GTK | 114 @c XEmacs changes to reflect history, native widgets, and GTK |
126 Most graphical user interface toolkits provide | 115 Most graphical user interface toolkits provide |
127 a number of standard user interface controls (sometimes known as | 116 a number of standard user interface controls (sometimes known as |
128 `widgets' or `gadgets'). Historically, Emacs didn't support anything like | 117 `widgets' or `gadgets'). Historically, Emacs didn't support anything like |
129 this, except for its incredible powerful text ``widget''. However, | 118 this, except for its incredibly powerful text ``widget''. However, |
130 since XEmacs 21.4, XEmacs has supported ``native'' widgets (GUI controls | 119 since XEmacs 21.4, XEmacs has supported ``native'' widgets (GUI controls |
131 implemented as Lisp APIs in C for the MS Windows, Motif, Athena, and GTK | 120 implemented as Lisp APIs in C for the MS Windows, Motif, Athena, and GTK |
132 toolkits) and libglade (GUI controls with an XML API for the GTK | 121 toolkits) and libglade (GUI controls with an XML API for the GTK |
133 toolkit). On the other hand, Emacs does provide the necessary | 122 toolkit). On the other hand, Emacs does provide the necessary |
134 primitives to implement many other widgets within a text buffer, and of | 123 primitives to implement many other widgets within a text buffer, and of |
191 text field, and sometimes prevent entering invalid data. | 180 text field, and sometimes prevent entering invalid data. |
192 @item | 181 @item |
193 You can have fixed sized fields, thus allowing multiple fields to be | 182 You can have fixed sized fields, thus allowing multiple fields to be |
194 lined up in columns. | 183 lined up in columns. |
195 @item | 184 @item |
196 It is simple to query or set the value of a field. | 185 It is simple to query or set the value of a field. |
197 @item | 186 @item |
198 Editing happens in a normal buffer, not in the mini-buffer. | 187 Editing happens in a normal buffer, not in the mini-buffer. |
199 @item | 188 @item |
200 Packages using the library get a uniform look-and-feel, making them easier for | 189 Packages using the library get a uniform look-and-feel, making them easier for |
201 the user to learn. | 190 the user to learn. |
202 @item | 191 @item |
203 As support for embedded graphics improve, the widget library will be | 192 As support for embedded graphics improve, the widget library will be |
204 extended to use the GUI features. This means that your code using the | 193 extended to use the GUI features. This means that your code using the |
205 widget library will also use the new graphic features automatically. | 194 widget library will also use the new graphic features automatically. |
206 @item | 195 @item |
207 A widget specification is implemented as a class, and new subclasses can | 196 A widget specification is implemented as a class, and new subclasses can |
232 it will be autoloaded when needed. | 221 it will be autoloaded when needed. |
233 @end table | 222 @end table |
234 | 223 |
235 @node User Interface, Programming Example, Introduction, Top | 224 @node User Interface, Programming Example, Introduction, Top |
236 @comment node-name, next, previous, up | 225 @comment node-name, next, previous, up |
237 @section User Interface | 226 @chapter User Interface |
238 | 227 |
239 A form consists of read only text for documentation and some fields, | 228 A form consists of read only text for documentation and some fields, |
240 where each field contains two parts, a tag and a value. The tags are | 229 where each field contains two parts, a tag and a value. The tags are |
241 used to identify the fields, so the documentation can refer to the | 230 used to identify the fields, so the documentation can refer to the |
242 @samp{foo field}, meaning the field tagged with @samp{Foo}. Here is an | 231 @samp{foo field}, meaning the field tagged with @samp{Foo}. Here is an |
278 @samp{Select multiple}, @samp{Select one}, @samp{[Apply Form]}, and | 267 @samp{Select multiple}, @samp{Select one}, @samp{[Apply Form]}, and |
279 @samp{[Reset Form]}. There are basically two things the user can do | 268 @samp{[Reset Form]}. There are basically two things the user can do |
280 within a form, namely editing the editable text fields and activating | 269 within a form, namely editing the editable text fields and activating |
281 the buttons. | 270 the buttons. |
282 | 271 |
283 @subsection Editable Text Fields | 272 @section Editable Text Fields |
284 | 273 |
285 In the example, the value for the @samp{Name} is most likely displayed | 274 In the example, the value for the @samp{Name} is most likely displayed |
286 in an editable text field, and so are values for each of the members of | 275 in an editable text field, and so are values for each of the members of |
287 the @samp{Numbers} list. All the normal Emacs editing operations are | 276 the @samp{Numbers} list. All the normal Emacs editing operations are |
288 available for editing these fields. The only restriction is that each | 277 available for editing these fields. The only restriction is that each |
315 | 304 |
316 @deffn Face widget-field-face | 305 @deffn Face widget-field-face |
317 Face used for other editing fields. | 306 Face used for other editing fields. |
318 @end deffn | 307 @end deffn |
319 | 308 |
320 @subsection Buttons | 309 @section Buttons |
321 | 310 |
322 @cindex widget buttons | 311 @cindex widget buttons |
323 @cindex button widgets | 312 @cindex button widgets |
324 Some portions of the buffer have an associated @dfn{action}, which can | 313 Some portions of the buffer have an associated @dfn{action}, which can |
325 be @dfn{invoked} by a standard key or mouse command. These portions | 314 be @dfn{invoked} by a standard key or mouse command. These portions |
386 @defopt widget-mouse-face | 375 @defopt widget-mouse-face |
387 Face used for highlighting a button when the mouse pointer moves across | 376 Face used for highlighting a button when the mouse pointer moves across |
388 it. | 377 it. |
389 @end defopt | 378 @end defopt |
390 | 379 |
391 @subsection Navigation | 380 @section Navigation |
392 | 381 |
393 You can use all the normal Emacs commands to move around in a form | 382 You can use all the normal Emacs commands to move around in a form |
394 buffer, plus you will have these additional commands: | 383 buffer, plus you will have these additional commands: |
395 | 384 |
396 @table @kbd | 385 @table @kbd |
405 @end deffn | 394 @end deffn |
406 @end table | 395 @end table |
407 | 396 |
408 @node Programming Example, Setting Up the Buffer, User Interface, Top | 397 @node Programming Example, Setting Up the Buffer, User Interface, Top |
409 @comment node-name, next, previous, up | 398 @comment node-name, next, previous, up |
410 @section Programming Example | 399 @chapter Programming Example |
411 | 400 |
412 @cindex widgets, programming example | 401 @cindex widgets, programming example |
413 @cindex example of using widgets | 402 @cindex example of using widgets |
414 Here is the code to implement the user interface example (@pxref{User | 403 Here is the code to implement the user interface example (@pxref{User |
415 Interface}). | 404 Interface}). |
501 (widget-setup)) | 490 (widget-setup)) |
502 @end lisp | 491 @end lisp |
503 | 492 |
504 @node Setting Up the Buffer, Basic Types, Programming Example, Top | 493 @node Setting Up the Buffer, Basic Types, Programming Example, Top |
505 @comment node-name, next, previous, up | 494 @comment node-name, next, previous, up |
506 @section Setting Up the Buffer | 495 @chapter Setting Up the Buffer |
507 | 496 |
508 Widgets are created with @code{widget-create}, which returns a | 497 Widgets are created with @code{widget-create}, which returns a |
509 @dfn{widget} object. This object can be queried and manipulated by | 498 @dfn{widget} object. This object can be queried and manipulated by |
510 other widget functions, until it is deleted with @code{widget-delete}. | 499 other widget functions, until it is deleted with @code{widget-delete}. |
511 After the widgets have been created, @code{widget-setup} must be called | 500 After the widgets have been created, @code{widget-setup} must be called |
556 when not on a button. By default this is @code{global-map}. | 545 when not on a button. By default this is @code{global-map}. |
557 @end defvar | 546 @end defvar |
558 | 547 |
559 @node Basic Types, Sexp Types, Setting Up the Buffer, Top | 548 @node Basic Types, Sexp Types, Setting Up the Buffer, Top |
560 @comment node-name, next, previous, up | 549 @comment node-name, next, previous, up |
561 @section Basic Types | 550 @chapter Basic Types |
562 | 551 |
563 This is the general syntax of a type specification: | 552 This is the general syntax of a type specification: |
564 | 553 |
565 @example | 554 @example |
566 @var{name} ::= (@var{name} [@var{keyword} @var{argument}]... @var{args}) | 555 @var{name} ::= (@var{name} [@var{keyword} @var{argument}]... @var{args}) |
801 * group:: | 790 * group:: |
802 @end menu | 791 @end menu |
803 | 792 |
804 @node link, url-link, Basic Types, Basic Types | 793 @node link, url-link, Basic Types, Basic Types |
805 @comment node-name, next, previous, up | 794 @comment node-name, next, previous, up |
806 @subsection The @code{link} Widget | 795 @section The @code{link} Widget |
807 @findex link@r{ widget} | 796 @findex link@r{ widget} |
808 | 797 |
809 Syntax: | 798 Syntax: |
810 | 799 |
811 @example | 800 @example |
826 String to suffix links. | 815 String to suffix links. |
827 @end defopt | 816 @end defopt |
828 | 817 |
829 @node url-link, info-link, link, Basic Types | 818 @node url-link, info-link, link, Basic Types |
830 @comment node-name, next, previous, up | 819 @comment node-name, next, previous, up |
831 @subsection The @code{url-link} Widget | 820 @section The @code{url-link} Widget |
832 @findex url-link@r{ widget} | 821 @findex url-link@r{ widget} |
833 | 822 |
834 Syntax: | 823 Syntax: |
835 | 824 |
836 @example | 825 @example |
841 When this link is invoked, the @acronym{WWW} browser specified by | 830 When this link is invoked, the @acronym{WWW} browser specified by |
842 @code{browse-url-browser-function} will be called with @var{url}. | 831 @code{browse-url-browser-function} will be called with @var{url}. |
843 | 832 |
844 @node info-link, push-button, url-link, Basic Types | 833 @node info-link, push-button, url-link, Basic Types |
845 @comment node-name, next, previous, up | 834 @comment node-name, next, previous, up |
846 @subsection The @code{info-link} Widget | 835 @section The @code{info-link} Widget |
847 @findex info-link@r{ widget} | 836 @findex info-link@r{ widget} |
848 | 837 |
849 Syntax: | 838 Syntax: |
850 | 839 |
851 @example | 840 @example |
855 When this link is invoked, the built-in Info reader is started on | 844 When this link is invoked, the built-in Info reader is started on |
856 @var{address}. | 845 @var{address}. |
857 | 846 |
858 @node push-button, editable-field, info-link, Basic Types | 847 @node push-button, editable-field, info-link, Basic Types |
859 @comment node-name, next, previous, up | 848 @comment node-name, next, previous, up |
860 @subsection The @code{push-button} Widget | 849 @section The @code{push-button} Widget |
861 @findex push-button@r{ widget} | 850 @findex push-button@r{ widget} |
862 | 851 |
863 Syntax: | 852 Syntax: |
864 | 853 |
865 @example | 854 @example |
880 String to suffix push buttons. | 869 String to suffix push buttons. |
881 @end defopt | 870 @end defopt |
882 | 871 |
883 @node editable-field, text, push-button, Basic Types | 872 @node editable-field, text, push-button, Basic Types |
884 @comment node-name, next, previous, up | 873 @comment node-name, next, previous, up |
885 @subsection The @code{editable-field} Widget | 874 @section The @code{editable-field} Widget |
886 @findex editable-field@r{ widget} | 875 @findex editable-field@r{ widget} |
887 | 876 |
888 Syntax: | 877 Syntax: |
889 | 878 |
890 @example | 879 @example |
932 @code{:action}. | 921 @code{:action}. |
933 @end table | 922 @end table |
934 | 923 |
935 @node text, menu-choice, editable-field, Basic Types | 924 @node text, menu-choice, editable-field, Basic Types |
936 @comment node-name, next, previous, up | 925 @comment node-name, next, previous, up |
937 @subsection The @code{text} Widget | 926 @section The @code{text} Widget |
938 @findex text@r{ widget} | 927 @findex text@r{ widget} |
939 | 928 |
940 @vindex widget-text-keymap | 929 @vindex widget-text-keymap |
941 This is just like @code{editable-field}, but intended for multiline text | 930 This is just like @code{editable-field}, but intended for multiline text |
942 fields. The default @code{:keymap} is @code{widget-text-keymap}, which | 931 fields. The default @code{:keymap} is @code{widget-text-keymap}, which |
943 does not rebind the @key{RET} key. | 932 does not rebind the @key{RET} key. |
944 | 933 |
945 @node menu-choice, radio-button-choice, text, Basic Types | 934 @node menu-choice, radio-button-choice, text, Basic Types |
946 @comment node-name, next, previous, up | 935 @comment node-name, next, previous, up |
947 @subsection The @code{menu-choice} Widget | 936 @section The @code{menu-choice} Widget |
948 @findex menu-choice@r{ widget} | 937 @findex menu-choice@r{ widget} |
949 | 938 |
950 Syntax: | 939 Syntax: |
951 | 940 |
952 @example | 941 @example |
983 The list of types. | 972 The list of types. |
984 @end table | 973 @end table |
985 | 974 |
986 @node radio-button-choice, item, menu-choice, Basic Types | 975 @node radio-button-choice, item, menu-choice, Basic Types |
987 @comment node-name, next, previous, up | 976 @comment node-name, next, previous, up |
988 @subsection The @code{radio-button-choice} Widget | 977 @section The @code{radio-button-choice} Widget |
989 @findex radio-button-choice@r{ widget} | 978 @findex radio-button-choice@r{ widget} |
990 | 979 |
991 Syntax: | 980 Syntax: |
992 | 981 |
993 @example | 982 @example |
1050 widget has been created will @strong{not} be properly destructed when | 1039 widget has been created will @strong{not} be properly destructed when |
1051 you call @code{widget-delete}. | 1040 you call @code{widget-delete}. |
1052 | 1041 |
1053 @node item, choice-item, radio-button-choice, Basic Types | 1042 @node item, choice-item, radio-button-choice, Basic Types |
1054 @comment node-name, next, previous, up | 1043 @comment node-name, next, previous, up |
1055 @subsection The @code{item} Widget | 1044 @section The @code{item} Widget |
1056 @findex item@r{ widget} | 1045 @findex item@r{ widget} |
1057 | 1046 |
1058 Syntax: | 1047 Syntax: |
1059 | 1048 |
1060 @example | 1049 @example |
1065 property. The value should be a string, which will be inserted in the | 1054 property. The value should be a string, which will be inserted in the |
1066 buffer. This widget will only match the specified value. | 1055 buffer. This widget will only match the specified value. |
1067 | 1056 |
1068 @node choice-item, toggle, item, Basic Types | 1057 @node choice-item, toggle, item, Basic Types |
1069 @comment node-name, next, previous, up | 1058 @comment node-name, next, previous, up |
1070 @subsection The @code{choice-item} Widget | 1059 @section The @code{choice-item} Widget |
1071 @findex choice-item@r{ widget} | 1060 @findex choice-item@r{ widget} |
1072 | 1061 |
1073 Syntax: | 1062 Syntax: |
1074 | 1063 |
1075 @example | 1064 @example |
1082 equivalent to activating the parent widget. This widget will only match | 1071 equivalent to activating the parent widget. This widget will only match |
1083 the specified value. | 1072 the specified value. |
1084 | 1073 |
1085 @node toggle, checkbox, choice-item, Basic Types | 1074 @node toggle, checkbox, choice-item, Basic Types |
1086 @comment node-name, next, previous, up | 1075 @comment node-name, next, previous, up |
1087 @subsection The @code{toggle} Widget | 1076 @section The @code{toggle} Widget |
1088 @findex toggle@r{ widget} | 1077 @findex toggle@r{ widget} |
1089 | 1078 |
1090 Syntax: | 1079 Syntax: |
1091 | 1080 |
1092 @example | 1081 @example |
1115 emacsen that supports this. | 1104 emacsen that supports this. |
1116 @end table | 1105 @end table |
1117 | 1106 |
1118 @node checkbox, checklist, toggle, Basic Types | 1107 @node checkbox, checklist, toggle, Basic Types |
1119 @comment node-name, next, previous, up | 1108 @comment node-name, next, previous, up |
1120 @subsection The @code{checkbox} Widget | 1109 @section The @code{checkbox} Widget |
1121 @findex checkbox@r{ widget} | 1110 @findex checkbox@r{ widget} |
1122 | 1111 |
1123 This widget has two possible states, @samp{selected} and | 1112 This widget has two possible states, @samp{selected} and |
1124 @samp{unselected}, which corresponds to a @code{t} or @code{nil} value. | 1113 @samp{unselected}, which corresponds to a @code{t} or @code{nil} value. |
1125 | 1114 |
1129 @var{type} ::= (checkbox [@var{keyword} @var{argument}]...) | 1118 @var{type} ::= (checkbox [@var{keyword} @var{argument}]...) |
1130 @end example | 1119 @end example |
1131 | 1120 |
1132 @node checklist, editable-list, checkbox, Basic Types | 1121 @node checklist, editable-list, checkbox, Basic Types |
1133 @comment node-name, next, previous, up | 1122 @comment node-name, next, previous, up |
1134 @subsection The @code{checklist} Widget | 1123 @section The @code{checklist} Widget |
1135 @findex checklist@r{ widget} | 1124 @findex checklist@r{ widget} |
1136 | 1125 |
1137 Syntax: | 1126 Syntax: |
1138 | 1127 |
1139 @example | 1128 @example |
1187 The list of types. | 1176 The list of types. |
1188 @end table | 1177 @end table |
1189 | 1178 |
1190 @node editable-list, group, checklist, Basic Types | 1179 @node editable-list, group, checklist, Basic Types |
1191 @comment node-name, next, previous, up | 1180 @comment node-name, next, previous, up |
1192 @subsection The @code{editable-list} Widget | 1181 @section The @code{editable-list} Widget |
1193 @findex editable-list@r{ widget} | 1182 @findex editable-list@r{ widget} |
1194 | 1183 |
1195 Syntax: | 1184 Syntax: |
1196 | 1185 |
1197 @example | 1186 @example |
1245 List whose @sc{car} is the type of the list elements. | 1234 List whose @sc{car} is the type of the list elements. |
1246 @end table | 1235 @end table |
1247 | 1236 |
1248 @node group, , editable-list, Basic Types | 1237 @node group, , editable-list, Basic Types |
1249 @comment node-name, next, previous, up | 1238 @comment node-name, next, previous, up |
1250 @subsection The @code{group} Widget | 1239 @section The @code{group} Widget |
1251 @findex group@r{ widget} | 1240 @findex group@r{ widget} |
1252 | 1241 |
1253 This widget simply groups other widgets together. | 1242 This widget simply groups other widgets together. |
1254 | 1243 |
1255 Syntax: | 1244 Syntax: |
1260 | 1249 |
1261 The value is a list, with one member for each @var{type}. | 1250 The value is a list, with one member for each @var{type}. |
1262 | 1251 |
1263 @node Sexp Types, Widget Properties, Basic Types, Top | 1252 @node Sexp Types, Widget Properties, Basic Types, Top |
1264 @comment | 1253 @comment |
1265 @section Sexp Types | 1254 @chapter Sexp Types |
1266 @cindex sexp types | 1255 @cindex sexp types |
1267 | 1256 |
1268 A number of widgets for editing @dfn{s-expressions} (Lisp types), sexp | 1257 A number of widgets for editing @dfn{s-expressions} (Lisp types), sexp |
1269 for short, are also available. These basically fall in several | 1258 for short, are also available. These basically fall in several |
1270 categories described in this section. | 1259 categories described in this section. |
1276 * composite:: | 1265 * composite:: |
1277 @end menu | 1266 @end menu |
1278 | 1267 |
1279 @node constants, generic, Sexp Types, Sexp Types | 1268 @node constants, generic, Sexp Types, Sexp Types |
1280 @comment node-name, next, previous, up | 1269 @comment node-name, next, previous, up |
1281 @subsection The Constant Widgets | 1270 @section The Constant Widgets |
1282 @cindex constant widgets | 1271 @cindex constant widgets |
1283 | 1272 |
1284 The @code{const} widget can contain any Lisp expression, but the user is | 1273 The @code{const} widget can contain any Lisp expression, but the user is |
1285 prohibited from editing it, which is mainly useful as a component of one | 1274 prohibited from editing it, which is mainly useful as a component of one |
1286 of the composite widgets. | 1275 of the composite widgets. |
1313 An immutable symbol that is bound as a function. | 1302 An immutable symbol that is bound as a function. |
1314 @end deffn | 1303 @end deffn |
1315 | 1304 |
1316 @node generic, atoms, constants, Sexp Types | 1305 @node generic, atoms, constants, Sexp Types |
1317 @comment node-name, next, previous, up | 1306 @comment node-name, next, previous, up |
1318 @subsection Generic Sexp Widget | 1307 @section Generic Sexp Widget |
1319 @cindex generic sexp widget | 1308 @cindex generic sexp widget |
1320 | 1309 |
1321 The @code{sexp} widget can contain any Lisp expression, and allows the | 1310 The @code{sexp} widget can contain any Lisp expression, and allows the |
1322 user to edit it inline in the buffer. | 1311 user to edit it inline in the buffer. |
1323 | 1312 |
1335 @code{editable-field} widget. @xref{editable-field}. | 1324 @code{editable-field} widget. @xref{editable-field}. |
1336 @end deffn | 1325 @end deffn |
1337 | 1326 |
1338 @node atoms, composite, generic, Sexp Types | 1327 @node atoms, composite, generic, Sexp Types |
1339 @comment node-name, next, previous, up | 1328 @comment node-name, next, previous, up |
1340 @subsection Atomic Sexp Widgets | 1329 @section Atomic Sexp Widgets |
1341 @cindex atomic sexp widget | 1330 @cindex atomic sexp widget |
1342 | 1331 |
1343 The atoms are s-expressions that do not consist of other s-expressions. | 1332 The atoms are s-expressions that do not consist of other s-expressions. |
1344 For example, a string, a file name, or a symbol are atoms, while a list | 1333 For example, a string, a file name, or a symbol are atoms, while a list |
1345 is a composite type. You can edit the value of an atom with the | 1334 is a composite type. You can edit the value of an atom with the |
1413 @end deffn | 1402 @end deffn |
1414 | 1403 |
1415 | 1404 |
1416 @node composite, , atoms, Sexp Types | 1405 @node composite, , atoms, Sexp Types |
1417 @comment node-name, next, previous, up | 1406 @comment node-name, next, previous, up |
1418 @subsection Composite Sexp Widgets | 1407 @section Composite Sexp Widgets |
1419 @cindex composite sexp widgets | 1408 @cindex composite sexp widgets |
1420 | 1409 |
1421 The syntax for the composite widget construct is: | 1410 The syntax for the composite widget construct is: |
1422 | 1411 |
1423 @example | 1412 @example |
1515 @end example | 1504 @end example |
1516 @end deffn | 1505 @end deffn |
1517 | 1506 |
1518 @node Widget Properties, Defining New Widgets, Sexp Types, Top | 1507 @node Widget Properties, Defining New Widgets, Sexp Types, Top |
1519 @comment node-name, next, previous, up | 1508 @comment node-name, next, previous, up |
1520 @section Properties | 1509 @chapter Properties |
1521 @cindex properties of widgets | 1510 @cindex properties of widgets |
1522 @cindex widget properties | 1511 @cindex widget properties |
1523 | 1512 |
1524 You can examine or set the value of a widget by using the widget object | 1513 You can examine or set the value of a widget by using the widget object |
1525 that was returned by @code{widget-create}. | 1514 that was returned by @code{widget-create}. |
1610 @code{:deactivate} keywords instead. | 1599 @code{:deactivate} keywords instead. |
1611 | 1600 |
1612 | 1601 |
1613 @node Defining New Widgets, Widget Browser, Widget Properties, Top | 1602 @node Defining New Widgets, Widget Browser, Widget Properties, Top |
1614 @comment node-name, next, previous, up | 1603 @comment node-name, next, previous, up |
1615 @section Defining New Widgets | 1604 @chapter Defining New Widgets |
1616 @cindex new widgets | 1605 @cindex new widgets |
1617 @cindex defining new widgets | 1606 @cindex defining new widgets |
1618 | 1607 |
1619 You can define specialized widgets with @code{define-widget}. It allows | 1608 You can define specialized widgets with @code{define-widget}. It allows |
1620 you to create a shorthand for more complex widgets, including specifying | 1609 you to create a shorthand for more complex widgets, including specifying |
1627 @var{name} and class should both be symbols, @code{class} should be one | 1616 @var{name} and class should both be symbols, @code{class} should be one |
1628 of the existing widget types. | 1617 of the existing widget types. |
1629 | 1618 |
1630 The third argument @var{doc} is a documentation string for the widget. | 1619 The third argument @var{doc} is a documentation string for the widget. |
1631 | 1620 |
1632 After the new widget has been defined the following two calls will | 1621 After the new widget has been defined, the following two calls will |
1633 create identical widgets: | 1622 create identical widgets: |
1634 | 1623 |
1635 @itemize @bullet | 1624 @itemize @bullet |
1636 @item | 1625 @item |
1637 @lisp | 1626 @lisp |
1854 @code{widget-convert} is typically not called from user code; rather it | 1843 @code{widget-convert} is typically not called from user code; rather it |
1855 is called implicitly through the @samp{widget-create*} functions. | 1844 is called implicitly through the @samp{widget-create*} functions. |
1856 | 1845 |
1857 @node Widget Browser, Widget Minor Mode, Defining New Widgets, Top | 1846 @node Widget Browser, Widget Minor Mode, Defining New Widgets, Top |
1858 @comment node-name, next, previous, up | 1847 @comment node-name, next, previous, up |
1859 @section Widget Browser | 1848 @chapter Widget Browser |
1860 @cindex widget browser | 1849 @cindex widget browser |
1861 | 1850 |
1862 There is a separate package to browse widgets. This is intended to help | 1851 There is a separate package to browse widgets. This is intended to help |
1863 programmers who want to examine the content of a widget. The browser | 1852 programmers who want to examine the content of a widget. The browser |
1864 shows the value of each keyword, but uses links for certain keywords | 1853 shows the value of each keyword, but uses links for certain keywords |
1879 When called interactively, use the position of point. | 1868 When called interactively, use the position of point. |
1880 @end deffn | 1869 @end deffn |
1881 | 1870 |
1882 @node Widget Minor Mode, Utilities, Widget Browser, Top | 1871 @node Widget Minor Mode, Utilities, Widget Browser, Top |
1883 @comment node-name, next, previous, up | 1872 @comment node-name, next, previous, up |
1884 @section Widget Minor Mode | 1873 @chapter Widget Minor Mode |
1885 @cindex widget minor mode | 1874 @cindex widget minor mode |
1886 | 1875 |
1887 There is a minor mode for manipulating widgets in major modes that | 1876 There is a minor mode for manipulating widgets in major modes that |
1888 don't provide any support for widgets themselves. This is mostly | 1877 don't provide any support for widgets themselves. This is mostly |
1889 intended to be useful for programmers doing experiments. | 1878 intended to be useful for programmers doing experiments. |
1897 Keymap used in @code{widget-minor-mode}. | 1886 Keymap used in @code{widget-minor-mode}. |
1898 @end defvar | 1887 @end defvar |
1899 | 1888 |
1900 @node Utilities, Widget Wishlist, Widget Minor Mode, Top | 1889 @node Utilities, Widget Wishlist, Widget Minor Mode, Top |
1901 @comment node-name, next, previous, up | 1890 @comment node-name, next, previous, up |
1902 @section Utilities. | 1891 @chapter Utilities |
1903 @cindex utility functions for widgets | 1892 @cindex utility functions for widgets |
1904 | 1893 |
1905 @defun widget-prompt-value widget prompt [ value unbound ] | 1894 @defun widget-prompt-value widget prompt [ value unbound ] |
1906 Prompt for a value matching @var{widget}, using @var{prompt}.@* | 1895 Prompt for a value matching @var{widget}, using @var{prompt}.@* |
1907 The current value is assumed to be @var{value}, unless @var{unbound} is | 1896 The current value is assumed to be @var{value}, unless @var{unbound} is |
1913 This is only meaningful for radio buttons or checkboxes in a list. | 1902 This is only meaningful for radio buttons or checkboxes in a list. |
1914 @end defun | 1903 @end defun |
1915 | 1904 |
1916 @node Widget Wishlist, Widget Internals, Utilities, Top | 1905 @node Widget Wishlist, Widget Internals, Utilities, Top |
1917 @comment node-name, next, previous, up | 1906 @comment node-name, next, previous, up |
1918 @section Wishlist | 1907 @chapter Wishlist |
1919 @cindex todo | 1908 @cindex todo |
1920 | 1909 |
1921 @itemize @bullet | 1910 @itemize @bullet |
1922 @item | 1911 @item |
1923 It should be possible to add or remove items from a list with @kbd{C-k} | 1912 It should be possible to add or remove items from a list with @kbd{C-k} |
2027 This is an alphabetical listing of all concepts, functions, commands, | 2016 This is an alphabetical listing of all concepts, functions, commands, |
2028 variables, and widgets described in this manual. | 2017 variables, and widgets described in this manual. |
2029 @printindex cp | 2018 @printindex cp |
2030 | 2019 |
2031 @bye | 2020 @bye |
2032 | |
2033 @ignore | |
2034 arch-tag: 2b427731-4c61-4e72-85de-5ccec9c623f0 | |
2035 @end ignore |