Spec-Zone.ru › GTK 4.0

GtkFileChooserDialog

GtkFileChooserDialog — Диалоговое окно выбора файла, подходящее для команд «Открыть файл» или «Сохранить файл»

Функции

GtkWidget * gtk_file_chooser_dialog_new ()

Действия

response.activate

Типы и значения

GtkFileChooserDialog

Иерархия объектов

    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 предполагает, что его действие типа «принять», например, кнопка «Открыть» или «Сохранить», будет иметь один из следующих кодов ответов:

  • GTK_RESPONSE_ACCEPT

  • GTK_RESPONSE_OK

  • GTK_RESPONSE_YES

  • GTK_RESPONSE_APPLY

Это связано с тем, что 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

Заголовок диалогового окна или NULL.

[allow-none]

parent

Временный родитель диалогового окна или NULL.

[allow-none]

action

Режим открытия или сохранения для диалогового окна

first_button_text

Текст первой кнопки или NULL.

[allow-none]

...

Идентификатор ответа для первой кнопки, затем дополнительные пары (кнопка, идентификатор), заканчивающиеся NULL

Возвращает

новый GtkFileChooserDialog

Типы и значения

GtkFileChooserDialog

typedef struct _GtkFileChooserDialog GtkFileChooserDialog;

Подробности действия

Действие “response.activate”

Активирует стандартный ответ диалогового окна.

См. также

GtkFileChooser, GtkDialog, GtkFileChooserNative

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API