440
+ − 1 #ifndef INCLUDED_lwlib_internal_h_
+ − 2 #define INCLUDED_lwlib_internal_h_
428
+ − 3
+ − 4 #include "lwlib.h"
+ − 5
448
+ − 6 #ifdef USE_ASSERTIONS
+ − 7 /* Highly dubious kludge */
+ − 8 /* (thanks, Jamie, I feel better now -- ben) */
1650
+ − 9 EXTERN_C void assert_failed (const char *, int, const char *);
448
+ − 10 # define abort() (assert_failed (__FILE__, __LINE__, "abort()"))
771
+ − 11 # define assert(x) ((x) ? 1 : (assert_failed (__FILE__, __LINE__, #x), 0))
448
+ − 12 #else
+ − 13 # ifdef DEBUG_XEMACS
771
+ − 14 # define assert(x) ((x) ? 1 : ((void) abort (), 0))
448
+ − 15 # else
771
+ − 16 # define assert(x) (1)
448
+ − 17 # endif
+ − 18 #endif
+ − 19
428
+ − 20 /* This represents a single widget within a widget tree. All the
+ − 21 widgets in a widget tree are chained through the `next' field.
+ − 22 `info' is a back pointer to the widget tree. */
+ − 23
+ − 24 typedef struct _widget_instance
+ − 25 {
+ − 26 Widget widget;
+ − 27 Widget parent;
+ − 28 Boolean pop_up_p;
+ − 29 struct _widget_info* info;
+ − 30 struct _widget_instance* next;
+ − 31 } widget_instance;
+ − 32
+ − 33 /* This represents a single widget tree, such as a single menubar.
+ − 34 The global variable `all_widget_info' lists all widget trees,
+ − 35 chained through the `next' field of this structure. */
+ − 36
+ − 37 typedef struct _widget_info
+ − 38 {
+ − 39 char* type;
+ − 40 char* name;
+ − 41 LWLIB_ID id;
+ − 42 widget_value* val;
+ − 43 Boolean busy;
+ − 44 lw_callback pre_activate_cb;
+ − 45 lw_callback selection_cb;
+ − 46 lw_callback post_activate_cb;
+ − 47 struct _widget_instance* instances;
+ − 48 struct _widget_info* next;
+ − 49 } widget_info;
+ − 50
+ − 51 typedef Widget
+ − 52 (*widget_creation_function) (widget_instance* instance);
+ − 53
+ − 54 typedef struct _widget_creation_entry
+ − 55 {
442
+ − 56 const char* type;
428
+ − 57 widget_creation_function function;
+ − 58 } widget_creation_entry;
+ − 59
+ − 60 /* update all other instances of a widget. Can be used in a callback when
442
+ − 61 a widget has been used by the user */
428
+ − 62 void
+ − 63 lw_internal_update_other_instances (Widget widget, XtPointer closure,
+ − 64 XtPointer call_data);
+ − 65
+ − 66 /* get the widget_value for a widget in a given instance */
+ − 67 widget_value*
+ − 68 lw_get_widget_value_for_widget (widget_instance* instance, Widget w);
+ − 69
+ − 70 widget_info *lw_get_widget_info (LWLIB_ID id);
+ − 71
440
+ − 72 #endif /* INCLUDED_lwlib_internal_h_ */