-#ifndef LWLIB_H
-#define LWLIB_H
+#ifndef INCLUDED_lwlib_h_
+#define INCLUDED_lwlib_h_
#include <X11/Intrinsic.h>
int scrollbar_x, scrollbar_y;
} scrollbar_values;
+typedef struct _widget_args
+{
+ /* some things are only possible at creation time. args are applied
+ to widgets at creation time. */
+ ArgList args;
+ int nargs;
+ /* Copying args is impossible so we make the caller give us heap allocated
+ args and free them when no one wants them any more. */
+ int ref_count;
+ /* Since we are reference counting we need to be able to determine
+ when something has changed. */
+ Boolean args_changed;
+} widget_args;
+
typedef struct _widget_value
{
/* This slot is only partially utilized right now. */
/* name of widget */
char* name;
- /* value (meaning BOGUSLY depend on widget type) */
+ /* value (meaning BOGUSLY depends on widget type) */
char* value;
/* keyboard equivalent. no implications for XtTranslations */
char* key;
Boolean edited;
/* true if has changed (maintained by lw library) */
change_type change;
- /* Contents of the sub-widgets, also selected slot for checkbox */
+ /* Contents of sub-widgets, also selected slot for checkbox */
struct _widget_value* contents;
/* data passed to callback */
XtPointer call_data;
- /* next one in the list */
+ /* next in the list of siblings */
struct _widget_value* next;
/* slot for the toolkit dependent part. Always initialize to NULL. */
void* toolkit_data;
/* data defining a scrollbar; only valid if type == "scrollbar" */
scrollbar_values *scrollbar_data;
+ /* A reference counted arg structure. */
+ struct _widget_args *args;
/* we resource the widget_value structures; this points to the next
- one on the free list if this one has been deallocated.
- */
+ one on the free list if this one has been deallocated. */
struct _widget_value *free_list;
+
} widget_value;
/* do this for the other toolkits too */
#endif /* LWLIB_MENUBARS_LUCID */
-void lw_register_widget (CONST char* type, CONST char* name, LWLIB_ID id,
+#if defined (LWLIB_TABS_LUCID)
+#include "xlwtabs.h"
+#endif
+
+void lw_register_widget (const char* type, const char* name, LWLIB_ID id,
widget_value* val, lw_callback pre_activate_cb,
lw_callback selection_cb,
lw_callback post_activate_cb);
Widget lw_get_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p);
Widget lw_make_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p);
-Widget lw_create_widget (CONST char* type, CONST char* name, LWLIB_ID id,
+Widget lw_create_widget (const char* type, const char* name, LWLIB_ID id,
widget_value* val, Widget parent, Boolean pop_up_p,
lw_callback pre_activate_cb,
lw_callback selection_cb,
Boolean lw_get_some_values (LWLIB_ID id, widget_value* val);
void lw_pop_up_all_widgets (LWLIB_ID id);
void lw_pop_down_all_widgets (LWLIB_ID id);
+void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset);
+void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value);
+XtArgVal lw_get_value_arg (widget_value* wv, String name);
+void lw_copy_widget_value_args (widget_value* copy, widget_value* val);
+widget_value * copy_widget_value_tree (widget_value *val, change_type change);
widget_value *malloc_widget_value (void);
void free_widget_value (widget_value *);
+void free_widget_value_tree (widget_value *wv);
widget_value *replace_widget_value_tree (widget_value*, widget_value*);
void lw_popup_menu (Widget, XEvent *);
/* Silly Energize hack to invert the "sheet" button */
void lw_show_busy (Widget w, Boolean busy);
-#endif /* LWLIB_H */
+void lw_remove_accelerator_spec (char *val);
+
+#endif /* INCLUDED_lwlib_h_ */