Mercurial > hg > xemacs-beta
diff lwlib/lwlib-Xaw.c @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | de805c49cfc1 |
children | 11054d720c21 |
line wrap: on
line diff
--- a/lwlib/lwlib-Xaw.c Mon Aug 13 11:19:22 2007 +0200 +++ b/lwlib/lwlib-Xaw.c Mon Aug 13 11:20:41 2007 +0200 @@ -33,23 +33,15 @@ #include <X11/Shell.h> #ifdef LWLIB_SCROLLBARS_ATHENA -#include ATHENA_Scrollbar_h_ +#include <X11/Xaw/Scrollbar.h> #endif #ifdef LWLIB_DIALOGS_ATHENA -#include ATHENA_Dialog_h_ -#include ATHENA_Form_h_ -#include ATHENA_Command_h_ -#include ATHENA_Label_h_ +#include <X11/Xaw/Dialog.h> +#include <X11/Xaw/Form.h> +#include <X11/Xaw/Command.h> +#include <X11/Xaw/Label.h> #endif -#ifdef LWLIB_WIDGETS_ATHENA -#include ATHENA_Toggle_h_ -#include "xlwradio.h" -#include "xlwcheckbox.h" -#include "xlwgauge.h" -#ifndef NEED_MOTIF -#include ATHENA_AsciiText_h_ -#endif -#endif + #include <X11/Xatom.h> static void xaw_generic_callback (Widget, XtPointer, XtPointer); @@ -65,14 +57,6 @@ #ifdef LWLIB_DIALOGS_ATHENA || XtIsSubclass (widget, dialogWidgetClass) #endif -#ifdef LWLIB_WIDGETS_ATHENA - || XtIsSubclass (widget, labelWidgetClass) - || XtIsSubclass (widget, toggleWidgetClass) - || XtIsSubclass (widget, gaugeWidgetClass) -#ifndef NEED_MOTIF - || XtIsSubclass (widget, asciiTextWidgetClass) -#endif -#endif ); } @@ -134,13 +118,6 @@ xaw_update_scrollbar (instance, widget, val); } #endif -#ifdef LWLIB_WIDGETS_ATHENA -#ifndef NEED_MOTIF - else if (XtIsSubclass (widget, asciiTextWidgetClass)) - { - } -#endif -#endif #ifdef LWLIB_DIALOGS_ATHENA else if (XtIsSubclass (widget, dialogWidgetClass)) { @@ -148,16 +125,6 @@ XtSetArg (al [0], XtNlabel, val->contents->value); XtSetValues (widget, al, 1); } -#endif /* LWLIB_DIALOGS_ATHENA */ -#ifdef LWLIB_WIDGETS_ATHENA - else if (XtClass (widget) == labelWidgetClass) - { - Arg al [1]; - XtSetArg (al [0], XtNlabel, val->value); - XtSetValues (widget, al, 1); - } -#endif /* LWLIB_WIDGETS_ATHENA */ -#if defined (LWLIB_DIALOGS_ATHENA) || defined (LWLIB_WIDGETS_ATHENA) else if (XtIsSubclass (widget, commandWidgetClass)) { Dimension bw = 0; @@ -187,63 +154,17 @@ XtRemoveAllCallbacks (widget, XtNcallback); XtAddCallback (widget, XtNcallback, xaw_generic_callback, instance); -#ifdef LWLIB_WIDGETS_ATHENA - /* set the selected state */ - if (XtIsSubclass (widget, toggleWidgetClass)) - { - XtSetArg (al [0], XtNstate, val->selected); - XtSetValues (widget, al, 1); - } -#endif /* LWLIB_WIDGETS_ATHENA */ } #endif /* LWLIB_DIALOGS_ATHENA */ - /* Lastly update our global arg values. */ - if (val->args && val->args->nargs) - XtSetValues (widget, val->args->args, val->args->nargs); } void xaw_update_one_value (widget_instance *instance, Widget widget, widget_value *val) { -#ifdef LWLIB_WIDGETS_ATHENA - widget_value *old_wv; - - /* copy the call_data slot into the "return" widget_value */ - for (old_wv = instance->info->val->contents; old_wv; old_wv = old_wv->next) - if (!strcmp (val->name, old_wv->name)) - { - val->call_data = old_wv->call_data; - break; - } - - if (XtIsSubclass (widget, toggleWidgetClass)) - { - Arg al [1]; - XtSetArg (al [0], XtNstate, &val->selected); - XtGetValues (widget, al, 1); - val->edited = True; - } -#ifndef NEED_MOTIF - else if (XtIsSubclass (widget, asciiTextWidgetClass)) - { - Arg al [2]; - String buf = 0; - XtSetArg (al [0], XtNstring, &buf); - XtGetValues (widget, al, 1); - - if (val->value) - { - free (val->value); - val->value = 0; - } - /* I don't think this causes a leak. */ - if (buf) - val->value = strdup (buf); - val->edited = True; - } -#endif -#endif /* LWLIB_WIDGETS_ATHENA */ + /* This function is not used by the scrollbars and those are the only + Athena widget implemented at the moment so do nothing. */ + return; } void @@ -344,8 +265,8 @@ static Boolean actions_initted = False; static Widget -make_dialog (const char* name, Widget parent, Boolean pop_up_p, - const char* shell_title, const char* icon_name, +make_dialog (CONST char* name, Widget parent, Boolean pop_up_p, + CONST char* shell_title, CONST char* icon_name, Boolean text_input_slot, Boolean radio_box, Boolean list, int left_buttons, int right_buttons) @@ -453,8 +374,8 @@ Widget parent = instance->parent; Widget widget; Boolean pop_up_p = instance->pop_up_p; - const char *shell_name = 0; - const char *icon_name = 0; + CONST char *shell_name = 0; + CONST char *icon_name = 0; Boolean text_input_slot = False; Boolean radio_box = False; Boolean list = False; @@ -519,21 +440,7 @@ Widget instance_widget; LWLIB_ID id; XtPointer user_data; -#ifdef LWLIB_WIDGETS_ATHENA - /* We want the selected status to change only when we decide it - should change. Yuck but correct. */ - if (XtIsSubclass (widget, toggleWidgetClass)) - { - Boolean check; - Arg al [1]; - XtSetArg (al [0], XtNstate, &check); - XtGetValues (widget, al, 1); - - XtSetArg (al [0], XtNstate, !check); - XtSetValues (widget, al, 1); - } -#endif /* LWLIB_WIDGETS_ATHENA */ lw_internal_update_other_instances (widget, closure, call_data); if (! instance) @@ -557,26 +464,17 @@ #else /* Damn! Athena doesn't give us a way to hang our own data on the buttons, so we have to go find it... I guess this assumes that - all instances of a button have the same call data. - - ... Which is a totally bogus assumption --andyp */ + all instances of a button have the same call data. */ { - widget_value *val = instance->info->val; - /* If the widget is a buffer/gutter widget then we already have - the one we are looking for, so don't try and descend the widget - tree. */ - if (val->contents) + widget_value *val = instance->info->val->contents; + char *name = XtName (widget); + while (val) { - char *name = XtName (widget); - val = val->contents; - while (val) - { - if (val->name && !strcmp (val->name, name)) - break; - val = val->next; - } - if (! val) abort (); + if (val->name && !strcmp (val->name, name)) + break; + val = val->next; } + if (! val) abort (); user_data = val->call_data; } #endif @@ -716,184 +614,12 @@ } #endif /* LWLIB_SCROLLBARS_ATHENA */ -#ifdef LWLIB_WIDGETS_ATHENA -/* glyph widgets */ -static Widget -xaw_create_button (widget_instance *instance) -{ - Arg al[20]; - int ac = 0; - Widget button = 0; - widget_value* val = instance->info->val; - - XtSetArg (al [ac], XtNsensitive, val->enabled); ac++; - XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++; - XtSetArg (al [ac], XtNjustify, XtJustifyCenter); ac++; - /* The highlight doesn't appear to be dynamically set which makes it - look ugly. I think this may be a LessTif bug but for now we just - get rid of it. */ - XtSetArg (al [ac], XtNhighlightThickness, (Dimension)0);ac++; - - /* add any args the user supplied for creation time */ - lw_add_value_args_to_args (val, al, &ac); - - if (!val->call_data) - button = XtCreateManagedWidget (val->name, labelWidgetClass, - instance->parent, al, ac); - - else - { - if (val->type == TOGGLE_TYPE || val->type == RADIO_TYPE) - { - XtSetArg (al [ac], XtNstate, val->selected); ac++; - button = XtCreateManagedWidget - (val->name, - val->type == TOGGLE_TYPE ? checkboxWidgetClass : radioWidgetClass, - instance->parent, al, ac); - } - else - { - button = XtCreateManagedWidget (val->name, commandWidgetClass, - instance->parent, al, ac); - } - XtRemoveAllCallbacks (button, XtNcallback); - XtAddCallback (button, XtNcallback, xaw_generic_callback, (XtPointer)instance); - } - - XtManageChild (button); - - return button; -} - -static Widget -xaw_create_label_field (widget_instance *instance) -{ - return xaw_create_label (instance->parent, instance->info->val); -} - -Widget -xaw_create_label (Widget parent, widget_value* val) -{ - Arg al[20]; - int ac = 0; - Widget label = 0; - - XtSetArg (al [ac], XtNsensitive, val->enabled); ac++; - XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++; - XtSetArg (al [ac], XtNjustify, XtJustifyCenter); ac++; - - /* add any args the user supplied for creation time */ - lw_add_value_args_to_args (val, al, &ac); - - label = XtCreateManagedWidget (val->name, labelWidgetClass, - parent, al, ac); - - /* Do it again for arguments that have no effect until the widget is realized. */ - ac = 0; - lw_add_value_args_to_args (val, al, &ac); - if (ac > 20) - abort (); /* #### need assert macro in lwlib */ - XtSetValues (label, al, ac); - - return label; -} - -static Widget -xaw_create_progress (widget_instance *instance) -{ - Arg al[20]; - int ac = 0; - Widget scale = 0; - widget_value* val = instance->info->val; -#if 0 /* This looks too awful, although more correct. */ - if (!val->call_data) - { - XtSetArg (al [ac], XtNsensitive, False); ac++; - } - else - { - XtSetArg (al [ac], XtNsensitive, val->enabled); ac++; - } -#else - XtSetArg (al [ac], XtNsensitive, True); ac++; -#endif - - XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++; - XtSetArg (al [ac], XtNorientation, XtorientHorizontal); ac++; - XtSetArg (al [ac], XtNhighlightThickness, (Dimension)0);ac++; - XtSetArg (al [ac], XtNntics, (Cardinal)10);ac++; - - /* add any args the user supplied for creation time */ - lw_add_value_args_to_args (val, al, &ac); - - scale = XtCreateManagedWidget (val->name, gaugeWidgetClass, - instance->parent, al, ac); - /* add the callback */ - if (val->call_data) - XtAddCallback (scale, XtNgetValue, xaw_generic_callback, (XtPointer)instance); - - XtManageChild (scale); - - return scale; -} - -#ifndef NEED_MOTIF -#define TEXT_BUFFER_SIZE 128 -static Widget -xaw_create_text_field (widget_instance *instance) -{ - Arg al[20]; - int ac = 0; - Widget text = 0; - widget_value* val = instance->info->val; - - XtSetArg (al [ac], XtNsensitive, val->enabled); ac++; - XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++; - XtSetArg (al [ac], XtNhighlightThickness, (Dimension)0); ac++; - XtSetArg (al [ac], XtNtype, XawAsciiString); ac++; - XtSetArg (al [ac], XtNeditType, XawtextEdit); ac++; - XtSetArg (al [ac], XtNuseStringInPlace, False); ac++; -#if 0 - XtSetArg (al [ac], XtNlength, TEXT_BUFFER_SIZE); ac++; -#endif - if (val->value) - { - XtSetArg (al [ac], XtNstring, val->value); ac++; - } - - /* add any args the user supplied for creation time */ - lw_add_value_args_to_args (val, al, &ac); - - text = XtCreateManagedWidget (val->name, asciiTextWidgetClass, - instance->parent, al, ac); - - /* add the callback */ - if (val->call_data) - XtAddCallback (text, XtNgetValue, xaw_generic_callback, (XtPointer)instance); - - XtManageChild (text); - - return text; -} -#endif - -#endif /* LWLIB_WIDGETS_ATHENA */ - widget_creation_entry xaw_creation_table [] = { #ifdef LWLIB_SCROLLBARS_ATHENA - {"vertical-scrollbar", xaw_create_vertical_scrollbar }, - {"horizontal-scrollbar", xaw_create_horizontal_scrollbar }, -#endif -#ifdef LWLIB_WIDGETS_ATHENA - {"button", xaw_create_button }, - { "label", xaw_create_label_field }, -#ifndef NEED_MOTIF - {"text-field", xaw_create_text_field }, -#endif - {"progress", xaw_create_progress }, + {"vertical-scrollbar", xaw_create_vertical_scrollbar}, + {"horizontal-scrollbar", xaw_create_horizontal_scrollbar}, #endif {NULL, NULL} }; -