2011-10-07 [colin] 3.7.10cvs21
[claws.git] / src / addrgather.c
index 6fc81ff60af06c2cf9c559538aa53a80ca98d875..5bdaaa8b6495bf83575747095301a56d5748aecd 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2002-2009 Match Grun and the Claws Mail team
+ * Copyright (C) 2002-2011 Match Grun 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
@@ -42,6 +42,7 @@
 #include "manage_window.h"
 #include "folder.h"
 #include "utils.h"
+#include "prefs_common.h"
 
 #include "addrharvest.h"
 #include "addrindex.h"
@@ -120,13 +121,22 @@ static gint addrgather_dlg_delete_event(
 static gboolean addrgather_dlg_key_pressed(
        GtkWidget *widget, GdkEventKey *event, gpointer data )
 {
-       if( event && event->keyval == GDK_Escape ) {
+       if( event && event->keyval == GDK_KEY_Escape ) {
                addrgather_dlg.cancelled = TRUE;
                gtk_main_quit();
        }
        return FALSE;
 }
 
+static void addrgather_size_allocate(
+       GtkWidget *widget, GtkAllocation *allocation )
+{
+       cm_return_if_fail( allocation != NULL );
+       
+       prefs_common.addrgather_width   = allocation->width;
+       prefs_common.addrgather_height  = allocation->height;
+}
+
 #define FMT_BUFSIZE 32
 
 static gboolean addrgather_dlg_harvest() {
@@ -261,7 +271,7 @@ static void addrgather_page_fields(gint pageNum, gchar *pageLbl)
        GtkWidget *frameHeader;
        GtkWidget *checkHeader[NUM_FIELDS];
        GtkWidget *spinbtnFolder;
-       GtkObject *adjFolder;
+       GtkAdjustment *adjFolder;
        GtkWidget *checkRecurse;
        gint top;
        gint i;
@@ -338,7 +348,8 @@ static void addrgather_page_fields(gint pageNum, gchar *pageLbl)
        gtk_container_set_border_width(GTK_CONTAINER(vboxf), 8);
 
        for (i = 0; i < NUM_FIELDS; i++) {
-               PACK_CHECK_BUTTON(vboxf, checkHeader[i], _harv_headerNames_[i]);
+               PACK_CHECK_BUTTON(vboxf, checkHeader[i],
+                       prefs_common_translated_header_name(_harv_headerNames_[i]));
                addrgather_dlg.checkHeader[i] = checkHeader[i];
        }
 
@@ -397,7 +408,7 @@ static void addrgather_page_finish( gint pageNum, gchar *pageLbl ) {
                        GTK_CMCLIST(clistCount), FIELD_COL_COUNT, FIELDS_COL_WIDTH_COUNT );
 
        for( i = 0; i < FIELDS_N_COLS; i++ )
-               GTK_WIDGET_UNSET_FLAGS(GTK_CMCLIST(clistCount)->column[i].button, GTK_CAN_FOCUS);
+               gtkut_widget_set_can_focus(GTK_CMCLIST(clistCount)->column[i].button, FALSE);
 
        addrgather_dlg.clistCount = clistCount;
 }
@@ -417,18 +428,19 @@ static void addrgather_dlg_create(void)
        GtkWidget *vbox;
        GtkWidget *hbbox;
        GtkWidget *hsbox;
-
+       static GdkGeometry geometry;
+       
        window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "addrgather");
-       gtk_widget_set_size_request(window, 380, -1);
        gtk_container_set_border_width(GTK_CONTAINER(window), 4);
        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
        gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
-       gtk_window_set_modal(GTK_WINDOW(window), TRUE);
        
        g_signal_connect(G_OBJECT(window), "delete_event",
                         G_CALLBACK(addrgather_dlg_delete_event), NULL);
        g_signal_connect(G_OBJECT(window), "key_press_event",
                         G_CALLBACK(addrgather_dlg_key_pressed), NULL);
+       g_signal_connect(G_OBJECT(window), "size_allocate",
+                        G_CALLBACK(addrgather_size_allocate), NULL);
 
        vbox = gtk_vbox_new(FALSE, 6);
        gtk_container_add(GTK_CONTAINER(window), vbox);
@@ -458,7 +470,15 @@ static void addrgather_dlg_create(void)
        g_signal_connect(G_OBJECT(btnCancel), "clicked",
                         G_CALLBACK(addrgather_dlg_cancel), NULL);
 
-       gtk_widget_show_all(vbox);
+       if (!geometry.min_width) {
+               geometry.min_width = 450;
+               geometry.min_height = -1;
+       }
+
+       gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL, &geometry,
+                                     GDK_HINT_MIN_SIZE);
+       gtk_window_set_default_size(GTK_WINDOW(window), prefs_common.addrgather_width,
+                                   prefs_common.addrgather_height);
 
        addrgather_dlg.window     = window;
        addrgather_dlg.notebook   = notebook;
@@ -513,6 +533,7 @@ AddressBookFile *addrgather_dlg_execute(FolderItem *folderItem, AddressIndex *ad
        }
 
        gtk_widget_set_sensitive(addrgather_dlg.btnOk, TRUE);
+       gtk_widget_set_sensitive(addrgather_dlg.btnCancel, TRUE);
        gtk_widget_grab_default(addrgather_dlg.btnOk);
 
        /* Apply window title */
@@ -529,7 +550,7 @@ AddressBookFile *addrgather_dlg_execute(FolderItem *folderItem, AddressIndex *ad
 
        addrgather_dlg_status_show("");
        gtk_widget_show(addrgather_dlg.window);
-
+       gtk_window_set_modal(GTK_WINDOW(addrgather_dlg.window), TRUE);
        gtk_widget_grab_focus(addrgather_dlg.entryBook);
        manage_window_set_transient(GTK_WINDOW(addrgather_dlg.window));
        gtk_main();
@@ -537,6 +558,7 @@ AddressBookFile *addrgather_dlg_execute(FolderItem *folderItem, AddressIndex *ad
        g_free(addrgather_dlg.folderPath);
        addrgather_dlg.folderPath = NULL;
        gtk_widget_hide(addrgather_dlg.window);
+       gtk_window_set_modal(GTK_WINDOW(addrgather_dlg.window), FALSE);
        _harv_addressIndex_ = NULL;
 
        if (addrgather_dlg.cancelled == TRUE)