static void set_up_actions_directories (NemoActionManager *action_manager) { gchar *sys_path = nemo_action_manager_get_sys_directory_path (); gchar *sys_uri = g_filename_to_uri (sys_path, NULL, NULL); gchar *user_path = g_build_filename (g_get_user_data_dir (), "nemo", "actions", NULL); if (!g_file_test (user_path, G_FILE_TEST_EXISTS)) { g_mkdir_with_parents (user_path, DEFAULT_NEMO_DIRECTORY_MODE); } gchar *user_uri = g_filename_to_uri (user_path, NULL, NULL); if (action_manager->actions_directory_list != NULL) { nemo_directory_list_free (action_manager->actions_directory_list); } NemoDirectory *dir; dir = nemo_directory_get_by_uri (user_uri); add_directory_to_actions_directory_list (action_manager, dir); nemo_directory_unref (dir); dir = nemo_directory_get_by_uri (sys_uri); add_directory_to_actions_directory_list (action_manager, dir); nemo_directory_unref (dir); g_free (sys_path); g_free (sys_uri); g_free (user_path); g_free (user_uri); }
static void update_desktop_directory (NemoDesktopDirectory *desktop) { char *desktop_path; char *desktop_uri; NemoDirectory *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); nemo_directory_unref (real_directory); } desktop_path = nemo_get_desktop_directory (); desktop_uri = g_filename_to_uri (desktop_path, NULL, NULL); real_directory = nemo_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; }
NemoDirectory * nemo_directory_get_for_file (NemoFile *file) { char *uri; NemoDirectory *directory; g_return_val_if_fail (NEMO_IS_FILE (file), NULL); uri = nemo_file_get_uri (file); directory = nemo_directory_get_by_uri (uri); g_free (uri); return directory; }
static void set_up_actions_directories (NemoActionManager *action_manager) { NemoDirectory *dir; gchar *path, *uri; gchar **data_dirs; guint i; data_dirs = (gchar **) g_get_system_data_dirs (); for (i = 0; i < g_strv_length (data_dirs); i++) { path = g_build_filename (data_dirs[i], "nemo", "actions", NULL); uri = g_filename_to_uri (path, NULL, NULL); dir = nemo_directory_get_by_uri (uri); add_directory_to_actions_directory_list (action_manager, dir); nemo_directory_unref (dir); g_clear_pointer (&path, g_free); g_clear_pointer (&uri, g_free); } path = nemo_action_manager_get_user_directory_path (); uri = g_filename_to_uri (path, NULL, NULL); if (!g_file_test (path, G_FILE_TEST_EXISTS)) { g_mkdir_with_parents (path, DEFAULT_NEMO_DIRECTORY_MODE); } dir = nemo_directory_get_by_uri (uri); add_directory_to_actions_directory_list (action_manager, dir); nemo_directory_unref (dir); g_clear_pointer (&path, g_free); g_clear_pointer (&uri, g_free); }
void nemo_self_check_directory (void) { NemoDirectory *directory; NemoFile *file; directory = nemo_directory_get_by_uri ("file:///etc"); file = nemo_file_get_by_uri ("file:///etc/passwd"); EEL_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 1); nemo_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. nemo_file_set_metadata (file, "test", "default", "value"); EEL_CHECK_STRING_RESULT (nemo_file_get_metadata (file, "test", "default"), "value"); nemo_file_set_boolean_metadata (file, "test_boolean", TRUE, TRUE); EEL_CHECK_BOOLEAN_RESULT (nemo_file_get_boolean_metadata (file, "test_boolean", TRUE), TRUE); nemo_file_set_boolean_metadata (file, "test_boolean", TRUE, FALSE); EEL_CHECK_BOOLEAN_RESULT (nemo_file_get_boolean_metadata (file, "test_boolean", TRUE), FALSE); EEL_CHECK_BOOLEAN_RESULT (nemo_file_get_boolean_metadata (NULL, "test_boolean", TRUE), TRUE); nemo_file_set_integer_metadata (file, "test_integer", 0, 17); EEL_CHECK_INTEGER_RESULT (nemo_file_get_integer_metadata (file, "test_integer", 0), 17); nemo_file_set_integer_metadata (file, "test_integer", 0, -1); EEL_CHECK_INTEGER_RESULT (nemo_file_get_integer_metadata (file, "test_integer", 0), -1); nemo_file_set_integer_metadata (file, "test_integer", 42, 42); EEL_CHECK_INTEGER_RESULT (nemo_file_get_integer_metadata (file, "test_integer", 42), 42); EEL_CHECK_INTEGER_RESULT (nemo_file_get_integer_metadata (NULL, "test_integer", 42), 42); EEL_CHECK_INTEGER_RESULT (nemo_file_get_integer_metadata (file, "nonexistent_key", 42), 42); */ EEL_CHECK_BOOLEAN_RESULT (nemo_directory_get_by_uri ("file:///etc") == directory, TRUE); nemo_directory_unref (directory); EEL_CHECK_BOOLEAN_RESULT (nemo_directory_get_by_uri ("file:///etc/") == directory, TRUE); nemo_directory_unref (directory); EEL_CHECK_BOOLEAN_RESULT (nemo_directory_get_by_uri ("file:///etc////") == directory, TRUE); nemo_directory_unref (directory); nemo_file_unref (file); nemo_directory_file_monitor_remove (directory, &data_dummy); nemo_directory_unref (directory); while (g_hash_table_size (directories) != 0) { gtk_main_iteration (); } EEL_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 0); directory = nemo_directory_get_by_uri ("file:///etc"); got_files_flag = FALSE; nemo_directory_call_when_ready (directory, NEMO_FILE_ATTRIBUTE_INFO | NEMO_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 = nemo_file_get_by_uri ("file:///etc/passwd"); /* EEL_CHECK_STRING_RESULT (nemo_file_get_metadata (file, "test", "default"), "value"); */ nemo_file_unref (file); nemo_directory_unref (directory); EEL_CHECK_INTEGER_RESULT (g_hash_table_size (directories), 0); }