2012-09-16 [mones] 3.8.1cvs60
[claws.git] / src / prefs_template.c
index a5f52a27fc0399a4f58573cc822ded4735f995d1..4b731a9d3e8aa0b5f29fdba09505346d19f3893a 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Claws Mail templates subsystem 
  * Copyright (C) 2001 Alexander Barinov
- * Copyright (C) 2001-2011 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 2001-2012 Hiroyuki Yamamoto and the Claws Mail team
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -43,6 +43,7 @@
 #include "manual.h"
 #include "gtkutils.h"
 #include "menu.h"
+#include "account.h"
 
 enum {
        TEMPL_TEXT,
@@ -733,11 +734,8 @@ static gboolean prefs_template_list_view_set_row(gint row)
        gchar *value;
        GtkTextBuffer *buffer;
        GtkTextIter start, end;
-       GtkTreeModel *model;
        gint line;
 
-       model = gtk_tree_view_get_model(GTK_TREE_VIEW(templates.list_view));
-
        buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(templates.text_value));
        gtk_text_buffer_get_start_iter(buffer, &start);
        gtk_text_buffer_get_iter_at_offset(buffer, &end, -1);
@@ -894,19 +892,17 @@ static void prefs_template_delete_cb(gpointer action, gpointer data)
                return;
 
        gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
+       prefs_template_reset_dialog();
        modified_list = TRUE;   
 }
 
 static void prefs_template_delete_all_cb(gpointer action, gpointer data)
 {
-       GtkListStore *list_store;
-
        if (alertpanel(_("Delete all templates"),
                          _("Do you really want to delete all the templates?"),
                          GTK_STOCK_CANCEL, "+"GTK_STOCK_DELETE, NULL) == G_ALERTDEFAULT)
           return;
 
-       list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(templates.list_view)));
        prefs_template_clear_list();
        modified = FALSE;
 
@@ -1101,6 +1097,21 @@ static GtkActionEntry prefs_template_popup_entries[] =
        {"PrefsTemplatePopup/Duplicate",        NULL, N_("D_uplicate"), NULL, NULL, G_CALLBACK(prefs_template_duplicate_cb) },
 };
 
+static void prefs_template_row_selected(GtkTreeSelection *selection,
+                                       GtkTreeView *list_view)
+{
+       GtkTreePath *path;
+       GtkTreeIter iter;
+       GtkTreeModel *model;
+       
+       if (!gtk_tree_selection_get_selected(selection, &model, &iter))
+               return;
+       
+       path = gtk_tree_model_get_path(model, &iter);
+       prefs_template_select_row(list_view, path);
+       gtk_tree_path_free(path);
+}
+
 static gint prefs_template_list_btn_pressed(GtkWidget *widget, GdkEventButton *event,
                                   GtkTreeView *list_view)
 {
@@ -1194,6 +1205,8 @@ static GtkWidget *prefs_template_list_view_create(void)
 
        selector = gtk_tree_view_get_selection(list_view);
        gtk_tree_selection_set_mode(selector, GTK_SELECTION_BROWSE);
+       g_signal_connect(G_OBJECT(selector), "changed",
+                        G_CALLBACK(prefs_template_row_selected), list_view);
 
        /* create the columns */
        prefs_template_create_list_view_columns(GTK_WIDGET(list_view));