Продолжаем писать GTK приложение для просмотра графических файлов. Сегодня
рассмотрим новые виджеты - область прокрутки и виджет для выбора
каталога. Разберём на примере создания вкладки для выбора каталога, который
нужен для того, чтобы знать, откуда брать графические файлы для быстрого
просмотра [в виде иконок]:
file_browser =
create_file_browser();
Добавим новый файл в наш проект file_browser.c Вот его
содержимое: // file_browser.c :
Создание окна с выбором каталога // #include
"image_viewer.h"
// создаём
вертикального контейнера - основной виджет vbox = gtk_vbox_new
(FALSE, 0); // устанавливаем
минимальный размер вертикального контейнера по горизонтали
gtk_widget_set_size_request (vbox, 10, -1);
// создать виджет -
область прокрутки sw =
gtk_scrolled_window_new (NULL, NULL); // устанавливаем тип
рамки
gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW
(sw),GTK_SHADOW_ETCHED_IN); // выбиваем политику
отображения полос прокрутки по вертикали и горизонтали -
автоматически, // т.е. отображать
только когда требуется
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
(sw),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); // создать
виджет для
выбора каталога file_browser =
gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); // упаковка
// область прокрутки в
вертикальный контейнер gtk_box_pack_start
(GTK_BOX (vbox), sw, TRUE, TRUE, 0); // виджет для выбора
каталога в окно с областью прокрутки
gtk_scrolled_window_add_with_viewport
(GTK_SCROLLED_WINDOW(sw),file_browser);
//gtk_widget_grab_focus (file_browser); return vbox; }
Для начала
создаём вертикальный контейнер vbox в который всё упакуем. Для нашего
виджета выбора файлов может быть выделено совсем мало места на экране, поэтому,
чтобы его можно было бы уменьшить до маленьких размеров, упакуем виджет выбора
файлов в область прокрутки GtkScrolledWindow. Мы добавили дочерний виджет в
область прокрутки с помощью gtk_scrolled_window_add_with_viewport(), но если бы
наш дочерний виджет имел собственную прокрутку, то лучше добавлять с помощью
gtk_container_add(). Диалог для выбора файла мы уже использовали, ещё есть
виджет, который можно встроить в своё приложение. Мы его создадим функцией
gtk_file_chooser_widget_new() с
параметром GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, таким образом, виджет у нас
позволит выбирать только каталоги. Что в итоге получилось, Вы можете
посмотреть, скачав исходные коды приложения.