Mercurial > emacs
annotate lwlib/lwlib.h @ 80402:bc43e42e2fb4
(url-digest-auth): Changed an if so that the interaction between the
PROMPT and OVERWRITE arguments can no longer result in the user being
queried twice for the same login and password information.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Mon, 31 Mar 2008 22:02:24 +0000 |
parents | a1c6fb73c033 |
children | 606f2d163a64 3c31d7653adf |
rev | line source |
---|---|
76178
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
1 /* |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
2 Copyright (C) 1992, 1993 Lucid, Inc. |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
3 Copyright (C) 1994, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, |
79747 | 4 2007, 2008 Free Software Foundation, Inc. |
76178
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
5 |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
6 This file is part of the Lucid Widget Library. |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
7 |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
8 The Lucid Widget Library is free software; you can redistribute it and/or |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
9 modify it under the terms of the GNU General Public License as published by |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
10 the Free Software Foundation; either version 1, or (at your option) |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
11 any later version. |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
12 |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
13 The Lucid Widget Library is distributed in the hope that it will be useful, |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
14 but WITHOUT ANY WARRANTY; without even the implied warranty of |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
16 GNU General Public License for more details. |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
17 |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
18 You should have received a copy of the GNU General Public License |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
19 along with GNU Emacs; see the file COPYING. If not, write to |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
21 Boston, MA 02110-1301, USA. */ |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
22 |
9f78501bf1f3
Add Lucid and FSF copyrights and GPL text.
Glenn Morris <rgm@gnu.org>
parents:
56845
diff
changeset
|
23 |
5626 | 24 #ifndef LWLIB_H |
25 #define LWLIB_H | |
26 | |
27 #include <X11/Intrinsic.h> | |
28 | |
29 /* | |
30 ** Widget values depend on the Widget type: | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41766
diff
changeset
|
31 ** |
5626 | 32 ** widget: (name value key enabled data contents/selected) |
33 ** | |
34 ** label: ("name" "string" NULL NULL NULL NULL) | |
35 ** button: ("name" "string" "key" T/F data <default-button-p>) | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41766
diff
changeset
|
36 ** button w/menu: |
5626 | 37 ** ("name" "string" "key" T/F data (label|button|button w/menu...)) |
38 ** menubar: ("name" NULL NULL T/F data (button w/menu)) | |
39 ** selectable thing: | |
40 ** ("name" "string" "key" T/F data T/F) | |
41 ** checkbox: selectable thing | |
42 ** radio: ("name" NULL NULL T/F data (selectable thing...)) | |
43 ** strings: ("name" NULL NULL T/F data (selectable thing...)) | |
44 ** text: ("name" "string" <ign> T/F data) | |
8784 | 45 ** main: ("name") |
5626 | 46 */ |
47 | |
48 typedef unsigned long LWLIB_ID; | |
49 | |
50 typedef enum _change_type | |
51 { | |
52 NO_CHANGE = 0, | |
53 INVISIBLE_CHANGE = 1, | |
54 VISIBLE_CHANGE = 2, | |
55 STRUCTURAL_CHANGE = 3 | |
56 } change_type; | |
57 | |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
58 enum button_type |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
59 { |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
60 BUTTON_TYPE_NONE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
61 BUTTON_TYPE_TOGGLE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
62 BUTTON_TYPE_RADIO |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
63 }; |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
64 |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
65 /* Menu separator types. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
66 |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
67 enum menu_separator |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
68 { |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
69 /* These values are Motif compatible. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
70 SEPARATOR_NO_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
71 SEPARATOR_SINGLE_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
72 SEPARATOR_DOUBLE_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
73 SEPARATOR_SINGLE_DASHED_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
74 SEPARATOR_DOUBLE_DASHED_LINE, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
75 SEPARATOR_SHADOW_ETCHED_IN, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
76 SEPARATOR_SHADOW_ETCHED_OUT, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
77 SEPARATOR_SHADOW_ETCHED_IN_DASH, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
78 SEPARATOR_SHADOW_ETCHED_OUT_DASH, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
79 |
41766
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
80 /* The following are supported by Lucid menus. */ |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
81 SEPARATOR_SHADOW_DOUBLE_ETCHED_IN, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
82 SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
83 SEPARATOR_SHADOW_DOUBLE_ETCHED_IN_DASH, |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
84 SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT_DASH |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
85 }; |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
86 |
5626 | 87 typedef struct _widget_value |
88 { | |
89 /* name of widget */ | |
56845
8a28788cef84
* lwlib.h (_widget_value): Added lname and lkey.
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
90 Lisp_Object lname; |
5626 | 91 char* name; |
92 /* value (meaning depend on widget type) */ | |
93 char* value; | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41766
diff
changeset
|
94 /* keyboard equivalent. no implications for XtTranslations */ |
56845
8a28788cef84
* lwlib.h (_widget_value): Added lname and lkey.
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
95 Lisp_Object lkey; |
5626 | 96 char* key; |
41766
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
97 /* Help string or nil if none. |
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
98 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
|
99 or through menu_items. */ |
32d440813da1
(_widget_value): `help' has type Lisp_Object.
Richard M. Stallman <rms@gnu.org>
parents:
29466
diff
changeset
|
100 Lisp_Object help; |
5626 | 101 /* true if enabled */ |
102 Boolean enabled; | |
103 /* true if selected */ | |
104 Boolean selected; | |
105 /* true if was edited (maintained by get_value) */ | |
106 Boolean edited; | |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
107 /* The type of a button. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
108 enum button_type button_type; |
5626 | 109 /* true if has changed (maintained by lw library) */ |
110 change_type change; | |
14878
487b03096cc5
(struct widget_value): New field this_one_change.
Richard M. Stallman <rms@gnu.org>
parents:
14018
diff
changeset
|
111 /* 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
|
112 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
|
113 change_type this_one_change; |
5626 | 114 /* Contents of the sub-widgets, also selected slot for checkbox */ |
115 struct _widget_value* contents; | |
116 /* data passed to callback */ | |
117 XtPointer call_data; | |
118 /* next one in the list */ | |
119 struct _widget_value* next; | |
120 /* slot for the toolkit dependent part. Always initialize to NULL. */ | |
121 void* toolkit_data; | |
122 /* tell us if we should free the toolkit data slot when freeing the | |
123 widget_value itself. */ | |
124 Boolean free_toolkit_data; | |
125 | |
126 /* we resource the widget_value structures; this points to the next | |
127 one on the free list if this one has been deallocated. | |
128 */ | |
129 struct _widget_value *free_list; | |
130 } widget_value; | |
131 | |
132 | |
29466 | 133 typedef void (*lw_callback) __P ((Widget w, LWLIB_ID id, void* data)); |
5626 | 134 |
29466 | 135 void lw_register_widget __P ((char* type, char* name, LWLIB_ID id, |
136 widget_value* val, lw_callback pre_activate_cb, | |
137 lw_callback selection_cb, | |
138 lw_callback post_activate_cb, | |
139 lw_callback highlight_cb)); | |
140 Widget lw_get_widget __P ((LWLIB_ID id, Widget parent, Boolean pop_up_p)); | |
141 Widget lw_make_widget __P ((LWLIB_ID id, Widget parent, Boolean pop_up_p)); | |
142 Widget lw_create_widget __P ((char* type, char* name, LWLIB_ID id, | |
143 widget_value* val, Widget parent, Boolean pop_up_p, | |
144 lw_callback pre_activate_cb, | |
145 lw_callback selection_cb, | |
146 lw_callback post_activate_cb, | |
147 lw_callback highlight_cb)); | |
148 LWLIB_ID lw_get_widget_id __P ((Widget w)); | |
149 int lw_modify_all_widgets __P ((LWLIB_ID id, widget_value* val, Boolean deep_p)); | |
150 void lw_destroy_widget __P ((Widget w)); | |
151 void lw_destroy_all_widgets __P ((LWLIB_ID id)); | |
152 void lw_destroy_everything __P ((void)); | |
153 void lw_destroy_all_pop_ups __P ((void)); | |
154 Widget lw_raise_all_pop_up_widgets __P ((void)); | |
155 widget_value* lw_get_all_values __P ((LWLIB_ID id)); | |
156 Boolean lw_get_some_values __P ((LWLIB_ID id, widget_value* val)); | |
157 void lw_pop_up_all_widgets __P ((LWLIB_ID id)); | |
158 void lw_pop_down_all_widgets __P ((LWLIB_ID id)); | |
5626 | 159 widget_value *malloc_widget_value (); |
29466 | 160 void free_widget_value __P ((widget_value *)); |
161 void lw_popup_menu __P ((Widget, XEvent *)); | |
5626 | 162 |
163 /* Toolkit independent way of focusing on a Widget at the Xt level. */ | |
29466 | 164 void lw_set_keyboard_focus __P ((Widget parent, Widget w)); |
5626 | 165 |
166 /* Silly Energize hack to invert the "sheet" button */ | |
29466 | 167 void lw_show_busy __P ((Widget w, Boolean busy)); |
8784 | 168 |
169 /* Silly hack to assist with Lucid/Athena geometry management. */ | |
29466 | 170 void lw_refigure_widget __P ((Widget w, Boolean doit)); |
8784 | 171 |
172 /* Toolkit independent way of determining if an event occurred on a | |
173 menubar. */ | |
29466 | 174 Boolean lw_window_is_in_menubar __P ((Window win, Widget menubar_widget)); |
8784 | 175 |
176 /* Manage resizing: TRUE permits resizing widget w; FALSE disallows it. */ | |
29466 | 177 void lw_allow_resizing __P ((Widget w, Boolean flag)); |
5626 | 178 |
9064 | 179 /* Set up the main window. */ |
29466 | 180 void lw_set_main_areas __P ((Widget parent, |
9064 | 181 Widget menubar, |
29466 | 182 Widget work_area)); |
9064 | 183 |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
184 /* 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
|
185 set to an appropriate enumerator of type enum menu_separator. |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
186 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
|
187 to similar ones that are supported. */ |
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
188 |
29466 | 189 int lw_separator_p __P ((char *label, enum menu_separator *type, |
190 int motif_p)); | |
191 | |
192 void lwlib_bcopy __P ((char*, char*, int)); | |
25035
d8d30f76cc61
(enum menu_separator): New.
Gerd Moellmann <gerd@gnu.org>
parents:
15630
diff
changeset
|
193 |
5626 | 194 #endif /* LWLIB_H */ |
52401 | 195 |
196 /* arch-tag: 44d818d5-7eb2-4d87-acd7-b992bb0d5d20 | |
197 (do not change this comment) */ |