[gnome-builder] langserv: add client properties to langserv providers



commit a26d0972ec2b20112b9749992daddc44a58adad6
Author: Christian Hergert <chergert redhat com>
Date:   Thu Oct 27 21:35:12 2016 -0700

    langserv: add client properties to langserv providers

 libide/langserv/ide-langserv-completion-provider.c |   60 +++++++++++++++++++-
 libide/langserv/ide-langserv-diagnostic-provider.c |   62 +++++++++++++++++++-
 libide/langserv/ide-langserv-rename-provider.c     |   60 +++++++++++++++++++-
 libide/langserv/ide-langserv-symbol-resolver.c     |   60 +++++++++++++++++++-
 4 files changed, 238 insertions(+), 4 deletions(-)
---
diff --git a/libide/langserv/ide-langserv-completion-provider.c 
b/libide/langserv/ide-langserv-completion-provider.c
index 2d3415e..2b16eef 100644
--- a/libide/langserv/ide-langserv-completion-provider.c
+++ b/libide/langserv/ide-langserv-completion-provider.c
@@ -43,6 +43,14 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (IdeLangservCompletionProvider, ide_langserv_co
                                   G_IMPLEMENT_INTERFACE (GTK_SOURCE_TYPE_COMPLETION_PROVIDER, 
source_completion_provider_iface_init)
                                   G_IMPLEMENT_INTERFACE (IDE_TYPE_COMPLETION_PROVIDER, NULL))
 
+enum {
+  PROP_0,
+  PROP_CLIENT,
+  N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
 static void
 completion_state_free (CompletionState *state)
 {
@@ -78,11 +86,60 @@ ide_langserv_completion_provider_finalize (GObject *object)
 }
 
 static void
+ide_langserv_completion_provider_get_property (GObject    *object,
+                                               guint       prop_id,
+                                               GValue     *value,
+                                               GParamSpec *pspec)
+{
+  IdeLangservCompletionProvider *self = IDE_LANGSERV_COMPLETION_PROVIDER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      g_value_set_object (value, ide_langserv_completion_provider_get_client (self));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+ide_langserv_completion_provider_set_property (GObject      *object,
+                                               guint         prop_id,
+                                               const GValue *value,
+                                               GParamSpec   *pspec)
+{
+  IdeLangservCompletionProvider *self = IDE_LANGSERV_COMPLETION_PROVIDER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      ide_langserv_completion_provider_set_client (self, g_value_get_object (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
 ide_langserv_completion_provider_class_init (IdeLangservCompletionProviderClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->finalize = ide_langserv_completion_provider_finalize;
+  object_class->get_property = ide_langserv_completion_provider_get_property;
+  object_class->set_property = ide_langserv_completion_provider_set_property;
+
+  properties [PROP_CLIENT] =
+    g_param_spec_object ("client",
+                         "Client",
+                         "The Language Server client",
+                         IDE_TYPE_LANGSERV_CLIENT,
+                         (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, N_PROPS, properties);
 }
 
 static void
@@ -117,7 +174,8 @@ ide_langserv_completion_provider_set_client (IdeLangservCompletionProvider *self
   g_return_if_fail (IDE_IS_LANGSERV_COMPLETION_PROVIDER (self));
   g_return_if_fail (!client || IDE_IS_LANGSERV_CLIENT (client));
 
-  g_set_object (&priv->client, client);
+  if (g_set_object (&priv->client, client))
+    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CLIENT]);
 }
 
 static gchar *
diff --git a/libide/langserv/ide-langserv-diagnostic-provider.c 
b/libide/langserv/ide-langserv-diagnostic-provider.c
index 1d07e4b..967fe73 100644
--- a/libide/langserv/ide-langserv-diagnostic-provider.c
+++ b/libide/langserv/ide-langserv-diagnostic-provider.c
@@ -42,6 +42,14 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (IdeLangservDiagnosticProvider, ide_langserv_di
                                   G_ADD_PRIVATE (IdeLangservDiagnosticProvider)
                                   G_IMPLEMENT_INTERFACE (IDE_TYPE_DIAGNOSTIC_PROVIDER, 
diagnostic_provider_iface_init))
 
+enum {
+  PROP_0,
+  PROP_CLIENT,
+  N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
 static void
 ide_langserv_diagnostic_provider_get_diagnostics_cb (GObject      *object,
                                                      GAsyncResult *result,
@@ -137,11 +145,60 @@ ide_langserv_diagnostic_provider_finalize (GObject *object)
 }
 
 static void
+ide_langserv_diagnostic_provider_get_property (GObject    *object,
+                                               guint       prop_id,
+                                               GValue     *value,
+                                               GParamSpec *pspec)
+{
+  IdeLangservDiagnosticProvider *self = IDE_LANGSERV_DIAGNOSTIC_PROVIDER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      g_value_set_object (value, ide_langserv_diagnostic_provider_get_client (self));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+ide_langserv_diagnostic_provider_set_property (GObject      *object,
+                                               guint         prop_id,
+                                               const GValue *value,
+                                               GParamSpec   *pspec)
+{
+  IdeLangservDiagnosticProvider *self = IDE_LANGSERV_DIAGNOSTIC_PROVIDER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      ide_langserv_diagnostic_provider_set_client (self, g_value_get_object (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
 ide_langserv_diagnostic_provider_class_init (IdeLangservDiagnosticProviderClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->finalize = ide_langserv_diagnostic_provider_finalize;
+  object_class->get_property = ide_langserv_diagnostic_provider_get_property;
+  object_class->set_property = ide_langserv_diagnostic_provider_set_property;
+
+  properties [PROP_CLIENT] =
+    g_param_spec_object ("client",
+                         "Client",
+                         "The Language Server client",
+                         IDE_TYPE_LANGSERV_CLIENT,
+                         (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, N_PROPS, properties);
 }
 
 static void
@@ -191,5 +248,8 @@ ide_langserv_diagnostic_provider_set_client (IdeLangservDiagnosticProvider *self
   g_return_if_fail (!client || IDE_IS_LANGSERV_CLIENT (client));
 
   if (g_set_object (&priv->client, client))
-    egg_signal_group_set_target (priv->client_signals, client);
+    {
+      egg_signal_group_set_target (priv->client_signals, client);
+      g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CLIENT]);
+    }
 }
diff --git a/libide/langserv/ide-langserv-rename-provider.c b/libide/langserv/ide-langserv-rename-provider.c
index e0a6af1..e70e62f 100644
--- a/libide/langserv/ide-langserv-rename-provider.c
+++ b/libide/langserv/ide-langserv-rename-provider.c
@@ -38,6 +38,14 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (IdeLangservRenameProvider, ide_langserv_rename
                                   G_ADD_PRIVATE (IdeLangservRenameProvider)
                                   G_IMPLEMENT_INTERFACE (IDE_TYPE_RENAME_PROVIDER, 
rename_provider_iface_init))
 
+enum {
+  PROP_0,
+  PROP_CLIENT,
+  N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
 static void
 ide_langserv_rename_provider_finalize (GObject *object)
 {
@@ -50,11 +58,60 @@ ide_langserv_rename_provider_finalize (GObject *object)
 }
 
 static void
+ide_langserv_rename_provider_get_property (GObject    *object,
+                                           guint       prop_id,
+                                           GValue     *value,
+                                           GParamSpec *pspec)
+{
+  IdeLangservRenameProvider *self = IDE_LANGSERV_RENAME_PROVIDER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      g_value_set_object (value, ide_langserv_rename_provider_get_client (self));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+ide_langserv_rename_provider_set_property (GObject      *object,
+                                           guint         prop_id,
+                                           const GValue *value,
+                                           GParamSpec   *pspec)
+{
+  IdeLangservRenameProvider *self = IDE_LANGSERV_RENAME_PROVIDER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      ide_langserv_rename_provider_set_client (self, g_value_get_object (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
 ide_langserv_rename_provider_class_init (IdeLangservRenameProviderClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->finalize = ide_langserv_rename_provider_finalize;
+  object_class->get_property = ide_langserv_rename_provider_get_property;
+  object_class->set_property = ide_langserv_rename_provider_set_property;
+
+  properties [PROP_CLIENT] =
+    g_param_spec_object ("client",
+                         "Client",
+                         "The Language Server client",
+                         IDE_TYPE_LANGSERV_CLIENT,
+                         (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, N_PROPS, properties);
 }
 
 static void
@@ -284,5 +341,6 @@ ide_langserv_rename_provider_set_client (IdeLangservRenameProvider *self,
   g_return_if_fail (IDE_IS_LANGSERV_RENAME_PROVIDER (self));
   g_return_if_fail (!client || IDE_IS_LANGSERV_CLIENT (client));
 
-  g_set_object (&priv->client, client);
+  if (g_set_object (&priv->client, client))
+    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CLIENT]);
 }
diff --git a/libide/langserv/ide-langserv-symbol-resolver.c b/libide/langserv/ide-langserv-symbol-resolver.c
index 290a6ac..55d33c6 100644
--- a/libide/langserv/ide-langserv-symbol-resolver.c
+++ b/libide/langserv/ide-langserv-symbol-resolver.c
@@ -41,6 +41,14 @@ G_DEFINE_ABSTRACT_TYPE_WITH_CODE (IdeLangservSymbolResolver, ide_langserv_symbol
                                   G_ADD_PRIVATE (IdeLangservSymbolResolver)
                                   G_IMPLEMENT_INTERFACE (IDE_TYPE_SYMBOL_RESOLVER, 
symbol_resolver_iface_init))
 
+enum {
+  PROP_0,
+  PROP_CLIENT,
+  N_PROPS
+};
+
+static GParamSpec *properties [N_PROPS];
+
 static void
 ide_langserv_symbol_resolver_finalize (GObject *object)
 {
@@ -53,11 +61,60 @@ ide_langserv_symbol_resolver_finalize (GObject *object)
 }
 
 static void
+ide_langserv_symbol_resolver_get_property (GObject    *object,
+                                           guint       prop_id,
+                                           GValue     *value,
+                                           GParamSpec *pspec)
+{
+  IdeLangservSymbolResolver *self = IDE_LANGSERV_SYMBOL_RESOLVER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      g_value_set_object (value, ide_langserv_symbol_resolver_get_client (self));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+ide_langserv_symbol_resolver_set_property (GObject      *object,
+                                           guint         prop_id,
+                                           const GValue *value,
+                                           GParamSpec   *pspec)
+{
+  IdeLangservSymbolResolver *self = IDE_LANGSERV_SYMBOL_RESOLVER (object);
+
+  switch (prop_id)
+    {
+    case PROP_CLIENT:
+      ide_langserv_symbol_resolver_set_client (self, g_value_get_object (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
 ide_langserv_symbol_resolver_class_init (IdeLangservSymbolResolverClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
   object_class->finalize = ide_langserv_symbol_resolver_finalize;
+  object_class->get_property = ide_langserv_symbol_resolver_get_property;
+  object_class->set_property = ide_langserv_symbol_resolver_set_property;
+
+  properties [PROP_CLIENT] =
+    g_param_spec_object ("client",
+                         "Client",
+                         "The Language Server client",
+                         IDE_TYPE_LANGSERV_CLIENT,
+                         (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, N_PROPS, properties);
 }
 
 static void
@@ -91,7 +148,8 @@ ide_langserv_symbol_resolver_set_client (IdeLangservSymbolResolver *self,
   g_return_if_fail (IDE_IS_LANGSERV_SYMBOL_RESOLVER (self));
   g_return_if_fail (!client || IDE_IS_LANGSERV_CLIENT (client));
 
-  g_set_object (&priv->client, client);
+  if (g_set_object (&priv->client, client))
+    g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CLIENT]);
 }
 
 static void


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