/******************************************************************** * 1.20* * XAES: Configuration loader from GUI_DEFS.SYS * * Code by Ken Hollis * * * * Copyright (C) 1994, Bitgate Software * * * * These routines are more efficient in that they don't store the * * text like APP_DEFS does. GUI_DEFS simply reads the file, parses* * the information, checks information using strcmp, and sets the * * internal typedef. The file equation in fscanf is likely to be * * either optimized or redesigned altogether. * * * ********************************************************************/ #include #include #include "xaes.h" #define GUIDEFS ".\\GUI_DEFS.SYS" typedef struct { char *str; /* String variable name in GUI_DEFS parsing */ int val; /* Variable name value */ } GUI_DEFS_STRINGS; LOCAL int Color_length = 17; LOCAL GUI_DEFS_STRINGS Colors[] = { "WHITE", WHITE, "BLACK", BLACK, "RED", RED, "GREEN", GREEN, "BLUE", BLUE, "CYAN", CYAN, "YELLOW", YELLOW, "MAGENTA", MAGENTA, "LWHITE", LWHITE, "LBLACK", LBLACK, "GREY", LBLACK, /* A little something I added myself */ "LRED", LRED, "LGREEN", LGREEN, "LBLUE", LBLUE, "LCYAN", LCYAN, "LYELLOW", LYELLOW, "LMAGENTA", LMAGENTA }; LOCAL int Centers_length = 3; LOCAL GUI_DEFS_STRINGS Centers[] = { "MOUSE_CENTER", XW_MOUSECENTER, "SCREEN_CENTER", XW_SCREENCENTER, "PHYSICAL_SCREEN", XW_PHYSICCENTER }; LOCAL int Draws_length = 7; LOCAL GUI_DEFS_STRINGS Draws[] = { "Standard", DRAW_STANDARD, "MultiTOS", DRAW_MULTITOS, "Geneva", DRAW_GENEVA, "Zoom", DRAW_ZOOM, "Motif", DRAW_MOTIF, "LTMF", DRAW_LTMF, "XAES", DRAW_XAES }; CONFIG xaes; /* * This is the routine to read in the configuration file. I'm a * little reluctant to even think of writing a WriteConfig routine * since the fscanf routine gave me nightmares. */ GLOBAL void ReadConfig(void) { FILE *file = fopen(GUIDEFS, "r"); if (file) { while (!feof(file)) { char element[80], status[80], option2[80], dummy[80]; char first = fgetc(file); ungetc(first, file); /* Don't ask me to explain the fscanf routine here. I'll just bop you in the nose. */ if ((first == '#') || (first == '[') || (first == '*') || (first == '!') || (first == '\'') || (first == ';')) fscanf(file, "%[^\n]\n", element); else fscanf(file, "%[^=]=%[^#[*!\'\t; \n]%[^,\n]%[^\n]\n", element, status, option2, dummy); if (!(strcmp(element, "LEFT_BORDER_MOVE"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_LEFTBORDER : 0; if (!(strcmp(element, "WINX_COMPATIBILITY"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_WINXCOMPAT : 0; if (!(strcmp(element, "CHANGE_MOUSE_ELEMENT"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_MOUSEGADGETS : 0; if (!(strcmp(element, "SLIDER_MOUSE_CHANGE"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_MOUSESLIDERS : 0; if (!(strcmp(element, "ROUNDED_OBJECTS"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_ROUNDOBJECTS : 0; if (!(strcmp(element, "ROUNDED_SHADOW"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_ROUNDSHADOW : 0; if (!(strcmp(element, "NICELINE_ENABLED"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_NICELINE : 0; if (!(strcmp(element, "GENEVA_COMPATIBILITY"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_GENEVACOMPAT : 0; if (!(strcmp(element, "DRAW3D_COMPATIBILITY"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_DRAW3DCOMPAT : 0; if (!(strcmp(element, "AUTO_CHANGE_MOUSE"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_AUTOCHANGE : 0; if (!(strcmp(element, "ELEMENT_SELECTION"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_ELEMENTSEL : 0; if (!(strcmp(element, "MEDIUM_EMULATION"))) xaes.config1 |= (!(strcmp(status, "TRUE"))) ? X_MEDEMUL : 0; if (!(strcmp(element, "ACTIVE_WINDOW_TEXT"))) xaes.active_text_color = BLACK; if (!(strcmp(element, "INACTIVE_WINDOW_TEXT"))) xaes.inactive_text_color = WHITE; if (!(strcmp(element, "WINDOW_CENTER"))) { if (!(strcmp(status, "MOUSE_CENTER"))) xaes.wind_center = XW_MOUSECENTER; if (!(strcmp(status, "SCREEN_CENTER"))) xaes.wind_center = XW_SCREENCENTER; if (!(strcmp(status, "PHYSICAL_SCREEN"))) xaes.wind_center = XW_PHYSICCENTER; } if (!(strcmp(element, "FORCE_INTERFACE_EMULATION"))) xaes.config2 |= (!(strcmp(status, "TRUE"))) ? X_INTERFACE : 0; if (!(strcmp(element, "ACTIVE_WINDOW_REDRAW"))) xaes.config2 |= (!(strcmp(status, "TRUE"))) ? X_ACTIVEDRAG : 0; if (!(strcmp(element, "BACKGROUNDABILITY"))) xaes.config2 |= (!(strcmp(status, "TRUE"))) ? X_BACKGROUND : 0; if (!(strcmp(element, "3D_DRAW_STYLE"))) { if (!(strcmp(status, "Standard"))) xaes.draw_3d = DRAW_STANDARD; if (!(strcmp(status, "MultiTOS"))) xaes.draw_3d = DRAW_MULTITOS; if (!(strcmp(status, "Geneva"))) xaes.draw_3d = DRAW_GENEVA; if (!(strcmp(status, "Zoom"))) xaes.draw_3d = DRAW_ZOOM; if (!(strcmp(status, "Motif"))) xaes.draw_3d = DRAW_MOTIF; if (!(strcmp(status, "LTMF"))) xaes.draw_3d = DRAW_LTMF; if (!(strcmp(status, "XAES"))) xaes.draw_3d = DRAW_XAES; } if (!(strcmp(element, "UNDERLINE_COLOR"))) { if (!(strcmp(status, "BLACK"))) xaes.hotkey_color = BLACK; if (!(strcmp(status, "RED"))) xaes.hotkey_color = RED; if (!(strcmp(status, "WHITE"))) xaes.hotkey_color = WHITE; } if (xaes.config1 & X_MEDEMUL) xaes.hotkey_color = BLACK; if ((xaes.hotkey_color != BLACK) && (xaes.config1 & X_MEDEMUL)) xaes.hotkey_color = BLACK; } fclose(file); } else { form_alert(1, "[3][GUI_DEFS file not found!| |Assuming defaults.][ Okay ]"); /* We're going to add defaults later, after I get all of the settings figured out; that'll probably take a while... */ } }