home *** CD-ROM | disk | FTP | other *** search
/ Dream 48 / Amiga_Dream_48.iso / Atari / c / libs / xaes_new.lzh / CONFIG.C < prev    next >
C/C++ Source or Header  |  1994-12-27  |  6KB  |  176 lines

  1. /********************************************************************
  2.  *                                                                1.20*
  3.  *    XAES: Configuration loader from GUI_DEFS.SYS                    *
  4.  *    Code by Ken Hollis                                                *
  5.  *                                                                    *
  6.  *    Copyright (C) 1994, Bitgate Software                            *
  7.  *                                                                    *
  8.  *    These routines are more efficient in that they don't store the    *
  9.  *    text like APP_DEFS does.  GUI_DEFS simply reads the file, parses*
  10.  *    the information, checks information using strcmp, and sets the    *
  11.  *    internal typedef.  The file equation in fscanf is likely to be    *
  12.  *    either optimized or redesigned altogether.                        *
  13.  *                                                                    *
  14.  ********************************************************************/
  15.  
  16. #include <stdio.h>
  17. #include <string.h>
  18.  
  19. #include "xaes.h"
  20.  
  21. #define    GUIDEFS    ".\\GUI_DEFS.SYS"
  22.  
  23. typedef struct {
  24.     char    *str;    /* String variable name in GUI_DEFS parsing */
  25.     int        val;    /* Variable name value */
  26. } GUI_DEFS_STRINGS;
  27.  
  28. LOCAL int Color_length = 17;
  29. LOCAL GUI_DEFS_STRINGS Colors[] = {
  30.     "WHITE",    WHITE,
  31.     "BLACK",     BLACK,
  32.     "RED",         RED,
  33.     "GREEN",    GREEN,
  34.     "BLUE",        BLUE,
  35.     "CYAN",        CYAN,
  36.     "YELLOW",    YELLOW,
  37.     "MAGENTA",    MAGENTA,
  38.     "LWHITE",    LWHITE,
  39.     "LBLACK",    LBLACK,
  40.     "GREY",        LBLACK,        /* A little something I added myself */
  41.     "LRED",        LRED,
  42.     "LGREEN",    LGREEN,
  43.     "LBLUE",    LBLUE,
  44.     "LCYAN",    LCYAN,
  45.     "LYELLOW",    LYELLOW,
  46.     "LMAGENTA",    LMAGENTA };
  47.  
  48. LOCAL int Centers_length = 3;
  49. LOCAL GUI_DEFS_STRINGS Centers[] = {
  50.     "MOUSE_CENTER",        XW_MOUSECENTER,
  51.     "SCREEN_CENTER",    XW_SCREENCENTER,
  52.     "PHYSICAL_SCREEN",    XW_PHYSICCENTER };
  53.  
  54. LOCAL int Draws_length = 7;
  55. LOCAL GUI_DEFS_STRINGS Draws[] = {
  56.     "Standard",    DRAW_STANDARD,
  57.     "MultiTOS",    DRAW_MULTITOS,
  58.     "Geneva",    DRAW_GENEVA,
  59.     "Zoom",        DRAW_ZOOM,
  60.     "Motif",    DRAW_MOTIF,
  61.     "LTMF",        DRAW_LTMF,
  62.     "XAES",        DRAW_XAES };
  63.  
  64. CONFIG xaes;
  65.  
  66. /*
  67.  *    This is the routine to read in the configuration file.  I'm a
  68.  *    little reluctant to even think of writing a WriteConfig routine
  69.  *    since the fscanf routine gave me nightmares.
  70.  */
  71. GLOBAL void ReadConfig(void)
  72. {
  73.     FILE *file = fopen(GUIDEFS, "r");
  74.  
  75.     if (file) {
  76.         while (!feof(file)) {
  77.             char element[80], status[80], option2[80], dummy[80];
  78.             char first = fgetc(file);
  79.  
  80.             ungetc(first, file);
  81.  
  82. /* Don't ask me to explain the fscanf routine here.  I'll just bop
  83.    you in the nose. */
  84.             if ((first == '#') || (first == '[') || (first == '*') ||
  85.                 (first == '!') || (first == '\'') || (first == ';'))
  86.                 fscanf(file, "%[^\n]\n", element);
  87.             else
  88.                 fscanf(file, "%[^=]=%[^#[*!\'\t; \n]%[^,\n]%[^\n]\n", element, status, option2, dummy);
  89.  
  90.             if (!(strcmp(element, "LEFT_BORDER_MOVE")))
  91.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_LEFTBORDER : 0;
  92.             if (!(strcmp(element, "WINX_COMPATIBILITY")))
  93.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_WINXCOMPAT : 0;
  94.             if (!(strcmp(element, "CHANGE_MOUSE_ELEMENT")))
  95.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_MOUSEGADGETS : 0;
  96.             if (!(strcmp(element, "SLIDER_MOUSE_CHANGE")))
  97.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_MOUSESLIDERS : 0;
  98.             if (!(strcmp(element, "ROUNDED_OBJECTS")))
  99.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_ROUNDOBJECTS : 0;
  100.             if (!(strcmp(element, "ROUNDED_SHADOW")))
  101.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_ROUNDSHADOW : 0;
  102.             if (!(strcmp(element, "NICELINE_ENABLED")))
  103.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_NICELINE : 0;
  104.             if (!(strcmp(element, "GENEVA_COMPATIBILITY")))
  105.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_GENEVACOMPAT : 0;
  106.             if (!(strcmp(element, "DRAW3D_COMPATIBILITY")))
  107.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_DRAW3DCOMPAT : 0;
  108.             if (!(strcmp(element, "AUTO_CHANGE_MOUSE")))
  109.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_AUTOCHANGE : 0;
  110.             if (!(strcmp(element, "ELEMENT_SELECTION")))
  111.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_ELEMENTSEL : 0;
  112.             if (!(strcmp(element, "MEDIUM_EMULATION")))
  113.                 xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_MEDEMUL : 0;
  114.  
  115.             if (!(strcmp(element, "ACTIVE_WINDOW_TEXT")))
  116.                 xaes.active_text_color = BLACK;
  117.             if (!(strcmp(element, "INACTIVE_WINDOW_TEXT")))
  118.                 xaes.inactive_text_color = WHITE;
  119.  
  120.             if (!(strcmp(element, "WINDOW_CENTER"))) {
  121.                 if (!(strcmp(status, "MOUSE_CENTER")))
  122.                     xaes.wind_center = XW_MOUSECENTER;
  123.                 if (!(strcmp(status, "SCREEN_CENTER")))
  124.                     xaes.wind_center = XW_SCREENCENTER;
  125.                 if (!(strcmp(status, "PHYSICAL_SCREEN")))
  126.                     xaes.wind_center = XW_PHYSICCENTER;
  127.             }
  128.  
  129.             if (!(strcmp(element, "FORCE_INTERFACE_EMULATION")))
  130.                 xaes.config2 |= (!(strcmp(status, "TRUE"))) ? X_INTERFACE : 0;
  131.             if (!(strcmp(element, "ACTIVE_WINDOW_REDRAW")))
  132.                 xaes.config2 |= (!(strcmp(status, "TRUE"))) ? X_ACTIVEDRAG : 0;
  133.             if (!(strcmp(element, "BACKGROUNDABILITY")))
  134.                 xaes.config2 |= (!(strcmp(status, "TRUE"))) ? X_BACKGROUND : 0;
  135.  
  136.             if (!(strcmp(element, "3D_DRAW_STYLE"))) {
  137.                 if (!(strcmp(status, "Standard")))
  138.                     xaes.draw_3d = DRAW_STANDARD;
  139.                 if (!(strcmp(status, "MultiTOS")))
  140.                     xaes.draw_3d = DRAW_MULTITOS;
  141.                 if (!(strcmp(status, "Geneva")))
  142.                     xaes.draw_3d = DRAW_GENEVA;
  143.                 if (!(strcmp(status, "Zoom")))
  144.                     xaes.draw_3d = DRAW_ZOOM;
  145.                 if (!(strcmp(status, "Motif")))
  146.                     xaes.draw_3d = DRAW_MOTIF;
  147.                 if (!(strcmp(status, "LTMF")))
  148.                     xaes.draw_3d = DRAW_LTMF;
  149.                 if (!(strcmp(status, "XAES")))
  150.                     xaes.draw_3d = DRAW_XAES;
  151.             }
  152.  
  153.             if (!(strcmp(element, "UNDERLINE_COLOR"))) {
  154.                 if (!(strcmp(status, "BLACK")))
  155.                     xaes.hotkey_color = BLACK;
  156.                 if (!(strcmp(status, "RED")))
  157.                     xaes.hotkey_color = RED;
  158.                 if (!(strcmp(status, "WHITE")))
  159.                     xaes.hotkey_color = WHITE;
  160.             }
  161.  
  162.             if (xaes.config1 & X_MEDEMUL)
  163.                 xaes.hotkey_color = BLACK;
  164.  
  165.             if ((xaes.hotkey_color != BLACK) && (xaes.config1 & X_MEDEMUL))
  166.                 xaes.hotkey_color = BLACK;
  167.         }
  168.  
  169.         fclose(file);
  170.     } else {
  171.          form_alert(1, "[3][GUI_DEFS file not found!| |Assuming defaults.][ Okay ]");
  172.  
  173.         /* We're going to add defaults later, after I get all of the
  174.            settings figured out; that'll probably take a while... */
  175.     }
  176. }