+ gboolean have_iter, found_theme;
+ GtkTreeIter iter;
+ GtkTreeModel *model;
+
+ if (!name_theme) return;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(g_theme_view));
+ found_theme = searchTheme(name_theme, model, &iter);
+
+ GtkTreePath *path = NULL;
+ if (found_theme)
+ path = gtk_tree_model_get_path(model, &iter);
+ else {
+ have_iter = gtk_tree_model_get_iter_first(model, &iter);
+ if (have_iter)
+ path = gtk_tree_model_get_path(model, &iter);
+ }
+ if (path) {
+ gtk_tree_selection_select_iter(gtk_tree_view_get_selection(GTK_TREE_VIEW(g_theme_view)), &iter);
+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(g_theme_view), path, NULL, FALSE, 0, 0);
+ gtk_tree_path_free(path);
+ }
+}
+
+
+gboolean searchTheme(const gchar *name_theme, GtkTreeModel *model, GtkTreeIter *iter)
+{
+ gchar *name;
+ gboolean have_iter, found = FALSE;
+
+ have_iter = gtk_tree_model_get_iter_first(model, iter);
+ while (have_iter) {
+ gtk_tree_model_get(model, iter, COL_THEME_FILE, &name, -1);
+ found = (strcmp(name, name_theme) == 0);
+ g_free(name);
+ if (found)
+ break;
+ have_iter = gtk_tree_model_iter_next(model, iter);
+ }
+ return found;
+}
+
+
+void initTheme()
+{
+ g_path_dir = g_build_filename (g_get_user_config_dir(), "tint2", NULL);
+ if (!g_file_test (g_path_dir, G_FILE_TEST_IS_DIR))
+ g_mkdir(g_path_dir, 0777);
+
+ g_path_config = g_build_filename (g_get_user_config_dir(), "tint2", "tint2rc", NULL);
+}
+
+
+void read_config()
+{
+ char *path;
+
+ // default values
+ if (g_default_theme != NULL) {
+ g_free(g_default_theme);
+ g_default_theme = NULL;
+ }
+ g_width = 500;
+ g_height = 350;
+ g_cmd_property = g_strdup("python /usr/bin/tintwizard.py");
+
+ // load config
+ 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)
+ g_default_theme = strdup(value);
+ else if (strcmp (key, "cmd_property") == 0) {
+ g_free(g_cmd_property);
+ g_cmd_property = strdup(value);
+ }
+ else if (strcmp (key, "width") == 0)
+ g_width = atoi(value);
+ else if (strcmp (key, "height") == 0)
+ g_height = atoi(value);
+ free (key);
+ free (value);
+ }
+ }
+ fclose (fp);
+ }