X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fconfig.c;h=a6056ee14d9bad0c205a1783f93975cf53ecb2bd;hb=e2c3582a5c0230cae0571e8f92829b910039f179;hp=b66ad5e7a2b0a9a50677d8a24be8358f9ac269e2;hpb=799fe5a8bcdc799d7621e2e97659f564b95dda05;p=chaz%2Fopenbox diff --git a/openbox/config.c b/openbox/config.c index b66ad5e7..a6056ee1 100644 --- a/openbox/config.c +++ b/openbox/config.c @@ -8,10 +8,6 @@ static void config_free_entry(ConfigEntry *entry); static void config_set_entry(char *name, ConfigValueType type, ConfigValue value); static void config_def_free(ConfigDefEntry *entry); -static void print_config(GQuark q, gpointer data, gpointer fonk){ - ConfigDefEntry *e = (ConfigDefEntry *)data; - g_message("config: %s %d", e->name, e->hasList); -} static GData *config = NULL; static GData *config_def = NULL; @@ -22,21 +18,67 @@ void cparse_go(char *filename, FILE *); void config_startup() { - /* test definition */ - ConfigDefEntry *def; - - def = config_def_new("test", Config_String); - config_def_set(def); - - def = config_def_new("test", Config_String); - config_def_set(def); - - def = config_def_new("testlist", Config_String); - config_def_add_value(def, "one"); - config_def_add_value(def, "two"); - config_def_set(def); - - g_datalist_foreach(&config_def, print_config, NULL); + ConfigValue val; + + /* set up options exported by the kernel */ + config_def_set(config_def_new("engine", Config_String, + "Engine", + "The name of the theming engine to be used " + "to decorate windows.")); + + config_def_set(config_def_new("theme", Config_String, + "Theme", + "The name of the theme to load with the " + "chosen engine.")); + + config_def_set(config_def_new("font", Config_String, + "Titlebar Font", + "The fontstring specifying the font to " + "be used in window titlebars.")); + val.string = "Sans-7"; + config_set("font", Config_String, val); + + config_def_set(config_def_new("font.shadow", Config_Bool, + "Titlebar Font Shadow", + "Whether or not the text in the window " + "titlebars gets a drop shadow.")); + val.bool = FALSE; + config_set("font.shadow", Config_Bool, val); + + config_def_set(config_def_new("font.shadow.offset", Config_Integer, + "Titlebar Font Shadow Offset", + "The offset of the drop shadow for text " + "in the window titlebars.")); + val.integer = 1; + config_set("font.shadow.offset", Config_Integer, val); + + config_def_set(config_def_new("font.shadow.tint", Config_Integer, + "Titlebar Font Shadow Tint", + "The percentage of tint/opacity to give the " + "the shadow(from -100(white) to " + "100(black)).")); + val.integer = 25; + config_set("font.shadow.tint", Config_Integer, val); + + config_def_set(config_def_new("titlebar.layout", Config_String, + "Titlebar Layout", + "The ordering of the elements in the " + "window titlebars.")); + val.string = "NDSLIMC"; + config_set("titlebar.layout", Config_String, val); + + config_def_set(config_def_new("focusNew", Config_Bool, + "Focus New Windows", + "Focus windows when they first appear.")); + val.bool = TRUE; + config_set("focusNew", Config_Bool, val); + + config_def_set(config_def_new("focusFollowsMouse", Config_Bool, + "Focus Follows Mouse", + "Focus windows when the mouse pointer " + "enters them.")); + val.bool = TRUE; + config_set("focusFollowsMouse", Config_Bool, val); } void config_shutdown() @@ -45,41 +87,17 @@ void config_shutdown() g_datalist_clear(&config_def); } -void config_parse() -{ - FILE *file; - char *path; - - /* load the system wide rc file first */ - path = g_build_filename(RCDIR, "rc3", NULL); - if ((file = fopen(path, "r")) != NULL) { - cparse_go(path, file); - fclose(file); - } - g_free(path); - - /* then load the user one which can override it */ - path = g_build_filename(g_get_home_dir(), ".openbox", "rc3", NULL); - if ((file = fopen(path, "r")) != NULL) { - cparse_go(path, file); - fclose(file); - } - g_free(path); -} - gboolean config_set(char *name, ConfigValueType type, ConfigValue value) { ConfigDefEntry *def; gboolean ret = FALSE; name = g_ascii_strdown(name, -1); - g_message("Setting %s", name); - g_datalist_foreach(&config_def, print_config, NULL); def = g_datalist_get_data(&config_def, name); if (def == NULL) { - g_message("Invalid config option '%s'", name); + g_warning("Invalid config option '%s'", name); } else { if (def->hasList) { gboolean found = FALSE; @@ -95,10 +113,12 @@ gboolean config_set(char *name, ConfigValueType type, ConfigValue value) } while ((it = it->next)); if (!found) - g_message("Invalid value '%s' for config option '%s'", + g_warning("Invalid value '%s' for config option '%s'", value.string, name); else ret = TRUE; + } else if (type != def->type) { + g_warning("Incorrect type of value for config option '%s'", name); } else ret = TRUE; @@ -155,12 +175,15 @@ static void config_free_entry(ConfigEntry *entry) g_free(entry); } -ConfigDefEntry *config_def_new(char *name, ConfigValueType type) +ConfigDefEntry *config_def_new(char *name, ConfigValueType type, + char *descriptive_name, char *long_description) { ConfigDefEntry *entry; entry = g_new(ConfigDefEntry, 1); entry->name = g_ascii_strdown(name, -1); + entry->descriptive_name = g_strdup(descriptive_name); + entry->long_description = g_strdup(long_description); entry->hasList = FALSE; entry->type = type; entry->values = NULL; @@ -172,6 +195,8 @@ static void config_def_free(ConfigDefEntry *entry) GSList *it; g_free(entry->name); + g_free(entry->descriptive_name); + g_free(entry->long_description); if (entry->hasList) { for (it = entry->values; it != NULL; it = it->next) g_free(it->data);