GdkPixbuf * get_icon_for_uri (GtkWidget *widget, const char *uri) { const char *stock_id = NULL; int menu_size; menu_size = get_folder_pixbuf_size_for_list (widget); if (strcmp (uri, g_get_home_dir ()) == 0) return get_fs_icon (ICON_NAME_HOME, menu_size); else if (strcmp (uri, get_home_uri ()) == 0) return get_fs_icon (ICON_NAME_HOME, menu_size); if ((strcmp (uri, "file://") == 0) || (strcmp (uri, "/") == 0)) return get_fs_icon (ICON_NAME_HARDDISK, menu_size); if (folder_is_film (uri)) stock_id = GTHUMB_STOCK_FILM; else if (uri_scheme_is_catalog (uri)) { if (file_extension_is (uri, CATALOG_EXT)) stock_id = GTHUMB_STOCK_CATALOG; else stock_id = GTHUMB_STOCK_LIBRARY; } else if (uri_scheme_is_search (uri)) stock_id = GTHUMB_STOCK_SEARCH; if (stock_id != NULL) return gtk_widget_render_icon (widget, stock_id, GTK_ICON_SIZE_MENU, NULL); else return get_fs_icon (ICON_NAME_DIRECTORY, menu_size); }
void gth_browser_activate_import_folder (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GthBrowser *browser = GTH_BROWSER (user_data); GtkWidget *chooser; GFile *folder; chooser = gtk_file_chooser_dialog_new (_("Choose a folder"), GTK_WINDOW (browser), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL, _("Import"), GTK_RESPONSE_OK, NULL); _gtk_dialog_add_class_to_response (GTK_DIALOG (chooser), GTK_RESPONSE_OK, GTK_STYLE_CLASS_SUGGESTED_ACTION); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), FALSE); folder = NULL; if (GTH_IS_FILE_SOURCE_VFS (gth_browser_get_location_source (browser))) folder = _g_object_ref (gth_browser_get_location (browser)); if (folder == NULL) folder = g_file_new_for_uri (get_home_uri ()); gtk_file_chooser_set_file (GTK_FILE_CHOOSER (chooser), folder, NULL); g_signal_connect (chooser, "response", G_CALLBACK (folder_chooser_response_cb), browser); gtk_widget_show (chooser); _g_object_unref (folder); }
const char * gth_pref_get_startup_location (void) { if (Preferences->startup_location != NULL) return Preferences->startup_location; else return get_home_uri (); }
void gth_pref_initialize (void) { GSettings *settings; if (Preferences == NULL) Preferences = g_new0 (GthPreferences, 1); /* desktop background */ settings = g_settings_new (GNOME_DESKTOP_BACKGROUND_SCHEMA); Preferences->wallpaper_filename = g_settings_get_string(settings, PREF_BACKGROUND_PICTURE_URI); Preferences->wallpaper_options = g_settings_get_string(settings, PREF_BACKGROUND_PICTURE_OPTIONS); g_object_unref (settings); /* startup location */ settings = g_settings_new (GTHUMB_BROWSER_SCHEMA); Preferences->startup_location = NULL; if (g_settings_get_boolean (settings, PREF_BROWSER_USE_STARTUP_LOCATION) || g_settings_get_boolean (settings, PREF_BROWSER_GO_TO_LAST_LOCATION)) { char *startup_location; startup_location = _g_settings_get_uri (settings, PREF_BROWSER_STARTUP_LOCATION); if (startup_location == NULL) { GFile *file; file = g_file_new_for_path (g_get_user_special_dir (G_USER_DIRECTORY_PICTURES)); startup_location = g_file_get_uri (file); g_object_unref (file); } if (startup_location == NULL) startup_location = g_strdup (get_home_uri ()); gth_pref_set_startup_location (startup_location); g_free (startup_location); } else { char *current_dir; char *current_uri; current_dir = g_get_current_dir (); current_uri = g_filename_to_uri (current_dir, NULL, NULL); gth_pref_set_startup_location (current_uri); g_free (current_uri); g_free (current_dir); } g_object_unref (settings); }
void bookmarks_load_from_disk (Bookmarks *bookmarks) { GnomeVFSResult result; GnomeVFSHandle *handle; char *uri; char line [MAX_LINE_LENGTH]; g_return_if_fail (bookmarks != NULL); bookmarks_free_data (bookmarks); if (bookmarks->rc_filename == NULL) return; uri = g_strconcat (get_home_uri (), "/", bookmarks->rc_filename, NULL); result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ); g_free (uri); if (result != GNOME_VFS_OK) return; while (_gnome_vfs_read_line (handle, line, MAX_LINE_LENGTH, NULL) == GNOME_VFS_OK) { char *path; if (line[0] != '"') continue; line[strlen (line) - 1] = 0; path = line + 1; bookmarks->list = g_list_prepend (bookmarks->list, g_strdup (path)); my_insert (bookmarks->names, path, get_uri_display_name (path)); my_insert (bookmarks->tips, path, get_menu_item_tip (path)); } gnome_vfs_close (handle); bookmarks->list = g_list_reverse (bookmarks->list); }
static void reset_command_line_catalog (void) { char *catalog_path; char *catalog_uri; /* Reset the startup location if it was set to the command * line catalog. */ catalog_path = get_command_line_catalog_path (); catalog_uri = g_strconcat ("catalog://", remove_host_from_uri (catalog_path), NULL); if (strcmp (catalog_uri, preferences_get_startup_location ()) == 0) preferences_set_startup_location (get_home_uri ()); g_free (catalog_uri); g_free (catalog_path); }
void bookmarks_write_to_disk (Bookmarks *bookmarks) { GnomeVFSResult result; GnomeVFSHandle *handle; char *uri; int lines; GList *scan; g_return_if_fail (bookmarks != NULL); if (bookmarks->rc_filename == NULL) return; uri = g_strconcat (get_home_uri (), "/", bookmarks->rc_filename, NULL); result = gnome_vfs_create (&handle, uri, GNOME_VFS_OPEN_WRITE, FALSE, FILE_PERMISSIONS); g_free (uri); if (result != GNOME_VFS_OK) return; /* write the file list. */ lines = 0; scan = bookmarks->list; while (((bookmarks->max_lines < 0) || (lines < bookmarks->max_lines)) && (scan != NULL)) { if (_gnome_vfs_write_line (handle, "\"%s\"", (char*) scan->data) != GNOME_VFS_OK) { g_print ("ERROR saving to bookmark file\n"); break; } lines++; scan = scan->next; } gnome_vfs_close (handle); }
G_CONST_RETURN char * get_stock_id_for_uri (const char *uri) { const char *stock_id; if (strcmp (uri, g_get_home_dir ()) == 0) stock_id = GTK_STOCK_HOME; else if (strcmp (uri, get_home_uri ()) == 0) stock_id = GTK_STOCK_HOME; else if (folder_is_film (uri)) stock_id = GTHUMB_STOCK_FILM; else if (uri_scheme_is_catalog (uri)) stock_id = GTHUMB_STOCK_CATALOG; else if (uri_scheme_is_search (uri)) stock_id = GTHUMB_STOCK_SEARCH; else stock_id = GTK_STOCK_OPEN; return stock_id; }
static void copy_to_folder_dialog (GthBrowser *browser, GList *files, gboolean move) { GSettings *settings; GtkWidget *dialog; char *start_uri; GList *history; GList *scan; GtkWidget *box; GtkWidget *view_destination_button; settings = g_settings_new (GTHUMB_FILE_MANAGER_SCHEMA); dialog = gtk_file_chooser_dialog_new (move ? _("Move To") : _("Copy To"), GTK_WINDOW (browser), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, _GTK_LABEL_CANCEL, GTK_RESPONSE_CANCEL, (move ? _("Move") : _("Copy")), GTK_RESPONSE_ACCEPT, NULL); _gtk_dialog_add_class_to_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT, GTK_STYLE_CLASS_SUGGESTED_ACTION); start_uri = g_settings_get_string (settings, PREF_FILE_MANAGER_COPY_LAST_FOLDER); if ((start_uri == NULL) || (strcmp (start_uri, "") == 0)) { g_free (start_uri); start_uri = g_strdup (get_home_uri ()); } gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (dialog), start_uri); g_free(start_uri); history = _g_settings_get_string_list (settings, PREF_FILE_MANAGER_COPY_HISTORY); for (scan = history; scan; scan = scan->next) { char *uri = scan->data; gtk_file_chooser_add_shortcut_folder_uri (GTK_FILE_CHOOSER (dialog), uri, NULL); } box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_set_border_width (GTK_CONTAINER (box), 6); gtk_widget_show (box); view_destination_button = gtk_check_button_new_with_mnemonic (_("_View the destination")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view_destination_button), g_settings_get_boolean (settings, PREF_FILE_MANAGER_COPY_VIEW_DESTINATION)); gtk_widget_show (view_destination_button); gtk_box_pack_start (GTK_BOX (box), view_destination_button, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), box, FALSE, FALSE, 0); if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *destination_uri; destination_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog)); if (destination_uri != NULL) { gboolean view_destination; /* save the options */ view_destination = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (view_destination_button)); g_settings_set_boolean (settings, PREF_FILE_MANAGER_COPY_VIEW_DESTINATION, view_destination); g_settings_set_string (settings, PREF_FILE_MANAGER_COPY_LAST_FOLDER, destination_uri); /* save the destination in the history list, prevent * the list from growing without limit. */ history = g_list_prepend (history, g_strdup (destination_uri)); while (g_list_length (history) > MAX_HISTORY_LENGTH) { GList *link = g_list_last (history); history = g_list_remove_link (history, link); _g_string_list_free (link); } _g_settings_set_string_list (settings, PREF_FILE_MANAGER_COPY_HISTORY, history); /* copy / move the files */ copy_files_to_folder (browser, files, move, destination_uri, view_destination); } g_free (destination_uri); } _g_string_list_free (history); gtk_widget_destroy (dialog); g_object_unref (settings); }
static void screenshot_ready_cb (GdkPixbuf *pixbuf, gpointer user_data) { SaveData *save_data = user_data; GtkWidget *file_sel; if (pixbuf == NULL) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (save_data->browser), _("Could not take a screenshot"), NULL); save_date_free (save_data); return; } save_data->image = gth_image_new_for_pixbuf (pixbuf); file_sel = gth_file_chooser_dialog_new (_("Save Image"), GTK_WINDOW (save_data->browser), "image-saver"); gtk_window_set_modal (GTK_WINDOW (file_sel), TRUE); { char *last_uri; GFile *last_folder; GthFileData *file_data; char *prefix; char *display_name; int attempt; last_uri = g_settings_get_string (save_data->settings, PREF_GSTREAMER_TOOLS_SCREESHOT_LOCATION); if ((last_uri == NULL) || (strcmp (last_uri, "~") == 0) || (strcmp (last_uri, "file://~") == 0)) { const char *dir; dir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (dir != NULL) last_folder = g_file_new_for_path (dir); else last_folder = g_file_new_for_uri (get_home_uri ()); } else last_folder = g_file_new_for_uri (last_uri); gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (file_sel), last_folder, NULL); file_data = gth_media_viewer_page_get_file_data (save_data->page); prefix = _g_utf8_remove_extension (g_file_info_get_display_name (file_data->info)); if (prefix == NULL) prefix = g_strdup (C_("Filename", "Screenshot")); display_name = NULL; for (attempt = 1; attempt < MAX_ATTEMPTS; attempt++) { GFile *proposed_file; g_free (display_name); display_name = g_strdup_printf ("%s-%02d.jpeg", prefix, attempt); proposed_file = g_file_get_child_for_display_name (last_folder, display_name, NULL); if ((proposed_file != NULL) && ! g_file_query_exists (proposed_file, NULL)) { g_object_unref (proposed_file); break; } } if (display_name != NULL) { gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (file_sel), display_name); g_free (display_name); } g_free (prefix); g_object_unref (last_folder); g_free (last_uri); } g_signal_connect (GTK_DIALOG (file_sel), "response", G_CALLBACK (save_as_response_cb), save_data); gtk_widget_show (file_sel); }
void dlg_web_exporter (GthBrowser *browser, GList *file_list) { DialogData *data; int i; int active_index; char *default_sort_type; GList *sort_types; GList *scan; char *caption; char *s_value; if (gth_browser_get_dialog (browser, "web_exporter") != NULL) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "web_exporter"))); return; } data = g_new0 (DialogData, 1); data->browser = browser; data->file_list = _g_object_list_ref (file_list); data->builder = _gtk_builder_new_from_file ("web-album-exporter.ui", "webalbums"); data->settings = g_settings_new (PIX_WEBALBUMS_SCHEMA); data->dialog = _gtk_builder_get_widget (data->builder, "web_album_dialog"); gth_browser_set_dialog (browser, "web_exporter", data->dialog); g_object_set_data (G_OBJECT (data->dialog), "dialog_data", data); data->thumbnail_caption_chooser = gth_metadata_chooser_new (GTH_METADATA_ALLOW_IN_FILE_LIST); gtk_widget_show (data->thumbnail_caption_chooser); gtk_container_add (GTK_CONTAINER (GET_WIDGET ("thumbnail_caption_scrolledwindow")), data->thumbnail_caption_chooser); data->image_attributes_chooser = gth_metadata_chooser_new (GTH_METADATA_ALLOW_IN_PROPERTIES_VIEW); gtk_widget_show (data->image_attributes_chooser); gtk_container_add (GTK_CONTAINER (GET_WIDGET ("image_caption_scrolledwindow")), data->image_attributes_chooser); /* Set widgets data. */ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("copy_images_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_COPY_IMAGES)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("resize_images_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_RESIZE_IMAGES)); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("images_per_index_spinbutton")), g_settings_get_int (data->settings, PREF_WEBALBUMS_IMAGES_PER_INDEX)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("single_index_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_SINGLE_INDEX)); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("cols_spinbutton")), g_settings_get_int (data->settings, PREF_WEBALBUMS_COLUMNS)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("adapt_column_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_ADAPT_TO_WIDTH)); _gtk_combo_box_add_image_sizes (GTK_COMBO_BOX (GET_WIDGET ("resize_images_combobox")), g_settings_get_int (data->settings, PREF_WEBALBUMS_RESIZE_WIDTH), g_settings_get_int (data->settings, PREF_WEBALBUMS_RESIZE_HEIGHT)); default_sort_type = g_settings_get_string (data->settings, PREF_WEBALBUMS_SORT_TYPE); active_index = 0; sort_types = gth_main_get_all_sort_types (); for (i = 0, scan = sort_types; scan; scan = scan->next, i++) { GthFileDataSort *sort_type = scan->data; GtkTreeIter iter; if (g_str_equal (sort_type->name, default_sort_type)) active_index = i; gtk_list_store_append (GTK_LIST_STORE (GET_WIDGET ("sort_liststore")), &iter); gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("sort_liststore")), &iter, SORT_TYPE_COLUMN_DATA, sort_type, SORT_TYPE_COLUMN_NAME, _(sort_type->display_name), -1); } g_list_free (sort_types); gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("sort_combobox")), active_index); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("reverse_order_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_SORT_INVERSE)); g_free (default_sort_type); gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("header_entry")), g_file_info_get_edit_name (gth_browser_get_location_data (browser)->info)); s_value = g_settings_get_string (data->settings, PREF_WEBALBUMS_FOOTER); gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("footer_entry")), s_value); g_free (s_value); s_value = g_settings_get_string (data->settings, PREF_WEBALBUMS_IMAGE_PAGE_FOOTER); gtk_entry_set_text (GTK_ENTRY (GET_WIDGET ("image_page_footer_entry")), s_value); g_free (s_value); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("thumbnail_caption_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_ENABLE_THUMBNAIL_CAPTION)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("image_description_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_ENABLE_IMAGE_DESCRIPTION)); caption = g_settings_get_string (data->settings, PREF_WEBALBUMS_THUMBNAIL_CAPTION); gth_metadata_chooser_set_selection (GTH_METADATA_CHOOSER (data->thumbnail_caption_chooser), caption); g_free (caption); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("image_attributes_checkbutton")), g_settings_get_boolean (data->settings, PREF_WEBALBUMS_ENABLE_IMAGE_ATTRIBUTES)); caption = g_settings_get_string (data->settings, PREF_WEBALBUMS_IMAGE_ATTRIBUTES); gth_metadata_chooser_set_selection (GTH_METADATA_CHOOSER (data->image_attributes_chooser), caption); g_free (caption); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (GET_WIDGET ("theme_liststore")), THEME_COLUMN_NAME, GTK_SORT_ASCENDING); load_themes (data); update_sensitivity (data); { char *destination; destination = _g_settings_get_uri (data->settings, PREF_WEBALBUMS_DESTINATION); if (destination == NULL) destination = g_strdup (get_home_uri ()); gtk_file_chooser_set_uri (GTK_FILE_CHOOSER (GET_WIDGET ("destination_filechooserbutton")), destination); g_free (destination); } /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect (GET_WIDGET ("ok_button"), "clicked", G_CALLBACK (ok_clicked_cb), data); g_signal_connect (GET_WIDGET ("help_button"), "clicked", G_CALLBACK (help_clicked_cb), data); g_signal_connect_swapped (GET_WIDGET ("cancel_button"), "clicked", G_CALLBACK (gtk_widget_destroy), data->dialog); g_signal_connect_swapped (GET_WIDGET ("copy_images_checkbutton"), "clicked", G_CALLBACK (update_sensitivity), data); g_signal_connect_swapped (GET_WIDGET ("resize_images_checkbutton"), "clicked", G_CALLBACK (update_sensitivity), data); g_signal_connect (GET_WIDGET ("header_entry"), "icon-press", G_CALLBACK (footer_entry_icon_press_cb), data); g_signal_connect (GET_WIDGET ("footer_entry"), "icon-press", G_CALLBACK (footer_entry_icon_press_cb), data); g_signal_connect (GET_WIDGET ("image_page_header_entry"), "icon-press", G_CALLBACK (footer_entry_icon_press_cb), data); g_signal_connect (GET_WIDGET ("image_page_footer_entry"), "icon-press", G_CALLBACK (footer_entry_icon_press_cb), data); g_signal_connect_swapped (GET_WIDGET ("single_index_checkbutton"), "toggled", G_CALLBACK (update_sensitivity), data); g_signal_connect_swapped (GET_WIDGET ("adapt_column_checkbutton"), "toggled", G_CALLBACK (update_sensitivity), data); g_signal_connect_swapped (GET_WIDGET ("image_attributes_checkbutton"), "toggled", G_CALLBACK (update_sensitivity), data); g_signal_connect_swapped (GET_WIDGET ("thumbnail_caption_checkbutton"), "toggled", G_CALLBACK (update_sensitivity), 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); }
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); }
void dlg_batch_add_files (FrWindow *window, GList *file_list) { DialogData *data; GtkWidget *cancel_button; GtkWidget *help_button; GtkWidget *add_button; GtkWidget *a_archive_type_box; GtkSizeGroup *size_group; char *automatic_name = NULL; char *default_ext; const char *first_filename; char *parent; int i; if (file_list == NULL) return; data = g_new0 (DialogData, 1); data->settings = g_settings_new (ENGRAMPA_SCHEMA_BATCH_ADD); data->settings_general = g_settings_new (ENGRAMPA_SCHEMA_GENERAL); data->builder = _gtk_builder_new_from_file ("batch-add-files.ui"); if (data->builder == NULL) { g_free (data); return; } data->window = window; data->file_list = file_list; data->single_file = ((file_list->next == NULL) && uri_is_file ((char*) file_list->data)); data->add_clicked = FALSE; /* Get the widgets. */ data->dialog = _gtk_builder_get_widget (data->builder, "batch_add_files_dialog"); data->a_add_to_entry = _gtk_builder_get_widget (data->builder, "a_add_to_entry"); data->a_location_filechooserbutton = _gtk_builder_get_widget (data->builder, "a_location_filechooserbutton"); data->a_password_entry = _gtk_builder_get_widget (data->builder, "a_password_entry"); data->a_password_label = _gtk_builder_get_widget (data->builder, "a_password_label"); data->a_other_options_expander = _gtk_builder_get_widget (data->builder, "a_other_options_expander"); data->a_encrypt_header_checkbutton = _gtk_builder_get_widget (data->builder, "a_encrypt_header_checkbutton"); data->a_volume_checkbutton = _gtk_builder_get_widget (data->builder, "a_volume_checkbutton"); data->a_volume_spinbutton = _gtk_builder_get_widget (data->builder, "a_volume_spinbutton"); data->a_volume_box = _gtk_builder_get_widget (data->builder, "a_volume_box"); add_button = _gtk_builder_get_widget (data->builder, "a_add_button"); cancel_button = _gtk_builder_get_widget (data->builder, "a_cancel_button"); help_button = _gtk_builder_get_widget (data->builder, "a_help_button"); a_archive_type_box = _gtk_builder_get_widget (data->builder, "a_archive_type_box"); data->add_image = _gtk_builder_get_widget (data->builder, "a_add_image"); /* Set widgets data. */ size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); gtk_size_group_add_widget (size_group, _gtk_builder_get_widget (data->builder, "a_archive_label")); gtk_size_group_add_widget (size_group, _gtk_builder_get_widget (data->builder, "a_location_label")); gtk_size_group_add_widget (size_group, _gtk_builder_get_widget (data->builder, "a_password_label")); gtk_button_set_use_stock (GTK_BUTTON (add_button), TRUE); gtk_button_set_label (GTK_BUTTON (add_button), FR_STOCK_CREATE_ARCHIVE); gtk_expander_set_expanded (GTK_EXPANDER (data->a_other_options_expander), FALSE /*g_settings_get_boolean (data->settings, PREF_BATCH_ADD_OTHER_OPTIONS)*/); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (data->a_encrypt_header_checkbutton), g_settings_get_boolean (data->settings_general, PREF_GENERAL_ENCRYPT_HEADER)); gtk_spin_button_set_value (GTK_SPIN_BUTTON (data->a_volume_spinbutton), (double) g_settings_get_int (data->settings, PREF_BATCH_ADD_VOLUME_SIZE) / MEGABYTE); first_filename = (char*) file_list->data; parent = remove_level_from_path (first_filename); if (file_list->next == NULL) automatic_name = g_uri_unescape_string (file_name_from_path ((char*) file_list->data), NULL); else { automatic_name = g_uri_unescape_string (file_name_from_path (parent), NULL); if ((automatic_name == NULL) || (automatic_name[0] == '\0')) { g_free (automatic_name); automatic_name = g_uri_unescape_string (file_name_from_path (first_filename), NULL); } } _gtk_entry_set_filename_text (GTK_ENTRY (data->a_add_to_entry), automatic_name); g_free (automatic_name); if (check_permissions (parent, R_OK | W_OK)) gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (data->a_location_filechooserbutton), parent); else gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (data->a_location_filechooserbutton), get_home_uri ()); g_free (parent); /* archive type combobox */ data->a_archive_type_combo_box = gtk_combo_box_new_text (); if (data->single_file) data->supported_types = single_file_save_type; else data->supported_types = save_type; sort_mime_types_by_extension (data->supported_types); for (i = 0; data->supported_types[i] != -1; i++) gtk_combo_box_append_text (GTK_COMBO_BOX (data->a_archive_type_combo_box), mime_type_desc[data->supported_types[i]].default_ext); gtk_box_pack_start (GTK_BOX (a_archive_type_box), data->a_archive_type_combo_box, TRUE, TRUE, 0); gtk_widget_show_all (a_archive_type_box); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect_swapped (G_OBJECT (cancel_button), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (data->dialog)); g_signal_connect (G_OBJECT (add_button), "clicked", G_CALLBACK (add_clicked_cb), data); g_signal_connect (G_OBJECT (help_button), "clicked", G_CALLBACK (help_clicked_cb), data); g_signal_connect (G_OBJECT (data->a_archive_type_combo_box), "changed", G_CALLBACK (archive_type_combo_box_changed_cb), data); g_signal_connect (G_OBJECT (data->a_password_entry), "changed", G_CALLBACK (password_entry_changed_cb), data); g_signal_connect (G_OBJECT (data->a_volume_checkbutton), "toggled", G_CALLBACK (volume_toggled_cb), data); /* Run dialog. */ default_ext = g_settings_get_string (data->settings, PREF_BATCH_ADD_DEFAULT_EXTENSION); update_archive_type_combo_box_from_ext (data, default_ext); g_free (default_ext); gtk_widget_grab_focus (data->a_add_to_entry); gtk_editable_select_region (GTK_EDITABLE (data->a_add_to_entry), 0, -1); update_sensitivity (data); gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE); gtk_window_present (GTK_WINDOW (data->dialog)); }