static GList* get_file_items (NautilusMenuProvider *provider, GtkWidget *window, GList *files) { NautilusShares *shares; gboolean one_item, is_local, is_dir; NautilusFileInfo *info; NautilusMenuItem *menu_item; GList *items = NULL; shares = NAUTILUS_SHARES (provider); one_item = (files && !files->next); if (!one_item) return NULL; info = files->data; is_dir = nautilus_file_info_is_directory (info); if (!is_dir) return NULL; is_local = is_directory_local (info); if (!is_local) return NULL; menu_item = nautilus_menu_item_new ("NautilusShares::share", _("_Share Folder..."), _("Share this folder with other computers"), "gnome-fs-share"); /* do not allow running more than one instance from nautilus at the same time */ g_object_set (menu_item, "sensitive", (shares->pid == 0), NULL); g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (on_menu_item_activate), NULL); g_object_set_data (G_OBJECT (menu_item), "file", info); g_object_set_data (G_OBJECT (menu_item), "shares", provider); return g_list_append (NULL, menu_item); }
static gboolean file_get_share_status_file (CajaShares *shares, CajaFileInfo *file) { char *path; gboolean status; if (!caja_file_info_is_directory(file) || !is_directory_local (file)) status = FALSE; else { path = get_path_from_file_info (file); g_return_val_if_fail (path != NULL, FALSE); status = (g_hash_table_lookup (shares->paths, path) != NULL); g_free (path); } return status; }