home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / drdobbs / 1991 / 08 / dflat5 / config.c < prev    next >
Text File  |  1991-06-22  |  13KB  |  356 lines

  1. /* ------------- config.c ------------- */
  2.  
  3. #include <conio.h>
  4. #include <string.h>
  5. #include "dflat.h"
  6.  
  7. /* ----- default colors for color video system ----- */
  8. unsigned char color[CLASSCOUNT] [4] [2] = {
  9.     /* ------------ NORMAL ------------ */
  10.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  11.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  12.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  13.     {LIGHTGRAY, BLACK}},/* HILITE_COLOR */
  14.  
  15.     /* ---------- APPLICATION --------- */
  16.    {{LIGHTGRAY, BLUE},  /* STD_COLOR    */
  17.     {LIGHTGRAY, BLUE},  /* SELECT_COLOR */
  18.     {LIGHTGRAY, BLUE},  /* FRAME_COLOR  */
  19.     {LIGHTGRAY, BLUE}}, /* HILITE_COLOR */
  20.  
  21.     /* ------------ TEXTBOX ----------- */
  22.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  23.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  24.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  25.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  26.  
  27.     /* ------------ LISTBOX ----------- */
  28.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  29.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  30.     {LIGHTGRAY, BLUE},  /* FRAME_COLOR  */
  31.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  32.  
  33.     /* ----------- EDITBOX ------------ */
  34.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  35.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  36.     {LIGHTGRAY, BLUE},  /* FRAME_COLOR  */
  37.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  38.  
  39.     /* ---------- MENUBAR ------------- */
  40.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  41.     {BLACK, CYAN},      /* SELECT_COLOR */
  42.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  43.     {DARKGRAY, RED}},   /* HILITE_COLOR
  44.                           Inactive, Shortcut (both FG) */
  45.  
  46.     /* ---------- POPDOWNMENU --------- */
  47.    {{BLACK, CYAN},      /* STD_COLOR    */
  48.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  49.     {BLACK, CYAN},      /* FRAME_COLOR  */
  50.     {DARKGRAY, RED}},   /* HILITE_COLOR
  51.                            Inactive ,Shortcut (both FG) */
  52.  
  53. #ifdef INCLUDE_DIALOG_BOXES
  54.     /* ------------ BUTTON ------------ */
  55.    {{BLACK, CYAN},      /* STD_COLOR    */
  56.     {WHITE, CYAN},      /* SELECT_COLOR */
  57.     {BLACK, CYAN},      /* FRAME_COLOR  */
  58.     {DARKGRAY, RED}},   /* HILITE_COLOR
  59.                            Inactive ,Shortcut (both FG) */
  60.  
  61.     /* ------------- DIALOG ----------- */
  62.    {{LIGHTGRAY, BLUE},  /* STD_COLOR    */
  63.     {LIGHTGRAY, BLUE},  /* SELECT_COLOR */
  64.     {LIGHTGRAY, BLUE},  /* FRAME_COLOR  */
  65.     {LIGHTGRAY, BLUE}}, /* HILITE_COLOR */
  66. #endif
  67.  
  68.     /* ----------- ERRORBOX ----------- */
  69.    {{YELLOW, RED},      /* STD_COLOR    */
  70.     {YELLOW, RED},      /* SELECT_COLOR */
  71.     {YELLOW, RED},      /* FRAME_COLOR  */
  72.     {YELLOW, RED}},     /* HILITE_COLOR */
  73.  
  74.     /* ----------- MESSAGEBOX --------- */
  75.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  76.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  77.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  78.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  79.  
  80. #ifdef INCLUDE_HELP
  81.     /* ----------- HELPBOX ------------ */
  82.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  83.     {LIGHTGRAY, BLUE},  /* SELECT_COLOR */
  84.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  85.     {WHITE, LIGHTGRAY}},/* HILITE_COLOR */
  86. #endif
  87.  
  88. #ifdef INCLUDE_STATUSBAR
  89.     /* ---------- STATUSBAR ------------- */
  90.    {{BLACK, CYAN},      /* STD_COLOR    */
  91.     {BLACK, CYAN},      /* SELECT_COLOR */
  92.     {BLACK, CYAN},      /* FRAME_COLOR  */
  93.     {BLACK, CYAN}},     /* HILITE_COLOR */
  94. #endif
  95.  
  96.     /* ---------- TITLEBAR ------------ */
  97.    {{BLACK, CYAN},      /* STD_COLOR    */
  98.     {BLACK, CYAN},      /* SELECT_COLOR */
  99.     {BLACK, CYAN},      /* FRAME_COLOR  */
  100.     {WHITE, CYAN}},     /* HILITE_COLOR */
  101.  
  102.     /* ------------ DUMMY ------------- */
  103.    {{GREEN, LIGHTGRAY}, /* STD_COLOR    */
  104.     {GREEN, LIGHTGRAY}, /* SELECT_COLOR */
  105.     {GREEN, LIGHTGRAY}, /* FRAME_COLOR  */
  106.     {GREEN, LIGHTGRAY}} /* HILITE_COLOR */
  107. };
  108.  
  109. /* ----- default colors for mono video system ----- */
  110. unsigned char bw[CLASSCOUNT] [4] [2] = {
  111.     /* ------------ NORMAL ------------ */
  112.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  113.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  114.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  115.     {LIGHTGRAY, BLACK}},/* HILITE_COLOR */
  116.  
  117.     /* ---------- APPLICATION --------- */
  118.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  119.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  120.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  121.     {LIGHTGRAY, BLACK}},/* HILITE_COLOR */
  122.  
  123.     /* ------------ TEXTBOX ----------- */
  124.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  125.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  126.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  127.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  128.  
  129.     /* ------------ LISTBOX ----------- */
  130.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  131.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  132.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  133.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  134.  
  135.     /* ----------- EDITBOX ------------ */
  136.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  137.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  138.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  139.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  140.  
  141.     /* ---------- MENUBAR ------------- */
  142.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  143.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  144.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  145.     {DARKGRAY, WHITE}}, /* HILITE_COLOR
  146.                            Inactive, Shortcut (both FG) */
  147.  
  148.     /* ---------- POPDOWNMENU --------- */
  149.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  150.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  151.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  152.     {DARKGRAY, WHITE}}, /* HILITE_COLOR
  153.                            Inactive ,Shortcut (both FG) */
  154.  
  155. #ifdef INCLUDE_DIALOG_BOXES
  156.     /* ------------ BUTTON ------------ */
  157.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  158.     {WHITE, LIGHTGRAY}, /* SELECT_COLOR */
  159.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  160.     {DARKGRAY, WHITE}}, /* HILITE_COLOR
  161.                            Inactive ,Shortcut (both FG) */
  162.  
  163.     /* ------------- DIALOG ----------- */
  164.    {{LIGHTGRAY, BLACK},  /* STD_COLOR    */
  165.     {LIGHTGRAY, BLACK},  /* SELECT_COLOR */
  166.     {LIGHTGRAY, BLACK},  /* FRAME_COLOR  */
  167.     {LIGHTGRAY, BLACK}}, /* HILITE_COLOR */
  168. #endif
  169.  
  170.     /* ----------- ERRORBOX ----------- */
  171.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  172.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  173.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  174.     {LIGHTGRAY, BLACK}},/* HILITE_COLOR */
  175.  
  176.     /* ----------- MESSAGEBOX --------- */
  177.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  178.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  179.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  180.     {LIGHTGRAY, BLACK}},/* HILITE_COLOR */
  181.  
  182. #ifdef INCLUDE_HELP
  183.     /* ----------- HELPBOX ------------ */
  184.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  185.     {WHITE, BLACK},     /* SELECT_COLOR */
  186.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  187.     {WHITE, LIGHTGRAY}},/* HILITE_COLOR */
  188. #endif
  189.  
  190. #ifdef INCLUDE_STATUSBAR
  191.     /* ---------- STATUSBAR ------------- */
  192.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  193.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  194.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  195.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  196. #endif
  197.  
  198.     /* ---------- TITLEBAR ------------ */
  199.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  200.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  201.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  202.     {WHITE, LIGHTGRAY}},/* HILITE_COLOR */
  203.  
  204.     /* ------------ DUMMY ------------- */
  205.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  206.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  207.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  208.     {BLACK, LIGHTGRAY}} /* HILITE_COLOR */
  209. };
  210. /* ----- default colors for reverse mono video ----- */
  211. unsigned char reverse[CLASSCOUNT] [4] [2] = {
  212.     /* ------------ NORMAL ------------ */
  213.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  214.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  215.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  216.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  217.  
  218.     /* ---------- APPLICATION --------- */
  219.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  220.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  221.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  222.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  223.  
  224.     /* ------------ TEXTBOX ----------- */
  225.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  226.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  227.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  228.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  229.  
  230.     /* ------------ LISTBOX ----------- */
  231.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  232.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  233.     {BLACK, LIGHTGRAY},  /* FRAME_COLOR  */
  234.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  235.  
  236.     /* ----------- EDITBOX ------------ */
  237.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  238.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  239.     {BLACK, LIGHTGRAY},  /* FRAME_COLOR  */
  240.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  241.  
  242.     /* ---------- MENUBAR ------------- */
  243.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  244.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  245.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  246.     {DARKGRAY, WHITE}}, /* HILITE_COLOR
  247.                            Inactive, Shortcut (both FG) */
  248.  
  249.     /* ---------- POPDOWNMENU --------- */
  250.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  251.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  252.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  253.     {DARKGRAY, WHITE}}, /* HILITE_COLOR
  254.                            Inactive ,Shortcut (both FG) */
  255.  
  256. #ifdef INCLUDE_DIALOG_BOXES
  257.     /* ------------ BUTTON ------------ */
  258.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  259.     {WHITE, BLACK},     /* SELECT_COLOR */
  260.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  261.     {DARKGRAY, WHITE}}, /* HILITE_COLOR
  262.                            Inactive ,Shortcut (both FG) */
  263.  
  264.     /* ------------- DIALOG ----------- */
  265.    {{BLACK, LIGHTGRAY},  /* STD_COLOR    */
  266.     {BLACK, LIGHTGRAY},  /* SELECT_COLOR */
  267.     {BLACK, LIGHTGRAY},  /* FRAME_COLOR  */
  268.     {BLACK, LIGHTGRAY}}, /* HILITE_COLOR */
  269. #endif
  270.  
  271.     /* ----------- ERRORBOX ----------- */
  272.    {{BLACK, LIGHTGRAY},      /* STD_COLOR    */
  273.     {BLACK, LIGHTGRAY},      /* SELECT_COLOR */
  274.     {BLACK, LIGHTGRAY},      /* FRAME_COLOR  */
  275.     {BLACK, LIGHTGRAY}},     /* HILITE_COLOR */
  276.  
  277.     /* ----------- MESSAGEBOX --------- */
  278.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  279.     {BLACK, LIGHTGRAY}, /* SELECT_COLOR */
  280.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  281.     {BLACK, LIGHTGRAY}},/* HILITE_COLOR */
  282.  
  283. #ifdef INCLUDE_HELP
  284.     /* ----------- HELPBOX ------------ */
  285.    {{BLACK, LIGHTGRAY}, /* STD_COLOR    */
  286.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  287.     {BLACK, LIGHTGRAY}, /* FRAME_COLOR  */
  288.     {WHITE, LIGHTGRAY}},/* HILITE_COLOR */
  289. #endif
  290.  
  291. #ifdef INCLUDE_STATUSBAR
  292.     /* ---------- STATUSBAR ------------- */
  293.    {{LIGHTGRAY, BLACK},      /* STD_COLOR    */
  294.     {LIGHTGRAY, BLACK},      /* SELECT_COLOR */
  295.     {LIGHTGRAY, BLACK},      /* FRAME_COLOR  */
  296.     {LIGHTGRAY, BLACK}},     /* HILITE_COLOR */
  297. #endif
  298.  
  299.     /* ---------- TITLEBAR ------------ */
  300.    {{LIGHTGRAY, BLACK},      /* STD_COLOR    */
  301.     {LIGHTGRAY, BLACK},      /* SELECT_COLOR */
  302.     {LIGHTGRAY, BLACK},      /* FRAME_COLOR  */
  303.     {LIGHTGRAY, BLACK}},     /* HILITE_COLOR */
  304.  
  305.     /* ------------ DUMMY ------------- */
  306.    {{LIGHTGRAY, BLACK}, /* STD_COLOR    */
  307.     {LIGHTGRAY, BLACK}, /* SELECT_COLOR */
  308.     {LIGHTGRAY, BLACK}, /* FRAME_COLOR  */
  309.     {LIGHTGRAY, BLACK}} /* HILITE_COLOR */
  310. };
  311.  
  312. #define SIGNATURE DFLAT_APPLICATION " " VERSION
  313.  
  314. /* ------ default configuration values ------- */
  315. CONFIG cfg = {
  316.     SIGNATURE,
  317.     0,               /* Color                       */
  318.     TRUE,            /* Editor Insert Mode          */
  319.     4,               /* Editor tab stops            */
  320.     TRUE,            /* Editor word wrap            */
  321.     TRUE,            /* Application Border          */
  322.     TRUE,            /* Application Title           */
  323.     TRUE,            /* Status Bar                  */
  324.     TRUE,            /* Textured application window */
  325.     25               /* Number of screen lines      */
  326. };
  327.  
  328. /* ------ load a configuration file from disk ------- */
  329. int LoadConfig(void)
  330. {
  331.     FILE *fp = fopen(DFLAT_APPLICATION ".cfg", "rb");
  332.     if (fp != NULL)    {
  333.         fread(cfg.version, sizeof cfg.version+1, 1, fp);
  334.         if (strcmp(cfg.version, SIGNATURE) == 0)    {
  335.             fseek(fp, 0L, SEEK_SET);
  336.             fread(&cfg, sizeof(CONFIG), 1, fp);
  337.         }
  338.         else
  339.             strcpy(cfg.version, SIGNATURE);
  340.         fclose(fp);
  341.     }
  342.     return fp != NULL;
  343. }
  344.  
  345. /* ------ save a configuration file to disk ------- */
  346. void SaveConfig(void)
  347. {
  348.     FILE *fp = fopen(DFLAT_APPLICATION ".cfg", "wb");
  349.     if (fp != NULL)    {
  350.         cfg.InsertMode = GetCommandToggle(MainMenu, ID_INSERT);
  351.         cfg.WordWrap = GetCommandToggle(MainMenu, ID_WRAP);
  352.         fwrite(&cfg, sizeof(CONFIG), 1, fp);
  353.         fclose(fp);
  354.     }
  355. }
  356.