Что такое XML-файл схемы в папке data / glib-2.0 моего приложения Quickly?

Я создал приложение Ubuntu с помощью Quickly и вижу файл XML в папке data / glib-2.0 в корневом каталоге моего проекта, и я не совсем уверен, для чего это нужно. XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="sample-application">
  <schema id="net.launchpad.sample-application" path="/net/launchpad/sample-application/">
    <key name="example" type="s">
      <default>''</default>
      <summary>Sample setting</summary>
      <description>Longer description of this sample setting.  Talk about allowed values and what it does.</description>
    </key>
  </schema>
</schemalist>

Кроме того, в коде диалога настроек по умолчанию, который создается с новым приложением, я вижу следующий код:

settings = Gio.Settings("net.launchpad.sample-application")
widget = self.builder.get_object('example_entry')
settings.bind("example", widget, "text", Gio.SettingsBindFlags.DEFAULT)

не уверен, что это делает.

1
задан 20 July 2012 в 14:29

1 ответ

XML-файл определяет ряд ключей, которые можно использовать всюду по приложению для хранения пользовательских настроек.

В схеме элемента Вы заметите два атрибута: идентификатор и путь. Идентификатор - то, что Вы используете для обращения к схеме в коде при инстанцировании объекта настроек. Путь - то, где ключи хранятся.

Можно найти настройки путем установки dconf-tools пакет и выполнение dconf-editor. Затем перейдя к узлу, определенному выше. Узел в XML в вопросе (/net/launchpad/sample-application) был бы здесь:

dconf-editor window at the path /net/launchpad/sample-application

Схема используется против API GSettings. Вы видите GTK C базирующиеся документы здесь: http://developer.gnome.org/gio/stable/GSettings.html. Это - часть модуля Gio

Что касается кода.

settings = Gio.Settings("net.launchpad.sample-application")

Это создает объект GSettings, который можно использовать для привязки виджетов с для хранения настроек. Параметр должен соответствовать точно идентификационному атрибуту элемента схемы в XML.

settings.bind("example", widget, "text", Gio.SettingsBindFlags.DEFAULT)

Это создает привязку между example введите схему, к text свойство widget. Значение, которое передается ключу, является текстовым свойством указанного виджета. Для GtkEntry текст является самым очевидным свойством для использования. Поскольку это связывается, каждый раз, когда Вы изменяете значение свойства в предпочтительном окне, это автоматически обновляется. Заключительный параметр определяет, какое направление обязательные работы - видят документы для получения дополнительной информации.

Тип, который Вы указываете в XML для ключа, должен соответствовать одному из доступных вариантов. Обычно отдельный символ, который Вы будете видеть против определенной константы. Например, для булевской переменной:

#define G_VARIANT_TYPE_BOOLEAN ((константа GVariantType *) "b")

Так булев приравнивается к b.

Так, просто скажите желание булева ключа Вы могли добавить следующее под элементом схемы, вместе с другим ключом:

<key name="complete" type="b">
  <default>false</default>
  <summary>Whether the task is complete</summary>
  <description>This key is used to determine if a particular part of the application is complete or not</description>
</key>

Затем свяжите активное свойство как так:

# Get the widget (named chk_complete)
complete = self.ui.chk_complete
# Bind the property
settings.bind("complete", complete, "active", Gio.SettingsBindFlags.DEFAULT)

К настройкам можно затем просто получить доступ с получить функцией, характерной для типа данных. например.

settings = Gio.Settings("net.launchpad.sample-application")
example = settings.get_string("example")
complete = settings.get_boolean("complete")
3
ответ дан 20 July 2012 в 14:29

Другие вопросы по тегам:

Похожие вопросы: