[gnome-builder] foundry: add IdeConfig:prefix-set property



commit a1ef81b013d756a2194e58307f69ee1ee85170e9
Author: Christian Hergert <chergert redhat com>
Date:   Tue May 28 11:32:03 2019 -0700

    foundry: add IdeConfig:prefix-set property
    
    This can be used to determine if a prefix is set by the user, of if it was
    overridden/changed by a runtime in ::prepare().

 src/libide/foundry/ide-config.c | 38 ++++++++++++++++++++++++++++++++++++++
 src/libide/foundry/ide-config.h |  5 +++++
 2 files changed, 43 insertions(+)
---
diff --git a/src/libide/foundry/ide-config.c b/src/libide/foundry/ide-config.c
index 069f6151d..b5403fc74 100644
--- a/src/libide/foundry/ide-config.c
+++ b/src/libide/foundry/ide-config.c
@@ -62,6 +62,7 @@ typedef struct
   guint           dirty : 1;
   guint           debug : 1;
   guint           has_attached : 1;
+  guint           prefix_set : 1;
 
   /*
    * This is used to determine if we can make progress building
@@ -91,6 +92,7 @@ enum {
   PROP_PARALLELISM,
   PROP_POST_INSTALL_COMMANDS,
   PROP_PREFIX,
+  PROP_PREFIX_SET,
   PROP_READY,
   PROP_RUNTIME,
   PROP_RUNTIME_ID,
@@ -587,6 +589,13 @@ ide_config_class_init (IdeConfigClass *klass)
                          NULL,
                          (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
 
+  properties [PROP_PREFIX_SET] =
+    g_param_spec_boolean ("prefix-set",
+                          "Prefix Set",
+                          "If Prefix is Set or not (meaning default)",
+                          FALSE,
+                          (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
   properties [PROP_READY] =
     g_param_spec_boolean ("ready",
                           "Ready",
@@ -965,7 +974,9 @@ ide_config_set_prefix (IdeConfig   *self,
     {
       g_free (priv->prefix);
       priv->prefix = g_strdup (prefix);
+      priv->prefix_set = TRUE;
       g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_PREFIX]);
+      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_PREFIX_SET]);
       ide_config_set_dirty (self, TRUE);
     }
 }
@@ -1727,3 +1738,30 @@ _ide_config_attach (IdeConfig *self)
   ide_config_runtime_manager_items_changed (self, 0, 0, 0, runtime_manager);
   ide_config_unblock_changed (self);
 }
+
+gboolean
+ide_config_get_prefix_set (IdeConfig *self)
+{
+  IdeConfigPrivate *priv = ide_config_get_instance_private (self);
+
+  g_return_val_if_fail (IDE_IS_CONFIG (self), FALSE);
+
+  return priv->prefix_set;
+}
+
+void
+ide_config_set_prefix_set (IdeConfig *self,
+                           gboolean   prefix_set)
+{
+  IdeConfigPrivate *priv = ide_config_get_instance_private (self);
+
+  g_return_if_fail (IDE_IS_CONFIG (self));
+
+  prefix_set = !!prefix_set;
+
+  if (prefix_set != priv->prefix_set)
+    {
+      priv->prefix_set = prefix_set;
+      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_PREFIX_SET]);
+    }
+}
diff --git a/src/libide/foundry/ide-config.h b/src/libide/foundry/ide-config.h
index 135e2698a..e5ccb7793 100644
--- a/src/libide/foundry/ide-config.h
+++ b/src/libide/foundry/ide-config.h
@@ -120,6 +120,11 @@ const gchar          *ide_config_get_prefix                (IdeConfig
 IDE_AVAILABLE_IN_3_32
 void                  ide_config_set_prefix                (IdeConfig             *self,
                                                             const gchar           *prefix);
+IDE_AVAILABLE_IN_3_34
+gboolean              ide_config_get_prefix_set            (IdeConfig             *self);
+IDE_AVAILABLE_IN_3_34
+void                  ide_config_set_prefix_set            (IdeConfig             *self,
+                                                            gboolean               prefix_set);
 IDE_AVAILABLE_IN_3_32
 const gchar          *ide_config_get_config_opts           (IdeConfig             *self);
 IDE_AVAILABLE_IN_3_32


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]