Библиотека сайта rus-linux.net
Фреймворк GStreamer. Руководство разработчика плагинов. Добавление свойств. Сигналы
Оригинал: GStreamer Plugin Writer's GuideАвторы: Richard John Boulton, Erik Walthinsen, Steve Baker, Leif Johnson, Ronald S. Bultje, Stefan Kost, Tim-Philipp Muller, Wim Taymans
Дата публикации: 19 июля 2014 г.
Перевод: А.Панин
Дата перевода: 26 июля 2014 г.
Глава 9. Добавление свойств
Основным и наиболее важным способом управления поведением элемента является механизм свойств объектной модели GObject. Свойства объектной модели GObject элемента описываются в рамках функции инициализации его класса _class_init ()
. Элемент также может реализовать необязательные функции _get_property ()
и _set_property ()
. Эти функции будут вызываться в том случае, если приложение будет изменять или запрашивать значение свойства, причем с их помощью будет копироваться внутренне значение запрошенного свойства или выполняться действие, требуемое для изменения внутреннего значения этого свойства.
Вы, скорее всего, также захотите создать переменную экземпляра класса для хранения текущего установленного значения свойства, которое вы можете использовать в случае вызовов функций получения и установки значений. Учтите, что механизмы объектной модели GObject не будут автоматически устанавливать стандартное значение вашей переменной экземпляра класса, поэтому вам придется сделать это самостоятельно в рамках функции инициализации _init ()
объекта вашего элемента.
Выше приведен очень простой пример использования механизма свойств. Приложения с графическим интерфейсом могут использовать подобные свойства и показывать пользователю виджеты, с помощью которых он сможет изменить их значения. Это значит, что для того, чтобы назначение свойства было как можно более понятным пользователю, вы должны как можно более точно описать это свойство. Описание свойства должно заключаться не только в установке диапазона, в котором могут находиться корректные значения этого свойства (для целочисленных значений, значений с плавающей точкой, и.т.д.), но также и в использовании строк с наиболее понятным (а лучше переведенным на другие языки) описанием свойства и, если это возможно, использовании перечислений и флагов вместо целочисленных значений. Несмотря на то, что в документации объектной модели GObject эти рекомендации описываются в полном объеме, ниже будет приведен короткий пример, демонстрирующий ситуацию, в которой упомянутые рекомендации удобно использовать. Обратите внимание на то, что использование целочисленных значений в примере ниже наверняка полностью запутает пользователя, так как целочисленные значения не имеют смысла в рассматриваемом контексте. Пример основан на коде элемента videotestsrc.
Глава 10. Сигналы
Сигналы объектной модели GObject могут использоваться для уведомления приложений о наступлении событий, специфичных для рассматриваемого объекта. Однако, следует помнить о том, что приложение должно обладать информацией о сигналах и их назначении, поэтому в том случае, если вы ищите обобщенный механизм для осуществления взаимодействия по схеме "приложение-элемент", сигналы, скорее всего, являются не тем механизмом, который вам необходим. Несмотря на это, в большинстве случаев сигналы могут быть очень полезны. Обратитесь к документации объектной модели GObject для ознакомления со всеми подробностями функционирования механизма сигналов.
Следующий раздел : Создание тестового приложения.