all repos — tint2 @ 698f253f968f7ae2bf0a9101ccae476d16c3195e

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

more tint2conf cleanup

git-svn-id: http://tint2.googlecode.com/svn/trunk@234 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
lorthiois@bbsoft.fr lorthiois@bbsoft.fr@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

698f253f968f7ae2bf0a9101ccae476d16c3195e

parent

97a1e6f6c4c113f25e9427e9f3ab83ceff632839

M configure.acconfigure.ac

@@ -31,12 +31,12 @@ AM_CONDITIONAL([INSTALL_EXAMPLES], [test x$examples = xtrue])

# tint2conf AC_ARG_ENABLE([tint2conf], - [AS_HELP_STRING([--enable-tint2conf], [Build and install tint2conf, a GTK+2 configuration utility for tint2 (EXPERIMENTAL)])], + [AS_HELP_STRING([--disable-tint2conf], [Disable tint2conf build, a GTK+2 theme switcher for tint2])], [case "${enableval}" in yes) tint2conf=true ;; no) tint2conf=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-tint2conf]) ;; - esac],[tint2conf=false]) + *) AC_MSG_ERROR([bad value ${enableval} for --disable-tint2conf]) ;; + esac],[tint2conf=true]) AM_CONDITIONAL([ENABLE_TINT2CONF], [test x$tint2conf = xtrue]) #
M src/config.csrc/config.c

@@ -100,25 +100,6 @@ list_back = NULL;

} -void copy_file(const char *pathSrc, const char *pathDest) -{ - FILE *fileSrc, *fileDest; - char line[100]; - int nb; - - fileSrc = fopen(pathSrc, "rb"); - if (fileSrc == NULL) return; - - fileDest = fopen(pathDest, "wb"); - if (fileDest == NULL) return; - - while ((nb = fread(line, 1, 100, fileSrc)) > 0) fwrite(line, 1, nb, fileDest); - - fclose (fileDest); - fclose (fileSrc); -} - - void extract_values (const char *value, char **value1, char **value2, char **value3) { char *b=0, *c=0;

@@ -155,58 +136,6 @@ if (c) {

*value3 = strdup (c); g_strstrip(*value3); } -} - - -int hex_char_to_int (char c) -{ - int r; - - if (c >= '0' && c <= '9') r = c - '0'; - else if (c >= 'a' && c <= 'f') r = c - 'a' + 10; - else if (c >= 'A' && c <= 'F') r = c - 'A' + 10; - else r = 0; - - return r; -} - - -int hex_to_rgb (char *hex, int *r, int *g, int *b) -{ - int len; - - if (hex == NULL || hex[0] != '#') return (0); - - len = strlen (hex); - if (len == 3 + 1) { - *r = hex_char_to_int (hex[1]); - *g = hex_char_to_int (hex[2]); - *b = hex_char_to_int (hex[3]); - } - else if (len == 6 + 1) { - *r = hex_char_to_int (hex[1]) * 16 + hex_char_to_int (hex[2]); - *g = hex_char_to_int (hex[3]) * 16 + hex_char_to_int (hex[4]); - *b = hex_char_to_int (hex[5]) * 16 + hex_char_to_int (hex[6]); - } - else if (len == 12 + 1) { - *r = hex_char_to_int (hex[1]) * 16 + hex_char_to_int (hex[2]); - *g = hex_char_to_int (hex[5]) * 16 + hex_char_to_int (hex[6]); - *b = hex_char_to_int (hex[9]) * 16 + hex_char_to_int (hex[10]); - } - else return 0; - - return 1; -} - - -void get_color (char *hex, double *rgb) -{ - int r, g, b; - hex_to_rgb (hex, &r, &g, &b); - - rgb[0] = (r / 255.0); - rgb[1] = (g / 255.0); - rgb[2] = (b / 255.0); }

@@ -709,35 +638,6 @@ if (value3) free (value3);

} -int parse_line (const char *line) -{ - char *a, *b, *key, *value; - - /* Skip useless lines */ - if ((line[0] == '#') || (line[0] == '\n')) return 0; - if (!(a = strchr (line, '='))) return 0; - - /* overwrite '=' with '\0' */ - a[0] = '\0'; - key = strdup (line); - a++; - - /* overwrite '\n' with '\0' if '\n' present */ - if ((b = strchr (a, '\n'))) b[0] = '\0'; - - value = strdup (a); - - g_strstrip(key); - g_strstrip(value); - - add_entry (key, value); - - free (key); - free (value); - return 1; -} - - void config_finish () { if (panel_config.monitor > (server.nb_monitor-1)) {

@@ -830,15 +730,20 @@ int config_read_file (const char *path)

{ FILE *fp; char line[80]; + char *key, *value; if ((fp = fopen(path, "r")) == NULL) return 0; old_task_font = 0; old_time1_font = 0; old_time2_font = 0; - while (fgets(line, sizeof(line), fp) != NULL) - parse_line (line); - + while (fgets(line, sizeof(line), fp) != NULL) { + if (parse_line(line, &key, &value)) { + add_entry (key, value); + free (key); + free (value); + } + } fclose (fp); if (save_file_config)
M src/tint2conf/Makefile.amsrc/tint2conf/Makefile.am

@@ -1,6 +1,7 @@

if ENABLE_TINT2CONF bin_PROGRAMS = tint2conf -tint2conf_SOURCES = main.c +tint2conf_SOURCES = main.c ../util/common.c +INCLUDES = -I../util AM_CFLAGS += @TINT2CONF_CFLAGS@ LIBS += @TINT2CONF_LIBS@
M src/tint2conf/main.csrc/tint2conf/main.c

@@ -24,6 +24,8 @@ #include <glib.h>

#include <glib/gstdio.h> #include <glib/gi18n.h> +#include "common.h" + // TODO // ** add, saveas

@@ -75,6 +77,9 @@ static void init_list(GtkWidget *list);

static void add_to_list(GtkWidget *list, const gchar *str); void on_changed(GtkWidget *widget, gpointer label); +void read_config(char **defaultTheme); +void write_config(char *defaultTheme); +void check_theme(); // define menubar and toolbar

@@ -136,7 +141,7 @@ GtkTreeSelection *sel;

gtk_init (&argc, &argv); g_thread_init( NULL ); - checkConfig(); + check_theme(); // define main layout : container, menubar, toolbar window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

@@ -314,7 +319,6 @@

static void menuProperties (void) { - printf("menuProperties\n"); system("python /home/thil/Desktop/tintwizard/tintwizard.py"); }

@@ -355,9 +359,11 @@ if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(sel), &model, &iter)) {

gtk_tree_model_get(model, &iter, LIST_ITEM, &value, -1); name1 = g_build_filename (g_get_user_config_dir(), "tint2", value, NULL); name2 = g_strdup_printf("%s.tint2rc", name1); + g_free(name1); + copy_file(name2, pathConfig); + write_config(value); g_free(value); - g_free(name1); g_free(name2); // restart panel

@@ -395,38 +401,71 @@ g_free(name);

} } g_dir_close(dir); -} + // search default theme + GtkTreeIter iter; + GtkTreeModel *model; + name = NULL; + read_config(&name); + if (name) { + printf("defaultTheme %s\n", name); + //gtk_tree_selection_select_iter(GtkTreeSelection *selection, GtkTreeIter *iter); + } +} -// config file management -void checkConfig() +// theme file management +void read_config(char **defaultTheme) { - pathDir = g_build_filename (g_get_user_config_dir(), "tint2", NULL); - if (!g_file_test (pathDir, G_FILE_TEST_IS_DIR)) - g_mkdir(pathDir, 0777); + char *path; - pathConfig = g_build_filename (g_get_user_config_dir(), "tint2", "tint2rc", NULL); - + path = g_build_filename (g_get_user_config_dir(), "tint2", "tint2confrc", NULL); + if (g_file_test (path, G_FILE_TEST_EXISTS)) { + FILE *fp; + char line[80]; + char *key, *value; + if ((fp = fopen(path, "r")) != NULL) { + while (fgets(line, sizeof(line), fp) != NULL) { + if (parse_line(line, &key, &value)) { + if (strcmp (key, "default_theme") == 0) { + *defaultTheme = strdup (value); + } + free (key); + free (value); + } + } + fclose (fp); + } + } + g_free(path); } -void copy_file(const char *pathSrc, const char *pathDest) +void write_config(char *defaultTheme) { - FILE *fileSrc, *fileDest; - char line[100]; - int nb; + char *path; + FILE *fp; + + path = g_build_filename (g_get_user_config_dir(), "tint2", "tint2confrc", NULL); + fp = fopen(path, "w"); + if (fp != NULL) { + fputs("#---------------------------------------------\n", fp); + fputs("# TINT2CONF CONFIG FILE\n", fp); + fprintf(fp, "default_theme = %s\n\n", defaultTheme); + fclose (fp); + } + g_free(path); +} - fileSrc = fopen(pathSrc, "rb"); - if (fileSrc == NULL) return; - fileDest = fopen(pathDest, "wb"); - if (fileDest == NULL) return; +void check_theme() +{ + pathDir = g_build_filename (g_get_user_config_dir(), "tint2", NULL); + if (!g_file_test (pathDir, G_FILE_TEST_IS_DIR)) + g_mkdir(pathDir, 0777); - while ((nb = fread(line, 1, 100, fileSrc)) > 0) fwrite(line, 1, nb, fileDest); + pathConfig = g_build_filename (g_get_user_config_dir(), "tint2", "tint2rc", NULL); - fclose (fileDest); - fclose (fileSrc); }
M src/util/common.csrc/util/common.c

@@ -30,6 +30,101 @@ #include "common.h"

+void copy_file(const char *pathSrc, const char *pathDest) +{ + FILE *fileSrc, *fileDest; + char line[100]; + int nb; + + fileSrc = fopen(pathSrc, "rb"); + if (fileSrc == NULL) return; + + fileDest = fopen(pathDest, "wb"); + if (fileDest == NULL) return; + + while ((nb = fread(line, 1, 100, fileSrc)) > 0) fwrite(line, 1, nb, fileDest); + + fclose (fileDest); + fclose (fileSrc); +} + + +int parse_line (const char *line, char **key, char **value) +{ + char *a, *b; + + /* Skip useless lines */ + if ((line[0] == '#') || (line[0] == '\n')) return 0; + if (!(a = strchr (line, '='))) return 0; + + /* overwrite '=' with '\0' */ + a[0] = '\0'; + *key = strdup (line); + a++; + + /* overwrite '\n' with '\0' if '\n' present */ + if ((b = strchr (a, '\n'))) b[0] = '\0'; + + *value = strdup (a); + + g_strstrip(*key); + g_strstrip(*value); + return 1; +} + + +int hex_char_to_int (char c) +{ + int r; + + if (c >= '0' && c <= '9') r = c - '0'; + else if (c >= 'a' && c <= 'f') r = c - 'a' + 10; + else if (c >= 'A' && c <= 'F') r = c - 'A' + 10; + else r = 0; + + return r; +} + + +int hex_to_rgb (char *hex, int *r, int *g, int *b) +{ + int len; + + if (hex == NULL || hex[0] != '#') return (0); + + len = strlen (hex); + if (len == 3 + 1) { + *r = hex_char_to_int (hex[1]); + *g = hex_char_to_int (hex[2]); + *b = hex_char_to_int (hex[3]); + } + else if (len == 6 + 1) { + *r = hex_char_to_int (hex[1]) * 16 + hex_char_to_int (hex[2]); + *g = hex_char_to_int (hex[3]) * 16 + hex_char_to_int (hex[4]); + *b = hex_char_to_int (hex[5]) * 16 + hex_char_to_int (hex[6]); + } + else if (len == 12 + 1) { + *r = hex_char_to_int (hex[1]) * 16 + hex_char_to_int (hex[2]); + *g = hex_char_to_int (hex[5]) * 16 + hex_char_to_int (hex[6]); + *b = hex_char_to_int (hex[9]) * 16 + hex_char_to_int (hex[10]); + } + else return 0; + + return 1; +} + + +void get_color (char *hex, double *rgb) +{ + int r, g, b; + hex_to_rgb (hex, &r, &g, &b); + + rgb[0] = (r / 255.0); + rgb[1] = (g / 255.0); + rgb[2] = (b / 255.0); +} + + void adjust_asb(DATA32 *data, int w, int h, int alpha, float satur, float bright) { unsigned int x, y;
M src/util/common.hsrc/util/common.h

@@ -50,10 +50,20 @@ double alpha;

} config_color; +// copy file source to file dest +void copy_file(const char *pathSrc, const char *pathDest); + +// extract key = value +int parse_line (const char *line, char **key, char **value); + +// conversion +int hex_char_to_int (char c); +int hex_to_rgb (char *hex, int *r, int *g, int *b); +void get_color (char *hex, double *rgb); + // adjust Alpha/Saturation/Brightness on an ARGB icon // alpha from 0 to 100, satur from 0 to 1, bright from 0 to 1. void adjust_asb(DATA32 *data, int w, int h, int alpha, float satur, float bright); - #endif