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

  1. /*
  2.     putext.c         7/22/88
  3.  
  4.     % pop_Text
  5.  
  6.     popup text routine.
  7.  
  8.     C-scape 3.2
  9.     Copyright (c) 1986, 1987, 1988, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      8/23/88 jmd    Fixed wrap width.
  15.      9/16/88 jmd    updated for 3.0
  16.     11/05/88 jmd    removed menu_Close
  17.  
  18.      4/22/89 jmd    changed border to bord
  19.     12/18/89 jdc    preened
  20.      3/28/90 jmd    ansi-fied
  21.     12/13/90 jdc    preened
  22.     12/14/90 jdc    polished auto-sizing
  23. */
  24.  
  25. #include <stdio.h>
  26. #include <string.h>
  27.  
  28. #include "cscape.h"
  29. #include "scancode.h"
  30. #include "teddecl.h"
  31. #include "popdecl.h"
  32.  
  33. sed_type pop_Text(char *msg, int row, int col, int height, int width, byte color, bd_fptr bord)
  34. /*
  35.     Puts up a message in a box and returns a handle to the message.
  36.     The message can be removed by calling sed_Close.
  37. */
  38. {
  39.     sed_type         sed;    
  40.     menu_type        menu;
  41.     int w;
  42.     unsigned int len;
  43.  
  44.     if (msg == NULL) {
  45.         return(NULL);
  46.     }
  47.  
  48.     if ((menu = menu_Open()) == NULL) {
  49.         return(NULL);
  50.     }
  51.     menu_Flush(menu);
  52.     for (len = 0; msg[len] != '\0'; len++) ;
  53.     if (!menu_SetTB(menu, msg, len)) {
  54.         menu_Destroy(menu);
  55.         return(NULL);
  56.     }
  57.  
  58.     if ((sed = sed_Open(menu)) == NULL) {
  59.         menu_Destroy(menu);
  60.         return(NULL);
  61.     }
  62.  
  63.     sed_SetColors(sed, color, color, color);
  64.     sed_SetBorder(sed, bord);
  65.     if (width > 0) {
  66.         w = width;
  67.     }
  68.     else if (popparms.width > 0) {
  69.         w = popparms.width;
  70.     }
  71.     else {
  72.         w = disp_GetWidth() - (bord_GetWidth(sed) - sed_GetWidth(sed));
  73.         if (col > 0) {
  74.             w -= col;
  75.         }
  76.     }
  77.      ted_SetWrapWidth(sed, w);
  78.     menu_SetDirty(menu, TRUE);
  79.     menu_RecalcSize(menu);
  80.  
  81.     pop_SetParms(sed, row, col, height, width, NULL);
  82.  
  83.     sed_Repaint(sed);
  84.  
  85.     return(sed);
  86. }
  87.