O arquivo XML define um conjunto de chaves que você pode usar em todo o seu aplicativo para armazenar as preferências do usuário.
No esquema do elemento, você notará dois atributos: id e caminho. O id é o que você usa para se referir ao esquema no código ao instanciar o objeto de configurações. O caminho é onde as chaves são armazenadas.
Você pode encontrar as configurações instalando o pacote dconf-tools
e executando dconf-editor
. Em seguida, navegue até o nó definido acima. O nó no XML na questão (/ net / launchpad / sample-application) estaria aqui:
O esquema é usado contra a API GSettings. Você pode ver os documentos baseados no GTK C aqui: link . Esta é uma parte do módulo Gio
Quanto ao código.
settings = Gio.Settings("net.launchpad.sample-application")
Isso cria o objeto GSettings, que você pode usar para vincular widgets a configurações de armazenamento. O parâmetro precisa corresponder exatamente ao atributo id do elemento do esquema no XML.
settings.bind("example", widget, "text", Gio.SettingsBindFlags.DEFAULT)
Isso cria uma ligação entre a chave example
no esquema e a propriedade text
do widget
. O valor que é passado para a chave é a propriedade de texto do widget especificado. Para GtkEntry, o texto é a propriedade mais óbvia a ser usada. Como está sendo ligado, sempre que você altera o valor da propriedade na janela de preferências, ela é atualizada automaticamente. O parâmetro final determina em qual direção a vinculação funciona - consulte os docs para obter mais informações.
O tipo que você especifica no XML da chave deve corresponder a uma das opções disponíveis . Geralmente, um único caractere, que você verá na constante definida. Por exemplo. para um booleano:
#define G_VARIANT_TYPE_BOOLEAN ((const GVariantType *) "b")
Então booleano equivale a b
.
Então, basta dizer que você queria uma chave booleana, você poderia adicionar o seguinte abaixo do elemento schema, ao lado da outra chave:
<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>
Em seguida, ligue a propriedade ativa da seguinte forma:
# Get the widget (named chk_complete)
complete = self.ui.chk_complete
# Bind the property
settings.bind("complete", complete, "active", Gio.SettingsBindFlags.DEFAULT)
As configurações podem ser acessadas com a função get, específica para o tipo de dados. por exemplo,
settings = Gio.Settings("net.launchpad.sample-application")
example = settings.get_string("example")
complete = settings.get_boolean("complete")