diff options
author | Matthew Barnes <mbarnes@src.gnome.org> | 2009-02-10 10:51:52 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2009-02-10 10:51:52 +0800 |
commit | de169b4feeeaf2013aa256ddf70276bacbd6542a (patch) | |
tree | 8c159911c1aa8a7bbd476f460fce436bfbdcdf36 /mail | |
parent | 566f8f6208f1e12ad342517abf550df870f07f2e (diff) | |
download | gsoc2013-evolution-de169b4feeeaf2013aa256ddf70276bacbd6542a.tar gsoc2013-evolution-de169b4feeeaf2013aa256ddf70276bacbd6542a.tar.gz gsoc2013-evolution-de169b4feeeaf2013aa256ddf70276bacbd6542a.tar.bz2 gsoc2013-evolution-de169b4feeeaf2013aa256ddf70276bacbd6542a.tar.lz gsoc2013-evolution-de169b4feeeaf2013aa256ddf70276bacbd6542a.tar.xz gsoc2013-evolution-de169b4feeeaf2013aa256ddf70276bacbd6542a.tar.zst gsoc2013-evolution-de169b4feeeaf2013aa256ddf70276bacbd6542a.zip |
Rewrite the signature management UI from top to bottom.
- Break the UI out of Glade and into small, manageable widgets:
ESignatureEditor (moved from mail to widgets/misc)
ESignatureManager
ESignatureTreeView
ESignatureScriptDialog
- Move several signature utilities to e-util/e-signature-utils.c so
they're accessible from widgets/misc without introducing circular
dependences.
- Have EMailShellModule listen for new GtkhtmlEditor windows (from which
EMsgComposer and ESignatureEditor are derived) and configure the window
with spelling and HTML editing user preferences.
- Drastically simplifies em-composer-prefs.c.
svn path=/branches/kill-bonobo/; revision=37239
Diffstat (limited to 'mail')
-rw-r--r-- | mail/Makefile.am | 2 | ||||
-rw-r--r-- | mail/e-mail-label-manager.c | 5 | ||||
-rw-r--r-- | mail/e-mail-shell-module.c | 26 | ||||
-rw-r--r-- | mail/em-account-editor.c | 2 | ||||
-rw-r--r-- | mail/em-composer-prefs.c | 467 | ||||
-rw-r--r-- | mail/em-composer-prefs.h | 13 | ||||
-rw-r--r-- | mail/mail-config.c | 60 | ||||
-rw-r--r-- | mail/mail-config.glade | 1658 | ||||
-rw-r--r-- | mail/mail-config.h | 2 | ||||
-rw-r--r-- | mail/mail-signature-editor.c | 500 | ||||
-rw-r--r-- | mail/mail-signature-editor.h | 72 |
11 files changed, 807 insertions, 2000 deletions
diff --git a/mail/Makefile.am b/mail/Makefile.am index 5b493957b0..2f1e2d8446 100644 --- a/mail/Makefile.am +++ b/mail/Makefile.am @@ -163,8 +163,6 @@ libevolution_module_mail_la_SOURCES = \ mail-send-recv.h \ mail-session.c \ mail-session.h \ - mail-signature-editor.c \ - mail-signature-editor.h \ mail-tools.c \ mail-tools.h \ mail-vfolder.c \ diff --git a/mail/e-mail-label-manager.c b/mail/e-mail-label-manager.c index c4c34d0e6f..fc18da3e95 100644 --- a/mail/e-mail-label-manager.c +++ b/mail/e-mail-label-manager.c @@ -154,12 +154,13 @@ mail_label_manager_add_label (EMailLabelManager *manager) GtkTreeView *tree_view; GtkTreeModel *model; GtkWidget *dialog; - GtkWidget *parent; + gpointer parent; GdkColor label_color; const gchar *label_name; parent = gtk_widget_get_toplevel (GTK_WIDGET (manager)); - dialog = e_mail_label_dialog_new (GTK_WINDOW (parent)); + parent = GTK_WIDGET_TOPLEVEL (parent) ? parent : NULL; + dialog = e_mail_label_dialog_new (parent); gtk_window_set_title (GTK_WINDOW (dialog), _("Add Label")); diff --git a/mail/e-mail-shell-module.c b/mail/e-mail-shell-module.c index 760eca6ab7..7c61663541 100644 --- a/mail/e-mail-shell-module.c +++ b/mail/e-mail-shell-module.c @@ -26,6 +26,7 @@ #include <camel/camel-url.h> #include "e-util/e-account-utils.h" +#include "e-util/e-binding.h" #include "e-util/e-import.h" #include "e-util/e-util.h" #include "shell/e-shell.h" @@ -762,9 +763,34 @@ mail_shell_module_window_created_cb (EShell *shell, GtkWindow *window, EShellModule *shell_module) { + EShellSettings *shell_settings; static gboolean first_time = TRUE; const gchar *module_name; + shell_settings = e_shell_get_shell_settings (shell); + + /* This applies to both the composer and signature editor. */ + if (GTKHTML_IS_EDITOR (window)) { + GList *spell_languages; + + e_binding_new ( + G_OBJECT (shell_settings), "composer-inline-spelling", + G_OBJECT (window), "inline-spelling"); + + e_binding_new ( + G_OBJECT (shell_settings), "composer-magic-links", + G_OBJECT (window), "magic-links"); + + e_binding_new ( + G_OBJECT (shell_settings), "composer-magic-smileys", + G_OBJECT (window), "magic-smileys"); + + spell_languages = e_load_spell_languages (); + gtkhtml_editor_set_spell_languages ( + GTKHTML_EDITOR (window), spell_languages); + g_list_free (spell_languages); + } + if (E_IS_MSG_COMPOSER (window)) { /* Integrate the new composer into the mail module. */ em_configure_new_composer (E_MSG_COMPOSER (window)); diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index 0103242112..a5c5d59fd8 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -63,7 +63,7 @@ #include "em-account-editor.h" #include "mail-session.h" #include "mail-send-recv.h" -#include "mail-signature-editor.h" +#include "e-signature-editor.h" #include "em-utils.h" #include "em-composer-prefs.h" #include "mail-config.h" diff --git a/mail/em-composer-prefs.c b/mail/em-composer-prefs.c index 686b9c8da0..ef73c23355 100644 --- a/mail/em-composer-prefs.c +++ b/mail/em-composer-prefs.c @@ -43,17 +43,17 @@ #include <glib/gi18n.h> #include <glib/gstdio.h> -#include <gdk/gdkkeysyms.h> #include <gtkhtml/gtkhtml.h> #include <editor/gtkhtml-spell-language.h> #include "misc/e-charset-picker.h" +#include "misc/e-signature-manager.h" #include "e-util/e-error.h" #include "e-util/e-util-private.h" #include "mail-config.h" -#include "mail-signature-editor.h" +#include "e-signature-editor.h" #include "em-config.h" static gpointer parent_class; @@ -161,44 +161,12 @@ transform_new_to_old_reply_style (const GValue *src_value, } static void -composer_prefs_dispose (GObject *object) -{ - EMComposerPrefs *prefs = (EMComposerPrefs *) object; - ESignatureList *signature_list; - - signature_list = e_get_signature_list (); - - if (prefs->sig_added_id != 0) { - g_signal_handler_disconnect ( - signature_list, prefs->sig_added_id); - prefs->sig_added_id = 0; - } - - if (prefs->sig_removed_id != 0) { - g_signal_handler_disconnect ( - signature_list, prefs->sig_removed_id); - prefs->sig_removed_id = 0; - } - - if (prefs->sig_changed_id != 0) { - g_signal_handler_disconnect ( - signature_list, prefs->sig_changed_id); - prefs->sig_changed_id = 0; - } - - /* Chain up to parent's dispose() method. */ - G_OBJECT_CLASS (parent_class)->dispose (object); -} - -static void composer_prefs_finalize (GObject *object) { EMComposerPrefs *prefs = (EMComposerPrefs *) object; g_object_unref (prefs->gui); - g_hash_table_destroy (prefs->sig_hash); - /* Chain up to parent's finalize() method. */ G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -211,17 +179,12 @@ composer_prefs_class_init (EMComposerPrefsClass *class) parent_class = g_type_class_peek_parent (class); object_class = G_OBJECT_CLASS (class); - object_class->dispose = composer_prefs_dispose; object_class->finalize = composer_prefs_finalize; } static void composer_prefs_init (EMComposerPrefs *prefs) { - prefs->sig_hash = g_hash_table_new_full ( - g_direct_hash, g_direct_equal, - (GDestroyNotify) NULL, - (GDestroyNotify) gtk_tree_row_reference_free); } GType @@ -267,8 +230,8 @@ sig_load_preview (EMComposerPrefs *prefs, if (signature->script) str = mail_config_signature_run_script (signature->filename); else - str = e_msg_composer_get_sig_file_content ( - signature->filename, signature->html); + /* FIXME Show an error in the preview area. */ + str = e_read_signature_file (signature, FALSE, NULL); if (!str || !*str) { /* make html stream happy and write at least one character */ g_free (str); @@ -293,143 +256,6 @@ sig_load_preview (EMComposerPrefs *prefs, g_free (str); } -static void -signature_added (ESignatureList *signature_list, - ESignature *signature, - EMComposerPrefs *prefs) -{ - GtkTreeRowReference *row; - GtkTreeModel *model; - GtkTreePath *path; - GtkTreeIter iter; - - /* autogen signature is special */ - if (signature->autogen) - return; - - model = gtk_tree_view_get_model (prefs->sig_list); - gtk_list_store_append (GTK_LIST_STORE (model), &iter); - gtk_list_store_set ( - GTK_LIST_STORE (model), &iter, - 0, signature->name, 1, signature, -1); - - path = gtk_tree_model_get_path (model, &iter); - row = gtk_tree_row_reference_new (model, path); - gtk_tree_path_free (path); - - g_hash_table_insert (prefs->sig_hash, signature, row); -} - -static void -signature_removed (ESignatureList *signature_list, - ESignature *signature, - EMComposerPrefs *prefs) -{ - GtkTreeRowReference *row; - GtkTreeModel *model; - GtkTreePath *path; - GtkTreeIter iter; - - if (!(row = g_hash_table_lookup (prefs->sig_hash, signature))) - return; - - model = gtk_tree_view_get_model (prefs->sig_list); - path = gtk_tree_row_reference_get_path (row); - g_hash_table_remove (prefs->sig_hash, signature); - - if (!gtk_tree_model_get_iter (model, &iter, path)) { - gtk_tree_path_free (path); - return; - } - - gtk_list_store_remove ((GtkListStore *) model, &iter); -} - -static void -signature_changed (ESignatureList *signature_list, - ESignature *signature, - EMComposerPrefs *prefs) -{ - GtkTreeSelection *selection; - GtkTreeRowReference *row; - GtkTreeModel *model; - GtkTreePath *path; - GtkTreeIter iter; - ESignature *cur; - - if (!(row = g_hash_table_lookup (prefs->sig_hash, signature))) - return; - - model = gtk_tree_view_get_model (prefs->sig_list); - path = gtk_tree_row_reference_get_path (row); - - if (!gtk_tree_model_get_iter (model, &iter, path)) { - gtk_tree_path_free (path); - return; - } - - gtk_tree_path_free (path); - - gtk_list_store_set ((GtkListStore *) model, &iter, 0, signature->name, -1); - - selection = gtk_tree_view_get_selection (prefs->sig_list); - if (gtk_tree_selection_get_selected (selection, &model, &iter)) { - gtk_tree_model_get (model, &iter, 1, &cur, -1); - if (cur == signature) - sig_load_preview (prefs, signature); - } -} - -static void -sig_edit_cb (GtkWidget *widget, EMComposerPrefs *prefs) -{ - GtkTreeSelection *selection; - GtkTreeModel *model; - GtkWidget *parent; - GtkTreeIter iter; - ESignature *signature; - - selection = gtk_tree_view_get_selection (prefs->sig_list); - if (!gtk_tree_selection_get_selected (selection, &model, &iter)) - return; - - gtk_tree_model_get (model, &iter, 1, &signature, -1); - - if (!signature->script) { - GtkWidget *editor; - - /* normal signature */ - if (!signature->filename || *signature->filename == '\0') { - g_free (signature->filename); - signature->filename = g_strdup (_("Unnamed")); - } - - editor = e_signature_editor_new (); - e_signature_editor_set_signature ( - E_SIGNATURE_EDITOR (editor), signature); - - parent = gtk_widget_get_toplevel ((GtkWidget *) prefs); - if (GTK_WIDGET_TOPLEVEL (parent)) - gtk_window_set_transient_for ( - GTK_WINDOW (editor), GTK_WINDOW (parent)); - - gtk_widget_show (editor); - } else { - /* signature script */ - GtkWidget *entry; - - entry = glade_xml_get_widget (prefs->sig_script_gui, "filechooserbutton_add_script"); - gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (entry), signature->filename); - - entry = glade_xml_get_widget (prefs->sig_script_gui, "entry_add_script_name"); - gtk_entry_set_text (GTK_ENTRY (entry), signature->name); - - g_object_set_data ((GObject *) entry, "sig", signature); - - gtk_window_present ((GtkWindow *) prefs->sig_script_dialog); - } -} - void em_composer_prefs_new_signature (GtkWindow *parent, gboolean html_mode) @@ -443,175 +269,21 @@ em_composer_prefs_new_signature (GtkWindow *parent, } static void -sig_delete_cb (GtkWidget *widget, EMComposerPrefs *prefs) -{ - GtkTreeSelection *selection; - GtkTreeModel *model; - GtkTreeIter iter; - ESignature *signature; - ESignatureList *signature_list; - - signature_list = e_get_signature_list (); - selection = gtk_tree_view_get_selection (prefs->sig_list); - - if (gtk_tree_selection_get_selected (selection, &model, &iter)) { - gtk_tree_model_get (model, &iter, 1, &signature, -1); - - if (signature->filename && !signature->script) - g_unlink (signature->filename); - - e_signature_list_remove (signature_list, signature); - e_signature_list_save (signature_list); - } - gtk_widget_grab_focus ((GtkWidget *)prefs->sig_list); -} - -static void -sig_add_cb (GtkWidget *widget, EMComposerPrefs *prefs) -{ - gboolean send_html; - GtkWidget *parent; - - send_html = gconf_client_get_bool ( - mail_config_get_gconf_client (), - "/apps/evolution/mail/composer/send_html", NULL); - - parent = gtk_widget_get_toplevel (GTK_WIDGET (prefs)); - parent = GTK_WIDGET_TOPLEVEL (parent) ? parent : NULL; - - em_composer_prefs_new_signature (GTK_WINDOW (parent), send_html); - gtk_widget_grab_focus (GTK_WIDGET (prefs->sig_list)); -} - -static void -sig_add_script_response (GtkWidget *widget, int button, EMComposerPrefs *prefs) -{ - gchar *script, **argv = NULL; - GtkWidget *entry; - const gchar *name; - int argc; - - if (button == GTK_RESPONSE_ACCEPT) { - entry = glade_xml_get_widget (prefs->sig_script_gui, "filechooserbutton_add_script"); - script = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (entry)); - - entry = glade_xml_get_widget (prefs->sig_script_gui, "entry_add_script_name"); - name = gtk_entry_get_text (GTK_ENTRY (entry)); - if (script && *script && g_shell_parse_argv (script, &argc, &argv, NULL)) { - struct stat st; - - if (g_stat (argv[0], &st) == 0 && S_ISREG (st.st_mode) && g_access (argv[0], X_OK) == 0) { - ESignatureList *signature_list; - ESignature *signature; - - signature_list = e_get_signature_list (); - - if ((signature = g_object_get_data ((GObject *) entry, "sig"))) { - /* we're just editing an existing signature script */ - g_free (signature->name); - signature->name = g_strdup (name); - g_free(signature->filename); - signature->filename = g_strdup(script); - e_signature_list_change (signature_list, signature); - } else { - signature = mail_config_signature_new (script, TRUE, TRUE); - signature->name = g_strdup (name); - - e_signature_list_add (signature_list, signature); - g_object_unref (signature); - } - - e_signature_list_save (signature_list); - - gtk_widget_hide (prefs->sig_script_dialog); - g_strfreev (argv); - g_free (script); - - return; - } - } - - e_error_run((GtkWindow *)prefs->sig_script_dialog, "mail:signature-notscript", argv ? argv[0] : script, NULL); - g_strfreev (argv); - g_free (script); - return; - } - - gtk_widget_hide (widget); -} - -static void -sig_add_script_cb (GtkWidget *widget, EMComposerPrefs *prefs) -{ - GtkWidget *entry; - - entry = glade_xml_get_widget (prefs->sig_script_gui, "entry_add_script_name"); - gtk_entry_set_text (GTK_ENTRY (entry), _("Unnamed")); - - g_object_set_data ((GObject *) entry, "sig", NULL); - - gtk_window_present ((GtkWindow *) prefs->sig_script_dialog); -} - -static void sig_selection_changed (GtkTreeSelection *selection, EMComposerPrefs *prefs) { ESignature *signature; - GtkTreeModel *model; - GtkTreeIter iter; - gboolean valid; - - valid = gtk_tree_selection_get_selected (selection, &model, &iter); - - if (valid) { - gtk_tree_model_get (model, &iter, 1, &signature, -1); - sig_load_preview (prefs, signature); - } else - sig_load_preview (prefs, NULL); + GtkTreeView *tree_view; - gtk_widget_set_sensitive (GTK_WIDGET (prefs->sig_delete), valid); - gtk_widget_set_sensitive (GTK_WIDGET (prefs->sig_edit), valid); -} - -static void -sig_fill_list (EMComposerPrefs *prefs) -{ - ESignatureList *signature_list; - GtkTreeModel *model; - EIterator *iterator; - - model = gtk_tree_view_get_model (prefs->sig_list); - gtk_list_store_clear (GTK_LIST_STORE (model)); - - signature_list = e_get_signature_list (); - iterator = e_list_get_iterator ((EList *) signature_list); - - while (e_iterator_is_valid (iterator)) { - ESignature *signature; - - signature = (ESignature *) e_iterator_get (iterator); - signature_added (signature_list, signature, prefs); + tree_view = gtk_tree_selection_get_tree_view (selection); - e_iterator_next (iterator); - } - - g_object_unref (iterator); - - gtk_widget_set_sensitive (GTK_WIDGET (prefs->sig_edit), FALSE); - gtk_widget_set_sensitive (GTK_WIDGET (prefs->sig_delete), FALSE); + signature = e_signature_tree_view_get_selected ( + E_SIGNATURE_TREE_VIEW (tree_view)); - prefs->sig_added_id = g_signal_connect ( - signature_list, "signature-added", - G_CALLBACK (signature_added), prefs); + sig_load_preview (prefs, signature); - prefs->sig_removed_id = g_signal_connect ( - signature_list, "signature-removed", - G_CALLBACK (signature_removed), prefs); - - prefs->sig_changed_id = g_signal_connect ( - signature_list, "signature-changed", - G_CALLBACK (signature_changed), prefs); + if (signature != NULL) + g_object_unref (signature); } static void @@ -824,40 +496,15 @@ emcp_free (EConfig *ec, GSList *items, gpointer data) g_slist_free (items); } -static gboolean -signature_key_press_cb (GtkTreeView *tree_view, - GdkEventKey *event, - EMComposerPrefs *prefs) -{ - /* No need to care about anything other than DEL key */ - if (event->keyval == GDK_Delete) { - sig_delete_cb (GTK_WIDGET (tree_view), prefs); - return TRUE; - } - - return FALSE; -} - -static gboolean -sig_tree_event_cb (GtkTreeView *tree_view, - GdkEvent *event, - EMComposerPrefs *prefs) -{ - if (event->type == GDK_2BUTTON_PRESS) { - sig_edit_cb (GTK_WIDGET (tree_view), prefs); - return TRUE; - } - - return FALSE; -} - static void em_composer_prefs_construct (EMComposerPrefs *prefs, EShell *shell) { GtkWidget *toplevel, *widget, *menu, *info_pixmap; + GtkWidget *container; EShellSettings *shell_settings; - GtkDialog *dialog; + ESignatureList *signature_list; + ESignatureTreeView *signature_tree_view; GladeXML *gui; GtkTreeView *view; GtkListStore *store; @@ -865,14 +512,12 @@ em_composer_prefs_construct (EMComposerPrefs *prefs, GtkCellRenderer *renderer; GConfBridge *bridge; GConfClient *client; - const gchar *key; gchar *buf; EMConfig *ec; EMConfigTargetPrefs *target; GSList *l; int i; gchar *gladefile; - gboolean sensitive; bridge = gconf_bridge_get (); client = mail_config_get_gconf_client (); @@ -883,7 +528,6 @@ em_composer_prefs_construct (EMComposerPrefs *prefs, NULL); gui = glade_xml_new (gladefile, "composer_toplevel", NULL); prefs->gui = gui; - prefs->sig_script_gui = glade_xml_new (gladefile, "vbox_add_script_signature", NULL); g_free (gladefile); /** @HookPoint-EMConfig: Mail Composer Preferences @@ -1015,72 +659,33 @@ em_composer_prefs_construct (EMComposerPrefs *prefs, NULL, NULL); /* Signatures */ - dialog = (GtkDialog *) gtk_dialog_new (); - - gtk_widget_realize ((GtkWidget *) dialog); - gtk_container_set_border_width ((GtkContainer *)dialog->action_area, 12); - gtk_container_set_border_width ((GtkContainer *)dialog->vbox, 0); - - prefs->sig_script_dialog = (GtkWidget *) dialog; - gtk_dialog_add_buttons (dialog, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); - gtk_dialog_set_has_separator (dialog, FALSE); - gtk_window_set_title ((GtkWindow *) dialog, _("Add signature script")); - g_signal_connect (dialog, "response", G_CALLBACK (sig_add_script_response), prefs); - widget = glade_xml_get_widget (prefs->sig_script_gui, "vbox_add_script_signature"); - gtk_box_pack_start ((GtkBox *) dialog->vbox, widget, TRUE, TRUE, 0); - - key = "/apps/evolution/mail/signatures"; - sensitive = gconf_client_key_is_writable (client, key, NULL); - - widget = glade_xml_get_widget (gui, "cmdSignatureAdd"); - gtk_widget_set_sensitive (widget, sensitive); - g_signal_connect ( - widget, "clicked", - G_CALLBACK (sig_add_cb), prefs); - prefs->sig_add = GTK_BUTTON (widget); + signature_list = e_get_signature_list (); + container = glade_xml_get_widget (gui, "alignSignatures"); + widget = e_signature_manager_new (signature_list); + gtk_container_add (GTK_CONTAINER (container), widget); + gtk_widget_show (widget); + + /* The mail shell module responds to the "window-created" signal + * that this triggers and configures it with composer preferences. */ + g_signal_connect_swapped ( + widget, "editor-created", + G_CALLBACK (e_shell_watch_window), shell); + + e_binding_new ( + G_OBJECT (shell_settings), "composer-format-html", + G_OBJECT (widget), "prefer-html"); - widget = glade_xml_get_widget (gui, "cmdSignatureAddScript"); e_binding_new_with_negation ( G_OBJECT (shell_settings), "disable-command-line", - G_OBJECT (widget), "sensitive"); - g_signal_connect ( - widget, "clicked", - G_CALLBACK (sig_add_script_cb), prefs); - prefs->sig_add_script = GTK_BUTTON (widget); + G_OBJECT (widget), "allow-scripts"); - widget = glade_xml_get_widget (gui, "cmdSignatureEdit"); - gtk_widget_set_sensitive (widget, sensitive); - g_signal_connect ( - widget, "clicked", - G_CALLBACK (sig_edit_cb), prefs); - prefs->sig_edit = GTK_BUTTON (widget); - - widget = glade_xml_get_widget (gui, "cmdSignatureDelete"); - gtk_widget_set_sensitive (widget, sensitive); - g_signal_connect ( - widget, "clicked", - G_CALLBACK (sig_delete_cb), prefs); - prefs->sig_delete = GTK_BUTTON (widget); - - widget = glade_xml_get_widget (gui, "listSignatures"); - gtk_widget_set_sensitive (widget, sensitive); - prefs->sig_list = GTK_TREE_VIEW (widget); - store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER); - gtk_tree_view_set_model (prefs->sig_list, GTK_TREE_MODEL (store)); - gtk_tree_view_insert_column_with_attributes ( - prefs->sig_list, -1, _("Signature(s)"), - gtk_cell_renderer_text_new (), "text", 0, NULL); - selection = gtk_tree_view_get_selection (prefs->sig_list); - gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); + signature_tree_view = e_signature_manager_get_tree_view ( + E_SIGNATURE_MANAGER (widget)); + selection = gtk_tree_view_get_selection ( + GTK_TREE_VIEW (signature_tree_view)); g_signal_connect ( selection, "changed", G_CALLBACK (sig_selection_changed), prefs); - g_signal_connect ( - prefs->sig_list, "event", - G_CALLBACK (sig_tree_event_cb), prefs); - - sig_fill_list (prefs); /* preview GtkHTML widget */ widget = glade_xml_get_widget (gui, "scrolled-sig"); @@ -1098,10 +703,6 @@ em_composer_prefs_construct (EMComposerPrefs *prefs, e_config_set_target ((EConfig *)ec, (EConfigTarget *)target); toplevel = e_config_create_widget ((EConfig *)ec); gtk_container_add (GTK_CONTAINER (prefs), toplevel); - - g_signal_connect ( - prefs->sig_list, "key-press-event", - G_CALLBACK (signature_key_press_cb), prefs); } GtkWidget * diff --git a/mail/em-composer-prefs.h b/mail/em-composer-prefs.h index 0dc848743e..623fee0220 100644 --- a/mail/em-composer-prefs.h +++ b/mail/em-composer-prefs.h @@ -69,20 +69,7 @@ struct _EMComposerPrefs { GtkOptionMenu *shortcuts_type; /* Signatures */ - GtkTreeView *sig_list; - GHashTable *sig_hash; - GtkButton *sig_add; - GtkButton *sig_add_script; - GtkButton *sig_edit; - GtkButton *sig_delete; struct _GtkHTML *sig_preview; - - GladeXML *sig_script_gui; - GtkWidget *sig_script_dialog; - - guint sig_added_id; - guint sig_removed_id; - guint sig_changed_id; }; struct _EMComposerPrefsClass { diff --git a/mail/mail-config.c b/mail/mail-config.c index 2186ce0e21..a7e8bb908c 100644 --- a/mail/mail-config.c +++ b/mail/mail-config.c @@ -953,66 +953,6 @@ mail_config_folder_to_cachename (CamelFolder *folder, const char *prefix) return filename; } -static char * -get_new_signature_filename (void) -{ - const char *base_directory; - char *filename, *id; - struct stat st; - int i; - - base_directory = e_get_user_data_dir (); - filename = g_build_filename (base_directory, "signatures", NULL); - if (g_lstat (filename, &st)) { - if (errno == ENOENT) { - if (g_mkdir (filename, 0700)) - g_warning ("Fatal problem creating %s directory.", filename); - } else - g_warning ("Fatal problem with %s directory.", filename); - } - g_free (filename); - - filename = g_malloc (strlen (base_directory) + sizeof ("/signatures/signature-") + 12); - id = g_stpcpy (filename, base_directory); - id = g_stpcpy (id, "/signatures/signature-"); - - for (i = 0; i < (INT_MAX - 1); i++) { - sprintf (id, "%d", i); - if (g_lstat (filename, &st) == -1 && errno == ENOENT) { - int fd; - - fd = g_creat (filename, 0600); - if (fd >= 0) { - close (fd); - return filename; - } - } - } - - g_free (filename); - - return NULL; -} - - -ESignature * -mail_config_signature_new (const char *filename, gboolean script, gboolean html) -{ - ESignature *sig; - - sig = e_signature_new (); - sig->name = g_strdup (_("Unnamed")); - sig->script = script; - sig->html = html; - - if (filename == NULL) - sig->filename = get_new_signature_filename (); - else - sig->filename = g_strdup (filename); - - return sig; -} - void mail_config_reload_junk_headers (void) { diff --git a/mail/mail-config.glade b/mail/mail-config.glade index d2d8da8ea7..42c691fb82 100644 --- a/mail/mail-config.glade +++ b/mail/mail-config.glade @@ -300,64 +300,64 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkEntry" id="identity_full_name"> + <widget class="GtkEntry" id="identity_address"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> <accessibility> <atkrelation target="label464" type="labelled-by"/> - <atkrelation target="identity_full_name_label" type="labelled-by"/> + <atkrelation target="identity_address_label" type="labelled-by"/> </accessibility> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="identity_full_name_label"> + <widget class="GtkLabel" id="identity_address_label"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Full Nam_e:</property> + <property name="label" translatable="yes">Email _Address:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">identity_full_name</property> + <property name="mnemonic_widget">identity_address</property> </widget> <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="identity_address_label"> + <widget class="GtkLabel" id="identity_full_name_label"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Email _Address:</property> + <property name="label" translatable="yes">Full Nam_e:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">identity_address</property> + <property name="mnemonic_widget">identity_full_name</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="identity_address"> + <widget class="GtkEntry" id="identity_full_name"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> <accessibility> - <atkrelation target="identity_address_label" type="labelled-by"/> + <atkrelation target="identity_full_name_label" type="labelled-by"/> <atkrelation target="label464" type="labelled-by"/> </accessibility> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> @@ -417,51 +417,75 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkCheckButton" id="management_default"> + <widget class="GtkLabel" id="sigLabel"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">_Make this my default account</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Signat_ure:</property> <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> + <property name="mnemonic_widget">signature_dropdown</property> </widget> <packing> - <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="reply_to_label"> + <widget class="GtkHBox" id="hbox169"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Re_ply-To:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="mnemonic_widget">identity_reply_to</property> + <property name="spacing">6</property> + <child> + <widget class="Custom" id="signature_dropdown"> + <property name="visible">True</property> + <property name="creation_function">em_account_editor_dropdown_new</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkButton" id="sigAddNew"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Add Ne_w Signature...</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <signal name="clicked" handler="sigAddNewClicked"/> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="pack_type">GTK_PACK_END</property> + <property name="position">1</property> + </packing> + </child> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkEntry" id="identity_reply_to"> + <widget class="GtkEntry" id="identity_organization"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> <accessibility> <atkrelation target="label466" type="labelled-by"/> - <atkrelation target="reply_to_label" type="labelled-by"/> + <atkrelation target="identity_organization_label" type="labelled-by"/> </accessibility> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="y_options"></property> </packing> </child> @@ -481,76 +505,52 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkEntry" id="identity_organization"> + <widget class="GtkEntry" id="identity_reply_to"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> <accessibility> - <atkrelation target="identity_organization_label" type="labelled-by"/> + <atkrelation target="reply_to_label" type="labelled-by"/> <atkrelation target="label466" type="labelled-by"/> </accessibility> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox169"> + <widget class="GtkLabel" id="reply_to_label"> <property name="visible">True</property> - <property name="spacing">6</property> - <child> - <widget class="Custom" id="signature_dropdown"> - <property name="visible">True</property> - <property name="creation_function">em_account_editor_dropdown_new</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="sigAddNew"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Add Ne_w Signature...</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="sigAddNewClicked"/> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="pack_type">GTK_PACK_END</property> - <property name="position">1</property> - </packing> - </child> + <property name="xalign">0</property> + <property name="label" translatable="yes">Re_ply-To:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="mnemonic_widget">identity_reply_to</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="sigLabel"> + <widget class="GtkCheckButton" id="management_default"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Signat_ure:</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">_Make this my default account</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">signature_dropdown</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> </widget> <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> + <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> </widget> @@ -601,28 +601,28 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="Custom" id="source_type_dropdown"> + <widget class="GtkLabel" id="source_type_label"> <property name="visible">True</property> - <property name="creation_function">em_account_editor_dropdown_new</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Server _Type: </property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_RIGHT</property> + <property name="mnemonic_widget">source_type_dropdown</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="source_description"> + <widget class="GtkLabel" id="label442"> <property name="visible">True</property> <property name="xalign">0</property> <property name="yalign">0</property> - <property name="label" translatable="yes">description</property> - <property name="wrap">True</property> + <property name="label" translatable="yes">Description:</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">3</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> @@ -630,14 +630,16 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="label442"> + <widget class="GtkLabel" id="source_description"> <property name="visible">True</property> <property name="xalign">0</property> <property name="yalign">0</property> - <property name="label" translatable="yes">Description:</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="label" translatable="yes">description</property> + <property name="wrap">True</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">3</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> @@ -645,15 +647,13 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="source_type_label"> + <widget class="Custom" id="source_type_dropdown"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Server _Type: </property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_RIGHT</property> - <property name="mnemonic_widget">source_type_dropdown</property> + <property name="creation_function">em_account_editor_dropdown_new</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -716,34 +716,35 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkFileChooserButton" id="source_path_entry"> + <widget class="GtkLabel" id="source_host_label"> <property name="visible">True</property> - <property name="title" translatable="yes">Mailbox location</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Server:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">source_host</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="source_path_label"> + <widget class="GtkLabel" id="source_user_label"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">_Path:</property> + <property name="label" translatable="yes">User_name:</property> <property name="use_underline">True</property> + <property name="mnemonic_widget">source_user</property> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="source_user"> + <widget class="GtkEntry" id="source_host"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> @@ -751,13 +752,11 @@ For example: "Work" or "Personal"</property> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="source_host"> + <widget class="GtkEntry" id="source_user"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> @@ -765,34 +764,35 @@ For example: "Work" or "Personal"</property> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="source_user_label"> + <widget class="GtkLabel" id="source_path_label"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">User_name:</property> + <property name="label" translatable="yes">_Path:</property> <property name="use_underline">True</property> - <property name="mnemonic_widget">source_user</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="source_host_label"> + <widget class="GtkFileChooserButton" id="source_path_entry"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Server:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">source_host</property> + <property name="title" translatable="yes">Mailbox location</property> </widget> <packing> - <property name="x_options">GTK_FILL</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="y_options"></property> </packing> </child> @@ -1068,20 +1068,32 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkLabel" id="transport_description"> + <widget class="GtkLabel" id="transport_type_label"> <property name="visible">True</property> <property name="xalign">0</property> <property name="yalign">0</property> - <property name="label" translatable="yes">description</property> - <property name="wrap">True</property> + <property name="label" translatable="yes">Server _Type: </property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_RIGHT</property> + <property name="mnemonic_widget">transport_type_dropdown</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label50"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="yalign">0</property> + <property name="label" translatable="yes">Description:</property> + <property name="justify">GTK_JUSTIFY_RIGHT</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">3</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1097,31 +1109,19 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="label50"> + <widget class="GtkLabel" id="transport_description"> <property name="visible">True</property> <property name="xalign">0</property> <property name="yalign">0</property> - <property name="label" translatable="yes">Description:</property> - <property name="justify">GTK_JUSTIFY_RIGHT</property> + <property name="label" translatable="yes">description</property> + <property name="wrap">True</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">3</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="transport_type_label"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="yalign">0</property> - <property name="label" translatable="yes">Server _Type: </property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_RIGHT</property> - <property name="mnemonic_widget">transport_type_dropdown</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> @@ -1185,18 +1185,6 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkEntry" id="transport_host"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="transport_host_label"> <property name="visible">True</property> <property name="xalign">1</property> @@ -1210,6 +1198,18 @@ For example: "Work" or "Personal"</property> <property name="y_options"></property> </packing> </child> + <child> + <widget class="GtkEntry" id="transport_host"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> </widget> <packing> <property name="expand">False</property> @@ -1401,6 +1401,50 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> + <widget class="GtkLabel" id="transport_auth_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">T_ype: </property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="mnemonic_widget">transport_auth_dropdown</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="transport_user_label"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">User_name:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_RIGHT</property> + <property name="mnemonic_widget">transport_user</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="transport_user"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> <widget class="GtkHBox" id="hbox195"> <property name="visible">True</property> <property name="spacing">6</property> @@ -1443,50 +1487,6 @@ For example: "Work" or "Personal"</property> <property name="y_options">GTK_FILL</property> </packing> </child> - <child> - <widget class="GtkEntry" id="transport_user"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="transport_user_label"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">User_name:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_RIGHT</property> - <property name="mnemonic_widget">transport_user</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="transport_auth_label"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">T_ype: </property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="mnemonic_widget">transport_auth_dropdown</property> - </widget> - <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> </widget> <packing> <property name="expand">False</property> @@ -1607,57 +1607,45 @@ For example: "Work" or "Personal"</property> <placeholder/> </child> <child> - <widget class="GtkHBox" id="hbox216"> + <widget class="GtkLabel" id="drafts_label"> <property name="visible">True</property> - <child> - <widget class="GtkButton" id="default_folders_button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label">gtk-revert-to-saved</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkFixed" id="fixed12"> - <property name="visible">True</property> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> + <property name="xalign">0</property> + <property name="label" translatable="yes">Drafts _Folder:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">drafts_button</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">3</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkFixed" id="fixed8"> + <widget class="GtkLabel" id="sent_label"> <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Sent _Messages Folder:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">sent_button</property> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkFixed" id="fixed9"> + <widget class="Custom" id="sent_button"> <property name="visible">True</property> + <property name="creation_function">em_account_editor_folder_selector_button_new</property> + <property name="string1">Select Sent Folder</property> </widget> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property> </packing> </child> @@ -1674,46 +1662,58 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="Custom" id="sent_button"> + <widget class="GtkFixed" id="fixed9"> <property name="visible">True</property> - <property name="creation_function">em_account_editor_folder_selector_button_new</property> - <property name="string1">Select Sent Folder</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> + <property name="left_attach">2</property> + <property name="right_attach">3</property> <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkLabel" id="sent_label"> + <widget class="GtkFixed" id="fixed8"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Sent _Messages Folder:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">sent_button</property> </widget> <packing> + <property name="left_attach">2</property> + <property name="right_attach">3</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkLabel" id="drafts_label"> + <widget class="GtkHBox" id="hbox216"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Drafts _Folder:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">drafts_button</property> + <child> + <widget class="GtkButton" id="default_folders_button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-revert-to-saved</property> + <property name="use_stock">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkFixed" id="fixed12"> + <property name="visible">True</property> + </widget> + <packing> + <property name="position">1</property> + </packing> + </child> </widget> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="left_attach">1</property> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> </packing> </child> </widget> @@ -1777,14 +1777,14 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkVBox" id="vbox188"> + <widget class="GtkVBox" id="vbox186"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="always_bcc"> + <widget class="GtkCheckButton" id="always_cc"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Always _blind carbon-copy (bcc) to:</property> + <property name="label" translatable="yes">Alway_s carbon-copy (cc) to:</property> <property name="use_underline">True</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> @@ -1795,10 +1795,10 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox211"> + <widget class="GtkHBox" id="hbox210"> <property name="visible">True</property> <child> - <widget class="GtkLabel" id="label523"> + <widget class="GtkLabel" id="label522"> <property name="visible">True</property> <property name="xpad">12</property> </widget> @@ -1808,16 +1808,16 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkTable" id="table33"> + <widget class="GtkTable" id="table32"> <property name="visible">True</property> <property name="column_spacing">6</property> <property name="row_spacing">2</property> <child> - <widget class="GtkVBox" id="vbox189"> + <widget class="GtkVBox" id="vbox187"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkEntry" id="bcc_addrs"> + <widget class="GtkEntry" id="cc_addrs"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> @@ -1836,20 +1836,16 @@ For example: "Work" or "Personal"</property> </packing> </child> </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - </packing> </child> <child> - <widget class="GtkVBox" id="vbox186"> + <widget class="GtkVBox" id="vbox188"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkCheckButton" id="always_cc"> + <widget class="GtkCheckButton" id="always_bcc"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Alway_s carbon-copy (cc) to:</property> + <property name="label" translatable="yes">Always _blind carbon-copy (bcc) to:</property> <property name="use_underline">True</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> @@ -1860,10 +1856,10 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox210"> + <widget class="GtkHBox" id="hbox211"> <property name="visible">True</property> <child> - <widget class="GtkLabel" id="label522"> + <widget class="GtkLabel" id="label523"> <property name="visible">True</property> <property name="xpad">12</property> </widget> @@ -1873,16 +1869,16 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkTable" id="table32"> + <widget class="GtkTable" id="table33"> <property name="visible">True</property> <property name="column_spacing">6</property> <property name="row_spacing">2</property> <child> - <widget class="GtkVBox" id="vbox187"> + <widget class="GtkVBox" id="vbox189"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkEntry" id="cc_addrs"> + <widget class="GtkEntry" id="bcc_addrs"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="invisible_char">*</property> @@ -1901,6 +1897,10 @@ For example: "Work" or "Personal"</property> </packing> </child> </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + </packing> </child> </widget> </child> @@ -2202,25 +2202,145 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkHBox" id="hbox209"> + <widget class="GtkEntry" id="smime_sign_key"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="smime_encrypt_key"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="smime_encrypt_to_self"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Also encrypt to sel_f when sending encrypted messages</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="right_attach">3</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="smime_encrypt_default"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Encrypt out_going messages (by default)</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="right_attach">3</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="smime_sign_default"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Digitally sign o_utgoing messages (by default)</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="right_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHSeparator" id="hseparator1"> + <property name="visible">True</property> + </widget> + <packing> + <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options">GTK_FILL</property> + <property name="y_padding">6</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label2"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Encry_ption certificate:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">smime_encrypt_key</property> + </widget> + <packing> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="label469"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Sig_ning certificate:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">smime_sign_key</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox208"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkButton" id="smime_sign_key_select"> + <widget class="GtkButton" id="smime_encrypt_key_select"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="response_id">0</property> <child> - <widget class="GtkAlignment" id="alignment29"> + <widget class="GtkAlignment" id="alignment28"> <property name="visible">True</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <widget class="GtkHBox" id="hbox1"> + <widget class="GtkHBox" id="hbox2"> <property name="visible">True</property> <property name="spacing">2</property> <child> - <widget class="GtkImage" id="image4"> + <widget class="GtkImage" id="image3"> <property name="visible">True</property> <property name="stock">gtk-open</property> </widget> @@ -2230,9 +2350,9 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="label1"> + <widget class="GtkLabel" id="button98"> <property name="visible">True</property> - <property name="label" translatable="yes">_Select...</property> + <property name="label" translatable="yes">S_elect...</property> <property name="use_underline">True</property> </widget> <packing> @@ -2252,21 +2372,21 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkButton" id="smime_sign_key_clear"> + <widget class="GtkButton" id="smime_encrypt_key_clear"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="response_id">0</property> <child> - <widget class="GtkAlignment" id="alignment34"> + <widget class="GtkAlignment" id="alignment35"> <property name="visible">True</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <widget class="GtkHBox" id="hbox229"> + <widget class="GtkHBox" id="hbox230"> <property name="visible">True</property> <property name="spacing">2</property> <child> - <widget class="GtkImage" id="image9"> + <widget class="GtkImage" id="image10"> <property name="visible">True</property> <property name="stock">gtk-clear</property> </widget> @@ -2276,9 +2396,9 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="label576"> + <widget class="GtkLabel" id="label577"> <property name="visible">True</property> - <property name="label" translatable="yes">Cle_ar</property> + <property name="label" translatable="yes">Clea_r</property> <property name="use_underline">True</property> </widget> <packing> @@ -2302,32 +2422,32 @@ For example: "Work" or "Personal"</property> <packing> <property name="left_attach">2</property> <property name="right_attach">3</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> <property name="x_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox208"> + <widget class="GtkHBox" id="hbox209"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkButton" id="smime_encrypt_key_select"> + <widget class="GtkButton" id="smime_sign_key_select"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="response_id">0</property> <child> - <widget class="GtkAlignment" id="alignment28"> + <widget class="GtkAlignment" id="alignment29"> <property name="visible">True</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <widget class="GtkHBox" id="hbox2"> + <widget class="GtkHBox" id="hbox1"> <property name="visible">True</property> <property name="spacing">2</property> <child> - <widget class="GtkImage" id="image3"> + <widget class="GtkImage" id="image4"> <property name="visible">True</property> <property name="stock">gtk-open</property> </widget> @@ -2337,9 +2457,9 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="button98"> + <widget class="GtkLabel" id="label1"> <property name="visible">True</property> - <property name="label" translatable="yes">S_elect...</property> + <property name="label" translatable="yes">_Select...</property> <property name="use_underline">True</property> </widget> <packing> @@ -2359,21 +2479,21 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkButton" id="smime_encrypt_key_clear"> + <widget class="GtkButton" id="smime_sign_key_clear"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="response_id">0</property> <child> - <widget class="GtkAlignment" id="alignment35"> + <widget class="GtkAlignment" id="alignment34"> <property name="visible">True</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <widget class="GtkHBox" id="hbox230"> + <widget class="GtkHBox" id="hbox229"> <property name="visible">True</property> <property name="spacing">2</property> <child> - <widget class="GtkImage" id="image10"> + <widget class="GtkImage" id="image9"> <property name="visible">True</property> <property name="stock">gtk-clear</property> </widget> @@ -2383,9 +2503,9 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkLabel" id="label577"> + <widget class="GtkLabel" id="label576"> <property name="visible">True</property> - <property name="label" translatable="yes">Clea_r</property> + <property name="label" translatable="yes">Cle_ar</property> <property name="use_underline">True</property> </widget> <packing> @@ -2409,130 +2529,10 @@ For example: "Work" or "Personal"</property> <packing> <property name="left_attach">2</property> <property name="right_attach">3</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label469"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Sig_ning certificate:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">smime_sign_key</property> - </widget> - <packing> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label2"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Encry_ption certificate:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">smime_encrypt_key</property> - </widget> - <packing> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkHSeparator" id="hseparator1"> - <property name="visible">True</property> - </widget> - <packing> - <property name="right_attach">3</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> <property name="y_options">GTK_FILL</property> - <property name="y_padding">6</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="smime_sign_default"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Digitally sign o_utgoing messages (by default)</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="right_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="smime_encrypt_default"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Encrypt out_going messages (by default)</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="right_attach">3</property> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="smime_encrypt_to_self"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Also encrypt to sel_f when sending encrypted messages</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="right_attach">3</property> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkEntry" id="smime_encrypt_key"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkEntry" id="smime_sign_key"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> </packing> </child> </widget> @@ -2764,63 +2764,63 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">6</property> <property name="row_spacing">6</property> <child> - <widget class="GtkLabel" id="label444"> + <widget class="GtkLabel" id="lblScreenVariable"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">Fix_ed width Font:</property> + <property name="label" translatable="yes">S_tandard Font:</property> <property name="use_underline">True</property> <property name="justify">GTK_JUSTIFY_RIGHT</property> - <property name="mnemonic_widget">FontFixed</property> + <property name="mnemonic_widget">FontVariable</property> </widget> <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkFontButton" id="FontVariable"> + <widget class="GtkFontButton" id="FontFixed"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="response_id">0</property> - <property name="title" translatable="yes">Select HTML variable width font</property> + <property name="title" translatable="yes">Select HTML fixed width font</property> <signal name="font_set" handler="changed"/> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkFontButton" id="FontFixed"> + <widget class="GtkFontButton" id="FontVariable"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="response_id">0</property> - <property name="title" translatable="yes">Select HTML fixed width font</property> + <property name="title" translatable="yes">Select HTML variable width font</property> <signal name="font_set" handler="changed"/> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="lblScreenVariable"> + <widget class="GtkLabel" id="label444"> <property name="visible">True</property> <property name="xalign">0</property> - <property name="label" translatable="yes">S_tandard Font:</property> + <property name="label" translatable="yes">Fix_ed width Font:</property> <property name="use_underline">True</property> <property name="justify">GTK_JUSTIFY_RIGHT</property> - <property name="mnemonic_widget">FontVariable</property> + <property name="mnemonic_widget">FontFixed</property> </widget> <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -3797,22 +3797,26 @@ For example: "Work" or "Personal"</property> <property name="n_rows">9</property> <property name="row_spacing">3</property> <child> - <widget class="GtkHBox" id="hbox244"> + <widget class="GtkHBox" id="hbox235"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkImage" id="image11"> + <widget class="GtkLabel" id="label586"> <property name="visible">True</property> - <property name="stock">gtk-info</property> + <property name="label" translatable="yes">_Default junk plugin:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">default_junk_plugin</property> </widget> <packing> <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">6</property> </packing> </child> <child> - <widget class="GtkLabel" id="label590"> + <widget class="Custom" id="default_junk_plugin"> <property name="visible">True</property> - <property name="label" translatable="yes">Option is ignored if a match for custom junk headers is found.</property> + <property name="creation_function">create_combo_text_widget</property> </widget> <packing> <property name="expand">False</property> @@ -3822,40 +3826,110 @@ For example: "Work" or "Personal"</property> </child> </widget> <packing> - <property name="top_attach">6</property> - <property name="bottom_attach">7</property> + <property name="top_attach">7</property> + <property name="bottom_attach">8</property> <property name="x_options">GTK_FILL</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="junk_lookup_local_only"> + <widget class="GtkCheckButton" id="chkCheckIncomingMail"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">_Lookup in local address book only</property> + <property name="tooltip" translatable="yes">Checks incoming mail messages to be Junk</property> + <property name="label" translatable="yes">Check incoming _messages for junk</property> <property name="use_underline">True</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> - <property name="top_attach">5</property> - <property name="bottom_attach">6</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> - <property name="x_padding">25</property> + <property name="x_padding">4</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="lookup_book"> + <widget class="GtkHBox" id="hbox236"> + <property name="visible">True</property> + <property name="spacing">3</property> + <child> + <widget class="GtkImage" id="plugin_image"> + <property name="visible">True</property> + <property name="icon_name">gtk-info</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="plugin_status"> + <property name="visible">True</property> + <property name="use_markup">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="top_attach">8</property> + <property name="bottom_attach">9</property> + <property name="x_options">GTK_FILL</property> + <property name="x_padding">15</property> + </packing> + </child> + <child> + <widget class="GtkHBox" id="hbox237"> + <property name="visible">True</property> + <property name="spacing">4</property> + <child> + <widget class="GtkCheckButton" id="junk_empty_check"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="label" translatable="yes">Delete junk messages on e_xit</property> + <property name="use_underline">True</property> + <property name="response_id">0</property> + <property name="draw_indicator">True</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + <child> + <widget class="GtkOptionMenu" id="junk_empty_combo"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + </widget> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="x_padding">4</property> + </packing> + </child> + <child> + <widget class="GtkCheckButton" id="junk_header_check"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Do not mar_k messages as junk if sender is in my address book</property> + <property name="label" translatable="yes">Check cu_stom headers for junk</property> <property name="use_underline">True</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> - <property name="top_attach">4</property> - <property name="bottom_attach">5</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> <property name="x_padding">4</property> @@ -3921,130 +3995,56 @@ For example: "Work" or "Personal"</property> </packing> </child> <child> - <widget class="GtkCheckButton" id="junk_header_check"> + <widget class="GtkCheckButton" id="lookup_book"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="label" translatable="yes">Check cu_stom headers for junk</property> + <property name="label" translatable="yes">Do not mar_k messages as junk if sender is in my address book</property> <property name="use_underline">True</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="top_attach">4</property> + <property name="bottom_attach">5</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> <property name="x_padding">4</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox237"> - <property name="visible">True</property> - <property name="spacing">4</property> - <child> - <widget class="GtkCheckButton" id="junk_empty_check"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="label" translatable="yes">Delete junk messages on e_xit</property> - <property name="use_underline">True</property> - <property name="response_id">0</property> - <property name="draw_indicator">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkOptionMenu" id="junk_empty_combo"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="response_id">0</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="x_padding">4</property> - </packing> - </child> - <child> - <widget class="GtkHBox" id="hbox236"> - <property name="visible">True</property> - <property name="spacing">3</property> - <child> - <widget class="GtkImage" id="plugin_image"> - <property name="visible">True</property> - <property name="icon_name">gtk-info</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="plugin_status"> - <property name="visible">True</property> - <property name="use_markup">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - <packing> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="x_options">GTK_FILL</property> - <property name="x_padding">15</property> - </packing> - </child> - <child> - <widget class="GtkCheckButton" id="chkCheckIncomingMail"> + <widget class="GtkCheckButton" id="junk_lookup_local_only"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="tooltip" translatable="yes">Checks incoming mail messages to be Junk</property> - <property name="label" translatable="yes">Check incoming _messages for junk</property> + <property name="label" translatable="yes">_Lookup in local address book only</property> <property name="use_underline">True</property> <property name="response_id">0</property> <property name="draw_indicator">True</property> </widget> <packing> + <property name="top_attach">5</property> + <property name="bottom_attach">6</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> - <property name="x_padding">4</property> + <property name="x_padding">25</property> </packing> </child> <child> - <widget class="GtkHBox" id="hbox235"> + <widget class="GtkHBox" id="hbox244"> <property name="visible">True</property> <property name="spacing">6</property> <child> - <widget class="GtkLabel" id="label586"> + <widget class="GtkImage" id="image11"> <property name="visible">True</property> - <property name="label" translatable="yes">_Default junk plugin:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">default_junk_plugin</property> + <property name="stock">gtk-info</property> </widget> <packing> <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">6</property> </packing> </child> <child> - <widget class="Custom" id="default_junk_plugin"> + <widget class="GtkLabel" id="label590"> <property name="visible">True</property> - <property name="creation_function">create_combo_text_widget</property> + <property name="label" translatable="yes">Option is ignored if a match for custom junk headers is found.</property> </widget> <packing> <property name="expand">False</property> @@ -4054,8 +4054,8 @@ For example: "Work" or "Personal"</property> </child> </widget> <packing> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> + <property name="top_attach">6</property> + <property name="bottom_attach">7</property> <property name="x_options">GTK_FILL</property> </packing> </child> @@ -4231,40 +4231,29 @@ For example: "Work" or "Personal"</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkComboBox" id="comboboxReplyStyle"> + <widget class="GtkLabel" id="lblReplyStyle"> <property name="visible">True</property> - <property name="items" translatable="yes">Attachment -Inline (Outlook style) -Quoted -Do Not Quote</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Reply style:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkComboBox" id="comboboxForwardStyle"> + <widget class="GtkOptionMenu" id="omenuCharset1"> <property name="visible">True</property> - <property name="items" translatable="yes">Attachment -Inline -Quoted</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> </widget> <packing> <property name="left_attach">1</property> <property name="right_attach">2</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="lblCharset"> - <property name="visible">True</property> - <property name="label" translatable="yes">C_haracter set:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">omenuCharset1</property> - </widget> - <packing> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> @@ -4285,14 +4274,13 @@ Quoted</property> </packing> </child> <child> - <widget class="GtkOptionMenu" id="omenuCharset1"> + <widget class="GtkLabel" id="lblCharset"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="response_id">0</property> + <property name="label" translatable="yes">C_haracter set:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">omenuCharset1</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> @@ -4300,18 +4288,30 @@ Quoted</property> </packing> </child> <child> - <widget class="GtkLabel" id="lblReplyStyle"> + <widget class="GtkComboBox" id="comboboxForwardStyle"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Reply style:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="items" translatable="yes">Attachment +Inline +Quoted</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + </packing> + </child> + <child> + <widget class="GtkComboBox" id="comboboxReplyStyle"> + <property name="visible">True</property> + <property name="items" translatable="yes">Attachment +Inline (Outlook style) +Quoted +Do Not Quote</property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> </widget> @@ -4499,183 +4499,11 @@ Quoted</property> </packing> </child> <child> - <widget class="GtkHBox" id="hboxSignatures"> + <widget class="GtkAlignment" id="alignSignatures"> <property name="visible">True</property> - <property name="spacing">6</property> + <property name="left_padding">12</property> <child> - <widget class="GtkLabel" id="label550"> - <property name="visible">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label549"> - <property name="visible">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkScrolledWindow" id="scrolledwindow46"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property> - <property name="shadow_type">GTK_SHADOW_IN</property> - <child> - <widget class="GtkTreeView" id="listSignatures"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="headers_visible">False</property> - <accessibility> - <atkproperty name="AtkObject::accessible_name" translatable="yes">Signatures Table</atkproperty> - </accessibility> - </widget> - </child> - </widget> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkVBox" id="vboxSignatureButtons"> - <property name="visible">True</property> - <property name="spacing">3</property> - <child> - <widget class="GtkVButtonBox" id="vbuttonbox25"> - <property name="visible">True</property> - <property name="spacing">6</property> - <property name="layout_style">GTK_BUTTONBOX_START</property> - <child> - <widget class="GtkButton" id="cmdSignatureAdd"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">gtk-add</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - </widget> - </child> - <child> - <widget class="GtkButton" id="cmdSignatureAddScript"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="response_id">0</property> - <signal name="clicked" handler="cmdSignatureAddScriptClicked"/> - <child> - <widget class="GtkAlignment" id="alignment32"> - <property name="visible">True</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <child> - <widget class="GtkHBox" id="hbox223"> - <property name="visible">True</property> - <property name="spacing">2</property> - <child> - <widget class="GtkImage" id="image7"> - <property name="visible">True</property> - <property name="stock">gtk-execute</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label554"> - <property name="visible">True</property> - <property name="label" translatable="yes">Add _Script</property> - <property name="use_underline">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="position">1</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="cmdSignatureEdit"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="response_id">0</property> - <child> - <widget class="GtkAlignment" id="alignment31"> - <property name="visible">True</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <child> - <widget class="GtkHBox" id="hbox222"> - <property name="visible">True</property> - <property name="spacing">2</property> - <child> - <widget class="GtkImage" id="image6"> - <property name="visible">True</property> - <property name="stock">gtk-properties</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="label553"> - <property name="visible">True</property> - <property name="label" translatable="yes">_Edit</property> - <property name="use_underline">True</property> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </widget> - </child> - </widget> - </child> - </widget> - <packing> - <property name="position">2</property> - </packing> - </child> - <child> - <widget class="GtkButton" id="cmdSignatureDelete"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="label">gtk-remove</property> - <property name="use_stock">True</property> - <property name="response_id">0</property> - </widget> - <packing> - <property name="position">3</property> - </packing> - </child> - </widget> - </child> - </widget> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> + <placeholder/> </child> </widget> <packing> @@ -5045,31 +4873,29 @@ Quoted</property> <property name="column_spacing">12</property> <property name="row_spacing">6</property> <child> - <widget class="GtkFontButton" id="print_variable"> + <widget class="GtkLabel" id="lblPrintVariable"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="response_id">0</property> - <property name="title" translatable="yes">Select HTML variable width font for printing</property> - <signal name="font_set" handler="changed"/> + <property name="xalign">0</property> + <property name="label" translatable="yes">V_ariable-width:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="mnemonic_widget">print_variable</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkFontButton" id="print_fixed"> + <widget class="GtkLabel" id="lblPrintFixed"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="response_id">0</property> - <property name="title" translatable="yes">Select HTML fixed width font for printing</property> - <signal name="font_set" handler="changed"/> + <property name="xalign">0</property> + <property name="label" translatable="yes">Fi_xed-width:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="mnemonic_widget">print_fixed</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> @@ -5077,15 +4903,16 @@ Quoted</property> </packing> </child> <child> - <widget class="GtkLabel" id="lblPrintFixed"> + <widget class="GtkFontButton" id="print_fixed"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Fi_xed-width:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="mnemonic_widget">print_fixed</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <property name="title" translatable="yes">Select HTML fixed width font for printing</property> + <signal name="font_set" handler="changed"/> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> @@ -5093,15 +4920,16 @@ Quoted</property> </packing> </child> <child> - <widget class="GtkLabel" id="lblPrintVariable"> + <widget class="GtkFontButton" id="print_variable"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">V_ariable-width:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="mnemonic_widget">print_variable</property> + <property name="can_focus">True</property> + <property name="response_id">0</property> + <property name="title" translatable="yes">Select HTML variable width font for printing</property> + <signal name="font_set" handler="changed"/> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -5182,32 +5010,20 @@ for display purposes only. </property> <property name="column_spacing">6</property> <property name="row_spacing">6</property> <child> - <widget class="GtkFileChooserButton" id="filechooserbutton_add_script"> + <widget class="GtkLabel" id="label459"> <property name="visible">True</property> - <property name="title" translatable="yes"></property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Name:</property> + <property name="use_underline">True</property> + <property name="justify">GTK_JUSTIFY_CENTER</property> + <property name="mnemonic_widget">entry_add_script_name</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="entry_add_script_name"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - <child> <widget class="GtkLabel" id="label460"> <property name="visible">True</property> <property name="xalign">0</property> @@ -5224,15 +5040,27 @@ for display purposes only. </property> </packing> </child> <child> - <widget class="GtkLabel" id="label459"> + <widget class="GtkEntry" id="entry_add_script_name"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Name:</property> - <property name="use_underline">True</property> - <property name="justify">GTK_JUSTIFY_CENTER</property> - <property name="mnemonic_widget">entry_add_script_name</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkFileChooserButton" id="filechooserbutton_add_script"> + <property name="visible">True</property> + <property name="title" translatable="yes"></property> </widget> <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -5405,64 +5233,105 @@ for display purposes only. </property> <property name="column_spacing">6</property> <property name="row_spacing">6</property> <child> - <widget class="GtkEntry" id="txtIgnoreHosts"> + <widget class="GtkLabel" id="lblHttpHost"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">H_TTP Proxy:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">txtHttpHost</property> + </widget> + <packing> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="lblHttpsHost"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">_Secure HTTP Proxy:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">txtHttpsHost</property> + </widget> + <packing> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="lblSocksHost"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">S_OCKS Host:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">txtSocksHost</property> + </widget> + <packing> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> + </packing> + </child> + <child> + <widget class="GtkLabel" id="lblIgnoreHosts"> + <property name="visible">True</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">No _Proxy for:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">txtIgnoreHosts</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">4</property> <property name="top_attach">3</property> <property name="bottom_attach">4</property> + <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkSpinButton" id="spnSocksPort"> + <widget class="GtkEntry" id="txtHttpHost"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="adjustment">0 0 65535 1 10 0</property> - <property name="climb_rate">1</property> + <property name="invisible_char">*</property> </widget> <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkSpinButton" id="spnHttpsPort"> + <widget class="GtkEntry" id="txtHttpsHost"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="adjustment">0 0 65535 1 10 0</property> - <property name="climb_rate">1</property> + <property name="invisible_char">*</property> </widget> <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkSpinButton" id="spnHttpPort"> + <widget class="GtkEntry" id="txtSocksHost"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="adjustment">0 0 65535 1 10 0</property> - <property name="climb_rate">1</property> + <property name="invisible_char">*</property> </widget> <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="lblSocksPort"> + <widget class="GtkLabel" id="lblHttpPort"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">Port:</property> @@ -5470,8 +5339,6 @@ for display purposes only. </property> <packing> <property name="left_attach">2</property> <property name="right_attach">3</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> @@ -5492,7 +5359,7 @@ for display purposes only. </property> </packing> </child> <child> - <widget class="GtkLabel" id="lblHttpPort"> + <widget class="GtkLabel" id="lblSocksPort"> <property name="visible">True</property> <property name="xalign">0</property> <property name="label" translatable="yes">Port:</property> @@ -5500,105 +5367,66 @@ for display purposes only. </property> <packing> <property name="left_attach">2</property> <property name="right_attach">3</property> + <property name="top_attach">2</property> + <property name="bottom_attach">3</property> <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="txtSocksHost"> + <widget class="GtkSpinButton" id="spnHttpPort"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> + <property name="adjustment">0 0 65535 1 10 0</property> + <property name="climb_rate">1</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">2</property> - <property name="bottom_attach">3</property> + <property name="left_attach">3</property> + <property name="right_attach">4</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="txtHttpsHost"> + <widget class="GtkSpinButton" id="spnHttpsPort"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> + <property name="adjustment">0 0 65535 1 10 0</property> + <property name="climb_rate">1</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="left_attach">3</property> + <property name="right_attach">4</property> <property name="top_attach">1</property> <property name="bottom_attach">2</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkEntry" id="txtHttpHost"> + <widget class="GtkSpinButton" id="spnSocksPort"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="lblIgnoreHosts"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">No _Proxy for:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">txtIgnoreHosts</property> - </widget> - <packing> - <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="lblSocksHost"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">S_OCKS Host:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">txtSocksHost</property> + <property name="adjustment">0 0 65535 1 10 0</property> + <property name="climb_rate">1</property> </widget> <packing> + <property name="left_attach">3</property> + <property name="right_attach">4</property> <property name="top_attach">2</property> <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> <property name="y_options"></property> </packing> </child> <child> - <widget class="GtkLabel" id="lblHttpsHost"> - <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">_Secure HTTP Proxy:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">txtHttpsHost</property> - </widget> - <packing> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> - </packing> - </child> - <child> - <widget class="GtkLabel" id="lblHttpHost"> + <widget class="GtkEntry" id="txtIgnoreHosts"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">H_TTP Proxy:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">txtHttpHost</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> </widget> <packing> - <property name="x_options">GTK_FILL</property> + <property name="left_attach">1</property> + <property name="right_attach">4</property> + <property name="top_attach">3</property> + <property name="bottom_attach">4</property> <property name="y_options"></property> </packing> </child> @@ -5633,28 +5461,16 @@ for display purposes only. </property> <property name="column_spacing">6</property> <property name="row_spacing">3</property> <child> - <widget class="GtkEntry" id="txtAuthPwd"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="visibility">False</property> - <property name="invisible_char">*</property> - </widget> - <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - </packing> - </child> - <child> - <widget class="GtkEntry" id="txtAuthUser"> + <widget class="GtkLabel" id="lblAuthUser"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="invisible_char">*</property> + <property name="xalign">0</property> + <property name="label" translatable="yes">Us_ername:</property> + <property name="use_underline">True</property> + <property name="mnemonic_widget">txtAuthUser</property> </widget> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="x_options">GTK_FILL</property> + <property name="y_options"></property> </packing> </child> <child> @@ -5673,16 +5489,28 @@ for display purposes only. </property> </packing> </child> <child> - <widget class="GtkLabel" id="lblAuthUser"> + <widget class="GtkEntry" id="txtAuthUser"> <property name="visible">True</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Us_ername:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">txtAuthUser</property> + <property name="can_focus">True</property> + <property name="invisible_char">*</property> </widget> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + </packing> + </child> + <child> + <widget class="GtkEntry" id="txtAuthPwd"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="visibility">False</property> + <property name="invisible_char">*</property> + </widget> + <packing> + <property name="left_attach">1</property> + <property name="right_attach">2</property> + <property name="top_attach">1</property> + <property name="bottom_attach">2</property> </packing> </child> </widget> diff --git a/mail/mail-config.h b/mail/mail-config.h index a667faf946..ecbdb198ea 100644 --- a/mail/mail-config.h +++ b/mail/mail-config.h @@ -111,8 +111,6 @@ gboolean mail_config_get_enable_magic_spacebar (void); struct _EAccountService *mail_config_get_default_transport (void); /* signatures */ -struct _ESignature *mail_config_signature_new (const char *filename, gboolean script, gboolean html); - char *mail_config_signature_run_script (const char *script); diff --git a/mail/mail-signature-editor.c b/mail/mail-signature-editor.c deleted file mode 100644 index 511942ca77..0000000000 --- a/mail/mail-signature-editor.c +++ /dev/null @@ -1,500 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see <http://www.gnu.org/licenses/> - * - * - * Authors: - * Radek Doulik <rodo@ximian.com> - * Jeffrey Stedfast <fejj@ximian.com> - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#include "mail-signature-editor.h" - -#include <string.h> -#include <glib/gi18n.h> - -#include <e-util/e-error.h> -#include <e-util/e-signature-utils.h> -#include <composer/e-msg-composer.h> - -#include "mail-config.h" - -#define E_SIGNATURE_EDITOR_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_SIGNATURE_EDITOR, ESignatureEditorPrivate)) - -enum { - PROP_0, - PROP_SIGNATURE -}; - -struct _ESignatureEditorPrivate { - GtkActionGroup *action_group; - ESignature *signature; - GtkWidget *entry; - gchar *original_name; -}; - -static const gchar *ui = -"<ui>\n" -" <menubar name='main-menu'>\n" -" <placeholder name='pre-edit-menu'>\n" -" <menu action='file-menu'>\n" -" <menuitem action='save-and-close'/>\n" -" <separator/>" -" <menuitem action='close'/>\n" -" </menu>\n" -" </placeholder>\n" -" </menubar>\n" -" <toolbar name='main-toolbar'>\n" -" <placeholder name='pre-main-toolbar'>\n" -" <toolitem action='save-and-close'/>\n" -" </placeholder>\n" -" </toolbar>\n" -"</ui>"; - -static gpointer parent_class = NULL; - -static void -handle_error (GError **error) -{ - if (*error != NULL) { - g_warning ("%s", (*error)->message); - g_clear_error (error); - } -} - -static void -action_close_cb (GtkAction *action, - ESignatureEditor *editor) -{ - gboolean something_changed = FALSE; - const gchar *original_name; - const gchar *signature_name; - - original_name = editor->priv->original_name; - signature_name = gtk_entry_get_text (GTK_ENTRY (editor->priv->entry)); - - something_changed |= gtkhtml_editor_has_undo (GTKHTML_EDITOR (editor)); - something_changed |= (strcmp (signature_name, original_name) != 0); - - if (something_changed) { - gint response; - - response = e_error_run ( - GTK_WINDOW (editor), - "mail:ask-signature-changed", NULL); - if (response == GTK_RESPONSE_YES) { - GtkActionGroup *action_group; - - action_group = editor->priv->action_group; - action = gtk_action_group_get_action ( - action_group, "save-and-close"); - gtk_action_activate (action); - return; - } else if (response == GTK_RESPONSE_CANCEL) - return; - } - - gtk_widget_destroy (GTK_WIDGET (editor)); -} - -static void -action_save_and_close_cb (GtkAction *action, - ESignatureEditor *editor) -{ - GtkWidget *entry; - ESignatureList *signature_list; - ESignature *signature; - ESignature *same_name; - const gchar *filename; - gchar *signature_name; - gboolean html; - GError *error = NULL; - - entry = editor->priv->entry; - html = gtkhtml_editor_get_html_mode (GTKHTML_EDITOR (editor)); - - if (editor->priv->signature == NULL) - signature = mail_config_signature_new (NULL, FALSE, html); - else { - signature = g_object_ref (editor->priv->signature); - signature->html = html; - } - - filename = signature->filename; - gtkhtml_editor_save (GTKHTML_EDITOR (editor), filename, html, &error); - - if (error != NULL) { - e_error_run ( - GTK_WINDOW (editor), - "mail:no-save-signature", - error->message, NULL); - g_clear_error (&error); - return; - } - - signature_list = e_get_signature_list (); - - signature_name = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry))); - g_strstrip (signature_name); - - /* Make sure the signature name is not blank. */ - if (*signature_name == '\0') { - e_error_run ( - GTK_WINDOW (editor), - "mail:blank-signature", NULL); - gtk_widget_grab_focus (entry); - g_free (signature_name); - return; - } - - /* Don't overwrite an existing signature of the same name. - * XXX ESignatureList misuses const. */ - same_name = (ESignature *) e_signature_list_find ( - signature_list, E_SIGNATURE_FIND_NAME, signature_name); - if (same_name != NULL && strcmp (signature->uid, same_name->uid) != 0) { - e_error_run ( - GTK_WINDOW (editor), - "mail:signature-already-exists", - signature_name, NULL); - gtk_widget_grab_focus (entry); - g_free (signature_name); - return; - } - - g_free (signature->name); - signature->name = signature_name; - - if (editor->priv->signature != NULL) - e_signature_list_change (signature_list, signature); - else { - e_signature_list_add (signature_list, signature); - e_signature_list_save (signature_list); - } - - gtk_widget_destroy (GTK_WIDGET (editor)); -} - -static GtkActionEntry entries[] = { - - { "close", - GTK_STOCK_CLOSE, - N_("_Close"), - "<Control>w", - NULL, - G_CALLBACK (action_close_cb) }, - - { "save-and-close", - GTK_STOCK_SAVE, - N_("_Save and Close"), - "<Control>Return", - NULL, - G_CALLBACK (action_save_and_close_cb) }, - - { "file-menu", - NULL, - N_("_File"), - NULL, - NULL, - NULL } -}; - -static gboolean -signature_editor_delete_event_cb (ESignatureEditor *editor, - GdkEvent *event) -{ - GtkActionGroup *action_group; - GtkAction *action; - - action_group = editor->priv->action_group; - action = gtk_action_group_get_action (action_group, "close"); - gtk_action_activate (action); - - return TRUE; -} - -static void -signature_editor_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - switch (property_id) { - case PROP_SIGNATURE: - e_signature_editor_set_signature ( - E_SIGNATURE_EDITOR (object), - g_value_get_object (value)); - return; - } - - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -} - -static void -signature_editor_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - switch (property_id) { - case PROP_SIGNATURE: - g_value_set_object ( - value, e_signature_editor_get_signature ( - E_SIGNATURE_EDITOR (object))); - return; - } - - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -} - -static void -signature_editor_dispose (GObject *object) -{ - ESignatureEditorPrivate *priv; - - priv = E_SIGNATURE_EDITOR_GET_PRIVATE (object); - - if (priv->action_group != NULL) { - g_object_unref (priv->action_group); - priv->action_group = NULL; - } - - if (priv->signature != NULL) { - g_object_unref (priv->signature); - priv->signature = NULL; - } - - if (priv->entry != NULL) { - g_object_unref (priv->entry); - priv->entry = NULL; - } - - /* Chain up to parent's dispose() method. */ - G_OBJECT_CLASS (parent_class)->dispose (object); -} - -static void -signature_editor_finalize (GObject *object) -{ - ESignatureEditorPrivate *priv; - - priv = E_SIGNATURE_EDITOR_GET_PRIVATE (object); - - g_free (priv->original_name); - - /* Chain up to parent's finalize() method. */ - G_OBJECT_CLASS (parent_class)->finalize (object); -} - -static void -signature_editor_class_init (ESignatureEditorClass *class) -{ - GObjectClass *object_class; - - parent_class = g_type_class_peek_parent (class); - g_type_class_add_private (class, sizeof (ESignatureEditorPrivate)); - - object_class = G_OBJECT_CLASS (class); - object_class->set_property = signature_editor_set_property; - object_class->get_property = signature_editor_get_property; - object_class->dispose = signature_editor_dispose; - object_class->finalize = signature_editor_finalize; - - g_object_class_install_property ( - object_class, - PROP_SIGNATURE, - g_param_spec_object ( - "signature", - NULL, - NULL, - E_TYPE_SIGNATURE, - G_PARAM_READWRITE)); -} - -static void -signature_editor_init (ESignatureEditor *editor) -{ - GtkActionGroup *action_group; - GtkUIManager *manager; - GtkWidget *container; - GtkWidget *widget; - GtkWidget *vbox; - GError *error = NULL; - - editor->priv = E_SIGNATURE_EDITOR_GET_PRIVATE (editor); - vbox = GTKHTML_EDITOR (editor)->vbox; - - manager = gtkhtml_editor_get_ui_manager (GTKHTML_EDITOR (editor)); - - gtk_ui_manager_add_ui_from_string (manager, ui, -1, &error); - handle_error (&error); - - action_group = gtk_action_group_new ("signature"); - gtk_action_group_set_translation_domain ( - action_group, GETTEXT_PACKAGE); - gtk_action_group_add_actions ( - action_group, entries, - G_N_ELEMENTS (entries), editor); - gtk_ui_manager_insert_action_group (manager, action_group, 0); - editor->priv->action_group = g_object_ref (action_group); - - gtk_ui_manager_ensure_update (manager); - - gtk_window_set_title (GTK_WINDOW (editor), _("Edit Signature")); - - widget = gtk_hbox_new (FALSE, 6); - gtk_container_set_border_width (GTK_CONTAINER (widget), 6); - gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); - /* Position 2 should be between the main and style toolbars. */ - gtk_box_reorder_child (GTK_BOX (vbox), widget, 2); - gtk_widget_show (widget); - container = widget; - - widget = gtk_entry_new (); - gtk_box_pack_end (GTK_BOX (container), widget, TRUE, TRUE, 0); - editor->priv->entry = g_object_ref_sink (widget); - gtk_widget_show (widget); - - widget = gtk_label_new_with_mnemonic (_("_Signature Name:")); - gtk_label_set_mnemonic_widget (GTK_LABEL (widget), editor->priv->entry); - gtk_box_pack_end (GTK_BOX (container), widget, FALSE, FALSE, 0); - gtk_widget_show (widget); - - g_signal_connect ( - editor, "delete-event", - G_CALLBACK (signature_editor_delete_event_cb), NULL); - - e_signature_editor_set_signature (editor, NULL); -} - -GType -e_signature_editor_get_type (void) -{ - static GType type = 0; - - if (G_UNLIKELY (type == 0)) { - static const GTypeInfo type_info = { - sizeof (ESignatureEditorClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) signature_editor_class_init, - (GClassFinalizeFunc) NULL, - NULL, /* class_data */ - sizeof (ESignatureEditor), - 0, /* n_preallocs */ - (GInstanceInitFunc) signature_editor_init, - NULL /* value_table */ - }; - - type = g_type_register_static ( - GTKHTML_TYPE_EDITOR, "ESignatureEditor", - &type_info, 0); - } - - return type; -} - -GtkWidget * -e_signature_editor_new (void) -{ - return g_object_new (E_TYPE_SIGNATURE_EDITOR, NULL); -} - -ESignature * -e_signature_editor_get_signature (ESignatureEditor *editor) -{ - g_return_val_if_fail (E_IS_SIGNATURE_EDITOR (editor), NULL); - - return editor->priv->signature; -} - -void -e_signature_editor_set_signature (ESignatureEditor *editor, - ESignature *signature) -{ - const gchar *filename; - const gchar *signature_name; - gchar *contents; - gsize length; - GError *error = NULL; - - g_return_if_fail (E_IS_SIGNATURE_EDITOR (editor)); - - if (signature != NULL) - g_return_if_fail (E_SIGNATURE (signature)); - - if (editor->priv->signature != NULL) { - g_object_unref (editor->priv->signature); - editor->priv->signature = NULL; - } - - if (signature == NULL) - goto exit; - - editor->priv->signature = g_object_ref (signature); - - /* Load signature content. */ - - filename = signature->filename; - - if (signature->html) - g_file_get_contents (filename, &contents, &length, &error); - else { - gchar *data; - - data = e_msg_composer_get_sig_file_content (filename, FALSE); - contents = g_strdup_printf ("<PRE>\n%s", data); - length = -1; - g_free (data); - } - - if (error == NULL) { - gtkhtml_editor_set_html_mode ( - GTKHTML_EDITOR (editor), signature->html); - gtkhtml_editor_set_text_html ( - GTKHTML_EDITOR (editor), contents, length); - g_free (contents); - } else { - g_warning ("%s", error->message); - g_error_free (error); - } - -exit: - if (signature != NULL) - signature_name = signature->name; - else - signature_name = _("Unnamed"); - - /* Set the entry text before we grab focus. */ - g_free (editor->priv->original_name); - editor->priv->original_name = g_strdup (signature_name); - gtk_entry_set_text (GTK_ENTRY (editor->priv->entry), signature_name); - - /* Set the focus appropriately. If this is a new signature, draw - * the user's attention to the signature name entry. Otherwise go - * straight to the editing area. */ - if (signature == NULL) - gtk_widget_grab_focus (editor->priv->entry); - else { - GtkHTML *html; - - html = gtkhtml_editor_get_html (GTKHTML_EDITOR (editor)); - gtk_widget_grab_focus (GTK_WIDGET (html)); - } - - g_object_notify (G_OBJECT (editor), "signature"); -} diff --git a/mail/mail-signature-editor.h b/mail/mail-signature-editor.h deleted file mode 100644 index 649504be18..0000000000 --- a/mail/mail-signature-editor.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see <http://www.gnu.org/licenses/> - * - * - * Authors: - * Radek Doulik <rodo@ximian.com> - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifndef MAIL_SIGNATURE_EDITOR_H -#define MAIL_SIGNATURE_EDITOR_H - -#include <gtkhtml-editor.h> -#include <e-util/e-signature.h> - -/* Standard GObject macros */ -#define E_TYPE_SIGNATURE_EDITOR \ - (e_signature_editor_get_type ()) -#define E_SIGNATURE_EDITOR(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST \ - ((obj), E_TYPE_SIGNATURE_EDITOR, ESignatureEditor)) -#define E_SIGNATURE_EDITOR_CLASS(cls) \ - (G_TYPE_CHECK_CLASS_CAST \ - ((cls), E_TYPE_SIGNATURE_EDITOR, ESignatureEditorClass)) -#define E_IS_SIGNATURE_EDITOR(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE \ - ((obj), E_TYPE_SIGNATURE_EDITOR)) -#define E_IS_SIGNATURE_EDITOR_CLASS(cls) \ - (G_TYPE_CHECK_CLASS_TYPE \ - ((cls), E_TYPE_SIGNATURE_EDITOR)) -#define E_SIGNATURE_EDITOR_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS \ - ((obj), E_TYPE_SIGNATURE_EDITOR, ESignatureEditorClass)) - -G_BEGIN_DECLS - -typedef struct _ESignatureEditor ESignatureEditor; -typedef struct _ESignatureEditorClass ESignatureEditorClass; -typedef struct _ESignatureEditorPrivate ESignatureEditorPrivate; - -struct _ESignatureEditor { - GtkhtmlEditor parent; - ESignatureEditorPrivate *priv; -}; - -struct _ESignatureEditorClass { - GtkhtmlEditorClass parent_class; -}; - -GType e_signature_editor_get_type (void); -GtkWidget * e_signature_editor_new (void); -ESignature * e_signature_editor_get_signature (ESignatureEditor *editor); -void e_signature_editor_set_signature (ESignatureEditor *editor, - ESignature *signature); - -G_END_DECLS - -#endif /* MAIL_SIGNATURE_EDITOR_H */ |