Erro ao acessar o Gio.Gsettings na aplicação feita rapidamente

1

Estou tentando desenvolver um aplicativo usando a pilha quick / pygtk. Eu tenho meus esquemas Gsettings tudo configurado em ~ / app-name-here / data / glib-2.0 / schemas / net.launchpad.app-name-here.gschema.xml corretamente e eu sou capaz de acessá-lo muito bem no meu janela de diálogo de preferências que está localizada em ~ / app-name-here / nome-do-app-aqui / PreferencesDialog.py via

from gi.repository import Gtk, Gio
settings = Gio.Settings("net.launchpad.app-name-here")
settings.get_boolean('notify')
settings.set_boolean('notify', True)

mas quando tento verificar o valor de uma das minhas configurações em um arquivo localizado em ~ / app-name-here / bin / Daemon.py que uso como script para ser executado em segundo plano e enviar notificações por um método similar de

from gi.repository import Gio
settings = Gio.Settings("net.launchpad.app-name-here")
settings.get_boolean('notify')

falha na linha que diz

settings = Gio.Settings("net.launchpad.app-name-here")

e cospe um erro desagradável

(Daemon.py:26100): GLib-GIO-ERROR **: Settings schema 'net.launchpad.app-name-here' is not installed

Apesar do fato de que eu posso abrir o dconf-editor e encontrar as configurações em net / launchpad / app-name-here. Alguma idéia?

    
por Zane Swafford 09.08.2012 / 23:13

2 respostas

2

Então, acho que posso ter resolvido meu próprio problema com o psuedo. Copiei meus esquemas de ~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml para /usr/share/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml e, em seguida, compilei meus esquemas. Vou colocar os comandos para fazer isso abaixo se puder ajudar alguém. (substitua app-name-here pelo nome real do seu aplicativo rapidamente) Acredito que isso seria feito automaticamente se eu empacotasse meu aplicativo em um * deb e o instalasse. Acredito que o problema é que os esquemas não estavam disponíveis para todos os usuários ou o código fora do diretório em que eu estava trabalhando.

$: sudo cp ~/app-name-here/data/glib-2.0/schemas/net.launchpad.app-name-here.gschema.xml /usr/share/glib-2.0/schemas/
$: sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
    
por Zane Swafford 10.08.2012 / 07:34
0

"executar rapidamente " adiciona seu diretório ./data/ à variável de ambiente XDG_DATA_DIRS, que permite que os esquemas de glib localmente compilados sejam encontrados pelo Gio.GSettings. Se você fizer isso no seu Daemon.py, você poderá executá-lo a partir do seu diretório de desenvolvimento.

    
por mhall119 11.11.2012 / 23:44