Restore lockdown integration.

With lockdown settings available through GSettings, widgets can handle
lockdown integration themselves without having to use EShellSettings.

Also fixed a few places where printing or save-to-disk actions were
either not properly wired up or not responding to lockdown settings,
but much more work needs done.  Attachments, for example, are not
honoring the disable-save-to-disk setting at all.

This too requires the recently-added gsettings-desktop-schemas
dependency.
This commit is contained in:
Matthew Barnes
2011-03-27 15:16:39 -04:00
parent f359319190
commit ba6a234386
21 changed files with 248 additions and 243 deletions

View File

@ -256,7 +256,6 @@ EShellTaskbarPrivate
<FILE>e-shell-utils</FILE>
<TITLE>Shell Utilities</TITLE>
e_shell_configure_ui_manager
e_shell_configure_web_view
e_shell_run_open_dialog
e_shell_run_save_dialog
e_shell_utils_import_uris

View File

@ -29,15 +29,6 @@ Shell Utilities
@ui_manager:
<!-- ##### FUNCTION e_shell_configure_web_view ##### -->
<para>
</para>
@shell:
@web_view:
<!-- ##### FUNCTION e_shell_run_open_dialog ##### -->
<para>

View File

@ -2962,19 +2962,12 @@ static void
mail_reader_update_actions (EMailReader *reader,
guint32 state)
{
#if 0
EShell *shell;
EMailBackend *backend;
EShellBackend *shell_backend;
EShellSettings *shell_settings;
#endif
GtkAction *action;
const gchar *action_name;
gboolean sensitive;
/* Be descriptive. */
gboolean any_messages_selected;
gboolean disable_printing;
gboolean enable_flag_clear;
gboolean enable_flag_completed;
gboolean enable_flag_for_followup;
@ -2994,24 +2987,6 @@ mail_reader_update_actions (EMailReader *reader,
gboolean first_message_selected = FALSE;
gboolean last_message_selected = FALSE;
#if 0 /* XXX Lockdown keys have moved to gsettings-desktop-schemas,
* so disable lockdown integration until we're ready for
* GSettings. */
backend = e_mail_reader_get_backend (reader);
shell_backend = E_SHELL_BACKEND (backend);
shell = e_shell_backend_get_shell (shell_backend);
shell_settings = e_shell_get_shell_settings (shell);
#ifndef G_OS_WIN32
disable_printing = e_shell_settings_get_boolean (
shell_settings, "disable-printing");
#else
disable_printing = FALSE;
#endif
#endif
disable_printing = FALSE;
have_enabled_account =
(state & E_MAIL_READER_HAVE_ENABLED_ACCOUNT);
single_message_selected =
@ -3295,12 +3270,12 @@ mail_reader_update_actions (EMailReader *reader,
gtk_action_set_sensitive (action, sensitive);
action_name = "mail-print";
sensitive = single_message_selected && !disable_printing;
sensitive = single_message_selected;
action = e_mail_reader_get_action (reader, action_name);
gtk_action_set_sensitive (action, sensitive);
action_name = "mail-print-preview";
sensitive = single_message_selected && !disable_printing;
sensitive = single_message_selected;
action = e_mail_reader_get_action (reader, action_name);
gtk_action_set_sensitive (action, sensitive);
@ -3546,6 +3521,10 @@ e_mail_reader_init (EMailReader *reader,
const gchar *action_name;
const gchar *key;
#ifndef G_OS_WIN32
GSettings *settings;
#endif
g_return_if_fail (E_IS_MAIL_READER (reader));
formatter = e_mail_reader_get_formatter (reader);
@ -3695,6 +3674,41 @@ e_mail_reader_init (EMailReader *reader,
action, "activate",
G_CALLBACK (action_search_folder_sender_cb), reader);
#ifndef G_OS_WIN32
/* Lockdown integration. */
settings = g_settings_new ("org.gnome.desktop.lockdown");
action_name = "mail-print";
action = e_mail_reader_get_action (reader, action_name);
g_settings_bind (
settings, "disable-printing",
action, "visible",
G_SETTINGS_BIND_GET |
G_SETTINGS_BIND_NO_SENSITIVITY |
G_SETTINGS_BIND_INVERT_BOOLEAN);
action_name = "mail-print-preview";
action = e_mail_reader_get_action (reader, action_name);
g_settings_bind (
settings, "disable-printing",
action, "visible",
G_SETTINGS_BIND_GET |
G_SETTINGS_BIND_NO_SENSITIVITY |
G_SETTINGS_BIND_INVERT_BOOLEAN);
action_name = "mail-save-as";
action = e_mail_reader_get_action (reader, action_name);
g_settings_bind (
settings, "disable-save-to-disk",
action, "visible",
G_SETTINGS_BIND_GET |
G_SETTINGS_BIND_NO_SENSITIVITY |
G_SETTINGS_BIND_INVERT_BOOLEAN);
g_object_unref (settings);
#endif
/* Bind properties. */
action_name = "mail-caret-mode";

View File

@ -52,7 +52,6 @@ typedef struct {
gboolean jh_check;
gboolean book_lookup;
gboolean book_lookup_local_only;
gboolean scripts_disabled;
} MailConfig;
extern gint camel_header_param_encode_filenames_in_rfc_2047;
@ -496,13 +495,6 @@ mail_config_init (EMailSession *session)
config->book_lookup_local_only =
gconf_client_get_bool (client, key, NULL);
key = "/desktop/gnome/lockdown/disable_command_line";
func = (GConfClientNotifyFunc) gconf_bool_value_changed;
gconf_client_notify_add (
client, key, func,
&config->scripts_disabled, NULL, NULL);
config->scripts_disabled = gconf_client_get_bool (client, key, NULL);
gconf_jh_check_changed (client, 0, NULL, session);
folder_cache = e_mail_session_get_folder_cache (session);

View File

@ -268,7 +268,6 @@ book_shell_content_constructed (GObject *object)
widget, "orientation",
G_BINDING_SYNC_CREATE);
e_shell_configure_web_view (shell, E_WEB_VIEW (widget));
gtk_widget_show (widget);
g_signal_connect_swapped (

View File

@ -717,13 +717,6 @@ static GtkActionEntry contact_entries[] = {
N_("Rename the selected address book"),
G_CALLBACK (action_address_book_rename_cb) },
{ "address-book-save-as",
GTK_STOCK_SAVE_AS,
N_("S_ave Address Book as vCard"),
NULL,
N_("Save the contacts of the selected address book as a vCard"),
G_CALLBACK (action_address_book_save_as_cb) },
{ "address-book-stop",
GTK_STOCK_STOP,
NULL,
@ -825,11 +818,6 @@ static EPopupActionEntry contact_popup_entries[] = {
NULL,
"address-book-rename" },
{ "address-book-popup-save-as",
/* Translators: This is an action label */
N_("_Save as vCard..."),
"address-book-save-as" },
{ "contact-popup-copy",
NULL,
"contact-copy" },
@ -970,6 +958,13 @@ static EPopupActionEntry lockdown_printing_popup_entries[] = {
static GtkActionEntry lockdown_save_to_disk_entries[] = {
{ "address-book-save-as",
GTK_STOCK_SAVE_AS,
N_("S_ave Address Book as vCard"),
NULL,
N_("Save the contacts of the selected address book as a vCard"),
G_CALLBACK (action_address_book_save_as_cb) },
{ "contact-save-as",
GTK_STOCK_SAVE_AS,
/* Translators: This is an action label */
@ -981,6 +976,11 @@ static GtkActionEntry lockdown_save_to_disk_entries[] = {
static EPopupActionEntry lockdown_save_to_disk_popup_entries[] = {
{ "address-book-popup-save-as",
/* Translators: This is an action label */
N_("_Save as vCard..."),
"address-book-save-as" },
{ "contact-popup-save-as",
NULL,
"contact-save-as" }

View File

@ -1467,13 +1467,6 @@ static GtkActionEntry calendar_entries[] = {
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_event_reply_all_cb) },
{ "event-save-as",
GTK_STOCK_SAVE_AS,
N_("Save as iCalendar..."),
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_event_save_as_cb) },
{ "event-schedule",
NULL,
N_("_Schedule Meeting..."),
@ -1587,10 +1580,6 @@ static EPopupActionEntry calendar_popup_entries[] = {
NULL,
"event-reply-all" },
{ "event-popup-save-as",
NULL,
"event-save-as" },
{ "event-popup-schedule",
NULL,
"event-schedule" },
@ -1741,6 +1730,23 @@ static EPopupActionEntry lockdown_printing_popup_entries[] = {
"event-print" }
};
static GtkActionEntry lockdown_save_to_disk_entries[] = {
{ "event-save-as",
GTK_STOCK_SAVE_AS,
N_("Save as iCalendar..."),
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_event_save_as_cb) },
};
static EPopupActionEntry lockdown_save_to_disk_popup_entries[] = {
{ "event-popup-save-as",
NULL,
"event-save-as" },
};
void
e_cal_shell_view_actions_init (ECalShellView *cal_shell_view)
{
@ -1790,6 +1796,15 @@ e_cal_shell_view_actions_init (ECalShellView *cal_shell_view)
action_group, lockdown_printing_popup_entries,
G_N_ELEMENTS (lockdown_printing_popup_entries));
/* Lockdown Save-to-Disk Actions */
action_group = ACTION_GROUP (LOCKDOWN_SAVE_TO_DISK);
gtk_action_group_add_actions (
action_group, lockdown_save_to_disk_entries,
G_N_ELEMENTS (lockdown_save_to_disk_entries), cal_shell_view);
e_action_group_add_popup_actions (
action_group, lockdown_save_to_disk_popup_entries,
G_N_ELEMENTS (lockdown_save_to_disk_popup_entries));
/* Fine tuning. */
action = ACTION (CALENDAR_GO_TODAY);

View File

@ -272,13 +272,6 @@ static GtkActionEntry calendar_memopad_entries[] = {
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_calendar_memopad_open_url_cb) },
{ "calendar-memopad-save-as",
GTK_STOCK_SAVE_AS,
N_("Save as iCalendar..."),
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_calendar_memopad_save_as_cb) }
};
static GtkActionEntry lockdown_printing_entries[] = {
@ -291,6 +284,16 @@ static GtkActionEntry lockdown_printing_entries[] = {
G_CALLBACK (action_calendar_memopad_print_cb) }
};
static GtkActionEntry lockdown_save_to_disk_entries[] = {
{ "calendar-memopad-save-as",
GTK_STOCK_SAVE_AS,
N_("Save as iCalendar..."),
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_calendar_memopad_save_as_cb) }
};
void
e_cal_shell_view_memopad_actions_init (ECalShellView *cal_shell_view)
{
@ -312,6 +315,12 @@ e_cal_shell_view_memopad_actions_init (ECalShellView *cal_shell_view)
gtk_action_group_add_actions (
action_group, lockdown_printing_entries,
G_N_ELEMENTS (lockdown_printing_entries), cal_shell_view);
/* Lockdown Save-to-Disk Actions */
action_group = ACTION_GROUP (LOCKDOWN_SAVE_TO_DISK);
gtk_action_group_add_actions (
action_group, lockdown_save_to_disk_entries,
G_N_ELEMENTS (lockdown_save_to_disk_entries), cal_shell_view);
}
void

View File

@ -359,13 +359,6 @@ static GtkActionEntry calendar_taskpad_entries[] = {
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_calendar_taskpad_open_url_cb) },
{ "calendar-taskpad-save-as",
GTK_STOCK_SAVE_AS,
N_("_Save as iCalendar..."),
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_calendar_taskpad_save_as_cb) }
};
static GtkActionEntry lockdown_printing_entries[] = {
@ -378,6 +371,16 @@ static GtkActionEntry lockdown_printing_entries[] = {
G_CALLBACK (action_calendar_taskpad_print_cb) }
};
static GtkActionEntry lockdown_save_to_disk_entries[] = {
{ "calendar-taskpad-save-as",
GTK_STOCK_SAVE_AS,
N_("_Save as iCalendar..."),
NULL,
NULL, /* XXX Add a tooltip! */
G_CALLBACK (action_calendar_taskpad_save_as_cb) }
};
void
e_cal_shell_view_taskpad_actions_init (ECalShellView *cal_shell_view)
{
@ -399,6 +402,12 @@ e_cal_shell_view_taskpad_actions_init (ECalShellView *cal_shell_view)
gtk_action_group_add_actions (
action_group, lockdown_printing_entries,
G_N_ELEMENTS (lockdown_printing_entries), cal_shell_view);
/* Lockdown Save-to-Disk Actions */
action_group = ACTION_GROUP (LOCKDOWN_SAVE_TO_DISK);
gtk_action_group_add_actions (
action_group, lockdown_save_to_disk_entries,
G_N_ELEMENTS (lockdown_save_to_disk_entries), cal_shell_view);
}
void

View File

@ -473,7 +473,6 @@ memo_shell_content_constructed (GObject *object)
container = priv->paned;
widget = e_cal_component_preview_new ();
e_shell_configure_web_view (shell, E_WEB_VIEW (widget));
gtk_widget_show (widget);
g_signal_connect_swapped (

View File

@ -469,7 +469,6 @@ task_shell_content_constructed (GObject *object)
container = priv->paned;
widget = e_cal_component_preview_new ();
e_shell_configure_web_view (shell, E_WEB_VIEW (widget));
gtk_widget_show (widget);
g_signal_connect_swapped (

View File

@ -563,18 +563,6 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
widget, "prefer-html",
G_BINDING_SYNC_CREATE);
#if 0 /* XXX Lockdown keys have moved to gsettings-desktop-schemas,
* so disable lockdown integration until we're ready for
* GSettings. */
#ifndef G_OS_WIN32
g_object_bind_property (
shell_settings, "disable-command-line",
widget, "allow-scripts",
G_BINDING_SYNC_CREATE |
G_BINDING_INVERT_BOOLEAN);
#endif
#endif
signature_tree_view = e_signature_manager_get_tree_view (
E_SIGNATURE_MANAGER (widget));
@ -584,18 +572,6 @@ em_composer_prefs_construct (EMComposerPrefs *prefs,
gtk_container_add (GTK_CONTAINER (container), widget);
gtk_widget_show (widget);
#if 0 /* XXX Lockdown keys have moved to gsettings-desktop-schemas,
* so disable lockdown integration until we're ready for
* GSettings. */
#ifndef G_OS_WIN32
g_object_bind_property (
shell_settings, "disable-command-line",
widget, "allow-scripts",
G_BINDING_SYNC_CREATE |
G_BINDING_INVERT_BOOLEAN);
#endif
#endif
g_object_bind_property (
signature_tree_view, "selected",
widget, "signature",

View File

@ -53,42 +53,6 @@ e_shell_configure_ui_manager (EShell *shell,
G_BINDING_SYNC_CREATE);
}
/**
* e_shell_configure_web_view:
* @shell: an #EShell
* @web_view: an #EWebView
*
* Adds shell integration to @web_view. In particular, it configures
* @web_view to honor the printing and save-to-disk lockdown options.
**/
void
e_shell_configure_web_view (EShell *shell,
EWebView *web_view)
{
#if 0 /* XXX Lockdown keys have moved to gsettings-desktop-scheams,
* so disable lockdown integration until we're ready for
* GSettings. */
EShellSettings *shell_settings;
g_return_if_fail (E_IS_SHELL (shell));
g_return_if_fail (E_IS_WEB_VIEW (web_view));
shell_settings = e_shell_get_shell_settings (shell);
#ifndef G_OS_WIN32
g_object_bind_property (
shell_settings, "disable-printing",
web_view, "disable-printing",
G_BINDING_SYNC_CREATE);
g_object_bind_property (
shell_settings, "disable-save-to-disk",
web_view, "disable-save-to-disk",
G_BINDING_SYNC_CREATE);
#endif
#endif
}
/**
* e_shell_run_open_dialog:
* @shell: an #EShell

View File

@ -31,9 +31,6 @@ G_BEGIN_DECLS
void e_shell_configure_ui_manager (EShell *shell,
EUIManager *ui_manager);
void e_shell_configure_web_view (EShell *shell,
EWebView *web_view);
GFile * e_shell_run_open_dialog (EShell *shell,
const gchar *title,
GtkCallback customize_func,

View File

@ -261,16 +261,10 @@ void
e_shell_window_private_constructed (EShellWindow *shell_window)
{
EShellWindowPrivate *priv = shell_window->priv;
#if 0
EShellSettings *shell_settings;
#endif
EShell *shell;
GConfBridge *bridge;
GtkAction *action;
GtkAccelGroup *accel_group;
#if 0
GtkActionGroup *action_group;
#endif
GtkUIManager *ui_manager;
GtkBox *box;
GtkPaned *paned;
@ -281,12 +275,14 @@ e_shell_window_private_constructed (EShellWindow *shell_window)
const gchar *key;
const gchar *id;
#ifndef G_OS_WIN32
GSettings *settings;
GtkActionGroup *action_group;
#endif
window = GTK_WINDOW (shell_window);
shell = e_shell_window_get_shell (shell_window);
#if 0
shell_settings = e_shell_get_shell_settings (shell);
#endif
ui_manager = e_shell_window_get_ui_manager (shell_window);
e_shell_configure_ui_manager (shell, E_UI_MANAGER (ui_manager));
@ -362,37 +358,37 @@ e_shell_window_private_constructed (EShellWindow *shell_window)
shell_window, "notify::active-view",
G_CALLBACK (e_shell_window_update_search_menu), NULL);
#if 0 /* XXX Lockdown keys have moved to gsettings-desktop-schemas,
* so disable lockdown integration until we're ready for
* GSettings. */
#ifndef G_OS_WIN32
/* Support lockdown. */
settings = g_settings_new ("org.gnome.desktop.lockdown");
action_group = ACTION_GROUP (LOCKDOWN_PRINTING);
g_object_bind_property (
shell_settings, "disable-printing",
g_settings_bind (
settings, "disable-printing",
action_group, "visible",
G_BINDING_SYNC_CREATE |
G_BINDING_INVERT_BOOLEAN);
G_SETTINGS_BIND_GET |
G_SETTINGS_BIND_INVERT_BOOLEAN);
action_group = ACTION_GROUP (LOCKDOWN_PRINT_SETUP);
g_object_bind_property (
shell_settings, "disable-print-setup",
g_settings_bind (
settings, "disable-print-setup",
action_group, "visible",
G_BINDING_SYNC_CREATE |
G_BINDING_INVERT_BOOLEAN);
G_SETTINGS_BIND_GET |
G_SETTINGS_BIND_INVERT_BOOLEAN);
action_group = ACTION_GROUP (LOCKDOWN_SAVE_TO_DISK);
g_object_bind_property (
shell_settings, "disable-save-to-disk",
g_settings_bind (
settings, "disable-save-to-disk",
action_group, "visible",
G_BINDING_SYNC_CREATE |
G_BINDING_INVERT_BOOLEAN);
G_SETTINGS_BIND_GET |
G_SETTINGS_BIND_INVERT_BOOLEAN);
g_object_unref (settings);
#endif /* G_OS_WIN32 */
#endif
/* Bind GObject properties to GObject properties. */

View File

@ -1244,32 +1244,6 @@ e_shell_init (EShell *shell)
"start-offline",
"/apps/evolution/shell/start_offline");
#if 0 /* XXX Lockdown keys have moved to gsettings-desktop-schemas,
* so disable lockdown integration until we're ready for
* GSettings. */
#ifndef G_OS_WIN32
e_shell_settings_install_property_for_key (
"disable-application-handlers",
"/desktop/gnome/lockdown/disable_application_handlers");
e_shell_settings_install_property_for_key (
"disable-command-line",
"/desktop/gnome/lockdown/disable_command_line");
e_shell_settings_install_property_for_key (
"disable-printing",
"/desktop/gnome/lockdown/disable_printing");
e_shell_settings_install_property_for_key (
"disable-print-setup",
"/desktop/gnome/lockdown/disable_print_setup");
e_shell_settings_install_property_for_key (
"disable-save-to-disk",
"/desktop/gnome/lockdown/disable_save_to_disk");
#endif /* G_OS_WIN32 */
#endif
/*** Session Management ***/
sm_client = egg_sm_client_get ();

View File

@ -36,13 +36,13 @@ struct _ESignatureManagerPrivate {
GtkWidget *edit_button;
GtkWidget *remove_button;
guint allow_scripts : 1;
guint prefer_html : 1;
guint disable_command_line : 1;
guint prefer_html : 1;
};
enum {
PROP_0,
PROP_ALLOW_SCRIPTS,
PROP_DISABLE_COMMAND_LINE,
PROP_PREFER_HTML,
PROP_SIGNATURE_LIST
};
@ -171,8 +171,8 @@ signature_manager_set_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_ALLOW_SCRIPTS:
e_signature_manager_set_allow_scripts (
case PROP_DISABLE_COMMAND_LINE:
e_signature_manager_set_disable_command_line (
E_SIGNATURE_MANAGER (object),
g_value_get_boolean (value));
return;
@ -200,10 +200,10 @@ signature_manager_get_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_ALLOW_SCRIPTS:
case PROP_DISABLE_COMMAND_LINE:
g_value_set_boolean (
value,
e_signature_manager_get_allow_scripts (
e_signature_manager_get_disable_command_line (
E_SIGNATURE_MANAGER (object)));
return;
@ -266,6 +266,26 @@ signature_manager_dispose (GObject *object)
G_OBJECT_CLASS (e_signature_manager_parent_class)->dispose (object);
}
static void
signature_manager_constructed (GObject *object)
{
#ifndef G_OS_WIN32
GSettings *settings;
settings = g_settings_new ("org.gnome.desktop.lockdown");
g_settings_bind (
settings, "disable-command-line",
object, "disable-command-line",
G_SETTINGS_BIND_GET);
g_object_unref (settings);
#endif
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_signature_manager_parent_class)->constructed (object);
}
static void
signature_manager_add_signature (ESignatureManager *manager)
{
@ -407,6 +427,7 @@ e_signature_manager_class_init (ESignatureManagerClass *class)
object_class->set_property = signature_manager_set_property;
object_class->get_property = signature_manager_get_property;
object_class->dispose = signature_manager_dispose;
object_class->constructed = signature_manager_constructed;
class->add_signature = signature_manager_add_signature;
class->add_signature_script = signature_manager_add_signature_script;
@ -416,12 +437,12 @@ e_signature_manager_class_init (ESignatureManagerClass *class)
g_object_class_install_property (
object_class,
PROP_ALLOW_SCRIPTS,
PROP_DISABLE_COMMAND_LINE,
g_param_spec_boolean (
"allow-scripts",
"Allow Scripts",
"disable-command-line",
"Disable Command Line",
NULL,
TRUE,
FALSE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT));
@ -583,9 +604,10 @@ e_signature_manager_init (ESignatureManager *manager)
gtk_widget_show (widget);
g_object_bind_property (
manager, "allow-scripts",
widget, "sensitive",
G_BINDING_SYNC_CREATE);
manager, "disable-command-line",
widget, "visible",
G_BINDING_SYNC_CREATE |
G_BINDING_INVERT_BOOLEAN);
g_signal_connect_swapped (
widget, "clicked",
@ -656,22 +678,22 @@ e_signature_manager_remove_signature (ESignatureManager *manager)
}
gboolean
e_signature_manager_get_allow_scripts (ESignatureManager *manager)
e_signature_manager_get_disable_command_line (ESignatureManager *manager)
{
g_return_val_if_fail (E_IS_SIGNATURE_MANAGER (manager), FALSE);
return manager->priv->allow_scripts;
return manager->priv->disable_command_line;
}
void
e_signature_manager_set_allow_scripts (ESignatureManager *manager,
gboolean allow_scripts)
e_signature_manager_set_disable_command_line (ESignatureManager *manager,
gboolean disable_command_line)
{
g_return_if_fail (E_IS_SIGNATURE_MANAGER (manager));
manager->priv->allow_scripts = allow_scripts;
manager->priv->disable_command_line = disable_command_line;
g_object_notify (G_OBJECT (manager), "allow-scripts");
g_object_notify (G_OBJECT (manager), "disable-command-line");
}
gboolean

View File

@ -78,11 +78,11 @@ void e_signature_manager_edit_signature
(ESignatureManager *manager);
void e_signature_manager_remove_signature
(ESignatureManager *manager);
gboolean e_signature_manager_get_allow_scripts
gboolean e_signature_manager_get_disable_command_line
(ESignatureManager *manager);
void e_signature_manager_set_allow_scripts
void e_signature_manager_set_disable_command_line
(ESignatureManager *manager,
gboolean allow_scripts);
gboolean disable_command_line);
gboolean e_signature_manager_get_prefer_html
(ESignatureManager *manager);
void e_signature_manager_set_prefer_html

View File

@ -29,7 +29,7 @@
enum {
PROP_0,
PROP_ALLOW_SCRIPTS,
PROP_DISABLE_COMMAND_LINE,
PROP_SIGNATURE
};
@ -40,7 +40,7 @@ enum {
struct _ESignaturePreviewPrivate {
ESignature *signature;
guint allow_scripts : 1;
guint disable_command_line : 1;
};
static guint signals[LAST_SIGNAL];
@ -57,8 +57,8 @@ signature_preview_set_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_ALLOW_SCRIPTS:
e_signature_preview_set_allow_scripts (
case PROP_DISABLE_COMMAND_LINE:
e_signature_preview_set_disable_command_line (
E_SIGNATURE_PREVIEW (object),
g_value_get_boolean (value));
return;
@ -80,15 +80,17 @@ signature_preview_get_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_ALLOW_SCRIPTS:
case PROP_DISABLE_COMMAND_LINE:
g_value_set_boolean (
value, e_signature_preview_get_allow_scripts (
value,
e_signature_preview_get_disable_command_line (
E_SIGNATURE_PREVIEW (object)));
return;
case PROP_SIGNATURE:
g_value_set_object (
value, e_signature_preview_get_signature (
value,
e_signature_preview_get_signature (
E_SIGNATURE_PREVIEW (object)));
return;
}
@ -112,6 +114,26 @@ signature_preview_dispose (GObject *object)
G_OBJECT_CLASS (e_signature_preview_parent_class)->dispose (object);
}
static void
signature_preview_constructed (GObject *object)
{
#ifndef G_OS_WIN32
GSettings *settings;
settings = g_settings_new ("org.gnome.desktop.lockdown");
g_settings_bind (
settings, "disable-command-line",
object, "disable-command-line",
G_SETTINGS_BIND_GET);
g_object_unref (settings);
#endif
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (e_signature_preview_parent_class)->constructed (object);
}
static void
signature_preview_refresh (ESignaturePreview *preview)
{
@ -132,7 +154,7 @@ signature_preview_refresh (ESignaturePreview *preview)
filename = e_signature_get_filename (signature);
is_script = e_signature_get_is_script (signature);
if (is_script && !preview->priv->allow_scripts)
if (is_script && preview->priv->disable_command_line)
goto clear;
if (is_script)
@ -174,17 +196,18 @@ e_signature_preview_class_init (ESignaturePreviewClass *class)
object_class->set_property = signature_preview_set_property;
object_class->get_property = signature_preview_get_property;
object_class->dispose = signature_preview_dispose;
object_class->constructed = signature_preview_constructed;
class->refresh = signature_preview_refresh;
g_object_class_install_property (
object_class,
PROP_ALLOW_SCRIPTS,
PROP_DISABLE_COMMAND_LINE,
g_param_spec_boolean (
"allow-scripts",
"Allow Scripts",
"disable-command-line",
"Disable Command Line",
NULL,
TRUE,
FALSE,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT));
@ -230,21 +253,22 @@ e_signature_preview_refresh (ESignaturePreview *preview)
}
gboolean
e_signature_preview_get_allow_scripts (ESignaturePreview *preview)
e_signature_preview_get_disable_command_line (ESignaturePreview *preview)
{
g_return_val_if_fail (E_IS_SIGNATURE_PREVIEW (preview), FALSE);
return preview->priv->allow_scripts;
return preview->priv->disable_command_line;
}
void
e_signature_preview_set_allow_scripts (ESignaturePreview *preview,
gboolean allow_scripts)
e_signature_preview_set_disable_command_line (ESignaturePreview *preview,
gboolean disable_command_line)
{
g_return_if_fail (E_IS_SIGNATURE_PREVIEW (preview));
preview->priv->allow_scripts = allow_scripts;
g_object_notify (G_OBJECT (preview), "allow-scripts");
preview->priv->disable_command_line = disable_command_line;
g_object_notify (G_OBJECT (preview), "disable-command-line");
}
ESignature *

View File

@ -65,11 +65,11 @@ struct _ESignaturePreviewClass {
GType e_signature_preview_get_type (void);
GtkWidget * e_signature_preview_new (void);
void e_signature_preview_refresh (ESignaturePreview *preview);
gboolean e_signature_preview_get_allow_scripts
gboolean e_signature_preview_get_disable_command_line
(ESignaturePreview *preview);
void e_signature_preview_set_allow_scripts
void e_signature_preview_set_disable_command_line
(ESignaturePreview *preview,
gboolean allow_scripts);
gboolean disable_command_line);
ESignature * e_signature_preview_get_signature
(ESignaturePreview *preview);
void e_signature_preview_set_signature

View File

@ -733,6 +733,31 @@ web_view_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
web_view_constructed (GObject *object)
{
#ifndef G_OS_WIN32
GSettings *settings;
settings = g_settings_new ("org.gnome.desktop.lockdown");
g_settings_bind (
settings, "disable-printing",
object, "disable-printing",
G_SETTINGS_BIND_GET);
g_settings_bind (
settings, "disable-save-to-disk",
object, "disable-save-to-disk",
G_SETTINGS_BIND_GET);
g_object_unref (settings);
#endif
/* Chain up to parent's constructed() method. */
G_OBJECT_CLASS (parent_class)->constructed (object);
}
static gboolean
web_view_button_press_event (GtkWidget *widget,
GdkEventButton *event)
@ -1121,6 +1146,7 @@ e_web_view_class_init (EWebViewClass *class)
object_class->get_property = web_view_get_property;
object_class->dispose = web_view_dispose;
object_class->finalize = web_view_finalize;
object_class->constructed = web_view_constructed;
widget_class = GTK_WIDGET_CLASS (class);
widget_class->button_press_event = web_view_button_press_event;