- if (gtk_dialog_run (GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
- GSList *l, *list = gtk_file_chooser_get_filenames(chooser);
-
- gchar *file, *pt1, *name, *path;
- for (l = list; l ; l = l->next) {
- file = (char *)l->data;
- pt1 = strrchr (file, '/');
- if (pt1) {
- pt1++;
- if (*pt1) {
- name = g_strdup(pt1);
- path = g_build_filename (g_get_user_config_dir(), "tint2", name, NULL);
- copy_file(file, path);
- custom_list_append(path);
- g_free(path);
- g_free(name);
- }
- }
+ if (gtk_dialog_run (GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) {
+ gtk_widget_destroy(dialog);
+ return;
+ }
+
+ GtkTreeIter iter;
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(g_theme_view));
+ GSList *l, *list = gtk_file_chooser_get_filenames(chooser);
+ gchar *file, *pt1, *name, *path, *name_first=NULL;
+ for (l = list; l ; l = l->next) {
+ file = (char *)l->data;
+ pt1 = strrchr(file, '/');
+ if (pt1 == NULL) continue;
+ pt1++;
+ if (*pt1 == 0) continue;
+
+ name = g_strdup(pt1);
+ path = g_build_filename (g_get_user_config_dir(), "tint2", name, NULL);
+
+ // check existing
+ if (searchTheme(path, model, &iter)) {
+ gchar *message;
+ message = g_strdup_printf(_("Couldn't add duplicate theme\n\'%s\'."), pt1);
+
+ GtkWidget *w = gtk_message_dialog_new(GTK_WINDOW(g_window), 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, message, NULL);
+ g_signal_connect_swapped(w, "response", G_CALLBACK(gtk_widget_destroy), w);
+ gtk_widget_show(w);
+ g_free(message);
+ continue;