home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / LNF / LNF.C next >
C/C++ Source or Header  |  1990-12-24  |  10KB  |  290 lines

  1. /*
  2.     lnf.c
  3.  
  4.     % The Look & Feel 3.2 main module
  5.  
  6.     Includes symbol table listing for linked-in functions,
  7.     and keyboard/operation assignment table.
  8.  
  9.     Look & Feel 3.2
  10.     Copyright (c) 1989-1990, by Oakland Group, Inc.
  11.     ALL RIGHTS RESERVED.
  12.  
  13.     Revision History:
  14.     -----------------
  15.     11/01/89 jdc    added sdouble_funcs to funcs list
  16.      3/30/90 jmd    ansi-fied
  17.      4/17/90 jdc    added help filename to lnf_Open args
  18.      4/19/90 jdc    added radio_funcs to list
  19.      5/04/90 jdc    added novalidate_funcs
  20.      5/09/90 jdc    cleaned up
  21.      5/11/90 jdc    fixed mark_funcs type
  22.      8/08/90 jmd    made main an int
  23.      8/24/90 jdc    switched to lnfmenu.h scheme
  24.      8/31/90 jdc    improved the COM_ scheme
  25.      9/21/90 pmcm    made lnffsym_list OGLOBAL
  26.      9/24/90 jmd    added code for ctrl break, UNIX meta keys
  27.      9/26/90 pmcm    made help hxd OGLOBAL
  28.     10/08/90 bkd    call exit instead of return at end of main.
  29.     10/16/90 jmd    removed ROLO, added TCP stuff
  30.     10/18/90 jmd    added ver_ident
  31.     10/19/90 pmcm    made ver_ident OGLOBAL
  32.     10/30/90 jsm    Changed <> to "" on non-system includes
  33.     10/30/90 pmcm    removed obsolete cntrl-meta-key set (ctrl-x by default,now)
  34.     12/24/90 pmcm    /jdc, added blwin_Class background window to disp_Init
  35. */
  36.  
  37. #include <stdio.h>
  38.  
  39. #include "cscape.h"
  40. #include "sfile.h"
  41. #include "sled.h"        /* for sleds */
  42. #include "msys.h"        /* for ufuncobj.h and msys funcs */
  43. #include "teddecl.h"    /* ted funcs */
  44. #include "fnfunc.h"        /* string funcs */
  45. #include "helpdecl.h"    /* hx_struct (help init data) */
  46.  
  47. #include "lnfsys.h"        /* for LNF system functions */
  48.  
  49. #include "scancode.h"
  50.  
  51. #include "sedpriv.h"    /* for sed_ReallyGo */
  52.  
  53. #include "ostdlib.h"    /* has prototype for exit() */
  54.  
  55. #ifdef TC
  56. #    define    CBREAK
  57. #endif
  58.  
  59. #ifdef TCP
  60. #    define    CBREAK
  61. #endif
  62.  
  63. /* include control break handler for Turbo C */
  64. #ifdef CBREAK
  65. #    include <dos.h>
  66. #endif
  67.  
  68. #ifndef TCP
  69.     int main(int argc, char *argv[]);    /* Prototype for main */
  70. #endif
  71.  
  72. int lnf_Beep(VOID *sdata, int idata);
  73.  
  74. /* Global string for "version" identifier in about box */
  75.  
  76. #ifdef OAK_RATIONAL
  77. OGLOBAL char   *ver_ident = "Rational 16/M";
  78. #else
  79. OGLOBAL char   *ver_ident = NULL;
  80. #endif
  81.  
  82.  
  83. /* -------------------------------------------------------------------------- */
  84. /*    This is the Look & Feel symbol table.  All functions that are
  85.     to be actually linked into lnf.exe should be included under the 
  86.     appropriate    category in the list below.  
  87.  
  88.     To include a new function, you must include an entry for it in 
  89.     the symbol table (below).  All field functions must have their 
  90.     variable type included (with an embedded terminating '\0' character) 
  91.     BEFORE the field function's name.  This tells Look & Feel what variable 
  92.     type the field should have.  The field function category is preceded 
  93.     with the FSYM_TYPENFFUNCS tag (not the usual FSYM_FIELDFUNCS tag).  This 
  94.     tag indicates that the list is being used by lnf.exe and contains 
  95.     variable type information.  Use "void" for field functions that 
  96.     have no variable (like menu_funcs).
  97.  
  98.     Any symbol that is preceded by an underbar character '_' will be
  99.     suppressed from Look & Feel popup lists.  There are several such
  100.     "system" functions in the list below.
  101. */
  102. OGLOBAL fsyminit_struct lnffsym_list[] = {
  103.  
  104. {FSYM_CLASS},    /* class functions */
  105.  
  106. {"sedwin_Class",    (VOID_FPTR)lnfsed_Class,    NULL        },
  107. {"sledwin_Class",    (VOID_FPTR)lnfsled_Class,    NULL        },
  108. {"ufunc_Class",        (VOID_FPTR)ufunc_Class,        NULL        },
  109.  
  110. {FSYM_TYPENFFUNCS},  /* field functions */
  111.  
  112. {"char *\0alpha_funcs",        FNULL, (VOID *)    &alpha_funcs    },
  113. {"void\0bob_funcs",            FNULL, (VOID *)    &bob_funcs        },
  114. {"char *\0char_funcs",        FNULL, (VOID *)    &char_funcs        },
  115. {"boolean *\0check_funcs",    FNULL, (VOID *)    &check_funcs    },
  116. {"void\0click_funcs",        FNULL, (VOID *)    &click_funcs    },
  117. {"long *\0clong_funcs",        FNULL, (VOID *)    &clong_funcs    },
  118. {"long *\0cmoney_funcs",    FNULL, (VOID *)    &cmoney_funcs    },
  119. {"struct tm *\0date_funcs",    FNULL, (VOID *)    &date_funcs        },
  120. {"char *\0digit_funcs",        FNULL, (VOID *)    &digit_funcs    },
  121. {"double *\0double_funcs",    FNULL, (VOID *)    &double_funcs    },
  122. {"void\0framer_funcs",        FNULL, (VOID *)    &framer_funcs    },
  123. {"void\0gmenu_funcs",        FNULL, (VOID *)    &gmenu_funcs    },
  124. {"int *\0hex_funcs",        FNULL, (VOID *)    &hex_funcs         },
  125. {"int *\0int_funcs",        FNULL, (VOID *)    &int_funcs         },
  126. {"char *\0list_funcs",        FNULL, (VOID *)    &list_funcs        },
  127. {"long *\0long_funcs",        FNULL, (VOID *)    &long_funcs        },
  128. {"boolean *\0mark_funcs",    FNULL, (VOID *)    &mark_funcs        },
  129. {"void\0menu_funcs",        FNULL, (VOID *)    &menu_funcs        },
  130. {"long *\0money_funcs",        FNULL, (VOID *)    &money_funcs    },
  131. {"char *\0nowrite_funcs",      FNULL, (VOID *)    &nowrite_funcs    },
  132. {"int *\0pint_funcs",        FNULL, (VOID *)    &pint_funcs        },
  133. {"long *\0plong_funcs",        FNULL, (VOID *)    &plong_funcs    },
  134. {"boolean *\0radio_funcs",    FNULL, (VOID *)    &radio_funcs    },
  135. {"int *\0range_funcs",        FNULL, (VOID *)    &range_funcs    },
  136. {"char *\0secure_funcs",    FNULL, (VOID *)    &secure_funcs    },
  137. {"double *\0sdouble_funcs",    FNULL, (VOID *)    &sdouble_funcs    },
  138. {"float *\0sfloat_funcs",    FNULL, (VOID *)    &sfloat_funcs    },
  139. {"int *\0sint_funcs",        FNULL, (VOID *)    &sint_funcs        },
  140. {"long *\0slong_funcs",        FNULL, (VOID *)    &slong_funcs    },
  141. {"void\0slug_funcs",        FNULL, (VOID *)    &slug_funcs        },
  142. {"char *\0string_funcs",    FNULL, (VOID *)    &string_funcs    },
  143. {"char *\0ted_funcs",        FNULL, (VOID *)    &ted_funcs        },
  144. {"struct tm *\0time_funcs",    FNULL, (VOID *)    &time_funcs        },
  145. {"int *\0togint_funcs",        FNULL, (VOID *)    &togint_funcs    },
  146. {"char *\0toggle_funcs",    FNULL, (VOID *)    &toggle_funcs    },
  147. {"char *\0xstring_funcs",    FNULL, (VOID *)    &xstring_funcs    },
  148. {"boolean *\0yesno_funcs",    FNULL, (VOID *)    &yesno_funcs    },
  149.  
  150. /* system functions */
  151. {"boolean *\0_lnf_funcs",    FNULL, (VOID *)    &lnf_funcs        },
  152. {"char *\0_lnfdir_funcs",    FNULL, (VOID *)    &lnfdir_funcs    },
  153. {"char *\0_lnffile_funcs",    FNULL, (VOID *)    &lnffile_funcs    },
  154. {"int *\0_lnfhex_funcs",    FNULL, (VOID *)    &lnfhex_funcs    },
  155. {"int *\0_lnfint_funcs",    FNULL, (VOID *)    &lnfint_funcs    },
  156. {"int *\0_lnflong_funcs",    FNULL, (VOID *)    &lnflong_funcs    },
  157.  
  158. {FSYM_MOVEMETHOD},    /* move methods */
  159. {"ted_Follow",        (VOID_FPTR)    ted_Follow,        NULL    },
  160. {"ted_Past",        (VOID_FPTR)    ted_Past,        NULL    },
  161.  
  162. {FSYM_EXPLODE},    /* explode functions */
  163. {"exp_std",            (VOID_FPTR)    exp_std,        NULL    },
  164. {"exp_BeamMeUp",    (VOID_FPTR)    exp_BeamMeUp,    NULL    },
  165.  
  166. {FSYM_SPECIAL},    /* special functions */
  167. {"spc_Embed",         (VOID_FPTR)    spc_Embed,        NULL    },
  168. {"spc_EmbedTed",    (VOID_FPTR)    spc_EmbedTed,    NULL    },
  169. {"spc_Abort",        (VOID_FPTR)    spc_Abort,        NULL    },
  170. {"spc_Sled",        (VOID_FPTR)    spc_Sled,        NULL    },
  171. {"inter_field_grid",(VOID_FPTR)    inter_field_grid,    NULL    },
  172.  
  173. /* system functions */
  174. {"_spc_ListPopup",    (VOID_FPTR)    spc_ListPopup,    NULL    },
  175. {"_spc_FieldEdit",    (VOID_FPTR)    spc_FieldEdit,    NULL    },
  176. {"_spc_FileBox",    (VOID_FPTR)    spc_FileBox,    NULL    },
  177.  
  178. {FSYM_BORDER},    /* border functions */
  179. {"bd_mouse",        (VOID_FPTR)    bd_mouse,        NULL    },
  180. {"bd_mouse2",        (VOID_FPTR)    bd_mouse2,        NULL    },
  181. {"bd_prompt",        (VOID_FPTR)    bd_prompt,        NULL    },
  182. {"bd_bar",            (VOID_FPTR)    bd_bar,            NULL    },
  183. {"bd_box",             (VOID_FPTR)    bd_box,            NULL    },
  184. {"bd_boxlight",        (VOID_FPTR)    bd_boxlight,    NULL    },
  185. {"bd_plain",        (VOID_FPTR)    bd_plain,        NULL    },
  186. {"bd_title",        (VOID_FPTR)    bd_title,        NULL    },
  187. {"bd_std",            (VOID_FPTR)    bd_std,            NULL    },
  188. {"bd_null",            (VOID_FPTR)    bd_null,        NULL    },
  189. {"bd_1",               (VOID_FPTR)    bd_1,            NULL    },
  190. {"bd_2",               (VOID_FPTR)    bd_2,            NULL    },
  191. {"bd_123",             (VOID_FPTR)    bd_123,            NULL    },
  192. {"bd_sidebar",        (VOID_FPTR)    bd_sidebar,        NULL    },
  193. {"bd_head",            (VOID_FPTR)    bd_head,        NULL    },
  194. {"bd_xref",            (VOID_FPTR)    bd_xref,        NULL    },
  195.  
  196. {FSYM_MOUSE},    /* mouse handlers */
  197. {"sedmou_Click",        (VOID_FPTR)    sedmou_Click,        NULL    },
  198. {"sedmou_Track",        (VOID_FPTR)    sedmou_Track,        NULL    },
  199. {"sedmou_GreedyClick",    (VOID_FPTR)    sedmou_GreedyClick,    NULL    },
  200. {"sedmou_GreedyTrack",    (VOID_FPTR)    sedmou_GreedyTrack,    NULL    },
  201. {"sedmou_Framer",        (VOID_FPTR)    sedmou_Framer,        NULL    },
  202.  
  203. {FSYM_AUX},        /* auxiliary functions */
  204. {"aux_Top",                (VOID_FPTR)    aux_Top,        NULL    },
  205.  
  206. /* system functions */
  207. {"_aux_FileBox",        (VOID_FPTR)    aux_FileBox,        NULL    },
  208. {"_aux_FieldBox",        (VOID_FPTR)    aux_FieldBox,        NULL    },
  209. {"_aux_CodeBox",        (VOID_FPTR)    aux_CodeBox,        NULL    },
  210. {"_aux_SymBox",            (VOID_FPTR)    aux_SymBox,            NULL    },
  211. {"_aux_EditBox",        (VOID_FPTR)    aux_EditBox,        NULL    },
  212.  
  213. {FSYM_USER},    /* user function */
  214. {"lnf_Beep",            (VOID_FPTR)    lnf_Beep,        NULL    },
  215.  
  216. {FSYM_LISTEND}
  217. };
  218.  
  219. /* -------------------------------------------------------------------------- */
  220. /* help data (colors & border)
  221. */
  222. OGLOBAL struct hx_struct hxd = { 0x13, 0x1e, 0x50, 0x13, bd_head};
  223.  
  224. /* -------------------------------------------------------------------------- */
  225. /*    This is the main() function of Look & Feel.  Here we initialize the 
  226.     display and the mouse and then start Look & Feel.  The command line
  227.     arguments, argc and argv, are passed through to lnf_Open().
  228. */
  229.  
  230. /* control break handler for Turbo C */
  231. #ifdef CBREAK
  232. int c_break(void);
  233.  
  234. int c_break(void)
  235. {
  236.     return(1);
  237. }
  238. #endif
  239.  
  240. int main(int argc, char *argv[])
  241. {
  242.  
  243. /* set control break handler for Turbo C */
  244. #ifdef CBREAK
  245.     ctrlbrk(c_break);
  246. #endif
  247.     
  248.     /*    create blank window for reference in placing menubar, promptbar,
  249.      *    and mouprompt beneath all other windows
  250.      */
  251.     disp_Init(def_ModeText, blwin_Class);
  252.     hard_InitMouse();                    /* Turn on the mouse */
  253.     sedwin_MouseInit();                    /* Turn on sedwin mouse */
  254.  
  255.     loaddefault_funcs = &popbob_funcs;
  256.  
  257.     /* command line, config file, and help file */
  258.     lnf_Open(argc, argv, "lnf.oak", "lnf.hlp");
  259.     lnf_Go();
  260.  
  261.     disp_Close();
  262.     oak_Close();
  263.  
  264.     help_Close();
  265.  
  266.     exit(0);
  267.     return(0);
  268. }
  269.  
  270.  
  271. /* -------------------------------------------------------------------------- */
  272. /*    This is a sample user function. */
  273.  
  274. int lnf_Beep(VOID *sdata, int idata)
  275. /*
  276.     A sample user function for LNF.
  277.     beeps the speaker using the value passed by idata
  278.  
  279.     Audible values are between 300 and 5000.
  280. */
  281. {
  282.     oak_notused(sdata);    /* Keeps compiler from warning we don't use 'sdata' */
  283.  
  284.     if (idata > 0) {
  285.         hard_Speaker(idata, 10);
  286.     }
  287.  
  288.     return(0);
  289. }
  290.