From: Matthias Clasen Date: Sat, 29 Oct 2022 15:31:35 +0000 (-0400) Subject: Deprecate GtkFileChooser and implementations X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~132^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f54ab91ff3f25d4e5370810f78c18115d310281c;p=gtk4.git Deprecate GtkFileChooser and implementations These are being replaced by GtkFileDialog. This commit only moves the headers for GtkFileChooserWidget and GtkFileChooserDialog to deprecated/, and keeps the implementations in gtk/, since they will eventually be salvaged into a private GtkFileChooserWindow. --- diff --git a/gtk/deprecated/gtkfilechooser.c b/gtk/deprecated/gtkfilechooser.c new file mode 100644 index 0000000000..a6a92f702b --- /dev/null +++ b/gtk/deprecated/gtkfilechooser.c @@ -0,0 +1,845 @@ +/* GTK - The GIMP Toolkit + * gtkfilechooser.c: Abstract interface for file selector GUIs + * Copyright (C) 2003, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#include "config.h" +#include "gtkfilechooser.h" +#include "gtkfilechooserprivate.h" +#include "gtktypebuiltins.h" +#include "gtkprivate.h" +#include "gtkmarshalers.h" + + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + +/** + * GtkFileChooser: + * + * `GtkFileChooser` is an interface that can be implemented by file + * selection widgets. + * + * In GTK, the main objects that implement this interface are + * [class@Gtk.FileChooserWidget] and [class@Gtk.FileChooserDialog]. + * + * You do not need to write an object that implements the `GtkFileChooser` + * interface unless you are trying to adapt an existing file selector to + * expose a standard programming interface. + * + * `GtkFileChooser` allows for shortcuts to various places in the filesystem. + * In the default implementation these are displayed in the left pane. It + * may be a bit confusing at first that these shortcuts come from various + * sources and in various flavours, so lets explain the terminology here: + * + * - Bookmarks: are created by the user, by dragging folders from the + * right pane to the left pane, or by using the “Add”. Bookmarks + * can be renamed and deleted by the user. + * + * - Shortcuts: can be provided by the application. For example, a Paint + * program may want to add a shortcut for a Clipart folder. Shortcuts + * cannot be modified by the user. + * + * - Volumes: are provided by the underlying filesystem abstraction. They are + * the “roots” of the filesystem. + * + * # File Names and Encodings + * + * When the user is finished selecting files in a `GtkFileChooser`, your + * program can get the selected filenames as `GFile`s. + * + * # Adding options + * + * You can add extra widgets to a file chooser to provide options + * that are not present in the default design, by using + * [method@Gtk.FileChooser.add_choice]. Each choice has an identifier and + * a user visible label; additionally, each choice can have multiple + * options. If a choice has no option, it will be rendered as a + * check button with the given label; if a choice has options, it will + * be rendered as a combo box. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ + + +typedef GtkFileChooserIface GtkFileChooserInterface; +G_DEFINE_INTERFACE (GtkFileChooser, gtk_file_chooser, G_TYPE_OBJECT); + +static void +gtk_file_chooser_default_init (GtkFileChooserInterface *iface) +{ + /** + * GtkFileChooser:action: (attributes org.gtk.Property.get=gtk_file_chooser_get_action org.gtk.Property.set=gtk_file_chooser_set_action) + * + * The type of operation that the file chooser is performing. + */ + g_object_interface_install_property (iface, + g_param_spec_enum ("action", NULL, NULL, + GTK_TYPE_FILE_CHOOSER_ACTION, + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_PARAM_READWRITE)); + + + /** + * GtkFileChooser:filter: (attributes org.gtk.Property.get=gtk_file_chooser_get_filter org.gtk.Property.set=gtk_file_chooser_set_filter) + * + * The current filter for selecting files that are displayed. + */ + g_object_interface_install_property (iface, + g_param_spec_object ("filter", NULL, NULL, + GTK_TYPE_FILE_FILTER, + GTK_PARAM_READWRITE)); + + /** + * GtkFileChooser:select-multiple: (attributes org.gtk.Property.get=gtk_file_chooser_get_select_multiple org.gtk.Property.set=gtk_file_chooser_set_select_multiple) + * + * Whether to allow multiple files to be selected. + */ + g_object_interface_install_property (iface, + g_param_spec_boolean ("select-multiple", NULL, NULL, + FALSE, + GTK_PARAM_READWRITE)); + + /** + * GtkFileChooser:filters: (attributes org.gtk.Property.get=gtk_file_chooser_get_filters) + * + * A `GListModel` containing the filters that have been + * added with gtk_file_chooser_add_filter(). + * + * The returned object should not be modified. It may + * or may not be updated for later changes. + */ + g_object_interface_install_property (iface, + g_param_spec_object ("filters", NULL, NULL, + G_TYPE_LIST_MODEL, + GTK_PARAM_READABLE)); + + /** + * GtkFileChooser:shortcut-folders: (attributes org.gtk.Property.get=gtk_file_chooser_get_shortcut_folders) + * + * A `GListModel` containing the shortcut folders that have been + * added with gtk_file_chooser_add_shortcut_folder(). + * + * The returned object should not be modified. It may + * or may not be updated for later changes. + */ + g_object_interface_install_property (iface, + g_param_spec_object ("shortcut-folders", NULL, NULL, + G_TYPE_LIST_MODEL, + GTK_PARAM_READABLE)); + + /** + * GtkFileChooser:create-folders: (attributes org.gtk.Property.get=gtk_file_chooser_get_create_folders org.gtk.Property.set=gtk_file_chooser_set_create_folders) + * + * Whether a file chooser not in %GTK_FILE_CHOOSER_ACTION_OPEN mode + * will offer the user to create new folders. + */ + g_object_interface_install_property (iface, + g_param_spec_boolean ("create-folders", NULL, NULL, + TRUE, + GTK_PARAM_READWRITE)); +} + +/** + * gtk_file_chooser_error_quark: + * + * Registers an error quark for `GtkFileChooser` errors. + * + * Returns: The error quark used for `GtkFileChooser` errors. + **/ +GQuark +gtk_file_chooser_error_quark (void) +{ + return g_quark_from_static_string ("gtk-file-chooser-error-quark"); +} + +/** + * gtk_file_chooser_set_action: (attributes org.gtk.Method.set_property=action) + * @chooser: a `GtkFileChooser` + * @action: the action that the file selector is performing + * + * Sets the type of operation that the chooser is performing. + * + * The user interface is adapted to suit the selected action. + * + * For example, an option to create a new folder might be shown + * if the action is %GTK_FILE_CHOOSER_ACTION_SAVE but not if the + * action is %GTK_FILE_CHOOSER_ACTION_OPEN. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + **/ +void +gtk_file_chooser_set_action (GtkFileChooser *chooser, + GtkFileChooserAction action) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + + g_object_set (chooser, "action", action, NULL); +} + +/** + * gtk_file_chooser_get_action: (attributes org.gtk.Method.get_property=action) + * @chooser: a `GtkFileChooser` + * + * Gets the type of operation that the file chooser is performing. + * + * Returns: the action that the file selector is performing + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +GtkFileChooserAction +gtk_file_chooser_get_action (GtkFileChooser *chooser) +{ + GtkFileChooserAction action; + + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + + g_object_get (chooser, "action", &action, NULL); + + return action; +} + +/** + * gtk_file_chooser_set_select_multiple: (attributes org.gtk.Method.set_property=select-multiple) + * @chooser: a `GtkFileChooser` + * @select_multiple: %TRUE if multiple files can be selected. + * + * Sets whether multiple files can be selected in the file chooser. + * + * This is only relevant if the action is set to be + * %GTK_FILE_CHOOSER_ACTION_OPEN or + * %GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +void +gtk_file_chooser_set_select_multiple (GtkFileChooser *chooser, + gboolean select_multiple) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + + g_object_set (chooser, "select-multiple", select_multiple, NULL); +} + +/** + * gtk_file_chooser_get_select_multiple: (attributes org.gtk.Method.get_property=select-multiple) + * @chooser: a `GtkFileChooser` + * + * Gets whether multiple files can be selected in the file + * chooser. + * + * Returns: %TRUE if multiple files can be selected. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +gboolean +gtk_file_chooser_get_select_multiple (GtkFileChooser *chooser) +{ + gboolean select_multiple; + + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + + g_object_get (chooser, "select-multiple", &select_multiple, NULL); + + return select_multiple; +} + +/** + * gtk_file_chooser_set_create_folders: (attributes org.gtk.Method.set_property=create-folders) + * @chooser: a `GtkFileChooser` + * @create_folders: %TRUE if the Create Folder button should be displayed + * + * Sets whether file chooser will offer to create new folders. + * + * This is only relevant if the action is not set to be + * %GTK_FILE_CHOOSER_ACTION_OPEN. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +void +gtk_file_chooser_set_create_folders (GtkFileChooser *chooser, + gboolean create_folders) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + + g_object_set (chooser, "create-folders", create_folders, NULL); +} + +/** + * gtk_file_chooser_get_create_folders: (attributes org.gtk.Method.get_property=create-folders) + * @chooser: a `GtkFileChooser` + * + * Gets whether file chooser will offer to create new folders. + * + * Returns: %TRUE if the Create Folder button should be displayed. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +gboolean +gtk_file_chooser_get_create_folders (GtkFileChooser *chooser) +{ + gboolean create_folders; + + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + + g_object_get (chooser, "create-folders", &create_folders, NULL); + + return create_folders; +} + +/** + * gtk_file_chooser_set_current_name: + * @chooser: a `GtkFileChooser` + * @name: (type utf8): the filename to use, as a UTF-8 string + * + * Sets the current name in the file selector, as if entered + * by the user. + * + * Note that the name passed in here is a UTF-8 string rather + * than a filename. This function is meant for such uses as a + * suggested name in a “Save As...” dialog. You can pass + * “Untitled.doc” or a similarly suitable suggestion for the @name. + * + * If you want to preselect a particular existing file, you should + * use [method@Gtk.FileChooser.set_file] instead. + * + * Please see the documentation for those functions for an example + * of using [method@Gtk.FileChooser.set_current_name] as well. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + **/ +void +gtk_file_chooser_set_current_name (GtkFileChooser *chooser, + const char *name) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + g_return_if_fail (name != NULL); + + GTK_FILE_CHOOSER_GET_IFACE (chooser)->set_current_name (chooser, name); +} + +/** + * gtk_file_chooser_get_current_name: + * @chooser: a `GtkFileChooser` + * + * Gets the current name in the file selector, as entered by the user. + * + * This is meant to be used in save dialogs, to get the currently typed + * filename when the file itself does not exist yet. + * + * Returns: (nullable): The raw text from the file chooser’s “Name” entry. Free with + * g_free(). Note that this string is not a full pathname or URI; it is + * whatever the contents of the entry are. Note also that this string is + * in UTF-8 encoding, which is not necessarily the system’s encoding for + * filenames. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +char * +gtk_file_chooser_get_current_name (GtkFileChooser *chooser) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_current_name (chooser); +} + +void +gtk_file_chooser_select_all (GtkFileChooser *chooser) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + + GTK_FILE_CHOOSER_GET_IFACE (chooser)->select_all (chooser); +} + +void +gtk_file_chooser_unselect_all (GtkFileChooser *chooser) +{ + + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + + GTK_FILE_CHOOSER_GET_IFACE (chooser)->unselect_all (chooser); +} + +/** + * gtk_file_chooser_set_current_folder: + * @chooser: a `GtkFileChooser` + * @file: (nullable): the `GFile` for the new folder + * @error: location to store error + * + * Sets the current folder for @chooser from a `GFile`. + * + * Returns: %TRUE if the folder could be changed successfully, %FALSE + * otherwise. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +gboolean +gtk_file_chooser_set_current_folder (GtkFileChooser *chooser, + GFile *file, + GError **error) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + g_return_val_if_fail (G_IS_FILE (file), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->set_current_folder (chooser, file, error); +} + +/** + * gtk_file_chooser_get_current_folder: + * @chooser: a `GtkFileChooser` + * + * Gets the current folder of @chooser as `GFile`. + * + * Returns: (transfer full) (nullable): the `GFile` for the current folder. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +GFile * +gtk_file_chooser_get_current_folder (GtkFileChooser *chooser) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_current_folder (chooser); +} + +gboolean +gtk_file_chooser_select_file (GtkFileChooser *chooser, + GFile *file, + GError **error) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + g_return_val_if_fail (G_IS_FILE (file), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->select_file (chooser, file, error); +} + +void +gtk_file_chooser_unselect_file (GtkFileChooser *chooser, + GFile *file) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + g_return_if_fail (G_IS_FILE (file)); + + GTK_FILE_CHOOSER_GET_IFACE (chooser)->unselect_file (chooser, file); +} + +/** + * gtk_file_chooser_get_files: + * @chooser: a `GtkFileChooser` + * + * Lists all the selected files and subfolders in the current folder + * of @chooser as `GFile`. + * + * Returns: (transfer full): a list model containing a `GFile` for each + * selected file and subfolder in the current folder. Free the returned + * list with g_object_unref(). + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +GListModel * +gtk_file_chooser_get_files (GtkFileChooser *chooser) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_files (chooser); +} + +/** + * gtk_file_chooser_set_file: + * @chooser: a `GtkFileChooser` + * @file: the `GFile` to set as current + * @error: (nullable): location to store the error + * + * Sets @file as the current filename for the file chooser. + * + * This includes changing to the file’s parent folder and actually selecting + * the file in list. If the @chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode, + * the file’s base name will also appear in the dialog’s file name entry. + * + * If the file name isn’t in the current folder of @chooser, then the current + * folder of @chooser will be changed to the folder containing @file. + * + * Note that the file must exist, or nothing will be done except + * for the directory change. + * + * If you are implementing a save dialog, you should use this function if + * you already have a file name to which the user may save; for example, + * when the user opens an existing file and then does “Save As…”. If you + * don’t have a file name already — for example, if the user just created + * a new file and is saving it for the first time, do not call this function. + * + * Instead, use something similar to this: + * + * ```c + * static void + * prepare_file_chooser (GtkFileChooser *chooser, + * GFile *existing_file) + * { + * gboolean document_is_new = (existing_file == NULL); + * + * if (document_is_new) + * { + * GFile *default_file_for_saving = g_file_new_for_path ("./out.txt"); + * // the user just created a new document + * gtk_file_chooser_set_current_folder (chooser, default_file_for_saving, NULL); + * gtk_file_chooser_set_current_name (chooser, "Untitled document"); + * g_object_unref (default_file_for_saving); + * } + * else + * { + * // the user edited an existing document + * gtk_file_chooser_set_file (chooser, existing_file, NULL); + * } + * } + * ``` + * + * Returns: Not useful + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +gboolean +gtk_file_chooser_set_file (GtkFileChooser *chooser, + GFile *file, + GError **error) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + g_return_val_if_fail (G_IS_FILE (file), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + gtk_file_chooser_unselect_all (chooser); + return gtk_file_chooser_select_file (chooser, file, error); +} + +/** + * gtk_file_chooser_get_file: + * @chooser: a `GtkFileChooser` + * + * Gets the `GFile` for the currently selected file in + * the file selector. + * + * If multiple files are selected, one of the files will be + * returned at random. + * + * If the file chooser is in folder mode, this function returns + * the selected folder. + * + * Returns: (transfer full) (nullable): a selected `GFile`. You own the + * returned file; use g_object_unref() to release it. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +GFile * +gtk_file_chooser_get_file (GtkFileChooser *chooser) +{ + GListModel *list; + GFile *result = NULL; + + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); + + list = gtk_file_chooser_get_files (chooser); + if (g_list_model_get_n_items (list) > 0) + result = g_list_model_get_item (list, 0); + g_object_unref (list); + + return result; +} + +/** + * gtk_file_chooser_add_shortcut_folder: + * @chooser: a `GtkFileChooser` + * @folder: a `GFile` for the folder to add + * @error: location to store error + * + * Adds a folder to be displayed with the shortcut folders + * in a file chooser. + * + * Returns: %TRUE if the folder could be added successfully, + * %FALSE otherwise. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +gboolean +gtk_file_chooser_add_shortcut_folder (GtkFileChooser *chooser, + GFile *folder, + GError **error) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + g_return_val_if_fail (G_IS_FILE (folder), FALSE); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->add_shortcut_folder (chooser, folder, error); +} + +/** + * gtk_file_chooser_remove_shortcut_folder: + * @chooser: a `GtkFileChooser` + * @folder: a `GFile` for the folder to remove + * @error: location to store error + * + * Removes a folder from the shortcut folders in a file chooser. + * + * Returns: %TRUE if the folder could be removed successfully, + * %FALSE otherwise. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +gboolean +gtk_file_chooser_remove_shortcut_folder (GtkFileChooser *chooser, + GFile *folder, + GError **error) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); + g_return_val_if_fail (G_IS_FILE (folder), FALSE); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->remove_shortcut_folder (chooser, folder, error); +} + +/** + * gtk_file_chooser_add_filter: + * @chooser: a `GtkFileChooser` + * @filter: (transfer none): a `GtkFileFilter` + * + * Adds @filter to the list of filters that the user can select between. + * + * When a filter is selected, only files that are passed by that + * filter are displayed. + * + * Note that the @chooser takes ownership of the filter if it is floating, + * so you have to ref and sink it if you want to keep a reference. + */ +void +gtk_file_chooser_add_filter (GtkFileChooser *chooser, + GtkFileFilter *filter) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + + GTK_FILE_CHOOSER_GET_IFACE (chooser)->add_filter (chooser, filter); +} + +/** + * gtk_file_chooser_remove_filter: + * @chooser: a `GtkFileChooser` + * @filter: a `GtkFileFilter` + * + * Removes @filter from the list of filters that the user can select between. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +void +gtk_file_chooser_remove_filter (GtkFileChooser *chooser, + GtkFileFilter *filter) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + + GTK_FILE_CHOOSER_GET_IFACE (chooser)->remove_filter (chooser, filter); +} + +/** + * gtk_file_chooser_get_filters: (attributes org.gtk.Method.get_property=filters) + * @chooser: a `GtkFileChooser` + * + * Gets the current set of user-selectable filters, as a list model. + * + * See [method@Gtk.FileChooser.add_filter] and + * [method@Gtk.FileChooser.remove_filter] for changing individual filters. + * + * You should not modify the returned list model. Future changes to + * @chooser may or may not affect the returned model. + * + * Returns: (transfer full): a `GListModel` containing the current set + * of user-selectable filters. + */ +GListModel * +gtk_file_chooser_get_filters (GtkFileChooser *chooser) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_filters (chooser); +} + +/** + * gtk_file_chooser_set_filter: (attributes org.gtk.Method.set_property=filter) + * @chooser: a `GtkFileChooser` + * @filter: a `GtkFileFilter` + * + * Sets the current filter. + * + * Only the files that pass the filter will be displayed. + * If the user-selectable list of filters is non-empty, then + * the filter should be one of the filters in that list. + * + * Setting the current filter when the list of filters is + * empty is useful if you want to restrict the displayed + * set of files without letting the user change it. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +void +gtk_file_chooser_set_filter (GtkFileChooser *chooser, + GtkFileFilter *filter) +{ + g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); + g_return_if_fail (GTK_IS_FILE_FILTER (filter)); + + g_object_set (chooser, "filter", filter, NULL); +} + +/** + * gtk_file_chooser_get_filter: (attributes org.gtk.Method.get_property=filter) + * @chooser: a `GtkFileChooser` + * + * Gets the current filter. + * + * Returns: (nullable) (transfer none): the current filter + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +GtkFileFilter * +gtk_file_chooser_get_filter (GtkFileChooser *chooser) +{ + GtkFileFilter *filter; + + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); + + g_object_get (chooser, "filter", &filter, NULL); + /* Horrid hack; g_object_get() refs returned objects but + * that contradicts the memory management conventions + * for accessors. + */ + if (filter) + g_object_unref (filter); + + return filter; +} + +/** + * gtk_file_chooser_get_shortcut_folders: (attributes org.gtk.Method.get_property=shortcut-folders) + * @chooser: a `GtkFileChooser` + * + * Queries the list of shortcut folders in the file chooser. + * + * You should not modify the returned list model. Future changes to + * @chooser may or may not affect the returned model. + * + * Returns: (transfer full): A list model of `GFile`s + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +GListModel * +gtk_file_chooser_get_shortcut_folders (GtkFileChooser *chooser) +{ + g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); + + return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_shortcut_folders (chooser); +} + +/** + * gtk_file_chooser_add_choice: + * @chooser: a `GtkFileChooser` + * @id: id for the added choice + * @label: user-visible label for the added choice + * @options: (nullable) (array zero-terminated=1): ids for the options of the choice, or %NULL for a boolean choice + * @option_labels: (nullable) (array zero-terminated=1): user-visible labels for the options, must be the same length as @options + * + * Adds a 'choice' to the file chooser. + * + * This is typically implemented as a combobox or, for boolean choices, + * as a checkbutton. You can select a value using + * [method@Gtk.FileChooser.set_choice] before the dialog is shown, + * and you can obtain the user-selected value in the + * [signal@Gtk.Dialog::response] signal handler using + * [method@Gtk.FileChooser.get_choice]. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +void +gtk_file_chooser_add_choice (GtkFileChooser *chooser, + const char *id, + const char *label, + const char **options, + const char **option_labels) +{ + GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); + + if (iface->add_choice) + iface->add_choice (chooser, id, label, options, option_labels); +} + +/** + * gtk_file_chooser_remove_choice: + * @chooser: a `GtkFileChooser` + * @id: the ID of the choice to remove + * + * Removes a 'choice' that has been added with gtk_file_chooser_add_choice(). + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +void +gtk_file_chooser_remove_choice (GtkFileChooser *chooser, + const char *id) +{ + GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); + + if (iface->remove_choice) + iface->remove_choice (chooser, id); +} + +/** + * gtk_file_chooser_set_choice: + * @chooser: a `GtkFileChooser` + * @id: the ID of the choice to set + * @option: the ID of the option to select + * + * Selects an option in a 'choice' that has been added with + * gtk_file_chooser_add_choice(). + * + * For a boolean choice, the possible options are "true" and "false". + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +void +gtk_file_chooser_set_choice (GtkFileChooser *chooser, + const char *id, + const char *option) +{ + GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); + + if (iface->set_choice) + iface->set_choice (chooser, id, option); +} + +/** + * gtk_file_chooser_get_choice: + * @chooser: a `GtkFileChooser` + * @id: the ID of the choice to get + * + * Gets the currently selected option in the 'choice' with the given ID. + * + * Returns: (nullable): the ID of the currently selected option + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead + */ +const char * +gtk_file_chooser_get_choice (GtkFileChooser *chooser, + const char *id) +{ + GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); + + if (iface->get_choice) + return iface->get_choice (chooser, id); + + return NULL; +} diff --git a/gtk/deprecated/gtkfilechooser.h b/gtk/deprecated/gtkfilechooser.h new file mode 100644 index 0000000000..a21c82c86f --- /dev/null +++ b/gtk/deprecated/gtkfilechooser.h @@ -0,0 +1,188 @@ +/* GTK - The GIMP Toolkit + * gtkfilechooser.h: Abstract interface for file selector GUIs + * Copyright (C) 2003, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __GTK_FILE_CHOOSER_H__ +#define __GTK_FILE_CHOOSER_H__ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_FILE_CHOOSER (gtk_file_chooser_get_type ()) +#define GTK_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER, GtkFileChooser)) +#define GTK_IS_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER)) + +typedef struct _GtkFileChooser GtkFileChooser; + +/** + * GtkFileChooserAction: + * @GTK_FILE_CHOOSER_ACTION_OPEN: Indicates open mode. The file chooser + * will only let the user pick an existing file. + * @GTK_FILE_CHOOSER_ACTION_SAVE: Indicates save mode. The file chooser + * will let the user pick an existing file, or type in a new + * filename. + * @GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER: Indicates an Open mode for + * selecting folders. The file chooser will let the user pick an + * existing folder. + * + * Describes whether a `GtkFileChooser` is being used to open existing files + * or to save to a possibly new file. + */ +typedef enum +{ + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_FILE_CHOOSER_ACTION_SAVE, + GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER +} GtkFileChooserAction; + +GDK_AVAILABLE_IN_ALL +GType gtk_file_chooser_get_type (void) G_GNUC_CONST; + +/* GError enumeration for GtkFileChooser */ +/** + * GTK_FILE_CHOOSER_ERROR: + * + * Used to get the `GError` quark for `GtkFileChooser` errors. + */ +#define GTK_FILE_CHOOSER_ERROR (gtk_file_chooser_error_quark ()) + +/** + * GtkFileChooserError: + * @GTK_FILE_CHOOSER_ERROR_NONEXISTENT: Indicates that a file does not exist. + * @GTK_FILE_CHOOSER_ERROR_BAD_FILENAME: Indicates a malformed filename. + * @GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS: Indicates a duplicate path (e.g. when + * adding a bookmark). + * @GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME: Indicates an incomplete hostname + * (e.g. "http://foo" without a slash after that). + * + * These identify the various errors that can occur while calling + * `GtkFileChooser` functions. + */ +typedef enum { + GTK_FILE_CHOOSER_ERROR_NONEXISTENT, + GTK_FILE_CHOOSER_ERROR_BAD_FILENAME, + GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS, + GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME +} GtkFileChooserError; + +GDK_DEPRECATED_IN_4_10 +GQuark gtk_file_chooser_error_quark (void); + +/* Configuration */ + +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_set_action (GtkFileChooser *chooser, + GtkFileChooserAction action); +GDK_DEPRECATED_IN_4_10 +GtkFileChooserAction gtk_file_chooser_get_action (GtkFileChooser *chooser); +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_set_select_multiple (GtkFileChooser *chooser, + gboolean select_multiple); +GDK_DEPRECATED_IN_4_10 +gboolean gtk_file_chooser_get_select_multiple (GtkFileChooser *chooser); +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_set_create_folders (GtkFileChooser *chooser, + gboolean create_folders); +GDK_DEPRECATED_IN_4_10 +gboolean gtk_file_chooser_get_create_folders (GtkFileChooser *chooser); + +/* Suggested name for the Save-type actions */ + +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_set_current_name (GtkFileChooser *chooser, + const char *name); +GDK_DEPRECATED_IN_4_10 +char * gtk_file_chooser_get_current_name (GtkFileChooser *chooser); + +/* GFile manipulation */ + +GDK_DEPRECATED_IN_4_10 +GFile * gtk_file_chooser_get_file (GtkFileChooser *chooser); +GDK_DEPRECATED_IN_4_10 +gboolean gtk_file_chooser_set_file (GtkFileChooser *chooser, + GFile *file, + GError **error); +GDK_DEPRECATED_IN_4_10 +GListModel * gtk_file_chooser_get_files (GtkFileChooser *chooser); +GDK_DEPRECATED_IN_4_10 +gboolean gtk_file_chooser_set_current_folder (GtkFileChooser *chooser, + GFile *file, + GError **error); +GDK_DEPRECATED_IN_4_10 +GFile * gtk_file_chooser_get_current_folder (GtkFileChooser *chooser); + +/* List of user selectable filters */ + +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_add_filter (GtkFileChooser *chooser, + GtkFileFilter *filter); +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_remove_filter (GtkFileChooser *chooser, + GtkFileFilter *filter); +GDK_DEPRECATED_IN_4_10 +GListModel * gtk_file_chooser_get_filters (GtkFileChooser *chooser); + +/* Current filter */ + +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_set_filter (GtkFileChooser *chooser, + GtkFileFilter *filter); +GDK_DEPRECATED_IN_4_10 +GtkFileFilter * gtk_file_chooser_get_filter (GtkFileChooser *chooser); + +/* Per-application shortcut folders */ + +GDK_DEPRECATED_IN_4_10 +gboolean gtk_file_chooser_add_shortcut_folder (GtkFileChooser *chooser, + GFile *folder, + GError **error); +GDK_DEPRECATED_IN_4_10 +gboolean gtk_file_chooser_remove_shortcut_folder + (GtkFileChooser *chooser, + GFile *folder, + GError **error); +GDK_DEPRECATED_IN_4_10 +GListModel * gtk_file_chooser_get_shortcut_folders (GtkFileChooser *chooser); + +/* Custom widgets */ + +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_add_choice (GtkFileChooser *chooser, + const char *id, + const char *label, + const char **options, + const char **option_labels); +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_remove_choice (GtkFileChooser *chooser, + const char *id); +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_set_choice (GtkFileChooser *chooser, + const char *id, + const char *option); +GDK_DEPRECATED_IN_4_10 +const char * gtk_file_chooser_get_choice (GtkFileChooser *chooser, + const char *id); + +G_END_DECLS + +#endif /* __GTK_FILE_CHOOSER_H__ */ diff --git a/gtk/deprecated/gtkfilechooserdialog.h b/gtk/deprecated/gtkfilechooserdialog.h new file mode 100644 index 0000000000..40cab7da13 --- /dev/null +++ b/gtk/deprecated/gtkfilechooserdialog.h @@ -0,0 +1,50 @@ +/* GTK - The GIMP Toolkit + * gtkfilechooserdialog.h: File selector dialog + * Copyright (C) 2003, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __GTK_FILE_CHOOSER_DIALOG_H__ +#define __GTK_FILE_CHOOSER_DIALOG_H__ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_FILE_CHOOSER_DIALOG (gtk_file_chooser_dialog_get_type ()) +#define GTK_FILE_CHOOSER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER_DIALOG, GtkFileChooserDialog)) +#define GTK_IS_FILE_CHOOSER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER_DIALOG)) + +typedef struct _GtkFileChooserDialog GtkFileChooserDialog; + +GDK_AVAILABLE_IN_ALL +GType gtk_file_chooser_dialog_get_type (void) G_GNUC_CONST; +GDK_DEPRECATED_IN_4_10 +GtkWidget *gtk_file_chooser_dialog_new (const char *title, + GtkWindow *parent, + GtkFileChooserAction action, + const char *first_button_text, + ...) G_GNUC_NULL_TERMINATED; + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkFileChooserDialog, g_object_unref) + +G_END_DECLS + +#endif /* __GTK_FILE_CHOOSER_DIALOG_H__ */ diff --git a/gtk/deprecated/gtkfilechoosernative.h b/gtk/deprecated/gtkfilechoosernative.h new file mode 100644 index 0000000000..1d562cafb9 --- /dev/null +++ b/gtk/deprecated/gtkfilechoosernative.h @@ -0,0 +1,56 @@ +/* GTK - The GIMP Toolkit + * gtkfilechoosernative.h: Native File selector dialog + * Copyright (C) 2015, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __GTK_FILE_CHOOSER_NATIVE_H__ +#define __GTK_FILE_CHOOSER_NATIVE_H__ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_FILE_CHOOSER_NATIVE (gtk_file_chooser_native_get_type ()) + +GDK_AVAILABLE_IN_ALL +G_DECLARE_FINAL_TYPE (GtkFileChooserNative, gtk_file_chooser_native, GTK, FILE_CHOOSER_NATIVE, GtkNativeDialog) + +GDK_DEPRECATED_IN_4_10 +GtkFileChooserNative *gtk_file_chooser_native_new (const char *title, + GtkWindow *parent, + GtkFileChooserAction action, + const char *accept_label, + const char *cancel_label); + +GDK_DEPRECATED_IN_4_10 +const char *gtk_file_chooser_native_get_accept_label (GtkFileChooserNative *self); +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_native_set_accept_label (GtkFileChooserNative *self, + const char *accept_label); +GDK_DEPRECATED_IN_4_10 +const char *gtk_file_chooser_native_get_cancel_label (GtkFileChooserNative *self); +GDK_DEPRECATED_IN_4_10 +void gtk_file_chooser_native_set_cancel_label (GtkFileChooserNative *self, + const char *cancel_label); + +G_END_DECLS + +#endif /* __GTK_FILE_CHOOSER_NATIVE_H__ */ diff --git a/gtk/deprecated/gtkfilechooserwidget.h b/gtk/deprecated/gtkfilechooserwidget.h new file mode 100644 index 0000000000..9b96f5df48 --- /dev/null +++ b/gtk/deprecated/gtkfilechooserwidget.h @@ -0,0 +1,46 @@ +/* GTK - The GIMP Toolkit + * gtkfilechooserwidget.h: Embeddable file selector widget + * Copyright (C) 2003, Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + */ + +#ifndef __GTK_FILE_CHOOSER_WIDGET_H__ +#define __GTK_FILE_CHOOSER_WIDGET_H__ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_FILE_CHOOSER_WIDGET (gtk_file_chooser_widget_get_type ()) +#define GTK_FILE_CHOOSER_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER_WIDGET, GtkFileChooserWidget)) +#define GTK_IS_FILE_CHOOSER_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER_WIDGET)) + +typedef struct _GtkFileChooserWidget GtkFileChooserWidget; + +GDK_AVAILABLE_IN_ALL +GType gtk_file_chooser_widget_get_type (void) G_GNUC_CONST; +GDK_DEPRECATED_IN_4_10 +GtkWidget *gtk_file_chooser_widget_new (GtkFileChooserAction action); + +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkFileChooserWidget, g_object_unref) + +G_END_DECLS + +#endif /* __GTK_FILE_CHOOSER_WIDGET_H__ */ diff --git a/gtk/deprecated/meson.build b/gtk/deprecated/meson.build index def0f5da5e..5c1ef2dad5 100644 --- a/gtk/deprecated/meson.build +++ b/gtk/deprecated/meson.build @@ -24,6 +24,7 @@ gtk_deprecated_sources = [ 'deprecated/gtkcombobox.c', 'deprecated/gtkcomboboxtext.c', 'deprecated/gtkentrycompletion.c', + 'deprecated/gtkfilechooser.c', 'deprecated/gtkfontbutton.c', 'deprecated/gtkfontchooser.c', 'deprecated/gtkiconview.c', @@ -71,6 +72,10 @@ gtk_deprecated_headers = [ 'deprecated/gtkcombobox.h', 'deprecated/gtkcomboboxtext.h', 'deprecated/gtkentrycompletion.h', + 'deprecated/gtkfilechooser.h', + 'deprecated/gtkfilechooserdialog.h', + 'deprecated/gtkfilechoosernative.h', + 'deprecated/gtkfilechooserwidget.h', 'deprecated/gtkfontbutton.h', 'deprecated/gtkfontchooser.h', 'deprecated/gtkfontchooserdialog.h', diff --git a/gtk/gtk.h b/gtk/gtk.h index 5a6ed8ca3e..d66cc2073d 100644 --- a/gtk/gtk.h +++ b/gtk/gtk.h @@ -124,10 +124,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include #include diff --git a/gtk/gtkbookmarksmanager.c b/gtk/gtkbookmarksmanager.c index b253a1514e..ff13ea493e 100644 --- a/gtk/gtkbookmarksmanager.c +++ b/gtk/gtkbookmarksmanager.c @@ -28,7 +28,9 @@ #include #include "gtkbookmarksmanagerprivate.h" -#include "gtkfilechooser.h" /* for the GError types */ +#include "deprecated/gtkfilechooser.h" /* for the GError types */ + +G_GNUC_BEGIN_IGNORE_DEPRECATIONS static void _gtk_bookmark_free (gpointer data) diff --git a/gtk/gtkcolorchooserdialog.c b/gtk/gtkcolorchooserdialog.c index 4c3dad79ae..0833e7958d 100644 --- a/gtk/gtkcolorchooserdialog.c +++ b/gtk/gtkcolorchooserdialog.c @@ -47,6 +47,8 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS * [method@Gtk.ColorChooser.get_rgba]. * * `GtkColorChooserDialog` has been deprecated in favor of [class@Gtk.ColorDialog]. + * + * Deprecated: 4.10: Use [class@Gtk.ColorDialog] instead */ typedef struct _GtkColorChooserDialogClass GtkColorChooserDialogClass; diff --git a/gtk/gtkfilechooser.c b/gtk/gtkfilechooser.c deleted file mode 100644 index 847854307b..0000000000 --- a/gtk/gtkfilechooser.c +++ /dev/null @@ -1,795 +0,0 @@ -/* GTK - The GIMP Toolkit - * gtkfilechooser.c: Abstract interface for file selector GUIs - * Copyright (C) 2003, Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#include "config.h" -#include "gtkfilechooser.h" -#include "gtkfilechooserprivate.h" -#include "gtktypebuiltins.h" -#include "gtkprivate.h" -#include "gtkmarshalers.h" - - -/** - * GtkFileChooser: - * - * `GtkFileChooser` is an interface that can be implemented by file - * selection widgets. - * - * In GTK, the main objects that implement this interface are - * [class@Gtk.FileChooserWidget] and [class@Gtk.FileChooserDialog]. - * - * You do not need to write an object that implements the `GtkFileChooser` - * interface unless you are trying to adapt an existing file selector to - * expose a standard programming interface. - * - * `GtkFileChooser` allows for shortcuts to various places in the filesystem. - * In the default implementation these are displayed in the left pane. It - * may be a bit confusing at first that these shortcuts come from various - * sources and in various flavours, so lets explain the terminology here: - * - * - Bookmarks: are created by the user, by dragging folders from the - * right pane to the left pane, or by using the “Add”. Bookmarks - * can be renamed and deleted by the user. - * - * - Shortcuts: can be provided by the application. For example, a Paint - * program may want to add a shortcut for a Clipart folder. Shortcuts - * cannot be modified by the user. - * - * - Volumes: are provided by the underlying filesystem abstraction. They are - * the “roots” of the filesystem. - * - * # File Names and Encodings - * - * When the user is finished selecting files in a `GtkFileChooser`, your - * program can get the selected filenames as `GFile`s. - * - * # Adding options - * - * You can add extra widgets to a file chooser to provide options - * that are not present in the default design, by using - * [method@Gtk.FileChooser.add_choice]. Each choice has an identifier and - * a user visible label; additionally, each choice can have multiple - * options. If a choice has no option, it will be rendered as a - * check button with the given label; if a choice has options, it will - * be rendered as a combo box. - */ - - -typedef GtkFileChooserIface GtkFileChooserInterface; -G_DEFINE_INTERFACE (GtkFileChooser, gtk_file_chooser, G_TYPE_OBJECT); - -static void -gtk_file_chooser_default_init (GtkFileChooserInterface *iface) -{ - /** - * GtkFileChooser:action: (attributes org.gtk.Property.get=gtk_file_chooser_get_action org.gtk.Property.set=gtk_file_chooser_set_action) - * - * The type of operation that the file chooser is performing. - */ - g_object_interface_install_property (iface, - g_param_spec_enum ("action", NULL, NULL, - GTK_TYPE_FILE_CHOOSER_ACTION, - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_PARAM_READWRITE)); - - - /** - * GtkFileChooser:filter: (attributes org.gtk.Property.get=gtk_file_chooser_get_filter org.gtk.Property.set=gtk_file_chooser_set_filter) - * - * The current filter for selecting files that are displayed. - */ - g_object_interface_install_property (iface, - g_param_spec_object ("filter", NULL, NULL, - GTK_TYPE_FILE_FILTER, - GTK_PARAM_READWRITE)); - - /** - * GtkFileChooser:select-multiple: (attributes org.gtk.Property.get=gtk_file_chooser_get_select_multiple org.gtk.Property.set=gtk_file_chooser_set_select_multiple) - * - * Whether to allow multiple files to be selected. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("select-multiple", NULL, NULL, - FALSE, - GTK_PARAM_READWRITE)); - - /** - * GtkFileChooser:filters: (attributes org.gtk.Property.get=gtk_file_chooser_get_filters) - * - * A `GListModel` containing the filters that have been - * added with gtk_file_chooser_add_filter(). - * - * The returned object should not be modified. It may - * or may not be updated for later changes. - */ - g_object_interface_install_property (iface, - g_param_spec_object ("filters", NULL, NULL, - G_TYPE_LIST_MODEL, - GTK_PARAM_READABLE)); - - /** - * GtkFileChooser:shortcut-folders: (attributes org.gtk.Property.get=gtk_file_chooser_get_shortcut_folders) - * - * A `GListModel` containing the shortcut folders that have been - * added with gtk_file_chooser_add_shortcut_folder(). - * - * The returned object should not be modified. It may - * or may not be updated for later changes. - */ - g_object_interface_install_property (iface, - g_param_spec_object ("shortcut-folders", NULL, NULL, - G_TYPE_LIST_MODEL, - GTK_PARAM_READABLE)); - - /** - * GtkFileChooser:create-folders: (attributes org.gtk.Property.get=gtk_file_chooser_get_create_folders org.gtk.Property.set=gtk_file_chooser_set_create_folders) - * - * Whether a file chooser not in %GTK_FILE_CHOOSER_ACTION_OPEN mode - * will offer the user to create new folders. - */ - g_object_interface_install_property (iface, - g_param_spec_boolean ("create-folders", NULL, NULL, - TRUE, - GTK_PARAM_READWRITE)); -} - -/** - * gtk_file_chooser_error_quark: - * - * Registers an error quark for `GtkFileChooser` errors. - * - * Returns: The error quark used for `GtkFileChooser` errors. - **/ -GQuark -gtk_file_chooser_error_quark (void) -{ - return g_quark_from_static_string ("gtk-file-chooser-error-quark"); -} - -/** - * gtk_file_chooser_set_action: (attributes org.gtk.Method.set_property=action) - * @chooser: a `GtkFileChooser` - * @action: the action that the file selector is performing - * - * Sets the type of operation that the chooser is performing. - * - * The user interface is adapted to suit the selected action. - * - * For example, an option to create a new folder might be shown - * if the action is %GTK_FILE_CHOOSER_ACTION_SAVE but not if the - * action is %GTK_FILE_CHOOSER_ACTION_OPEN. - **/ -void -gtk_file_chooser_set_action (GtkFileChooser *chooser, - GtkFileChooserAction action) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - - g_object_set (chooser, "action", action, NULL); -} - -/** - * gtk_file_chooser_get_action: (attributes org.gtk.Method.get_property=action) - * @chooser: a `GtkFileChooser` - * - * Gets the type of operation that the file chooser is performing. - * - * Returns: the action that the file selector is performing - */ -GtkFileChooserAction -gtk_file_chooser_get_action (GtkFileChooser *chooser) -{ - GtkFileChooserAction action; - - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - - g_object_get (chooser, "action", &action, NULL); - - return action; -} - -/** - * gtk_file_chooser_set_select_multiple: (attributes org.gtk.Method.set_property=select-multiple) - * @chooser: a `GtkFileChooser` - * @select_multiple: %TRUE if multiple files can be selected. - * - * Sets whether multiple files can be selected in the file chooser. - * - * This is only relevant if the action is set to be - * %GTK_FILE_CHOOSER_ACTION_OPEN or - * %GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER. - */ -void -gtk_file_chooser_set_select_multiple (GtkFileChooser *chooser, - gboolean select_multiple) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - - g_object_set (chooser, "select-multiple", select_multiple, NULL); -} - -/** - * gtk_file_chooser_get_select_multiple: (attributes org.gtk.Method.get_property=select-multiple) - * @chooser: a `GtkFileChooser` - * - * Gets whether multiple files can be selected in the file - * chooser. - * - * Returns: %TRUE if multiple files can be selected. - */ -gboolean -gtk_file_chooser_get_select_multiple (GtkFileChooser *chooser) -{ - gboolean select_multiple; - - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - - g_object_get (chooser, "select-multiple", &select_multiple, NULL); - - return select_multiple; -} - -/** - * gtk_file_chooser_set_create_folders: (attributes org.gtk.Method.set_property=create-folders) - * @chooser: a `GtkFileChooser` - * @create_folders: %TRUE if the Create Folder button should be displayed - * - * Sets whether file chooser will offer to create new folders. - * - * This is only relevant if the action is not set to be - * %GTK_FILE_CHOOSER_ACTION_OPEN. - */ -void -gtk_file_chooser_set_create_folders (GtkFileChooser *chooser, - gboolean create_folders) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - - g_object_set (chooser, "create-folders", create_folders, NULL); -} - -/** - * gtk_file_chooser_get_create_folders: (attributes org.gtk.Method.get_property=create-folders) - * @chooser: a `GtkFileChooser` - * - * Gets whether file chooser will offer to create new folders. - * - * Returns: %TRUE if the Create Folder button should be displayed. - */ -gboolean -gtk_file_chooser_get_create_folders (GtkFileChooser *chooser) -{ - gboolean create_folders; - - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - - g_object_get (chooser, "create-folders", &create_folders, NULL); - - return create_folders; -} - -/** - * gtk_file_chooser_set_current_name: - * @chooser: a `GtkFileChooser` - * @name: (type utf8): the filename to use, as a UTF-8 string - * - * Sets the current name in the file selector, as if entered - * by the user. - * - * Note that the name passed in here is a UTF-8 string rather - * than a filename. This function is meant for such uses as a - * suggested name in a “Save As...” dialog. You can pass - * “Untitled.doc” or a similarly suitable suggestion for the @name. - * - * If you want to preselect a particular existing file, you should - * use [method@Gtk.FileChooser.set_file] instead. - * - * Please see the documentation for those functions for an example - * of using [method@Gtk.FileChooser.set_current_name] as well. - **/ -void -gtk_file_chooser_set_current_name (GtkFileChooser *chooser, - const char *name) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - g_return_if_fail (name != NULL); - - GTK_FILE_CHOOSER_GET_IFACE (chooser)->set_current_name (chooser, name); -} - -/** - * gtk_file_chooser_get_current_name: - * @chooser: a `GtkFileChooser` - * - * Gets the current name in the file selector, as entered by the user. - * - * This is meant to be used in save dialogs, to get the currently typed - * filename when the file itself does not exist yet. - * - * Returns: (nullable): The raw text from the file chooser’s “Name” entry. Free with - * g_free(). Note that this string is not a full pathname or URI; it is - * whatever the contents of the entry are. Note also that this string is - * in UTF-8 encoding, which is not necessarily the system’s encoding for - * filenames. - */ -char * -gtk_file_chooser_get_current_name (GtkFileChooser *chooser) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_current_name (chooser); -} - -void -gtk_file_chooser_select_all (GtkFileChooser *chooser) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - - GTK_FILE_CHOOSER_GET_IFACE (chooser)->select_all (chooser); -} - -void -gtk_file_chooser_unselect_all (GtkFileChooser *chooser) -{ - - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - - GTK_FILE_CHOOSER_GET_IFACE (chooser)->unselect_all (chooser); -} - -/** - * gtk_file_chooser_set_current_folder: - * @chooser: a `GtkFileChooser` - * @file: (nullable): the `GFile` for the new folder - * @error: location to store error - * - * Sets the current folder for @chooser from a `GFile`. - * - * Returns: %TRUE if the folder could be changed successfully, %FALSE - * otherwise. - */ -gboolean -gtk_file_chooser_set_current_folder (GtkFileChooser *chooser, - GFile *file, - GError **error) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - g_return_val_if_fail (G_IS_FILE (file), FALSE); - g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->set_current_folder (chooser, file, error); -} - -/** - * gtk_file_chooser_get_current_folder: - * @chooser: a `GtkFileChooser` - * - * Gets the current folder of @chooser as `GFile`. - * - * Returns: (transfer full) (nullable): the `GFile` for the current folder. - */ -GFile * -gtk_file_chooser_get_current_folder (GtkFileChooser *chooser) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_current_folder (chooser); -} - -gboolean -gtk_file_chooser_select_file (GtkFileChooser *chooser, - GFile *file, - GError **error) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - g_return_val_if_fail (G_IS_FILE (file), FALSE); - g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->select_file (chooser, file, error); -} - -void -gtk_file_chooser_unselect_file (GtkFileChooser *chooser, - GFile *file) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - g_return_if_fail (G_IS_FILE (file)); - - GTK_FILE_CHOOSER_GET_IFACE (chooser)->unselect_file (chooser, file); -} - -/** - * gtk_file_chooser_get_files: - * @chooser: a `GtkFileChooser` - * - * Lists all the selected files and subfolders in the current folder - * of @chooser as `GFile`. - * - * Returns: (transfer full): a list model containing a `GFile` for each - * selected file and subfolder in the current folder. Free the returned - * list with g_object_unref(). - */ -GListModel * -gtk_file_chooser_get_files (GtkFileChooser *chooser) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_files (chooser); -} - -/** - * gtk_file_chooser_set_file: - * @chooser: a `GtkFileChooser` - * @file: the `GFile` to set as current - * @error: (nullable): location to store the error - * - * Sets @file as the current filename for the file chooser. - * - * This includes changing to the file’s parent folder and actually selecting - * the file in list. If the @chooser is in %GTK_FILE_CHOOSER_ACTION_SAVE mode, - * the file’s base name will also appear in the dialog’s file name entry. - * - * If the file name isn’t in the current folder of @chooser, then the current - * folder of @chooser will be changed to the folder containing @file. - * - * Note that the file must exist, or nothing will be done except - * for the directory change. - * - * If you are implementing a save dialog, you should use this function if - * you already have a file name to which the user may save; for example, - * when the user opens an existing file and then does “Save As…”. If you - * don’t have a file name already — for example, if the user just created - * a new file and is saving it for the first time, do not call this function. - * - * Instead, use something similar to this: - * - * ```c - * static void - * prepare_file_chooser (GtkFileChooser *chooser, - * GFile *existing_file) - * { - * gboolean document_is_new = (existing_file == NULL); - * - * if (document_is_new) - * { - * GFile *default_file_for_saving = g_file_new_for_path ("./out.txt"); - * // the user just created a new document - * gtk_file_chooser_set_current_folder (chooser, default_file_for_saving, NULL); - * gtk_file_chooser_set_current_name (chooser, "Untitled document"); - * g_object_unref (default_file_for_saving); - * } - * else - * { - * // the user edited an existing document - * gtk_file_chooser_set_file (chooser, existing_file, NULL); - * } - * } - * ``` - * - * Returns: Not useful - */ -gboolean -gtk_file_chooser_set_file (GtkFileChooser *chooser, - GFile *file, - GError **error) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - g_return_val_if_fail (G_IS_FILE (file), FALSE); - g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - - gtk_file_chooser_unselect_all (chooser); - return gtk_file_chooser_select_file (chooser, file, error); -} - -/** - * gtk_file_chooser_get_file: - * @chooser: a `GtkFileChooser` - * - * Gets the `GFile` for the currently selected file in - * the file selector. - * - * If multiple files are selected, one of the files will be - * returned at random. - * - * If the file chooser is in folder mode, this function returns - * the selected folder. - * - * Returns: (transfer full) (nullable): a selected `GFile`. You own the - * returned file; use g_object_unref() to release it. - */ -GFile * -gtk_file_chooser_get_file (GtkFileChooser *chooser) -{ - GListModel *list; - GFile *result = NULL; - - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); - - list = gtk_file_chooser_get_files (chooser); - if (g_list_model_get_n_items (list) > 0) - result = g_list_model_get_item (list, 0); - g_object_unref (list); - - return result; -} - -/** - * gtk_file_chooser_add_shortcut_folder: - * @chooser: a `GtkFileChooser` - * @folder: a `GFile` for the folder to add - * @error: location to store error - * - * Adds a folder to be displayed with the shortcut folders - * in a file chooser. - * - * Returns: %TRUE if the folder could be added successfully, - * %FALSE otherwise. - */ -gboolean -gtk_file_chooser_add_shortcut_folder (GtkFileChooser *chooser, - GFile *folder, - GError **error) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - g_return_val_if_fail (G_IS_FILE (folder), FALSE); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->add_shortcut_folder (chooser, folder, error); -} - -/** - * gtk_file_chooser_remove_shortcut_folder: - * @chooser: a `GtkFileChooser` - * @folder: a `GFile` for the folder to remove - * @error: location to store error - * - * Removes a folder from the shortcut folders in a file chooser. - * - * Returns: %TRUE if the folder could be removed successfully, - * %FALSE otherwise. - */ -gboolean -gtk_file_chooser_remove_shortcut_folder (GtkFileChooser *chooser, - GFile *folder, - GError **error) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), FALSE); - g_return_val_if_fail (G_IS_FILE (folder), FALSE); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->remove_shortcut_folder (chooser, folder, error); -} - -/** - * gtk_file_chooser_add_filter: - * @chooser: a `GtkFileChooser` - * @filter: (transfer none): a `GtkFileFilter` - * - * Adds @filter to the list of filters that the user can select between. - * - * When a filter is selected, only files that are passed by that - * filter are displayed. - * - * Note that the @chooser takes ownership of the filter if it is floating, - * so you have to ref and sink it if you want to keep a reference. - */ -void -gtk_file_chooser_add_filter (GtkFileChooser *chooser, - GtkFileFilter *filter) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - - GTK_FILE_CHOOSER_GET_IFACE (chooser)->add_filter (chooser, filter); -} - -/** - * gtk_file_chooser_remove_filter: - * @chooser: a `GtkFileChooser` - * @filter: a `GtkFileFilter` - * - * Removes @filter from the list of filters that the user can select between. - */ -void -gtk_file_chooser_remove_filter (GtkFileChooser *chooser, - GtkFileFilter *filter) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - - GTK_FILE_CHOOSER_GET_IFACE (chooser)->remove_filter (chooser, filter); -} - -/** - * gtk_file_chooser_get_filters: (attributes org.gtk.Method.get_property=filters) - * @chooser: a `GtkFileChooser` - * - * Gets the current set of user-selectable filters, as a list model. - * - * See [method@Gtk.FileChooser.add_filter] and - * [method@Gtk.FileChooser.remove_filter] for changing individual filters. - * - * You should not modify the returned list model. Future changes to - * @chooser may or may not affect the returned model. - * - * Returns: (transfer full): a `GListModel` containing the current set - * of user-selectable filters. - */ -GListModel * -gtk_file_chooser_get_filters (GtkFileChooser *chooser) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_filters (chooser); -} - -/** - * gtk_file_chooser_set_filter: (attributes org.gtk.Method.set_property=filter) - * @chooser: a `GtkFileChooser` - * @filter: a `GtkFileFilter` - * - * Sets the current filter. - * - * Only the files that pass the filter will be displayed. - * If the user-selectable list of filters is non-empty, then - * the filter should be one of the filters in that list. - * - * Setting the current filter when the list of filters is - * empty is useful if you want to restrict the displayed - * set of files without letting the user change it. - */ -void -gtk_file_chooser_set_filter (GtkFileChooser *chooser, - GtkFileFilter *filter) -{ - g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser)); - g_return_if_fail (GTK_IS_FILE_FILTER (filter)); - - g_object_set (chooser, "filter", filter, NULL); -} - -/** - * gtk_file_chooser_get_filter: (attributes org.gtk.Method.get_property=filter) - * @chooser: a `GtkFileChooser` - * - * Gets the current filter. - * - * Returns: (nullable) (transfer none): the current filter - */ -GtkFileFilter * -gtk_file_chooser_get_filter (GtkFileChooser *chooser) -{ - GtkFileFilter *filter; - - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); - - g_object_get (chooser, "filter", &filter, NULL); - /* Horrid hack; g_object_get() refs returned objects but - * that contradicts the memory management conventions - * for accessors. - */ - if (filter) - g_object_unref (filter); - - return filter; -} - -/** - * gtk_file_chooser_get_shortcut_folders: (attributes org.gtk.Method.get_property=shortcut-folders) - * @chooser: a `GtkFileChooser` - * - * Queries the list of shortcut folders in the file chooser. - * - * You should not modify the returned list model. Future changes to - * @chooser may or may not affect the returned model. - * - * Returns: (transfer full): A list model of `GFile`s - */ -GListModel * -gtk_file_chooser_get_shortcut_folders (GtkFileChooser *chooser) -{ - g_return_val_if_fail (GTK_IS_FILE_CHOOSER (chooser), NULL); - - return GTK_FILE_CHOOSER_GET_IFACE (chooser)->get_shortcut_folders (chooser); -} - -/** - * gtk_file_chooser_add_choice: - * @chooser: a `GtkFileChooser` - * @id: id for the added choice - * @label: user-visible label for the added choice - * @options: (nullable) (array zero-terminated=1): ids for the options of the choice, or %NULL for a boolean choice - * @option_labels: (nullable) (array zero-terminated=1): user-visible labels for the options, must be the same length as @options - * - * Adds a 'choice' to the file chooser. - * - * This is typically implemented as a combobox or, for boolean choices, - * as a checkbutton. You can select a value using - * [method@Gtk.FileChooser.set_choice] before the dialog is shown, - * and you can obtain the user-selected value in the - * [signal@Gtk.Dialog::response] signal handler using - * [method@Gtk.FileChooser.get_choice]. - */ -void -gtk_file_chooser_add_choice (GtkFileChooser *chooser, - const char *id, - const char *label, - const char **options, - const char **option_labels) -{ - GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); - - if (iface->add_choice) - iface->add_choice (chooser, id, label, options, option_labels); -} - -/** - * gtk_file_chooser_remove_choice: - * @chooser: a `GtkFileChooser` - * @id: the ID of the choice to remove - * - * Removes a 'choice' that has been added with gtk_file_chooser_add_choice(). - */ -void -gtk_file_chooser_remove_choice (GtkFileChooser *chooser, - const char *id) -{ - GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); - - if (iface->remove_choice) - iface->remove_choice (chooser, id); -} - -/** - * gtk_file_chooser_set_choice: - * @chooser: a `GtkFileChooser` - * @id: the ID of the choice to set - * @option: the ID of the option to select - * - * Selects an option in a 'choice' that has been added with - * gtk_file_chooser_add_choice(). - * - * For a boolean choice, the possible options are "true" and "false". - */ -void -gtk_file_chooser_set_choice (GtkFileChooser *chooser, - const char *id, - const char *option) -{ - GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); - - if (iface->set_choice) - iface->set_choice (chooser, id, option); -} - -/** - * gtk_file_chooser_get_choice: - * @chooser: a `GtkFileChooser` - * @id: the ID of the choice to get - * - * Gets the currently selected option in the 'choice' with the given ID. - * - * Returns: (nullable): the ID of the currently selected option - */ -const char * -gtk_file_chooser_get_choice (GtkFileChooser *chooser, - const char *id) -{ - GtkFileChooserIface *iface = GTK_FILE_CHOOSER_GET_IFACE (chooser); - - if (iface->get_choice) - return iface->get_choice (chooser, id); - - return NULL; -} diff --git a/gtk/gtkfilechooser.h b/gtk/gtkfilechooser.h deleted file mode 100644 index e5b68de3dd..0000000000 --- a/gtk/gtkfilechooser.h +++ /dev/null @@ -1,188 +0,0 @@ -/* GTK - The GIMP Toolkit - * gtkfilechooser.h: Abstract interface for file selector GUIs - * Copyright (C) 2003, Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#ifndef __GTK_FILE_CHOOSER_H__ -#define __GTK_FILE_CHOOSER_H__ - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only can be included directly." -#endif - -#include -#include - -G_BEGIN_DECLS - -#define GTK_TYPE_FILE_CHOOSER (gtk_file_chooser_get_type ()) -#define GTK_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER, GtkFileChooser)) -#define GTK_IS_FILE_CHOOSER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER)) - -typedef struct _GtkFileChooser GtkFileChooser; - -/** - * GtkFileChooserAction: - * @GTK_FILE_CHOOSER_ACTION_OPEN: Indicates open mode. The file chooser - * will only let the user pick an existing file. - * @GTK_FILE_CHOOSER_ACTION_SAVE: Indicates save mode. The file chooser - * will let the user pick an existing file, or type in a new - * filename. - * @GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER: Indicates an Open mode for - * selecting folders. The file chooser will let the user pick an - * existing folder. - * - * Describes whether a `GtkFileChooser` is being used to open existing files - * or to save to a possibly new file. - */ -typedef enum -{ - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER -} GtkFileChooserAction; - -GDK_AVAILABLE_IN_ALL -GType gtk_file_chooser_get_type (void) G_GNUC_CONST; - -/* GError enumeration for GtkFileChooser */ -/** - * GTK_FILE_CHOOSER_ERROR: - * - * Used to get the `GError` quark for `GtkFileChooser` errors. - */ -#define GTK_FILE_CHOOSER_ERROR (gtk_file_chooser_error_quark ()) - -/** - * GtkFileChooserError: - * @GTK_FILE_CHOOSER_ERROR_NONEXISTENT: Indicates that a file does not exist. - * @GTK_FILE_CHOOSER_ERROR_BAD_FILENAME: Indicates a malformed filename. - * @GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS: Indicates a duplicate path (e.g. when - * adding a bookmark). - * @GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME: Indicates an incomplete hostname - * (e.g. "http://foo" without a slash after that). - * - * These identify the various errors that can occur while calling - * `GtkFileChooser` functions. - */ -typedef enum { - GTK_FILE_CHOOSER_ERROR_NONEXISTENT, - GTK_FILE_CHOOSER_ERROR_BAD_FILENAME, - GTK_FILE_CHOOSER_ERROR_ALREADY_EXISTS, - GTK_FILE_CHOOSER_ERROR_INCOMPLETE_HOSTNAME -} GtkFileChooserError; - -GDK_AVAILABLE_IN_ALL -GQuark gtk_file_chooser_error_quark (void); - -/* Configuration */ - -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_set_action (GtkFileChooser *chooser, - GtkFileChooserAction action); -GDK_AVAILABLE_IN_ALL -GtkFileChooserAction gtk_file_chooser_get_action (GtkFileChooser *chooser); -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_set_select_multiple (GtkFileChooser *chooser, - gboolean select_multiple); -GDK_AVAILABLE_IN_ALL -gboolean gtk_file_chooser_get_select_multiple (GtkFileChooser *chooser); -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_set_create_folders (GtkFileChooser *chooser, - gboolean create_folders); -GDK_AVAILABLE_IN_ALL -gboolean gtk_file_chooser_get_create_folders (GtkFileChooser *chooser); - -/* Suggested name for the Save-type actions */ - -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_set_current_name (GtkFileChooser *chooser, - const char *name); -GDK_AVAILABLE_IN_ALL -char * gtk_file_chooser_get_current_name (GtkFileChooser *chooser); - -/* GFile manipulation */ - -GDK_AVAILABLE_IN_ALL -GFile * gtk_file_chooser_get_file (GtkFileChooser *chooser); -GDK_AVAILABLE_IN_ALL -gboolean gtk_file_chooser_set_file (GtkFileChooser *chooser, - GFile *file, - GError **error); -GDK_AVAILABLE_IN_ALL -GListModel * gtk_file_chooser_get_files (GtkFileChooser *chooser); -GDK_AVAILABLE_IN_ALL -gboolean gtk_file_chooser_set_current_folder (GtkFileChooser *chooser, - GFile *file, - GError **error); -GDK_AVAILABLE_IN_ALL -GFile * gtk_file_chooser_get_current_folder (GtkFileChooser *chooser); - -/* List of user selectable filters */ - -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_add_filter (GtkFileChooser *chooser, - GtkFileFilter *filter); -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_remove_filter (GtkFileChooser *chooser, - GtkFileFilter *filter); -GDK_AVAILABLE_IN_ALL -GListModel * gtk_file_chooser_get_filters (GtkFileChooser *chooser); - -/* Current filter */ - -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_set_filter (GtkFileChooser *chooser, - GtkFileFilter *filter); -GDK_AVAILABLE_IN_ALL -GtkFileFilter * gtk_file_chooser_get_filter (GtkFileChooser *chooser); - -/* Per-application shortcut folders */ - -GDK_AVAILABLE_IN_ALL -gboolean gtk_file_chooser_add_shortcut_folder (GtkFileChooser *chooser, - GFile *folder, - GError **error); -GDK_AVAILABLE_IN_ALL -gboolean gtk_file_chooser_remove_shortcut_folder - (GtkFileChooser *chooser, - GFile *folder, - GError **error); -GDK_AVAILABLE_IN_ALL -GListModel * gtk_file_chooser_get_shortcut_folders (GtkFileChooser *chooser); - -/* Custom widgets */ - -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_add_choice (GtkFileChooser *chooser, - const char *id, - const char *label, - const char **options, - const char **option_labels); -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_remove_choice (GtkFileChooser *chooser, - const char *id); -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_set_choice (GtkFileChooser *chooser, - const char *id, - const char *option); -GDK_AVAILABLE_IN_ALL -const char * gtk_file_chooser_get_choice (GtkFileChooser *chooser, - const char *id); - -G_END_DECLS - -#endif /* __GTK_FILE_CHOOSER_H__ */ diff --git a/gtk/gtkfilechoosercell.c b/gtk/gtkfilechoosercell.c index c14ae0a021..7d20c70f0a 100644 --- a/gtk/gtkfilechoosercell.c +++ b/gtk/gtkfilechoosercell.c @@ -30,7 +30,6 @@ #include "gtklistitem.h" #include "gtkselectionmodel.h" #include "gtkfilechooserutils.h" -#include "gtkfilechooserwidget.h" #include "gtkfilechooserwidgetprivate.h" struct _GtkFileChooserCell diff --git a/gtk/gtkfilechooserdialog.c b/gtk/gtkfilechooserdialog.c index 853d304952..cb63d8c101 100644 --- a/gtk/gtkfilechooserdialog.c +++ b/gtk/gtkfilechooserdialog.c @@ -19,10 +19,10 @@ #include "config.h" -#include "gtkfilechooserdialog.h" +#include "deprecated/gtkfilechooserdialog.h" #include "gtkfilechooserprivate.h" -#include "gtkfilechooserwidget.h" +#include "deprecated/gtkfilechooserwidget.h" #include "gtkfilechooserwidgetprivate.h" #include "gtkfilechooserutils.h" #include "gtksizerequest.h" @@ -39,6 +39,8 @@ #include +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /** * GtkFileChooserDialog: * @@ -209,6 +211,8 @@ * * To summarize, make sure you use a predefined response code * when you use `GtkFileChooserDialog` to ensure proper operation. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ typedef struct _GtkFileChooserDialogPrivate GtkFileChooserDialogPrivate; @@ -716,6 +720,8 @@ gtk_file_chooser_dialog_new_valist (const char *title, * This function is analogous to [ctor@Gtk.Dialog.new_with_buttons]. * * Returns: a new `GtkFileChooserDialog` + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ GtkWidget * gtk_file_chooser_dialog_new (const char *title, diff --git a/gtk/gtkfilechooserdialog.h b/gtk/gtkfilechooserdialog.h deleted file mode 100644 index 6271857cb9..0000000000 --- a/gtk/gtkfilechooserdialog.h +++ /dev/null @@ -1,50 +0,0 @@ -/* GTK - The GIMP Toolkit - * gtkfilechooserdialog.h: File selector dialog - * Copyright (C) 2003, Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#ifndef __GTK_FILE_CHOOSER_DIALOG_H__ -#define __GTK_FILE_CHOOSER_DIALOG_H__ - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only can be included directly." -#endif - -#include -#include - -G_BEGIN_DECLS - -#define GTK_TYPE_FILE_CHOOSER_DIALOG (gtk_file_chooser_dialog_get_type ()) -#define GTK_FILE_CHOOSER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER_DIALOG, GtkFileChooserDialog)) -#define GTK_IS_FILE_CHOOSER_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER_DIALOG)) - -typedef struct _GtkFileChooserDialog GtkFileChooserDialog; - -GDK_AVAILABLE_IN_ALL -GType gtk_file_chooser_dialog_get_type (void) G_GNUC_CONST; -GDK_AVAILABLE_IN_ALL -GtkWidget *gtk_file_chooser_dialog_new (const char *title, - GtkWindow *parent, - GtkFileChooserAction action, - const char *first_button_text, - ...) G_GNUC_NULL_TERMINATED; - -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkFileChooserDialog, g_object_unref) - -G_END_DECLS - -#endif /* __GTK_FILE_CHOOSER_DIALOG_H__ */ diff --git a/gtk/gtkfilechooserentry.h b/gtk/gtkfilechooserentry.h index f7fd7428ec..e58adb0f8a 100644 --- a/gtk/gtkfilechooserentry.h +++ b/gtk/gtkfilechooserentry.h @@ -19,7 +19,7 @@ #ifndef __GTK_FILE_CHOOSER_ENTRY_H__ #define __GTK_FILE_CHOOSER_ENTRY_H__ -#include "gtkfilechooser.h" +#include "deprecated/gtkfilechooser.h" G_BEGIN_DECLS diff --git a/gtk/gtkfilechoosernative.c b/gtk/gtkfilechoosernative.c index 43418cdce9..7ec767c427 100644 --- a/gtk/gtkfilechoosernative.c +++ b/gtk/gtkfilechoosernative.c @@ -23,9 +23,8 @@ #include "gtknativedialogprivate.h" #include "gtkprivate.h" -#include "gtkfilechooserdialog.h" #include "gtkfilechooserprivate.h" -#include "gtkfilechooserwidget.h" +#include "deprecated/gtkfilechooserdialog.h" #include "gtkfilechooserwidgetprivate.h" #include "gtkfilechooserutils.h" #include "gtksizerequest.h" @@ -37,6 +36,8 @@ #include "gtklabel.h" #include "gtkfilefilterprivate.h" +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /** * GtkFileChooserNative: * @@ -186,6 +187,8 @@ * are not supported: * * * Shortcut folders. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ enum { @@ -218,6 +221,8 @@ G_DEFINE_TYPE_WITH_CODE (GtkFileChooserNative, gtk_file_chooser_native, GTK_TYPE * Retrieves the custom label text for the accept button. * * Returns: (nullable): The custom label + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ const char * gtk_file_chooser_native_get_accept_label (GtkFileChooserNative *self) @@ -240,6 +245,8 @@ gtk_file_chooser_native_get_accept_label (GtkFileChooserNative *self) * a keyboard accelerator called a mnemonic. * * Pressing Alt and that key should activate the button. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ void gtk_file_chooser_native_set_accept_label (GtkFileChooserNative *self, @@ -260,6 +267,8 @@ gtk_file_chooser_native_set_accept_label (GtkFileChooserNative *self, * Retrieves the custom label text for the cancel button. * * Returns: (nullable): The custom label + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ const char * gtk_file_chooser_native_get_cancel_label (GtkFileChooserNative *self) @@ -282,6 +291,8 @@ gtk_file_chooser_native_get_cancel_label (GtkFileChooserNative *self) * a keyboard accelerator called a mnemonic. * * Pressing Alt and that key should activate the button. + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ void gtk_file_chooser_native_set_cancel_label (GtkFileChooserNative *self, @@ -527,6 +538,8 @@ gtk_file_chooser_native_init (GtkFileChooserNative *self) * Creates a new `GtkFileChooserNative`. * * Returns: a new `GtkFileChooserNative` + * + * Deprecated: 4.10: Use [class@Gtk.FileDialog] instead */ GtkFileChooserNative * gtk_file_chooser_native_new (const char *title, diff --git a/gtk/gtkfilechoosernative.h b/gtk/gtkfilechoosernative.h deleted file mode 100644 index 7a779cb946..0000000000 --- a/gtk/gtkfilechoosernative.h +++ /dev/null @@ -1,56 +0,0 @@ -/* GTK - The GIMP Toolkit - * gtkfilechoosernative.h: Native File selector dialog - * Copyright (C) 2015, Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#ifndef __GTK_FILE_CHOOSER_NATIVE_H__ -#define __GTK_FILE_CHOOSER_NATIVE_H__ - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only can be included directly." -#endif - -#include -#include - -G_BEGIN_DECLS - -#define GTK_TYPE_FILE_CHOOSER_NATIVE (gtk_file_chooser_native_get_type ()) - -GDK_AVAILABLE_IN_ALL -G_DECLARE_FINAL_TYPE (GtkFileChooserNative, gtk_file_chooser_native, GTK, FILE_CHOOSER_NATIVE, GtkNativeDialog) - -GDK_AVAILABLE_IN_ALL -GtkFileChooserNative *gtk_file_chooser_native_new (const char *title, - GtkWindow *parent, - GtkFileChooserAction action, - const char *accept_label, - const char *cancel_label); - -GDK_AVAILABLE_IN_ALL -const char *gtk_file_chooser_native_get_accept_label (GtkFileChooserNative *self); -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_native_set_accept_label (GtkFileChooserNative *self, - const char *accept_label); -GDK_AVAILABLE_IN_ALL -const char *gtk_file_chooser_native_get_cancel_label (GtkFileChooserNative *self); -GDK_AVAILABLE_IN_ALL -void gtk_file_chooser_native_set_cancel_label (GtkFileChooserNative *self, - const char *cancel_label); - -G_END_DECLS - -#endif /* __GTK_FILE_CHOOSER_NATIVE_H__ */ diff --git a/gtk/gtkfilechoosernativeportal.c b/gtk/gtkfilechoosernativeportal.c index c2b0e0f0e9..e1eee90e10 100644 --- a/gtk/gtkfilechoosernativeportal.c +++ b/gtk/gtkfilechoosernativeportal.c @@ -23,11 +23,8 @@ #include "gtknativedialogprivate.h" #include "gtkprivate.h" -#include "gtkfilechooserdialog.h" +#include "gtkdialog.h" #include "gtkfilechooserprivate.h" -#include "gtkfilechooserwidget.h" -#include "gtkfilechooserwidgetprivate.h" -#include "gtkfilechooserutils.h" #include "gtksizerequest.h" #include "gtktypebuiltins.h" #include "gtksettings.h" @@ -39,6 +36,8 @@ #include "gtkwindowprivate.h" +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + typedef struct { GtkFileChooserNative *self; diff --git a/gtk/gtkfilechoosernativeprivate.h b/gtk/gtkfilechoosernativeprivate.h index e8630238f6..eacb92cce3 100644 --- a/gtk/gtkfilechoosernativeprivate.h +++ b/gtk/gtkfilechoosernativeprivate.h @@ -19,7 +19,7 @@ #ifndef __GTK_FILE_CHOOSER_NATIVE_PRIVATE_H__ #define __GTK_FILE_CHOOSER_NATIVE_PRIVATE_H__ -#include +#include G_BEGIN_DECLS diff --git a/gtk/gtkfilechoosernativequartz.c b/gtk/gtkfilechoosernativequartz.c index 9a0b0da33d..3aa333062e 100644 --- a/gtk/gtkfilechoosernativequartz.c +++ b/gtk/gtkfilechoosernativequartz.c @@ -24,9 +24,8 @@ #include #include "gtkprivate.h" -#include "gtkfilechooserdialog.h" +#include "deprecated/gtkfilechooserdialog.h" #include "gtkfilechooserprivate.h" -#include "gtkfilechooserwidget.h" #include "gtkfilechooserwidgetprivate.h" #include "gtkfilechooserutils.h" #include "gtksizerequest.h" @@ -42,6 +41,8 @@ #include "macos/gdkmacosdisplay-private.h" #include "macos/gdkmacossurface-private.h" +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + typedef struct { GtkFileChooserNative *self; diff --git a/gtk/gtkfilechoosernativewin32.c b/gtk/gtkfilechoosernativewin32.c index 97150e650d..3362477736 100644 --- a/gtk/gtkfilechoosernativewin32.c +++ b/gtk/gtkfilechoosernativewin32.c @@ -29,9 +29,8 @@ #include "gtknativedialogprivate.h" #include "gtkprivate.h" -#include "gtkfilechooserdialog.h" +#include "deprecated/gtkfilechooserdialog.h" #include "gtkfilechooserprivate.h" -#include "gtkfilechooserwidget.h" #include "gtkfilechooserwidgetprivate.h" #include "gtkfilechooserutils.h" #include "gtksizerequest.h" @@ -48,6 +47,8 @@ #include #include +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + typedef struct { GtkFileChooserNative *self; diff --git a/gtk/gtkfilechooserprivate.h b/gtk/gtkfilechooserprivate.h index 305ce7f76d..ac6da257a4 100644 --- a/gtk/gtkfilechooserprivate.h +++ b/gtk/gtkfilechooserprivate.h @@ -19,7 +19,7 @@ #ifndef __GTK_FILE_CHOOSER_PRIVATE_H__ #define __GTK_FILE_CHOOSER_PRIVATE_H__ -#include "gtkfilechooser.h" +#include "deprecated/gtkfilechooser.h" #include "gtkfilesystemmodel.h" #include "deprecated/gtkliststore.h" #include "gtkrecentmanager.h" diff --git a/gtk/gtkfilechooserutils.c b/gtk/gtkfilechooserutils.c index d75a12b0b4..6739d3abb5 100644 --- a/gtk/gtkfilechooserutils.c +++ b/gtk/gtkfilechooserutils.c @@ -19,12 +19,14 @@ #include "config.h" #include "gtkfilechooserutils.h" -#include "gtkfilechooser.h" +#include "deprecated/gtkfilechooser.h" #include "gtktypebuiltins.h" #include "gtkprivate.h" #include +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + static gboolean delegate_set_current_folder (GtkFileChooser *chooser, GFile *file, GError **error); diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index 6b358c7aa0..20a8f4abb2 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -19,7 +19,7 @@ #include "config.h" -#include "gtkfilechooserwidget.h" +#include "deprecated/gtkfilechooserwidget.h" #include "gtkfilechooserwidgetprivate.h" #include "gtkbitset.h" @@ -32,10 +32,10 @@ #include "gtkdroptarget.h" #include "gtkentry.h" #include "gtkfilechooserprivate.h" -#include "gtkfilechooserdialog.h" +#include "deprecated/gtkfilechooserdialog.h" +#include "deprecated/gtkfilechooser.h" #include "gtkfilechooserentry.h" #include "gtkfilechooserutils.h" -#include "gtkfilechooser.h" #include "gtkfilesystemmodel.h" #include "gtkfilethumbnail.h" #include "gtkgestureclick.h" @@ -107,6 +107,8 @@ #include #endif +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + /** * GtkFileChooserWidget: * @@ -119,6 +121,8 @@ * # CSS nodes * * `GtkFileChooserWidget` has a single CSS node with name filechooser. + * + * Deprecated: 4.10: Direct use of `GtkFileChooserWidget` is deprecated */ /* 150 mseconds of delay */ @@ -7258,6 +7262,8 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl) * `GtkFileChooserDialog`. * * Returns: a new `GtkFileChooserWidget` + * + * Deprecated: 4.10: Direct use of `GtkFileChooserWidget` is deprecated */ GtkWidget * gtk_file_chooser_widget_new (GtkFileChooserAction action) diff --git a/gtk/gtkfilechooserwidget.h b/gtk/gtkfilechooserwidget.h deleted file mode 100644 index f4094c7dcb..0000000000 --- a/gtk/gtkfilechooserwidget.h +++ /dev/null @@ -1,46 +0,0 @@ -/* GTK - The GIMP Toolkit - * gtkfilechooserwidget.h: Embeddable file selector widget - * Copyright (C) 2003, Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see . - */ - -#ifndef __GTK_FILE_CHOOSER_WIDGET_H__ -#define __GTK_FILE_CHOOSER_WIDGET_H__ - -#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) -#error "Only can be included directly." -#endif - -#include -#include - -G_BEGIN_DECLS - -#define GTK_TYPE_FILE_CHOOSER_WIDGET (gtk_file_chooser_widget_get_type ()) -#define GTK_FILE_CHOOSER_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_FILE_CHOOSER_WIDGET, GtkFileChooserWidget)) -#define GTK_IS_FILE_CHOOSER_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_FILE_CHOOSER_WIDGET)) - -typedef struct _GtkFileChooserWidget GtkFileChooserWidget; - -GDK_AVAILABLE_IN_ALL -GType gtk_file_chooser_widget_get_type (void) G_GNUC_CONST; -GDK_AVAILABLE_IN_ALL -GtkWidget *gtk_file_chooser_widget_new (GtkFileChooserAction action); - -G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkFileChooserWidget, g_object_unref) - -G_END_DECLS - -#endif /* __GTK_FILE_CHOOSER_WIDGET_H__ */ diff --git a/gtk/gtkfilechooserwidgetprivate.h b/gtk/gtkfilechooserwidgetprivate.h index 91fdddd962..6b0647d3d8 100644 --- a/gtk/gtkfilechooserwidgetprivate.h +++ b/gtk/gtkfilechooserwidgetprivate.h @@ -22,7 +22,7 @@ #define __GTK_FILE_CHOOSER_WIDGET_PRIVATE_H__ #include -#include "gtkfilechooserwidget.h" +#include "deprecated/gtkfilechooserwidget.h" #include "gtkselectionmodel.h" G_BEGIN_DECLS diff --git a/gtk/gtkfiledialog.c b/gtk/gtkfiledialog.c index 51554978ca..353ea32d20 100644 --- a/gtk/gtkfiledialog.c +++ b/gtk/gtkfiledialog.c @@ -21,8 +21,8 @@ #include "gtkfiledialog.h" -#include "gtk/gtkdialog.h" -#include "gtkfilechoosernative.h" +#include "gtkdialog.h" +#include "deprecated/gtkfilechoosernative.h" #include "gtkdialogerror.h" #include @@ -274,7 +274,9 @@ file_chooser_set_filters (GtkFileChooser *chooser, for (unsigned int i = 0; i < g_list_model_get_n_items (filters); i++) { GtkFileFilter *filter = g_list_model_get_item (filters, i); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_file_chooser_add_filter (chooser, filter); +G_GNUC_END_IGNORE_DEPRECATIONS g_object_unref (filter); } } @@ -291,11 +293,13 @@ file_chooser_set_shortcut_folders (GtkFileChooser *chooser, GFile *folder = g_list_model_get_item (shortcut_folders, i); GError *error = NULL; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS if (!gtk_file_chooser_add_shortcut_folder (chooser, folder, &error)) { g_critical ("%s", error->message); g_clear_error (&error); } +G_GNUC_END_IGNORE_DEPRECATIONS g_object_unref (folder); } @@ -613,12 +617,14 @@ response_cb (GTask *task, if (response == GTK_RESPONSE_ACCEPT) { +G_GNUC_BEGIN_IGNORE_DEPRECATIONS GtkFileChooser *chooser; GListModel *files; chooser = GTK_FILE_CHOOSER (g_task_get_task_data (task)); files = gtk_file_chooser_get_files (chooser); g_task_return_pointer (task, files, g_object_unref); +G_GNUC_END_IGNORE_DEPRECATIONS } else if (response == GTK_RESPONSE_CLOSE) g_task_return_new_error (task, GTK_DIALOG_ERROR, GTK_DIALOG_ERROR_ABORTED, "Aborted by application"); @@ -638,10 +644,13 @@ dialog_response (GtkDialog *dialog, response_cb (task, response); } +G_GNUC_BEGIN_IGNORE_DEPRECATIONS static GtkFileChooserNative * create_file_chooser (GtkFileDialog *self, GtkWindow *parent, GtkFileChooserAction action, + GFile *current_file, + const char *current_name, gboolean select_multiple) { GtkFileChooserNative *chooser; @@ -680,9 +689,14 @@ create_file_chooser (GtkFileDialog *self, file_chooser_set_shortcut_folders (GTK_FILE_CHOOSER (chooser), self->shortcut_folders); if (self->current_folder) gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), self->current_folder, NULL); + if (current_file) + gtk_file_chooser_set_file (GTK_FILE_CHOOSER (chooser), current_file, NULL); + else if (current_name) + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (chooser), current_name); return chooser; } +G_GNUC_END_IGNORE_DEPRECATIONS static GFile * finish_file_op (GtkFileDialog *self, @@ -753,10 +767,8 @@ gtk_file_dialog_open (GtkFileDialog *self, g_return_if_fail (GTK_IS_FILE_DIALOG (self)); - chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_OPEN, FALSE); - - if (current_file) - gtk_file_chooser_set_file (GTK_FILE_CHOOSER (chooser), current_file, NULL); + chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_OPEN, + current_file, NULL, FALSE); task = g_task_new (self, cancellable, callback, user_data); g_task_set_source_tag (task, gtk_file_dialog_open); @@ -831,10 +843,8 @@ gtk_file_dialog_select_folder (GtkFileDialog *self, g_return_if_fail (GTK_IS_FILE_DIALOG (self)); - chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, FALSE); - - if (current_folder) - gtk_file_chooser_set_file (GTK_FILE_CHOOSER (chooser), current_folder, NULL); + chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, + current_folder, NULL, FALSE); task = g_task_new (self, cancellable, callback, user_data); g_task_set_source_tag (task, gtk_file_dialog_select_folder); @@ -914,12 +924,8 @@ gtk_file_dialog_save (GtkFileDialog *self, g_return_if_fail (GTK_IS_FILE_DIALOG (self)); - chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_SAVE, FALSE); - - if (current_file) - gtk_file_chooser_set_file (GTK_FILE_CHOOSER (chooser), current_file, NULL); - else if (current_name) - gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (chooser), current_name); + chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_SAVE, + current_file, current_name, FALSE); task = g_task_new (self, cancellable, callback, user_data); g_task_set_source_tag (task, gtk_file_dialog_save); @@ -991,7 +997,8 @@ gtk_file_dialog_open_multiple (GtkFileDialog *self, g_return_if_fail (GTK_IS_FILE_DIALOG (self)); - chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_OPEN, TRUE); + chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_OPEN, + NULL, NULL, TRUE); task = g_task_new (self, cancellable, callback, user_data); g_task_set_source_tag (task, gtk_file_dialog_open_multiple); @@ -1064,7 +1071,8 @@ gtk_file_dialog_select_multiple_folders (GtkFileDialog *self, g_return_if_fail (GTK_IS_FILE_DIALOG (self)); - chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, TRUE); + chooser = create_file_chooser (self, parent, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, + NULL, NULL, TRUE); task = g_task_new (self, cancellable, callback, user_data); g_task_set_source_tag (task, gtk_file_dialog_select_multiple_folders); diff --git a/gtk/gtknativedialog.c b/gtk/gtknativedialog.c index 449a628ee2..7cd6e92ec1 100644 --- a/gtk/gtknativedialog.c +++ b/gtk/gtknativedialog.c @@ -22,11 +22,6 @@ #include "gtknativedialogprivate.h" #include "gtkprivate.h" -#include "gtkfilechooserdialog.h" -#include "gtkfilechooserprivate.h" -#include "gtkfilechooserwidget.h" -#include "gtkfilechooserwidgetprivate.h" -#include "gtkfilechooserutils.h" #include "gtksizerequest.h" #include "gtktypebuiltins.h" #include "gtksettings.h" diff --git a/gtk/inspector/logs.c b/gtk/inspector/logs.c index 14fcfe49ef..d4c69bb42e 100644 --- a/gtk/inspector/logs.c +++ b/gtk/inspector/logs.c @@ -27,7 +27,6 @@ #include "window.h" #include "gtktextview.h" -#include "gtkfilechooserdialog.h" #include "gtkcheckbutton.h" #include "gtklabel.h" #include "gtktooltip.h" diff --git a/gtk/meson.build b/gtk/meson.build index d47249005b..d31f1f9d33 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -223,7 +223,6 @@ gtk_public_sources = files([ 'gtkeventcontrollerscroll.c', 'gtkexpander.c', 'gtkexpression.c', - 'gtkfilechooser.c', 'gtkfilechooserdialog.c', 'gtkfilechoosernative.c', 'gtkfilechooserwidget.c', @@ -480,10 +479,6 @@ gtk_public_headers = files([ 'gtkeventcontrollerlegacy.h', 'gtkexpander.h', 'gtkexpression.h', - 'gtkfilechooser.h', - 'gtkfilechooserdialog.h', - 'gtkfilechoosernative.h', - 'gtkfilechooserwidget.h', 'gtkfiledialog.h', 'gtkfilefilter.h', 'gtkfilter.h', diff --git a/tests/testassistant.c b/tests/testassistant.c index d1a9ae2d4a..b478128842 100644 --- a/tests/testassistant.c +++ b/tests/testassistant.c @@ -23,6 +23,8 @@ #include +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + static GtkWidget* get_test_page (const char *text) { diff --git a/testsuite/gtk/widget-refcount.c b/testsuite/gtk/widget-refcount.c index cebd30982a..369ea16292 100644 --- a/testsuite/gtk/widget-refcount.c +++ b/testsuite/gtk/widget-refcount.c @@ -59,7 +59,9 @@ static void filechooserwidget (void) { /* We use GtkFileChooserWidget simply because it's a complex widget, that's it. */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS GtkWidget *w = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_OPEN); +G_GNUC_END_IGNORE_DEPRECATIONS gboolean finalized = FALSE; g_assert_true (g_object_is_floating (w));