mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-09-19 15:51:40 +00:00
8e29ec7faf
within each confgurable user level. * libnautilus-extensions/nautilus-global-preferences.h: Change all preferences strings to not include the "/nautilus" prefix. The prefix is not automatically computed by the prefences api taking into account the user level. Add (nautilus_global_preferences_dialog_update) to rebuild the preferences dialog when the user level changes. * libnautilus-extensions/nautilus-global-preferences.c: (global_preferences_get_dialog), (global_preferences_register_sidebar_panels_preferences_for_ui), (global_preferences_register_with_defaults), (global_preferences_register_boolean_with_defaults), (global_preferences_register_string_with_defaults), (global_preferences_register_enum_with_defaults), (global_preferences_register_for_ui), (global_preferences_initialize_if_needed), (nautilus_global_preferences_show_dialog), (nautilus_global_preferences_hide_dialog), (nautilus_global_preferences_set_dialog_title), (nautilus_global_preferences_dialog_update), (nautilus_global_preferences_shutdown): remove the user level tracking hack. We now set default values for each of the user levels. * libnautilus-extensions/nautilus-icon-container.c: (nautilus_icon_container_initialize): Simplified preference callback api by having a single add_callback function. Use it here. * libnautilus-extensions/nautilus-list.c: (nautilus_list_initialize): Simplified preference callback api by having a single add_callback function. Use it here. * src/file-manager/fm-directory-view.c: (fm_directory_view_initialize): Simplified preference callback api by having a single add_callback function. Use it here. * nautilus-widgets/nautilus-preference.c: (preference_initialize_if_needed), (preference_hash_node_alloc), (preference_hash_node_free_func), (preference_hash_node_free), (preference_register), (preference_hash_node_lookup), (preference_hash_node_lookup_with_registration), (nautilus_preference_shutdown), (nautilus_preference_find_by_name), (nautilus_preference_set_info_by_name), (nautilus_preference_enum_add_entry_by_name): * nautilus-widgets/nautilus-preference.h: Move the preference description hash table here from nautilus-preferences. These are preferences that are expected to have nice defaults as well as descriptions and possibly extra data for the preferences widgets to use (like enumeration values) I moved the tabulation and hashing stuff intactly even though it contains many turds. I plan to fix these soon. * nautilus-widgets/nautilus-preferences-group.c: (nautilus_preferences_group_add_item): * nautilus-widgets/nautilus-preferences-item.c: (preferences_item_construct), (enum_radio_group_changed_callback): Update for the above. * nautilus-widgets/nautilus-preferences.c: (preferences_hash_node_alloc), (preferences_hash_node_free), (preferences_hash_node_add_callback), (preferences_hash_node_remove_callback), (preferences_hash_node_check_changes_func), (preferneces_callback_node_invoke_func), (preferences_register), (preferences_hash_node_lookup_with_registration), (preferences_gconf_callback), (user_level_changed_callback), (preferences_initialize_if_needed), (nautilus_preferences_add_callback), (nautilus_preferences_set_boolean), (nautilus_preferences_get_boolean), (nautilus_preferences_set_enum), (nautilus_preferences_get_enum), (nautilus_preferences_set), (nautilus_preferences_get), (nautilus_preferences_shutdown): * nautilus-widgets/nautilus-preferences.h: Move the tabulation of nice preferences to nautilus-preference. Install one gconf notification for each user level. Remove all the extra unused registration parameters. Use generated keys that take into account the current user level to communicato with GConf. Keep track of user level changes so that we can compare preferences between user levels and fire callbacks accordingly. This simplifies the lifes of preferences callers as they can continue to install one simple callback as before. They will get notified when a preference changes for whatever reason. That could be the user manaually tweaking it, or a sweeping user level change. Again, i tried to keep as much of the original hashing logic intact. It needs cleaning up as well. * nautilus-widgets/nautilus-user-level-manager.c: (nautilus_user_level_manager_set_default_value_if_needed), (nautilus_user_level_manager_compare_preference_between_user_levels ): * nautilus-widgets/nautilus-user-level-manager.h: Add a public function to determine whether a preference is the same between 2 user levels. * nautilus-widgets/test-nautilus-preferences.c: (register_global_preferences): Update to reflect api changes. * src/nautilus-window-menus.c: (nautilus_window_initialize_menus), (user_level_changed_callback), (get_customize_user_level_setttings_menu_string), (update_preferences_dialog_title): Update the preferences dialog whenever the user level changes. This is an easy way to have the dialog reflect reallity. It would be a lot nicer it the contents updated on the fly instead of rebuilding the whole thing. I can do that later.
113 lines
4.9 KiB
C
113 lines
4.9 KiB
C
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
|
|
/* nautilus-preference.h - An object to describe a single Nautilus preference.
|
|
|
|
Copyright (C) 1999, 2000 Eazel, Inc.
|
|
|
|
The Gnome Library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
The Gnome Library 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with the Gnome Library; see the file COPYING.LIB. If not,
|
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
Boston, MA 02111-1307, USA.
|
|
|
|
Authors: Ramiro Estrugo <ramiro@eazel.com>
|
|
*/
|
|
|
|
#ifndef NAUTILUS_PREFERENCE_H
|
|
#define NAUTILUS_PREFERENCE_H
|
|
|
|
#include <gtk/gtkobject.h>
|
|
#include <libgnome/gnome-defs.h>
|
|
#include <libnautilus-extensions/nautilus-string-list.h>
|
|
|
|
BEGIN_GNOME_DECLS
|
|
|
|
#define NAUTILUS_TYPE_PREFERENCE (nautilus_preference_get_type ())
|
|
#define NAUTILUS_PREFERENCE(obj) (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_PREFERENCE, NautilusPreference))
|
|
#define NAUTILUS_PREFERENCE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_PREFERENCE, NautilusPreferenceClass))
|
|
#define NAUTILUS_IS_PREFERENCE(obj) (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_PREFERENCE))
|
|
#define NAUTILUS_IS_PREFERENCE_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_PREFERENCE))
|
|
|
|
typedef struct NautilusPreference NautilusPreference;
|
|
typedef struct NautilusPreferenceClass NautilusPreferenceClass;
|
|
typedef struct NautilusPreferenceDetail NautilusPreferenceDetail;
|
|
|
|
struct NautilusPreference
|
|
{
|
|
GtkObject object;
|
|
NautilusPreferenceDetail *detail;
|
|
};
|
|
|
|
/*
|
|
* NautilusPreferenceType:
|
|
*
|
|
* The types of supported preferences. By default, a preference is of type
|
|
* NAUTILUS_PREFERENCE_STRING, unless otherwise specified in the api.
|
|
*/
|
|
typedef enum
|
|
{
|
|
NAUTILUS_PREFERENCE_STRING,
|
|
NAUTILUS_PREFERENCE_BOOLEAN,
|
|
NAUTILUS_PREFERENCE_ENUM
|
|
} NautilusPreferenceType;
|
|
|
|
struct NautilusPreferenceClass
|
|
{
|
|
GtkObjectClass object_class;
|
|
};
|
|
|
|
GtkType nautilus_preference_get_type (void);
|
|
GtkObject * nautilus_preference_new (const char *name);
|
|
GtkObject * nautilus_preference_new_from_type (const char *name,
|
|
NautilusPreferenceType type);
|
|
NautilusPreferenceType nautilus_preference_get_preference_type (const NautilusPreference *preference);
|
|
void nautilus_preference_set_preference_type (NautilusPreference *preference,
|
|
NautilusPreferenceType type);
|
|
char * nautilus_preference_get_name (const NautilusPreference *preference);
|
|
char * nautilus_preference_get_description (const NautilusPreference *preference);
|
|
void nautilus_preference_set_description (NautilusPreference *preference,
|
|
const char *description);
|
|
/* Methods to deal with enum preferences */
|
|
void nautilus_preference_enum_add_entry (NautilusPreference *preference,
|
|
const char *entry_name,
|
|
const char *entry_description,
|
|
gint entry_value);
|
|
char * nautilus_preference_enum_get_nth_entry_name (const NautilusPreference *preference,
|
|
guint n);
|
|
char * nautilus_preference_enum_get_nth_entry_description (const NautilusPreference *preference,
|
|
guint n);
|
|
gint nautilus_preference_enum_get_nth_entry_value (const NautilusPreference *preference,
|
|
guint n);
|
|
guint nautilus_preference_enum_get_num_entries (const NautilusPreference *preference);
|
|
|
|
|
|
/*
|
|
*
|
|
*/
|
|
NautilusPreference *nautilus_preference_find_by_name (const char *name);
|
|
void nautilus_preference_set_info_by_name (const char *name,
|
|
const char *description,
|
|
NautilusPreferenceType type,
|
|
gconstpointer *default_values,
|
|
guint num_default_values);
|
|
void nautilus_preference_enum_add_entry_by_name (const char *name,
|
|
const char *entry_name,
|
|
const char *entry_description,
|
|
int entry_value);
|
|
|
|
void nautilus_preference_shutdown (void);
|
|
|
|
|
|
BEGIN_GNOME_DECLS
|
|
|
|
#endif /* NAUTILUS_PREFERENCE_H */
|