static void
panel_bindings_initialise (void)
{
	GConfClient *client;
	GError      *error;
	int          i;

	client = panel_gconf_get_client ();

	error = NULL;
	gconf_client_add_dir (client, BINDINGS_PREFIX,
			      GCONF_CLIENT_PRELOAD_ONELEVEL, &error);
	if (error) {
		g_warning (_("Error loading gconf directory '%s': %s"),
			   BINDINGS_PREFIX, error->message),
		g_error_free (error);
	}

	for (i = 0; i < G_N_ELEMENTS (bindings); i++) {
		const char *key;
		char       *str;

		key = panel_gconf_sprintf ("%s/%s", BINDINGS_PREFIX, bindings [i].key);

		error = NULL;
		str = gconf_client_get_string (client, key, &error);
		if (error) {
			g_warning (_("Error getting value for '%s': %s"),
				   error->message, key);
			continue;
		}

		panel_binding_set_from_string (&bindings [i], str);
		panel_binding_watch (&bindings [i], key);

		g_free (str);
	}
}
Пример #2
0
static void
panel_bindings_initialise (void)
{
	int          i;
	char        *str;

	if (initialised)
		return;

	if (!mate_gsettings_schema_exists (MARCO_SCHEMA)) {
		initialised = TRUE;
		return;
	}

	marco_settings = g_settings_new (MARCO_SCHEMA);
	marco_keybindings_settings = g_settings_new (MARCO_KEYBINDINGS_SCHEMA);

	for (i = 0; i < G_N_ELEMENTS (bindings); i++) {
		str = g_settings_get_string (marco_keybindings_settings, bindings [i].key);
		panel_binding_set_from_string (&bindings [i], str);
		panel_binding_watch (&bindings [i], bindings [i].key);
		g_free (str);
	}

	/* mouse button modifier */

	g_signal_connect (marco_settings,
					  "changed::" MARCO_MOUSE_BUTTON_MODIFIER_KEY,
					  G_CALLBACK (panel_bindings_mouse_modifier_changed),
					  NULL);

	str = g_settings_get_string (marco_settings, MARCO_MOUSE_BUTTON_MODIFIER_KEY);
	panel_bindings_mouse_modifier_set_from_string (str);
	g_free (str);

	initialised = TRUE;
}