2011-04-24 [paul] 3.7.9cvs14
[claws.git] / src / gtk / foldersort.c
index 53866ffe80ac9b1c266a9b88ba12a7c17b926b97..ab2e4b1b5ee4fbbdd493d70cb89d8f6c60489137 100644 (file)
@@ -1,10 +1,10 @@
 /*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Sylpheed-Claws Team
+ * Claws-Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 2004-2011 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
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * 
  */
 
 #include "defs.h"
 
 #include <glib.h>
 #include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
 
 #include "foldersort.h"
 #include "inc.h"
@@ -52,7 +53,7 @@ static void ok_clicked(GtkWidget *widget, FolderSortDialog *dialog)
        int i;
 
        for (i = 0; i < dialog->rows; i++) {
-               folder = gtk_clist_get_row_data(GTK_CLIST(dialog->folderlist), i);
+               folder = gtk_cmclist_get_row_data(GTK_CMCLIST(dialog->folderlist), i);
 
                folder_set_sort(folder, dialog->rows - i);
        }
@@ -80,29 +81,29 @@ static void set_selected(FolderSortDialog *dialog, gint row)
 
 static void moveup_clicked(GtkWidget *widget, FolderSortDialog *dialog)
 {
-       g_return_if_fail(dialog->selected > 0);
+       cm_return_if_fail(dialog->selected > 0);
 
-       gtk_clist_swap_rows(GTK_CLIST(dialog->folderlist), dialog->selected, dialog->selected - 1);
+       gtk_cmclist_swap_rows(GTK_CMCLIST(dialog->folderlist), dialog->selected, dialog->selected - 1);
 }
 
 static void movedown_clicked(GtkWidget *widget, FolderSortDialog *dialog)
 {
-       g_return_if_fail(dialog->selected < (dialog->rows - 1));
+       cm_return_if_fail(dialog->selected < (dialog->rows - 1));
 
-       gtk_clist_swap_rows(GTK_CLIST(dialog->folderlist), dialog->selected, dialog->selected + 1);
+       gtk_cmclist_swap_rows(GTK_CMCLIST(dialog->folderlist), dialog->selected, dialog->selected + 1);
 }
 
-static void row_selected(GtkCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
+static void row_selected(GtkCMCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
 {
        set_selected(dialog, row);
 }
 
-static void row_unselected(GtkCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
+static void row_unselected(GtkCMCList *clist, gint row, gint column, GdkEventButton *event, FolderSortDialog *dialog)
 {
        set_selected(dialog, -1);
 }
 
-static void row_moved(GtkCList *clist, gint srcpos, gint destpos, FolderSortDialog *dialog)
+static void row_moved(GtkCMCList *clist, gint srcpos, gint destpos, FolderSortDialog *dialog)
 {
        if (dialog->selected == -1)
                return;
@@ -114,6 +115,19 @@ static void row_moved(GtkCList *clist, gint srcpos, gint destpos, FolderSortDial
                set_selected(dialog, dialog->selected + 1);
 }
 
+static gint delete_event(GtkWidget *widget, GdkEventAny *event, FolderSortDialog *dialog)
+{
+       destroy_dialog(dialog);
+       return TRUE;
+}
+
+static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, FolderSortDialog *dialog)
+{
+       if (event && event->keyval == GDK_Escape)
+               destroy_dialog(dialog);
+       return FALSE;
+}
+
 void foldersort_open()
 {
        FolderSortDialog *dialog = g_new0(FolderSortDialog, 1);
@@ -135,13 +149,17 @@ void foldersort_open()
        GtkWidget *folderlist;
        GtkWidget *label2;
 
-       window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "foldersort");
        g_object_set_data(G_OBJECT(window), "window", window);
        gtk_container_set_border_width(GTK_CONTAINER(window), 8);
-       gtk_window_set_title(GTK_WINDOW(window),
-                            _("Set folder order"));
+       gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
+       gtk_window_set_title(GTK_WINDOW(window), _("Set mailbox order"));
        gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
+       g_signal_connect(G_OBJECT(window), "delete_event",
+                        G_CALLBACK(delete_event), dialog);
+       g_signal_connect(G_OBJECT(window), "key_press_event",
+                        G_CALLBACK(key_pressed), dialog);
 
        vbox = gtk_vbox_new(FALSE, 6);
        gtk_widget_show(vbox);
@@ -169,8 +187,10 @@ void foldersort_open()
        gtk_box_pack_start(GTK_BOX(vbox1), hbox, FALSE, FALSE, 0);
 
        label1 = gtk_label_new(_
-               ("Move folders up or down to change the sort order in the folder list."));
+               ("Move mailboxes up or down to change the sort order "
+                "in the Folder list."));
        gtk_widget_show(label1);
+       gtk_widget_set_size_request(GTK_WIDGET(label1), 392, -1);
        gtk_label_set_line_wrap(GTK_LABEL(label1), TRUE);
        gtk_box_pack_start(GTK_BOX(hbox), label1, FALSE, FALSE, 0);
 
@@ -187,15 +207,15 @@ void foldersort_open()
                                       GTK_POLICY_AUTOMATIC,
                                       GTK_POLICY_AUTOMATIC);
 
-       folderlist = gtk_clist_new(1);
+       folderlist = gtk_cmclist_new(1);
        gtk_widget_show(folderlist);
        gtk_container_add(GTK_CONTAINER(scrolledwindow1), folderlist);
-       gtk_clist_set_column_width(GTK_CLIST(folderlist), 0, 80);
-       gtk_clist_column_titles_show(GTK_CLIST(folderlist));
+       gtk_cmclist_set_column_width(GTK_CMCLIST(folderlist), 0, 80);
+       gtk_cmclist_column_titles_show(GTK_CMCLIST(folderlist));
 
-       label2 = gtk_label_new(_("Folders"));
+       label2 = gtk_label_new(_("Mailboxes"));
        gtk_widget_show(label2);
-       gtk_clist_set_column_widget(GTK_CLIST(folderlist), 0, label2);
+       gtk_cmclist_set_column_widget(GTK_CMCLIST(folderlist), 0, label2);
        gtk_label_set_justify(GTK_LABEL(label2), GTK_JUSTIFY_LEFT);
        gtk_misc_set_alignment(GTK_MISC(label2), 0, 0.5);
 
@@ -219,7 +239,7 @@ void foldersort_open()
        gtk_widget_show(window);
        gtk_widget_set_sensitive(moveup_btn, FALSE);
        gtk_widget_set_sensitive(movedown_btn, FALSE);
-       gtk_clist_set_reorderable(GTK_CLIST(folderlist), TRUE);
+       gtk_cmclist_set_reorderable(GTK_CMCLIST(folderlist), TRUE);
 
        g_signal_connect(G_OBJECT(moveup_btn), "clicked",
                          G_CALLBACK(moveup_clicked), dialog);
@@ -241,8 +261,8 @@ void foldersort_open()
                gchar *text[1];
 
                text[0] = folder->name;
-               row = gtk_clist_append(GTK_CLIST(folderlist), text);
-               gtk_clist_set_row_data(GTK_CLIST(folderlist), row, folder);
+               row = gtk_cmclist_append(GTK_CMCLIST(folderlist), text);
+               gtk_cmclist_set_row_data(GTK_CMCLIST(folderlist), row, folder);
                dialog->rows++;
        }