diff options
Diffstat (limited to 'lwlib/lwlib-Xm.c')
-rw-r--r-- | lwlib/lwlib-Xm.c | 397 |
1 files changed, 169 insertions, 228 deletions
diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c index ed203e26bf4..1116a6a5440 100644 --- a/lwlib/lwlib-Xm.c +++ b/lwlib/lwlib-Xm.c @@ -65,13 +65,6 @@ Boston, MA 02110-1301, USA. */ #include <Xm/DialogS.h> #include <Xm/Form.h> -#undef P_ -#if defined __STDC__ || defined PROTOTYPES -#define P_(X) X -#else -#define P_(X) () -#endif - enum do_call_type { pre_activate, selection, no_selection, post_activate }; @@ -86,63 +79,63 @@ typedef struct _destroyed_instance struct _destroyed_instance* next; } destroyed_instance; -static destroyed_instance *make_destroyed_instance P_ ((char *, char *, - Widget, Widget, - Boolean)); -static void free_destroyed_instance P_ ((destroyed_instance*)); -Widget first_child P_ ((Widget)); -Boolean lw_motif_widget_p P_ ((Widget)); -static XmString resource_motif_string P_ ((Widget, char *)); -static void destroy_all_children P_ ((Widget, int)); -static void xm_update_label P_ ((widget_instance *, Widget, widget_value *)); -static void xm_update_list P_ ((widget_instance *, Widget, widget_value *)); -static void xm_update_pushbutton P_ ((widget_instance *, Widget, - widget_value *)); -static void xm_update_cascadebutton P_ ((widget_instance *, Widget, - widget_value *)); -static void xm_update_toggle P_ ((widget_instance *, Widget, widget_value *)); -static void xm_update_radiobox P_ ((widget_instance *, Widget, widget_value *)); -static void make_menu_in_widget P_ ((widget_instance *, Widget, - widget_value *, int)); -static void update_one_menu_entry P_ ((widget_instance *, Widget, - widget_value *, Boolean)); -static void xm_update_menu P_ ((widget_instance *, Widget, widget_value *, - Boolean)); -static void xm_update_text P_ ((widget_instance *, Widget, widget_value *)); -static void xm_update_text_field P_ ((widget_instance *, Widget, - widget_value *)); -void xm_update_one_value P_ ((widget_instance *, Widget, widget_value *)); -static void activate_button P_ ((Widget, XtPointer, XtPointer)); -static Widget make_dialog P_ ((char *, Widget, Boolean, char *, char *, - Boolean, Boolean, Boolean, int, int)); -static destroyed_instance* find_matching_instance P_ ((widget_instance*)); -static void mark_dead_instance_destroyed P_ ((Widget, XtPointer, XtPointer)); -static void recenter_widget P_ ((Widget)); -static Widget recycle_instance P_ ((destroyed_instance*)); -Widget xm_create_dialog P_ ((widget_instance*)); -static Widget make_menubar P_ ((widget_instance*)); -static void remove_grabs P_ ((Widget, XtPointer, XtPointer)); -static Widget make_popup_menu P_ ((widget_instance*)); -static Widget make_main P_ ((widget_instance*)); -void xm_destroy_instance P_ ((widget_instance*)); -void xm_popup_menu P_ ((Widget, XEvent *)); -static void set_min_dialog_size P_ ((Widget)); -static void do_call P_ ((Widget, XtPointer, enum do_call_type)); -static void xm_generic_callback P_ ((Widget, XtPointer, XtPointer)); -static void xm_nosel_callback P_ ((Widget, XtPointer, XtPointer)); -static void xm_pull_down_callback P_ ((Widget, XtPointer, XtPointer)); -static void xm_pop_down_callback P_ ((Widget, XtPointer, XtPointer)); -void xm_set_keyboard_focus P_ ((Widget, Widget)); -void xm_set_main_areas P_ ((Widget, Widget, Widget)); -static void xm_internal_update_other_instances P_ ((Widget, XtPointer, - XtPointer)); -static void xm_arm_callback P_ ((Widget, XtPointer, XtPointer)); +static destroyed_instance *make_destroyed_instance (char *, char *, + Widget, Widget, + Boolean); +static void free_destroyed_instance (destroyed_instance*); +Widget first_child (Widget); +Boolean lw_motif_widget_p (Widget); +static XmString resource_motif_string (Widget, char *); +static void destroy_all_children (Widget, int); +static void xm_update_label (widget_instance *, Widget, widget_value *); +static void xm_update_list (widget_instance *, Widget, widget_value *); +static void xm_update_pushbutton (widget_instance *, Widget, + widget_value *); +static void xm_update_cascadebutton (widget_instance *, Widget, + widget_value *); +static void xm_update_toggle (widget_instance *, Widget, widget_value *); +static void xm_update_radiobox (widget_instance *, Widget, widget_value *); +static void make_menu_in_widget (widget_instance *, Widget, + widget_value *, int); +static void update_one_menu_entry (widget_instance *, Widget, + widget_value *, Boolean); +static void xm_update_menu (widget_instance *, Widget, widget_value *, + Boolean); +static void xm_update_text (widget_instance *, Widget, widget_value *); +static void xm_update_text_field (widget_instance *, Widget, + widget_value *); +void xm_update_one_value (widget_instance *, Widget, widget_value *); +static void activate_button (Widget, XtPointer, XtPointer); +static Widget make_dialog (char *, Widget, Boolean, char *, char *, + Boolean, Boolean, Boolean, int, int); +static destroyed_instance* find_matching_instance (widget_instance*); +static void mark_dead_instance_destroyed (Widget, XtPointer, XtPointer); +static void recenter_widget (Widget); +static Widget recycle_instance (destroyed_instance*); +Widget xm_create_dialog (widget_instance*); +static Widget make_menubar (widget_instance*); +static void remove_grabs (Widget, XtPointer, XtPointer); +static Widget make_popup_menu (widget_instance*); +static Widget make_main (widget_instance*); +void xm_destroy_instance (widget_instance*); +void xm_popup_menu (Widget, XEvent *); +static void set_min_dialog_size (Widget); +static void do_call (Widget, XtPointer, enum do_call_type); +static void xm_generic_callback (Widget, XtPointer, XtPointer); +static void xm_nosel_callback (Widget, XtPointer, XtPointer); +static void xm_pull_down_callback (Widget, XtPointer, XtPointer); +static void xm_pop_down_callback (Widget, XtPointer, XtPointer); +void xm_set_keyboard_focus (Widget, Widget); +void xm_set_main_areas (Widget, Widget, Widget); +static void xm_internal_update_other_instances (Widget, XtPointer, + XtPointer); +static void xm_arm_callback (Widget, XtPointer, XtPointer); #if 0 -void xm_update_one_widget P_ ((widget_instance *, Widget, widget_value *, - Boolean)); -void xm_pop_instance P_ ((widget_instance*, Boolean)); -void xm_manage_resizing P_ ((Widget, Boolean)); +void xm_update_one_widget (widget_instance *, Widget, widget_value *, + Boolean); +void xm_pop_instance (widget_instance*, Boolean); +void xm_manage_resizing (Widget, Boolean); #endif @@ -152,8 +145,7 @@ void xm_manage_resizing P_ ((Widget, Boolean)); This is sometimes handy to have available. */ void -x_print_complete_resource_name (widget) - Widget widget; +x_print_complete_resource_name (Widget widget) { int i; String names[100]; @@ -175,12 +167,11 @@ x_print_complete_resource_name (widget) static destroyed_instance *all_destroyed_instances = NULL; static destroyed_instance* -make_destroyed_instance (name, type, widget, parent, pop_up_p) - char* name; - char* type; - Widget widget; - Widget parent; - Boolean pop_up_p; +make_destroyed_instance (char* name, + char* type, + Widget widget, + Widget parent, + Boolean pop_up_p) { destroyed_instance* instance = (destroyed_instance*)malloc (sizeof (destroyed_instance)); @@ -194,8 +185,7 @@ make_destroyed_instance (name, type, widget, parent, pop_up_p) } static void -free_destroyed_instance (instance) - destroyed_instance* instance; +free_destroyed_instance (destroyed_instance* instance) { free (instance->name); free (instance->type); @@ -204,15 +194,13 @@ free_destroyed_instance (instance) /* motif utility functions */ Widget -first_child (widget) - Widget widget; +first_child (Widget widget) { return ((CompositeWidget)widget)->composite.children [0]; } Boolean -lw_motif_widget_p (widget) - Widget widget; +lw_motif_widget_p (Widget widget) { return XtClass (widget) == xmDialogShellWidgetClass @@ -220,9 +208,8 @@ lw_motif_widget_p (widget) } static XmString -resource_motif_string (widget, name) - Widget widget; - char* name; +resource_motif_string (Widget widget, + char* name) { XtResource resource; XmString result = 0; @@ -244,9 +231,8 @@ resource_motif_string (widget, name) starting with number FIRST_CHILD_TO_DESTROY. */ static void -destroy_all_children (widget, first_child_to_destroy) - Widget widget; - int first_child_to_destroy; +destroy_all_children (Widget widget, + int first_child_to_destroy) { Widget* children; unsigned int number; @@ -292,9 +278,7 @@ destroy_all_children (widget, first_child_to_destroy) is called. */ static void -xm_arm_callback (w, client_data, call_data) - Widget w; - XtPointer client_data, call_data; +xm_arm_callback (Widget w, XtPointer client_data, XtPointer call_data) { XmPushButtonCallbackStruct *cbs = (XmPushButtonCallbackStruct *) call_data; widget_value *wv = (widget_value *) client_data; @@ -346,10 +330,9 @@ xm_arm_callback (w, client_data, call_data) not null, and contains the label string to display. */ static void -xm_update_label (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_label (widget_instance* instance, + Widget widget, + widget_value* val) { XmString res_string = 0; XmString built_string = 0; @@ -397,10 +380,9 @@ xm_update_label (instance, widget, val) /* update of list */ static void -xm_update_list (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_list (widget_instance* instance, + Widget widget, + widget_value* val) { widget_value* cur; int i; @@ -421,10 +403,9 @@ xm_update_list (instance, widget, val) /* update of buttons */ static void -xm_update_pushbutton (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_pushbutton (widget_instance* instance, + Widget widget, + widget_value* val) { XtVaSetValues (widget, XmNalignment, XmALIGNMENT_CENTER, NULL); XtRemoveAllCallbacks (widget, XmNactivateCallback); @@ -432,10 +413,9 @@ xm_update_pushbutton (instance, widget, val) } static void -xm_update_cascadebutton (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_cascadebutton (widget_instance* instance, + Widget widget, + widget_value* val) { /* Should also rebuild the menu by calling ...update_menu... */ XtRemoveAllCallbacks (widget, XmNcascadingCallback); @@ -445,10 +425,9 @@ xm_update_cascadebutton (instance, widget, val) /* update toggle and radiobox */ static void -xm_update_toggle (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_toggle (widget_instance* instance, + Widget widget, + widget_value* val) { XtRemoveAllCallbacks (widget, XmNvalueChangedCallback); XtAddCallback (widget, XmNvalueChangedCallback, @@ -458,10 +437,9 @@ xm_update_toggle (instance, widget, val) } static void -xm_update_radiobox (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_radiobox (widget_instance* instance, + Widget widget, + widget_value* val) { Widget toggle; @@ -505,11 +483,10 @@ xm_update_radiobox (instance, widget, val) /* KEEP_FIRST_CHILDREN gives the number of initial children to keep. */ static void -make_menu_in_widget (instance, widget, val, keep_first_children) - widget_instance* instance; - Widget widget; - widget_value* val; - int keep_first_children; +make_menu_in_widget (widget_instance* instance, + Widget widget, + widget_value* val, + int keep_first_children) { Widget* children = 0; int num_children; @@ -662,11 +639,10 @@ make_menu_in_widget (instance, widget, val, keep_first_children) } static void -update_one_menu_entry (instance, widget, val, deep_p) - widget_instance* instance; - Widget widget; - widget_value* val; - Boolean deep_p; +update_one_menu_entry (widget_instance* instance, + Widget widget, + widget_value* val, + Boolean deep_p) { Arg al [256]; int ac; @@ -764,11 +740,10 @@ update_one_menu_entry (instance, widget, val, deep_p) } static void -xm_update_menu (instance, widget, val, deep_p) - widget_instance* instance; - Widget widget; - widget_value* val; - Boolean deep_p; +xm_update_menu (widget_instance* instance, + Widget widget, + widget_value* val, + Boolean deep_p) { Widget* children; unsigned int num_children; @@ -839,10 +814,9 @@ xm_update_menu (instance, widget, val, deep_p) /* update text widgets */ static void -xm_update_text (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_text (widget_instance* instance, + Widget widget, + widget_value* val) { XmTextSetString (widget, val->value ? val->value : ""); XtRemoveAllCallbacks (widget, XmNactivateCallback); @@ -853,10 +827,9 @@ xm_update_text (instance, widget, val) } static void -xm_update_text_field (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_text_field (widget_instance* instance, + Widget widget, + widget_value* val) { XmTextFieldSetString (widget, val->value ? val->value : ""); XtRemoveAllCallbacks (widget, XmNactivateCallback); @@ -870,11 +843,10 @@ xm_update_text_field (instance, widget, val) /* update a motif widget */ void -xm_update_one_widget (instance, widget, val, deep_p) - widget_instance* instance; - Widget widget; - widget_value* val; - Boolean deep_p; +xm_update_one_widget (widget_instance* instance, + Widget widget, + widget_value* val, + Boolean deep_p) { WidgetClass class; @@ -935,10 +907,9 @@ xm_update_one_widget (instance, widget, val, deep_p) /* getting the value back */ void -xm_update_one_value (instance, widget, val) - widget_instance* instance; - Widget widget; - widget_value* val; +xm_update_one_value (widget_instance* instance, + Widget widget, + widget_value* val) { WidgetClass class = XtClass (widget); widget_value *old_wv; @@ -1031,10 +1002,9 @@ xm_update_one_value (instance, widget, val) I could not find a way to do that with accelerators. */ static void -activate_button (widget, closure, call_data) - Widget widget; - XtPointer closure; - XtPointer call_data; +activate_button (Widget widget, + XtPointer closure, + XtPointer call_data) { Widget button = (Widget)closure; XtCallCallbacks (button, XmNactivateCallback, NULL); @@ -1044,11 +1014,10 @@ activate_button (widget, closure, call_data) /* Called for key press in dialogs. Used to pop down dialog on ESC. */ static void -dialog_key_cb (widget, closure, event, continue_to_dispatch) - Widget widget; - XtPointer closure; - XEvent *event; - Boolean *continue_to_dispatch; +dialog_key_cb (Widget widget, + XtPointer closure, + XEvent *event, + Boolean *continue_to_dispatch) { KeySym sym = 0; Modifiers modif_ret; @@ -1071,18 +1040,16 @@ dialog_key_cb (widget, closure, event, continue_to_dispatch) /* dialogs */ static Widget -make_dialog (name, parent, pop_up_p, shell_title, icon_name, text_input_slot, - radio_box, list, left_buttons, right_buttons) - char* name; - Widget parent; - Boolean pop_up_p; - char* shell_title; - char* icon_name; - Boolean text_input_slot; - Boolean radio_box; - Boolean list; - int left_buttons; - int right_buttons; +make_dialog (char* name, + Widget parent, + Boolean pop_up_p, + char* shell_title, + char* icon_name, + Boolean text_input_slot, + Boolean radio_box, + Boolean list, + int left_buttons, + int right_buttons) { Widget result; Widget form; @@ -1335,8 +1302,7 @@ make_dialog (name, parent, pop_up_p, shell_title, icon_name, text_input_slot, } static destroyed_instance* -find_matching_instance (instance) - widget_instance* instance; +find_matching_instance (widget_instance* instance) { destroyed_instance* cur; destroyed_instance* prev; @@ -1373,18 +1339,16 @@ find_matching_instance (instance) } static void -mark_dead_instance_destroyed (widget, closure, call_data) - Widget widget; - XtPointer closure; - XtPointer call_data; +mark_dead_instance_destroyed (Widget widget, + XtPointer closure, + XtPointer call_data) { destroyed_instance* instance = (destroyed_instance*)closure; instance->widget = NULL; } static void -recenter_widget (widget) - Widget widget; +recenter_widget (Widget widget) { Widget parent = XtParent (widget); Screen* screen = XtScreen (widget); @@ -1420,8 +1384,7 @@ recenter_widget (widget) } static Widget -recycle_instance (instance) - destroyed_instance* instance; +recycle_instance (destroyed_instance* instance) { Widget widget = instance->widget; @@ -1457,8 +1420,7 @@ recycle_instance (instance) } Widget -xm_create_dialog (instance) - widget_instance* instance; +xm_create_dialog (widget_instance* instance) { char* name = instance->info->type; Widget parent = instance->parent; @@ -1538,8 +1500,7 @@ xm_create_dialog (instance) because we have not yet managed to make it work right in Motif. */ static Widget -make_menubar (instance) - widget_instance* instance; +make_menubar (widget_instance* instance) { Arg al[3]; int ac; @@ -1550,18 +1511,16 @@ make_menubar (instance) } static void -remove_grabs (shell, closure, call_data) - Widget shell; - XtPointer closure; - XtPointer call_data; +remove_grabs (Widget shell, + XtPointer closure, + XtPointer call_data) { Widget menu = (Widget) closure; XmRemoveFromPostFromList (menu, XtParent (XtParent (menu))); } static Widget -make_popup_menu (instance) - widget_instance* instance; +make_popup_menu (widget_instance* instance) { Widget parent = instance->parent; Window parent_window = parent->core.window; @@ -1577,8 +1536,7 @@ make_popup_menu (instance) } static Widget -make_main (instance) - widget_instance* instance; +make_main (widget_instance* instance) { Widget parent = instance->parent; Widget result; @@ -1717,8 +1675,7 @@ xm_creation_table [] = /* Destruction of instances */ void -xm_destroy_instance (instance) - widget_instance* instance; +xm_destroy_instance ( widget_instance* instance) { Widget widget = instance->widget; /* recycle the dialog boxes */ @@ -1752,9 +1709,7 @@ xm_destroy_instance (instance) /* popup utility */ void -xm_popup_menu (widget, event) - Widget widget; - XEvent *event; +xm_popup_menu (Widget widget, XEvent *event) { XButtonPressedEvent dummy; @@ -1802,8 +1757,7 @@ xm_popup_menu (widget, event) } static void -set_min_dialog_size (w) - Widget w; +set_min_dialog_size (Widget w) { short width; short height; @@ -1812,9 +1766,7 @@ set_min_dialog_size (w) } void -xm_pop_instance (instance, up) - widget_instance* instance; - Boolean up; +xm_pop_instance (widget_instance* instance, Boolean up) { Widget widget = instance->widget; @@ -1843,10 +1795,9 @@ xm_pop_instance (instance, up) /* motif callback */ static void -do_call (widget, closure, type) - Widget widget; - XtPointer closure; - enum do_call_type type; +do_call (Widget widget, + XtPointer closure, + enum do_call_type type) { Arg al [256]; int ac; @@ -1903,10 +1854,9 @@ do_call (widget, closure, type) if the widget was ``destroyed'' by caching it in the all_destroyed_instances list */ static void -xm_internal_update_other_instances (widget, closure, call_data) - Widget widget; - XtPointer closure; - XtPointer call_data; +xm_internal_update_other_instances (Widget widget, + XtPointer closure, + XtPointer call_data) { Widget parent; for (parent = widget; parent; parent = XtParent (parent)) @@ -1918,20 +1868,18 @@ xm_internal_update_other_instances (widget, closure, call_data) } static void -xm_generic_callback (widget, closure, call_data) - Widget widget; - XtPointer closure; - XtPointer call_data; +xm_generic_callback (Widget widget, + XtPointer closure, + XtPointer call_data) { lw_internal_update_other_instances (widget, closure, call_data); do_call (widget, closure, selection); } static void -xm_nosel_callback (widget, closure, call_data) - Widget widget; - XtPointer closure; - XtPointer call_data; +xm_nosel_callback (Widget widget, + XtPointer closure, + XtPointer call_data) { /* This callback is only called when a dialog box is dismissed with the wm's destroy button (WM_DELETE_WINDOW.) We want the dialog @@ -1946,10 +1894,9 @@ xm_nosel_callback (widget, closure, call_data) } static void -xm_pull_down_callback (widget, closure, call_data) - Widget widget; - XtPointer closure; - XtPointer call_data; +xm_pull_down_callback (Widget widget, + XtPointer closure, + XtPointer call_data) { Widget parent = XtParent (widget); @@ -1970,10 +1917,9 @@ xm_pull_down_callback (widget, closure, call_data) menu, whether or not its submenu is visible. */ static void -xm_pop_down_callback (widget, closure, call_data) - Widget widget; - XtPointer closure; - XtPointer call_data; +xm_pop_down_callback (Widget widget, + XtPointer closure, + XtPointer call_data) { widget_instance *instance = (widget_instance *) closure; @@ -1985,9 +1931,7 @@ xm_pop_down_callback (widget, closure, call_data) /* set the keyboard focus */ void -xm_set_keyboard_focus (parent, w) - Widget parent; - Widget w; +xm_set_keyboard_focus (Widget parent, Widget w) { XmProcessTraversal (w, 0); XtSetKeyboardFocus (parent, w); @@ -1995,10 +1939,9 @@ xm_set_keyboard_focus (parent, w) /* Motif hack to set the main window areas. */ void -xm_set_main_areas (parent, menubar, work_area) - Widget parent; - Widget menubar; - Widget work_area; +xm_set_main_areas (Widget parent, + Widget menubar, + Widget work_area) { XmMainWindowSetAreas (parent, menubar, /* menubar (maybe 0) */ @@ -2010,9 +1953,7 @@ xm_set_main_areas (parent, menubar, work_area) /* Motif hack to control resizing on the menubar. */ void -xm_manage_resizing (w, flag) - Widget w; - Boolean flag; +xm_manage_resizing (Widget w, Boolean flag) { XtVaSetValues (w, XtNallowShellResize, flag, NULL); } |