Mercurial > emacs
annotate lwlib/lwlib.h @ 46205:6676ac71682b
Update mouse button info.
Don't give the names of Emacs commands that the characters run.
Clarify what SPC and DEL do.
Clarify the description of the minibuffer.
Wording change for completion.
Explain Mouse-2 better.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 07 Jul 2002 11:31:31 +0000 |
parents | 32d440813da1 |
children | 23a1cea22d13 |
rev | line source |
---|---|
5626 | 1 #ifndef LWLIB_H |
2 #define LWLIB_H | |
3 | |
4 #include <X11/Intrinsic.h> | |
5 | |
6 /* | |
7 ** Widget values depend on the Widget type: | |
8 ** | |
9 ** widget: (name value key enabled data contents/selected) | |
10 ** | |
11 ** label: ("name" "string" NULL NULL NULL NULL) | |
12 ** button: ("name" "string" "key" T/F data <default-button-p>) | |
13 ** button w/menu: | |
14 ** ("name" "string" "key" T/F data (label|button|button w/menu...)) | |
15 ** menubar: ("name" NULL NULL T/F data (button w/menu)) | |
16 ** selectable thing: | |
17 ** ("name" "string" "key" T/F data T/F) | |
18 ** checkbox: selectable thing | |
19 ** radio: ("name" NULL NULL T/F data (selectable thing...)) | |
20 ** strings: ("name" NULL NULL T/F data (selectable thing...)) | |
21 ** text: ("name" "string" <ign> T/F data) | |
8784 | 22 ** main: ("name") |
5626 | 23 */ |
24 | |
25 typedef unsigned long LWLIB_ID; | |
26 | |
27 typedef enum _change_type | |
28 { | |
29 NO_CHANGE = 0, | |
30 INVISIBLE_CHANGE = 1, | |
31 VISIBLE_CHANGE = 2, | |
32 STRUCTURAL_CHANGE = 3 | |
33 } change_type; | |
34 | |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
35 enum button_type |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
36 { |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
37 BUTTON_TYPE_NONE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
38 BUTTON_TYPE_TOGGLE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
39 BUTTON_TYPE_RADIO |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
40 }; |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
41 |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
42 /* Menu separator types. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
43 |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
44 enum menu_separator |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
45 { |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
46 /* These values are Motif compatible. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
47 SEPARATOR_NO_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
48 SEPARATOR_SINGLE_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
49 SEPARATOR_DOUBLE_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
50 SEPARATOR_SINGLE_DASHED_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
51 SEPARATOR_DOUBLE_DASHED_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
52 SEPARATOR_SHADOW_ETCHED_IN, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
53 SEPARATOR_SHADOW_ETCHED_OUT, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
54 SEPARATOR_SHADOW_ETCHED_IN_DASH, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
55 SEPARATOR_SHADOW_ETCHED_OUT_DASH, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
56 |
41766
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
57 /* The following are supported by Lucid menus. */ |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
58 SEPARATOR_SHADOW_DOUBLE_ETCHED_IN, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
59 SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
60 SEPARATOR_SHADOW_DOUBLE_ETCHED_IN_DASH, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
61 SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT_DASH |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
62 }; |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
63 |
5626 | 64 typedef struct _widget_value |
65 { | |
66 /* name of widget */ | |
67 char* name; | |
68 /* value (meaning depend on widget type) */ | |
69 char* value; | |
70 /* keyboard equivalent. no implications for XtTranslations */ | |
71 char* key; | |
41766
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
72 /* Help string or nil if none. |
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
73 GC finds this string through the frame's menu_bar_vector |
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
74 or through menu_items. */ |
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
75 Lisp_Object help; |
5626 | 76 /* true if enabled */ |
77 Boolean enabled; | |
78 /* true if selected */ | |
79 Boolean selected; | |
80 /* true if was edited (maintained by get_value) */ | |
81 Boolean edited; | |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
82 /* The type of a button. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
83 enum button_type button_type; |
5626 | 84 /* true if has changed (maintained by lw library) */ |
85 change_type change; | |
14878
487b03096cc5
(struct widget_value): New field this_one_change.
Richard M. Stallman <rms@gnu.org>
parents:
14018
diff
changeset
|
86 /* true if this widget itself has changed, |
487b03096cc5
(struct widget_value): New field this_one_change.
Richard M. Stallman <rms@gnu.org>
parents:
14018
diff
changeset
|
87 but not counting the other widgets found in the `next' field. */ |
487b03096cc5
(struct widget_value): New field this_one_change.
Richard M. Stallman <rms@gnu.org>
parents:
14018
diff
changeset
|
88 change_type this_one_change; |
5626 | 89 /* Contents of the sub-widgets, also selected slot for checkbox */ |
90 struct _widget_value* contents; | |
91 /* data passed to callback */ | |
92 XtPointer call_data; | |
93 /* next one in the list */ | |
94 struct _widget_value* next; | |
95 /* slot for the toolkit dependent part. Always initialize to NULL. */ | |
96 void* toolkit_data; | |
97 /* tell us if we should free the toolkit data slot when freeing the | |
98 widget_value itself. */ | |
99 Boolean free_toolkit_data; | |
100 | |
101 /* we resource the widget_value structures; this points to the next | |
102 one on the free list if this one has been deallocated. | |
103 */ | |
104 struct _widget_value *free_list; | |
105 } widget_value; | |
106 | |
107 | |
29466 | 108 typedef void (*lw_callback) __P ((Widget w, LWLIB_ID id, void* data)); |
5626 | 109 |
29466 | 110 void lw_register_widget __P ((char* type, char* name, LWLIB_ID id, |
111 widget_value* val, lw_callback pre_activate_cb, | |
112 lw_callback selection_cb, | |
113 lw_callback post_activate_cb, | |
114 lw_callback highlight_cb)); | |
115 Widget lw_get_widget __P ((LWLIB_ID id, Widget parent, Boolean pop_up_p)); | |
116 Widget lw_make_widget __P ((LWLIB_ID id, Widget parent, Boolean pop_up_p)); | |
117 Widget lw_create_widget __P ((char* type, char* name, LWLIB_ID id, | |
118 widget_value* val, Widget parent, Boolean pop_up_p, | |
119 lw_callback pre_activate_cb, | |
120 lw_callback selection_cb, | |
121 lw_callback post_activate_cb, | |
122 lw_callback highlight_cb)); | |
123 LWLIB_ID lw_get_widget_id __P ((Widget w)); | |
124 int lw_modify_all_widgets __P ((LWLIB_ID id, widget_value* val, Boolean deep_p)); | |
125 void lw_destroy_widget __P ((Widget w)); | |
126 void lw_destroy_all_widgets __P ((LWLIB_ID id)); | |
127 void lw_destroy_everything __P ((void)); | |
128 void lw_destroy_all_pop_ups __P ((void)); | |
129 Widget lw_raise_all_pop_up_widgets __P ((void)); | |
130 widget_value* lw_get_all_values __P ((LWLIB_ID id)); | |
131 Boolean lw_get_some_values __P ((LWLIB_ID id, widget_value* val)); | |
132 void lw_pop_up_all_widgets __P ((LWLIB_ID id)); | |
133 void lw_pop_down_all_widgets __P ((LWLIB_ID id)); | |
5626 | 134 widget_value *malloc_widget_value (); |
29466 | 135 void free_widget_value __P ((widget_value *)); |
136 void lw_popup_menu __P ((Widget, XEvent *)); | |
5626 | 137 |
138 /* Toolkit independent way of focusing on a Widget at the Xt level. */ | |
29466 | 139 void lw_set_keyboard_focus __P ((Widget parent, Widget w)); |
5626 | 140 |
141 /* Silly Energize hack to invert the "sheet" button */ | |
29466 | 142 void lw_show_busy __P ((Widget w, Boolean busy)); |
8784 | 143 |
144 /* Silly hack to assist with Lucid/Athena geometry management. */ | |
29466 | 145 void lw_refigure_widget __P ((Widget w, Boolean doit)); |
8784 | 146 |
147 /* Toolkit independent way of determining if an event occurred on a | |
148 menubar. */ | |
29466 | 149 Boolean lw_window_is_in_menubar __P ((Window win, Widget menubar_widget)); |
8784 | 150 |
151 /* Manage resizing: TRUE permits resizing widget w; FALSE disallows it. */ | |
29466 | 152 void lw_allow_resizing __P ((Widget w, Boolean flag)); |
5626 | 153 |
9064 | 154 /* Set up the main window. */ |
29466 | 155 void lw_set_main_areas __P ((Widget parent, |
9064 | 156 Widget menubar, |
29466 | 157 Widget work_area)); |
9064 | 158 |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
159 /* Value is non-zero if LABEL is a menu separator. If it is, *TYPE is |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
160 set to an appropriate enumerator of type enum menu_separator. |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
161 MOTIF_P non-zero means map separator types not supported by Motif |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
162 to similar ones that are supported. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
163 |
29466 | 164 int lw_separator_p __P ((char *label, enum menu_separator *type, |
165 int motif_p)); | |
166 | |
167 void lwlib_bcopy __P ((char*, char*, int)); | |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
168 |
5626 | 169 #endif /* LWLIB_H */ |