comparison src/glyphs-widget.c @ 388:aabb7f5b1c81 r21-2-9

Import from CVS: tag r21-2-9
author cvs
date Mon, 13 Aug 2007 11:09:42 +0200
parents bbff43aa5eb7
children 74fd4e045ea6
comparison
equal deleted inserted replaced
387:f892a9d0bb8d 388:aabb7f5b1c81
17 along with XEmacs; see the file COPYING. If not, write to 17 along with XEmacs; see the file COPYING. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */ 19 Boston, MA 02111-1307, USA. */
20 20
21 /* Synched up with: Not in FSF. */ 21 /* Synched up with: Not in FSF. */
22
23 /* written by Andy Piper <andy@xemacs.org> */
22 24
23 #include <config.h> 25 #include <config.h>
24 #include "lisp.h" 26 #include "lisp.h"
25 #include "lstream.h" 27 #include "lstream.h"
26 #include "console.h" 28 #include "console.h"
27 #include "device.h" 29 #include "device.h"
28 #include "faces.h" 30 #include "faces.h"
29 #include "glyphs.h" 31 #include "glyphs.h"
30 #include "objects.h" 32 #include "objects.h"
31 33 #include "bytecode.h"
32 #include "window.h" 34 #include "window.h"
33 #include "buffer.h" 35 #include "buffer.h"
34 #include "frame.h" 36 #include "frame.h"
35 #include "insdel.h" 37 #include "insdel.h"
36 #include "opaque.h" 38 #include "opaque.h"
47 DEFINE_IMAGE_INSTANTIATOR_FORMAT (group); 49 DEFINE_IMAGE_INSTANTIATOR_FORMAT (group);
48 Lisp_Object Qgroup; 50 Lisp_Object Qgroup;
49 #endif 51 #endif
50 DEFINE_IMAGE_INSTANTIATOR_FORMAT (label); 52 DEFINE_IMAGE_INSTANTIATOR_FORMAT (label);
51 Lisp_Object Qlabel; 53 Lisp_Object Qlabel;
54 DEFINE_IMAGE_INSTANTIATOR_FORMAT (progress);
55 Lisp_Object Qprogress;
52 56
53 Lisp_Object Q_descriptor, Q_height, Q_width, Q_properties, Q_items; 57 Lisp_Object Q_descriptor, Q_height, Q_width, Q_properties, Q_items;
58 Lisp_Object Q_image, Q_text, Q_percent;
54 59
55 #define WIDGET_BORDER_HEIGHT 2 60 #define WIDGET_BORDER_HEIGHT 2
56 #define WIDGET_BORDER_WIDTH 4 61 #define WIDGET_BORDER_WIDTH 4
57 62
58 /* TODO: 63 /* TODO:
59 - more complex controls. 64 - more complex controls.
60 - tooltips for controls. 65 - tooltips for controls.
61 - images in controls.
62 */ 66 */
63 67
64 /* In windows normal windows work in pixels, dialog boxes work in 68 /* In windows normal windows work in pixels, dialog boxes work in
65 dialog box units. Why? sigh. We could reuse the metrics for dialogs 69 dialog box units. Why? sigh. We could reuse the metrics for dialogs
66 if this were not the case. As it is we have to position things 70 if this were not the case. As it is we have to position things
97 widget_possible_dest_types (void) 101 widget_possible_dest_types (void)
98 { 102 {
99 return IMAGE_WIDGET_MASK; 103 return IMAGE_WIDGET_MASK;
100 } 104 }
101 105
102 #if 0 /* currently unused */ 106 static void
103 static void 107 check_valid_glyph_or_image (Lisp_Object data)
104 check_valid_glyph (Lisp_Object data) 108 {
105 { 109 Lisp_Object glyph = data;
106 if (SYMBOLP (data)) 110 if (SYMBOLP (data))
107 CHECK_BUFFER_GLYPH (XSYMBOL (data)->value); 111 glyph = XSYMBOL (data)->value;
108 else 112
109 CHECK_BUFFER_GLYPH (data); 113 if (IMAGE_INSTANCEP (glyph))
110 } 114 CHECK_IMAGE_INSTANCE (glyph);
111 #endif /* currently unused */ 115 else if (!CONSP (glyph))
116 CHECK_BUFFER_GLYPH (glyph);
117 }
118
119 static void
120 check_valid_anything (Lisp_Object data)
121 {
122 }
123
124 static void
125 check_valid_callback (Lisp_Object data)
126 {
127 if (!SYMBOLP (data)
128 && !COMPILED_FUNCTIONP (data)
129 && !CONSP (data))
130 {
131 signal_simple_error (":callback must be a function or expression", data);
132 }
133 }
134
135 static void
136 check_valid_symbol (Lisp_Object data)
137 {
138 CHECK_SYMBOL (data);
139 }
140
141 static void
142 check_valid_string_or_vector (Lisp_Object data)
143 {
144 if (!STRINGP (data) && !VECTORP (data))
145 signal_simple_error (":descriptor must be a string or a vector", data);
146 }
112 147
113 static void 148 static void
114 check_valid_item_list (Lisp_Object data) 149 check_valid_item_list (Lisp_Object data)
115 { 150 {
116 Lisp_Object rest; 151 Lisp_Object rest;
202 Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor); 237 Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor);
203 struct gui_item gui; 238 struct gui_item gui;
204 if (NILP (desc)) 239 if (NILP (desc))
205 signal_simple_error ("Must supply :descriptor", instantiator); 240 signal_simple_error ("Must supply :descriptor", instantiator);
206 241
207 gui_parse_item_keywords (desc, &gui); 242 if (VECTORP (desc))
243 gui_parse_item_keywords (desc, &gui);
208 244
209 if (!NILP (find_keyword_in_vector (instantiator, Q_width)) 245 if (!NILP (find_keyword_in_vector (instantiator, Q_width))
210 && !NILP (find_keyword_in_vector (instantiator, Q_pixel_width))) 246 && !NILP (find_keyword_in_vector (instantiator, Q_pixel_width)))
211 signal_simple_error ("Must supply only one of :width and :pixel-width", instantiator); 247 signal_simple_error ("Must supply only one of :width and :pixel-width", instantiator);
212 248
219 combo_validate (Lisp_Object instantiator) 255 combo_validate (Lisp_Object instantiator)
220 { 256 {
221 widget_validate (instantiator); 257 widget_validate (instantiator);
222 if (NILP (find_keyword_in_vector (instantiator, Q_properties))) 258 if (NILP (find_keyword_in_vector (instantiator, Q_properties)))
223 signal_simple_error ("Must supply item list", instantiator); 259 signal_simple_error ("Must supply item list", instantiator);
260 }
261
262 /* we need to convert things like glyphs to images, eval expressions
263 etc.*/
264 static Lisp_Object
265 widget_normalize (Lisp_Object inst, Lisp_Object console_type)
266 {
267 /* This function can call lisp */
268 Lisp_Object glyph = find_keyword_in_vector (inst, Q_image);
269
270 /* we need to eval glyph if its an expression, we do this for the
271 same reasons we normalize file to data. */
272 if (!NILP (glyph))
273 {
274 int i;
275 struct gcpro gcpro1;
276 if (SYMBOLP (glyph))
277 glyph = XSYMBOL (glyph)->value;
278 GCPRO1 (glyph);
279
280 if (CONSP (glyph))
281 glyph = Feval (glyph);
282 /* substitute the new glyph */
283 for (i = 0; i < XVECTOR_LENGTH (inst); i++)
284 {
285 if (EQ (Q_image, XVECTOR_DATA (inst)[i]))
286 {
287 XVECTOR_DATA (inst)[i+1] = glyph;
288 break;
289 }
290 }
291 UNGCPRO;
292 }
293 return inst;
224 } 294 }
225 295
226 static void 296 static void
227 initialize_widget_image_instance (struct Lisp_Image_Instance *ii, Lisp_Object type) 297 initialize_widget_image_instance (struct Lisp_Image_Instance *ii, Lisp_Object type)
228 { 298 {
251 Lisp_Object height = find_keyword_in_vector (instantiator, Q_height); 321 Lisp_Object height = find_keyword_in_vector (instantiator, Q_height);
252 Lisp_Object width = find_keyword_in_vector (instantiator, Q_width); 322 Lisp_Object width = find_keyword_in_vector (instantiator, Q_width);
253 Lisp_Object pixwidth = find_keyword_in_vector (instantiator, Q_pixel_width); 323 Lisp_Object pixwidth = find_keyword_in_vector (instantiator, Q_pixel_width);
254 Lisp_Object pixheight = find_keyword_in_vector (instantiator, Q_pixel_height); 324 Lisp_Object pixheight = find_keyword_in_vector (instantiator, Q_pixel_height);
255 Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor); 325 Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor);
326 Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image);
256 int pw=0, ph=0, tw=0, th=0; 327 int pw=0, ph=0, tw=0, th=0;
257 328
258 /* this just does pixel type sizing */ 329 /* this just does pixel type sizing */
259 subwindow_instantiate (image_instance, instantiator, pointer_fg, pointer_bg, 330 subwindow_instantiate (image_instance, instantiator, pointer_fg, pointer_bg,
260 dest_mask, domain); 331 dest_mask, domain);
270 341
271 /* data items for some widgets */ 342 /* data items for some widgets */
272 IMAGE_INSTANCE_WIDGET_PROPS (ii) = 343 IMAGE_INSTANCE_WIDGET_PROPS (ii) =
273 find_keyword_in_vector (instantiator, Q_properties); 344 find_keyword_in_vector (instantiator, Q_properties);
274 345
275 /* retrieve the gui item information */ 346 /* retrieve the gui item information. This is easy if we have been
347 provided with a vector, more difficult if we have just been given
348 keywords */
276 if (STRINGP (desc) || NILP (desc)) 349 if (STRINGP (desc) || NILP (desc))
277 IMAGE_INSTANCE_WIDGET_TEXT (ii) = desc; 350 {
351 /* big cheat - we rely on the fact that a gui item looks like an instantiator */
352 gui_parse_item_keywords_no_errors (instantiator, pgui);
353 IMAGE_INSTANCE_WIDGET_TEXT (ii) = desc;
354 }
278 else 355 else
279 gui_parse_item_keywords (find_keyword_in_vector (instantiator, Q_descriptor), 356 gui_parse_item_keywords_no_errors (desc, pgui);
280 pgui);
281 357
282 /* normalize size information */ 358 /* normalize size information */
283 if (!NILP (width)) 359 if (!NILP (width))
284 tw = XINT (width); 360 tw = XINT (width);
285 if (!NILP (height)) 361 if (!NILP (height))
287 if (!NILP (pixwidth)) 363 if (!NILP (pixwidth))
288 pw = XINT (pixwidth); 364 pw = XINT (pixwidth);
289 if (!NILP (pixheight)) 365 if (!NILP (pixheight))
290 ph = XINT (pixheight); 366 ph = XINT (pixheight);
291 367
368 /* for a widget with an image pick up the dimensions from that */
369 if (!NILP (glyph))
370 {
371 if (!pw && !tw)
372 pw = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain)
373 + 2 * WIDGET_BORDER_WIDTH;
374 if (!ph && !th)
375 ph = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain)
376 + 2 * WIDGET_BORDER_HEIGHT;
377 }
378
379 /* if we still don' t have sizes, guess from text size */
292 if (!tw && !pw && !NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii))) 380 if (!tw && !pw && !NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
293 tw = XSTRING_LENGTH (IMAGE_INSTANCE_WIDGET_TEXT (ii)); 381 tw = XSTRING_LENGTH (IMAGE_INSTANCE_WIDGET_TEXT (ii));
294 if (!th && !ph) 382 if (!th && !ph)
295 { 383 {
296 if (default_textheight) 384 if (default_textheight)
298 else if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii))) 386 else if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
299 th = 1; 387 th = 1;
300 else 388 else
301 ph = default_pixheight; 389 ph = default_pixheight;
302 } 390 }
303 391
304 if (tw !=0 || th !=0) 392 if (tw !=0 || th !=0)
305 widget_text_to_pixel_conversion (domain, 393 widget_text_to_pixel_conversion (domain,
306 IMAGE_INSTANCE_WIDGET_FACE (ii), 394 IMAGE_INSTANCE_WIDGET_FACE (ii),
307 th, tw, th ? &ph : 0, tw ? &pw : 0); 395 th, tw, th ? &ph : 0, tw ? &pw : 0);
308 396
353 defkeyword (&Q_descriptor, ":descriptor"); 441 defkeyword (&Q_descriptor, ":descriptor");
354 defkeyword (&Q_height, ":height"); 442 defkeyword (&Q_height, ":height");
355 defkeyword (&Q_width, ":width"); 443 defkeyword (&Q_width, ":width");
356 defkeyword (&Q_properties, ":properties"); 444 defkeyword (&Q_properties, ":properties");
357 defkeyword (&Q_items, ":items"); 445 defkeyword (&Q_items, ":items");
446 defkeyword (&Q_image, ":image");
447 defkeyword (&Q_percent, ":percent");
448 defkeyword (&Q_text, "text");
358 } 449 }
359 450
360 void 451 void
361 image_instantiator_format_create_glyphs_widget (void) 452 image_instantiator_format_create_glyphs_widget (void)
362 { 453 {
454 #define VALID_GUI_KEYWORDS(type) \
455 IIFORMAT_VALID_KEYWORD (type, Q_active, check_valid_anything); \
456 IIFORMAT_VALID_KEYWORD (type, Q_suffix, check_valid_anything); \
457 IIFORMAT_VALID_KEYWORD (type, Q_keys, check_valid_string); \
458 IIFORMAT_VALID_KEYWORD (type, Q_style, check_valid_symbol); \
459 IIFORMAT_VALID_KEYWORD (type, Q_selected, check_valid_anything); \
460 IIFORMAT_VALID_KEYWORD (type, Q_filter, check_valid_anything); \
461 IIFORMAT_VALID_KEYWORD (type, Q_config, check_valid_symbol); \
462 IIFORMAT_VALID_KEYWORD (type, Q_included, check_valid_anything); \
463 IIFORMAT_VALID_KEYWORD (type, Q_key_sequence, check_valid_string); \
464 IIFORMAT_VALID_KEYWORD (type, Q_accelerator, check_valid_string); \
465 IIFORMAT_VALID_KEYWORD (type, Q_label, check_valid_anything); \
466 IIFORMAT_VALID_KEYWORD (type, Q_callback, check_valid_callback); \
467 IIFORMAT_VALID_KEYWORD (type, Q_descriptor, check_valid_string_or_vector)
468
469 #define VALID_WIDGET_KEYWORDS(type) \
470 IIFORMAT_VALID_KEYWORD (type, Q_width, check_valid_int); \
471 IIFORMAT_VALID_KEYWORD (type, Q_height, check_valid_int); \
472 IIFORMAT_VALID_KEYWORD (type, Q_pixel_width, check_valid_int); \
473 IIFORMAT_VALID_KEYWORD (type, Q_pixel_height, check_valid_int); \
474 IIFORMAT_VALID_KEYWORD (type, Q_face, check_valid_face)
475
363 /* we only do this for properties */ 476 /* we only do this for properties */
364 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM (widget, "widget"); 477 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM (widget, "widget");
365 IIFORMAT_HAS_METHOD (widget, property); 478 IIFORMAT_HAS_METHOD (widget, property);
366 IIFORMAT_HAS_METHOD (widget, set_property); 479 IIFORMAT_HAS_METHOD (widget, set_property);
367 480
368 /* widget image-instantiator types - buttons */ 481 /* widget image-instantiator types - buttons */
369 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (button, "button"); 482 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (button, "button");
370 IIFORMAT_HAS_SHARED_METHOD (button, validate, widget); 483 IIFORMAT_HAS_SHARED_METHOD (button, validate, widget);
371 IIFORMAT_HAS_SHARED_METHOD (button, possible_dest_types, widget); 484 IIFORMAT_HAS_SHARED_METHOD (button, possible_dest_types, widget);
372 IIFORMAT_HAS_SHARED_METHOD (button, instantiate, widget); 485 IIFORMAT_HAS_SHARED_METHOD (button, instantiate, widget);
373 486 IIFORMAT_HAS_SHARED_METHOD (button, normalize, widget);
374 IIFORMAT_VALID_KEYWORD (button, Q_width, check_valid_int); 487 IIFORMAT_VALID_KEYWORD (button, Q_image, check_valid_glyph_or_image);
375 IIFORMAT_VALID_KEYWORD (button, Q_height, check_valid_int); 488 VALID_WIDGET_KEYWORDS (button);
376 IIFORMAT_VALID_KEYWORD (button, Q_pixel_width, check_valid_int); 489 VALID_GUI_KEYWORDS (button);
377 IIFORMAT_VALID_KEYWORD (button, Q_pixel_height, check_valid_int); 490
378 IIFORMAT_VALID_KEYWORD (button, Q_face, check_valid_face);
379 IIFORMAT_VALID_KEYWORD (button, Q_descriptor, check_valid_vector);
380 /* edit fields */ 491 /* edit fields */
381 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (edit, "edit"); 492 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (edit, "edit");
382 IIFORMAT_HAS_SHARED_METHOD (edit, validate, widget); 493 IIFORMAT_HAS_SHARED_METHOD (edit, validate, widget);
383 IIFORMAT_HAS_SHARED_METHOD (edit, possible_dest_types, widget); 494 IIFORMAT_HAS_SHARED_METHOD (edit, possible_dest_types, widget);
384 IIFORMAT_HAS_SHARED_METHOD (edit, instantiate, widget); 495 IIFORMAT_HAS_SHARED_METHOD (edit, instantiate, widget);
385 496 VALID_WIDGET_KEYWORDS (edit);
386 IIFORMAT_VALID_KEYWORD (edit, Q_width, check_valid_int); 497 VALID_GUI_KEYWORDS (edit);
387 IIFORMAT_VALID_KEYWORD (edit, Q_height, check_valid_int); 498
388 IIFORMAT_VALID_KEYWORD (edit, Q_pixel_width, check_valid_int);
389 IIFORMAT_VALID_KEYWORD (edit, Q_pixel_height, check_valid_int);
390 IIFORMAT_VALID_KEYWORD (edit, Q_face, check_valid_face);
391 IIFORMAT_VALID_KEYWORD (edit, Q_descriptor, check_valid_vector);
392 /* combo box */ 499 /* combo box */
393 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (combo, "combo"); 500 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (combo, "combo");
394 IIFORMAT_HAS_METHOD (combo, validate); 501 IIFORMAT_HAS_METHOD (combo, validate);
395 IIFORMAT_HAS_SHARED_METHOD (combo, possible_dest_types, widget); 502 IIFORMAT_HAS_SHARED_METHOD (combo, possible_dest_types, widget);
396 IIFORMAT_HAS_METHOD (combo, instantiate); 503 IIFORMAT_HAS_METHOD (combo, instantiate);
504 VALID_GUI_KEYWORDS (combo);
397 505
398 IIFORMAT_VALID_KEYWORD (combo, Q_width, check_valid_int); 506 IIFORMAT_VALID_KEYWORD (combo, Q_width, check_valid_int);
399 IIFORMAT_VALID_KEYWORD (combo, Q_height, check_valid_int); 507 IIFORMAT_VALID_KEYWORD (combo, Q_height, check_valid_int);
400 IIFORMAT_VALID_KEYWORD (combo, Q_pixel_width, check_valid_int); 508 IIFORMAT_VALID_KEYWORD (combo, Q_pixel_width, check_valid_int);
401 IIFORMAT_VALID_KEYWORD (combo, Q_face, check_valid_face); 509 IIFORMAT_VALID_KEYWORD (combo, Q_face, check_valid_face);
402 IIFORMAT_VALID_KEYWORD (combo, Q_descriptor, check_valid_vector);
403 IIFORMAT_VALID_KEYWORD (combo, Q_properties, check_valid_item_list); 510 IIFORMAT_VALID_KEYWORD (combo, Q_properties, check_valid_item_list);
511
404 /* scrollbar */ 512 /* scrollbar */
405 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (scrollbar, "scrollbar"); 513 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (scrollbar, "scrollbar");
406 IIFORMAT_HAS_SHARED_METHOD (scrollbar, validate, widget); 514 IIFORMAT_HAS_SHARED_METHOD (scrollbar, validate, widget);
407 IIFORMAT_HAS_SHARED_METHOD (scrollbar, possible_dest_types, widget); 515 IIFORMAT_HAS_SHARED_METHOD (scrollbar, possible_dest_types, widget);
408 IIFORMAT_HAS_SHARED_METHOD (scrollbar, instantiate, widget); 516 IIFORMAT_HAS_SHARED_METHOD (scrollbar, instantiate, widget);
517 VALID_GUI_KEYWORDS (scrollbar);
409 518
410 IIFORMAT_VALID_KEYWORD (scrollbar, Q_pixel_width, check_valid_int); 519 IIFORMAT_VALID_KEYWORD (scrollbar, Q_pixel_width, check_valid_int);
411 IIFORMAT_VALID_KEYWORD (scrollbar, Q_pixel_height, check_valid_int); 520 IIFORMAT_VALID_KEYWORD (scrollbar, Q_pixel_height, check_valid_int);
412 IIFORMAT_VALID_KEYWORD (scrollbar, Q_face, check_valid_face); 521 IIFORMAT_VALID_KEYWORD (scrollbar, Q_face, check_valid_face);
413 IIFORMAT_VALID_KEYWORD (scrollbar, Q_descriptor, check_valid_vector); 522
523 /* progress guage */
524 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (progress, "progress");
525 IIFORMAT_HAS_SHARED_METHOD (progress, validate, widget);
526 IIFORMAT_HAS_SHARED_METHOD (progress, possible_dest_types, widget);
527 IIFORMAT_HAS_SHARED_METHOD (progress, instantiate, widget);
528 VALID_WIDGET_KEYWORDS (progress);
529 VALID_GUI_KEYWORDS (progress);
530
414 /* labels */ 531 /* labels */
415 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (label, "label"); 532 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (label, "label");
416 IIFORMAT_HAS_SHARED_METHOD (label, possible_dest_types, widget); 533 IIFORMAT_HAS_SHARED_METHOD (label, possible_dest_types, widget);
417 IIFORMAT_HAS_SHARED_METHOD (label, instantiate, static); 534 IIFORMAT_HAS_SHARED_METHOD (label, instantiate, static);
418 535 VALID_WIDGET_KEYWORDS (label);
419 IIFORMAT_VALID_KEYWORD (label, Q_pixel_width, check_valid_int);
420 IIFORMAT_VALID_KEYWORD (label, Q_pixel_height, check_valid_int);
421 IIFORMAT_VALID_KEYWORD (label, Q_width, check_valid_int);
422 IIFORMAT_VALID_KEYWORD (label, Q_height, check_valid_int);
423 IIFORMAT_VALID_KEYWORD (label, Q_face, check_valid_face);
424 IIFORMAT_VALID_KEYWORD (label, Q_descriptor, check_valid_string); 536 IIFORMAT_VALID_KEYWORD (label, Q_descriptor, check_valid_string);
537
425 #if 0 538 #if 0
426 /* group */ 539 /* group */
427 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (group, "group"); 540 INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (group, "group");
428 IIFORMAT_HAS_SHARED_METHOD (group, possible_dest_types, widget); 541 IIFORMAT_HAS_SHARED_METHOD (group, possible_dest_types, widget);
429 IIFORMAT_HAS_METHOD (group, instantiate); 542 IIFORMAT_HAS_METHOD (group, instantiate);