home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume8 / xfig2.8 / part03 / msgsw.c < prev    next >
C/C++ Source or Header  |  1990-07-02  |  3KB  |  142 lines

  1. /* 
  2.  *    FIG : Facility for Interactive Generation of figures
  3.  *
  4.  *    Copyright (c) 1985 by Supoj Sutanthavibul (supoj@sally.UTEXAS.EDU)
  5.  *    January 1985.
  6.  *    1st revision : Aug 1985.
  7.  *    2nd revision : Feb 1988.
  8.  *
  9.  *    %W%    %G%
  10. */
  11. #include "fig.h"
  12. #include "resources.h"
  13. #include "const.h"
  14. #include "font.h"
  15. #include "paintop.h"
  16. #include "psfonts.h"
  17.  
  18. extern int        errno;
  19. extern int        action_on;
  20. extern            null_proc();
  21.  
  22. extern int        CANVAS_WIDTH;
  23. extern int        PANEL_WID;
  24. extern int        SIDERULER_WIDTH;
  25. extern char        prefix[], suffix[];
  26. extern int        leng_prefix, leng_suffix;
  27. extern int        cur_x, cur_y;
  28.  
  29. extern            (*canvas_kbd_proc)();
  30. extern            (*canvas_locmove_proc)();
  31. extern            (*canvas_leftbut_proc)();
  32. extern            (*canvas_middlebut_proc)();
  33. extern            (*canvas_rightbut_proc)();
  34.  
  35. /*****************  exported  variables and procedures   *****************/
  36.  
  37. extern int        put_msg();
  38. extern int        put_fmsg();
  39. extern int        init_msgreceiving();
  40.  
  41. /************************  local variables and routines ******************/
  42.  
  43. #define            BUF_SIZE        80
  44.  
  45. static char        prompt[BUF_SIZE];
  46.  
  47. static            msg_selected();
  48. static            msg_sighandler();
  49.  
  50. static Arg      msg_args[] =
  51. {
  52.     /* 0 */ { XtNwidth, (XtArgVal) 0 },
  53.     /* 1 */ { XtNheight, (XtArgVal)MSG_HEIGHT },
  54.     /* 2 */ { XtNlabel, (XtArgVal)"" },
  55.     /* 3 */ { XtNfromHoriz, (XtArgVal)NULL },
  56.     /* 4 */ { XtNhorizDistance, (XtArgVal) 2 },
  57.     /* 5 */ { XtNfromVert, (XtArgVal)NULL },
  58.     /* 6 */ { XtNvertDistance, (XtArgVal) -1 },
  59.     /* 7 */ { XtNleft, (XtArgVal) XtChainLeft },
  60.     /* 8 */ { XtNinput, (XtArgVal) True },
  61. };
  62.  
  63. int init_msg(tool)
  64.     TOOL        tool;
  65. {
  66.     /* width */
  67.     msg_args[0].value = PANEL_WID+CANVAS_WIDTH+SIDERULER_WIDTH -
  68.                 FONT_PANE_WIDTH;
  69.     msg_args[3].value = (XtArgVal)psfont;      /* to the right of font ind. */
  70.     msg_args[5].value = (XtArgVal)canvas_sw;  /* just below the canvas */
  71.     msg_sw = XtCreateManagedWidget("message", commandWidgetClass, tool,
  72.         msg_args, XtNumber(msg_args));
  73.     return (1);
  74. }
  75.  
  76. /*
  77. **    We have to do this after realizing the widget otherwise
  78. **    the width is computed wrong and you get a tiny text box.
  79. */
  80. setup_msg()
  81. {
  82.     static Arg      addn_args[] =
  83.     {
  84.         { XtNfont, (XtArgVal)NULL },
  85.     };
  86.  
  87.     if (bold_font != NULL)
  88.     {
  89.         addn_args[0].value = (XtArgVal)bold_font;
  90.         XtSetValues(msg_sw, addn_args, XtNumber(addn_args));
  91.     }
  92.     msg_win = XtWindow(msg_sw);
  93.     XDefineCursor(tool_d, msg_win, (Cursor)pencil_cursor.bitmap);
  94. }
  95.  
  96. /*VARARGS1*/
  97. put_msg(format, arg1, arg2, arg3, arg4, arg5)
  98.     char    *format;
  99.     int    arg1, arg2, arg3, arg4, arg5;
  100. {
  101.     sprintf(prompt, format, arg1, arg2, arg3, arg4, arg5);
  102.     msg_args[2].value = (XtArgVal)prompt;
  103.     XtSetValues(msg_sw, &msg_args[2], 1);
  104. }
  105.  
  106. /* floating point version - MIPS (DEC3100) doesn't like ints where floats are used */
  107.  
  108. /*VARARGS1*/
  109. put_fmsg(format, arg1, arg2, arg3, arg4, arg5)
  110.     char    *format;
  111.     double    arg1, arg2, arg3, arg4, arg5;
  112. {
  113.     sprintf(prompt, format, arg1, arg2, arg3, arg4, arg5);
  114.     msg_args[2].value = (XtArgVal)prompt;
  115.     XtSetValues(msg_sw, &msg_args[2], 1);
  116. }
  117.  
  118. clear_message()
  119. {
  120.     msg_args[2].value = (XtArgVal)"";
  121.     XtSetValues(msg_sw, &msg_args[2], 1);
  122. }
  123.  
  124. init_msg_receiving(msg_recipient, p)
  125.     int        (*msg_recipient)();
  126.     char        *p;
  127. {
  128.     char        reply[100];
  129.  
  130.     prompt_string(p, reply);
  131.     (*msg_recipient)(reply);
  132. }
  133.  
  134. blink_msg()
  135. {
  136.     int    i;
  137.  
  138.     for (i = 0; i < 2000; i++)
  139.         ;
  140.     clear_message();
  141.     }
  142.