类
GtkFileChooserNative
已弃用:4.10
描述 [src]
final class Gtk.FileChooserNative : Gtk.NativeDialog
implements Gtk.FileChooser {
/* No available fields */
}
GtkFileChooserNative
是适用于“打开文件”或“另存为”命令的对话框抽象。
默认情况下,这仅使用 GtkFileChooserDialog
来实现实际的对话框。然而,在某些平台(例如 Windows 和 macOS)上,则使用本机平台文件选择器。当应用程序在没有直接文件系统访问权限的沙箱环境(例如 Flatpak)中运行时,GtkFileChooserNative
可能会调用适当的 API(门户)以允许用户选择文件并将其提供给应用程序。
虽然 GtkFileChooserNative
的 API 与 GtkFileChooserDialog
非常相似,但主要区别在于对话框没有任何 GtkWindow
或 GtkWidget
可以访问。这是必需的,因为在平台本机对话框的情况下可能没有访问权限。
显示、隐藏和运行对话框是由 GtkNativeDialog
函数处理的。
请注意,与 GtkFileChooserDialog
不同,GtkFileChooserNative
对象不是顶级窗口小部件,并且 GTK 不会使其保持活动状态。在完成使用对象之前,由您负责保留一个引用。
典型用法
在最简单的情况下,您可以使用以下代码来使用 GtkFileChooserNative
选择要打开的文件
static void
on_response (GtkNativeDialog *native,
int response)
{
if (response == GTK_RESPONSE_ACCEPT)
{
GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
GFile *file = gtk_file_chooser_get_file (chooser);
open_file (file);
g_object_unref (file);
}
g_object_unref (native);
}
// ...
GtkFileChooserNative *native;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
native = gtk_file_chooser_native_new ("Open File",
parent_window,
action,
"_Open",
"_Cancel");
g_signal_connect (native, "response", G_CALLBACK (on_response), NULL);
gtk_native_dialog_show (GTK_NATIVE_DIALOG (native));
要将 GtkFileChooserNative
用于保存,您可以使用此方法
static void
on_response (GtkNativeDialog *native,
int response)
{
if (response == GTK_RESPONSE_ACCEPT)
{
GtkFileChooser *chooser = GTK_FILE_CHOOSER (native);
GFile *file = gtk_file_chooser_get_file (chooser);
save_to_file (file);
g_object_unref (file);
}
g_object_unref (native);
}
// ...
GtkFileChooserNative *native;
GtkFileChooser *chooser;
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;
native = gtk_file_chooser_native_new ("Save File",
parent_window,
action,
"_Save",
"_Cancel");
chooser = GTK_FILE_CHOOSER (native);
if (user_edited_a_new_document)
gtk_file_chooser_set_current_name (chooser, _("Untitled document"));
else
gtk_file_chooser_set_file (chooser, existing_file, NULL);
g_signal_connect (native, "response", G_CALLBACK (on_response), NULL);
gtk_native_dialog_show (GTK_NATIVE_DIALOG (native));
有关如何最佳设置文件对话框的更多信息,请参阅 GtkFileChooserDialog
文档。
响应代码
GtkFileChooserNative
继承自 GtkNativeDialog
,这意味着如果用户接受,它将返回 GTK_RESPONSE_ACCEPT
,如果用户按取消,它将返回 GTK_RESPONSE_CANCEL
。如果意外关闭窗口,它还可以返回 GTK_RESPONSE_DELETE_EVENT
。
与 GtkFileChooserDialog
的差异
GtkFileChooser
界面中有一些内容无法与 GtkFileChooserNative
一起使用,因为使用这些内容会禁止使用本机对话框。
对话框处于可见状态时,任何更改对话框的操作都不会起作用。在显示对话框之前,请设置所需的所有属性。
Win32 详细信息
在 Windows 上使用了 IFileDialog
实现(在 Windows Vista 中添加)。它支持 GtkFileChooser
拥有的许多功能,但有些事情它无法处理
- 使用 mimetype 添加的任何
GtkFileFilter
如果使用了这些功能中的任何一个,将使用常规 GtkFileChooserDialog
来代替本机功能。
门户详细信息
当 org.freedesktop.portal.FileChooser
门户在会话总线上可用时,它用于启动一个外部进程文件选择器。根据应用程序运行的会话类型,这可能是一个 GTK 文件选择器,也可能不是。
macOS 详细信息
在 macOS 上,NSSavePanel
和 NSOpenPanel
类用于提供本机文件选择器对话框。GtkFileChooser
提供的某些功能不受支持
- 快捷方式文件夹。
已舍弃:4.10
转而使用 GtkFileDialog
。
实例方法
从 GtkNativeDialog 继承的方法(10)
gtk_native_dialog_destroy
销毁一个对话框。
gtk_native_dialog_get_modal
返回对话框是否为模态。
gtk_native_dialog_get_title
获取 GtkNativeDialog
的标题。
gtk_native_dialog_get_transient_for
获取此窗口的瞬态父目录。
gtk_native_dialog_get_visible
确定对话框是否可见。
gtk_native_dialog_hide
如果对话框可见,则隐藏对话框,中止任何交互。
gtk_native_dialog_set_modal
设置对话框为模态或非模态。
gtk_native_dialog_set_title
设置 GtkNativeDialog.
的标题。
gtk_native_dialog_set_transient_for
对话窗口应为它们派生的主应用程序窗口设置瞬态。
gtk_native_dialog_show
在显示器上显示对话框。
从 GtkFileChooser 继承的方法(25)
请参阅GtkFileChooser以获取方法的完整列表。
属性
从 GtkNativeDialog 继承的属性(4)
Gtk.NativeDialog:modal
窗口是否应相对于其瞬态父目录为模态。
Gtk.NativeDialog:title
对话框窗口的标题。
Gtk.NativeDialog:transient-for
对话框的瞬态父目录,或 `NULL` 表示没有。
Gtk.NativeDialog:visible
窗口当前是否可见。
从 GtkFileChooser 继承的属性(6)
GtkFileChooser:action
文件选择器正在执行的操作类型。
已弃用:4.10
GtkFileChooser:create-folders
不在 `GTK_FILE_CHOOSER_ACTION_OPEN` 模式中的文件选择器是否会向用户提供创建新文件夹的选项。
已弃用:4.10
GtkFileChooser:filter
用于选择所显示文件的当前筛选器。
已弃用:4.10
GtkFileChooser:filters
包含已通过 gtk_file_chooser_add_filter() 添加筛选器的 `GListModel`。
已弃用:4.10
GtkFileChooser:select-multiple
是否允许选择多个文件。
已弃用:4.10
GtkFileChooser:shortcut-folders
包含通过 gtk_file_chooser_add_shortcut_folder() 添加的快捷文件夹的 GListModel
。
已弃用:4.10
信号
从 GtkNativeDialog(1)继承的信号
从 GObject(1)继承的信号
GObject::notify
当对象的一个属性通过 g_object_set_property()、g_object_set() 等设置其值时,该对象会发出 notify 信号。