Отправляет email-рассылки с помощью сервиса Sendsay

Практические советы по GTK+

  Все выпуски  

Практические советы по GTK+



Image Viewer 1.7

Продолжаем писать GTK приложение для просмотра графических файлов.
Сегодня рассмотрим новые виджеты - область прокрутки и виджет для выбора каталога.
Разберём на примере создания вкладки для выбора каталога, который нужен для того, чтобы знать, откуда брать графические файлы для быстрого просмотра [в виде иконок]:

file_browser = create_file_browser();

Добавим новый файл в наш проект file_browser.c
Вот его содержимое:

// file_browser.c : Создание окна с выбором каталога

//
#include "image_viewer.h"

static GtkWidget *file_browser=NULL;

GtkWidget* create_file_browser(void)
{
    GtkWidget *vbox;
    GtkWidget *sw;

    // создаём вертикального контейнера - основной виджет
    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, таким образом, виджет у нас позволит выбирать только каталоги.
Что в итоге получилось, Вы можете посмотреть, скачав исходные коды приложения.

Готовое приложение + исходные коды доступны по ссылке: image-viewer1.7.tar.gz [50 кб]

Все вопросы, замечания и пожелания можно отсылать по адресу: comp.soft.prog.gtk-owner@subscribe.ru




В избранное