Fix wrong 'attach_output' in description of symbols (templates), it's
[claws.git] / src / quote_fmt.c
index ef6fd8431480b23f3e30e2e40e1235266ea4e67f..7c3f41522e71be43d32e8d24cb431c5e2c616be5 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2009 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2012 Hiroyuki Yamamoto 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
@@ -19,6 +19,7 @@
 
 #ifdef HAVE_CONFIG_H
 #  include "config.h"
+#include "claws-features.h"
 #endif
 
 #include <glib.h>
@@ -92,6 +93,7 @@ static gchar *quote_desc_strings[] = {
        "|program{<span style=\"oblique\">sub_expr</span>}\n(|p{<span style=\"oblique\">sub_expr</span>})\n",   N_("insert program output:\n<span style=\"oblique\">sub_expr</span> is evaluated as a command-line to get\nthe output from"), /* insert program output */
        "|input{<span style=\"oblique\">sub_expr</span>}\n(|i{<span style=\"oblique\">sub_expr</span>})\n",             N_("insert user input:\n<span style=\"oblique\">sub_expr</span> is a variable to be replaced by\nuser-entered text"), /* insert user input */
        "|attach{<span style=\"oblique\">sub_expr</span>}\n(|a{<span style=\"oblique\">sub_expr</span>})",              N_("attach file:\n<span style=\"oblique\">sub_expr</span> is evaluated as the path of the file to attach"), /* attach file */
+       "|attach_program{<span style=\"oblique\">sub_expr</span>}\n(|A{<span style=\"oblique\">sub_expr</span>})",      N_("attach file:\n<span style=\"oblique\">sub_expr</span> is evaluated as a command-line to get\nthe filename from"), /* attach file whose name's got from program output */
        "",                                     NULL,
        N_("<span weight=\"bold\">definition of terms:</span>"),        NULL,
        "<span style=\"oblique\">expr</span>\n",                        N_("text that can contain any of the symbols or\ncommands above"),
@@ -103,6 +105,7 @@ static gchar *quote_desc_strings[] = {
 static DescriptionWindow quote_desc_win = { 
         NULL,
        NULL,
+       TRUE,
         2,
         N_("Description of symbols"),
        N_("The following symbols and commands can be used:"),
@@ -116,6 +119,24 @@ void quote_fmt_quote_description(GtkWidget *widget, GtkWidget *pref_window)
        description_window_create(&quote_desc_win);
 }
 
+static void quote_fmt_add_buttons(GtkWindow* parent_window, GtkWidget *parent_box,
+                       gboolean add_info_button, void(*set_defaults_func)(void)) {
+       GtkWidget *hbox_btns;
+       
+       if (!add_info_button && !set_defaults_func)
+               return;
+       
+       hbox_btns = gtk_hbox_new(FALSE, 0);
+       gtk_box_pack_end (GTK_BOX(parent_box), hbox_btns, FALSE, TRUE, 0);      
+
+       if (add_info_button)
+               quotefmt_add_info_button(parent_window, hbox_btns);
+       if (set_defaults_func)
+               quotefmt_add_defaults_button(parent_window, hbox_btns, set_defaults_func);
+
+       gtk_widget_show(GTK_WIDGET(hbox_btns));
+}
+
 void quotefmt_create_new_msg_fmt_widgets(GtkWindow *parent_window,
                                                GtkWidget *parent_box,
                                                GtkWidget **checkbtn_compose_with_format,
@@ -158,13 +179,11 @@ void quotefmt_create_new_msg_fmt_widgets(GtkWindow *parent_window,
        gtk_container_set_border_width (GTK_CONTAINER (vbox_format), 8);
 
        if (override_from_format) {
-               CLAWS_TIP_DECL();
-
                hbox2_format = gtk_hbox_new (FALSE, 8);
                gtk_widget_show (hbox2_format);
                gtk_box_pack_start (GTK_BOX (vbox_format), hbox2_format, FALSE, FALSE, 0);
 
-               label_from = gtk_label_new (_("From"));
+               label_from = gtk_label_new (prefs_common_translated_header_name("From"));
                gtk_misc_set_alignment(GTK_MISC(label_from), 1, 0.5);
                gtk_widget_show (label_from);
                gtk_box_pack_start (GTK_BOX (hbox2_format), label_from, FALSE, FALSE, 0);
@@ -183,7 +202,7 @@ void quotefmt_create_new_msg_fmt_widgets(GtkWindow *parent_window,
        gtk_widget_show (hbox_format);
        gtk_box_pack_start (GTK_BOX (vbox_format), hbox_format, FALSE, FALSE, 0);
 
-       label_subject = gtk_label_new (_("Subject"));
+       label_subject = gtk_label_new (prefs_common_translated_header_name("Subject"));
        gtk_misc_set_alignment(GTK_MISC(label_subject), 1, 0.5);
        gtk_widget_show (label_subject);
        gtk_box_pack_start (GTK_BOX (hbox_format), label_subject, FALSE, FALSE, 0);
@@ -230,10 +249,8 @@ void quotefmt_create_new_msg_fmt_widgets(GtkWindow *parent_window,
                SET_TOGGLE_SENSITIVITY(checkbtn_use_format, text_format);
        }
 
-       if (add_info_button)
-               quotefmt_add_info_button(parent_window, vbox_format);
-       if (set_defaults_func)
-               quotefmt_add_defaults_button(parent_window, vbox_format, set_defaults_func);
+       quote_fmt_add_buttons(parent_window, vbox_format,
+                               add_info_button, set_defaults_func);
 
        if (checkbtn_compose_with_format)
                *checkbtn_compose_with_format = checkbtn_use_format;
@@ -241,6 +258,8 @@ void quotefmt_create_new_msg_fmt_widgets(GtkWindow *parent_window,
                *override_from_format = entry_from;
        *edit_subject_format = entry_subject;
        *edit_body_format = text_format;
+
+       g_object_unref(G_OBJECT(size_group));
 }
 
 void quotefmt_create_reply_fmt_widgets(GtkWindow *parent_window,
@@ -286,13 +305,11 @@ void quotefmt_create_reply_fmt_widgets(GtkWindow *parent_window,
        gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
 
        if (override_from_format) {
-               CLAWS_TIP_DECL();
-
                hbox3 = gtk_hbox_new (FALSE, 8);
                gtk_widget_show (hbox3);
                gtk_box_pack_start (GTK_BOX (vbox_quote), hbox3, FALSE, FALSE, 0);
 
-               label_from = gtk_label_new (_("From"));
+               label_from = gtk_label_new (prefs_common_translated_header_name("From:"));
                gtk_misc_set_alignment(GTK_MISC(label_from), 1, 0.5);
                gtk_widget_show (label_from);
                gtk_box_pack_start (GTK_BOX (hbox3), label_from, FALSE, FALSE, 0);
@@ -362,10 +379,8 @@ void quotefmt_create_reply_fmt_widgets(GtkWindow *parent_window,
                SET_TOGGLE_SENSITIVITY(checkbtn_use_format, text_quotefmt);
        }
 
-       if (add_info_button)
-               quotefmt_add_info_button(parent_window, vbox_quote);
-       if (set_defaults_func)
-               quotefmt_add_defaults_button(parent_window, vbox_quote, set_defaults_func);
+       quote_fmt_add_buttons(parent_window, vbox_quote,
+                               add_info_button, set_defaults_func);
 
        if (checkbtn_reply_with_format)
                *checkbtn_reply_with_format = checkbtn_use_format;
@@ -373,6 +388,8 @@ void quotefmt_create_reply_fmt_widgets(GtkWindow *parent_window,
        if (override_from_format)
                *override_from_format = entry_from;
        *edit_reply_format = text_quotefmt;
+
+       g_object_unref(G_OBJECT(size_group));
 }
 
 void quotefmt_create_forward_fmt_widgets(GtkWindow *parent_window,
@@ -418,13 +435,11 @@ void quotefmt_create_forward_fmt_widgets(GtkWindow *parent_window,
        gtk_container_set_border_width (GTK_CONTAINER (vbox_quote), 8);
 
        if (override_from_format) {
-               CLAWS_TIP_DECL();
-
                hbox3 = gtk_hbox_new (FALSE, 8);
                gtk_widget_show (hbox3);
                gtk_box_pack_start (GTK_BOX (vbox_quote), hbox3, FALSE, FALSE, 0);
 
-               label_from = gtk_label_new (_("From"));
+               label_from = gtk_label_new (prefs_common_translated_header_name("From:"));
                gtk_misc_set_alignment(GTK_MISC(label_from), 1, 0.5);
                gtk_widget_show (label_from);
                gtk_box_pack_start (GTK_BOX (hbox3), label_from, FALSE, FALSE, 0);
@@ -496,10 +511,8 @@ void quotefmt_create_forward_fmt_widgets(GtkWindow *parent_window,
                SET_TOGGLE_SENSITIVITY(checkbtn_use_format, text_fw_quotefmt);
        }
 
-       if (add_info_button)
-               quotefmt_add_info_button(parent_window, vbox_quote);
-       if (set_defaults_func)
-               quotefmt_add_defaults_button(parent_window, vbox_quote, set_defaults_func);
+       quote_fmt_add_buttons(parent_window, vbox_quote,
+                               add_info_button, set_defaults_func);
 
        if (checkbtn_forward_with_format)
                *checkbtn_forward_with_format = checkbtn_use_format;
@@ -507,26 +520,17 @@ void quotefmt_create_forward_fmt_widgets(GtkWindow *parent_window,
        if (override_from_format)
                *override_from_format = entry_from;
        *edit_fw_format = text_fw_quotefmt;
+       
+       g_object_unref(G_OBJECT(size_group));
 }
 
 void quotefmt_add_info_button(GtkWindow *parent_window, GtkWidget *parent_box)
 {
-       GtkWidget *hbox_formatdesc;
        GtkWidget *btn_formatdesc;
 
-       hbox_formatdesc = gtk_hbox_new (FALSE, 32);
-       gtk_widget_show (hbox_formatdesc);
-       gtk_box_pack_start (GTK_BOX (parent_box), hbox_formatdesc, FALSE, FALSE,
-                               VBOX_BORDER);
-
-#if GTK_CHECK_VERSION(2, 8, 0)
        btn_formatdesc = gtk_button_new_from_stock(GTK_STOCK_INFO);
-#else
-       btn_formatdesc =
-               gtk_button_new_with_label (_("Description of symbols..."));
-#endif
        gtk_widget_show (btn_formatdesc);
-       gtk_box_pack_start (GTK_BOX (hbox_formatdesc), btn_formatdesc, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (parent_box), btn_formatdesc, FALSE, FALSE, 0);
        g_signal_connect(G_OBJECT(btn_formatdesc), "clicked",
                         G_CALLBACK(quote_fmt_quote_description), GTK_WIDGET(parent_window));
 }
@@ -535,21 +539,15 @@ void quotefmt_add_defaults_button(GtkWindow *parent_window,
                                                                  GtkWidget *parent_box,
                                                                  void(*set_defaults_func)(void))
 {
-       GtkWidget *hbox_formatdesc;
        GtkWidget *btn_formatdesc;
 
        cm_return_if_fail(set_defaults_func != NULL);
 
-       hbox_formatdesc = gtk_hbox_new (FALSE, 32);
-       gtk_widget_show (hbox_formatdesc);
-       gtk_box_pack_start (GTK_BOX (parent_box), hbox_formatdesc, FALSE, FALSE,
-                               VBOX_BORDER);
-
        btn_formatdesc = gtk_button_new_with_mnemonic (_("Defaults"));
        gtk_button_set_image (GTK_BUTTON(btn_formatdesc),
                gtk_image_new_from_stock(GTK_STOCK_UNDO, GTK_ICON_SIZE_BUTTON));
        gtk_widget_show (btn_formatdesc);
-       gtk_box_pack_start (GTK_BOX (hbox_formatdesc), btn_formatdesc, FALSE, FALSE, 0);
+       gtk_box_pack_end (GTK_BOX (parent_box), btn_formatdesc, FALSE, FALSE, 0);
        g_signal_connect(G_OBJECT(btn_formatdesc), "clicked",
                         G_CALLBACK(set_defaults_func), GTK_WIDGET(parent_window));
 }
@@ -563,13 +561,13 @@ void quotefmt_check_new_msg_formats(gboolean use_format,
                gint line;
 
                if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, TRUE, TRUE))
-                       alertpanel_error(_("New message From format error."));
+                       alertpanel_error(_("The \"From\" field of the \"New message\" template contains an invalid email address."));
 
                if (!prefs_template_string_is_valid(subject_fmt, NULL, TRUE, FALSE))
-                       alertpanel_error(_("New message subject format error."));
+                       alertpanel_error(_("The \"Subject\" field of the \"New message\" template is invalid."));
 
                if (!prefs_template_string_is_valid(body_fmt, &line, TRUE, FALSE)) {
-                       alertpanel_error(_("New message body format error at line %d."), line);
+                       alertpanel_error(_("The body of the \"New message\" template has an error at line %d."), line);
                }
        }
 }
@@ -583,13 +581,13 @@ void quotefmt_check_reply_formats(gboolean use_format,
                gint line;
 
                if (!prefs_template_string_is_valid(quotation_mark, NULL, TRUE, FALSE))
-                       alertpanel_error(_("Message reply quotation mark format error."));
+                       alertpanel_error(_("The \"Quotation mark\" field of the \"Reply\" template is invalid."));
 
                if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, TRUE, TRUE))
-                       alertpanel_error(_("Message reply From format error."));
+                       alertpanel_error(_("The \"From\" field of the \"Reply\" template contains an invalid email address."));
 
                if (!prefs_template_string_is_valid(body_fmt, &line, TRUE, FALSE)) {
-                       alertpanel_error(_("Message reply format error at line %d."), line);
+                       alertpanel_error(_("The body of the \"Reply\" template has an error at line %d."), line);
                }
        }
 }
@@ -603,13 +601,13 @@ void quotefmt_check_forward_formats(gboolean use_format,
                gint line;
 
                if (!prefs_template_string_is_valid(quotation_mark, NULL, TRUE, FALSE))
-                       alertpanel_error(_("Message forward quotation mark format error."));
+                       alertpanel_error(_("The \"Quotation mark\" field of the \"Forward\" template is invalid."));
 
                if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, TRUE, TRUE))
-                       alertpanel_error(_("Message forward From format error."));
+                       alertpanel_error(_("The \"From\" field of the \"Forward\" template contains an invalid email address."));
 
                if (!prefs_template_string_is_valid(body_fmt, &line, TRUE, FALSE)) {
-                       alertpanel_error(_("Message forward format error at line %d."), line);
+                       alertpanel_error(_("The body of the \"Forward\" template has an error at line %d."), line);
                }
        }
 }