diff options
Diffstat (limited to 'composer/e-composer-actions.c')
-rw-r--r-- | composer/e-composer-actions.c | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/composer/e-composer-actions.c b/composer/e-composer-actions.c index 82315c6b75..047bf735bd 100644 --- a/composer/e-composer-actions.c +++ b/composer/e-composer-actions.c @@ -22,9 +22,64 @@ #include "e-composer-actions.h" #include "e-composer-private.h" +#include <e-util/e-util.h> + #include <errno.h> #include <fcntl.h> +/* because 'composer' is compiled before 'mail' folder */ +static gboolean +composer_copy_em_utils_prompt_user (GtkWindow *parent, + const gchar *promptkey, + const gchar *tag, + ...) +{ + GtkWidget *dialog; + GtkWidget *check = NULL; + GtkWidget *container; + va_list ap; + gint button; + GSettings *settings; + EAlert *alert = NULL; + + settings = g_settings_new ("org.gnome.evolution.mail"); + + if (promptkey && !g_settings_get_boolean (settings, promptkey)) { + g_object_unref (settings); + return TRUE; + } + + va_start (ap, tag); + alert = e_alert_new_valist (tag, ap); + va_end (ap); + + dialog = e_alert_dialog_new (parent, alert); + g_object_unref (alert); + + container = e_alert_dialog_get_content_area (E_ALERT_DIALOG (dialog)); + + if (promptkey) { + check = gtk_check_button_new_with_mnemonic ( + _("_Do not show this message again")); + gtk_box_pack_start ( + GTK_BOX (container), check, FALSE, FALSE, 0); + gtk_widget_show (check); + } + + button = gtk_dialog_run (GTK_DIALOG (dialog)); + if (promptkey) + g_settings_set_boolean ( + settings, promptkey, + !gtk_toggle_button_get_active ( + GTK_TOGGLE_BUTTON (check))); + + gtk_widget_destroy (dialog); + + g_object_unref (settings); + + return button == GTK_RESPONSE_YES; +} + static void action_attach_cb (GtkAction *action, EMsgComposer *composer) @@ -261,6 +316,23 @@ action_smime_sign_cb (GtkToggleAction *action, gtkhtml_editor_set_changed (editor, TRUE); } +static gboolean +composer_actions_accel_activate_cb (GtkAccelGroup *accel_group, + GObject *acceleratable, + guint keyval, + GdkModifierType modifier, + gpointer user_data) +{ + EMsgComposer *composer = user_data; + + if (keyval == GDK_KEY_Return && (modifier & GDK_MODIFIER_MASK) == GDK_CONTROL_MASK && + !composer_copy_em_utils_prompt_user (GTK_WINDOW (composer), "prompt-on-accel-send", + "mail-composer:prompt-accel-send", NULL)) { + return TRUE; + } + return FALSE; +} + static GtkActionEntry entries[] = { { "attach", @@ -440,6 +512,7 @@ void e_composer_actions_init (EMsgComposer *composer) { GtkActionGroup *action_group; + GtkAccelGroup *accel_group; GtkUIManager *ui_manager; GtkhtmlEditor *editor; EWebViewGtkHTML *web_view; @@ -520,4 +593,8 @@ e_composer_actions_init (EMsgComposer *composer) gtk_action_set_visible (ACTION (SMIME_ENCRYPT), visible); gtk_action_set_visible (ACTION (SMIME_SIGN), visible); + + accel_group = gtk_ui_manager_get_accel_group (ui_manager); + g_signal_connect (accel_group, "accel-activate", + G_CALLBACK (composer_actions_accel_activate_cb), composer); } |