diff options
author | Matthew Barnes <mbarnes@src.gnome.org> | 2009-01-18 04:06:17 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2009-01-18 04:06:17 +0800 |
commit | c22126d54f0cf0637e3d5ddd5d78b3ff5d111582 (patch) | |
tree | 64f296a85dd817e3184159126e8dbde39c173363 | |
parent | 4d07d219d1f18aeba2c16317ade4b4004d8934b9 (diff) | |
download | gsoc2013-evolution-c22126d54f0cf0637e3d5ddd5d78b3ff5d111582.tar.gz gsoc2013-evolution-c22126d54f0cf0637e3d5ddd5d78b3ff5d111582.tar.zst gsoc2013-evolution-c22126d54f0cf0637e3d5ddd5d78b3ff5d111582.zip |
Hack GtkIconTheme so we can reference category icons as named icons.
Necessary for EActionComboBox, since GtkActions can only handle named
or stock icons. Hopefully this is just a temporary hack. Eventually
we should make the category icons themeable.
Kill the "mail-account-disable" plugin and integrate it properly.
More dead plugins to follow...
Don't show disabled menu items in pop-up context menus. It does the
user no good to see things he CAN'T do with the object he clicked on.
svn path=/branches/kill-bonobo/; revision=37093
26 files changed, 343 insertions, 245 deletions
diff --git a/addressbook/gui/component/e-book-shell-view-actions.c b/addressbook/gui/component/e-book-shell-view-actions.c index fc9e6b99db..ce044d08f1 100644 --- a/addressbook/gui/component/e-book-shell-view-actions.c +++ b/addressbook/gui/component/e-book-shell-view-actions.c @@ -884,6 +884,7 @@ e_book_shell_view_update_search_filter (EBookShellView *book_shell_view) list = e_categories_get_list (); for (iter = list, ii = 0; iter != NULL; iter = iter->next, ii++) { const gchar *category_name = iter->data; + const gchar *filename; GtkAction *action; gchar *action_name; @@ -893,6 +894,24 @@ e_book_shell_view_update_search_filter (EBookShellView *book_shell_view) action_name, category_name, NULL, NULL, ii); g_free (action_name); + /* Convert the category icon file to a themed icon name. */ + filename = e_categories_get_icon_file_for (category_name); + if (filename != NULL && *filename != '\0') { + gchar *basename; + gchar *cp; + + basename = g_path_get_basename (filename); + + /* Lose the file extension. */ + if ((cp = strrchr (basename, '.')) != NULL) + *cp = '\0'; + + g_object_set ( + radio_action, "icon-name", basename, NULL); + + g_free (basename); + } + gtk_radio_action_set_group (radio_action, group); group = gtk_radio_action_get_group (radio_action); diff --git a/calendar/modules/e-cal-shell-view-actions.c b/calendar/modules/e-cal-shell-view-actions.c index 0631b6e088..c63d3c8315 100644 --- a/calendar/modules/e-cal-shell-view-actions.c +++ b/calendar/modules/e-cal-shell-view-actions.c @@ -1006,6 +1006,7 @@ e_cal_shell_view_update_search_filter (ECalShellView *cal_shell_view) list = e_categories_get_list (); for (iter = list, ii = 0; iter != NULL; iter = iter->next, ii++) { const gchar *category_name = iter->data; + const gchar *filename; GtkAction *action; gchar *action_name; @@ -1015,6 +1016,24 @@ e_cal_shell_view_update_search_filter (ECalShellView *cal_shell_view) action_name, category_name, NULL, NULL, ii); g_free (action_name); + /* Convert the category icon file to a themed icon name. */ + filename = e_categories_get_icon_file_for (category_name); + if (filename != NULL && *filename != '\0') { + gchar *basename; + gchar *cp; + + basename = g_path_get_basename (filename); + + /* Lose the file extension. */ + if ((cp = strrchr (basename, '.')) != NULL) + *cp = '\0'; + + g_object_set ( + radio_action, "icon-name", basename, NULL); + + g_free (basename); + } + gtk_radio_action_set_group (radio_action, group); group = gtk_radio_action_get_group (radio_action); diff --git a/calendar/modules/e-memo-shell-view-actions.c b/calendar/modules/e-memo-shell-view-actions.c index 23c456c066..554f1651d5 100644 --- a/calendar/modules/e-memo-shell-view-actions.c +++ b/calendar/modules/e-memo-shell-view-actions.c @@ -790,6 +790,7 @@ e_memo_shell_view_update_search_filter (EMemoShellView *memo_shell_view) list = e_categories_get_list (); for (iter = list, ii = 0; iter != NULL; iter = iter->next, ii++) { const gchar *category_name = iter->data; + const gchar *filename; GtkAction *action; gchar *action_name; @@ -799,6 +800,24 @@ e_memo_shell_view_update_search_filter (EMemoShellView *memo_shell_view) action_name, category_name, NULL, NULL, ii); g_free (action_name); + /* Convert the category icon file to a themed icon name. */ + filename = e_categories_get_icon_file_for (category_name); + if (filename != NULL && *filename != '\0') { + gchar *basename; + gchar *cp; + + basename = g_path_get_basename (filename); + + /* Lose the file extension. */ + if ((cp = strrchr (basename, '.')) != NULL) + *cp = '\0'; + + g_object_set ( + radio_action, "icon-name", basename, NULL); + + g_free (basename); + } + gtk_radio_action_set_group (radio_action, group); group = gtk_radio_action_get_group (radio_action); diff --git a/calendar/modules/e-task-shell-view-actions.c b/calendar/modules/e-task-shell-view-actions.c index 21e9d89767..61a1455809 100644 --- a/calendar/modules/e-task-shell-view-actions.c +++ b/calendar/modules/e-task-shell-view-actions.c @@ -980,6 +980,7 @@ e_task_shell_view_update_search_filter (ETaskShellView *task_shell_view) list = e_categories_get_list (); for (iter = list, ii = 0; iter != NULL; iter = iter->next, ii++) { const gchar *category_name = iter->data; + const gchar *filename; GtkAction *action; gchar *action_name; @@ -989,6 +990,24 @@ e_task_shell_view_update_search_filter (ETaskShellView *task_shell_view) action_name, category_name, NULL, NULL, ii); g_free (action_name); + /* Convert the category icon file to a themed icon name. */ + filename = e_categories_get_icon_file_for (category_name); + if (filename != NULL && *filename != '\0') { + gchar *basename; + gchar *cp; + + basename = g_path_get_basename (filename); + + /* Lose the file extension. */ + if ((cp = strrchr (basename, '.')) != NULL) + *cp = '\0'; + + g_object_set ( + radio_action, "icon-name", basename, NULL); + + g_free (basename); + } + gtk_radio_action_set_group (radio_action, group); group = gtk_radio_action_get_group (radio_action); diff --git a/configure.in b/configure.in index 7476bedb03..0ebb69820f 100644 --- a/configure.in +++ b/configure.in @@ -1758,7 +1758,7 @@ AC_ARG_ENABLE([plugins], [enable_plugins="$enableval"],[enable_plugins=all]) dnl Add any new plugins here -plugins_base_always="calendar-file calendar-http $CALENDAR_WEATHER itip-formatter plugin-manager default-source addressbook-file startup-wizard mark-all-read groupwise-features groupwise-account-setup mail-account-disable publish-calendar caldav imap-features google-account-setup webdav-account-setup" +plugins_base_always="calendar-file calendar-http $CALENDAR_WEATHER itip-formatter plugin-manager default-source addressbook-file startup-wizard mark-all-read groupwise-features groupwise-account-setup publish-calendar caldav imap-features google-account-setup webdav-account-setup" plugins_base="$plugins_base_always $SA_JUNK_PLUGIN $BF_JUNK_PLUGIN $EXCHANGE_PLUGIN $MONO_PLUGIN " all_plugins_base="$plugins_base_always sa-junk-plugin bogo-junk-plugin exchange-operations mono" @@ -1789,7 +1789,6 @@ dnl groupwise-features dnl import-ics-attachments dnl ipod-sync dnl itip-formatter -dnl mail-account-disable dnl mailing-list-actions dnl mail-to-task dnl mark-all-read @@ -2102,7 +2101,6 @@ plugins/startup-wizard/Makefile plugins/groupwise-account-setup/Makefile plugins/hula-account-setup/Makefile plugins/groupwise-features/Makefile -plugins/mail-account-disable/Makefile plugins/sa-junk-plugin/Makefile plugins/bogo-junk-plugin/Makefile plugins/ipod-sync/Makefile diff --git a/mail/e-mail-shell-view-actions.c b/mail/e-mail-shell-view-actions.c index 8ad9766e2d..8037470ffe 100644 --- a/mail/e-mail-shell-view-actions.c +++ b/mail/e-mail-shell-view-actions.c @@ -22,6 +22,45 @@ #include "e-mail-shell-view-private.h" static void +action_mail_account_disable_cb (GtkAction *action, + EMailShellView *mail_shell_view) +{ + EMailShellSidebar *mail_shell_sidebar; + EShellModule *shell_module; + EShellView *shell_view; + EMFolderTree *folder_tree; + EAccountList *account_list; + EAccount *account; + gchar *folder_uri; + + shell_view = E_SHELL_VIEW (mail_shell_view); + shell_module = e_shell_view_get_shell_module (shell_view); + + mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar; + folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar); + folder_uri = em_folder_tree_get_selected_uri (folder_tree); + g_return_if_fail (folder_uri != NULL); + + account = mail_config_get_account_by_source_url (folder_uri); + g_return_if_fail (account != NULL); + + if (mail_config_has_proxies (account)) + mail_config_remove_account_proxies (account); + + account->enabled = !account->enabled; + account_list = mail_config_get_accounts (); + e_account_list_change (account_list, account); + e_mail_shell_module_remove_store_by_uri (shell_module, folder_uri); + + if (account->parent_uid != NULL) + mail_config_remove_account (account); + + mail_config_save_accounts (); + + g_free (folder_uri); +} + +static void action_mail_create_search_folder_cb (GtkAction *action, EMailShellView *mail_shell_view) { @@ -504,6 +543,13 @@ action_mail_view_cb (GtkRadioAction *action, static GtkActionEntry mail_entries[] = { + { "mail-account-disable", + NULL, + N_("_Disable Account"), + NULL, + N_("Disable this account"), + G_CALLBACK (action_mail_account_disable_cb) }, + { "mail-create-search-folder", NULL, N_("C_reate Search Folder From Search..."), @@ -679,6 +725,57 @@ static GtkActionEntry mail_entries[] = { N_("Subscribe or unsubscribe to folders on remote servers"), G_CALLBACK (action_mail_tools_subscriptions_cb) }, + /*** Popup Menu Variations ***/ + + { "mail-popup-folder-copy", + "folder-copy", + N_("_Copy Folder To..."), + NULL, + N_("Copy the selected folder into another folder"), + G_CALLBACK (action_mail_folder_copy_cb) }, + + { "mail-popup-folder-delete", + GTK_STOCK_DELETE, + NULL, + NULL, + N_("Permanently remove this folder"), + G_CALLBACK (action_mail_folder_delete_cb) }, + + { "mail-popup-folder-move", + "folder-move", + N_("_Move Folder To..."), + NULL, + N_("Move the selected folder into another folder"), + G_CALLBACK (action_mail_folder_move_cb) }, + + { "mail-popup-folder-new", + "folder-new", + N_("_New Folder..."), + NULL, + N_("Create a new folder for storing mail"), + G_CALLBACK (action_mail_folder_new_cb) }, + + { "mail-popup-folder-properties", + GTK_STOCK_PROPERTIES, + NULL, + NULL, + N_("Change the properties of this folder"), + G_CALLBACK (action_mail_folder_properties_cb) }, + + { "mail-popup-folder-refresh", + GTK_STOCK_REFRESH, + NULL, + NULL, + N_("Refresh the folder"), + G_CALLBACK (action_mail_folder_refresh_cb) }, + + { "mail-popup-folder-rename", + NULL, + N_("_Rename..."), + NULL, + N_("Change the name of this folder"), + G_CALLBACK (action_mail_folder_rename_cb) }, + /*** Menus ***/ { "mail-folder-menu", @@ -991,4 +1088,34 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view) object = G_OBJECT (ACTION (MAIL_VIEW_VERTICAL)); key = "/apps/evolution/mail/display/layout"; gconf_bridge_bind_property (bridge, key, object, "current-value"); + + /* Fine tuning. */ + + e_binding_new ( + G_OBJECT (ACTION (MAIL_FOLDER_COPY)), "sensitive", + G_OBJECT (ACTION (MAIL_POPUP_FOLDER_COPY)), "visible"); + + e_binding_new ( + G_OBJECT (ACTION (MAIL_FOLDER_DELETE)), "sensitive", + G_OBJECT (ACTION (MAIL_POPUP_FOLDER_DELETE)), "visible"); + + e_binding_new ( + G_OBJECT (ACTION (MAIL_FOLDER_MOVE)), "sensitive", + G_OBJECT (ACTION (MAIL_POPUP_FOLDER_MOVE)), "visible"); + + e_binding_new ( + G_OBJECT (ACTION (MAIL_FOLDER_NEW)), "sensitive", + G_OBJECT (ACTION (MAIL_POPUP_FOLDER_NEW)), "visible"); + + e_binding_new ( + G_OBJECT (ACTION (MAIL_FOLDER_PROPERTIES)), "sensitive", + G_OBJECT (ACTION (MAIL_POPUP_FOLDER_PROPERTIES)), "visible"); + + e_binding_new ( + G_OBJECT (ACTION (MAIL_FOLDER_REFRESH)), "sensitive", + G_OBJECT (ACTION (MAIL_POPUP_FOLDER_REFRESH)), "visible"); + + e_binding_new ( + G_OBJECT (ACTION (MAIL_FOLDER_RENAME)), "sensitive", + G_OBJECT (ACTION (MAIL_POPUP_FOLDER_RENAME)), "visible"); } diff --git a/mail/e-mail-shell-view-actions.h b/mail/e-mail-shell-view-actions.h index 5538385911..55125657b6 100644 --- a/mail/e-mail-shell-view-actions.h +++ b/mail/e-mail-shell-view-actions.h @@ -25,6 +25,8 @@ #include <shell/e-shell-window-actions.h> /* Mail Actions */ +#define E_SHELL_WINDOW_ACTION_MAIL_ACCOUNT_DISABLE(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-account-disable") #define E_SHELL_WINDOW_ACTION_MAIL_ADD_SENDER(window) \ E_SHELL_WINDOW_ACTION ((window), "mail-add-sender") #define E_SHELL_WINDOW_ACTION_MAIL_CARET_MODE(window) \ @@ -133,6 +135,20 @@ E_SHELL_WINDOW_ACTION ((window), "mail-next-thread") #define E_SHELL_WINDOW_ACTION_MAIL_NEXT_UNREAD(window) \ E_SHELL_WINDOW_ACTION ((window), "mail-next-unread") +#define E_SHELL_WINDOW_ACTION_MAIL_POPUP_FOLDER_COPY(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-popup-folder-copy") +#define E_SHELL_WINDOW_ACTION_MAIL_POPUP_FOLDER_DELETE(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-popup-folder-delete") +#define E_SHELL_WINDOW_ACTION_MAIL_POPUP_FOLDER_MOVE(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-popup-folder-move") +#define E_SHELL_WINDOW_ACTION_MAIL_POPUP_FOLDER_NEW(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-popup-folder-new") +#define E_SHELL_WINDOW_ACTION_MAIL_POPUP_FOLDER_PROPERTIES(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-popup-folder-properties") +#define E_SHELL_WINDOW_ACTION_MAIL_POPUP_FOLDER_REFRESH(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-popup-folder-refresh") +#define E_SHELL_WINDOW_ACTION_MAIL_POPUP_FOLDER_RENAME(window) \ + E_SHELL_WINDOW_ACTION ((window), "mail-popup-folder-rename") #define E_SHELL_WINDOW_ACTION_MAIL_PREVIEW(window) \ E_SHELL_WINDOW_ACTION ((window), "mail-preview") #define E_SHELL_WINDOW_ACTION_MAIL_PREVIOUS(window) \ diff --git a/mail/e-mail-shell-view-private.c b/mail/e-mail-shell-view-private.c index 728f056421..c175e1ad4d 100644 --- a/mail/e-mail-shell-view-private.c +++ b/mail/e-mail-shell-view-private.c @@ -34,7 +34,7 @@ mail_shell_view_folder_tree_selected_cb (EMailShellView *mail_shell_view, reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content); - if ((flags & CAMEL_FOLDER_NOSELECT) || full_name == NULL) + if ((flags & CAMEL_FOLDER_NOSELECT) || uri == NULL) e_mail_reader_set_folder (reader, NULL, NULL); else { EMFolderTreeModel *model; @@ -45,6 +45,8 @@ mail_shell_view_folder_tree_selected_cb (EMailShellView *mail_shell_view, e_mail_reader_set_folder_uri (reader, uri); } + + e_shell_view_update_actions (E_SHELL_VIEW (mail_shell_view)); } static void diff --git a/mail/e-mail-shell-view-private.h b/mail/e-mail-shell-view-private.h index 6c6b9d29fa..af9cc1a673 100644 --- a/mail/e-mail-shell-view-private.h +++ b/mail/e-mail-shell-view-private.h @@ -29,6 +29,7 @@ #include <camel/camel-vtrash-folder.h> #include "e-util/e-util.h" +#include "e-util/e-binding.h" #include "e-util/gconf-bridge.h" #include "widgets/menus/gal-view-instance.h" @@ -40,6 +41,7 @@ #include "em-subscribe-editor.h" #include "em-utils.h" #include "mail-autofilter.h" +#include "mail-config.h" #include "mail-ops.h" #include "mail-send-recv.h" #include "mail-vfolder.h" diff --git a/mail/e-mail-shell-view.c b/mail/e-mail-shell-view.c index 74870e59cb..74fa2e2291 100644 --- a/mail/e-mail-shell-view.c +++ b/mail/e-mail-shell-view.c @@ -91,14 +91,17 @@ mail_shell_view_update_actions (EShellView *shell_view) EShellSidebar *shell_sidebar; EShellWindow *shell_window; EMFolderTree *folder_tree; + EAccount *account; GtkAction *action; CamelURL *camel_url; + const gchar *label; gchar *uri; gboolean sensitive; gboolean visible; guint32 state; /* Be descriptive. */ + gboolean account_is_groupwise; gboolean folder_allows_children; gboolean folder_can_be_deleted; gboolean folder_is_junk; @@ -130,9 +133,25 @@ mail_shell_view_update_actions (EShellView *shell_view) (state & E_MAIL_SHELL_SIDEBAR_FOLDER_IS_TRASH); uri = em_folder_tree_get_selected_uri (folder_tree); + account = mail_config_get_account_by_source_url (uri); camel_url = camel_url_new (uri, NULL); + + /* FIXME This belongs in a GroupWise plugin. */ + account_is_groupwise = + (g_strrstr (uri, "groupwise://") != NULL) && + account != NULL && account->parent_uid != NULL; + g_free (uri); + action = ACTION (MAIL_ACCOUNT_DISABLE); + visible = (account != NULL) && folder_is_store; + if (account_is_groupwise) + label = _("Proxy _Logout"); + else + label = _("_Disable Account"); + gtk_action_set_visible (action, visible); + g_object_set (action, "label", label, NULL); + action = ACTION (MAIL_EMPTY_TRASH); visible = folder_is_trash; gtk_action_set_visible (action, visible); diff --git a/plugins/calendar-weather/Makefile.am b/plugins/calendar-weather/Makefile.am index 2e2be150e3..cb0253e8fe 100644 --- a/plugins/calendar-weather/Makefile.am +++ b/plugins/calendar-weather/Makefile.am @@ -1,5 +1,4 @@ eds_datadir = `pkg-config --variable=privdatadir evolution-data-server-1.2` -weatherdatadir = $(datadir)/evolution/$(BASE_VERSION)/weather INCLUDES = \ -I$(top_srcdir) \ @@ -12,15 +11,6 @@ INCLUDES = \ @EVO_PLUGIN_RULE@ -weatherdata_DATA = \ - category_weather_cloudy_16.png \ - category_weather_fog_16.png \ - category_weather_partly_cloudy_16.png \ - category_weather_rain_16.png \ - category_weather_snow_16.png \ - category_weather_sun_16.png \ - category_weather_tstorm_16.png - plugin_DATA = org-gnome-calendar-weather.eplug plugin_LTLIBRARIES = liborg-gnome-calendar-weather.la diff --git a/plugins/calendar-weather/calendar-weather.c b/plugins/calendar-weather/calendar-weather.c index a6dce31326..c16883ae23 100644 --- a/plugins/calendar-weather/calendar-weather.c +++ b/plugins/calendar-weather/calendar-weather.c @@ -51,8 +51,8 @@ int e_plugin_lib_enable (EPluginLib *epl, int enable) { GList *l; - gboolean found = FALSE; - const char *tmp; + const gchar *tmp; + gint ii; static struct { const char *description; @@ -74,24 +74,21 @@ e_plugin_lib_enable (EPluginLib *epl, int enable) /* Add the categories icons if we don't have them. */ for (l = e_categories_get_list (); l; l = g_list_next (l)) { - if (!strcmp ((const char *)l->data, tmp)) { - found = TRUE; - break; - } + if (!strcmp ((const char *)l->data, tmp)) + goto exit; } - if (!found) { - int i; - - for (i = 0; categories[i].description; i++) { - char *filename; + for (ii = 0; categories[ii].description; ii++) { + char *filename; - filename = e_icon_factory_get_icon_filename (categories[i].icon_name, E_ICON_SIZE_MENU); - e_categories_add (_(categories[i].description), NULL, filename, FALSE); - g_free (filename); - } + filename = e_icon_factory_get_icon_filename ( + categories[ii].icon_name, E_ICON_SIZE_MENU); + e_categories_add ( + _(categories[ii].description), NULL, filename, FALSE); + g_free (filename); } +exit: return 0; } diff --git a/plugins/calendar-weather/category_weather_cloudy_16.png b/plugins/calendar-weather/category_weather_cloudy_16.png Binary files differdeleted file mode 100644 index ddb3ba7c59..0000000000 --- a/plugins/calendar-weather/category_weather_cloudy_16.png +++ /dev/null diff --git a/plugins/calendar-weather/category_weather_fog_16.png b/plugins/calendar-weather/category_weather_fog_16.png Binary files differdeleted file mode 100644 index 23e4e2f1d4..0000000000 --- a/plugins/calendar-weather/category_weather_fog_16.png +++ /dev/null diff --git a/plugins/calendar-weather/category_weather_partly_cloudy_16.png b/plugins/calendar-weather/category_weather_partly_cloudy_16.png Binary files differdeleted file mode 100644 index 472feaa654..0000000000 --- a/plugins/calendar-weather/category_weather_partly_cloudy_16.png +++ /dev/null diff --git a/plugins/calendar-weather/category_weather_rain_16.png b/plugins/calendar-weather/category_weather_rain_16.png Binary files differdeleted file mode 100644 index e00d5e1c82..0000000000 --- a/plugins/calendar-weather/category_weather_rain_16.png +++ /dev/null diff --git a/plugins/calendar-weather/category_weather_snow_16.png b/plugins/calendar-weather/category_weather_snow_16.png Binary files differdeleted file mode 100644 index 5e95985f5f..0000000000 --- a/plugins/calendar-weather/category_weather_snow_16.png +++ /dev/null diff --git a/plugins/calendar-weather/category_weather_sun_16.png b/plugins/calendar-weather/category_weather_sun_16.png Binary files differdeleted file mode 100644 index 780c61c23c..0000000000 --- a/plugins/calendar-weather/category_weather_sun_16.png +++ /dev/null diff --git a/plugins/calendar-weather/category_weather_tstorm_16.png b/plugins/calendar-weather/category_weather_tstorm_16.png Binary files differdeleted file mode 100644 index b2af092b53..0000000000 --- a/plugins/calendar-weather/category_weather_tstorm_16.png +++ /dev/null diff --git a/plugins/mail-account-disable/ChangeLog b/plugins/mail-account-disable/ChangeLog deleted file mode 100644 index 86dc9a4897..0000000000 --- a/plugins/mail-account-disable/ChangeLog +++ /dev/null @@ -1,62 +0,0 @@ -2008-10-03 Sankar P <psankar@novell.com> - -License Changes - - * mail-account-disable.c: - -2007-11-18 Gilles Dartiguelongue <gdartigu@svn.gnome.org> - - ** Fix bug #495875 - - * mail-account-disable.c: - right click menu reordering - -2007-04-02 Sankar P <psankar@novell.com> - - * Committed on behalf of Gilles Dartiguelongue <dartigug@esiee.fr> - - * org-gnome-mail-account-disable.eplug.xml: - Cleanup. - Fixes part of #301149 - -2006-08-21 Matthew Barnes <mbarnes@redhat.com> - - * mail-account-disable.c: - "Disable" did not work for "On This Computer" - fixes bug 350901. - -2006-01-06 Simon Zheng <simon.zheng@sun.com> - - * mail-account-disable.c: - use libedataserver/e-account-list.h instead of e-util/e-account-list.h. - use libedataserver/e-account.h instead of e-util/e-account.h. - -2005-12-12 Harish Krishnaswamy <kharish@novell.com> - - * Makefile.am: Fix make-clean issues. - -2005-08-23 Not Zed <NotZed@Ximian.com> - - * Makefile.am: Remove the special case for win32, its a bug on all - platforms, silly. - - * mail-account-disable.c (mail_account_disable): make signature - match usage. - -2005-07-13 Tor Lillqvist <tml@novell.com> - - * Makefile.am (INCLUDES): Remove duplicated line. - (LDFLAGS): Use NO_UNDEFINED. - (LIBADD): Link with the required libraries, but let's do it only - on Win32. - - * org-gnome-mail-account-disable.eplug.xml: Use SOEXT. - -2005-07-12 Vivek Jain <jvivek@novell.com> - - have a ChangeLog and transfer the changelog entry from the main - ChangeLog - (2005-07-10 Shreyas Srinivasan <sshreyas@novell.com>) - - * plugins/mail-account-disable/*: Plugin to add Disable/ Proxy - Logout to a store menu on right click. - diff --git a/plugins/mail-account-disable/Makefile.am b/plugins/mail-account-disable/Makefile.am deleted file mode 100644 index 7ec8a1124e..0000000000 --- a/plugins/mail-account-disable/Makefile.am +++ /dev/null @@ -1,21 +0,0 @@ -INCLUDES = \ - -I$(top_srcdir) \ - -I$(top_builddir)/mail \ - $(EVOLUTION_MAIL_CFLAGS) \ - -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" - -@EVO_PLUGIN_RULE@ - -plugin_DATA = org-gnome-mail-account-disable.eplug -plugin_LTLIBRARIES = libmail-account-disable.la - -libmail_account_disable_la_SOURCES = mail-account-disable.c -libmail_account_disable_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED) -libmail_account_disable_la_LIBADD = $(top_builddir)/e-util/libeutil.la \ - $(top_builddir)/mail/libevolution-mail.la \ - $(EVOLUTION_MAIL_LIBS) - -EXTRA_DIST = org-gnome-mail-account-disable.eplug.xml - -BUILT_SOURCES = $(plugin_DATA) -CLEANFILES = $(BUILT_SOURCES) diff --git a/plugins/mail-account-disable/mail-account-disable.c b/plugins/mail-account-disable/mail-account-disable.c deleted file mode 100644 index 886b66a66f..0000000000 --- a/plugins/mail-account-disable/mail-account-disable.c +++ /dev/null @@ -1,100 +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: - * Shreyas Srinivasan <sshreyas@novell.com> - * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <glib.h> -#include <glib/gi18n.h> -#include <string.h> -#include <mail/mail-component.h> -#include <mail/em-folder-selector.h> -#include <mail/em-popup.h> -#include <mail/em-account-editor.h> -#include <mail/mail-config.h> -#include <libedataserver/e-account.h> -#include <libedataserver/e-account-list.h> - -#define ACCOUNT_DISABLE 0 -#define PROXY_LOGOUT 1 - -void mail_account_disable (EPopup *ep, EPopupItem *p, void *data); -void org_gnome_create_mail_account_disable (EPlugin *ep, EMPopupTargetFolder *t); - -static EPopupItem popup_items[] = { - { E_POPUP_ITEM, "40.emc.04", N_("_Disable"), mail_account_disable, NULL, NULL, 0, EM_POPUP_FOLDER_STORE }, - { E_POPUP_ITEM, "40.emc.04", N_("Proxy _Logout"), mail_account_disable, NULL, NULL, 0, EM_POPUP_FOLDER_STORE } -}; - -static void -popup_free (EPopup *ep, GSList *items, void *data) -{ - g_slist_free (items); -} - -void -mail_account_disable (EPopup *ep, EPopupItem *p, void *data) -{ - MailComponent *component; - EAccount *account = data; - - g_assert (account != NULL); - - component = mail_component_peek (); - - if (mail_config_has_proxies (account)) - mail_config_remove_account_proxies (account); - - account->enabled = !account->enabled; - e_account_list_change (mail_config_get_accounts (), account); - mail_component_remove_store_by_uri (component, account->source->url); - - if (account->parent_uid) - mail_config_remove_account (account); - - mail_config_save_accounts(); -} - -void -org_gnome_create_mail_account_disable (EPlugin *ep, EMPopupTargetFolder *t) -{ - EAccount *account; - GSList *menus = NULL; - - account = mail_config_get_account_by_source_url (t->uri); - - if (account == NULL) - return; - - if (g_strrstr (t->uri,"groupwise://") && account->parent_uid) { - popup_items[PROXY_LOGOUT].label = _(popup_items [PROXY_LOGOUT].label); - menus = g_slist_prepend (menus, &popup_items [PROXY_LOGOUT]); - } - else { - popup_items[ACCOUNT_DISABLE].label = _(popup_items [ACCOUNT_DISABLE].label); - menus = g_slist_prepend (menus, &popup_items [ACCOUNT_DISABLE]); - } - - e_popup_add_items (t->target.popup, menus, NULL, popup_free, account); -} - diff --git a/plugins/mail-account-disable/org-gnome-mail-account-disable.eplug.xml b/plugins/mail-account-disable/org-gnome-mail-account-disable.eplug.xml deleted file mode 100644 index f1e0b34ef9..0000000000 --- a/plugins/mail-account-disable/org-gnome-mail-account-disable.eplug.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0"?> -<e-plugin-list> - <e-plugin - id="org.gnome.mail.account.disable" - type="shlib" - domain="@GETTEXT_PACKAGE@" - _name="Disable Account" - location="@PLUGINDIR@/libmail-account-disable@SOEXT@"> - <_description>Allows disabling of accounts.</_description> - <author name="Shreyas Srinivasan" email="sshreyas@novell.com"/> - - <hook class="org.gnome.evolution.mail.popup:1.0"> - <menu id="org.gnome.evolution.mail.foldertree.popup" target="folder" - factory="org_gnome_create_mail_account_disable"> - </menu> - </hook> - </e-plugin> -</e-plugin-list> diff --git a/shell/main.c b/shell/main.c index 6272b6ad18..6dac5f062b 100644 --- a/shell/main.c +++ b/shell/main.c @@ -57,6 +57,7 @@ #include <bonobo-activation/bonobo-activation.h> +#include <libedataserver/e-categories.h> #include <libedataserverui/e-passwords.h> #include <glade/glade.h> @@ -166,6 +167,37 @@ kill_old_dataserver (void) } #endif +static void +categories_icon_theme_hack (void) +{ + GtkIconTheme *icon_theme; + const gchar *category_name; + const gchar *filename; + gchar *dirname; + + /* XXX Allow the category icons to be referenced as named + * icons, since GtkAction does not support GdkPixbufs. */ + + /* Get the icon file for some default category. Doesn't matter + * which, so long as it has an icon. We're just interested in + * the directory components. */ + category_name = _("Birthday"); + filename = e_categories_get_icon_file_for (category_name); + g_return_if_fail (filename != NULL && *filename != '\0'); + + /* Extract the directory components. */ + dirname = g_path_get_dirname (filename); + g_debug ("Category Icon Path: %s", dirname); + + /* Add it to the icon theme's search path. This relies on + * GtkIconTheme's legacy feature of using image files found + * directly in the search path. */ + icon_theme = gtk_icon_theme_get_default (); + gtk_icon_theme_append_search_path (icon_theme, dirname); + + g_free (dirname); +} + #ifdef DEVELOPMENT @@ -650,6 +682,7 @@ main (int argc, char **argv) if (setup_only) exit (0); + categories_icon_theme_hack (); gnome_sound_init ("localhost"); gtk_accel_map_load (e_get_accels_filename ()); diff --git a/ui/evolution-mail.ui b/ui/evolution-mail.ui index 76e93a43b4..cc5a4d348c 100644 --- a/ui/evolution-mail.ui +++ b/ui/evolution-mail.ui @@ -67,18 +67,19 @@ <placeholder name='mail-toolbar-navigation'/> </toolbar> <popup name='mail-folder-popup'> - <menuitem action='mail-folder-new'/> - <menuitem action='mail-folder-copy'/> - <menuitem action='mail-folder-move'/> + <menuitem action='mail-popup-folder-new'/> + <menuitem action='mail-popup-folder-copy'/> + <menuitem action='mail-popup-folder-move'/> <separator/> - <menuitem action='mail-folder-delete'/> + <menuitem action='mail-popup-folder-delete'/> <separator/> - <menuitem action='mail-folder-rename'/> - <menuitem action='mail-folder-refresh'/> + <menuitem action='mail-popup-folder-rename'/> + <menuitem action='mail-popup-folder-refresh'/> <menuitem action='mail-flush-outbox'/> <menuitem action='mail-empty-trash'/> + <menuitem action='mail-account-disable'/> <separator/> - <menuitem action='mail-folder-properties'/> + <menuitem action='mail-popup-folder-properties'/> </popup> <popup name='mail-search-options'> <menuitem action='mail-search-subject-or-sender-contains'/> diff --git a/widgets/misc/e-action-combo-box.c b/widgets/misc/e-action-combo-box.c index b3bc5a78a9..977ac06ade 100644 --- a/widgets/misc/e-action-combo-box.c +++ b/widgets/misc/e-action-combo-box.c @@ -43,6 +43,7 @@ struct _EActionComboBoxPrivate { guint changed_handler_id; /* action::changed */ guint group_sensitive_handler_id; /* action-group::sensitive */ guint group_visible_handler_id; /* action-group::visible */ + gboolean group_has_icons : 1; }; static gpointer parent_class; @@ -95,9 +96,14 @@ action_combo_box_render_pixbuf (GtkCellLayout *layout, gchar *stock_id; gboolean sensitive; gboolean visible; + gint width; gtk_tree_model_get (model, iter, COLUMN_ACTION, &action, -1); + /* Do any of the actions have an icon? */ + if (!combo_box->priv->group_has_icons) + return; + /* A NULL action means the row is a separator. */ if (action == NULL) return; @@ -110,14 +116,31 @@ action_combo_box_render_pixbuf (GtkCellLayout *layout, "visible", &visible, NULL); - g_object_set ( - G_OBJECT (renderer), - "icon-name", icon_name, - "sensitive", sensitive, - "stock-id", stock_id, - "stock-size", GTK_ICON_SIZE_MENU, - "visible", visible, - NULL); + /* Keep the pixbuf renderer a fixed size for proper alignment. */ + gtk_icon_size_lookup (GTK_ICON_SIZE_MENU, &width, NULL); + + /* We can't set both "icon-name" and "stock-id" because setting + * one unsets the other. So pick the one that has a non-NULL + * value. If both are non-NULL, "stock-id" wins. */ + + if (stock_id != NULL) + g_object_set ( + G_OBJECT (renderer), + "sensitive", sensitive, + "stock-id", stock_id, + "stock-size", GTK_ICON_SIZE_MENU, + "visible", visible, + "width", width, + NULL); + else + g_object_set ( + G_OBJECT (renderer), + "icon-name", icon_name, + "sensitive", sensitive, + "stock-size", GTK_ICON_SIZE_MENU, + "visible", visible, + "width", width, + NULL); g_free (icon_name); g_free (stock_id); @@ -135,6 +158,7 @@ action_combo_box_render_text (GtkCellLayout *layout, gchar *label; gboolean sensitive; gboolean visible; + gint xpad; gtk_tree_model_get (model, iter, COLUMN_ACTION, &action, -1); @@ -155,11 +179,14 @@ action_combo_box_render_text (GtkCellLayout *layout, label = g_strjoinv (NULL, strv); g_strfreev (strv); + xpad = combo_box->priv->group_has_icons ? 3 : 0; + g_object_set ( G_OBJECT (renderer), "sensitive", sensitive, "text", label, "visible", visible, + "xpad", xpad, NULL); g_free (label); @@ -201,14 +228,25 @@ action_combo_box_update_model (EActionComboBox *combo_box) 2, GTK_TYPE_RADIO_ACTION, G_TYPE_FLOAT); list = gtk_radio_action_get_group (combo_box->priv->action); + combo_box->priv->group_has_icons = FALSE; while (list != NULL) { GtkTreeRowReference *reference; GtkRadioAction *action = list->data; GtkTreePath *path; GtkTreeIter iter; + gchar *icon_name; + gchar *stock_id; gint value; + g_object_get ( + action, "icon-name", &icon_name, + "stock-id", &stock_id, NULL); + combo_box->priv->group_has_icons |= + (icon_name != NULL || stock_id != NULL); + g_free (icon_name); + g_free (stock_id); + gtk_list_store_append (list_store, &iter); g_object_get (G_OBJECT (action), "value", &value, NULL); gtk_list_store_set ( |