1 | /*
|
---|
2 | **++
|
---|
3 | ** FACILITY: DUI
|
---|
4 | **
|
---|
5 | ** MODULE DESCRIPTION:
|
---|
6 | **
|
---|
7 | ** Implements MOTIF utility functions
|
---|
8 | **
|
---|
9 | ** AUTHORS:
|
---|
10 | **
|
---|
11 | ** C. Gaspar
|
---|
12 | **
|
---|
13 | ** CREATION DATE: 24-01-1993
|
---|
14 | **
|
---|
15 | **--
|
---|
16 | */
|
---|
17 | #include <stdio.h>
|
---|
18 | #include <Mrm/MrmAppl.h> /* Motif Toolkit */
|
---|
19 | #include <Xm/Xm.h>
|
---|
20 |
|
---|
21 | #include <dim.h>
|
---|
22 | #include "dui_util.h"
|
---|
23 |
|
---|
24 | /* compound strings */
|
---|
25 |
|
---|
26 |
|
---|
27 | static XmString Active_str;
|
---|
28 |
|
---|
29 | XmString get_str(text)
|
---|
30 | char *text;
|
---|
31 | {
|
---|
32 |
|
---|
33 | Active_str = XmStringCreateLtoR ( text, XmSTRING_DEFAULT_CHARSET);
|
---|
34 | return(Active_str);
|
---|
35 | }
|
---|
36 |
|
---|
37 |
|
---|
38 | void free_str()
|
---|
39 | {
|
---|
40 |
|
---|
41 | XmStringFree(Active_str);
|
---|
42 | }
|
---|
43 |
|
---|
44 |
|
---|
45 | XmString create_str(text)
|
---|
46 | char *text;
|
---|
47 | {
|
---|
48 | XmString str;
|
---|
49 |
|
---|
50 |
|
---|
51 | str = XmStringCreate ( text, XmSTRING_DEFAULT_CHARSET);
|
---|
52 | return(str);
|
---|
53 | }
|
---|
54 |
|
---|
55 | void delete_str(str)
|
---|
56 | XmString str;
|
---|
57 | {
|
---|
58 |
|
---|
59 | XmStringFree(str);
|
---|
60 | }
|
---|
61 |
|
---|
62 | void set_something(w, resource, value)
|
---|
63 | Widget w;
|
---|
64 | char *resource, *value;
|
---|
65 | {
|
---|
66 | Arg al[1];
|
---|
67 | int free = 0;
|
---|
68 | DISABLE_AST
|
---|
69 | if( (!strcmp(resource,XmNlabelString)) ||
|
---|
70 | (!strcmp(resource,XmNmessageString)) ||
|
---|
71 | (!strcmp(resource,XmNtextString)) ||
|
---|
72 | (!strcmp(resource,XmNlistLabelString)) ||
|
---|
73 | (!strcmp(resource,XmNselectionLabelString)) )
|
---|
74 | {
|
---|
75 | free = 1;
|
---|
76 | value = (char *)get_str(value);
|
---|
77 | }
|
---|
78 | XtSetArg(al[0], resource, value);
|
---|
79 | XtSetValues(w, al, 1);
|
---|
80 | if(free)
|
---|
81 | free_str();
|
---|
82 | /*
|
---|
83 | printf("Flushing %s for widget %s...\n",resource,w->core.name);
|
---|
84 | */
|
---|
85 | /*
|
---|
86 | XFlush(XtDisplay(w));
|
---|
87 | */
|
---|
88 | /*
|
---|
89 | printf("Flushed!\n");
|
---|
90 | */
|
---|
91 | ENABLE_AST
|
---|
92 | }
|
---|
93 |
|
---|
94 | void get_something(w, resource, value)
|
---|
95 | Widget w;
|
---|
96 | char *resource, *value;
|
---|
97 | {
|
---|
98 |
|
---|
99 | Arg al[1];
|
---|
100 | int free = 0;
|
---|
101 | XmString str;
|
---|
102 | char *cstr;
|
---|
103 |
|
---|
104 | if( (!strcmp(resource,XmNlabelString)) ||
|
---|
105 | (!strcmp(resource,XmNmessageString)) ||
|
---|
106 | (!strcmp(resource,XmNtextString)) ||
|
---|
107 | (!strcmp(resource,XmNlistLabelString)) ||
|
---|
108 | (!strcmp(resource,XmNselectionLabelString)) )
|
---|
109 | {
|
---|
110 | free = 1;
|
---|
111 | XtSetArg(al[0], resource, &str);
|
---|
112 | }
|
---|
113 | else
|
---|
114 | XtSetArg(al[0], resource, value);
|
---|
115 | XtGetValues(w, al, 1);
|
---|
116 | if(free)
|
---|
117 | {
|
---|
118 | XmStringGetLtoR(str, XmSTRING_DEFAULT_CHARSET, &cstr);
|
---|
119 | strcpy(value,cstr);
|
---|
120 | XtFree(cstr);
|
---|
121 | }
|
---|
122 | }
|
---|
123 | /*
|
---|
124 | void set_something_uid(hid, w, resource, value)
|
---|
125 | MrmHierarchy hid;
|
---|
126 | Widget w;
|
---|
127 | char *resource, *value;
|
---|
128 | {
|
---|
129 | Arg al[1];
|
---|
130 |
|
---|
131 | XtSetArg(al[0], resource, value);
|
---|
132 |
|
---|
133 | MrmFetchSetValues(hid, w, al, 1);
|
---|
134 | }
|
---|
135 | */
|
---|
136 |
|
---|
137 | static XmString str_table[50];
|
---|
138 |
|
---|
139 | XmStringTable create_str_table(strs)
|
---|
140 | char strs[50][256];
|
---|
141 | {
|
---|
142 | int i;
|
---|
143 |
|
---|
144 | for(i=0;strs[i][0];i++)
|
---|
145 | {
|
---|
146 | str_table[i] = XmStringCreate ( strs[i], XmSTRING_DEFAULT_CHARSET);
|
---|
147 | }
|
---|
148 | str_table[i] = (XmString)0;
|
---|
149 | return((XmStringTable)str_table);
|
---|
150 | }
|
---|
151 |
|
---|
152 | void del_str_table()
|
---|
153 | {
|
---|
154 | int i;
|
---|
155 |
|
---|
156 | for(i=0;str_table[i];i++)
|
---|
157 | XmStringFree(str_table[i]);
|
---|
158 |
|
---|
159 | }
|
---|
160 |
|
---|
161 | Pixel rgb_colors[MAX_COLORS];
|
---|
162 | static Pixmap pixmap_colors[MAX_COLORS];
|
---|
163 | static Pixmap watch_colors[MAX_COLORS];
|
---|
164 | static Pixmap locks[MAX_COLORS];
|
---|
165 | static Pixmap unlock;
|
---|
166 | static Pixmap faces[MAX_COLORS];
|
---|
167 |
|
---|
168 | Pixel get_named_color(color)
|
---|
169 | int color;
|
---|
170 | {
|
---|
171 | return(rgb_colors[color]);
|
---|
172 | }
|
---|
173 |
|
---|
174 | void set_color(w, resource, color)
|
---|
175 | Widget w;
|
---|
176 | char *resource;
|
---|
177 | int color;
|
---|
178 | {
|
---|
179 |
|
---|
180 | DISABLE_AST
|
---|
181 | /*
|
---|
182 | if(resource == XmNbackgroundPixmap)
|
---|
183 | */
|
---|
184 | if(!strcmp(resource,XmNbackgroundPixmap))
|
---|
185 | set_something(w,resource,pixmap_colors[color]);
|
---|
186 | else
|
---|
187 | set_something(w,resource,rgb_colors[color]);
|
---|
188 | ENABLE_AST
|
---|
189 | }
|
---|
190 |
|
---|
191 | void set_watch(w, color)
|
---|
192 | Widget w;
|
---|
193 | int color;
|
---|
194 | {
|
---|
195 | set_something(w,XmNbackgroundPixmap,watch_colors[color]);
|
---|
196 | }
|
---|
197 |
|
---|
198 | void set_lock(w, color)
|
---|
199 | Widget w;
|
---|
200 | int color;
|
---|
201 | {
|
---|
202 | set_something(w,XmNbackgroundPixmap,locks[color]);
|
---|
203 | }
|
---|
204 |
|
---|
205 | void set_unlock(w)
|
---|
206 | Widget w;
|
---|
207 | {
|
---|
208 | set_something(w,XmNbackgroundPixmap,unlock);
|
---|
209 | }
|
---|
210 |
|
---|
211 | void set_face(w, color)
|
---|
212 | Widget w;
|
---|
213 | int color;
|
---|
214 | {
|
---|
215 | set_something(w,XmNbackgroundPixmap,faces[color]);
|
---|
216 | }
|
---|
217 |
|
---|
218 | void get_all_colors(display, w)
|
---|
219 | Display *display;
|
---|
220 | Widget w;
|
---|
221 | {
|
---|
222 | XColor a,b;
|
---|
223 | Colormap cm;
|
---|
224 | cm = DefaultColormap ( display, DefaultScreen(display));
|
---|
225 |
|
---|
226 | XAllocNamedColor ( display, cm, "Medium Aquamarine", &a,&b );
|
---|
227 | rgb_colors[GREEN] = b.pixel;
|
---|
228 |
|
---|
229 | XAllocNamedColor ( display, cm, "Turquoise", &a,&b );
|
---|
230 | rgb_colors[BLUE] = b.pixel;
|
---|
231 |
|
---|
232 | XAllocNamedColor ( display, cm, "Yellow", &a,&b );
|
---|
233 | rgb_colors[YELLOW] = b.pixel;
|
---|
234 |
|
---|
235 | XAllocNamedColor ( display, cm, "Orange", &a,&b );
|
---|
236 | rgb_colors[ORANGE] = b.pixel;
|
---|
237 |
|
---|
238 | XAllocNamedColor ( display, cm, "Red", &a,&b );
|
---|
239 | rgb_colors[RED] = b.pixel;
|
---|
240 |
|
---|
241 | XAllocNamedColor ( display, cm, "Black", &a,&b );
|
---|
242 | rgb_colors[BLACK] = b.pixel;
|
---|
243 |
|
---|
244 | XAllocNamedColor ( display, cm, "White", &a,&b );
|
---|
245 | rgb_colors[WHITE] = b.pixel;
|
---|
246 |
|
---|
247 | XAllocNamedColor ( display, cm, "Light Gray", &a,&b );
|
---|
248 | rgb_colors[GRAY] = b.pixel;
|
---|
249 |
|
---|
250 | XAllocNamedColor ( display, cm, "Gainsboro", &a,&b );
|
---|
251 | rgb_colors[LIGHTGRAY] = b.pixel;
|
---|
252 | /*
|
---|
253 | MrmFetchColorLiteral(hid, "green", display, 0, &rgb_colors[GREEN]);
|
---|
254 | MrmFetchColorLiteral(hid, "blue", display, 0, &rgb_colors[BLUE]);
|
---|
255 | MrmFetchColorLiteral(hid, "yellow", display, 0, &rgb_colors[YELLOW]);
|
---|
256 | MrmFetchColorLiteral(hid, "orange", display, 0, &rgb_colors[ORANGE]);
|
---|
257 | MrmFetchColorLiteral(hid, "red", display, 0, &rgb_colors[RED]);
|
---|
258 | MrmFetchColorLiteral(hid, "black", display, 0, &rgb_colors[BLACK]);
|
---|
259 | MrmFetchColorLiteral(hid, "white", display, 0, &rgb_colors[WHITE]);
|
---|
260 | */
|
---|
261 | get_something(w,XmNbackground,&rgb_colors[NONE]);
|
---|
262 | }
|
---|
263 |
|
---|
264 |
|
---|
265 | static int was_sensitive = 0;
|
---|
266 |
|
---|
267 | void set_sensitive(widget_id)
|
---|
268 | Widget widget_id;
|
---|
269 | {
|
---|
270 |
|
---|
271 | if(was_sensitive)
|
---|
272 | XtSetSensitive(widget_id,True);
|
---|
273 | }
|
---|
274 |
|
---|
275 | void set_insensitive(widget_id)
|
---|
276 | Widget widget_id;
|
---|
277 | {
|
---|
278 |
|
---|
279 | if( (was_sensitive = XtIsSensitive(widget_id)) )
|
---|
280 | XtSetSensitive(widget_id,False);
|
---|
281 | }
|
---|
282 |
|
---|
283 | void set_title(w, title)
|
---|
284 | Widget w;
|
---|
285 | char *title;
|
---|
286 | {
|
---|
287 | Arg al[1];
|
---|
288 |
|
---|
289 | XtSetArg(al[0], XmNtitle, title);
|
---|
290 | XtSetValues(w, al, 1);
|
---|
291 | /*
|
---|
292 | XFlush(XtDisplay(w));
|
---|
293 | */
|
---|
294 | }
|
---|
295 |
|
---|
296 | void set_icon_title(w, title)
|
---|
297 | Widget w;
|
---|
298 | char *title;
|
---|
299 | {
|
---|
300 | Arg al[1];
|
---|
301 |
|
---|
302 | XtSetArg(al[0], XmNiconName, title);
|
---|
303 | XtSetValues(w, al, 1);
|
---|
304 | /*
|
---|
305 | XFlush(XtDisplay(w));
|
---|
306 | */
|
---|
307 | }
|
---|
308 |
|
---|