void dlg_edit_metadata (GthBrowser *browser, GType dialog_type, const char *dialog_name) { DialogData *data; if (gth_browser_get_dialog (browser, dialog_name)) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, dialog_name))); return; } data = g_new0 (DialogData, 1); data->ref = 1; data->browser = browser; data->dialog = g_object_new (dialog_type, 0); data->dialog_name = g_strdup (dialog_name); data->never_shown = TRUE; gth_browser_set_dialog (browser, data->dialog_name, data->dialog); g_signal_connect (G_OBJECT (data->dialog), "delete-event", G_CALLBACK (gtk_true), NULL); g_signal_connect (data->dialog, "response", G_CALLBACK (edit_metadata_dialog__response_cb), data); data->file_selection_changed_event = g_signal_connect (gth_browser_get_file_list_view (data->browser), "file-selection-changed", G_CALLBACK (file_selection_changed_cb), data); update_file_list (data); }
void dlg_sort_order (GthBrowser *browser) { DialogData *data; GtkListStore *selection_model; GtkCellRenderer *renderer; GthFileData *file_data; GList *sort_types; GList *scan; GthFileDataSort *current_sort_type; gboolean sort_inverse; int i, i_active; if (gth_browser_get_dialog (browser, "sort-order") != NULL) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "sort-order"))); return; } data = g_new0 (DialogData, 1); data->browser = browser; data->builder = _gtk_builder_new_from_file ("sort-order.ui", NULL); /* Get the widgets. */ data->dialog = _gtk_builder_get_widget (data->builder, "sort_order_dialog"); gth_browser_set_dialog (browser, "sort-order", data->dialog); g_object_set_data (G_OBJECT (data->dialog), "dialog_data", data); /* Set widgets data. */ selection_model = gtk_list_store_new (2, G_TYPE_POINTER, G_TYPE_STRING); data->sort_by_combobox = gtk_combo_box_new_with_model (GTK_TREE_MODEL (selection_model)); g_object_unref (selection_model); renderer = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (data->sort_by_combobox), renderer, TRUE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (data->sort_by_combobox), renderer, "text", SELECTION_COLUMN_NAME, NULL); file_data = gth_browser_get_location_data (data->browser); if (file_data != NULL) { current_sort_type = gth_main_get_sort_type (g_file_info_get_attribute_string (file_data->info, "sort::type")); sort_inverse = g_file_info_get_attribute_boolean (file_data->info, "sort::inverse"); } else gth_browser_get_sort_order (data->browser, ¤t_sort_type, &sort_inverse); sort_types = gth_main_get_all_sort_types (); for (i = 0, i_active = 0, scan = sort_types; scan; scan = scan->next, i++) { GthFileDataSort *sort_type = scan->data; GtkTreeIter iter; if (strcmp (sort_type->name, current_sort_type->name) == 0) i_active = i; gtk_list_store_append (selection_model, &iter); gtk_list_store_set (selection_model, &iter, SELECTION_COLUMN_DATA, sort_type, SELECTION_COLUMN_NAME, _(sort_type->display_name), -1); } g_list_free (sort_types); gtk_combo_box_set_active (GTK_COMBO_BOX (data->sort_by_combobox), i_active); gtk_widget_show (data->sort_by_combobox); gtk_container_add (GTK_CONTAINER (GET_WIDGET ("sort_by_hbox")), data->sort_by_combobox); gtk_label_set_use_underline (GTK_LABEL (GET_WIDGET ("sort_by_label")), TRUE); gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("sort_by_label")), data->sort_by_combobox); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("inverse_checkbutton")), sort_inverse); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect_swapped (GET_WIDGET ("close_button"), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (data->dialog)); g_signal_connect (GET_WIDGET ("inverse_checkbutton"), "toggled", G_CALLBACK (apply_sort_order), data); g_signal_connect (data->sort_by_combobox, "changed", G_CALLBACK (apply_sort_order), 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); }
void dlg_sort_order (GthBrowser *browser) { DialogData *data; GtkWidget *first_button; GthFileData *file_data; GList *scan; gboolean sort_inverse; if (gth_browser_get_dialog (browser, "sort-order") != NULL) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "sort-order"))); return; } data = g_new0 (DialogData, 1); data->browser = browser; data->builder = _gtk_builder_new_from_file ("sort-order.ui", NULL); /* Get the widgets. */ data->dialog = g_object_new (GTK_TYPE_DIALOG, "title", _("Sort By"), "transient-for", GTK_WINDOW (browser), "modal", FALSE, "destroy-with-parent", FALSE, "use-header-bar", _gtk_settings_get_dialogs_use_header (), NULL); gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))), _gtk_builder_get_widget (data->builder, "dialog_content")); gtk_dialog_add_buttons (GTK_DIALOG (data->dialog), _GTK_LABEL_OK, GTK_RESPONSE_CLOSE, NULL); gth_browser_set_dialog (browser, "sort-order", data->dialog); g_object_set_data (G_OBJECT (data->dialog), "dialog_data", data); /* Set widgets data. */ file_data = gth_browser_get_location_data (data->browser); if (file_data != NULL) { data->current_sort_type = gth_main_get_sort_type (g_file_info_get_attribute_string (file_data->info, "sort::type")); sort_inverse = g_file_info_get_attribute_boolean (file_data->info, "sort::inverse"); } else gth_browser_get_sort_order (data->browser, &data->current_sort_type, &sort_inverse); first_button = NULL; data->sort_types = gth_main_get_all_sort_types (); for (scan = data->sort_types; scan; scan = scan->next) { GthFileDataSort *sort_type = scan->data; GtkWidget *button; ButtonData *button_data; button = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (first_button), _(sort_type->display_name)); if (scan == data->sort_types) first_button = button; gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (GET_WIDGET ("sort_order_box")), button, FALSE, FALSE, 0); if (strcmp (sort_type->name, data->current_sort_type->name) == 0) gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE); button_data = g_new0 (ButtonData, 1); button_data->data = data; button_data->sort_type = sort_type; g_signal_connect_data (button, "toggled", G_CALLBACK (order_button_toggled_cb), button_data, (GClosureNotify) button_data_free, 0); } gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("inverse_checkbutton")), sort_inverse); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect_swapped (gtk_dialog_get_widget_for_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_CLOSE), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (data->dialog)); g_signal_connect (GET_WIDGET ("inverse_checkbutton"), "toggled", G_CALLBACK (apply_sort_order), 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); }
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_personalize_scripts (GthBrowser *browser) { DialogData *data; if (gth_browser_get_dialog (browser, "personalize_scripts") != NULL) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "personalize_scripts"))); return; } data = g_new0 (DialogData, 1); data->browser = browser; data->builder = _gtk_builder_new_from_file ("personalize-scripts.ui", "list_tools"); /* Get the widgets. */ data->dialog = _gtk_builder_get_widget (data->builder, "personalize_scripts_dialog"); gth_browser_set_dialog (browser, "personalize_scripts", data->dialog); g_object_set_data (G_OBJECT (data->dialog), "dialog_data", data); /**/ data->list_store = gtk_list_store_new (NUM_COLUMNS, G_TYPE_OBJECT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); data->list_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (data->list_store)); g_object_unref (data->list_store); gtk_tree_view_set_reorderable (GTK_TREE_VIEW (data->list_view), TRUE); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (data->list_view), TRUE); add_columns (GTK_TREE_VIEW (data->list_view), data); gtk_widget_show (data->list_view); gtk_container_add (GTK_CONTAINER (GET_WIDGET ("scripts_scrolledwindow")), data->list_view); gtk_label_set_mnemonic_widget (GTK_LABEL (GET_WIDGET ("scripts_label")), data->list_view); gtk_label_set_use_underline (GTK_LABEL (GET_WIDGET ("scripts_label")), TRUE); update_script_list (data); update_sensitivity (data); /* Set the signals handlers. */ g_signal_connect (G_OBJECT (data->dialog), "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect_swapped (G_OBJECT (GET_WIDGET ("close_button")), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (data->dialog)); g_signal_connect (G_OBJECT (GET_WIDGET ("new_button")), "clicked", G_CALLBACK (new_script_cb), data); g_signal_connect (G_OBJECT (GET_WIDGET ("edit_button")), "clicked", G_CALLBACK (edit_script_cb), data); g_signal_connect (G_OBJECT (GET_WIDGET ("delete_button")), "clicked", G_CALLBACK (delete_script_cb), data); g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (data->list_view)), "changed", G_CALLBACK (list_view_selection_changed_cb), data); g_signal_connect (GTK_TREE_VIEW (data->list_view), "row-activated", G_CALLBACK (list_view_row_activated_cb), data); g_signal_connect (data->list_store, "row-deleted", G_CALLBACK (row_deleted_cb), data); g_signal_connect (data->list_store, "row-inserted", G_CALLBACK (row_inserted_cb), data); data->scripts_changed_id = g_signal_connect (gth_script_file_get (), "changed", G_CALLBACK (scripts_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); }
void dlg_resize_images (GthBrowser *browser, GList *file_list) { DialogData *data; GArray *savers; GthFileData *first_file_data; GthUnit unit; int default_width_in_pixels; int default_height_in_pixels; if (gth_browser_get_dialog (browser, "resize_images") != NULL) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "resize_images"))); return; } data = g_new0 (DialogData, 1); data->browser = browser; data->builder = _gtk_builder_new_from_file ("resize-images.ui", "resize_images"); data->settings = g_settings_new (GTHUMB_RESIZE_IMAGES_SCHEMA); data->file_list = gth_file_data_list_dup (file_list); data->use_destination = TRUE; /* Get the widgets. */ data->dialog = _gtk_builder_get_widget (data->builder, "resize_images_dialog"); gth_browser_set_dialog (browser, "resize_images", data->dialog); g_object_set_data (G_OBJECT (data->dialog), "dialog_data", data); /* Set widgets data. */ first_file_data = (GthFileData *) data->file_list->data; _gtk_file_chooser_set_file_parent (GTK_FILE_CHOOSER (GET_WIDGET ("destination_filechooserbutton")), first_file_data->file, NULL); unit = g_settings_get_enum (data->settings, PREF_RESIZE_IMAGES_UNIT); gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("unit_combobox")), unit); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (GET_WIDGET ("keep_ratio_checkbutton")), g_settings_get_boolean (data->settings, PREF_RESIZE_IMAGES_KEEP_RATIO)); default_width_in_pixels = DEFAULT_WIDTH_PIXELS; default_height_in_pixels = DEFAULT_HEIGHT_PIXELS; if (data->file_list->next == NULL) { GthMetadataProvider *provider; int width; int height; provider = g_object_new (GTH_TYPE_METADATA_PROVIDER_IMAGE, NULL); gth_metadata_provider_read (provider, first_file_data, "image::width,image::height", NULL); width = g_file_info_get_attribute_int32 (first_file_data->info, "image::width"); height = g_file_info_get_attribute_int32 (first_file_data->info, "image::height"); if ((width > 0) && (height > 0)) { data->known_ratio = TRUE; data->ratio = (double) width / height; default_width_in_pixels = width; default_height_in_pixels = height; } g_object_unref (provider); } if (unit == GTH_UNIT_PERCENTAGE) { data->latest_width_in_pixel = default_width_in_pixels; data->latest_height_in_pixel = default_height_in_pixels; data->latest_width_in_percentage = g_settings_get_int (data->settings, PREF_RESIZE_IMAGES_SERIES_WIDTH); data->latest_height_in_percentage = g_settings_get_int (data->settings, PREF_RESIZE_IMAGES_SERIES_HEIGHT); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), data->latest_width_in_percentage); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), data->latest_height_in_percentage); } else if (unit == GTH_UNIT_PIXELS) { data->latest_width_in_percentage = DEFAULT_WIDTH_PERCENTAGE; data->latest_height_in_percentage = DEFAULT_HEIGHT_PERCENTAGE; data->latest_width_in_pixel = g_settings_get_int (data->settings, PREF_RESIZE_IMAGES_SERIES_WIDTH); data->latest_height_in_pixel = g_settings_get_int (data->settings, PREF_RESIZE_IMAGES_SERIES_HEIGHT); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("width_spinbutton")), data->latest_width_in_pixel); gtk_spin_button_set_value (GTK_SPIN_BUTTON (GET_WIDGET ("height_spinbutton")), data->latest_height_in_pixel); } savers = gth_main_get_type_set ("image-saver"); if (savers != NULL) { GtkListStore *list_store; GtkTreeIter iter; char *default_mime_type; GthIconCache *icon_cache; int i; list_store = (GtkListStore *) GET_WIDGET ("mime_type_liststore"); gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, MIME_TYPE_COLUMN_ICON, NULL, MIME_TYPE_COLUMN_TYPE, NULL, MIME_TYPE_COLUMN_DESCRIPTION, _("Keep the original format"), -1); gtk_combo_box_set_active_iter (GTK_COMBO_BOX (GET_WIDGET ("mime_type_combobox")), &iter); default_mime_type = g_settings_get_string (data->settings, PREF_RESIZE_IMAGES_MIME_TYPE); icon_cache = gth_icon_cache_new_for_widget (data->dialog, GTK_ICON_SIZE_MENU); for (i = 0; i < savers->len; i++) { GType saver_type; GthImageSaver *saver; const char *mime_type; GdkPixbuf *pixbuf; saver_type = g_array_index (savers, GType, i); saver = g_object_new (saver_type, NULL); mime_type = gth_image_saver_get_mime_type (saver); pixbuf = gth_icon_cache_get_pixbuf (icon_cache, g_content_type_get_icon (mime_type)); gtk_list_store_append (list_store, &iter); gtk_list_store_set (list_store, &iter, MIME_TYPE_COLUMN_ICON, pixbuf, MIME_TYPE_COLUMN_TYPE, mime_type, MIME_TYPE_COLUMN_DESCRIPTION, g_content_type_get_description (mime_type), -1); if (strcmp (default_mime_type, mime_type) == 0) gtk_combo_box_set_active_iter (GTK_COMBO_BOX (GET_WIDGET ("mime_type_combobox")), &iter); g_object_unref (pixbuf); g_object_unref (saver); } gth_icon_cache_free (icon_cache); g_free (default_mime_type); } /* 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), G_OBJECT (data->dialog)); g_signal_connect (GET_WIDGET ("unit_combobox"), "changed", G_CALLBACK (unit_combobox_changed_cb), data); g_signal_connect (GET_WIDGET ("use_destination_checkbutton"), "toggled", G_CALLBACK (use_destination_checkbutton_toggled_cb), data); data->width_spinbutton_event = g_signal_connect (GET_WIDGET ("width_spinbutton"), "value-changed", G_CALLBACK (width_spinbutton_value_changed_cb), data); data->height_spinbutton_event = g_signal_connect (GET_WIDGET ("height_spinbutton"), "value-changed", G_CALLBACK (height_spinbutton_value_changed_cb), data); /* Run dialog. */ update_width_height_properties (data); width_spinbutton_value_changed_cb (NULL, data); if (GTH_IS_FILE_SOURCE_VFS (gth_browser_get_location_source (browser))) gtk_widget_hide (GET_WIDGET ("use_destination_checkbutton")); 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); }
void dlg_preferences (GthBrowser *browser) { DialogData *data; GtkWidget *notebook; GList *children; GList *scan; int page_num; GtkWidget *list_box; GtkTreeSelection *selection; if (gth_browser_get_dialog (browser, "preferences") != NULL) { gtk_window_present (GTK_WINDOW (gth_browser_get_dialog (browser, "preferences"))); return; } data = g_new0 (DialogData, 1); data->browser = browser; data->builder = _gtk_builder_new_from_file ("preferences.ui", NULL); data->dialog = GET_WIDGET ("preferences_dialog"); gtk_container_set_border_width (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (data->dialog))), 0); gth_browser_set_dialog (browser, "preferences", data->dialog); gth_hook_invoke ("dlg-preferences-construct", data->dialog, data->browser, data->builder); /* widgets */ list_box = GET_WIDGET ("tabs_listbox"); notebook = GET_WIDGET ("notebook"); children = gtk_container_get_children (GTK_CONTAINER (notebook)); page_num = 0; for (scan = children; scan; scan = scan->next) { GtkWidget *child = scan->data; const char *name; GtkWidget *row; GtkWidget *box; GtkWidget *label; name = gtk_notebook_get_tab_label_text (GTK_NOTEBOOK (notebook), child); if (name == NULL) continue; if (scan != children) _gtk_list_box_add_separator (GTK_LIST_BOX (list_box)); row = gtk_list_box_row_new (); g_object_set_data (G_OBJECT (row), "gth.page_num", GINT_TO_POINTER (page_num)); gtk_widget_show (row); gtk_container_add (GTK_CONTAINER (list_box), row); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_set_border_width (GTK_CONTAINER (box), 10); gtk_widget_show (box); gtk_container_add (GTK_CONTAINER (row), box); label = gtk_label_new (name); gtk_label_set_ellipsize (GTK_LABEL(label), PANGO_ELLIPSIZE_END); gtk_widget_show (label); gtk_container_add (GTK_CONTAINER (box), label); page_num += 1; } /* Set the signals handlers. */ g_signal_connect (data->dialog, "destroy", G_CALLBACK (destroy_cb), data); g_signal_connect (list_box, "row-activated", G_CALLBACK (list_box_row_activated_cb), data); /* run dialog. */ gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (browser)); gtk_widget_show (data->dialog); }