vino r879 - in trunk: . capplet server
- From: jwendell svn gnome org
- To: svn-commits-list gnome org
- Subject: vino r879 - in trunk: . capplet server
- Date: Sat, 26 Jul 2008 02:11:08 +0000 (UTC)
Author: jwendell
Date: Sat Jul 26 02:11:08 2008
New Revision: 879
URL: http://svn.gnome.org/viewvc/vino?rev=879&view=rev
Log:
2008-07-25 Jorge Pereira <jorge jorgepereira com br>
* capplet/vino-preferences.c:
(vino_preferences_dialog_update_for_allowed),
(vino_preferences_dialog_disable_background_toggled),
(vino_preferences_dialog_disable_background_notify),
(vino_preferences_dialog_setup_disable_background_toggle),
(vino_preferences_dialog_init):
* capplet/vino-preferences.glade:
* server/Makefile.am:
* server/vino-background.c: (vino_background_handler),
(vino_background_draw):
* server/vino-background.h:
* server/vino-prefs.c: (vino_prefs_disable_background_changed),
(vino_prefs_create_server), (vino_prefs_init):
* server/vino-server.c: (vino_server_set_disable_background),
(vino_server_get_disable_background),
(vino_server_client_accepted), (vino_server_client_disconnected),
(vino_server_set_property), (vino_server_get_property),
(vino_server_class_init):
* server/vino-server.h:
* server/vino-server.schemas.in:
New feature to disable wallpaper when connected to vino.
Close #515072.
Added:
trunk/server/vino-background.c
trunk/server/vino-background.h
Modified:
trunk/ChangeLog
trunk/capplet/vino-preferences.c
trunk/capplet/vino-preferences.glade
trunk/server/Makefile.am
trunk/server/vino-prefs.c
trunk/server/vino-server.c
trunk/server/vino-server.h
trunk/server/vino-server.schemas.in
Modified: trunk/capplet/vino-preferences.c
==============================================================================
--- trunk/capplet/vino-preferences.c (original)
+++ trunk/capplet/vino-preferences.c Sat Jul 26 02:11:08 2008
@@ -54,8 +54,9 @@
#define VINO_PREFS_USE_ALTERNATIVE_PORT VINO_PREFS_DIR "/use_alternative_port"
#define VINO_PREFS_ALTERNATIVE_PORT VINO_PREFS_DIR "/alternative_port"
#define VINO_PREFS_LOCK_SCREEN VINO_PREFS_DIR "/lock_screen_on_disconnect"
+#define VINO_PREFS_DISABLE_BACKGROUND VINO_PREFS_DIR "/disable_background"
-#define N_LISTENERS 12
+#define N_LISTENERS 13
#define VINO_DBUS_BUS_NAME "org.gnome.Vino"
#define VINO_DBUS_INTERFACE "org.gnome.VinoScreen"
@@ -83,6 +84,7 @@
GtkWidget *use_alternative_port_toggle;
GtkWidget *alternative_port_entry;
GtkWidget *lock_screen_toggle;
+ GtkWidget *disable_background_toggle;
GtkTooltips *tips;
guint listeners [N_LISTENERS];
@@ -176,6 +178,7 @@
gtk_widget_set_sensitive (dialog->alternative_port_entry, allowed &&
gconf_client_get_bool (dialog->client, VINO_PREFS_USE_ALTERNATIVE_PORT, NULL));
gtk_widget_set_sensitive (dialog->lock_screen_toggle, allowed);
+ gtk_widget_set_sensitive (dialog->disable_background_toggle, allowed);
}
static void
@@ -1003,6 +1006,67 @@
}
static void
+vino_preferences_dialog_disable_background_toggled (GtkToggleButton *toggle,
+ VinoPreferencesDialog *dialog)
+{
+ gboolean disable_background;
+
+ disable_background = gtk_toggle_button_get_active (toggle);
+
+ gconf_client_set_bool (dialog->client, VINO_PREFS_DISABLE_BACKGROUND, disable_background, NULL);
+}
+
+static void
+vino_preferences_dialog_disable_background_notify (GConfClient *client,
+ guint cnx_id,
+ GConfEntry *entry,
+ VinoPreferencesDialog *dialog)
+{
+ gboolean disable_background;
+
+ if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
+ return;
+
+ disable_background = gconf_value_get_bool (entry->value) != FALSE;
+
+ if (disable_background != gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->disable_background_toggle)))
+ {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->disable_background_toggle), disable_background);
+ }
+}
+
+static gboolean
+vino_preferences_dialog_setup_disable_background_toggle (VinoPreferencesDialog *dialog)
+{
+ gboolean disable_background;
+
+ dialog->disable_background_toggle = glade_xml_get_widget (dialog->xml, "disable_background_toggle");
+ g_assert (dialog->disable_background_toggle != NULL);
+
+ disable_background = gconf_client_get_bool (dialog->client, VINO_PREFS_DISABLE_BACKGROUND, NULL);
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->disable_background_toggle), disable_background);
+
+ g_signal_connect (dialog->disable_background_toggle, "toggled",
+ G_CALLBACK (vino_preferences_dialog_disable_background_toggled), dialog);
+
+ if (!gconf_client_key_is_writable (dialog->client, VINO_PREFS_DISABLE_BACKGROUND, NULL))
+ {
+ gtk_widget_set_sensitive (dialog->disable_background_toggle, FALSE);
+ gtk_widget_show (dialog->writability_warning);
+ }
+
+ dialog->listeners [dialog->n_listeners] =
+ gconf_client_notify_add (dialog->client,
+ VINO_PREFS_DISABLE_BACKGROUND,
+ (GConfClientNotifyFunc) vino_preferences_dialog_disable_background_notify,
+ dialog, NULL, NULL);
+ dialog->n_listeners++;
+
+ return disable_background;
+}
+
+static void
vino_preferences_server_updated (DBusGProxy *proxy,
const char *name,
const char *prev_owner,
@@ -1436,6 +1500,7 @@
vino_preferences_dialog_setup_alternative_port_entry (dialog);
vino_preferences_dialog_setup_use_alternative_port_toggle (dialog);
vino_preferences_dialog_setup_lock_screen_toggle (dialog);
+ vino_preferences_dialog_setup_disable_background_toggle (dialog);
g_assert (dialog->n_listeners == dialog->expected_listeners);
Modified: trunk/capplet/vino-preferences.glade
==============================================================================
--- trunk/capplet/vino-preferences.glade (original)
+++ trunk/capplet/vino-preferences.glade Sat Jul 26 02:11:08 2008
@@ -392,7 +392,6 @@
<widget class="GtkImage" id="network_icon">
<property name="visible">True</property>
<property name="yalign">0</property>
- <property name="stock">gtk-missing-image</property>
<property name="icon_size">6</property>
<property name="icon_name">network-workgroup</property>
</widget>
@@ -460,6 +459,20 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkCheckButton" id="disable_background_toggle">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="tooltip" translatable="yes">Disable the wallpaper when successfull connection</property>
+ <property name="label" translatable="yes">Disable the _wallpaper when connected</property>
+ <property name="use_underline">True</property>
+ <property name="response_id">0</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="expand">False</property>
@@ -500,7 +513,6 @@
<widget class="GtkImage" id="network_icon2">
<property name="visible">True</property>
<property name="yalign">0</property>
- <property name="stock">gtk-missing-image</property>
<property name="icon_size">6</property>
<property name="icon_name">system-lock-screen</property>
</widget>
@@ -570,7 +582,7 @@
<property name="visible">True</property>
<property name="spacing">6</property>
<child>
- <widget class="GtkLabel" id="label1">
+ <widget class="GtkLabel" id="label2">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
@@ -587,7 +599,6 @@
<widget class="GtkImage" id="notification_icon">
<property name="visible">True</property>
<property name="yalign">0</property>
- <property name="stock">gtk-missing-image</property>
<property name="icon_size">6</property>
<property name="icon_name">gnome-panel-notification-area</property>
</widget>
@@ -667,7 +678,7 @@
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label2">
+ <widget class="GtkLabel" id="label3">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Advanced</property>
Modified: trunk/server/Makefile.am
==============================================================================
--- trunk/server/Makefile.am (original)
+++ trunk/server/Makefile.am Sat Jul 26 02:11:08 2008
@@ -67,6 +67,8 @@
vino-status-icon.h \
vino-dbus-listener.c \
vino-dbus-listener.h \
+ vino-background.c \
+ vino-background.h \
$(VINO_HTTP_SRC) \
$(CORBA_SRCLIST) \
$(NULL)
Added: trunk/server/vino-background.c
==============================================================================
--- (empty file)
+++ trunk/server/vino-background.c Sat Jul 26 02:11:08 2008
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2008 Jorge Pereira <jorge jorgepereira com br>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors:
+ * Jorge Pereira <jorge jorgepereira com br>
+ */
+
+#include <gconf/gconf-client.h>
+#include "vino-background.h"
+
+#define VINO_PREFS_DISABLE_BACKGROUND "/desktop/gnome/remote_access/disable_background"
+#define GNOME_BACKGROUND_DRAW "/desktop/gnome/background/draw_background"
+
+void
+vino_background_handler (int sig)
+{
+ GConfClient *client = gconf_client_get_default ();
+
+ if (gconf_client_get_bool (client, VINO_PREFS_DISABLE_BACKGROUND, NULL) &&
+ !gconf_client_get_bool (client, GNOME_BACKGROUND_DRAW, NULL))
+ gconf_client_set_bool (client, GNOME_BACKGROUND_DRAW, TRUE, NULL);
+
+ g_object_unref (client);
+}
+
+void
+vino_background_draw (gboolean option)
+{
+ GConfClient *client = gconf_client_get_default ();
+
+ if (option && !gconf_client_get_bool (client, GNOME_BACKGROUND_DRAW, NULL))
+ gconf_client_set_bool (client, GNOME_BACKGROUND_DRAW, TRUE, NULL);
+ else if (!option && gconf_client_get_bool (client, GNOME_BACKGROUND_DRAW, NULL))
+ gconf_client_set_bool (client, GNOME_BACKGROUND_DRAW, FALSE, NULL);
+
+ g_object_unref (client);
+}
+
Added: trunk/server/vino-background.h
==============================================================================
--- (empty file)
+++ trunk/server/vino-background.h Sat Jul 26 02:11:08 2008
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 Jorge Pereira <jorge jorgepereira com br>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * Authors:
+ * Jorge Pereira <jorge jorgepereira com br>
+ */
+
+#ifndef __VINO_BACKGROUND_H__
+#define __VINO_BACKGROUND_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+void vino_background_handler (int sig);
+void vino_background_draw (gboolean option);
+
+G_END_DECLS
+
+#endif /* __VINO_BACKGROUND_H__ */
Modified: trunk/server/vino-prefs.c
==============================================================================
--- trunk/server/vino-prefs.c (original)
+++ trunk/server/vino-prefs.c Sat Jul 26 02:11:08 2008
@@ -26,9 +26,11 @@
#include <string.h>
#include <gconf/gconf-client.h>
+#include <signal.h>
#include "vino-util.h"
#include "vino-mdns.h"
#include "vino-status-icon.h"
+#include "vino-background.h"
#define VINO_PREFS_DIR "/desktop/gnome/remote_access"
#define VINO_PREFS_ENABLED VINO_PREFS_DIR "/enabled"
@@ -42,8 +44,9 @@
#define VINO_PREFS_VNC_PASSWORD VINO_PREFS_DIR "/vnc_password"
#define VINO_PREFS_LOCK_SCREEN VINO_PREFS_DIR "/lock_screen_on_disconnect"
#define VINO_PREFS_ICON_VISIBILITY VINO_PREFS_DIR "/icon_visibility"
+#define VINO_PREFS_DISABLE_BACKGROUND VINO_PREFS_DIR "/disable_background"
-#define VINO_N_LISTENERS 11
+#define VINO_N_LISTENERS 12
static GConfClient *vino_client = NULL;
static GSList *vino_servers = NULL;
@@ -59,6 +62,7 @@
static gboolean vino_use_alternative_port = FALSE;
static int vino_alternative_port = VINO_SERVER_DEFAULT_PORT;
static gboolean vino_lock_screen = FALSE;
+static gboolean vino_disable_background = FALSE;
static VinoStatusIconVisibility vino_icon_visibility = VINO_STATUS_ICON_VISIBILITY_CLIENT;
static void
@@ -392,6 +396,30 @@
}
}
+static void
+vino_prefs_disable_background_changed (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry)
+{
+ gboolean disable_background;
+ GSList *l;
+
+ if (!entry->value || entry->value->type != GCONF_VALUE_BOOL)
+ return;
+
+ disable_background = gconf_value_get_bool (entry->value) != FALSE;
+
+ if (vino_disable_background == disable_background)
+ return;
+
+ vino_disable_background = disable_background;
+
+ dprintf (PREFS, "Disable background changed: %s\n", vino_disable_background ? "(true)" : "(false)");
+
+ for (l = vino_servers; l; l = l->next)
+ vino_server_set_disable_background (l->data, disable_background);
+}
+
void
vino_prefs_create_server (GdkScreen *screen)
{
@@ -410,7 +438,8 @@
"vnc-password", vino_vnc_password,
"on-hold", !vino_enabled,
"screen", screen,
- "lock-screen", vino_lock_screen,
+ "lock-screen", vino_lock_screen,
+ "disable-background", vino_disable_background,
NULL);
vino_servers = g_slist_prepend (vino_servers, server);
@@ -427,6 +456,10 @@
GSList *auth_methods_list, *l;
int i = 0;
char *key_str;
+
+ signal (SIGQUIT, vino_background_handler); /* Ctrl+C */
+ signal (SIGTERM, vino_background_handler); /* kill -15 */
+ signal (SIGSEGV, vino_background_handler); /* Segmentation fault */
vino_client = gconf_client_get_default ();
@@ -502,6 +535,11 @@
dprintf (PREFS, "Lock screen on disconnect: %s\n",
vino_lock_screen ? "(true)" : "(false)");
+ vino_disable_background = gconf_client_get_bool (vino_client,
+ VINO_PREFS_DISABLE_BACKGROUND,
+ NULL);
+ dprintf (PREFS, "Disable background: %s\n", vino_disable_background ? "(true)" : "(false)");
+
key_str = gconf_client_get_string (vino_client,
VINO_PREFS_ICON_VISIBILITY,
NULL);
@@ -592,6 +630,14 @@
i++;
+ vino_listeners [i] =
+ gconf_client_notify_add (vino_client,
+ VINO_PREFS_DISABLE_BACKGROUND,
+ (GConfClientNotifyFunc) vino_prefs_disable_background_changed,
+ NULL, NULL, NULL);
+
+ i++;
+
g_assert (i == VINO_N_LISTENERS);
}
@@ -619,3 +665,4 @@
g_object_unref (vino_client);
vino_client = NULL;
}
+
Modified: trunk/server/vino-server.c
==============================================================================
--- trunk/server/vino-server.c (original)
+++ trunk/server/vino-server.c Sat Jul 26 02:11:08 2008
@@ -36,6 +36,7 @@
#include "vino-dbus-listener.h"
#include "vino-util.h"
#include "vino-enums.h"
+#include "vino-background.h"
#include <sys/poll.h>
#include <dbus/dbus-glib.h>
#include <gtk/gtk.h>
@@ -82,6 +83,7 @@
guint last_auth_failed : 1;
guint use_alternative_port : 1;
guint lock_screen : 1;
+ guint disable_background : 1;
};
struct _VinoClient
@@ -111,7 +113,8 @@
PROP_AUTH_METHODS,
PROP_VNC_PASSWORD,
PROP_PORT,
- PROP_LOCK_SCREEN
+ PROP_LOCK_SCREEN,
+ PROP_DISABLE_BACKGROUND
};
static enum rfbNewClientAction vino_server_auth_client (VinoServer *server,
@@ -166,20 +169,50 @@
#undef GNOME_SCREENSAVER_PATH
}
+void
+vino_server_set_disable_background (VinoServer *server,
+ gboolean disable_background)
+{
+ g_return_if_fail (VINO_IS_SERVER (server));
+
+ disable_background = disable_background != FALSE;
+
+ if (server->priv->disable_background != disable_background)
+ {
+ server->priv->disable_background = disable_background;
+
+ g_object_notify (G_OBJECT (server), "disable-background");
+ }
+}
+
+gboolean
+vino_server_get_disable_background (VinoServer *server)
+{
+ g_return_val_if_fail (VINO_IS_SERVER (server), FALSE);
+
+ return server->priv->disable_background;
+}
static void
vino_server_client_accepted (VinoServer *server,
VinoClient *client)
{
vino_status_icon_add_client (server->priv->icon, client);
+
+ if (vino_server_get_disable_background (server))
+ vino_background_draw (FALSE);
}
+
static void
vino_server_client_disconnected (VinoServer *server,
VinoClient *client)
{
if (vino_status_icon_remove_client (server->priv->icon, client))
vino_server_lock_screen (server);
+
+ if (vino_server_get_disable_background (server))
+ vino_background_draw (TRUE);
}
static void
@@ -1016,6 +1049,9 @@
case PROP_LOCK_SCREEN:
vino_server_set_lock_screen (server, g_value_get_boolean (value));
break;
+ case PROP_DISABLE_BACKGROUND:
+ vino_server_set_disable_background (server, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1068,6 +1104,9 @@
case PROP_LOCK_SCREEN:
g_value_set_boolean (value, server->priv->lock_screen);
break;
+ case PROP_DISABLE_BACKGROUND:
+ g_value_set_boolean (value, server->priv->disable_background);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1240,6 +1279,18 @@
G_PARAM_STATIC_NICK |
G_PARAM_STATIC_BLURB));
+ g_object_class_install_property (gobject_class,
+ PROP_DISABLE_BACKGROUND,
+ g_param_spec_boolean ("disable-background",
+ "Background on server",
+ "Disable the background image on server",
+ FALSE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_NAME |
+ G_PARAM_STATIC_NICK |
+ G_PARAM_STATIC_BLURB));
+
}
GType
@@ -1621,6 +1672,7 @@
}
}
+
VinoStatusIcon *
vino_server_get_status_icon (VinoServer *server)
{
@@ -1628,3 +1680,4 @@
return server->priv->icon;
}
+
Modified: trunk/server/vino-server.h
==============================================================================
--- trunk/server/vino-server.h (original)
+++ trunk/server/vino-server.h Sat Jul 26 02:11:08 2008
@@ -101,6 +101,10 @@
gboolean lock_screen);
gboolean vino_server_get_lock_screen (VinoServer *server);
+void vino_server_set_disable_background (VinoServer *server,
+ gboolean disable_background);
+gboolean vino_server_get_disable_background (VinoServer *server);
+
#include "vino-status-icon.h"
VinoStatusIcon *vino_server_get_status_icon (VinoServer *server);
Modified: trunk/server/vino-server.schemas.in
==============================================================================
--- trunk/server/vino-server.schemas.in (original)
+++ trunk/server/vino-server.schemas.in Sat Jul 26 02:11:08 2008
@@ -201,5 +201,19 @@
</locale>
</schema>
+ <schema>
+ <key>/schemas/desktop/gnome/remote_access/disable_background</key>
+ <applyto>/desktop/gnome/remote_access/disable_background</applyto>
+ <owner>gnome</owner>
+ <type>bool</type>
+ <default>false</default>
+ <locale name="C">
+ <short>When true, disable the background on receive valid session</short>
+ <long>
+ When true, disable the background on receive valid session
+ </long>
+ </locale>
+ </schema>
+
</schemalist>
</gconfschemafile>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]