Библиотека сайта rus-linux.net
Возможности тулкита GTK+ и сопутствующих библиотек
Автор: А.Панин
Дата публикации: 3 декабря 2014 г.
Механизм для работы с файлами, содержащими пары ключ-значение
Не так давно на сайте был опубликован перевод книги "Программирование с использованием gtkmm 3", в которой были описаны ключевые концепции API gtkmm, предназначенного для создания графических пользовательских интерфейсов. Как упоминалось в книге, API gtkmm является оберткой для языка программирования C++ над API GTK+ для языка программирования C. К сожалению, как и большинстве книг, посвященных тулкиту GTK+, в данной книге не было уделено особого внимания как виджетам, появившимся недавно в GTK+, так и возможностям библиотек, которые поставляются и могут использоваться совместно с данным тулкитом (а именно, GLib, GIO, Pango, Cairo). В рамках данной серии статей будут рассматриваться виджеты, недавно появившиеся в составе тулкита, а также полезные функции библиотек, поставляемых в комплекте с тулкитом, которым по разным причинам не было уделено должного внимания в книге. В отличие от книги, в статьях будет использоваться API GTK+ для языка программирования C, так как он является основным API и лучше документирован. Даже в том случае, если вам не нравится язык программирования C, вы сможете использовать изложенную информацию на практике, так как в API тулкита GTK+ и библиотек из его комплекта поставки для различных языков программирования используются аналогичные названия функций/методов, свойств и сигналов.
1. Подготовка к работе
- Компилятор и инструменты для сборки программных компонентов
- Библиотеки тулкита и набор заголовочных файлов
- Приложение для просмотра документации API и сама документация
-
В дистрибутиве Fedora:
# yum groups install "C Development Tools and Libraries" # yum install glib2 glib2-devel gtk3 gtk3-devel # yum install glib2-doc gtk-doc devhelp
-
В дистрибутиве Debian и производных:
# apt-get install build-essential pkg-config autotools-dev # apt-get install libglib2.0-0 libglib2.0-dev libgtk-3-0 libgtk-3-dev # apt-get install libglib2.0-doc libgtk-3-doc devhelp
После установки необходимых программных компонентов и инструментов остается выбрать лишь среду разработки, но этот вопрос не является принципиальным и должен разрешаться в соответствии с предпочтениями каждого конкретного разработчика.
2. Файлы, содержащие пары ключ-значение
Любое, даже самое простое приложение должно где-либо сохранять установленные пользователями значения параметров конфигурации или собранные в ходе работы данные. Никто не запрещает разработчику создавать свой собственный бинарный или текстовый формат хранения данных и сохранять упомянутые данные в файлах этого формата. Но подобная работа связана с излишними трудозатратами, которых можно избежать, воспользовавшись функциями библиотеки GLib. Забегая вперед, следует отметить, что в рамках библиотеки GLib реализовано несколько механизмов, позволяющих сохранять данные конфигурации приложений. В данной статье будет рассматриваться самый простой из этих механизмов, а именно механизм на основе класса GKeyFile, предназначенный для сохранения данных конфигурации приложений или произвольных данных в файлах, содержащих пары ключ-значение.
В рамках класса GKeyFile реализованы функции для работы с файлами, содержащими пары ключ-значение, известными пользователям ОС Windows как файлы конфигурации или ini-файлы. В этих файлах пары ключ-значение могут быть разделены по группам, кроме того, значения одного и того же ключа могут быть различными для нескольких локализаций (эта возможность используется в файлах для запуска приложений с расширением .desktop, которые также являются файлами, содержащими пары ключ-значение, причем их формат стандартизирован в рамках проекта freedesktop). Также следует упомянуть о том, что названия групп для размещения пар ключ-значение помещаются в квадратные скобки ([]
), комментарии предваряются символами комментариев (#
), пары ключ-значение разделяются с помощью символа равенства (=
), а значения из массивов - с помощью символа, задаваемого разработчиком. Файлы описанного формата легко читаются и редактируются, поэтому они могут успешно использоваться для хранения значений параметров конфигурации приложений. Пример содержимого файла описанного формата приведен ниже.
[settings] font=STIX Italic 12 color=rgb(92,53,102) wrap=2 openlast=true lastfile=/tmp/GKeyFileTest/settings.conf
Продолжение статьи : 3. Открытие и закрытие файла.