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

  1. /*
  2.     pumenu.c         1/20/87
  3.  
  4.     % pop_Menu
  5.  
  6.     Popup menu routine.
  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    (i was bored at the time)
  18.     12/15/89 jdc    preened
  19.     12/18/89 jmd    added mouse support
  20.      3/28/90 jmd    ansi-fied
  21. */
  22.  
  23. #include <stdio.h>
  24.  
  25. #include "cscape.h"
  26. #include "strdecl.h"            /* for invert_char() */
  27. #include "popdecl.h"
  28.  
  29. int pop_Menu(char *text, char **choice, int row, int col, int height, int width, byte color, int label, bd_fptr bord)
  30. /*
  31.     Puts up a popup menu with the text at the top of the box
  32.     and the choices displayed at the bottom.
  33.     The menu is placed at position (row, col) and with the
  34.     given height and width.
  35.     If any of these arguments (row, col, height, width) are     
  36.     negative default values are used  (centered).
  37.     Choice is a NULL terminated list of pointers to the text of the
  38.     choices.
  39.     Returns number of the choice (1 - n)
  40.     or 0 if ESC pressed.
  41. */
  42. {
  43.     menu_type   menu;
  44.     sed_type    sed;    
  45.     register    int x;
  46.     int         ret;
  47.  
  48.     /* leave if there are no choices */
  49.     if (choice[0] == NULL) {
  50.         return(0);
  51.     }
  52.  
  53.     if ((menu = menu_Open()) == NULL) {
  54.         return(0);
  55.     }
  56.  
  57.     for (x = 0; choice[x] != NULL; x++) {
  58.         if (!menu_Printf(menu," @f[%s] \n", NULL, &menu_funcs, choice[x])) {
  59.             menu_Destroy(menu);
  60.             return(0);
  61.         }
  62.     }
  63.     menu_Flush(menu);
  64.  
  65.     if ((sed = sed_Open(menu)) == NULL) {
  66.         menu_Destroy(menu);
  67.         return(0);
  68.     }
  69.  
  70.     sed_SetColors(sed, color, color, invert_char(color) & 0x7f);
  71.     sed_SetBorder(sed, bord);
  72.     sed_SetMouse(sed, sedmou_GreedyTrack);
  73.     pop_SetParms(sed, row, col, height, width, text);
  74.  
  75.     sed_SetLabel(sed, label);
  76.  
  77.     sed_Repaint(sed);
  78.     ret = sed_Go(sed);
  79.  
  80.     sed_Close(sed);
  81.  
  82.     return(ret);
  83. }
  84.