GtkFileChooserDialog
GtkFileChooserDialog — Диалоговое окно выбора файла, подходящее для команд «Открыть файл» или «Сохранить файл»
Функции
Действия
| response.activate |
Типы и значения
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkWindow
╰── GtkDialog
╰── GtkFileChooserDialog
Реализованные интерфейсы
GtkFileChooserDialog реализует GtkAccessible, GtkBuildable, GtkConstraintTarget, GtkNative, GtkShortcutManager, GtkRoot и GtkFileChooser.
Включенные файлы
#include <gtk/gtk.h>
Описание
GtkFileChooserDialog — это диалоговое окно, подходящее для использования с командами «Открыть файл» или «Сохранить файл». Этот виджет работает, помещая GtkFileChooserWidget внутрь GtkDialog. Он предоставляет интерфейс GtkFileChooser, поэтому вы можете использовать все функции GtkFileChooser в диалоговом окне выбора файла, а также функции для GtkDialog.
Обратите внимание, что GtkFileChooserDialog не имеет собственных методов. Вместо этого вы должны использовать функции, работающие с GtkFileChooser.
Если вы хотите хорошо интегрироваться с платформой, используйте API GtkFileChooserNative, который будет использовать платформенно-специфическое диалоговое окно, если оно доступно, и в противном случае вернётся к GtkFileChooserDialog.
Типичное использование
В простейшем случае вы можете использовать следующий код, чтобы использовать GtkFileChooserDialog для выбора файла для открытия:
Для использования диалогового окна для сохранения вы можете использовать это:
Настройка диалогового окна выбора файла
Существуют различные случаи, в которых вам может потребоваться использовать GtkFileChooserDialog:
Для выбора файла для открытия. Используйте GTK_FILE_CHOOSER_ACTION_OPEN.
Для сохранения файла впервые. Используйте GTK_FILE_CHOOSER_ACTION_SAVE, и предложите имя, например, «Без названия» с помощью
gtk_file_chooser_set_current_name().Для сохранения файла под другим именем. Используйте GTK_FILE_CHOOSER_ACTION_SAVE, и установите существующий файл с помощью
gtk_file_chooser_set_file().Для выбора папки вместо файла. Используйте GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER.
Обратите внимание, что старые версии документации по выбору файла предлагали использовать gtk_file_chooser_set_current_folder() в различных ситуациях, с целью позволить приложению предложить разумную папку по умолчанию. Это больше не считается хорошей политикой, так как теперь диалог выбора файла сам может делать хорошие предложения. В общем случае вы должны заставлять диалог выбора файла показывать конкретную папку только тогда, когда это уместно использовать gtk_file_chooser_set_file(), т. е. когда вы выполняете команду «Сохранить как» и у вас уже есть сохранённый файл где-то.
Коды ответа
GtkFileChooserDialog наследуется от GtkDialog, поэтому кнопки, которые находятся в области действия, имеют коды ответов, такие как GTK_RESPONSE_ACCEPT и GTK_RESPONSE_CANCEL. Например, вы могли бы вызвать gtk_file_chooser_dialog_new() следующим образом:
static void
on_open_response (GtkDialog *dialog,
int response)
{
if (response == GTK_RESPONSE_ACCEPT)
{
GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
g_autoptr(GFile) file = gtk_file_chooser_get_file (chooser);
open_file (file);
}
gtk_window_destroy (GTK_WINDOW (dialog));
}
// ...
GtkWidget *dialog;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
dialog = gtk_file_chooser_dialog_new ("Open File",
parent_window,
action,
_("_Cancel"),
GTK_RESPONSE_CANCEL,
_("_Open"),
GTK_RESPONSE_ACCEPT,
NULL);
gtk_widget_show (dialog);
g_signal_connect (dialog, "response",
G_CALLBACK (on_open_response),
NULL);Это создаст кнопки «Отмена» и «Открыть», которые используют предопределённые идентификаторы ответов из GtkResponseType. Для большинства диалоговых окон вы можете использовать свои собственные пользовательские коды ответов вместо тех, что находятся в GtkResponseType, но GtkFileChooserDialog предполагает, что его действие типа «принять», например, кнопка «Открыть» или «Сохранить», будет иметь один из следующих кодов ответов:
Это связано с тем, что GtkFileChooserDialog должен перехватывать ответы и переключаться на папки при необходимости, а не позволять диалогу завершиться — реализация использует эти известные коды ответов, чтобы знать, какие ответы можно заблокировать при необходимости.
Подводя итог, убедитесь, что вы используете предопределённый код ответа при использовании GtkFileChooserDialog, чтобы обеспечить правильную работу.
Функции
gtk_file_chooser_dialog_new ()
GtkWidget * gtk_file_chooser_dialog_new (const char *title,GtkWindow *parent,GtkFileChooserAction action,const char *first_button_text,...);
Создаёт новый GtkFileChooserDialog. Эта функция аналогична gtk_dialog_new_with_buttons().
Параметры
title | Заголовок диалогового окна или | [allow-none] |
parent | Временный родитель диалогового окна или | [allow-none] |
action | Режим открытия или сохранения для диалогового окна | |
first_button_text | Текст первой кнопки или | [allow-none] |
... | Идентификатор ответа для первой кнопки, затем дополнительные пары (кнопка, идентификатор), заканчивающиеся |
Возвращает
новый GtkFileChooserDialog
Типы и значения
GtkFileChooserDialog
typedef struct _GtkFileChooserDialog GtkFileChooserDialog;
Подробности действия
Действие “response.activate”
Активирует стандартный ответ диалогового окна.
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkFileChooserDialog.html