static void device_chooser_changed_cb (GtkWidget *widget, DialogData *data) { GtkTreeIter iter; GMount *mount; if (! gtk_combo_box_get_active_iter (GTK_COMBO_BOX (data->device_chooser), &iter)) { _g_clear_object (&data->source); _g_clear_object (&data->last_source); gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("(Empty)")); return; } gtk_tree_model_get (GTK_TREE_MODEL (data->device_list_store), &iter, SOURCE_LIST_COLUMN_MOUNT, &mount, -1); if (mount == NULL) { _g_clear_object (&data->source); _g_clear_object (&data->last_source); gth_file_list_clear (GTH_FILE_LIST (data->file_list), _("Empty")); return; } _g_object_unref (data->source); data->source = g_mount_get_root (mount); load_file_list (data); g_object_unref (mount); }
static gint load_uri_list (CeditWindow *window, const GSList *uris, const CeditEncoding *encoding, gint line_pos, gboolean create) { GSList *files = NULL; const GSList *u; gint ret; for (u = uris; u != NULL; u = u->next) { gchar *uri = u->data; if (cedit_utils_is_valid_uri (uri)) files = g_slist_prepend (files, g_file_new_for_uri (uri)); else g_warning ("invalid uri: %s", uri); } files = g_slist_reverse (files); ret = load_file_list (window, files, encoding, line_pos, create); g_slist_foreach (files, (GFunc) g_object_unref, NULL); g_slist_free (files); return ret; }
void fl_set_working_dir(const gchar *dir) { gchar *aux; if (dir == NULL || strcmp(working_dir->str, dir) == 0) return; /* set the new working_dir */ g_string_assign(working_dir, dir); expand_dir(working_dir); aux = str_filename_to_utf8(working_dir->str, NULL); if (aux == NULL) { /* if we can't convert to UTF-8, leave it as is (let Gtk do the complaining...) */ g_string_assign(working_dir_utf8, dir); } else { g_string_assign(working_dir_utf8, aux); free(aux); } gtk_entry_set_text(ent_wd, working_dir_utf8->str); /* update the directory mru list */ mru_add(dir_mru, working_dir_utf8->str); gtk_combo_box_text_remove_all(combo_wd); g_list_foreach(GLIST(dir_mru->list), glist_2_combo, combo_wd); if (check_working_dir()) load_file_list(); else clear_file_list(); }
/** * gtr_actions_load_uris: * * Ignore non-existing URIs */ void gtr_actions_load_locations (GtrWindow * window, const GSList * locations) { g_return_if_fail (GTR_IS_WINDOW (window)); g_return_if_fail ((locations != NULL) && (locations->data != NULL)); load_file_list (window, locations); }
/* * From the command line we can specify a line position for the * first doc. Beside specifying a not existing uri creates a * titled document. */ gint _cedit_cmd_load_files_from_prompt (CeditWindow *window, GSList *files, const CeditEncoding *encoding, gint line_pos) { cedit_debug (DEBUG_COMMANDS); return load_file_list (window, files, encoding, line_pos, TRUE); }
/* * This should become public once we convert all api to GFile: */ static gint cedit_commands_load_files (CeditWindow *window, GSList *files, const CeditEncoding *encoding, gint line_pos) { g_return_val_if_fail (CEDIT_IS_WINDOW (window), 0); g_return_val_if_fail ((files != NULL) && (files->data != NULL), 0); cedit_debug (DEBUG_COMMANDS); return load_file_list (window, files, encoding, line_pos, FALSE); }
static void folder_chooser_file_set_cb (GtkFileChooserButton *widget, gpointer user_data) { DialogData *data = user_data; GFile *folder; folder = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (widget)); if (folder == NULL) return; _g_object_unref (data->source); data->source = g_object_ref (folder);; load_file_list (data); g_object_unref (folder); }
static void gtr_po_parse_files_from_dialog (GtkWidget * dialog, GtrWindow * window) { GSList *po_files, *l; GSList *locations = NULL; GFile *file, *parent; gchar *uri; po_files = gtk_file_chooser_get_uris (GTK_FILE_CHOOSER (dialog)); for (l = po_files; l != NULL; l = g_slist_next (l)) { GFile *file; file = g_file_new_for_uri (l->data); locations = g_slist_prepend (locations, file); } /* * We store latest directory */ file = g_file_new_for_uri (po_files->data); g_slist_free_full (po_files, g_free); parent = g_file_get_parent (file); g_object_unref (file); uri = g_file_get_uri (parent); g_object_unref (parent); _gtr_application_set_last_dir (GTR_APP, uri); g_free (uri); /* * Open the file via our centralized opening function. */ load_file_list (window, (const GSList *) locations); g_slist_free_full (locations, g_object_unref); /* * Destroy the dialog */ gtk_widget_destroy (dialog); }
void fl_set_working_dir_utf8(const gchar *dir) { gchar *aux; if (dir == NULL || strcmp(working_dir_utf8->str, dir) == 0) return; /* set the new working_dir */ g_string_assign(working_dir_utf8, dir); aux = str_filename_from_utf8(working_dir_utf8->str, NULL); if (aux == NULL) { /* if we can't convert from UTF-8, leave it as is (loading from the filesystem will just fail) */ g_string_assign(working_dir, dir); } else { g_string_assign(working_dir, aux); free(aux); } if (expand_dir(working_dir)) { // need to reflect back to utf aux = str_filename_to_utf8(working_dir->str, NULL); if (aux != NULL) g_string_assign(working_dir_utf8, aux); free(aux); } gtk_entry_set_text(ent_wd, working_dir_utf8->str); /* update the directory mru list */ mru_add(dir_mru, working_dir_utf8->str); gtk_combo_box_text_remove_all(combo_wd); g_list_foreach(GLIST(dir_mru->list), glist_2_combo, combo_wd); if (check_working_dir()) load_file_list(); else clear_file_list(); }
void fl_refresh(gboolean keep_scroll_pos) { const char *ent_wd_text; GtkAdjustment *adj; double saved_value; adj = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(tv_files)); saved_value = gtk_adjustment_get_value(adj); ent_wd_text = gtk_entry_get_text(ent_wd); if (strcmp(working_dir_utf8->str, ent_wd_text) != 0) fl_set_working_dir_utf8(ent_wd_text); else load_file_list(); if (keep_scroll_pos) { if (saved_value <= gtk_adjustment_get_upper(adj)) gtk_adjustment_set_value(adj, saved_value); } }
static void dlg_photo_importer (GthBrowser *browser, GFile *source, DlgImporterSourceType selector_type) { DialogData *data; GtkCellRenderer *renderer; GthFileDataSort *sort_type; GList *tests, *scan; char *general_filter; int i, active_filter; int i_general; if (gth_browser_get_dialog (browser, "photo_importer") != NULL) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "photo_importer"))); return; } data = g_new0 (DialogData, 1); data->browser = browser; data->builder = gtk_builder_new_from_resource ("/org/gnome/gThumb/photo_importer/data/ui/photo-importer.ui"); data->settings = g_settings_new (GTHUMB_PHOTO_IMPORTER_SCHEMA); data->selector_type = selector_type; data->source = _g_object_ref (source); data->cancellable = g_cancellable_new (); data->vfs_source = g_object_new (GTH_TYPE_FILE_SOURCE_VFS, NULL); gth_file_source_monitor_entry_points (GTH_FILE_SOURCE (data->vfs_source)); /* Get the widgets. */ data->dialog = _gtk_builder_get_widget (data->builder, "photo_importer_dialog"); _gtk_window_resize_to_fit_screen_height (data->dialog, 580); gth_browser_set_dialog (browser, "photo_importer", data->dialog); g_object_set_data (G_OBJECT (data->dialog), "dialog_data", data); if (data->selector_type == DLG_IMPORTER_SOURCE_TYPE_DEVICE) { gtk_window_set_title (GTK_WINDOW (data->dialog), _("Import from Removable Device")); data->device_list_store = gtk_list_store_new (SOURCE_LIST_COLUMNS, G_TYPE_OBJECT, G_TYPE_ICON, G_TYPE_STRING); data->device_chooser = gtk_combo_box_new_with_model (GTK_TREE_MODEL (data->device_list_store)); gtk_widget_show (data->device_chooser); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("source_box")), data->device_chooser, TRUE, TRUE, 0); gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("source_label")), data->device_chooser); renderer = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (data->device_chooser), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (data->device_chooser), renderer, "gicon", SOURCE_LIST_COLUMN_ICON, NULL); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (data->device_chooser), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (data->device_chooser), renderer, "text", SOURCE_LIST_COLUMN_NAME, NULL); g_object_unref (data->device_list_store); } else { if (data->source == NULL) { if (GTH_IS_FILE_SOURCE_VFS (gth_browser_get_location_source (browser))) data->source = _g_object_ref (gth_browser_get_location (browser)); if (data->source == NULL) data->source = g_file_new_for_uri (get_home_uri ()); } gtk_window_set_title (GTK_WINDOW (data->dialog), _("Import from Folder")); data->folder_chooser = gtk_file_chooser_button_new (_("Choose a folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("source_label")), data->folder_chooser); gtk_file_chooser_set_file (GTK_FILE_CHOOSER (data->folder_chooser), data->source, NULL); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (data->folder_chooser), FALSE); gtk_widget_show (data->folder_chooser); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("source_box")), data->folder_chooser, TRUE, TRUE, 0); } data->file_list = gth_file_list_new (gth_grid_view_new (), GTH_FILE_LIST_MODE_NORMAL, FALSE); sort_type = gth_main_get_sort_type ("file::mtime"); gth_file_list_set_sort_func (GTH_FILE_LIST (data->file_list), sort_type->cmp_func, FALSE); gth_file_list_enable_thumbs (GTH_FILE_LIST (data->file_list), TRUE); gth_file_list_set_ignore_hidden (GTH_FILE_LIST (data->file_list), TRUE); gth_file_list_set_thumb_size (GTH_FILE_LIST (data->file_list), 128); gth_file_list_set_caption (GTH_FILE_LIST (data->file_list), "standard::display-name,gth::file::display-size"); gtk_widget_show (data->file_list); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("filelist_box")), data->file_list, TRUE, TRUE, 0); tests = gth_main_get_registered_objects_id (GTH_TYPE_TEST); general_filter = "file::type::is_media"; /* default value */ active_filter = 0; data->filter_combobox = gtk_combo_box_text_new (); for (i = 0, i_general = -1, scan = tests; scan; scan = scan->next, i++) { const char *registered_test_id = scan->data; GthTest *test; if (strncmp (registered_test_id, "file::type::", 12) != 0) continue; i_general += 1; test = gth_main_get_registered_object (GTH_TYPE_TEST, registered_test_id); if (strcmp (registered_test_id, general_filter) == 0) { active_filter = i_general; gth_file_list_set_filter (GTH_FILE_LIST (data->file_list), test); } data->general_tests = g_list_prepend (data->general_tests, g_strdup (gth_test_get_id (test))); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (data->filter_combobox), gth_test_get_display_name (test)); g_object_unref (test); } data->general_tests = g_list_reverse (data->general_tests); gtk_combo_box_set_active (GTK_COMBO_BOX (data->filter_combobox), active_filter); gtk_widget_show (data->filter_combobox); gtk_container_add (GTK_CONTAINER (GET_WIDGET ("filter_box")), data->filter_combobox); gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("filter_label")), data->filter_combobox); gtk_label_set_use_underline (GTK_LABEL (GET_WIDGET ("filter_label")), TRUE); _g_string_list_free (tests); data->tags_entry = gth_tags_entry_new (GTH_TAGS_ENTRY_MODE_POPUP); gtk_widget_show (data->tags_entry); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("tags_entry_box")), data->tags_entry, TRUE, TRUE, 0); gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("tags_label")), data->tags_entry); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("delete_checkbutton")), g_settings_get_boolean (data->settings, PREF_PHOTO_IMPORTER_DELETE_FROM_DEVICE)); data->preferences_dialog = gth_import_preferences_dialog_new (); gtk_window_set_transient_for (GTK_WINDOW (data->preferences_dialog), GTK_WINDOW (data->dialog)); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("destination_button_box")), gth_import_destination_button_new (GTH_IMPORT_PREFERENCES_DIALOG (data->preferences_dialog)), TRUE, TRUE, 0); gtk_widget_show_all (GET_WIDGET ("destination_button_box")); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "delete-event", G_CALLBACK (dialog_delete_event_cb), data); g_signal_connect (GET_WIDGET ("ok_button"), "clicked", G_CALLBACK (ok_clicked_cb), data); g_signal_connect (GET_WIDGET ("cancel_button"), "clicked", G_CALLBACK (close_dialog), data); if (data->selector_type == DLG_IMPORTER_SOURCE_TYPE_DEVICE) g_signal_connect (data->device_chooser, "changed", G_CALLBACK (device_chooser_changed_cb), data); else g_signal_connect (data->folder_chooser, "selection-changed", G_CALLBACK (folder_chooser_file_set_cb), data); g_signal_connect (data->filter_combobox, "changed", G_CALLBACK (filter_combobox_changed_cb), data); g_signal_connect (gth_file_view_get_model (GTH_FILE_VIEW (gth_file_list_get_view (GTH_FILE_LIST (data->file_list)))), "visibility_changed", G_CALLBACK (file_store_changed_cb), data); g_signal_connect (gth_file_list_get_view (GTH_FILE_LIST (data->file_list)), "file-selection-changed", G_CALLBACK (file_view_selection_changed_cb), data); data->entry_points_changed_id = g_signal_connect (gth_main_get_default_monitor (), "entry-points-changed", G_CALLBACK (entry_points_changed_cb), data); g_signal_connect_after (GET_WIDGET ("event_entry"), "changed", G_CALLBACK (event_entry_changed_cb), data); /* Run dialog. */ gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (browser)); gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE); gtk_widget_show (data->dialog); gth_import_preferences_dialog_set_event (GTH_IMPORT_PREFERENCES_DIALOG (data->preferences_dialog), gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("event_entry")))); if (data->selector_type == DLG_IMPORTER_SOURCE_TYPE_DEVICE) update_device_source_list (data); else load_file_list (data); }
static void update_device_source_list (DialogData *data) { gboolean source_available = FALSE; GList *mounts; GList *scan; gtk_list_store_clear (data->device_list_store); mounts = g_volume_monitor_get_mounts (g_volume_monitor_get ()); for (scan = mounts; scan; scan = scan->next) { GMount *mount = scan->data; GtkTreeIter iter; GFile *root; GIcon *icon; char *name; GDrive *drive; if (g_mount_is_shadowed (mount)) continue; gtk_list_store_append (data->device_list_store, &iter); root = g_mount_get_root (mount); if (data->source == NULL) data->source = g_file_dup (root); icon = g_mount_get_icon (mount); name = g_mount_get_name (mount); drive = g_mount_get_drive (mount); if (drive != NULL) { char *drive_name; char *tmp; drive_name = g_drive_get_name (drive); tmp = g_strconcat (drive_name, ": ", name, NULL); g_free (name); g_object_unref (drive); name = tmp; g_free (drive_name); } gtk_list_store_set (data->device_list_store, &iter, SOURCE_LIST_COLUMN_MOUNT, mount, SOURCE_LIST_COLUMN_ICON, icon, SOURCE_LIST_COLUMN_NAME, name, -1); if (g_file_equal (data->source, root)) { source_available = TRUE; gtk_combo_box_set_active_iter (GTK_COMBO_BOX (data->device_chooser), &iter); } g_free (name); g_object_unref (icon); g_object_unref (root); } if (! source_available) { _g_object_unref (data->source); data->source = NULL; load_file_list (data); } _g_object_list_unref (mounts); }
void cb_toggle_recurse(GtkToggleButton *widget, gpointer data) { *recurse = gtk_toggle_button_get_active(cb_recurse); load_file_list(); }