GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces |
GtkFileChooserDialogGtkFileChooserDialog Диалог выбора файлов, подходящий для использования командами "File/Open" или "File/Save" |
#include <gtk/gtk.h>
GtkFileChooserDialog;
GtkWidget* gtk_file_chooser_dialog_new (const gchar *title,
GtkWindow *parent,
GtkFileChooserAction action,
const gchar *first_button_text,
...);
GtkWidget* gtk_file_chooser_dialog_new_with_backend
(const gchar *title,
GtkWindow *parent,
GtkFileChooserAction action,
const gchar *backend,
const gchar *first_button_text,
...);
GObject
+----GInitiallyUnowned
+----GtkObject
+----GtkWidget
+----GtkContainer
+----GtkBin
+----GtkWindow
+----GtkDialog
+----GtkFileChooserDialog
GtkFileChooserDialog реализует GtkFileChooser и AtkImplementorIface.
GtkFileChooserDialog это диалоговое окно подходящее для использования с командами "File/Open" и "File/Save as". Этот виджет работает размещая GtkFileChooserWidget внутри GtkDialog. Он задействует интерфейс GtkFileChooserIface, поэтому вы можете использовать все функции GtkFileChooser в диалоге выбора файлов так же как и для GtkDialog.
Помните что GtkFileChooserDialog не имеет собственных методов. Вместо них, вы должны использовать функции работающие в GtkFileChooser.
Пример 7. Обычное использование
В самых простых случаях вы можете применять следующий код использования GtkFileChooserDialog для выбора открываемого файла:
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new ("Open File",
parent_window,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
char *filename;
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
open_file (filename);
g_free (filename);
}
gtk_widget_destroy (dialog);
Для сохранения с помощью диалога используйте это:
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new ("Save File",
parent_window,
GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
NULL);
gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (dialog), TRUE);
if (user_edited_a_new_document)
{
gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), default_folder_for_saving);
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), "Untitled document");
}
else
gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (dialog), filename_for_existing_document);
if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT)
{
char *filename;
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
save_to_file (filename);
g_free (filename);
}
gtk_widget_destroy (dialog);
GtkFileChooserDialog наследует GtkDialog,
поэтому кнопки входящие в его область
действий имеют коды ответов такие как
GTK_RESPONSE_ACCEPT
и GTK_RESPONSE_CANCEL.
Например, вы можете вызвать
gtk_file_chooser_dialog_new()
следующим образом:
GtkWidget *dialog;
dialog = gtk_file_chooser_dialog_new ("Open File",
parent_window,
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
Это создаёт кнопки "Cancel" и "Open" которые используют заготовленные идентификаторы ответов из GtkResponseType. Для большинства диалоговых окон вы можете использовать собственные коды ответов вместо определённых в GtkResponseType, но GtkFileChooserDialog предполагает что его действия типа "accept", например кнопка "Open" или "Save", будет иметь один из следующих кодов ответа:
Это потому, что GtkFileChooserDialog должен перехватывать ответы и переключаться к каталогам если определены, не позволяя диалогу завершиться реализуя использование известных кодов ответа, чтобы знать какие ответы могут быть заблокированы если определены.
Для суммирования, убедитесь что вы используете stock response code при использовании GtkFileChooserDialog, чтобы гарантировать надлежащую опрерацию.
typedef struct _GtkFileChooserDialog GtkFileChooserDialog;
gtk_file_chooser_dialog_new ()
GtkWidget* gtk_file_chooser_dialog_new (const gchar *title, GtkWindow *parent, GtkFileChooserAction action, const gchar *first_button_text, ...);
Создаёт новый GtkFileChooserDialog. Эта функция аналогична
gtk_dialog_new_with_buttons()
.
|
Заголовок диалога, или |
|
Переходный родитель диалога, или
|
|
Режим открытия или сохранения для диалога |
|
ID заготовки или текст помещаемый в
первую кнопку, или |
|
ID ответа для первой кнопки, затем
дополнительные пары (button, id), заканчивается
|
Возвращает : |
новый GtkFileChooserDialog |
Начиная с версии 2.4
GtkWidget* gtk_file_chooser_dialog_new_with_backend
(const gchar *title,
GtkWindow *parent,
GtkFileChooserAction action,
const gchar *backend,
const gchar *first_button_text,
...);
Создаёт новый GtkFileChooserDialog с
определённым внутренним элементом
(backend). Это особенно полезно, если вы
используете gtk_file_chooser_set_local_only()
для разрешения не локальных файлов и
вы используете более отчетливый vfs,
такой как gnome-vfs, для загрузки файлов.
|
Заголовок диалога, или |
|
Переходный родитель диалога, или
|
|
Режим открытия или сохранения для диалога |
|
Имя определенного элемента файловой системы для использования. |
|
ID заготовки или текст помещаемый в
первую кнопку, или |
|
ID ответа для первой кнопки, затем
дополнительные пары (button, id), заканчивается
|
Возвращает : |
новый GtkFileChooserDialog |
Начиная с версии 2.4