static void nautilus_desktop_directory_file_init (NautilusDesktopDirectoryFile *desktop_file) { NautilusDesktopDirectory *desktop_directory; NautilusDirectory *real_dir; NautilusFile *real_dir_file; desktop_file->details = G_TYPE_INSTANCE_GET_PRIVATE (desktop_file, NAUTILUS_TYPE_DESKTOP_DIRECTORY_FILE, NautilusDesktopDirectoryFileDetails); desktop_directory = NAUTILUS_DESKTOP_DIRECTORY (nautilus_directory_get_by_uri (EEL_DESKTOP_URI)); desktop_file->details->desktop_directory = desktop_directory; desktop_file->details->callbacks = g_hash_table_new (desktop_callback_hash, desktop_callback_equal); desktop_file->details->monitors = g_hash_table_new_full (NULL, NULL, NULL, monitor_destroy); real_dir = nautilus_desktop_directory_get_real_directory (desktop_directory); real_dir_file = nautilus_directory_get_corresponding_file (real_dir); nautilus_directory_unref (real_dir); desktop_file->details->real_dir_file = real_dir_file; nautilus_desktop_update_metadata_from_keyfile (NAUTILUS_FILE (desktop_file), "directory"); g_signal_connect_object (real_dir_file, "changed", G_CALLBACK (real_file_changed_callback), desktop_file, 0); }
int main (int argc, char **argv) { NautilusDirectory *directory; NautilusQuery *query; client1 = g_new0 (int, 1); client2 = g_new0 (int, 1); gtk_init (&argc, &argv); query = nautilus_query_new (); nautilus_query_set_text (query, "richard hult"); directory = nautilus_directory_get_by_uri ("x-nautilus-search://0/"); nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory), query); g_object_unref (query); g_signal_connect (directory, "files-added", G_CALLBACK (files_added), NULL); g_signal_connect (directory, "files-changed", G_CALLBACK (files_changed), NULL); g_signal_connect (directory, "done-loading", G_CALLBACK (done_loading), NULL); nautilus_directory_file_monitor_add (directory, client1, TRUE, NAUTILUS_FILE_ATTRIBUTE_INFO, NULL, NULL); gtk_main (); return 0; }
static void update_desktop_directory (NautilusDesktopDirectory *desktop) { char *desktop_path; char *desktop_uri; NautilusDirectory *real_directory; real_directory = desktop->details->real_directory; if (real_directory != NULL) { g_hash_table_foreach_remove (desktop->details->callbacks, (GHRFunc) gtk_true, NULL); g_hash_table_foreach_remove (desktop->details->monitors, (GHRFunc) gtk_true, NULL); g_signal_handlers_disconnect_by_func (real_directory, done_loading_callback, desktop); g_signal_handlers_disconnect_by_func (real_directory, forward_files_added_cover, desktop); g_signal_handlers_disconnect_by_func (real_directory, forward_files_changed_cover, desktop); nautilus_directory_unref (real_directory); } desktop_path = nautilus_get_desktop_directory (); desktop_uri = g_filename_to_uri (desktop_path, NULL, NULL); real_directory = nautilus_directory_get_by_uri (desktop_uri); g_free (desktop_uri); g_free (desktop_path); g_signal_connect_object (real_directory, "done-loading", G_CALLBACK (done_loading_callback), desktop, 0); g_signal_connect_object (real_directory, "files-added", G_CALLBACK (forward_files_added_cover), desktop, 0); g_signal_connect_object (real_directory, "files-changed", G_CALLBACK (forward_files_changed_cover), desktop, 0); desktop->details->real_directory = real_directory; }
NautilusDirectory * nautilus_directory_get_for_file (NautilusFile *file) { char *uri; NautilusDirectory *directory; g_return_val_if_fail (NAUTILUS_IS_FILE (file), NULL); uri = nautilus_file_get_uri (file); directory = nautilus_directory_get_by_uri (uri); g_free (uri); return directory; }
int main (int argc, char **argv) { NautilusDirectory *directory; NautilusFileAttributes attributes; const char *uri; client1 = g_new0 (int, 1); client2 = g_new0 (int, 1); gtk_init (&argc, &argv); if (argv[1] == NULL) { uri = "file:///tmp"; } else { uri = argv[1]; } g_print ("loading %s", uri); directory = nautilus_directory_get_by_uri (uri); g_signal_connect (directory, "files-added", G_CALLBACK (files_added), NULL); g_signal_connect (directory, "files-changed", G_CALLBACK (files_changed), NULL); g_signal_connect (directory, "done-loading", G_CALLBACK (done_loading), NULL); attributes = NAUTILUS_FILE_ATTRIBUTES_FOR_ICON | NAUTILUS_FILE_ATTRIBUTE_DIRECTORY_ITEM_COUNT | NAUTILUS_FILE_ATTRIBUTE_INFO | NAUTILUS_FILE_ATTRIBUTE_LINK_INFO | NAUTILUS_FILE_ATTRIBUTE_MOUNT | NAUTILUS_FILE_ATTRIBUTE_EXTENSION_INFO; nautilus_directory_file_monitor_add (directory, client1, TRUE, attributes, NULL, NULL); gtk_main (); return 0; }
static void nautilus_desktop_link_monitor_init (NautilusDesktopLinkMonitor *monitor) { GList *l, *mounts; GMount *mount; monitor->details = G_TYPE_INSTANCE_GET_PRIVATE (monitor, NAUTILUS_TYPE_DESKTOP_LINK_MONITOR, NautilusDesktopLinkMonitorDetails); the_link_monitor = monitor; monitor->details->volume_monitor = g_volume_monitor_get (); /* We keep around a ref to the desktop dir */ monitor->details->desktop_dir = nautilus_directory_get_by_uri (EEL_DESKTOP_URI); /* Default links */ create_link_and_add_preference (&monitor->details->home_link, NAUTILUS_DESKTOP_LINK_HOME, NAUTILUS_PREFERENCES_DESKTOP_HOME_VISIBLE, G_CALLBACK (desktop_home_visible_changed), monitor); create_link_and_add_preference (&monitor->details->trash_link, NAUTILUS_DESKTOP_LINK_TRASH, NAUTILUS_PREFERENCES_DESKTOP_TRASH_VISIBLE, G_CALLBACK (desktop_trash_visible_changed), monitor); create_link_and_add_preference (&monitor->details->network_link, NAUTILUS_DESKTOP_LINK_NETWORK, NAUTILUS_PREFERENCES_DESKTOP_NETWORK_VISIBLE, G_CALLBACK (desktop_network_visible_changed), monitor); /* Mount links */ mounts = g_volume_monitor_get_mounts (monitor->details->volume_monitor); for (l = mounts; l != NULL; l = l->next) { mount = l->data; create_mount_link (monitor, mount); g_object_unref (mount); } g_list_free (mounts); g_signal_connect_swapped (nautilus_desktop_preferences, "changed::" NAUTILUS_PREFERENCES_DESKTOP_VOLUMES_VISIBLE, G_CALLBACK (desktop_volumes_visible_changed), monitor); monitor->details->mount_id = g_signal_connect_object (monitor->details->volume_monitor, "mount-added", G_CALLBACK (mount_added_callback), monitor, 0); monitor->details->unmount_id = g_signal_connect_object (monitor->details->volume_monitor, "mount-removed", G_CALLBACK (mount_removed_callback), monitor, 0); monitor->details->changed_id = g_signal_connect_object (monitor->details->volume_monitor, "mount-changed", G_CALLBACK (mount_changed_callback), monitor, 0); }
void nautilus_self_check_directory (void) { NautilusDirectory *directory; NautilusFile *file; directory = nautilus_directory_get_by_uri ("file:///etc"); file = nautilus_file_get_by_uri ("file:///etc/passwd"); EEL_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 1); nautilus_directory_file_monitor_add (directory, &data_dummy, TRUE, 0, NULL, NULL); /* FIXME: these need to be updated to the new metadata infrastructure * as make check doesn't pass. nautilus_file_set_metadata (file, "test", "default", "value"); EEL_CHECK_STRING_RESULT (nautilus_file_get_metadata (file, "test", "default"), "value"); nautilus_file_set_boolean_metadata (file, "test_boolean", TRUE, TRUE); EEL_CHECK_BOOLEAN_RESULT (nautilus_file_get_boolean_metadata (file, "test_boolean", TRUE), TRUE); nautilus_file_set_boolean_metadata (file, "test_boolean", TRUE, FALSE); EEL_CHECK_BOOLEAN_RESULT (nautilus_file_get_boolean_metadata (file, "test_boolean", TRUE), FALSE); EEL_CHECK_BOOLEAN_RESULT (nautilus_file_get_boolean_metadata (NULL, "test_boolean", TRUE), TRUE); nautilus_file_set_integer_metadata (file, "test_integer", 0, 17); EEL_CHECK_INTEGER_RESULT (nautilus_file_get_integer_metadata (file, "test_integer", 0), 17); nautilus_file_set_integer_metadata (file, "test_integer", 0, -1); EEL_CHECK_INTEGER_RESULT (nautilus_file_get_integer_metadata (file, "test_integer", 0), -1); nautilus_file_set_integer_metadata (file, "test_integer", 42, 42); EEL_CHECK_INTEGER_RESULT (nautilus_file_get_integer_metadata (file, "test_integer", 42), 42); EEL_CHECK_INTEGER_RESULT (nautilus_file_get_integer_metadata (NULL, "test_integer", 42), 42); EEL_CHECK_INTEGER_RESULT (nautilus_file_get_integer_metadata (file, "nonexistent_key", 42), 42); */ EEL_CHECK_BOOLEAN_RESULT (nautilus_directory_get_by_uri ("file:///etc") == directory, TRUE); nautilus_directory_unref (directory); EEL_CHECK_BOOLEAN_RESULT (nautilus_directory_get_by_uri ("file:///etc/") == directory, TRUE); nautilus_directory_unref (directory); EEL_CHECK_BOOLEAN_RESULT (nautilus_directory_get_by_uri ("file:///etc////") == directory, TRUE); nautilus_directory_unref (directory); nautilus_file_unref (file); nautilus_directory_file_monitor_remove (directory, &data_dummy); nautilus_directory_unref (directory); while (g_hash_table_size (directories) != 0) { gtk_main_iteration (); } EEL_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 0); directory = nautilus_directory_get_by_uri ("file:///etc"); got_files_flag = FALSE; nautilus_directory_call_when_ready (directory, NAUTILUS_FILE_ATTRIBUTE_INFO | NAUTILUS_FILE_ATTRIBUTE_DEEP_COUNTS, TRUE, got_files_callback, &data_dummy); while (!got_files_flag) { gtk_main_iteration (); } EEL_CHECK_BOOLEAN_RESULT (directory->details->file_list == NULL, TRUE); EEL_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 1); file = nautilus_file_get_by_uri ("file:///etc/passwd"); /* EEL_CHECK_STRING_RESULT (nautilus_file_get_metadata (file, "test", "default"), "value"); */ nautilus_file_unref (file); nautilus_directory_unref (directory); EEL_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 0); }