-void prefs_quote_colors_dialog(void)
-{
- if (!quote_color_win)
- prefs_quote_colors_dialog_create();
- gtk_widget_show(quote_color_win);
- manage_window_set_transient(GTK_WINDOW(quote_color_win));
-
- gtk_main();
- gtk_widget_hide(quote_color_win);
-
- textview_update_message_colors();
- main_window_reflect_prefs_all();
-}
-
-static void prefs_quote_colors_dialog_create(void)
-{
- GtkWidget *window;
- GtkWidget *vbox;
- GtkWidget *table;
- GtkWidget *quotelevel1_label;
- GtkWidget *quotelevel2_label;
- GtkWidget *quotelevel3_label;
- GtkWidget *uri_label;
- GtkWidget *signature_label;
- GtkWidget *tgt_folder_label;
- GtkWidget *hbbox;
- GtkWidget *ok_btn;
- GtkWidget *recycle_colors_btn;
- GtkWidget *frame_colors;
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_container_set_border_width(GTK_CONTAINER(window), 2);
- gtk_window_set_title(GTK_WINDOW(window), _("Set message colors"));
- gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
- gtk_window_set_modal(GTK_WINDOW(window), TRUE);
- gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE);
-
- vbox = gtk_vbox_new (FALSE, VSPACING);
- gtk_container_add (GTK_CONTAINER (window), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 8);
- PACK_FRAME(vbox, frame_colors, _("Colors"));
-
- table = gtk_table_new (5, 2, FALSE);
- gtk_container_add (GTK_CONTAINER (frame_colors), table);
- gtk_container_set_border_width (GTK_CONTAINER (table), 8);
- gtk_table_set_row_spacings (GTK_TABLE (table), 2);
- gtk_table_set_col_spacings (GTK_TABLE (table), 5);
-
-
- color_buttons.quote_level1_btn = gtk_button_new();
- gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level1_btn,
- 0, 1, 0, 1, 0, 0, 0, 0);
- gtk_widget_set_size_request (color_buttons.quote_level1_btn, 40, 30);
- gtk_container_set_border_width
- (GTK_CONTAINER (color_buttons.quote_level1_btn), 5);
-
- color_buttons.quote_level2_btn = gtk_button_new();
- gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level2_btn,
- 0, 1, 1, 2, 0, 0, 0, 0);
- gtk_widget_set_size_request (color_buttons.quote_level2_btn, 40, 30);
- gtk_container_set_border_width (GTK_CONTAINER (color_buttons.quote_level2_btn), 5);
-
- color_buttons.quote_level3_btn = gtk_button_new_with_label ("");
- gtk_table_attach (GTK_TABLE (table), color_buttons.quote_level3_btn,
- 0, 1, 2, 3, 0, 0, 0, 0);
- gtk_widget_set_size_request (color_buttons.quote_level3_btn, 40, 30);
- gtk_container_set_border_width
- (GTK_CONTAINER (color_buttons.quote_level3_btn), 5);
-
- color_buttons.uri_btn = gtk_button_new_with_label ("");
- gtk_table_attach (GTK_TABLE (table), color_buttons.uri_btn,
- 0, 1, 3, 4, 0, 0, 0, 0);
- gtk_widget_set_size_request (color_buttons.uri_btn, 40, 30);
- gtk_container_set_border_width (GTK_CONTAINER (color_buttons.uri_btn), 5);
-
- color_buttons.tgt_folder_btn = gtk_button_new_with_label ("");
- gtk_table_attach (GTK_TABLE (table), color_buttons.tgt_folder_btn,
- 0, 1, 4, 5, 0, 0, 0, 0);
- gtk_widget_set_size_request (color_buttons.tgt_folder_btn, 40, 30);
- gtk_container_set_border_width (GTK_CONTAINER (color_buttons.tgt_folder_btn), 5);
-
- color_buttons.signature_btn = gtk_button_new_with_label ("");
- gtk_table_attach (GTK_TABLE (table), color_buttons.signature_btn,
- 0, 1, 5, 6, 0, 0, 0, 0);
- gtk_widget_set_size_request (color_buttons.signature_btn, 40, 30);
- gtk_container_set_border_width (GTK_CONTAINER (color_buttons.signature_btn), 5);
-
- quotelevel1_label = gtk_label_new (_("Quoted Text - First Level"));
- gtk_table_attach (GTK_TABLE (table), quotelevel1_label, 1, 2, 0, 1,
- (GTK_EXPAND | GTK_FILL), 0, 0, 0);
- gtk_label_set_justify (GTK_LABEL (quotelevel1_label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (quotelevel1_label), 0, 0.5);
-
- quotelevel2_label = gtk_label_new (_("Quoted Text - Second Level"));
- gtk_table_attach (GTK_TABLE (table), quotelevel2_label, 1, 2, 1, 2,
- (GTK_EXPAND | GTK_FILL), 0, 0, 0);
- gtk_label_set_justify (GTK_LABEL (quotelevel2_label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (quotelevel2_label), 0, 0.5);
-
- quotelevel3_label = gtk_label_new (_("Quoted Text - Third Level"));
- gtk_table_attach (GTK_TABLE (table), quotelevel3_label, 1, 2, 2, 3,
- (GTK_EXPAND | GTK_FILL), 0, 0, 0);
- gtk_label_set_justify (GTK_LABEL (quotelevel3_label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (quotelevel3_label), 0, 0.5);
-
- uri_label = gtk_label_new (_("URI link"));
- gtk_table_attach (GTK_TABLE (table), uri_label, 1, 2, 3, 4,
- (GTK_EXPAND | GTK_FILL), 0, 0, 0);
- gtk_label_set_justify (GTK_LABEL (uri_label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (uri_label), 0, 0.5);
-
- tgt_folder_label = gtk_label_new (_("Target folder"));
- gtk_table_attach (GTK_TABLE (table), tgt_folder_label, 1, 2, 4, 5,
- (GTK_EXPAND | GTK_FILL), 0, 0, 0);
- gtk_label_set_justify (GTK_LABEL (tgt_folder_label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (tgt_folder_label), 0, 0.5);
-
- signature_label = gtk_label_new (_("Signatures"));
- gtk_table_attach (GTK_TABLE (table), signature_label, 1, 2, 5, 6,
- (GTK_EXPAND | GTK_FILL), 0, 0, 0);
- gtk_label_set_justify (GTK_LABEL (signature_label), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (signature_label), 0, 0.5);
-
- PACK_CHECK_BUTTON (vbox, recycle_colors_btn,
- _("Recycle quote colors"));
-
- gtkut_button_set_create(&hbbox, &ok_btn, _("OK"),
- NULL, NULL, NULL, NULL);
- gtk_box_pack_end(GTK_BOX(vbox), hbbox, FALSE, FALSE, 0);
-
- gtk_widget_grab_default(ok_btn);
- MANAGE_WINDOW_SIGNALS_CONNECT(window);
- g_signal_connect(G_OBJECT(window), "delete_event",
- G_CALLBACK(gtk_main_quit), NULL);
- g_signal_connect(G_OBJECT(window), "key_press_event",
- G_CALLBACK(prefs_quote_colors_key_pressed),
- NULL);
-
- g_signal_connect(G_OBJECT(color_buttons.quote_level1_btn), "clicked",
- G_CALLBACK(quote_color_set_dialog), "LEVEL1");
- g_signal_connect(G_OBJECT(color_buttons.quote_level2_btn), "clicked",
- G_CALLBACK(quote_color_set_dialog), "LEVEL2");
- g_signal_connect(G_OBJECT(color_buttons.quote_level3_btn), "clicked",
- G_CALLBACK(quote_color_set_dialog), "LEVEL3");
- g_signal_connect(G_OBJECT(color_buttons.uri_btn), "clicked",
- G_CALLBACK(quote_color_set_dialog), "URI");
- g_signal_connect(G_OBJECT(color_buttons.tgt_folder_btn), "clicked",
- G_CALLBACK(quote_color_set_dialog), "TGTFLD");
- g_signal_connect(G_OBJECT(color_buttons.signature_btn), "clicked",
- G_CALLBACK(quote_color_set_dialog), "SIGNATURE");
- g_signal_connect(G_OBJECT(recycle_colors_btn), "toggled",
- G_CALLBACK(prefs_recycle_colors_toggled), NULL);
- g_signal_connect(G_OBJECT(ok_btn), "clicked",
- G_CALLBACK(gtk_main_quit), NULL);
-
- /* show message button colors and recycle options */
- set_button_bg_color(color_buttons.quote_level1_btn,
- prefs_common.quote_level1_col);
- set_button_bg_color(color_buttons.quote_level2_btn,
- prefs_common.quote_level2_col);
- set_button_bg_color(color_buttons.quote_level3_btn,
- prefs_common.quote_level3_col);
- set_button_bg_color(color_buttons.uri_btn,
- prefs_common.uri_col);
- set_button_bg_color(color_buttons.tgt_folder_btn,
- prefs_common.tgt_folder_col);
- set_button_bg_color(color_buttons.signature_btn,
- prefs_common.signature_col);
- gtk_toggle_button_set_active((GtkToggleButton *)recycle_colors_btn,
- prefs_common.recycle_quote_colors);
-
- gtk_widget_show_all(vbox);
- quote_color_win = window;
-}
-
-static gboolean prefs_quote_colors_key_pressed(GtkWidget *widget,
- GdkEventKey *event, gpointer data)
-{
- if (event && event->keyval == GDK_Escape)
- gtk_main_quit();
- return FALSE;
-}
-
-static void quote_color_set_dialog(GtkWidget *widget, gpointer data)
-{
- gchar *type = (gchar *)data;
- gchar *title = NULL;
- gdouble color[4] = {0.0, 0.0, 0.0, 0.0};
- gint rgbvalue = 0;
- GtkColorSelectionDialog *dialog;
-
- if(g_strcasecmp(type, "LEVEL1") == 0) {
- title = _("Pick color for quotation level 1");
- rgbvalue = prefs_common.quote_level1_col;
- } else if(g_strcasecmp(type, "LEVEL2") == 0) {
- title = _("Pick color for quotation level 2");
- rgbvalue = prefs_common.quote_level2_col;
- } else if(g_strcasecmp(type, "LEVEL3") == 0) {
- title = _("Pick color for quotation level 3");
- rgbvalue = prefs_common.quote_level3_col;
- } else if(g_strcasecmp(type, "URI") == 0) {
- title = _("Pick color for URI");
- rgbvalue = prefs_common.uri_col;
- } else if(g_strcasecmp(type, "TGTFLD") == 0) {
- title = _("Pick color for target folder");
- rgbvalue = prefs_common.tgt_folder_col;
- } else if(g_strcasecmp(type, "SIGNATURE") == 0) {
- title = _("Pick color for signatures");
- rgbvalue = prefs_common.signature_col;
- } else { /* Should never be called */
- g_warning("Unrecognized datatype '%s' in quote_color_set_dialog\n", type);
- return;
- }
-
- color_dialog = gtk_color_selection_dialog_new(title);
- gtk_window_set_position(GTK_WINDOW(color_dialog), GTK_WIN_POS_CENTER);
- gtk_window_set_modal(GTK_WINDOW(color_dialog), TRUE);
- gtk_window_set_policy(GTK_WINDOW(color_dialog), FALSE, FALSE, FALSE);
- manage_window_set_transient(GTK_WINDOW(color_dialog));
-
- g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->ok_button),
- "clicked", G_CALLBACK(quote_colors_set_dialog_ok), data);
- g_signal_connect(G_OBJECT(GTK_COLOR_SELECTION_DIALOG(color_dialog)->cancel_button),
- "clicked", G_CALLBACK(quote_colors_set_dialog_cancel), data);
- g_signal_connect(G_OBJECT(color_dialog), "key_press_event",
- G_CALLBACK(quote_colors_set_dialog_key_pressed),
- data);
-
- /* preselect the previous color in the color selection dialog */
- color[0] = (gdouble) ((rgbvalue & 0xff0000) >> 16) / 255.0;
- color[1] = (gdouble) ((rgbvalue & 0x00ff00) >> 8) / 255.0;
- color[2] = (gdouble) (rgbvalue & 0x0000ff) / 255.0;
- dialog = GTK_COLOR_SELECTION_DIALOG(color_dialog);
- gtk_color_selection_set_color
- (GTK_COLOR_SELECTION(dialog->colorsel), color);
-
- gtk_widget_show(color_dialog);
-}
-
-static void quote_colors_set_dialog_ok(GtkWidget *widget, gpointer data)
-{
- GtkColorSelection *colorsel = (GtkColorSelection *)
- ((GtkColorSelectionDialog *)color_dialog)->colorsel;
- gdouble color[4];
- gint red, green, blue, rgbvalue;
- gchar *type = (gchar *)data;
-
- gtk_color_selection_get_color(colorsel, color);
-
- red = (gint) (color[0] * 255.0);
- green = (gint) (color[1] * 255.0);
- blue = (gint) (color[2] * 255.0);
- rgbvalue = (gint) ((red * 0x10000) | (green * 0x100) | blue);
-
-#if 0
- fprintf(stderr, "redc = %f, greenc = %f, bluec = %f\n", color[0], color[1], color[2]);
- fprintf(stderr, "red = %d, green = %d, blue = %d\n", red, green, blue);
- fprintf(stderr, "Color is %x\n", rgbvalue);
-#endif
-
- if (g_strcasecmp(type, "LEVEL1") == 0) {
- prefs_common.quote_level1_col = rgbvalue;
- set_button_bg_color(color_buttons.quote_level1_btn, rgbvalue);
- } else if (g_strcasecmp(type, "LEVEL2") == 0) {
- prefs_common.quote_level2_col = rgbvalue;
- set_button_bg_color(color_buttons.quote_level2_btn, rgbvalue);
- } else if (g_strcasecmp(type, "LEVEL3") == 0) {
- prefs_common.quote_level3_col = rgbvalue;
- set_button_bg_color(color_buttons.quote_level3_btn, rgbvalue);
- } else if (g_strcasecmp(type, "URI") == 0) {
- prefs_common.uri_col = rgbvalue;
- set_button_bg_color(color_buttons.uri_btn, rgbvalue);
- } else if (g_strcasecmp(type, "TGTFLD") == 0) {
- prefs_common.tgt_folder_col = rgbvalue;
- set_button_bg_color(color_buttons.tgt_folder_btn, rgbvalue);
- folderview_set_target_folder_color(prefs_common.tgt_folder_col);
- } else if (g_strcasecmp(type, "SIGNATURE") == 0) {
- prefs_common.signature_col = rgbvalue;
- set_button_bg_color(color_buttons.signature_btn, rgbvalue);
- } else
- fprintf( stderr, "Unrecognized datatype '%s' in quote_color_set_dialog_ok\n", type );
-
- gtk_widget_destroy(color_dialog);
-}
-
-static void quote_colors_set_dialog_cancel(GtkWidget *widget, gpointer data)
-{
- gtk_widget_destroy(color_dialog);
-}
-
-static gboolean quote_colors_set_dialog_key_pressed(GtkWidget *widget,
- GdkEventKey *event,
- gpointer data)
-{
- gtk_widget_destroy(color_dialog);
- return FALSE;
-}
-
-static void set_button_bg_color(GtkWidget *widget, gint rgbvalue)
-{
- GtkStyle *newstyle;
- GdkColor color;
-
- gtkut_convert_int_to_gdk_color(rgbvalue, &color);
- newstyle = gtk_style_copy(gtk_widget_get_default_style());
- newstyle->bg[GTK_STATE_NORMAL] = color;
- newstyle->bg[GTK_STATE_PRELIGHT] = color;
- newstyle->bg[GTK_STATE_ACTIVE] = color;
-
- gtk_widget_set_style(GTK_WIDGET(widget), newstyle);
-}
-
-static void prefs_enable_message_color_toggled(void)
-{
- gboolean is_active;
-
- is_active = gtk_toggle_button_get_active
- (GTK_TOGGLE_BUTTON(message.chkbtn_enablecol));
- gtk_widget_set_sensitive(message.button_edit_col, is_active);
- prefs_common.enable_color = is_active;
-}
-
-static void prefs_recycle_colors_toggled(GtkWidget *widget)
-{
- gboolean is_active;
-
- is_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
- prefs_common.recycle_quote_colors = is_active;
-}
-