[dconf-editor] Add --list-relocatable-schemas option.
- From: Arnaud Bonatti <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [dconf-editor] Add --list-relocatable-schemas option.
- Date: Thu, 7 Dec 2017 23:43:36 +0000 (UTC)
commit 2e44ffd213776daa02ca6221b0a56da80b1c1ea8
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date: Fri Dec 8 00:43:21 2017 +0100
Add --list-relocatable-schemas option.
editor/dconf-editor.vala | 58 ++++++++++++++++++++++++++++++++++++++++++++++
editor/dconf-model.vala | 18 +++++++-------
2 files changed, 67 insertions(+), 9 deletions(-)
---
diff --git a/editor/dconf-editor.vala b/editor/dconf-editor.vala
index 06b7201..651d6bd 100644
--- a/editor/dconf-editor.vala
+++ b/editor/dconf-editor.vala
@@ -17,11 +17,18 @@
class ConfigurationEditor : Gtk.Application
{
+ public static string [,] known_mappings = {
+ {"org.gnome.desktop.app-folders.folder", "/org/gnome/desktop/app-folders/folders//"},
+ {"org.gnome.Terminal.Legacy.Profile", "/org/gnome/terminal/legacy/profiles://"}
+ }; // TODO add more well-known mappings
+
private static bool disable_warning = false;
private const OptionEntry [] option_entries =
{
{ "version", 'v', 0, OptionArg.NONE, null, N_("Print release version and exit"), null },
+ { "list-relocatable-schemas", 0, 0, OptionArg.NONE, null, N_("Print relocatable schemas and exit"),
null },
+
{ "I-understand-that-changing-options-can-break-applications", 0, 0, OptionArg.NONE, ref
disable_warning, N_("Do not show initial warning"), null },
{}
};
@@ -66,6 +73,57 @@ class ConfigurationEditor : Gtk.Application
stdout.printf ("%1$s %2$s\n", "dconf-editor", Config.VERSION);
return Posix.EXIT_SUCCESS;
}
+ if (options.contains ("list-relocatable-schemas"))
+ {
+ // get installed schemas
+
+ string [] non_relocatable_schemas;
+ string [] relocatable_schemas;
+
+ SettingsSchemaSource? settings_schema_source = SettingsSchemaSource.get_default ();
+ if (settings_schema_source == null)
+ {
+ warning ("No schema source!");
+ return Posix.EXIT_FAILURE;
+ }
+ ((!) settings_schema_source).list_schemas (true, out non_relocatable_schemas, out
relocatable_schemas);
+
+ // sort out schemas ids
+
+ string [] known_schemas_installed = {};
+ string [] unknown_schemas = {};
+
+ string [] schemas_ids = {};
+ for (int i = 0; i < known_mappings.length [0]; i++)
+ schemas_ids += known_mappings [i,0];
+
+ foreach (string schema_id in relocatable_schemas)
+ {
+ if (schema_id in schemas_ids)
+ known_schemas_installed += schema_id;
+ else
+ unknown_schemas += schema_id;
+ }
+
+ // print
+
+ if (known_schemas_installed.length > 0)
+ {
+ stdout.printf (_("Known schemas installed:") + "\n");
+ foreach (string schema_id in known_schemas_installed)
+ stdout.printf (@" $schema_id\n");
+ }
+ else
+ stdout.printf (_("No known schemas installed.") + "\n");
+ stdout.printf ("\n");
+ if (unknown_schemas.length > 0)
+ {
+ stdout.printf (_("Unknown schemas:") + "\n");
+ foreach (string schema_id in unknown_schemas)
+ stdout.printf (@" $schema_id\n");
+ }
+ return Posix.EXIT_SUCCESS;
+ }
return -1;
}
diff --git a/editor/dconf-model.vala b/editor/dconf-model.vala
index 175cffc..b283070 100644
--- a/editor/dconf-model.vala
+++ b/editor/dconf-model.vala
@@ -668,11 +668,11 @@ public class SettingsModel : Object
private void parse_relocatable_schemas_user_paths ()
{
- RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings)
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
- if (!(RelocatableSchemasEnabledMappings.USER in enabled_mappings_flags))
+ if (settings_schema_source == null)
return;
- if (settings_schema_source == null)
+ RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings)
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
+ if (!(RelocatableSchemasEnabledMappings.USER in enabled_mappings_flags))
return;
Variant user_paths_variant = application_settings.get_value ("relocatable-schemas-user-paths");
@@ -686,16 +686,16 @@ public class SettingsModel : Object
private void create_relocatable_schemas_built_in_paths ()
{
- RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings)
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
- if (!(RelocatableSchemasEnabledMappings.BUILT_IN in enabled_mappings_flags))
+ if (settings_schema_source == null)
return;
- if (settings_schema_source == null)
+ RelocatableSchemasEnabledMappings enabled_mappings_flags = (RelocatableSchemasEnabledMappings)
application_settings.get_flags ("relocatable-schemas-enabled-mappings");
+ if (!(RelocatableSchemasEnabledMappings.BUILT_IN in enabled_mappings_flags))
return;
- add_relocatable_schema_info ("org.gnome.desktop.app-folders.folder",
"/org/gnome/desktop/app-folders/folders//");
- add_relocatable_schema_info ("org.gnome.Terminal.Legacy.Profile",
"/org/gnome/terminal/legacy/profiles://");
- // TODO add more well-known mappings
+ string [,] known_mappings = ConfigurationEditor.known_mappings;
+ for (int i = 0; i < known_mappings.length [0]; i++)
+ add_relocatable_schema_info (known_mappings [i,0], known_mappings [i,1]);
}
private void add_relocatable_schema_info (string schema_id, ...)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]