diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2008-04-03 02:37:22 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2008-04-03 02:37:22 +0800 |
commit | 16068d9b4191ea142a9e75a50eb8d260ed2bb406 (patch) | |
tree | 835a7909cd8b352d8c414986f1f5e27697b4de98 /widgets/misc/e-charset-picker.c | |
parent | ee50e5d68e4f1a793541f1ee4979818ed4940173 (diff) | |
download | gsoc2013-evolution-16068d9b4191ea142a9e75a50eb8d260ed2bb406.tar gsoc2013-evolution-16068d9b4191ea142a9e75a50eb8d260ed2bb406.tar.gz gsoc2013-evolution-16068d9b4191ea142a9e75a50eb8d260ed2bb406.tar.bz2 gsoc2013-evolution-16068d9b4191ea142a9e75a50eb8d260ed2bb406.tar.lz gsoc2013-evolution-16068d9b4191ea142a9e75a50eb8d260ed2bb406.tar.xz gsoc2013-evolution-16068d9b4191ea142a9e75a50eb8d260ed2bb406.tar.zst gsoc2013-evolution-16068d9b4191ea142a9e75a50eb8d260ed2bb406.zip |
** Merge the mbarnes-composer branch
2008-04-02 Matthew Barnes <mbarnes@redhat.com>
** Merge the mbarnes-composer branch
* configure.in:
Bump libgtkhtml requirement to 3.19.1.
Add gtkhtml-editor dependency for addressbook, calendar and mail.
Remove print-message plugin; new composer implements this natively.
* tools/Makefile.am:
Remove CORBA rules for the old composer.
* addressbook/gui/widgets/Makefile.am:
Remove CORBA rules for the old composer.
* addressbook/gui/widgets/eab-gui-util.c
(eab_send_to_contact_and_email_num_list),
(eab_send_contact_list_as_attachment):
Adapt to new Bonobo-less composer widget.
* calendar/gui/Makefile.am:
Remove CORBA rules for the old composer.
* calendar/gui/itip-utils.c (comp_from), (comp_to_list),
(comp_subject), (comp_content_type), (comp_filename),
(comp_description), (append_cal_attachments), (itip_send_comp),
(reply_to_calendar_comp):
Adapt to new Bonobo-less composer widget.
* composer/Makefile.am:
Remove CORBA rules for the old composer.
* composer/e-msg-composer.c:
* composer/e-msg-composer.h:
EMsgComposer is now a subclass of GtkhtmlEditor.
Extensive refactoring and cleanup, too much to list in detail.
* composer/e-composer-header.c:
* composer/e-composer-header.h:
Add "sensitive" property along with get/set functions.
* composer/e-composer-from-header.c:
* composer/e-composer-from-header.h:
Propagate "refreshed" signal from EAccountComboBox.
Add function e_composer_from_header_get_account_list().
* composer/e-composer-private.c:
* composer/e-composer-private.h:
New files manage composer's private data.
Allows other composer files to manipulate private data.
* composer/e-msg-composer-hdrs.c:
* composer/e-msg-composer-hdrs.h:
Remove these files; replaced by EComposerHeaderTable widget.
* composer/evolution-composer.c:
* composer/evolution-composer.h:
Remove these files; composer is now a subclass of GtkhtmlEditor.
* composer/e-msg-composer-select-file.c:
* composer/e-msg-composer-select-file.h:
Remove these files; logic moved to e-msg-composer.c.
* composer/listener.c:
* composer/listener.h:
Remove these files; event handlers moved to e-msg-composer.c.
* composer/Composer.idl:
* composer/Evolution-Composer.idl:
Remove these files; composer is no longer a Bonobo object.
* mail/em-composer-prefs (sig_edit_cb),
(em_composer_prefs_new_signature):
Adapt to new Bonobo-less signature editor.
* mail/mail-signature-editor.c:
* mail/mail-signature-editor.h:
Rewrite the signature editor as a subclass of GtkhtmlEditor.
Eliminates Bonobo from the equation.
* mail/em-composer-utils.c (composer_get_message),
(em_utils_composer_send_cb), (save_draft_done),
(em_utils_composer_save_draft_cb), (create_new_composer),
(em_utils_compose_new_message),
(em_utils_compose_new_message_with_mailto), (em_utils_post_to_folder),
(em_utils_post_to_url), (edit_message), (forward_attached),
(forward_non_attached), (reply_get_composer), (composer_set_body),
(em_utils_reply_to_message), (post_reply_to_message):
Adapt to new Bonobo-less composer.
* mail/mail-component-factory.c:
Composer is no longer needs a Bonobo factory.
* mail/mail-config.c:
Fix style pattern for EMsgComposer widgets.
* plugins/groupwise/mail-send-options.c
(org_gnome_composer_send_options):
Adapt to streamlined EMsgComposer API.
* plugins/exchange-operations/Makefile.am:
Add EVOLUTION_MAIL_CFLAGS and EVOLUTION_MAIL_LIBS.
* plugins/exchange-operations/exchange-mail-send-options.c
(append_to_header), (org_gnome_exchange_send_options):
Adapt to streamlined EMsgComposer API.
* plugins/mailing-list-actions/mailing-list-actions.c
(emla_list_action_do):
Adapt to streamlined EMsgComposer API.
* po/POTFILES.in: Update file list for new composer.
* ui/evolution-composer-entries.xml:
Remove this file; obsoleted by new composer.
* widgets/misc/Makefile.am:
Add EVOLUTION_MAIL_LIBS.
* widgets/misc/e-account-combo-box.c:
* widgets/misc/e-account-combo-box.h:
New function e_account_combo_box_get_account_list().
Emit a "refreshed" signal when the EAccountList changes.
Add an internal reverse-lookup index.
* widgets/misc/e-charset-picker.c (e_charser_add_radio_actions):
New function adds radio actions to an action group.
Will eventually replace e_charset_picker_bonobo_ui_populate().
* widgets/misc/e-signature-combo-box.c:
* widgets/misc/e-signature-combo-box.h:
New function e_signature_combo_box_get_signature_list().
... separate issue ...
* configure.in:
Bump eds_minimum_version to 2.23.1 for
CAMEL_FOLDER_JUNKED_NOT_DELETED symbol.
svn path=/trunk/; revision=35313
Diffstat (limited to 'widgets/misc/e-charset-picker.c')
-rw-r--r-- | widgets/misc/e-charset-picker.c | 130 |
1 files changed, 121 insertions, 9 deletions
diff --git a/widgets/misc/e-charset-picker.c b/widgets/misc/e-charset-picker.c index 3254c9d42f..2efffdd8b8 100644 --- a/widgets/misc/e-charset-picker.c +++ b/widgets/misc/e-charset-picker.c @@ -28,15 +28,6 @@ #include <string.h> #include <iconv.h> -#include <gtk/gtkhbox.h> -#include <gtk/gtkvbox.h> -#include <gtk/gtkentry.h> -#include <gtk/gtkstock.h> -#include <gtk/gtklabel.h> -#include <gtk/gtkmenuitem.h> -#include <gtk/gtkoptionmenu.h> -#include <gtk/gtksignal.h> - #include <glib/gi18n.h> #include <bonobo/bonobo-ui-node.h> @@ -446,6 +437,127 @@ e_charset_picker_dialog (const char *title, const char *prompt, } /** + * e_charset_add_radio_actions: + * @action_group: a #GtkActionGroup + * @default_charset: the default character set, or %NULL to use the + * locale character set + * @callback: a callback function for actions in the group, or %NULL + * @user_data: user data to be passed to @callback, or %NULL + * + * Adds a set of #GtkRadioActions for available character sets to + * @action_group. The @default_charset (or locale character set if + * @default_charset is %NULL) will be added first, and selected by + * default (except that iso-8859-1 will always be used instead of + * US-ASCII). Any other character sets of the same language class as + * the default will be added next, followed by the remaining character + * sets. + **/ +void +e_charset_add_radio_actions (GtkActionGroup *action_group, + const gchar *default_charset, + GCallback callback, + gpointer user_data) +{ + GtkRadioAction *action = NULL; + GSList *group = NULL; + const gchar *locale_charset; + gint def, ii; + + g_return_if_fail (GTK_IS_ACTION_GROUP (action_group)); + + /* XXX I could try to factor out code common to this + * function and e_charset_picker_bonobo_ui_populate() + * instead of duplicating it, but I expect the latter + * function to be obsolete in the foreseeable future. */ + + g_get_charset (&locale_charset); + if (!g_ascii_strcasecmp (locale_charset, "US-ASCII")) + locale_charset = "iso-8859-1"; + + if (default_charset == NULL) + default_charset = locale_charset; + for (def = 0; def < G_N_ELEMENTS (charsets); def++) + if (!g_ascii_strcasecmp (charsets[def].name, default_charset)) + break; + + for (ii = 0; ii < G_N_ELEMENTS (charsets); ii++) { + gchar *escaped_name; + gchar *charset_label; + gchar **str_array; + + /* Escape underlines in the character set name so + * they're not treated as GtkLabel mnemonics. */ + str_array = g_strsplit (charsets[ii].name, "_", -1); + escaped_name = g_strjoinv ("__", str_array); + g_strfreev (str_array); + + if (charsets[ii].subclass != NULL) + charset_label = g_strdup_printf ( + "%s, %s (%s)", + gettext (classnames[charsets[ii].class]), + gettext (charsets[ii].subclass), + escaped_name); + else if (charsets[ii].class != E_CHARSET_UNKNOWN) + charset_label = g_strdup_printf ( + "%s (%s)", + gettext (classnames[charsets[ii].class]), + escaped_name); + else + charset_label = g_strdup (escaped_name); + + action = gtk_radio_action_new ( + charsets[ii].name, charset_label, NULL, NULL, ii); + + gtk_radio_action_set_group (action, group); + group = gtk_radio_action_get_group (action); + + if (callback != NULL) + g_signal_connect ( + action, "changed", callback, user_data); + + gtk_action_group_add_action ( + action_group, GTK_ACTION (action)); + + g_object_unref (action); + + g_free (escaped_name); + g_free (charset_label); + } + + if (def == G_N_ELEMENTS (charsets)) { + gchar *charset_label; + gchar **str_array; + + /* Escape underlines in the character set name so + * they're not treated as GtkLabel mnemonics. */ + str_array = g_strsplit (default_charset, "_", -1); + charset_label = g_strjoinv ("__", str_array); + g_strfreev (str_array); + + action = gtk_radio_action_new ( + default_charset, charset_label, NULL, NULL, def); + + gtk_radio_action_set_group (action, group); + group = gtk_radio_action_get_group (action); + + if (callback != NULL) + g_signal_connect ( + action, "changed", callback, user_data); + + gtk_action_group_add_action ( + action_group, GTK_ACTION (action)); + + g_object_unref (action); + + g_free (charset_label); + } + + /* Any of the actions in the action group will do. */ + if (action != NULL) + gtk_radio_action_set_current_value (action, def); +} + +/** * e_charset_picker_bonobo_ui_populate: * @uic: Bonobo UI Component * @path: menu path |