Mercurial > pidgin.yaz
diff console/libgnt/gntstyle.c @ 14010:7573bd40a190
[gaim-migrate @ 16602]
Allow plugins to be loaded and unloaded.
Remember the window positions and sizes.
All turning on/off shadow from ~/.gntrc (off by default).
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Mon, 31 Jul 2006 23:19:12 +0000 |
parents | 06f75fb84a78 |
children | bb38f32ab6aa |
line wrap: on
line diff
--- a/console/libgnt/gntstyle.c Sat Jul 29 20:22:39 2006 +0000 +++ b/console/libgnt/gntstyle.c Mon Jul 31 23:19:12 2006 +0000 @@ -1,6 +1,76 @@ #include "gntstyle.h" #include "gntcolors.h" +#include <string.h> + +static char * str_styles[GNT_STYLES]; +static int int_styles[GNT_STYLES]; +static int bool_styles[GNT_STYLES]; + +const char *gnt_style_get(GntStyle style) +{ + return str_styles[style]; +} + +gboolean gnt_style_get_bool(GntStyle style, gboolean def) +{ + int i; + const char * str; + + if (bool_styles[style] != -1) + return bool_styles[style]; + + str = gnt_style_get(style); + + if (str) + { + if (strcmp(str, "false") == 0) + def = FALSE; + else if (strcmp(str, "true") == 0) + def = TRUE; + else if (sscanf(str, "%d", &i) == 1) + { + if (i) + def = TRUE; + else + def = FALSE; + } + } + + bool_styles[style] = def; + return bool_styles[style]; +} + +static void +read_general_style(GKeyFile *kfile) +{ + GError *error = NULL; + gsize nkeys; + char **keys = g_key_file_get_keys(kfile, "general", &nkeys, &error); + int i; + struct + { + const char *style; + GntStyle en; + } styles[] = {{"shadow", GNT_STYLE_SHADOW}, + {NULL, 0}}; + + if (error) + { + /* XXX: some error happened. */ + g_error_free(error); + } + else + { + for (i = 0; styles[i].style; i++) + { + error = NULL; + str_styles[styles[i].en] = + g_key_file_get_string(kfile, "general", styles[i].style, &error); + } + } +} + void gnt_style_read_configure_file(const char *filename) { #if GLIB_CHECK_VERSION(2,6,0) @@ -14,8 +84,27 @@ return; } gnt_colors_parse(kfile); + read_general_style(kfile); g_key_file_free(kfile); #endif } +void gnt_init_styles() +{ + int i; + for (i = 0; i < GNT_STYLES; i++) + { + str_styles[i] = NULL; + int_styles[i] = -1; + bool_styles[i] = -1; + } +} + +void gnt_uninit_styles() +{ + int i; + for (i = 0; i < GNT_STYLES; i++) + g_free(str_styles[i]); +} +