#include "manage_window.h"
#include "utils.h"
#include "addr_compl.h"
+#include "prefs_common.h"
#include "prefs_scoring.h"
#include "gtkutils.h"
#include "filtering.h"
#include "folder_item_prefs.h"
+#include "gtk/colorsel.h"
+
+#if USE_ASPELL
+#include "gtkaspell.h"
+#endif
+
+#define ASSIGN_STRING(string, value) \
+ { \
+ g_free(string); \
+ string = (value); \
+ }
struct FolderItemGeneralPage
{
GtkWidget *entry_simplify_subject;
GtkWidget *checkbtn_folder_chmod;
GtkWidget *entry_folder_chmod;
- GtkWidget *folder_color;
GtkWidget *folder_color_btn;
- GtkWidget *color_dialog;
+ gint folder_color;
};
struct FolderItemComposePage
GtkWidget *entry_default_reply_to;
GtkWidget *checkbtn_enable_default_account;
GtkWidget *optmenu_default_account;
+#if USE_ASPELL
+ GtkWidget *checkbtn_enable_default_dictionary;
+ GtkWidget *optmenu_default_dictionary;
+#endif
};
gint prefs_folder_item_chmod_mode (gchar *folder_chmod);
-static void set_button_color(guint rgbvalue, GtkWidget *button);
static void folder_color_set_dialog(GtkWidget *widget, gpointer data);
-static void folder_color_set_dialog_ok(GtkWidget *widget, gpointer data);
-static void folder_color_set_dialog_cancel(GtkWidget *widget, gpointer data);
-static void folder_color_set_dialog_key_pressed(GtkWidget *widget,
- GdkEventKey *event,
- gpointer data);
#define SAFE_STRING(str) \
(str) ? (str) : ""
GtkWidget *entry_folder_chmod;
GtkWidget *folder_color;
GtkWidget *folder_color_btn;
- GtkWidget *menu;
- GtkWidget *menuitem;
- gint account_index, index;
page->item = item;
gtk_table_attach_defaults(GTK_TABLE(table), folder_color, 0, 1,
rowcount, rowcount + 1);
- hbox = gtk_hbox_new (FALSE, 0);
- gtk_widget_show (hbox);
+ hbox = gtk_hbox_new(FALSE, 0);
+ gtk_widget_show(hbox);
gtk_table_attach_defaults(GTK_TABLE(table), hbox, 1, 2,
rowcount, rowcount + 1);
folder_color_btn = gtk_button_new_with_label("");
- gtk_widget_show (hbox);
- gtk_widget_set_usize(folder_color_btn, 36, 26);
- gtk_box_pack_start (GTK_BOX (hbox), folder_color_btn, FALSE, FALSE, 0);
+ gtk_widget_set_size_request(folder_color_btn, 36, 26);
+ gtk_box_pack_start (GTK_BOX(hbox), folder_color_btn, FALSE, FALSE, 0);
- page->item->prefs->color = item->prefs->color;
+ page->folder_color = item->prefs->color;
- gtk_signal_connect(GTK_OBJECT(folder_color_btn), "clicked",
- GTK_SIGNAL_FUNC(folder_color_set_dialog),
- page);
+ g_signal_connect(G_OBJECT(folder_color_btn), "clicked",
+ G_CALLBACK(folder_color_set_dialog),
+ page);
- set_button_color(item->prefs->color, folder_color_btn);
+ gtkut_set_widget_bgcolor_rgb(folder_color_btn, item->prefs->color);
rowcount++;
page->entry_simplify_subject = entry_simplify_subject;
page->checkbtn_folder_chmod = checkbtn_folder_chmod;
page->entry_folder_chmod = entry_folder_chmod;
- page->folder_color = folder_color;
page->folder_color_btn = folder_color_btn;
page->page.widget = table;
void prefs_folder_item_general_destroy_widget_func(PrefsPage *_page)
{
- struct FolderItemGeneralPage *page = (struct FolderItemGeneralPage *) _page;
+ /* struct FolderItemGeneralPage *page = (struct FolderItemGeneralPage *) _page; */
}
void prefs_folder_item_general_save_func(PrefsPage *_page)
gchar *buf;
struct FolderItemGeneralPage *page = (struct FolderItemGeneralPage *) _page;
FolderItemPrefs *prefs = page->item->prefs;
- GtkWidget *menu;
- GtkWidget *menuitem;
gboolean old_simplify_val;
gchar *old_simplify_str;
g_return_if_fail(prefs != NULL);
- old_simplify_val = prefs->enable_simplify_subject;
- old_simplify_str = prefs->simplify_subject_regexp;
-
prefs->enable_simplify_subject =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_simplify_subject));
- prefs->simplify_subject_regexp =
- gtk_editable_get_chars(GTK_EDITABLE(page->entry_simplify_subject), 0, -1);
+ ASSIGN_STRING(prefs->simplify_subject_regexp,
+ gtk_editable_get_chars(GTK_EDITABLE(page->entry_simplify_subject), 0, -1));
/*
if (page->item == page->folderview->summaryview->folder_item &&
folderview_select(page->folderview, page->item);
}
*/
- if (old_simplify_str) g_free(old_simplify_str);
-
prefs->enable_folder_chmod =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_folder_chmod));
buf = gtk_editable_get_chars(GTK_EDITABLE(page->entry_folder_chmod), 0, -1);
prefs->folder_chmod = prefs_folder_item_chmod_mode(buf);
g_free(buf);
- prefs->color = page->item->prefs->color;
+ prefs->color = page->folder_color;
/* update folder view */
if (prefs->color > 0)
folder_item_update(page->item, F_ITEM_UPDATE_MSGCNT);
GtkWidget *optmenu_default_account;
GtkWidget *optmenu_default_account_menu;
GtkWidget *optmenu_default_account_menuitem;
+#if USE_ASPELL
+ GtkWidget *checkbtn_enable_default_dictionary;
+ GtkWidget *optmenu_default_dictionary;
+ GtkWidget *optmenu_default_dictionary_menu;
+ GtkWidget *opemenu_default_dictionary_menuitem;
+#endif
GList *cur_ac;
GList *account_list;
+#if USE_ASPELL
+ gchar *dictionary;
+#endif
PrefsAccount *ac_prefs;
GtkOptionMenu *optmenu;
GtkWidget *menu;
page->item = item;
/* Table */
- table = gtk_table_new(5, 2, FALSE);
+#if USE_ASPELL
+# define TABLEHEIGHT 6
+#else
+# define TABLEHEIGHT 5
+#endif
+ table = gtk_table_new(TABLEHEIGHT, 2, FALSE);
gtk_widget_show(table);
gtk_table_set_row_spacings(GTK_TABLE(table), -1);
rowcount = 0;
index++;
}
- page->item->prefs->default_account = item->prefs->default_account;
-
optmenu = GTK_OPTION_MENU(optmenu_default_account);
gtk_option_menu_set_menu(optmenu, optmenu_default_account_menu);
rowcount++;
+#if USE_ASPELL
+ /* Default dictionary */
+ checkbtn_enable_default_dictionary = gtk_check_button_new_with_label(_("Default dictionary: "));
+ gtk_widget_show(checkbtn_enable_default_dictionary);
+ gtk_table_attach(GTK_TABLE(table), checkbtn_enable_default_dictionary, 0, 1,
+ rowcount, rowcount + 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 0, 0);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_enable_default_dictionary),
+ item->prefs->enable_default_dictionary);
+
+ optmenu_default_dictionary = gtk_option_menu_new();
+ gtk_widget_show(optmenu_default_dictionary);
+ gtk_table_attach_defaults(GTK_TABLE(table), optmenu_default_dictionary, 1, 2,
+ rowcount, rowcount + 1);
+
+ gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_default_dictionary),
+ gtkaspell_dictionary_option_menu_new(
+ prefs_common.aspell_path));
+
+ dictionary = item->prefs->default_dictionary;
+
+ optmenu = GTK_OPTION_MENU(optmenu_default_dictionary);
+
+ menu = gtk_option_menu_get_menu(optmenu);
+ if (dictionary)
+ gtkaspell_set_dictionary_menu_active_item(optmenu_default_dictionary, dictionary);
+ menuitem = gtk_menu_get_active(GTK_MENU(menu));
+ gtk_menu_item_activate(GTK_MENU_ITEM(menuitem));
+
+ SET_TOGGLE_SENSITIVITY(checkbtn_enable_default_dictionary, optmenu_default_dictionary);
+
+ rowcount++;
+#endif
+
page->window = GTK_WIDGET(window);
page->table = table;
page->checkbtn_request_return_receipt = checkbtn_request_return_receipt;
page->entry_default_reply_to = entry_default_reply_to;
page->checkbtn_enable_default_account = checkbtn_enable_default_account;
page->optmenu_default_account = optmenu_default_account;
+#ifdef USE_ASPELL
+ page->checkbtn_enable_default_dictionary = checkbtn_enable_default_dictionary;
+ page->optmenu_default_dictionary = optmenu_default_dictionary;
+#endif
address_completion_start(page->window);
void prefs_folder_item_compose_save_func(PrefsPage *_page)
{
- gchar *buf;
struct FolderItemComposePage *page = (struct FolderItemComposePage *) _page;
FolderItemPrefs *prefs = page->item->prefs;
GtkWidget *menu;
prefs->enable_default_to =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_default_to));
- g_free(prefs->default_to);
- prefs->default_to =
- gtk_editable_get_chars(GTK_EDITABLE(page->entry_default_to), 0, -1);
+ ASSIGN_STRING(prefs->default_to,
+ gtk_editable_get_chars(GTK_EDITABLE(page->entry_default_to), 0, -1));
prefs->enable_default_reply_to =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_default_reply_to));
- g_free(prefs->default_reply_to);
- prefs->default_reply_to =
- gtk_editable_get_chars(GTK_EDITABLE(page->entry_default_reply_to), 0, -1);
+ ASSIGN_STRING(prefs->default_reply_to,
+ gtk_editable_get_chars(GTK_EDITABLE(page->entry_default_reply_to), 0, -1));
prefs->enable_default_account =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_enable_default_account));
menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_default_account));
menuitem = gtk_menu_get_active(GTK_MENU(menu));
- prefs->default_account = GPOINTER_TO_INT(gtk_object_get_user_data(GTK_OBJECT(menuitem)));
+ prefs->default_account = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID));
+
+#if USE_ASPELL
+ prefs->enable_default_dictionary =
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_enable_default_dictionary));
+ menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(page->optmenu_default_dictionary));
+ ASSIGN_STRING(prefs->default_dictionary,
+ gtkaspell_get_dictionary_menu_active_item(menu));
+#endif
folder_item_prefs_save_config(page->item);
}
return newmode;
}
-static void set_button_color(guint rgbvalue, GtkWidget *button)
-{
- GtkStyle *newstyle;
- GdkColor gdk_color;
-
- gtkut_convert_int_to_gdk_color(rgbvalue, &gdk_color);
- newstyle = gtk_style_copy(gtk_widget_get_default_style());
- newstyle->bg[GTK_STATE_NORMAL] = gdk_color;
- newstyle->bg[GTK_STATE_PRELIGHT] = gdk_color;
- newstyle->bg[GTK_STATE_ACTIVE] = gdk_color;
- gtk_widget_set_style(GTK_WIDGET(button), newstyle);
-}
-
static void folder_color_set_dialog(GtkWidget *widget, gpointer data)
{
struct FolderItemGeneralPage *page = (struct FolderItemGeneralPage *) data;
- GtkColorSelectionDialog *dialog;
- gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
- guint rgbcolor;
-
- page->color_dialog = gtk_color_selection_dialog_new(_("Pick color for folder"));
- gtk_window_set_position(GTK_WINDOW(page->color_dialog), GTK_WIN_POS_CENTER);
- gtk_window_set_modal(GTK_WINDOW(page->color_dialog), TRUE);
- gtk_window_set_policy(GTK_WINDOW(page->color_dialog), FALSE, FALSE, FALSE);
- manage_window_set_transient(GTK_WINDOW(page->color_dialog));
-
- gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(page->color_dialog)->ok_button),
- "clicked", GTK_SIGNAL_FUNC(folder_color_set_dialog_ok), data);
- gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(page->color_dialog)->cancel_button),
- "clicked", GTK_SIGNAL_FUNC(folder_color_set_dialog_cancel), data);
- gtk_signal_connect(GTK_OBJECT(page->color_dialog), "key_press_event",
- GTK_SIGNAL_FUNC(folder_color_set_dialog_key_pressed),
- data);
-
- rgbcolor = page->item->prefs->color;
- color[0] = (gdouble) ((rgbcolor & 0xff0000) >> 16) / 255.0;
- color[1] = (gdouble) ((rgbcolor & 0x00ff00) >> 8) / 255.0;
- color[2] = (gdouble) (rgbcolor & 0x0000ff) / 255.0;
-
- dialog = GTK_COLOR_SELECTION_DIALOG(page->color_dialog);
- gtk_color_selection_set_color(GTK_COLOR_SELECTION(dialog->colorsel), color);
-
- gtk_widget_show(page->color_dialog);
-}
-
-static void folder_color_set_dialog_ok(GtkWidget *widget, gpointer data)
-{
- struct FolderItemGeneralPage *page = (struct FolderItemGeneralPage *) data;
- GtkColorSelection *colorsel = (GtkColorSelection *)
- ((GtkColorSelectionDialog *) page->color_dialog)->colorsel;
- gdouble color[4];
- guint red, green, blue, rgbvalue;
-
- gtk_color_selection_get_color(colorsel, color);
-
- red = (guint) (color[0] * 255.0);
- green = (guint) (color[1] * 255.0);
- blue = (guint) (color[2] * 255.0);
- rgbvalue = (guint) ((red * 0x10000) | (green * 0x100) | blue);
-
- page->item->prefs->color = rgbvalue;
- set_button_color(rgbvalue, page->folder_color_btn);
-
- gtk_widget_destroy(page->color_dialog);
-}
+ gint rgbcolor;
-static void folder_color_set_dialog_cancel(GtkWidget *widget, gpointer data)
-{
- struct FolderItemGeneralPage *page = (struct FolderItemGeneralPage *) data;
- gtk_widget_destroy(page->color_dialog);
-}
-
-static void folder_color_set_dialog_key_pressed(GtkWidget *widget,
- GdkEventKey *event,
- gpointer data)
-{
- struct FolderItemGeneralPage *page = (struct FolderItemGeneralPage *) data;
- gtk_widget_destroy(page->color_dialog);
+ rgbcolor = colorsel_select_color_rgb(_("Pick color for folder"),
+ page->folder_color);
+ gtkut_set_widget_bgcolor_rgb(page->folder_color_btn, rgbcolor);
+ page->folder_color = rgbcolor;
}
struct FolderItemGeneralPage folder_item_general_page;