+ menuApply();
+}
+
+
+static void windowSizeAllocated()
+{
+ const gboolean isMaximized = g_window->window && (gdk_window_get_state(g_window->window) & GDK_WINDOW_STATE_MAXIMIZED);
+
+ if(!isMaximized)
+ gtk_window_get_size(GTK_WINDOW(g_window), &g_width, &g_height);
+}
+
+
+static void load_theme(GtkWidget *list)
+{
+ GDir *dir;
+ gchar *pt1, *name;
+ const gchar *file;
+ gboolean found_theme = FALSE;
+
+ dir = g_dir_open(g_path_dir, 0, NULL);
+ if (dir == NULL) return;
+ while ((file = g_dir_read_name(dir))) {
+ pt1 = strstr(file, ".tint2rc");
+ if (pt1) {
+ found_theme = TRUE;
+ name = g_build_filename (g_path_dir, file, NULL);
+ custom_list_append(name);
+ g_free(name);
+ }
+ }
+ g_dir_close(dir);
+
+ if (!found_theme) {
+ // create default theme file
+ name = g_build_filename(g_get_user_config_dir(), "tint2", "default.tint2rc", NULL);
+ copy_file(g_path_config, name);
+ custom_list_append(name);
+ if (g_default_theme) g_free(g_default_theme);
+ g_default_theme = strdup(name);
+ g_free(name);
+ }
+
+ selectTheme(g_default_theme);
+
+ g_timeout_add(SNAPSHOT_TICK, (GSourceFunc)update_snapshot, NULL);
+}
+
+
+void selectTheme(const gchar *name_theme)
+{
+ 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);