void
nautilus_global_preferences_init (void)
{
	static gboolean initialized = FALSE;
	int i;

	if (initialized) {
		return;
	}

	initialized = TRUE;

	eel_preferences_init ("/apps/nautilus");

	/* Install defaults */
	global_preferences_install_defaults ();

	global_preferences_register_enumerations ();

	/* Add monitors for any other GConf paths we have keys in */
	for (i=0; EXTRA_MONITOR_PATHS[i] != NULL; i++) {
		eel_preferences_monitor_directory (EXTRA_MONITOR_PATHS[i]);
	}

	/* Set up storage for values accessed in this file */
	eel_preferences_add_callback (NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_SORT_ORDER_OR_MANUAL_LAYOUT,
				      default_icon_view_sort_order_or_manual_layout_changed_callback, 
				      NULL);

	/* Preload everything in a big batch */
	eel_gconf_preload_cache ("/apps/nautilus/preferences",
				 GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_preload_cache ("/desktop/gnome/file_views",
				 GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_preload_cache ("/desktop/gnome/background",
				 GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_preload_cache ("/desktop/gnome/lockdown",
				 GCONF_CLIENT_PRELOAD_ONELEVEL);

	/* These are always needed for the desktop */
	eel_gconf_preload_cache ("/apps/nautilus/desktop",
				 GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_preload_cache ("/apps/nautilus/icon_view",
				 GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_preload_cache ("/apps/nautilus/desktop-metadata",
				 GCONF_CLIENT_PRELOAD_RECURSIVE);
}
static  void
nautilus_file_management_properties_dialog_setup (GladeXML *xml_dialog, GtkWindow *window)
{
	GtkWidget *dialog;

	/* setup gconf stuff */
	eel_gconf_monitor_add ("/apps/nautilus/icon_view");
	eel_gconf_preload_cache ("/apps/nautilus/icon_view", GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_monitor_add ("/apps/nautilus/list_view");
	eel_gconf_preload_cache ("/apps/nautilus/list_view", GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_monitor_add ("/apps/nautilus/preferences");
	eel_gconf_preload_cache ("/apps/nautilus/preferences", GCONF_CLIENT_PRELOAD_ONELEVEL);
	eel_gconf_monitor_add ("/desktop/gnome/file_views");
	eel_gconf_preload_cache ("/desktop/gnome/file_views", GCONF_CLIENT_PRELOAD_ONELEVEL);

	/* setup UI */
	nautilus_file_management_properties_size_group_create (xml_dialog, 
							       "views_label",
							       4);
	nautilus_file_management_properties_size_group_create (xml_dialog,
							       "captions_label",
							       3);
	nautilus_file_management_properties_size_group_create (xml_dialog,
							       "preview_label",
							       5);
	create_date_format_menu (xml_dialog);

	/* setup preferences */
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_COMPACT_LAYOUT_WIDGET,
					    NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_USE_TIGHTER_LAYOUT);
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_LABELS_BESIDE_ICONS_WIDGET,
					    NAUTILUS_PREFERENCES_ICON_VIEW_LABELS_BESIDE_ICONS);
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_FOLDERS_FIRST_WIDGET,
					    NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST); 
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_ALWAYS_USE_BROWSER_WIDGET,
					    NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER);

	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_MEDIA_AUTOMOUNT_OPEN,
					    NAUTILUS_PREFERENCES_MEDIA_AUTOMOUNT_OPEN);
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_MEDIA_AUTORUN_NEVER,
					    NAUTILUS_PREFERENCES_MEDIA_AUTORUN_NEVER);

	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_TRASH_CONFIRM_WIDGET,
					    NAUTILUS_PREFERENCES_CONFIRM_TRASH);
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_TRASH_DELETE_WIDGET,
					    NAUTILUS_PREFERENCES_ENABLE_DELETE);
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_SHOW_HIDDEN_WIDGET,
					    NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES);
	eel_preferences_glade_connect_bool_slave (xml_dialog,
						  NAUTILUS_FILE_MANAGEMENT_PROPERTIES_SHOW_HIDDEN_WIDGET,
						  NAUTILUS_PREFERENCES_SHOW_BACKUP_FILES);
	eel_preferences_glade_connect_bool (xml_dialog,
					    NAUTILUS_FILE_MANAGEMENT_PROPERTIES_TREE_VIEW_FOLDERS_WIDGET,
					    NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES);

	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_DEFAULT_VIEW_WIDGET,
							     NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER,
							     (const char **) default_view_values);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_ICON_VIEW_ZOOM_WIDGET,						     
							     NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_ZOOM_LEVEL,
							     (const char **) zoom_values);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_LIST_VIEW_ZOOM_WIDGET,
							     NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_ZOOM_LEVEL,
							     (const char **) zoom_values);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_SORT_ORDER_WIDGET,
							     NAUTILUS_PREFERENCES_ICON_VIEW_DEFAULT_SORT_ORDER,
							     (const char **) sort_order_values);
	eel_preferences_glade_connect_string_enum_combo_box_slave (xml_dialog,
								   NAUTILUS_FILE_MANAGEMENT_PROPERTIES_SORT_ORDER_WIDGET,
								   NAUTILUS_PREFERENCES_LIST_VIEW_DEFAULT_SORT_ORDER);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_PREVIEW_TEXT_WIDGET,
							     NAUTILUS_PREFERENCES_SHOW_TEXT_IN_ICONS,
							     (const char **) preview_values);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_PREVIEW_IMAGE_WIDGET,
							     NAUTILUS_PREFERENCES_SHOW_IMAGE_FILE_THUMBNAILS,
							     (const char **) preview_values);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_PREVIEW_SOUND_WIDGET,
							     NAUTILUS_PREFERENCES_PREVIEW_SOUND,
							     (const char **) preview_values);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_PREVIEW_FOLDER_WIDGET,
							     NAUTILUS_PREFERENCES_SHOW_DIRECTORY_ITEM_COUNTS,
							     (const char **) preview_values);
	eel_preferences_glade_connect_string_enum_combo_box (xml_dialog,
							     NAUTILUS_FILE_MANAGEMENT_PROPERTIES_DATE_FORMAT_WIDGET,
							     NAUTILUS_PREFERENCES_DATE_FORMAT,
							     (const char **) date_format_values);

	eel_preferences_glade_connect_string_enum_radio_button (xml_dialog,
								(const char **) click_behavior_components,
								NAUTILUS_PREFERENCES_CLICK_POLICY,
								(const char **) click_behavior_values);
	eel_preferences_glade_connect_string_enum_radio_button (xml_dialog,
								(const char **) executable_text_components,
								NAUTILUS_PREFERENCES_EXECUTABLE_TEXT_ACTIVATION,
								(const char **) executable_text_values);

	eel_preferences_glade_connect_int_enum (xml_dialog,
						NAUTILUS_FILE_MANAGEMENT_PROPERTIES_THUMBNAIL_LIMIT_WIDGET,
						NAUTILUS_PREFERENCES_IMAGE_FILE_THUMBNAIL_LIMIT,
						(const int *) thumbnail_limit_values);


	nautilus_file_management_properties_dialog_setup_icon_caption_page (xml_dialog);
	nautilus_file_management_properties_dialog_setup_list_column_page (xml_dialog);
	nautilus_file_management_properties_dialog_setup_media_page (xml_dialog);

	eel_preferences_add_callback (NAUTILUS_PREFERENCES_MEDIA_AUTORUN_NEVER,
				      (EelPreferencesCallback ) nautilus_file_management_properties_dialog_update_media_sensitivity,
				      g_object_ref (xml_dialog));

	
	/* UI callbacks */
	dialog = glade_xml_get_widget (xml_dialog, "file_management_dialog");
	g_signal_connect_data (G_OBJECT (dialog), "response",
			       G_CALLBACK (nautilus_file_management_properties_dialog_response_cb),
			       g_object_ref (xml_dialog),
			       (GClosureNotify)g_object_unref,
			       0);

	gtk_window_set_icon_name (GTK_WINDOW (dialog), "file-manager");

	if (window) {
		gtk_window_set_screen (GTK_WINDOW (dialog), gtk_window_get_screen(window));
	}

	gtk_widget_show (dialog);
}