static void extract_here_callback (CajaMenuItem *item, gpointer user_data) { GList *files, *scan; GString *cmd; files = g_object_get_data (G_OBJECT (item), "files"); cmd = g_string_new ("engrampa --extract-here"); for (scan = files; scan; scan = scan->next) { CajaFileInfo *file = scan->data; char *uri, *quoted_uri; uri = caja_file_info_get_uri (file); quoted_uri = g_shell_quote (uri); g_string_append_printf (cmd, " %s", quoted_uri); g_free (uri); g_free (quoted_uri); } g_spawn_command_line_async (cmd->str, NULL); #ifdef DEBUG g_print ("EXEC: %s\n", cmd->str); #endif g_string_free (cmd, TRUE); }
static GList *gtkhash_properties_get_pages( #if IN_NAUTILUS_EXTENSION G_GNUC_UNUSED NautilusPropertyPageProvider *provider, #elif IN_CAJA_EXTENSION G_GNUC_UNUSED CajaPropertyPageProvider *provider, #elif IN_NEMO_EXTENSION G_GNUC_UNUSED NemoPropertyPageProvider *provider, #elif IN_THUNAR_EXTENSION G_GNUC_UNUSED ThunarxPropertyPageProvider *provider, #endif GList *files) { // Only display page for a single file if (!files || files->next) return NULL; #if IN_NAUTILUS_EXTENSION GFileType type = nautilus_file_info_get_file_type(files->data); char *uri = nautilus_file_info_get_uri(files->data); #elif IN_CAJA_EXTENSION GFileType type = caja_file_info_get_file_type(files->data); char *uri = caja_file_info_get_uri(files->data); #elif IN_NEMO_EXTENSION GFileType type = nemo_file_info_get_file_type(files->data); char *uri = nemo_file_info_get_uri(files->data); #elif IN_THUNAR_EXTENSION GFileInfo *info = thunarx_file_info_get_file_info(files->data); GFileType type = g_file_info_get_file_type(info); g_object_unref(info); char *uri = thunarx_file_info_get_uri(files->data); #endif // Only display page for regular files if (type != G_FILE_TYPE_REGULAR) return NULL; struct page_s *page = gtkhash_properties_new_page(uri); if (!page) return NULL; #if IN_NAUTILUS_EXTENSION NautilusPropertyPage *ppage = nautilus_property_page_new( "GtkHash::properties", gtk_label_new(_("Digests")), page->box); #elif IN_CAJA_EXTENSION CajaPropertyPage *ppage = caja_property_page_new( "GtkHash::properties", gtk_label_new(_("Digests")), page->box); #elif IN_NEMO_EXTENSION NemoPropertyPage *ppage = nemo_property_page_new( "GtkHash::properties", gtk_label_new(_("Digests")), page->box); #elif IN_THUNAR_EXTENSION GtkWidget *ppage = thunarx_property_page_new(_("Digests")); gtk_container_add(GTK_CONTAINER(ppage), page->box); #endif GList *pages = g_list_append(NULL, ppage); return pages; }
static void add_callback (CajaMenuItem *item, gpointer user_data) { GList *files, *scan; CajaFileInfo *file; char *uri, *dir; char *quoted_uri, *quoted_dir; GString *cmd; files = g_object_get_data (G_OBJECT (item), "files"); file = files->data; uri = caja_file_info_get_uri (file); dir = g_path_get_dirname (uri); quoted_dir = g_shell_quote (dir); cmd = g_string_new ("engrampa"); g_string_append_printf (cmd," --default-dir=%s --add", quoted_dir); g_free (uri); g_free (dir); g_free (quoted_dir); for (scan = files; scan; scan = scan->next) { CajaFileInfo *file = scan->data; uri = caja_file_info_get_uri (file); quoted_uri = g_shell_quote (uri); g_string_append_printf (cmd, " %s", quoted_uri); g_free (uri); g_free (quoted_uri); } g_spawn_command_line_async (cmd->str, NULL); g_string_free (cmd, TRUE); }
static char * get_path_from_file_info (CajaFileInfo *info) { GFile *file; gchar *str, *path; str = caja_file_info_get_uri (info); file = g_file_new_for_uri (str); path = g_file_get_path (file); g_object_unref (file); g_free (str); return path; }
static gboolean is_directory_local (CajaFileInfo *info) { gchar *str; GFile *file; gboolean is_local; str = caja_file_info_get_uri (info); file = g_file_new_for_uri (str); is_local = g_file_is_native (file); g_object_unref (file); g_free (str); return is_local; }
GtkWidget * fm_ditem_page_make_box (GtkSizeGroup *label_size_group, GList *files) { CajaFileInfo *info; char *uri; GtkWidget *box; g_assert (fm_ditem_page_should_show (files)); box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); g_object_set_data_full (G_OBJECT (box), "label-size-group", label_size_group, (GDestroyNotify) g_object_unref); info = CAJA_FILE_INFO (files->data); uri = caja_file_info_get_uri (info); fm_ditem_page_create_begin (uri, box); g_free (uri); return box; }
static void extract_to_callback (CajaMenuItem *item, gpointer user_data) { GList *files; CajaFileInfo *file; char *uri, *default_dir; char *quoted_uri, *quoted_default_dir; GString *cmd; files = g_object_get_data (G_OBJECT (item), "files"); file = files->data; uri = caja_file_info_get_uri (file); default_dir = caja_file_info_get_parent_uri (file); quoted_uri = g_shell_quote (uri); quoted_default_dir = g_shell_quote (default_dir); cmd = g_string_new ("engrampa"); g_string_append_printf (cmd, " --default-dir=%s --extract %s", quoted_default_dir, quoted_uri); #ifdef DEBUG g_print ("EXEC: %s\n", cmd->str); #endif g_spawn_command_line_async (cmd->str, NULL); g_string_free (cmd, TRUE); g_free (default_dir); g_free (uri); g_free (quoted_default_dir); g_free (quoted_uri); }
static void do_file_info_command(GIOChannel *chan, DropboxFileInfoCommand *dfic, GError **gerr) { /* we need to send two requests to dropbox: file status, and folder_tags */ GError *tmp_gerr = NULL; DropboxFileInfoCommandResponse *dficr; GHashTable *file_status_response = NULL, *args, *folder_tag_response = NULL, *emblems_response = NULL; gchar *filename = NULL; { gchar *filename_un, *uri; uri = caja_file_info_get_uri(dfic->file); filename_un = uri ? g_filename_from_uri(uri, NULL, NULL): NULL; g_free(uri); if (filename_un) { filename = g_filename_to_utf8(filename_un, -1, NULL, NULL, NULL); g_free(filename_un); if (filename == NULL) { /* oooh, filename wasn't correctly encoded. mark as */ debug("file wasn't correctly encoded %s", filename_un); } } } if (filename == NULL) { /* We couldn't get the filename. Just return empty. */ goto exit; } args = g_hash_table_new_full((GHashFunc) g_str_hash, (GEqualFunc) g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_strfreev); { gchar **path_arg; path_arg = g_new(gchar *, 2); path_arg[0] = g_strdup(filename); path_arg[1] = NULL; g_hash_table_insert(args, g_strdup("path"), path_arg); } emblems_response = send_command_to_db(chan, "get_emblems", args, NULL); if (emblems_response) { /* Don't need to do the other calls. */ g_hash_table_unref(args); goto exit; } /* send status command to server */ file_status_response = send_command_to_db(chan, "icon_overlay_file_status", args, &tmp_gerr); g_hash_table_unref(args); args = NULL; if (tmp_gerr != NULL) { g_free(filename); g_assert(file_status_response == NULL); g_propagate_error(gerr, tmp_gerr); return; } if (caja_file_info_is_directory(dfic->file)) { args = g_hash_table_new_full((GHashFunc) g_str_hash, (GEqualFunc) g_str_equal, (GDestroyNotify) g_free, (GDestroyNotify) g_strfreev); { gchar **paths_arg; paths_arg = g_new(gchar *, 2); paths_arg[0] = g_strdup(filename); paths_arg[1] = NULL; g_hash_table_insert(args, g_strdup("path"), paths_arg); } folder_tag_response = send_command_to_db(chan, "get_folder_tag", args, &tmp_gerr); g_hash_table_unref(args); args = NULL; if (tmp_gerr != NULL) { if (file_status_response != NULL) g_hash_table_destroy(file_status_response); g_assert(folder_tag_response == NULL); g_propagate_error(gerr, tmp_gerr); return; } }