Программирование на GTK2 в среде GNOME (Anjuta, Glade и LibGlade)
Программирование
Статья была опубликована 1 февраля 2010 года в 00:00, а последний раз правилась 1 февраля 2010 года в 10:46.
Постоянная ссылка: http://www.nixp.ru/articles/20.html
Программирование на GTK2 в среде GNOME. Использование Anjuta, Glade и LibGlade.
Программирование на GTK2 в среде GNOME. Использование Anjuta, Glade и LibGlade.
Об инструментах:
Anjuta 1.2.2 — среда разработки на C/C++ и других языках для среды GNOME. Glade 2.5.0 — инструмент проектирования интерфейсов программы для LibGlade или использования отдельно. LibGlade 2.4.0 — библиотека для создания виджетов на GTK, описываемых файлом Glade, и некоторые полезные функции.
Опционально рекомендую установить DevHelp — это справочная система с модулями для разных средств. Необходимо установить модуль с GTK2.0 API. Чаще всего он идет в комплекте с самой программой.
1. Создание проекта
Запускаем Anjuta. [System Menu->Programming->Anjuta IDE.] Когда она запустится, предложит открыть старый проект, создать новый или импортировать его из какой-нибудь директориирис. 1)-->.
Выбираем создание нового, появится визард создания проекта. Жмем Forward и попадаем в выбор типа проекта (Project Type). Выбираем GNOME 2.0 Project, если нам нужна поддежка GNOME-расширений, и GTK 2.0 Project — если нет. Выбираем GNOME 2.0 Project. Жмем Forward — пишем Basic Information о проекте: Название, Версия, Автор, Project Target — это как будет называться executable-файл вашего проекта. Пишем соответственно:
- Project name: Gnome-test
- Project Version: 0.1
- Project Author:
- Project Target: gnome-test
Дальше выбираем язык программирования — C. Если хотите использовать C++, прочитайте начальную документацию про Gtkmm, расширение GTK для C++. Официальная документация: developer.gnome.org/doc/API/2.0/gtk — предполагает использование С.
Дальше Forward — Дополнительная информация о проекте — пишем «Тестовый проект для GNOME». Жмем Forward. Попадаем в Additional Options.
Include GNU Copyright Statements — будет добавлять форму с упоминанием лицензии GNU в каждый созданный файл .h.
Enable Gettext Support — позволит использовать скандартную систему многоязычных интерфейсов. Вместо «…..» будет использован макрос _(«….»), который с помощью файлов .po для нужного языка будет подменять текст в виджетах. Просто оставьте как есть.
Generate source code using glade or glademm — создавать код с использованием glade и ее расширений для C++ (glademm). Включить.
Ниже вы можете выбрать, в какую категорию меню будет попадать ваше приложение и какая у него будет иконка. На ваш выбор. Жмем Forward — смотрим, что нигде не ошиблись и жмем Apply.
Anjuta начнет создание нового проекта, вам нужно немного подождать.
2. Проектируем интерфейс
Созжание проекта завершится словами:
Auto generation completed.................Succesfull
Now build the project to have a LOOK at it
Собственно, проект создан — надо его наполнить чем-нибудь полезным. Для начала нажмите F11. Это скомпилирует созданный проект. Поскольку он у нас пустой, мы только проверим его работу.
(F11= Build -> Build). По кнопке F3 (Build->Execute) проект запустится на выполнение.
Слева вы видите папку gnome-test-0.1, в ней src — это папка с исходными кодами приложения. Сейчас там описано создание пустой формы. Выберите Project->Edit Aplication GUI (Alt+G), чтобы запустить Glade и спроектировать интерфейс. Запустится Glade. В главном окне Glade (там, где New, Open и Save) вы видите форму с именем window1. Двойной клик по ней для редактированиярис. 3)-->.
В окне Palette вы видите доступные вам виджеты. Для переноса их на форму кликните по виджету в Pallete, а потом по контейнеру на форме. Рекомендуется ознакомиться с информацией о контейнерах в GTK2.0. Для учебного примера мы выберем виджет Fixed Positions и уже на него будем добавлять остальные виджеты. Виджет Fixed Positions сам является контейнером, его не рекомендуют использовать из-за проблем с отображением добавленных виджетов при изменение размеров формы.
В главном окне Glade выберите View->Widget Tree. Это покажет дерево размещения виджетов на всех формах проекта. Добавьте на виджет Fixed Positions два виджета Text Entry и один Buttonрис. 4)-->.
Теперь пора заняться обработчиками событий. Выберите Кнопку (Botton), которую вы добавили на форму, и посмотрите на окно Properties: button1. В поле label написано button1 — измените на «нажми меня». Перейдите на закладку Signal. Рядом со строкой Signal вы видите кнопку, на которой написано «…». Нажмите ее. Вы попадете в меню выбора сигнала. Каждый виджет в GTK2.0 в ответ на какое-либо действие (событие) посылает сигнал о нем. Программист должен написать обработчика этого события, если оно имеет для него значение. Нам нужно выбрать clicked. Мы будем обрабатывать событие нажатия на кнопку. После этого нажмите Addрис. 5)-->.
Теперь на гдавной панели Glade нажмите Save, а потом Build. Это добавит созданную вами форму в проект Anjuta.
3. Обработчики
Закройте Glade.
Вы должны увидеть в правой части Anjuta файлы проекта:
- interface.c — внешный вид приложения. То, что вы создавали в Glade;
- Interface.h — заголовочный файл, описывающий функции создания форм интерфейса. Нужен для доступа к ним из других частей приложения;
- Callbacks.c — здесь нужно писать обработчики событий. Там уже есть заготовок для on_button1_clicked, который мы создали в Glade;
- Callbacks.h — то же самое, что и для Interface;
- support.c\h — файлы созданы для внутренних нужд LibGlade;
- Main.c — файл, который запустит создание интерфейса, и его код будет выполняться первым.
Нам нужно написать код в обработчике on_button1_clicked. Переходим в callbacks.c и пишем между { и }.
{ GtkWidget* edit1; GtkWidget* edit2; gchar* text; edit1=lookup_widget(GTK_WIDGET(button1),"entry1"); edit2=lookup_widget(GTK_WIDGET(button1),"entry2"); text=(gchar*)gtk_entry_get_text(GTK_ENTRY(edit1)); gtk_entry_set_text(GTK_ENTRY(edit2),text); }
Т.е. с начала создаем указатели на два поля ввода на форме и указатель на текстовую строку. Заполняем указатели функцией lookup_widget, передавая ей как второй параметр имя искомого виджета (описано при создании виджета в Glade в interface.c). После этого пишем содержимое edit1 в текстовую строку, а потом эту строку в edit2. Компилируем — F11. И запускаем — F3.
P.S. За дополнительной информацией по функциям работы с GtkEntry смотреть http://developer.gnome.org/doc/API/2.2/gtk/GtkEntry.html.
-
Популярные в этом разделе:
- «Программирование с ncurses: первые шаги»,
- «Программирование на GTK2 в среде GNOME (Anjuta, Glade и LibGlade)»,
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1