Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Implemented Interfaces  |  Properties

GtkFileSelection

GtkFileSelection Приглашение ввести имя файла или каталога

Краткое описание

#include <gtk/gtk.h> GtkFileSelection; GtkWidget* gtk_file_selection_new (const gchar *title); void gtk_file_selection_set_filename (GtkFileSelection *filesel, const gchar *filename); const gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel); void gtk_file_selection_complete (GtkFileSelection *filesel, const gchar *pattern); void gtk_file_selection_show_fileop_buttons (GtkFileSelection *filesel); void gtk_file_selection_hide_fileop_buttons (GtkFileSelection *filesel); gchar** gtk_file_selection_get_selections (GtkFileSelection *filesel); void gtk_file_selection_set_select_multiple (GtkFileSelection *filesel, gboolean select_multiple); gboolean gtk_file_selection_get_select_multiple (GtkFileSelection *filesel);

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

GObject +----GInitiallyUnowned +----GtkObject +----GtkWidget +----GtkContainer +----GtkBin +----GtkWindow +----GtkDialog +----GtkFileSelection

Реализуемые интерфейсы

GtkFileSelection реализует AtkImplementorIface.

Свойства

"filename" gchararray : Read / Write "select-multiple" gboolean : Read / Write "show-fileops" gboolean : Read / Write

Описание

GtkFileSelection должен использоваться для получения от пользователя имени файла или каталога. Он создаёт новое окно диалога содержащее список каталогов и список файлов соответствующих текущемму рабочему каталогу. Файловой системой можно управлять используя список каталогов или выпадающее меню истории. Альтернативно, клавиша TAB может использоваться для дополнения используемого имени файла как это обычно делается в текстовых редакторах таких как emacs и jed.

Диалоги выбора файла создаются с помощью вызова gtk_file_selection_new().

Имя файла по умолчанию может быть установлено используя gtk_file_selection_set_filename() а выбранное имя файла определяется с помощью gtk_file_selection_get_filename().

Используйте gtk_file_selection_complete() для отображения файлов и каталогов соответствующих определенному шаблону. Например это можно использовать для отображения только *.txt файлов, или только файлов начинающихся с gtk*.

Простые файловые операции; создание каталога, удаление файла и переименование файла, доступны из кнопок в верху диалога. Они могут быть скрыты используя gtk_file_selection_hide_fileop_buttons() и показаны снова используя gtk_file_selection_show_fileop_buttons().

Пример 1. Получение имя файла от пользователя.

/* Виджет выбора файла и строка хранения выбранного имени файла */ void store_filename (GtkWidget *widget, gpointer user_data) { GtkWidget *file_selector = GTK_WIDGET (user_data); const gchar *selected_filename; selected_filename = gtk_file_selection_get_filename (GTK_FILE_SELECTION (file_selector)); g_print ("Selected filename: %s\n", selected_filename); } void create_file_selection (void) { GtkWidget *file_selector; /* Создаём селектор */ file_selector = gtk_file_selection_new ("Please select a file for editing."); g_signal_connect (GTK_FILE_SELECTION (file_selector)->ok_button, "clicked", G_CALLBACK (store_filename), file_selector); /* Убеждаемся в закрытие диалога после нажатия кнопки пользователем. */ g_signal_connect_swapped (GTK_FILE_SELECTION (file_selector)->ok_button, "clicked", G_CALLBACK (gtk_widget_destroy), file_selector); g_signal_connect_swapped (GTK_FILE_SELECTION (file_selector)->cancel_button, "clicked", G_CALLBACK (gtk_widget_destroy), file_selector); /* Отображаем диалог */ gtk_widget_show (file_selector); }

Детали

GtkFileSelection

typedef struct { GtkWidget *dir_list; GtkWidget *file_list; GtkWidget *selection_entry; GtkWidget *selection_text; GtkWidget *main_vbox; GtkWidget *ok_button; GtkWidget *cancel_button; GtkWidget *help_button; GtkWidget *history_pulldown; GtkWidget *history_menu; GList *history_list; GtkWidget *fileop_dialog; GtkWidget *fileop_entry; gchar *fileop_file; gpointer cmpl_state; GtkWidget *fileop_c_dir; GtkWidget *fileop_del_file; GtkWidget *fileop_ren_file; GtkWidget *button_area; GtkWidget *action_area; } GtkFileSelection;

GtkFileSelection структура содержит следующие GtkWidget поля:

*fileop_dialog;

Диалог используемый для отображения GtkFileSelection. Он может быть настроен, добавлены/удалены виджеты из него, используя стандартные функции GtkDialog.

*ok_button, *cancel_button;

Две основные кнопки с которыми связываются сигналы для выполнения действий когда пользователь нажимает OK или Cancel.

*history_pulldown;

GtkOptionMenu используется для выпадающего меню истории каталога.

*fileop_c_dir, *fileop_del_file, *fileop_ren_file;

Кнопки которые появляются в верху диалога выбора файла. Эти кнопки действий ("operation buttons") могут быть скрыты и вновь показаны с помощью gtk_file_selection_hide_fileop_buttons() и gtk_file_selection_show_fileop_buttons() соответственно.


gtk_file_selection_new ()

GtkWidget*  gtk_file_selection_new          (const gchar *title);

Создаёт новый диалог выбора файла. По умолчанию он будет содержать GtkTreeView текущемго рабочего каталога приложения и список файлов. Присутствуют также операционные кнопки позволяющие пользователю создавать каталоги, удалять файлы или переименовывать их.

title :

Сообщение которое будет помещено в заголовок панели запроса файла.

Возвращает :

Новый выбор файла.


gtk_file_selection_set_filename ()

void gtk_file_selection_set_filename (GtkFileSelection *filesel, const gchar *filename);

Устанавливает путь по умолчанию для запроса файла. Если filename включает путь каталога, то этот путь используется как текущий рабочий каталог.

Следовательно может быть открыт запрос текущемго рабочего каталога и без имени файла, filename должен иметь конечный разделитель каталога.

Кодировка filename это преимущественно кодировка имени файла GLib, которая может не быть UTF-8. Смотрите g_filename_from_utf8().

filesel :

GtkFileSelection.

filename :

Строка для установки имени файла по умолчанию.


gtk_file_selection_get_filename ()

const gchar* gtk_file_selection_get_filename (GtkFileSelection *filesel);

Эта функция возвращает выбранное имя файла в кодировке имен файлов GLib. Для преобразования в UTF-8, вызовите g_filename_to_utf8(). Возвращаемая строка указывает статический буфер и должна быть скопирована, если вы планируете иметь её в наличии.

Если нет выбранного файла, то возвращается путь выбранного каталога.

filesel :

GtkFileSelection

Возвращает :

Текущий выбранный файл в дисковой кодировке.


gtk_file_selection_complete ()

void gtk_file_selection_complete (GtkFileSelection *filesel, const gchar *pattern);

Попытается сопоставить pattern доступные имена файлов или подкаталогов в текущемм каталоге. Если соответствие определено, соответствующее имя файла появится в поле ввода текста диалога выбора файла. Если определено частичное соответствие, список "Files" будет содержать имена файлов которые соответствуют этой части, а список "Folders" те каталоги которые соответствуют данной части.

filesel :

GtkFileSelection.

pattern :

Строка символов которым могут или не могут соответствовать имена файлов в текущемм каталоге.


gtk_file_selection_show_fileop_buttons ()

void gtk_file_selection_show_fileop_buttons (GtkFileSelection *filesel);

Показывает кнопки файловых операций, если они предварительно были скрыты. Остальная часть виджетов в диалоге соответственно изменяется.

filesel :

GtkFileSelection.


gtk_file_selection_hide_fileop_buttons ()

void gtk_file_selection_hide_fileop_buttons (GtkFileSelection *filesel);

Скрывает кнопки файловых операций которые обычно появляются в верху диалога. Может быть полезной, если вам понадобится создать измененный селектор файлов, основываясь на GtkFileSelection.

filesel :

GtkFileSelection.


gtk_file_selection_get_selections ()

gchar** gtk_file_selection_get_selections (GtkFileSelection *filesel);

Определяет список выбранных пользователем файлов в диалоговом окне. Эта функция предназначена для использования при выборе пользователем множества файлов в списке.

Имя файла в кодировке имен файлов GLib. Для преобразования в UTF-8, вызовите g_filename_to_utf8() на каждой строке.

filesel :

GtkFileSelection

Возвращает :

NULL-завершённый массив строк. Используйте g_strfreev() для его освобождения.


gtk_file_selection_set_select_multiple ()

void gtk_file_selection_set_select_multiple (GtkFileSelection *filesel, gboolean select_multiple);

Устанавливает позволен ли пользователю множественный выбор файлов в списке. Используйте gtk_file_selection_get_selections() для получения списка выбранных файлов.

filesel :

GtkFileSelection

select_multiple :

Позволено или нет пользователю выбирать множество файлов в списке.


gtk_file_selection_get_select_multiple ()

gboolean gtk_file_selection_get_select_multiple (GtkFileSelection *filesel);

Определяет может ли пользователь выбирать множество файлов в списке или нет. Смотрите gtk_file_selection_set_select_multiple().

filesel :

GtkFileSelection

Возвращает :

TRUE если пользователю позволен множественный выбор фалов в списке файлов

Детали свойств

Свойство "filename"

  "filename"             gchararray            : Read / Write

Текущее выбранное имя файла.

Значение по умолчанию : NULL


Свойство "select-multiple"

  "select-multiple"      gboolean              : Read / Write

Позволен ли множественный выбор файлов.

Значение по умолчанию : FALSE


Свойство "show-fileops"

  "show-fileops"         gboolean              : Read / Write

Отображаются ли кнопки файловых операций.

Значение по умолчанию : FALSE

Смотрите также

GtkDialog

Добавьте ваши собственные виджеты в GtkFileSelection.