home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / lib / xm / scale.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-22  |  1.2 KB  |  42 lines

  1. #include "../xt/xt.h"
  2. #include <Xm/Xm.h>
  3. #include <Xm/Scale.h>
  4.  
  5. static Object Get_Scale_CB (p) XmScaleCallbackStruct *p; {
  6.     Object ret, s;
  7.     extern SYMDESCR Reason_Syms[];
  8.     GC_Node2;
  9.  
  10.     ret = s = Make_Integer (p->value);
  11.     GC_Link2 (ret, s);
  12.     ret = Cons (ret, Null);
  13. #ifdef SCALE_WIDGET_WORKS   /* It doesn't. */
  14.     s = Get_Any_CB ((XmAnyCallbackStruct *)p);
  15. #else
  16.     s = Intern ("event-goes-here-when-Xm-is-fixed");
  17.     s = Cons (s, Null);
  18.     s = Cons (Bits_To_Symbols ((unsigned long)p->reason, 0, Reason_Syms), s);
  19. #endif
  20.     ret = Cons (Cdr (s), ret);
  21.     ret = Cons (Car (s), ret);
  22.     GC_Unlink;
  23.     return ret;
  24. }
  25.  
  26. static Object S_Scale_DragCallback (x) XtArgVal x; {
  27.    return Get_Scale_CB ((XmScaleCallbackStruct *)x);
  28. }
  29.  
  30. static Object S_Scale_ValueChangedCallback (x) XtArgVal x; {
  31.    return Get_Scale_CB ((XmScaleCallbackStruct *)x);
  32. }
  33.  
  34. init_scale () {
  35.     XtResourceList r = 0;
  36.     Define_Class ("scale", xmScaleWidgetClass, r, 0);
  37.     Define_Callback ("scale", "valueChangedCallback", 1);
  38.     Define_Callback ("scale", "dragCallback", 1);
  39.     Define_Converter_To_Scheme ("scale-valueChangedCallback", S_Scale_ValueChangedCallback);
  40.     Define_Converter_To_Scheme ("scale-dragCallback", S_Scale_DragCallback);
  41. }
  42.