diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | embed/mozilla/ContentHandler.cpp | 3 | ||||
-rw-r--r-- | lib/ephy-prefs.h | 3 | ||||
-rw-r--r-- | src/ephy-window.c | 39 |
4 files changed, 51 insertions, 4 deletions
@@ -1,3 +1,13 @@ +2004-01-08 <clahey@ximian.com> + + * embed/mozilla/ContentHandler.cpp (MIMEAskAction): Don't save the + file if disable_save_to_disk is on. + + * lib/ephy-prefs.h (CONF_DISABLE_SAVE_TO_DISK): Added this key here. + + * src/ephy-window.c (update_actions): Obey disable_save_to_disk. + Also, disable toggling view settings if their keys are locked. + 2004-01-06 Piers Cornwell <piers@myrealbox.com> * help/C/epiphany-C.omf diff --git a/embed/mozilla/ContentHandler.cpp b/embed/mozilla/ContentHandler.cpp index 32a18ca96..eee5bca71 100644 --- a/embed/mozilla/ContentHandler.cpp +++ b/embed/mozilla/ContentHandler.cpp @@ -316,8 +316,9 @@ NS_METHOD GContentHandler::MIMEAskAction (void) if (!auto_open || !DefaultApp || permission != EPHY_MIME_PERMISSION_SAFE) { + if (eel_gconf_get_boolean (CONF_LOCKDOWN_DISABLE_SAVE_TO_DISK)) return NS_OK; nsCOMPtr<nsIHelperAppLauncher> launcher; - + rv = mContentHandler->GetLauncher (getter_AddRefs(launcher)); if (NS_FAILED (rv)) return rv; launcher->SaveToDisk (nsnull,PR_FALSE); diff --git a/lib/ephy-prefs.h b/lib/ephy-prefs.h index 1814d63b2..965d0ed0c 100644 --- a/lib/ephy-prefs.h +++ b/lib/ephy-prefs.h @@ -43,6 +43,9 @@ G_BEGIN_DECLS #define CONF_STATE_DOWNLOAD_DIR "/apps/epiphany/directories/download" #define CONF_STATE_UPLOAD_DIR "/apps/epiphany/directories/upload" +/* Lockdown */ +#define CONF_DISABLE_SAVE_TO_DISK "/desktop/gnome/lockdown/disable_save_to_disk" + /* System prefs */ #define CONF_DESKTOP_FTP_HANDLER "/desktop/gnome/url-handlers/ftp/command" #define CONF_DESKTOP_TOOLBAR_STYLE "/desktop/gnome/interface/toolbar_style" diff --git a/src/ephy-window.c b/src/ephy-window.c index 361de631b..b47152152 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -327,6 +327,7 @@ struct EphyWindowPrivate guint show_bookmarks_bar_notifier_id; guint show_statusbar_notifier_id; guint hide_menubar_notifier_id; + guint disable_save_to_disk_notifier_id; }; enum @@ -1683,22 +1684,40 @@ ensure_default_icon (void) } static void -update_layout_toggles (EphyWindow *window) +update_actions (EphyWindow *window) { GtkActionGroup *action_group = GTK_ACTION_GROUP (window->priv->action_group); + GtkActionGroup *popups_action_group = GTK_ACTION_GROUP (window->priv->popups_action_group); GtkAction *action; + gboolean save_to_disk; action = gtk_action_group_get_action (action_group, "ViewToolbar"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), eel_gconf_get_boolean (CONF_WINDOWS_SHOW_TOOLBARS)); + g_object_set (action, "sensitive", eel_gconf_key_is_writable (CONF_WINDOWS_SHOW_TOOLBARS), NULL); action = gtk_action_group_get_action (action_group, "ViewBookmarksBar"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), eel_gconf_get_boolean (CONF_WINDOWS_SHOW_BOOKMARKS_BAR)); + g_object_set (action, "sensitive", eel_gconf_key_is_writable (CONF_WINDOWS_SHOW_BOOKMARKS_BAR), NULL); action = gtk_action_group_get_action (action_group, "ViewStatusbar"); gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), eel_gconf_get_boolean (CONF_WINDOWS_SHOW_STATUSBAR)); + g_object_set (action, "sensitive", eel_gconf_key_is_writable (CONF_WINDOWS_SHOW_STATUSBAR), NULL); + + save_to_disk = !eel_gconf_get_boolean (CONF_LOCKDOWN_DISABLE_SAVE_TO_DISK); + action = gtk_action_group_get_action (action_group, "FileSaveAs"); + g_object_set (action, "sensitive", save_to_disk, NULL); + action = gtk_action_group_get_action (popups_action_group, "DownloadLink"); + g_object_set (action, "sensitive", save_to_disk, NULL); + action = gtk_action_group_get_action (popups_action_group, "SaveBackgroundAs"); + g_object_set (action, "sensitive", save_to_disk, NULL); + action = gtk_action_group_get_action (popups_action_group, "SaveImageAs"); + g_object_set (action, "sensitive", save_to_disk, NULL); + + action = gtk_action_group_get_action (popups_action_group, "SetImageAsBackground"); + g_object_set (action, "sensitive", eel_gconf_key_is_writable (CONF_DESKTOP_BG_PICTURE), NULL); } static void @@ -1708,7 +1727,16 @@ chrome_notifier (GConfClient *client, EphyWindow *window) { update_chrome (window); - update_layout_toggles(window); + update_actions(window); +} + +static void +actions_notifier (GConfClient *client, + guint cnxn_id, + GConfEntry *entry, + EphyWindow *window) +{ + update_actions(window); } static void @@ -1803,6 +1831,10 @@ ephy_window_init (EphyWindow *window) (CONF_LOCKDOWN_HIDE_MENUBAR, (GConfClientNotifyFunc)chrome_notifier, window); + window->priv->disable_save_to_disk_notifier_id = eel_gconf_notification_add + (CONF_LOCKDOWN_DISABLE_SAVE_TO_DISK, + (GConfClientNotifyFunc)actions_notifier, window); + /* ensure the UI is updated */ gtk_ui_manager_ensure_update (GTK_UI_MANAGER (window->ui_merge)); @@ -1819,6 +1851,7 @@ ephy_window_finalize (GObject *object) eel_gconf_notification_remove (window->priv->show_bookmarks_bar_notifier_id); eel_gconf_notification_remove (window->priv->show_statusbar_notifier_id); eel_gconf_notification_remove (window->priv->hide_menubar_notifier_id); + eel_gconf_notification_remove (window->priv->disable_save_to_disk_notifier_id); if (window->priv->find_dialog) { @@ -2010,7 +2043,7 @@ ephy_window_show (GtkWidget *widget) EphyWindow *window = EPHY_WINDOW(widget); update_chrome (window); - update_layout_toggles(window); + update_actions(window); if (!window->priv->has_size) { |