JNIEXPORT void JNICALL Java_org_gnome_gtk_GtkFileChooser_gtk_1file_1chooser_1set_1use_1preview_1label ( JNIEnv* env, jclass cls, jlong _self, jboolean _useLabel ) { GtkFileChooser* self; gboolean useLabel; // convert parameter self self = (GtkFileChooser*) _self; // convert parameter useLabel useLabel = (gboolean) _useLabel; // call function gtk_file_chooser_set_use_preview_label(self, useLabel); // cleanup parameter self // cleanup parameter useLabel }
static void um_photo_dialog_select_file (UmPhotoDialog *um) { GtkWidget *chooser; const gchar *folder; GtkWidget *preview; chooser = gtk_file_chooser_dialog_new (_("Browse for more pictures"), GTK_WINDOW (gtk_widget_get_toplevel (um->popup_button)), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_modal (GTK_WINDOW (chooser), TRUE); preview = gtk_image_new (); gtk_widget_set_size_request (preview, 128, -1); gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (chooser), preview); gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (chooser), FALSE); gtk_widget_show (preview); g_signal_connect (chooser, "update-preview", G_CALLBACK (update_preview), um->thumb_factory); folder = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (folder) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), folder); g_signal_connect (chooser, "response", G_CALLBACK (file_chooser_response), um); gtk_window_present (GTK_WINDOW (chooser)); }
void GtkFileChooserDialog_::set_use_preview_label(Php::Parameters ¶meters) { gboolean use_label = (gboolean)parameters[0]; gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER(instance), use_label); }
static void gimp_file_dialog_add_preview (GimpFileDialog *dialog, Gimp *gimp) { if (gimp->config->thumbnail_size <= 0) return; gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (dialog), FALSE); g_signal_connect (dialog, "selection-changed", G_CALLBACK (gimp_file_dialog_selection_changed), dialog); g_signal_connect (dialog, "update-preview", G_CALLBACK (gimp_file_dialog_update_preview), dialog); dialog->thumb_box = gimp_thumb_box_new (gimp_get_user_context (gimp)); gtk_widget_set_sensitive (GTK_WIDGET (dialog->thumb_box), FALSE); gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (dialog), dialog->thumb_box); gtk_widget_show (dialog->thumb_box); #ifdef ENABLE_FILE_SYSTEM_ICONS GIMP_VIEW_RENDERER_IMAGEFILE (GIMP_VIEW (GIMP_THUMB_BOX (dialog->thumb_box)->preview)->renderer)->file_system = _gtk_file_chooser_get_file_system (GTK_FILE_CHOOSER (dialog)); #endif }
void setupPreview() { m_preview = gtk_image_new(); gtk_file_chooser_set_use_preview_label(m_chooser, false); gtk_file_chooser_set_preview_widget(m_chooser, m_preview); g_signal_connect( m_chooser, "update-preview", G_CALLBACK(&FileDialogGTK::s_onUpdatePreview), this); }
void wp_create_filechooser (AppearanceData *data) { const char *start_dir, *pictures = NULL; GtkFileFilter *filter; data->wp_filesel = GTK_FILE_CHOOSER ( gtk_file_chooser_dialog_new (_("Add Wallpaper"), GTK_WINDOW (appearance_capplet_get_widget (data, "appearance_window")), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL)); gtk_dialog_set_default_response (GTK_DIALOG (data->wp_filesel), GTK_RESPONSE_OK); gtk_file_chooser_set_select_multiple (data->wp_filesel, TRUE); gtk_file_chooser_set_use_preview_label (data->wp_filesel, FALSE); start_dir = g_get_home_dir (); if (g_file_test ("/usr/share/backgrounds", G_FILE_TEST_IS_DIR)) { gtk_file_chooser_add_shortcut_folder (data->wp_filesel, "/usr/share/backgrounds", NULL); start_dir = "/usr/share/backgrounds"; } pictures = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (pictures != NULL && g_file_test (pictures, G_FILE_TEST_IS_DIR)) { gtk_file_chooser_add_shortcut_folder (data->wp_filesel, pictures, NULL); start_dir = pictures; } gtk_file_chooser_set_current_folder (data->wp_filesel, start_dir); filter = gtk_file_filter_new (); gtk_file_filter_add_pixbuf_formats (filter); gtk_file_filter_set_name (filter, _("Images")); gtk_file_chooser_add_filter (data->wp_filesel, filter); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All files")); gtk_file_filter_add_pattern (filter, "*"); gtk_file_chooser_add_filter (data->wp_filesel, filter); data->wp_image = gtk_image_new (); gtk_file_chooser_set_preview_widget (data->wp_filesel, data->wp_image); gtk_widget_set_size_request (data->wp_image, 128, -1); gtk_widget_show (data->wp_image); g_signal_connect (data->wp_filesel, "update-preview", (GCallback) wp_update_preview, data); }
static void browse_button_cb (GtkWidget *widget, gpointer data) { GtkWindow *parent = GTK_WINDOW (data); GtkFileFilter *filter; GtkWidget *file_dialog; file_dialog = gtk_file_chooser_dialog_new (_("Select User Image"), parent, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_show_hidden (GTK_FILE_CHOOSER (file_dialog), FALSE); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (file_dialog), TRUE); gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (file_dialog), FALSE); if (facedir && g_file_test (facedir, G_FILE_TEST_IS_DIR)) { gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_dialog), facedir); gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (file_dialog), facedir, NULL); } else { gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_dialog), DATADIR "/pixmaps"); gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (file_dialog), DATADIR "/pixmaps", NULL); } filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("Images")); gtk_file_filter_add_pixbuf_formats (filter); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_dialog), filter); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Files")); gtk_file_filter_add_pattern(filter, "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_dialog), filter); if (imagename != NULL) { gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_dialog), imagename); } add_preview_widget (file_dialog); g_signal_connect (G_OBJECT (file_dialog), "response", G_CALLBACK (install_response), NULL); gtk_widget_show (file_dialog); }
static void setup_background_filechooser (GtkWidget *filechooser, TerminalProfile *profile) { GtkFileFilter *filter; const char *home_dir; filter = gtk_file_filter_new (); gtk_file_filter_add_pixbuf_formats (filter); gtk_file_filter_set_name (filter, _("Images")); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (filechooser), filter); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (filechooser), TRUE); /* Start filechooser in $HOME instead of the current dir of the factory which is "/" */ home_dir = g_get_home_dir (); if (home_dir) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (filechooser), home_dir); #if 0 GtkWidget *image_preview; GdkPixbuf *pixbuf = NULL; image_preview = gtk_image_new (); /* FIXMchpe this is bogus */ pixbuf = create_preview_pixbuf (terminal_profile_get_property_string (profile, TERMINAL_PROFILE_BACKGROUND_IMAGE_FILE)); if (pixbuf != NULL) { gtk_image_set_from_pixbuf (GTK_IMAGE (image_preview), pixbuf); g_object_unref (pixbuf); } else { gtk_image_set_from_stock (GTK_IMAGE (image_preview), "gtk-dialog-question", GTK_ICON_SIZE_DIALOG); } gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (filechooser), image_preview); gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (filechooser), FALSE); gtk_widget_set_size_request (image_preview, 128, -1); gtk_widget_show (image_preview); g_signal_connect (filechooser, "update-preview", G_CALLBACK (update_image_preview), NULL); #endif }
static void add_button_clicked (GtkButton *button, CcBackgroundPanel *panel) { GtkWidget *chooser; const gchar *folder; GtkWidget *preview; GtkFileFilter *filter; CcBackgroundPanelPrivate *priv; priv = panel->priv; filter = gtk_file_filter_new (); gtk_file_filter_add_mime_type (filter, "image/*"); chooser = gtk_file_chooser_dialog_new (_("Browse for more pictures"), GTK_WINDOW (gtk_widget_get_toplevel (WID ("background-panel"))), GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (chooser), filter); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser), TRUE); gtk_window_set_modal (GTK_WINDOW (chooser), TRUE); preview = gtk_image_new (); gtk_widget_set_size_request (preview, 128, -1); gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (chooser), preview); gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (chooser), FALSE); gtk_widget_show (preview); g_signal_connect (chooser, "update-preview", G_CALLBACK (update_chooser_preview), panel); folder = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (folder) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), folder); g_signal_connect (chooser, "response", G_CALLBACK (file_chooser_response), panel); gtk_window_present (GTK_WINDOW (chooser)); }
/** * exo_gtk_file_chooser_add_thumbnail_preview: * @chooser : a #GtkFileChooser. * * This is a convenience function that adds a preview widget to the @chooser, * which displays thumbnails for the selected filenames using the thumbnail * database. The preview widget is also able to generate thumbnails for all * image formats supported by #GdkPixbuf. * * Use this function whenever you display a #GtkFileChooser to ask the user * to select an image file from the file system. * * The preview widget also supports URIs other than file:-URIs to a certain * degree, but this support is rather limited currently, so you may want to * use gtk_file_chooser_set_local_only() to ensure that the user can only * select files from the local file system. * * When @chooser is configured to select multiple image files - using the * gtk_file_chooser_set_select_multiple() method - the behaviour of the * preview widget is currently undefined, in that it is not defined for * which of the selected files the preview will be displayed. * * Since: 0.3.1.9 **/ void exo_gtk_file_chooser_add_thumbnail_preview (GtkFileChooser *chooser) { GtkWidget *thumbnail_preview; g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); /* add the preview to the file chooser */ thumbnail_preview = _exo_thumbnail_preview_new (); gtk_file_chooser_set_preview_widget (chooser, thumbnail_preview); gtk_file_chooser_set_preview_widget_active (chooser, TRUE); gtk_file_chooser_set_use_preview_label (chooser, FALSE); gtk_widget_show (thumbnail_preview); /* update the preview as necessary */ g_signal_connect (G_OBJECT (chooser), "update-preview", G_CALLBACK (update_preview), thumbnail_preview); /* initially update the preview, in case the file chooser is already setup */ update_preview (chooser, EXO_THUMBNAIL_PREVIEW (thumbnail_preview)); }
static void avatar_chooser_clicked_cb (GtkWidget *button, EmpathyAvatarChooser *chooser) { GtkFileChooser *chooser_dialog; GtkWidget *image; gchar *saved_dir = NULL; const gchar *default_dir = DEFAULT_DIR; const gchar *pics_dir; GtkFileFilter *filter; EmpathyAvatarChooserPriv *priv = GET_PRIV (chooser); if (priv->chooser_dialog) { gtk_window_present (GTK_WINDOW (priv->chooser_dialog)); return; } priv->chooser_dialog = GTK_FILE_CHOOSER ( gtk_file_chooser_dialog_new (_("Select Your Avatar Image"), empathy_get_toplevel_window (GTK_WIDGET (chooser)), GTK_FILE_CHOOSER_ACTION_OPEN, _("No Image"), GTK_RESPONSE_NO, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL)); chooser_dialog = priv->chooser_dialog; gtk_window_set_destroy_with_parent (GTK_WINDOW (chooser_dialog), TRUE); /* Get special dirs */ empathy_conf_get_string (empathy_conf_get (), EMPATHY_PREFS_UI_AVATAR_DIRECTORY, &saved_dir); if (saved_dir && !g_file_test (saved_dir, G_FILE_TEST_IS_DIR)) { g_free (saved_dir); saved_dir = NULL; } if (!g_file_test (default_dir, G_FILE_TEST_IS_DIR)) { default_dir = NULL; } pics_dir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (pics_dir && !g_file_test (pics_dir, G_FILE_TEST_IS_DIR)) { pics_dir = NULL; } /* Set current dir to the last one or to DEFAULT_DIR or to home */ if (saved_dir) { gtk_file_chooser_set_current_folder (chooser_dialog, saved_dir); } else if (pics_dir) { gtk_file_chooser_set_current_folder (chooser_dialog, pics_dir); } else if (default_dir) { gtk_file_chooser_set_current_folder (chooser_dialog, default_dir); } else { gtk_file_chooser_set_current_folder (chooser_dialog, g_get_home_dir ()); } /* Add shortcuts to special dirs */ if (saved_dir) { gtk_file_chooser_add_shortcut_folder (chooser_dialog, saved_dir, NULL); } else if (pics_dir) { gtk_file_chooser_add_shortcut_folder (chooser_dialog, pics_dir, NULL); } if (default_dir) { gtk_file_chooser_add_shortcut_folder (chooser_dialog, default_dir, NULL); } /* Setup preview image */ image = gtk_image_new (); gtk_file_chooser_set_preview_widget (chooser_dialog, image); gtk_widget_set_size_request (image, AVATAR_SIZE_SAVE, AVATAR_SIZE_SAVE); gtk_widget_show (image); gtk_file_chooser_set_use_preview_label (chooser_dialog, FALSE); g_signal_connect (chooser_dialog, "update-preview", G_CALLBACK (avatar_chooser_update_preview_cb), chooser); /* Setup filers */ filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("Images")); gtk_file_filter_add_pixbuf_formats (filter); gtk_file_chooser_add_filter (chooser_dialog, filter); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Files")); gtk_file_filter_add_pattern (filter, "*"); gtk_file_chooser_add_filter (chooser_dialog, filter); /* Setup response */ gtk_dialog_set_default_response (GTK_DIALOG (chooser_dialog), GTK_RESPONSE_OK); g_signal_connect (chooser_dialog, "response", G_CALLBACK (avatar_chooser_response_cb), chooser); gtk_widget_show (GTK_WIDGET (chooser_dialog)); g_free (saved_dir); }
static void gwy_app_file_chooser_add_preview(GwyAppFileChooser *chooser) { GwyContainer *settings; GtkListStore *store; GtkIconView *preview; GtkCellLayout *layout; GtkCellRenderer *renderer; GtkTooltips *tips; GtkWidget *scwin, *vbox, *button, *toolbar; gboolean setting; gint w; scwin = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scwin), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); store = gtk_list_store_new(2, G_TYPE_STRING, GDK_TYPE_PIXBUF); chooser->preview = gtk_icon_view_new_with_model(GTK_TREE_MODEL(store)); g_object_unref(store); preview = GTK_ICON_VIEW(chooser->preview); layout = GTK_CELL_LAYOUT(preview); gtk_icon_view_set_columns(preview, 1); renderer = gtk_cell_renderer_pixbuf_new(); gtk_cell_layout_pack_start(layout, renderer, FALSE); gtk_cell_layout_add_attribute(layout, renderer, "pixbuf", COLUMN_PIXBUF); renderer = gtk_cell_renderer_text_new(); g_object_set(renderer, "wrap-mode", PANGO_WRAP_WORD_CHAR, "ellipsize", PANGO_ELLIPSIZE_END, "ellipsize-set", TRUE, NULL); gtk_cell_layout_pack_start(layout, renderer, FALSE); gtk_cell_layout_add_attribute(layout, renderer, "markup", COLUMN_FILEINFO); chooser->renderer_fileinfo = G_OBJECT(renderer); gtk_icon_view_set_selection_mode(preview, GTK_SELECTION_NONE); /* In Gtk+ 2.14 and older, things work. 2.16 adds some padding that * breaks everything. And this padding together with the usual margin * meaks too much white space so we have to get rid of the margin in 2.16+. */ if (gtk_major_version == 2 && gtk_minor_version <= 14) { gtk_icon_view_set_item_width(preview, TMS_NORMAL_THUMB_SIZE); w = TMS_NORMAL_THUMB_SIZE + 2*gtk_icon_view_get_margin(preview); } else { gtk_icon_view_set_margin(preview, 0); gtk_icon_view_set_item_width(preview, PADDED_THUMBNAIL_SIZE); w = PADDED_THUMBNAIL_SIZE; } gtk_widget_set_size_request(chooser->preview, w, -1); gtk_container_add(GTK_CONTAINER(scwin), chooser->preview); vbox = gtk_vbox_new(FALSE, 2); chooser->preview_filename = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(chooser->preview_filename), 0.0, 0.5); gtk_label_set_single_line_mode(GTK_LABEL(chooser->preview_filename), TRUE); gtk_label_set_ellipsize(GTK_LABEL(chooser->preview_filename), PANGO_ELLIPSIZE_END); gtk_box_pack_start(GTK_BOX(vbox), chooser->preview_filename, FALSE, FALSE, 0); chooser->preview_type = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(chooser->preview_type), 0.0, 0.5); gtk_label_set_single_line_mode(GTK_LABEL(chooser->preview_type), TRUE); gtk_label_set_ellipsize(GTK_LABEL(chooser->preview_type), PANGO_ELLIPSIZE_END); gtk_box_pack_start(GTK_BOX(vbox), chooser->preview_type, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), scwin, TRUE, TRUE, 0); toolbar = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); settings = gwy_app_settings_get(); tips = gwy_app_get_tooltips(); setting = FALSE; gwy_container_gis_boolean_by_name(settings, "/app/file/preview/plane-level", &setting); button = gtk_toggle_button_new(); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), setting); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); gtk_tooltips_set_tip(tips, button, _("Plane-level previewed data"), NULL); gtk_container_add(GTK_CONTAINER(button), gtk_image_new_from_stock(GWY_STOCK_LEVEL, GTK_ICON_SIZE_SMALL_TOOLBAR)); gtk_box_pack_start(GTK_BOX(toolbar), button, FALSE, FALSE, 0); g_signal_connect_swapped(button, "toggled", G_CALLBACK(plane_level_changed), chooser); setting = FALSE; gwy_container_gis_boolean_by_name(settings, "/app/file/preview/row-level", &setting); button = gtk_toggle_button_new(); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), setting); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); gtk_tooltips_set_tip(tips, button, _("Row-level previewed data"), NULL); gtk_container_add(GTK_CONTAINER(button), gtk_image_new_from_stock(GWY_STOCK_LINE_LEVEL, GTK_ICON_SIZE_SMALL_TOOLBAR)); gtk_box_pack_start(GTK_BOX(toolbar), button, FALSE, FALSE, 0); g_signal_connect_swapped(button, "toggled", G_CALLBACK(row_level_changed), chooser); gtk_widget_show_all(vbox); gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(chooser), vbox); gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(chooser), FALSE); g_signal_connect(chooser, "update-preview", G_CALLBACK(gwy_app_file_chooser_update_preview), NULL); toolbar = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); }
GtkFileChooser * ephy_create_file_chooser (const char *title, GtkWidget *parent, GtkFileChooserAction action, EphyFileFilterDefault default_filter) { GtkFileChooser *dialog; GtkFileFilter *filter[EPHY_FILE_FILTER_LAST]; g_autofree char *downloads_dir = NULL; GtkWidget *preview = gtk_image_new (); g_assert (GTK_IS_WINDOW (parent)); g_assert (default_filter >= 0 && default_filter <= EPHY_FILE_FILTER_LAST); dialog = GTK_FILE_CHOOSER (gtk_file_chooser_native_new (title, GTK_WINDOW (parent), action, NULL, _("_Cancel"))); gtk_native_dialog_set_modal (GTK_NATIVE_DIALOG (dialog), TRUE); downloads_dir = ephy_file_get_downloads_dir (); gtk_file_chooser_add_shortcut_folder (dialog, downloads_dir, NULL); if (action == GTK_FILE_CHOOSER_ACTION_OPEN || action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER || action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER) { gtk_file_chooser_native_set_accept_label (GTK_FILE_CHOOSER_NATIVE (dialog), _("_Open")); } else if (action == GTK_FILE_CHOOSER_ACTION_SAVE) { gtk_file_chooser_native_set_accept_label (GTK_FILE_CHOOSER_NATIVE (dialog), _("_Save")); } gtk_file_chooser_set_preview_widget (dialog, preview); gtk_file_chooser_set_use_preview_label (dialog, FALSE); g_signal_connect (dialog, "update-preview", G_CALLBACK (update_preview_cb), preview); if (default_filter != EPHY_FILE_FILTER_NONE) { filter[EPHY_FILE_FILTER_ALL_SUPPORTED] = ephy_file_chooser_add_mime_filter (dialog, _("All supported types"), "text/html", "application/xhtml+xml", "text/xml", "message/rfc822", /* MHTML */ "multipart/related", /* MHTML */ "application/x-mimearchive", /* MHTML */ "image/png", "image/jpeg", "image/gif", "image/webp", NULL); filter[EPHY_FILE_FILTER_WEBPAGES] = ephy_file_chooser_add_mime_filter (dialog, _("Web pages"), "text/html", "application/xhtml+xml", "text/xml", "message/rfc822", /* MHTML */ "multipart/related", /* MHTML */ "application/x-mimearchive", /* MHTML */ NULL); filter[EPHY_FILE_FILTER_IMAGES] = ephy_file_chooser_add_mime_filter (dialog, _("Images"), "image/png", "image/jpeg", "image/gif", "image/webp", NULL); filter[EPHY_FILE_FILTER_ALL] = ephy_file_chooser_add_pattern_filter (dialog, _("All files"), "*", NULL); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (dialog), filter[default_filter]); } return dialog; }
/* This creates all the GTK+ widgets that compose our application, and registers the callbacks */ static GtkWidget* create_player_ui (CustomData *data, guint decknumber) { GtkWidget *stop_button; /* Buttons */ GtkWidget *title; GtkWidget *myGrid; myGrid = gtk_grid_new(); data->playPauseButton = _create_media_button (GTK_STOCK_MEDIA_PAUSE); g_signal_connect (G_OBJECT (data->playPauseButton), "clicked", G_CALLBACK (playpause_cb), data); stop_button = _create_media_button (GTK_STOCK_MEDIA_STOP); g_signal_connect (G_OBJECT (stop_button), "clicked", G_CALLBACK (stop_cb), data); data->slider = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1); gtk_scale_set_draw_value (GTK_SCALE (data->slider), 0); data->slider_update_signal_id = g_signal_connect (G_OBJECT (data->slider), "value-changed", G_CALLBACK (slider_cb), data); g_signal_connect (G_OBJECT (data->slider), "move-slider", G_CALLBACK (slider_cb), data); data->timelabel = gtk_label_new (""); update_timelabel(data, "Time remaining"); data->taglabel = gtk_label_new ("Selected filename"); { data->filechooser = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_OPEN); gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (data->filechooser), TRUE); gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (data->filechooser), FALSE); gtk_file_chooser_set_use_preview_label (GTK_FILE_CHOOSER (data->filechooser), FALSE); if (NULL != data->last_folder_uri) { gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (data->filechooser), data->last_folder_uri); } else { gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (data->filechooser), g_get_home_dir()); } GtkFileFilter *filter = gtk_file_filter_new(); gtk_file_filter_add_mime_type (filter, "audio/*"); gtk_file_chooser_set_filter (GTK_FILE_CHOOSER (data->filechooser), filter); data->file_selection_signal_id = g_signal_connect (G_OBJECT (data->filechooser), "selection-changed", G_CALLBACK (file_selection_cb), data); /* block signal to prevent false selection on startup*/ g_signal_handler_block (data->filechooser, data->file_selection_signal_id); } { gchar *titlename = g_strdup_printf ("Deck %u\n", decknumber + 1); title = gtk_label_new (titlename); g_free (titlename); } /* arrange all elements into myGrid */ gtk_grid_attach (GTK_GRID (myGrid), data->filechooser, 0, 0, 1, 3); gtk_grid_attach_next_to (GTK_GRID (myGrid), title, data->filechooser, GTK_POS_TOP, 1, 3); gtk_grid_attach_next_to (GTK_GRID (myGrid), data->playPauseButton, data->filechooser, GTK_POS_RIGHT, 1, 1); gtk_grid_attach_next_to (GTK_GRID (myGrid), stop_button, data->playPauseButton, GTK_POS_BOTTOM, 1, 1); gtk_grid_attach_next_to (GTK_GRID (myGrid), data->taglabel, data->filechooser, GTK_POS_BOTTOM, 2, 1); gtk_grid_attach_next_to (GTK_GRID (myGrid), data->timelabel, data->taglabel, GTK_POS_BOTTOM, 2, 1); gtk_grid_attach_next_to (GTK_GRID (myGrid), data->slider, data->timelabel, GTK_POS_BOTTOM, 2, 1); /* allow at least one expanding child, so all uppper widgets will resize * when maximising the window */ gtk_widget_set_hexpand (data->filechooser, TRUE); gtk_widget_set_vexpand (data->filechooser, TRUE); gtk_label_set_line_wrap(GTK_LABEL (data->taglabel), TRUE); return myGrid; }
void get_folder_to_play(GtkWidget *widget, gpointer user_data) { /** User folder selection. **/ #ifdef DEBUG DEBUG_FUNC_MARK #endif GtkWidget *folder_chooser_dialog = gtk_file_chooser_dialog_new("Choose a folder contains music files to listen.", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, "Cancel", GTK_RESPONSE_CANCEL, "Open", GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(folder_chooser_dialog), current_folder.c_str() ) ; gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(folder_chooser_dialog), FALSE) ; gtk_file_chooser_set_create_folders(GTK_FILE_CHOOSER(folder_chooser_dialog), FALSE) ; gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(folder_chooser_dialog), TRUE) ; gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(folder_chooser_dialog), TRUE) ; gtk_window_set_position(GTK_WINDOW(folder_chooser_dialog), GTK_WIN_POS_CENTER_ALWAYS) ; gtk_widget_set_size_request(folder_chooser_dialog,-1,-1) ; gtk_window_set_modal(GTK_WINDOW(folder_chooser_dialog), TRUE) ; gtk_window_set_destroy_with_parent(GTK_WINDOW(folder_chooser_dialog), TRUE) ; gtk_window_set_type_hint(GTK_WINDOW(folder_chooser_dialog), GDK_WINDOW_TYPE_HINT_DIALOG) ; gtk_window_set_transient_for(GTK_WINDOW(folder_chooser_dialog), GTK_WINDOW(gui->window)) ; gchar *folderpath = NULL ; // Selected folder. gint result = gtk_dialog_run (GTK_DIALOG (folder_chooser_dialog)); switch (result) { case GTK_RESPONSE_CANCEL : if (! is_playing) { gtk_button_set_label(GTK_BUTTON(gui->folder_chooser_button), "Select a folder to play content") ; } gtk_widget_destroy(folder_chooser_dialog); return ; case GTK_RESPONSE_ACCEPT : folderpath = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(folder_chooser_dialog)); gtk_widget_destroy(folder_chooser_dialog); break ; } parse_folder(folderpath) ; gchar *dirname = g_path_get_dirname(folderpath) ; current_folder = dirname ; g_free(dirname) ; #ifdef DEBUG fprintf(stdout,"%s current_folder: %s\n", __func__, current_folder.c_str() ) ; #endif g_free(folderpath) ; }