home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / EXAMPLES / DEMOFRAM.C < prev    next >
C/C++ Source or Header  |  1991-03-09  |  8KB  |  243 lines

  1. /* 
  2.     demofram.c
  3.  
  4.     C-scape 3.2    Example Program
  5.     Copyright (c) 1989, 1990 by Oakland Group, Inc.
  6.     ALL RIGHTS RESERVED.
  7.  
  8.     Example using the framer menuing system with the help system.
  9.  
  10.     All the pulldown menu choices call the function 'empty' defined below.
  11.     This program requires the associated help file DEMOFRAM.HLP
  12.  
  13.     Revision History:
  14.     -----------------
  15.      4/01/90 jmd    ansi-fied
  16.      6/06/90 jmd    changed main to return an int
  17.      9/14/90 bkd    changed to use exit(0) instead of return(0).
  18.     10/19/90 pmcm    included ostdlib.h for exit(), added return(1)
  19.     12/01/90 ted    added oak_notused() macro to suppress warnings.
  20.     12/01/90 ted    prototyped main, except if Turbo C++.
  21.     12/04/90 ted    restored "" includes for C-scape headers (not <> includes).
  22. */
  23.  
  24.  
  25. #include <stdio.h>
  26.  
  27. #include "cscape.h"
  28. #include "ostdlib.h"    /*    for exit() */
  29. #include "popdecl.h"    /* the 'empty' function below uses a pop-up */
  30. #include "helpdecl.h"    /* for the help system */
  31. #include "framer.h"        /* for the framer */
  32.  
  33. /*** Function prototypes ***/
  34.  
  35. /* Turbo C++ complains if main is prototyped */
  36. #ifndef TCP
  37. int main(void);
  38. #endif
  39.  
  40. int empty(VOID *sdata, int idata);
  41.  
  42. /* --------- FRAMER DEFINITION ----------------------------- */
  43.                                                                             
  44. struct frame_def test_frame[] = {   
  45.  
  46.     /*
  47.      *     menu text,                                            user-      idata     
  48.      *                                                        func,      (must be
  49.      *                                                                   > 0)
  50.     */
  51.  
  52.     { "Help!",                                                 FNULL, 1    },
  53.     { "Help!",                                                 empty, 101    },
  54.     { "The night before",                                     empty, 103    },
  55.     { "You've got to hide your love away",                     empty, 104    },
  56.     { "I need you",                                         empty, 105    },
  57.     { "Another girl",                                         empty, 106    },
  58.     { "You're going to lose that girl",                     empty, 107    },
  59.     { "Ticket to ride",                                     empty, 108    },
  60.     { "Act naturally",                                         empty, 109    },
  61.     { "It's only love",                                     empty, 110    },
  62.     { "You like me too much",                                 empty, 111    },
  63.     { "Tell me what you see",                                 empty, 112    },
  64.     { "I've just seen a face",                                 empty, 113    },
  65.     { "Yesterday",                                             empty, 114    },
  66.     { "Dizzy miss lizzie",                                     empty, 115    },
  67.     { FRAME_END },
  68.  
  69.     { "Rubber Soul",                                        FNULL, 2     },
  70.     { "Drive my car",                                          empty, 201     },
  71.     { "Norwegian wood",                                      empty, 202     },
  72.     { "You won't see me",                                      empty, 203     },
  73.     { "Nowhere man",                                          empty, 204     },
  74.     { "Think for yourself",                                  empty, 205     },
  75.     { "The word",                                              empty, 206     },
  76.     { "Michelle",                                              empty, 207    },
  77.     { "What goes on",                                          empty, 208    },
  78.     { "Girl",                                                  empty, 209    },
  79.     { "I'm looking through you",                              empty, 210    },
  80.     { "In my life",                                          empty, 211     },
  81.     { "Wait",                                                  empty, 212     },
  82.     { "If I needed someone",                                  empty, 213     },
  83.     { "Run for your life",                                  empty, 214    },
  84.     { FRAME_END    },
  85.  
  86.     { "Revolver",                                               FNULL, 3    },
  87.     { "Taxman",                                              empty, 301    },
  88.     { "Eleanor rigby",                                      empty, 302    },
  89.     { "I'm only sleeping",                                  empty, 303    },
  90.     { "Love you to",                                          empty, 304    },
  91.     { "Here, there and everywhere",                          empty, 305    },
  92.     { "Yellow submarine",                                      empty, 306    },
  93.     { "She said she said",                                  empty, 307    },
  94.     { "Good day sunshine",                                  empty, 308    },
  95.     { "And your bird can sing",                              empty, 309    },
  96.     { "For no one",                                          empty, 310    },
  97.     { "Doctor robert",                                      empty, 311    },
  98.     { "I want to tell you",                                  empty, 312    },
  99.     { "Got to get you into my life",                          empty, 313    },
  100.     { "Tomorrow never knows",                                  empty, 314    },
  101.     { FRAME_END },
  102.  
  103.     { "Sgt. Pepper's Lonely Hearts Club Band",                 FNULL, 4    },
  104.     { "Sgt. pepper's lonely hearts club band",              empty, 401    },
  105.     { "With a little help from my friends",                  empty, 402    },
  106.     { "Lucy in the sky with diamonds",                      empty, 403    },
  107.     { "Getting better",                                      empty, 404    },
  108.     { "Fixing a hole",                                      empty, 405    },
  109.     { "She's leaving home",                                  empty, 406    },
  110.     { "Being for the benefit of mr. kite",                  empty, 407    },
  111.     { "Within you without you",                              empty, 408    },
  112.     { "When I'm sixty-four",                                  empty, 409    },
  113.     { "Lovely rita",                                          empty, 410    },
  114.     { "Good morning good morning",                          empty, 411    },
  115.     { "Sgt. pepper's lonely hearts club band (reprise)",      empty, 412   },
  116.     { "A day in the life",                                  empty, 413     },
  117.     { FRAME_END },                                           
  118.     { FRAME_END }
  119. };
  120.  
  121. /*
  122.                              FRAMER HELP
  123.  
  124.     The framer menu system pre-empts the standard help system so that
  125.     help works a bit differently.  Normally, FN1 is caught by special_key
  126.     and help_Show is called.  The framer_fkey, however, hands the FN1 key
  127.     to framer_help before it gets to special_key.
  128.  
  129.         help for item in     has Chapter no.,              Paragraph no.
  130.         ----------------------------------------------------------------
  131.         top menu bar         idata of ITS                 0 (ZERO always)
  132.                                  frame_def entry
  133.  
  134.         pulldown menu        idata of its PARENT           field number + 1
  135.                                  entry
  136.  
  137.  
  138.     Here is how framer_help works with the demofram.c menu structure:
  139.  
  140.     The "Help!" disc, above, is associated with the help message for
  141.            chapter 1 
  142.             (its 'idata' value ) and, 
  143.         paragraph 0 
  144.  
  145.     The 14 songs on the "Help!" disc are associated with the message(s) for
  146.         chapter 1                 
  147.             (the 'idata' of its parent -- i.e., the "Help!" disc) and,
  148.         paragraphs 1 through 14 
  149.             (the (field number + 1) of the pulldown menu song choice)
  150.  
  151.  
  152.     The "Sgt. Pepper's" disc is associated with the help message for
  153.            chapter 4 
  154.             (its 'idata' value) and, 
  155.         paragraph 0 
  156.  
  157.     The 13 songs on the "Sgt. Pepper's" disc are associated with the message(s) for
  158.         chapter 4
  159.             ( the 'idata' of its parent) and,
  160.         paragraphs 1 through 13 
  161. */
  162.  
  163. /* 
  164.     for help_View help system display use a sed
  165.     default row & col position, 6 rows high, 40 columns wide, 
  166.     in normal video, with the bd_prompt border
  167. */
  168. struct hv_struct hvd = { -1, -1, 6, 50, 0x07, bd_prompt };
  169.  
  170. int main(void)
  171. {
  172.     sed_type frame;
  173.     FILE     *fp = NULL;
  174.  
  175.     /* Initialize the display */
  176.     disp_Init(def_ModeText, FNULL);
  177.  
  178.     /* Turn on the mouse */
  179.     hard_InitMouse();
  180.  
  181.     /* Turn on sedwin mouse */
  182.     sedwin_ClassInit();
  183.  
  184.     /* open the help file */
  185.     fp = fopen("demofram.hlp", "rb");
  186.  
  187.     if (fp == NULL) {
  188.         pop_Prompt("Unable to open help file.\n", -1, -1, -1, 26, 0x70, bd_2);
  189.     }
  190.  
  191. /*
  192.     help_Init sets up the help system.
  193.     The first argument is a pointer to the help file.
  194.     The second argument is a pointer to the help display function.
  195.     The third argument tells the help system how much space to allocate
  196.     to hold the help messages.  This is the maximum size of a help message.
  197.  
  198.     The cscape field functions automatically call help when F1 is pressed.
  199.     (see fnspec.c)
  200. */
  201.     else {
  202.         help_Init(fp, help_View, 100, (VOID *) &hvd);
  203.     }
  204.  
  205.     frame = frame_Open(test_frame, bd_1, 0x70, 0x07, 0x70);
  206.     frame_Repaint(frame);
  207.  
  208.     frame_Go(frame, (char) ' ', NULL);
  209.     frame_Close(frame);
  210.  
  211.     /* Close down the display interface */
  212.     disp_Close();
  213.  
  214.     if (fp != NULL) {
  215.         /* close help file */
  216.         fclose(fp);
  217.     }
  218.     exit(0);
  219.     return(0);
  220. }
  221.  
  222. int empty(VOID *sdata, int idata)
  223. /*
  224.     A user supplied function...
  225. */
  226. {
  227.     char msg[80];
  228.  
  229.     oak_notused(sdata);
  230.  
  231.     sprintf(msg, "This is song has id %3.d\n", idata);
  232.  
  233.     pop_Prompt(msg, -1, -1, -1, -1, 0x70, bd_2);
  234.  
  235.     /* return 0 to return to stay in the menuing system */
  236.     /* return positive value to exit menuing system        */
  237.  
  238.     return(0);
  239. }
  240.  
  241.  
  242.  
  243.