Наши партнеры

UnixForum





Библиотека сайта 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. Подготовка к работе

Перед тем, как начать работу с тулкитом и библиотеками из его комплекта поставки, следует установить весь необходимый инструментарий. Для этой цели лучше всего использовать пакетный менеджер вашего дистрибутива. Для сборки приведенных в статьях примеров приложений потребуются следующие программные компоненты:
  1. Компилятор и инструменты для сборки программных компонентов
  2. Библиотеки тулкита и набор заголовочных файлов
  3. Приложение для просмотра документации API и сама документация
Ниже представлены команды для установки соответствующих программных компонентов.
  1. В дистрибутиве Fedora:
    # yum groups install "C Development Tools and Libraries"
    # yum install glib2 glib2-devel gtk3 gtk3-devel
    # yum install glib2-doc gtk-doc devhelp
    
  2. В дистрибутиве 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). Также следует упомянуть о том, что названия групп для размещения пар ключ-значение помещаются в квадратные скобки ([]), комментарии предваряются символами комментариев (#), пары ключ-значение разделяются с помощью символа равенства (=), а значения из массивов - с помощью символа, задаваемого разработчиком. Файлы описанного формата легко читаются и редактируются, поэтому они могут успешно использоваться для хранения значений параметров конфигурации приложений. Пример содержимого файла описанного формата приведен ниже.

Пример 1. Файл, содержащий пары ключ-значение
[settings] 
font=STIX Italic 12 
color=rgb(92,53,102) 
wrap=2 
openlast=true 
lastfile=/tmp/GKeyFileTest/settings.conf

Продолжение статьи : 3. Открытие и закрытие файла.