static void panel_binding_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, PanelBinding *binding) { GConfValue *value; if (binding->keyval) panel_binding_clear_entry (binding, NULL); binding->keyval = 0; binding->modifiers = 0; value = gconf_entry_get_value (entry); if (!value || value->type != GCONF_VALUE_STRING) return; panel_binding_set_from_string (binding, gconf_value_get_string (value)); if (!binding->keyval) return; panel_binding_set_entry (binding, NULL); }
static void panel_binding_changed (GSettings *settings, gchar *key, PanelBinding *binding) { if (binding->keyval) panel_binding_clear_entry (binding, NULL); binding->keyval = 0; binding->modifiers = 0; gchar *value = g_settings_get_string (settings, key); panel_binding_set_from_string (binding, value); g_free (value); if (!binding->keyval) return; panel_binding_set_entry (binding, NULL); }
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); } }
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; }