GtkFileChooserDialog

已弃用:4.10 

说明 [源代码]

final class Gtk.FileChooserDialog : Gtk.Dialog
  implements Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Gtk.FileChooser, Gtk.Native, Gtk.Root, Gtk.ShortcutManager {
  /* No available fields */
}

GtkFileChooserDialog 是一个适合与“文件打开”或“文件保存”命令配合使用的对话框。

An example GtkFileChooserDialog

此小工具通过将 GtkFileChooserWidget 放在 GtkDialog 中进行工作。它公开 GtkFileChooser 接口,因此您可以在文件选择器对话框以及 GtkDialog 的文件选择器函数上使用所有 GtkFileChooser 函数。

请注意,GtkFileChooserDialog 没有任何自己的方法。相反,您应该使用对 GtkFileChooser 起作用的函数。

如果您希望与平台很好地集成,则应使用 GtkFileChooserNative API,它将在可用时使用特定于平台的对话框,否则回退到 GtkFileChooserDialog

典型用法

在最简单的情况下,可以使用以下代码来使用 GtkFileChooserDialog 选择要打开的文件

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_window_present (GTK_WINDOW (dialog));

  g_signal_connect (dialog, "response",
                    G_CALLBACK (on_open_response),
                    NULL);

要将对话框用于保存,可以使用

static void
on_save_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);

      save_to_file (file);
    }

  gtk_window_destroy (GTK_WINDOW (dialog));
}

  // ...
  GtkWidget *dialog;
  GtkFileChooser *chooser;
  GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SAVE;

  dialog = gtk_file_chooser_dialog_new ("Save File",
                                        parent_window,
                                        action,
                                        _("_Cancel"),
                                        GTK_RESPONSE_CANCEL,
                                        _("_Save"),
                                        GTK_RESPONSE_ACCEPT,
                                        NULL);
  chooser = GTK_FILE_CHOOSER (dialog);

  if (user_edited_a_new_document)
    gtk_file_chooser_set_current_name (chooser, _("Untitled document"));
  else
    gtk_file_chooser_set_file (chooser, existing_filename);

  gtk_window_present (GTK_WINDOW (dialog));

  g_signal_connect (dialog, "response",
                    G_CALLBACK (on_save_response),
                    NULL);

设置文件选择器对话框

在各种情况下,您可能需要使用 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_file() 才能让文件选择器显示特定文件夹,即当您执行“另存为”命令并且已经将文件保存在某处时。

响应码

GtkFileChooserDialogGtkDialog 继承,因此其操作区域中的按钮具有诸如 GTK_RESPONSE_ACCEPTGTK_RESPONSE_CANCEL 的响应码。例如,您可以按如下方式调用 gtk_file_chooser_dialog_new() 

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);

这将为“取消”和“打开”创建按钮,它们使用 GtkResponseType 中预定义的响应标识符。对于大多数对话框,您可以使用您自己的自定义响应码,而不是 GtkResponseType 中的响应码,但 GtkFileChooserDialog 假设其“接受”类型的操作(例如“打开”或“保存”按钮)具有以下响应码之一

  • GTK_RESPONSE_ACCEPT
  • GTK_RESPONSE_OK
  • GTK_RESPONSE_YES
  • GTK_RESPONSE_APPLY

这是因为 GtkFileChooserDialog 必须拦截响应并在适当的时候切换到文件夹,而不是让对话框终止 - 实现使用这些已知响应码来知道在适当的时候可以阻止哪些响应 

总结是,当您使用 GtkFileChooserDialog 来确保适当操作时,请务必使用预定义的响应码。

CSS 节点

GtkFileChooserDialog 具有一个名为 window 且样式类为 .filechooserCSS 节点。

已弃用:4.10

改为使用 GtkFileDialog 。

层级关系

hierarchy this GtkFileChooserDialog implements_0 GtkAccessible this--implements_0 implements_1 GtkBuildable this--implements_1 implements_2 GtkConstraintTarget this--implements_2 implements_3 GtkFileChooser this--implements_3 implements_4 GtkNative this--implements_4 implements_5 GtkRoot this--implements_5 implements_6 GtkShortcutManager this--implements_6 ancestor_0 GtkDialog ancestor_0--this ancestor_1 GtkWindow ancestor_1--ancestor_0 ancestor_2 GtkWidget ancestor_2--ancestor_1 ancestor_3 GInitiallyUnowned ancestor_3--ancestor_2 ancestor_4 GObject ancestor_4--ancestor_3

构造函数

gtk_file_chooser_dialog_new

创建新的 GtkFileChooserDialog

已弃用:4.10 

实例方法

GtkDialog 继承的方法 (10)
gtk_dialog_add_action_widget

GtkDialog 的操作区域添加可激活小部件。

已弃用:4.10 

gtk_dialog_add_button

添加带有给定 text 的按钮。

已弃用:4.10 

gtk_dialog_add_buttons

添加多个按钮。

已弃用:4.10 

gtk_dialog_get_content_area

返回 dialog 的内容区域。

已弃用:4.10 

gtk_dialog_get_header_bar

返回 dialog 的标题栏。

已弃用:4.10 

gtk_dialog_get_response_for_widget

获取 dialog 操作区域中某个小部件的响应 ID。

已弃用:4.10 

gtk_dialog_get_widget_for_response

获取在 dialog 操作区域中使用特定响应 ID 的小部件。

已弃用:4.10 

gtk_dialog_response

使用给定的响应 ID 发出 ::response 信号。

已弃用:4.10 

gtk_dialog_set_default_response

根据响应 ID 设置用于该对话框的默认小部件。

已弃用:4.10 

gtk_dialog_set_response_sensitive

使能/禁用对话框按钮的便捷方法。

已弃用:4.10 

GtkWindow 继承的方法 (55)

敬请参阅 GtkWindow 来获取完整的方法列表。

GtkWidget 继承的方法 (162)

敬请参阅 GtkWidget 来获取完整的方法列表。

GObject 继承的方法 (43)

敬请参阅 GObject 来获取完整的方法列表。

GtkAccessible 继承的方法 (19)
gtk_accessible_announce

请求用户的屏幕阅读器发布给定的 message。

自:4.14

gtk_accessible_get_accessible_parent

获取可访问对象的可访问父对象。

自:4.10

gtk_accessible_get_accessible_role

获取可访问对象的可访问角色。

gtk_accessible_get_at_context

获取给定可访问对象的实现。

自:4.10

gtk_accessible_get_bounds

查询 this 可访问区域的坐标和尺寸。

自:4.10

gtk_accessible_get_first_accessible_child

获取可访问对象的第一个可访问子对象。

自:4.10

gtk_accessible_get_next_accessible_sibling

获取可访问对象的下一个可访问同级对象。

自:4.10

gtk_accessible_get_platform_state

查询平台状态,例如 focus。

自:4.10

gtk_accessible_reset_property

将可访问属性重置为其默认 value。

gtk_accessible_reset_relation

将可访问关系重置为其默认 value。

gtk_accessible_reset_state

将可访问状态重置为其默认 value。

gtk_accessible_set_accessible_parent

设置动态对象的上级对象和同级对象。

自:4.10

gtk_accessible_update_next_accessible_sibling

更新下一个动态同级对象。

自:4.10

gtk_accessible_update_property

更新动态属性列表。

gtk_accessible_update_property_value

更新动态属性数组。

gtk_accessible_update_relation

更新动态关系列表。

gtk_accessible_update_relation_value

更新动态关系数组。

gtk_accessible_update_state

更新动态状态列表。

gtk_accessible_update_state_value

更新动态状态数组。

GtkBuildable (1) 继承的方法
gtk_buildable_get_buildable_id

获取 buildable 对象的 ID

GtkFileChooser (25) 继承的方法

请参阅 GtkFileChooser 以获取完整的方法列表。

GtkNative (5) 继承的方法
gtk_native_get_renderer

返回此 GtkNative 使用的渲染器。

gtk_native_get_surface

返回此 GtkNative 的表面。

gtk_native_get_surface_transform

检索 self 的表面变换。

gtk_native_realize

实现 GtkNative

gtk_native_unrealize

取消实现 GtkNative

GtkRoot (3) 继承的方法
gtk_root_get_display

返回此 GtkRoot 所在的显示器。

gtk_root_get_focus

检索根元素中当前获得焦点的微件。

gtk_root_set_focus

如果 focus 不是当前的焦点微件,并且是可获得焦点的,则将其设置为根元素的焦点微件。

属性

GtkDialog (1) 继承的属性
Gtk.Dialog:use-header-bar

如果对话框使用信息标头栏代替操作区域来放置操作按钮,则为 TRUE

已弃用:4.10 

GtkWindow (25) 继承的属性
Gtk.Window:application

与窗口关联的 GtkApplication

Gtk.Window:child

子窗口。

Gtk.Window:decorated

是否窗口应该有边框(也称为“装饰”)。

Gtk.Window:default-height

窗口的默认高度。

Gtk.Window:default-widget

默认窗口。

Gtk.Window:default-width

窗口的默认宽度。

Gtk.Window:deletable

窗口框架是否应该有关闭按钮。

Gtk.Window:destroy-with-parent

如果父元素被销毁,是否应该销毁此窗口。

Gtk.Window:display

将显示此窗口的显示器。

Gtk.Window:focus-visible

是否‘焦点矩形’当前在该窗口中可见。

Gtk.Window:focus-widget

焦点窗口。

Gtk.Window:fullscreened

窗口是否全屏。

Gtk.Window:handle-menubar-accel

窗口框架是否应该处理 F10 来激活菜单栏。

since: 4.2

Gtk.Window:hide-on-close

如果用户单击关闭按钮,是否应该隐藏此窗口。

Gtk.Window:icon-name

指定用作窗口图标的主题图标的名称。

Gtk.Window:is-active

顶级窗口是否为当前处于活动状态的窗口。

Gtk.Window:maximized

窗口是否已最大化。

Gtk.Window:mnemonics-visible

是否当前在该窗口中可见助记符。

Gtk.Window:modal

如果为真,则窗口是模态的。

Gtk.Window:resizable

如果为真,则用户可以调整窗口大小。

Gtk.Window:startup-id

设置窗口启动通知 标识符的只写属性。

Gtk.Window:suspended

窗口是否 已挂起。

since: 4.12

Gtk.Window:title

 窗口的标题。

Gtk.Window:titlebar

标题栏 小组件。

since: 4.6

Gtk.Window:transient-for

窗口的瞬态父 级。

GtkWidget 继承的属性 (34)
Gtk.Widget:can-focus

小组件或其任何后代是否可以接受输入 焦点。

Gtk.Widget:can-target

小组件是否可以接收指针 事件。

Gtk.Widget:css-classes

已应用于此 小组件的 CSS 类别列表。

Gtk.Widget:css-name

CSS 树中此小组件的名称。

Gtk.Widget:cursor

widget 使用的光 标。

Gtk.Widget:focus-on-click

是否在用 鼠标单击时抓取小组件的焦点。

Gtk.Widget:focusable

此小组件本身是否接受输入 焦点。

Gtk.Widget:halign

如果小组件获得额外的 空间,则如何分配水平空间。

Gtk.Widget:has-default

小组件是否是默认 小组件。

Gtk.Widget:has-focus

小组件是否有输入 焦点。

Gtk.Widget:has-tooltip

widget 上启用或禁用 GtkWidget::query-tooltip 信号的 发出。

Gtk.Widget:height-request

重写 小组件的高度请求。

Gtk.Widget:hexpand

是否 水平展开。

Gtk.Widget:hexpand-set

是否使用 hexpand 属性。

Gtk.Widget:layout-manager

用于计算小组件的首选大小并分配其 子级内容的 GtkLayoutManager 实例。

Gtk.Widget:margin-bottom

 小组件底侧的边距。

Gtk.Widget:margin-end

小组件末尾的边距, 水平。

Gtk.Widget:margin-start

小组件开始处的边距, 水平。

Gtk.Widget:margin-top

 小组件顶侧的边距。

Gtk.Widget:name

 小组件的名称。

Gtk.Widget:opacity

 小组件的请求不透明度。

Gtk.Widget:overflow

如何处理小组件内容区域外部的内容 。

Gtk.Widget:parent

此 小组件的父小组件。

Gtk.Widget:receives-default

是否在小组件 获得焦点时接收默认操作。

Gtk.Widget:root

包含此 小组件的小组件树的 GtkRoot 小组件。

Gtk.Widget:scale-factor

 小组件的缩放因子。

Gtk.Widget:sensitive

小组件是否响应 输入。

Gtk.Widget:tooltip-markup

设置工具提示的文本为使用 Pango 标记标记的给定字符串。

Gtk.Widget:tooltip-text

将工具提示的文本设置为给定的 字符串。

Gtk.Widget:valign

如果小组件获得额外的 空间,则如何分配垂直空间。

Gtk.Widget:vexpand

是否 垂直展开。

Gtk.Widget:vexpand-set

是否使用 vexpand 属性。

Gtk.Widget:visible

小组件是否 可见。

Gtk.Widget:width-request

重写 小组件的宽度请求。

GtkAccessible 继承的属性 (1)
GtkAccessible:accessible-role

给定 GtkAccessible 实现的可访问的角色 。

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 

信号

GtkDialog 继承的信号 (2)
GtkDialog::close

当用户使用键盘绑定关闭对话框时发出。

已弃用:4.10 

GtkDialog::response

当操作部件被单击时发出。

已弃用:4.10 

GtkWindow 继承的信号 (5)
GtkWindow::activate-default

当用户激活默认部件时发出。

GtkWindow::activate-focus

当用户激活 window 的当前聚焦部件时发出。

GtkWindow::close-request

当用户单击窗口的关闭按钮时发出。

GtkWindow::enable-debugging

当用户启用或禁用交互式调试时发出。

GtkWindow::keys-changed

当与窗口关联的加速器或助记符集发生改变时发出。

已弃用:4.10 

GtkWidget 继承的信号 (13)
GtkWidget::destroy

所有保存对部件的引用的持有者都应释放所持有的引用的信号。

GtkWidget::direction-changed

当部件的文字方向发生改变时发出。

GtkWidget::hide

widget 被隐藏时发出。

GtkWidget::keynav-failed

如果键盘导航失败,则发出。

GtkWidget::map

widget 将被映射时发出。

GtkWidget::mnemonic-activate

当通过助记符激活部件时发出。

GtkWidget::move-focus

当焦点被移动时发出。

GtkWidget::query-tooltip

当部件的工具提示即将显示时发出。

GtkWidget::realize

widgetGdkSurface 关联时发出。

GtkWidget::show

widget 显示时发出。

GtkWidget::state-flags-changed

当部件状态发生改变时发出。

GtkWidget::unmap

widget 将被取消映射时发出。

GtkWidget::unrealize

当与 widget 关联的 GdkSurface 被销毁时发出。

GObject 继承的信号 (1)
GObject::notify

当对象的一个属性通过 g_object_set_property()、g_object_set()、或其它方法设置其值时,notify 信号就针对该对象发出。