Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I find out whether a GSettings schema exists or not before attempting to use it?

If a GSettings schema exists and has been compiled, there is usually no problem reading from it. However, if it doesn't exist, an error is usually thrown which cannot be handled. Try this in a Python file or console:

from gi.repository import Gio
try:
    settings = Gio.Settings("com.example.doesnotexist")
except:
    print "Couldn't load those settings!"

I'm being as broad as possible with the except, but this is the error that is thrown.

(process:10248): GLib-GIO-ERROR **: Settings schema 'com.example.doesnotexist' is not installed

What I basically want to do is find out if the com.example.doesnotexist schema exists or not; if not, then tell the user to run my setup script before using my application. Any other suggestions on doing this would be welcome.

like image 298
Mendhak Avatar asked Nov 03 '12 10:11

Mendhak


1 Answers

You can use GSettingsSchemaSource. For instance:

> from gi.repository import Gio
> source = Gio.SettingsSchemaSource.get_default()
> source.lookup("org.gnome.Epiphany", True)
<GSettingsSchema at 0xa462800>
> source.lookup("com.example.doesnotexist", True)

>

According to the documentation, lookup should return NULL (None) if the schema does not exists, however in PyGObject returns NoneType. Anyway, you can use it to check whether the schema exists or not.

like image 176
gpoo Avatar answered Oct 14 '22 16:10

gpoo