Vala example: GLib.Settings added.
This commit is contained in:
parent
fa29289a3f
commit
502c3fbe86
|
@ -0,0 +1,62 @@
|
||||||
|
public static int main (string[] args) {
|
||||||
|
try {
|
||||||
|
// Custom location:
|
||||||
|
string settings_dir = Path.get_dirname (args[0]);
|
||||||
|
SettingsSchemaSource sss = new SettingsSchemaSource.from_directory (settings_dir, null, false);
|
||||||
|
SettingsSchema schema = sss.lookup ("org.example.glib-settings-schema-source", false);
|
||||||
|
if (sss.lookup == null) {
|
||||||
|
stdout.printf ("ID not found.");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings settings = new Settings.full (schema, null, null);
|
||||||
|
|
||||||
|
// Default location: (XDG_DATA_DIRS)
|
||||||
|
// Settings settings = new Settings ("org.example.glib-settings-schema-source");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Output: ``Hello, earthlings``
|
||||||
|
string greeting = settings.get_string ("greeting");
|
||||||
|
stdout.printf ("%s\n", greeting);
|
||||||
|
|
||||||
|
// Output: ``99``
|
||||||
|
int bottles = settings.get_int ("bottles-of-beer");
|
||||||
|
stdout.printf ("%d\n", bottles);
|
||||||
|
|
||||||
|
// Output: ``false``
|
||||||
|
bool lighting = settings.get_boolean ("lighting");
|
||||||
|
stdout.printf ("%s\n", lighting.to_string ());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Change notification for any key in the schema
|
||||||
|
settings.changed.connect ((key) => {
|
||||||
|
print ("Key '%s' changed\n", key);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Change notification for a single key
|
||||||
|
settings.changed["greeting"].connect (() => {
|
||||||
|
print ("New greeting: %s\n", settings.get_string ("greeting"));
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// Setting keys
|
||||||
|
|
||||||
|
// Output:
|
||||||
|
// ``Key 'bottles-of-beer' changed``
|
||||||
|
// ``Key 'lighting' changed``
|
||||||
|
// ``Key 'greeting' changed``
|
||||||
|
// ``New greeting: hello, world``
|
||||||
|
settings.set_int ("bottles-of-beer", bottles - 1);
|
||||||
|
settings.set_boolean ("lighting", !lighting);
|
||||||
|
settings.set_string ("greeting", "hello, world");
|
||||||
|
|
||||||
|
|
||||||
|
stdout.puts ("\nPlease start 'dconf-editor' and edit keys in /org/example/my-app/\n");
|
||||||
|
new MainLoop ().run ();
|
||||||
|
} catch (Error e) {
|
||||||
|
stdout.printf ("Error: %s\n", e.message);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
<schemalist>
|
||||||
|
<schema id="org.example.glib-settings-schema-source" path="/org/example/my-app/" gettext-domain="my-app">
|
||||||
|
|
||||||
|
<key name="greeting" type="s">
|
||||||
|
<default l10n="messages">"Hello, earthlings"</default>
|
||||||
|
<summary>A greeting</summary>
|
||||||
|
<description>
|
||||||
|
Greeting of the invading martians
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
|
<key name="bottles-of-beer" type="i">
|
||||||
|
<default>99</default>
|
||||||
|
<summary>Bottles of beer</summary>
|
||||||
|
<description>
|
||||||
|
Number of bottles of beer on the wall
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
|
<key name="lighting" type="b">
|
||||||
|
<default>false</default>
|
||||||
|
<summary>Is the light switched on?</summary>
|
||||||
|
<description>
|
||||||
|
State of an imaginary light switch.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
Loading…
Reference in New Issue