Шрифт:
Интервал:
Закладка:
• Название программы: calc — так будет назван исполнимый файл.
• Файл проекта: calc.glade.
• Каталог исходного кода: src (~/Projects/Calc/src).
• Каталог картинок: pixmap.
• Язык: С.
• Включить поддержку Gnome: Да.
♦ Вкладка «Параметры C»
• Все оставить по умолчанию.
В результате в каталоге ~/Projects/Calc будет создан файл проекта calc.glade. Этот файл полностью описывает наш проект на языке XML. Фрагмент этого файла приведен в листинге 25.1 — просто для общего развития.
Листинг 25.1. Фрагмент файла проекта calc.glade
<?xml version="1.0"?>
<GTK-Interface>
<project>
<name>Calc</name>
<program_name>calc</program_name>
<directory></directory>
<source_directory>src</source—directory>
<pixmaps_directory>pixmaps</pixmaps_directory >
<language>C</language>
<gnome_support>True</gnome_support>
<gettext_support>True</gettext_support>
</project>
<widget>
<class>GtkWindow</class>
<name>window1</name>
<border_width>7</border_width>
<title>window1</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
<allow_shrink>False</allow_shrink>
<allow_grow>True</allow_grow>
<auto_shrink>False</auto_shrink>
<widget>
<class>GtkVBox</class>
<name>vbox2</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
<class>GtkEntry</class>
<name>entry1</name>
<height>50</height>
<can_focus>True</can_focus>
<editable>True</editable>
<text_visible>True</text_visible>
<text_max_length>0</text_max_length>
<text>0</text>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
...
</widget>
...
</widget>
...
</GTK-Interface>
Но кроме этого файла в каталоге Calc ничего нет. А где же исходный код? А где картинки? Чтобы Glade сгенерировала исходный код, нажмите кнопку Построить в главном окне Glade. В результате в каталоге calc будет создана структура подкаталогов, показанная на рис. 24.8.
Рис. 24.8. Структура каталогов проекта
В каталоге macros находятся макросы для поддержки среды Gnome. Каталог po предназначен только для вас — в него вы будете вносить сведения об изменениях в проекте. Каталог src содержит исходный код проекта.
О каталоге src нужно поговорить подробнее. В нем находятся следующие файлы:
♦ interface.*, support.* — эти файлы сгенерированы Glade, и вам не нужно их редактировать;
♦ callback.* — функции-обработчики. Автоматически сгенерированные функции первоначально не делают ничего, это только заготовки. Чтобы ваша программа что-нибудь делала, вам нужно отредактировать файл callback.c;
♦ make.c — вы можете редактировать этот файл, если вам это нужно.
Рассмотрим файл callback.c — его нужно редактировать в первую очередь. Glade создала для вас заготовки функций-обработчиков следующего вида:
Листинг 25.2. Фрагмент файла callback.c
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#include <gnome.h>
#include "callbacks.h"
#include "interface.h"
#include "support.h"
void
on_button_clicked (GtkButton *button,
gpointer user_data) {
}
void
ce_button_clicked (GtkButton *button,
gpointer user_data) {
}
...
void
on_button9_clicked (GtkButton *button,
gpointer user_data) {
}
Вписав в эти заготовки код, выполняющий нужные вам действия, можно попытаться собрать программу. Для этого перейдите в каталог calc и введите команду make.
24.4. Создание меню
Если вам нужно стандартное меню приложения, состоящее из пунктов Файл, Правка, Вид и т.п., используйте виджит Окно приложения Gnome (рис. 24.9) — вы его найдете на страничке виджитов Gnome.
Рис. 24.9. Окно приложения Gnome
Это уже готовый шаблон окна с меню, панелью инструментов и строкой статуса. Удобно?
Если же вам нужно нестандартное меню, то выберите виджит Меню, который находится на вкладке основных виджитов окна Палитра. В окне свойств меню нажмите кнопку Правка меню. В открывшемся окне редактора вы можете создавать пункты меню.
Для создания пункта меню нажмите кнопку Добавить и введите следующую информацию:
♦ Метка — эту надпись увидит пользователь.
♦ Имя — это идентификатор пункта меню.
♦ Обработчик — имя функции-обработчика.
♦ Иконка — иконка, соответствующая пункту меню.
♦ Подсказка — обычно эта подсказка отображается в строке статуса при выборе пункта меню.
♦ Тип элемента — обычный, зависимый (радиокнопка) или независимый (флажок) переключатель.
♦ Ускоритель — горячая комбинация клавиш.
Рис. 24.10. Редактор меню
С помощью стрелок вы можете изменять положение пунктов меню.
24.5. Интересные виджиты
Интересных виджитов намного больше, чем будет описано в этом пункте, — каждый виджит по-своему интересен. Но мне больше всего понравились следующие виджиты:
♦ Шкала — виджит, напоминающий спидометр, находится на вкладке элементов Gnome.
♦ Выбор цвета — если этот виджит расположить в контейнере, то получится окно выбора цвета, которое очень похоже на стандартное окно выбора цвета среды Gnome (вкладка Дополнительно),
♦ Выбор шрифта — позволяет пользователю выбрать шрифт (вкладка Дополнительно).
♦ Диалоговое окно свойств — уже готовое окно свойств (напоминает окно свойств проекта), содержащее вкладки и кнопки OK, Применить, Закрыть, Справка (вкладка Gnome).
Рис. 24.11. Шкала
Рис. 24.12. Выбор цвета
Рис. 24.13. Выбор шрифта
Рис. 24.14. Окно свойств
Глава 25
Пакет Dialog
25.1. Что такое Dialog?
Пакет dialog служит для вывода диалоговых окоп в сценариях bash. Элементы пользовательского интерфейса мы будем, как и в GTK+, называть виджитами. Пакет dialog позволяет использовать следующие виджиты:
♦ Infobox, Msgbox — выводят информационные сообщения;
♦ Inputbox — принимает ввод текстовой информации;
♦ Calendar — позволяет выбрать дату;
♦ Radiolist — список зависимых переключателей;
♦ Checklist — список независимых переключателей;
♦ Menubox — используется для организации меню;
♦ Gauge — шкала прогресса.
Установив пакет dialog, в каталоге /usr/share/doc/dialog-<версия> вы найдете много примеров применения этого замечательного пакета.
25.2. Сообщения
Начнем с самого простого — отображения небольших текстовых сообщений. Для этой цели можно использовать два виджита — Infobox или Msgbox. Первый отличается от второго тем, что не ждет подтверждения пользователя о прочтении, а закрывается через некоторое время. Виджит Msgbox ждет, пока пользователь нажмет кнопку OK или клавишу Enter.
Рассмотрим пример использования виджита Msgbox:
Листинг 25.1. Виджит Msgbox
#!/bin/sh
DIALOG=${DIALOG=dialog}
$DIALOG --title "MESSAGE BOX" --clear
--msgbox "Этот виджит используется для вывода
сообщений. Ждет, пока пользователь нажмет Enter" 10 41
case $? in
0)
echo "OK";;
255)
echo "Нажата ESC.";;
esac
Теперь разберемся, что есть что. Параметр --title программы dialog задает заголовок виджита (рис. 25.1) Параметр --msgbox сообщает программе тип виджита, который нужно отобразить. После этого параметра нужно указать текст сообщения, заключенный в кавычки. В тексте можно использовать управляющие последовательности (b, n, t, a и др.). После сообщения задаются размеры виджита.
Рис. 25.1. Виджит Msgbox
Конструкция case проверяет возвращенное программой dialog значение. Если пользователь нажал OK (или <Ввод>), то программа возвращает 0, а если клавишу Esc, то 255.
Виджит Infobox следует использовать так:
Листинг 25.2. Использование виджита Infobox
- Операционная система UNIX - Андрей Робачевский - Программное обеспечение
- Разработка приложений в среде Linux. Второе издание - Майкл Джонсон - Программное обеспечение
- Искусство программирования для Unix - Эрик Реймонд - Программное обеспечение
- Linux - Алексей Стахнов - Программное обеспечение
- Fedora 8 Руководство пользователя - Денис Колисниченко - Программное обеспечение
- Недокументированные и малоизвестные возможности Windows XP - Роман Клименко - Программное обеспечение
- Изучаем Windows Vista. Начали! - Дмитрий Донцов - Программное обеспечение
- Windows Vista - Виталий Леонтьев - Программное обеспечение
- Архитектура операционной системы UNIX - Морис Бах - Программное обеспечение
- Windows Vista. Трюки и эффекты - Юрий Зозуля - Программное обеспечение