GtkFileChooserNative
GtkFileChooserNative — Диалоговое окно выбора файла, подходящее для команд «Файл/Открыть» или «Файл/Сохранить»
Функции
| GtkFileChooserNative * | gtk_file_chooser_native_new () |
| const char * | gtk_file_chooser_native_get_accept_label () |
| void | gtk_file_chooser_native_set_accept_label () |
| const char * | gtk_file_chooser_native_get_cancel_label () |
| void | gtk_file_chooser_native_set_cancel_label () |
Включаемые файлы
#include <gtk/gtk.h>
Описание
GtkFileChooserNative — это абстракция диалогового окна, подходящая для команд «Файл/Открыть» или «Файл/Сохранить как». По умолчанию, для реализации самого диалогового окна используется GtkFileChooserDialog. Однако на некоторых платформах, таких как Windows и macOS, используется собственный файловый диалог платформы. Когда приложение работает в защищённой среде без прямого доступа к файловой системе (например, в Flatpak), GtkFileChooserNative может вызывать соответствующие API (порталы), чтобы пользователь мог выбрать файл и сделать его доступным для приложения.
Хотя API GtkFileChooserNative тесно связан с GtkFileChooserDialog, основное отличие заключается в том, что нет доступа к любому GtkWindow или GtkWidget для диалогового окна. Это необходимо, так как на некоторых платформах может не быть диалогового окна. Показ, скрытие и запуск диалогового окна обрабатываются функциями GtkNativeDialog.
Типичное использование
В простейшем случае, для выбора файла для открытия можно использовать следующий код:
Для использования диалогового окна для сохранения можно использовать этот код:
GtkFileChooserNative *native;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
gint res;
native = gtk_file_chooser_native_new ("Open File",
parent_window,
action,
"_Open",
"_Cancel");
res = gtk_native_dialog_run (GTK_NATIVE_DIALOG (native));
if (res == GTK_RESPONSE_ACCEPT)
{
char *filename;
GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
filename = gtk_file_chooser_get_filename (chooser);
open_file (filename);
g_free (filename);
}
g_object_unref (native);Более подробную информацию о том, как лучше настроить диалог выбора файла, см. в документации GtkFileChooserDialog.
Коды ответов
GtkFileChooserNative наследуется от GtkNativeDialog, что означает, что он вернёт GTK_RESPONSE_ACCEPT, если пользователь принял, и GTK_RESPONSE_CANCEL, если он нажал «Отмена». Также может вернуть GTK_RESPONSE_DELETE_EVENT, если окно было неожиданно закрыто.
Отличия от GtkFileChooserDialog
Существуют некоторые функции API GtkFileChooser, которые нельзя использовать с GtkFileChooserNative, поскольку это запретит использование собственного диалогового окна.
Не поддерживаются сигналы, которые генерируются, когда пользователь перемещается по диалоговому окну, включая:
Также нельзя использовать методы, которые непосредственно управляют навигацией пользователя:
gtk_file_chooser_unselect_filename()
gtk_file_chooser_select_all()
gtk_file_chooser_unselect_all()
Если вам нужны вышеперечисленные функции, придётся использовать GtkFileChooserDialog напрямую.
Никакие операции, изменяющие диалоговое окно, не работают, пока диалоговое окно отображается. Установите все необходимые свойства перед отображением диалогового окна.
Подробности для Win32
В Windows используется реализация IFileDialog (добавлена в Windows Vista). Она поддерживает многие функции, которые предоставляет GtkFileChooserDialog, но есть и исключения:
Дополнительные виджеты, добавленные с помощью
gtk_file_chooser_set_extra_widget().Использование пользовательских превью, подключившись к «update-preview».
Любой GtkFileFilter, добавленный с использованием MIME-типов или пользовательского фильтра.
Если используются какие-либо из этих функций, то вместо родного диалогового окна будет использоваться обычный GtkFileChooserDialog.
Подробности портала
Когда портал org.freedesktop.portal.FileChooser доступен на шине сеанса, он используется для вывода диалогового окна выбора файла вне процесса. В зависимости от типа сеанса, в котором запущено приложение, это может быть или не быть диалоговым окном GTK+. В этой ситуации следующие вещи не поддерживаются и будут проигнорированы:
Дополнительные виджеты, добавленные с помощью
gtk_file_chooser_set_extra_widget().Использование пользовательских превью, подключившись к «update-preview».
Любой GtkFileFilter, добавленный с пользовательским фильтром.
Подробности для macOS
В macOS используются классы NSSavePanel и NSOpenPanel для предоставления собственных диалоговых окон выбора файла. Некоторые функции, предоставляемые GtkFileChooserDialog, не поддерживаются:
Дополнительные виджеты, добавленные с помощью
gtk_file_chooser_set_extra_widget(), если виджет не является экземпляром GtkLabel, в этом случае текст метки используется для установки свойства экземпляра NSSavePanel message.Использование пользовательских превью, подключившись к «update-preview».
Любой GtkFileFilter, добавленный с пользовательским фильтром.
Папки ярлыков.
Функции
gtk_file_chooser_native_new ()
GtkFileChooserNative * gtk_file_chooser_native_new (const gchar *title,GtkWindow *parent,GtkFileChooserAction action,const gchar *accept_label,const gchar *cancel_label);
Создаёт новый GtkFileChooserNative.
Параметры
title | Заголовок диалогового окна, или | [allow-none] |
parent | Родительское диалоговое окно, или | [allow-none] |
action | Режим диалогового окна (открытие или сохранение) | |
accept_label | Текст для кнопки «Принять», или | [allow-none] |
cancel_label | Текст для кнопки «Отмена», или | [allow-none] |
Возвращаемое значение
новый GtkFileChooserNative
С: 3.20
gtk_file_chooser_native_get_accept_label ()
const char *
gtk_file_chooser_native_get_accept_label
(GtkFileChooserNative *self); Получает текст пользовательской надписи для кнопки «Принять».
Параметры
self | объект GtFileChooserNative |
Возвращаемое значение
Пользовательская надпись, или NULL по умолчанию. Эта строка принадлежит GTK+ и не должна изменяться или освобождаться.
[nullable]
С: 3.20
gtk_file_chooser_native_set_accept_label ()
void gtk_file_chooser_native_set_accept_label (GtkFileChooserNative *self,const char *accept_label);
Устанавливает пользовательский текст для кнопки «Принять».
Если символы в label предваряются нижним подчеркиванием, они подчеркиваются. Если вам нужен буквальный символ нижнего подчеркивания в метке, используйте «__» (два нижних подчеркивания). Первый подчеркнутый символ представляет собой ярлык клавиатуры, называемый мнемоникой. Нажатие клавиши Alt и этой клавиши активирует кнопку.
Параметры
self | объект GtFileChooserNative | |
accept_label | пользовательская метка или | [allow-none] |
С: 3.20
gtk_file_chooser_native_get_cancel_label ()
const char *
gtk_file_chooser_native_get_cancel_label
(GtkFileChooserNative *self); Получает пользовательский текст для кнопки «Отмена».
Параметры
self | объект GtFileChooserNative |
Возвращаемое значение
Пользовательская надпись, или NULL по умолчанию. Эта строка принадлежит GTK+ и не должна изменяться или освобождаться.
[nullable]
С: 3.20
gtk_file_chooser_native_set_cancel_label ()
void gtk_file_chooser_native_set_cancel_label (GtkFileChooserNative *self,const char *cancel_label);
Устанавливает пользовательский текст для кнопки «Отмена».
Если символы в label предваряются нижним подчеркиванием, они подчеркиваются. Если вам нужен буквальный символ нижнего подчеркивания в метке, используйте «__» (два нижних подчеркивания). Первый подчеркнутый символ представляет собой ярлык клавиатуры, называемый мнемоникой. Нажатие клавиши Alt и этой клавиши активирует кнопку.
Параметры
self | объект GtFileChooserNative | |
cancel_label | пользовательская метка или | [allow-none] |
С: 3.20
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/gtk3-GtkFileChooserNative.html