home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / PUPROMPT.C < prev    next >
C/C++ Source or Header  |  1990-12-14  |  2KB  |  99 lines

  1. /*
  2.     puprompt.c         7/25/86
  3.  
  4.     % pop_Prompt
  5.  
  6.     Popup prompt function.
  7.  
  8.     C-scape 3.2
  9.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      9/16/88 jmd    updated for 3.0
  15.     11/05/88 jmd    removed menu_Close
  16.  
  17.      4/22/89 jmd    changed border to bord
  18.  
  19.     10/16/89 jdc    fixed "Press ESC" centering calculation
  20.     12/18/89 jmd    changed "Press ESC" to "Ok", added mouse support
  21.      3/28/90 jmd    ansi-fied
  22.     10/12/90 jdc    moved placement of SetWrapWidth
  23.     12/14/90 jdc    polished auto-sizing
  24. */
  25.  
  26. #include <stdio.h>
  27.  
  28. #include "cscape.h"
  29. #include "scancode.h"
  30. #include "teddecl.h"
  31. #include "popdecl.h"
  32.  
  33. void pop_Prompt(char *msg, int row, int col, int height, int width, byte color, bd_fptr bord)
  34. /*
  35.     Puts up a message in a box.
  36.     Waits for user response.
  37. */
  38. {
  39.     menu_type   menu;
  40.     sed_type    sed;
  41.     int            wid, w;
  42.     unsigned int len;
  43.  
  44.     if ((menu = menu_Open()) == NULL) {
  45.         return;
  46.     }
  47.     for (len = 0; msg[len] != '\0'; len++) ;
  48.     if (!menu_SetTB(menu, msg, len)) {
  49.         menu_Destroy(menu);
  50.         return;
  51.     }
  52.  
  53.     if ((sed = sed_Open(menu)) == NULL) {
  54.         menu_Destroy(menu);
  55.         return;
  56.     }
  57.  
  58.     sed_SetColors(sed, color, color, invert_char(color) & 0x7f);
  59.     sed_SetMouse(sed, sedmou_GreedyTrack);
  60.     sed_SetBorder(sed, bord);
  61.     sed_SetBorderFeature(sed, BD_MOVE);
  62.     if (width > 0) {
  63.         w = width;
  64.     }
  65.     else if (popparms.width > 0) {
  66.         w = popparms.width;
  67.     }
  68.     else {
  69.         w = disp_GetWidth() - (bord_GetWidth(sed) - sed_GetWidth(sed));
  70.         if (col > 0) {
  71.             w -= col;
  72.         }
  73.     }
  74.      ted_SetWrapWidth(sed, w);
  75.     menu_SetDirty(menu, TRUE);
  76.     menu_RecalcSize(menu);
  77.  
  78.     pop_SetParms(sed, row, col, height, width, NULL);
  79.  
  80.     /* add the "ok" button */
  81.     wid = (sed_GetWidth(sed) - 4)/2;
  82.     if (wid < 0) wid = 0;
  83.     if (!menu_Printf(menu, "@p[%d,%d]@f[ Ok ]", menu_GetHeight(menu) + 1,
  84.         wid, NULL, &menu_funcs)) {
  85.  
  86.         sed_Close(sed);
  87.         return;
  88.     }
  89.     pop_SetParms(sed, row, col, height, width, NULL);
  90.  
  91.     sed_SetCursorType(sed, CURSOR_NONE);
  92.     sed_Repaint(sed);
  93.  
  94.     /* wait for user response */
  95.     sed_Go(sed);
  96.  
  97.     sed_Close(sed);
  98. }
  99.