コード例 #1
0
ファイル: peas-extension-gjs.c プロジェクト: OBERTANK/libpeas
GObject *
peas_extension_gjs_new (GType      exten_type,
                        GType     *interfaces,
                        JSContext *js_context,
                        JSObject  *js_object)
{
  PeasExtensionGjs *gexten;
  GType real_type;

  g_return_val_if_fail (js_context != NULL, NULL);
  g_return_val_if_fail (js_object != NULL, NULL);

  real_type = peas_extension_register_subclass (PEAS_TYPE_EXTENSION_GJS,
                                                interfaces);

  /* Already Warned */
  if (real_type == G_TYPE_INVALID)
    {
      g_free (interfaces);
      return NULL;
    }

  gexten = PEAS_EXTENSION_GJS (g_object_new (real_type, NULL));

  gexten->js_context = js_context;
  gexten->js_object = js_object;
  PEAS_EXTENSION_WRAPPER (gexten)->exten_type = exten_type;
  PEAS_EXTENSION_WRAPPER (gexten)->interfaces = interfaces;
  JS_AddObjectRoot (gexten->js_context, &gexten->js_object);

  return G_OBJECT (gexten);
}
コード例 #2
0
ファイル: peas-extension.c プロジェクト: Romeo93rus/libpeas
/**
 * peas_extension_get_extension_type:
 * @exten: A #PeasExtension.
 *
 * Get the type of the extension interface of the object proxied by @exten.
 *
 * Return value: The #GType proxied by @exten.
 */
GType
peas_extension_get_extension_type (PeasExtension *exten)
{
  if (PEAS_IS_EXTENSION_WRAPPER (exten))
    {
      return peas_extension_wrapper_get_extension_type (PEAS_EXTENSION_WRAPPER (exten));
    }
  else
    {
      return (GType) g_object_get_data (G_OBJECT (exten), "peas-extension-type");
    }
}
コード例 #3
0
static void
extension_subclass_set_property (GObject      *object,
                                 guint         prop_id,
                                 const GValue *value,
                                 GParamSpec   *pspec)
{
  PeasExtensionWrapper *exten = PEAS_EXTENSION_WRAPPER (object);

  /* This will have already been set on the real instance */
  if ((pspec->flags & G_PARAM_CONSTRUCT_ONLY) != 0)
    return;

  /* Setting will fail if we are not constructed yet */
  if ((pspec->flags & G_PARAM_CONSTRUCT) != 0 && !exten->constructed)
    return;

  g_debug ("Setting '%s:%s'",
           G_OBJECT_TYPE_NAME (object),
           g_param_spec_get_name (pspec));

  G_OBJECT_CLASS (get_parent_class (object))->set_property (object, prop_id,
                                                            value, pspec);
}
コード例 #4
0
GObject *
peas_extension_seed_new (GType       exten_type,
                         SeedContext js_context,
                         SeedObject  js_object)
{
  PeasExtensionSeed *sexten;
  GType real_type;

  g_return_val_if_fail (js_context != NULL, NULL);
  g_return_val_if_fail (js_object != NULL, NULL);

  real_type = peas_extension_register_subclass (PEAS_TYPE_EXTENSION_SEED, exten_type);
  sexten = PEAS_EXTENSION_SEED (g_object_new (real_type, NULL));

  sexten->js_context = js_context;
  sexten->js_object = js_object;
  PEAS_EXTENSION_WRAPPER (sexten)->exten_type = exten_type;

  seed_context_ref (sexten->js_context);
  seed_value_protect (sexten->js_context, sexten->js_object);

  return G_OBJECT (sexten);
}
コード例 #5
0
ファイル: peas-extension.c プロジェクト: Romeo93rus/libpeas
/**
 * peas_extension_callv:
 * @exten: A #PeasExtension.
 * @method_name: the name of the method that should be called.
 * @args: the arguments for the method.
 * @return_value: the return falue for the method.
 *
 * Call a method of the object behind @extension, using @args as arguments.
 *
 * See peas_extension_call() for more information.
 *
 * Return value: (transfer full): %TRUE on successful call.
 *
 * Deprecated: 1.2. Use the dynamically implemented interface instead.
 *
 * Rename to: peas_extension_call
 */
gboolean
peas_extension_callv (PeasExtension *exten,
                      const gchar   *method_name,
                      GIArgument    *args,
                      GIArgument    *return_value)
{
  if (PEAS_IS_EXTENSION_WRAPPER (exten))
    {
      return peas_extension_wrapper_callv (PEAS_EXTENSION_WRAPPER (exten),
                                           method_name,
                                           args,
                                           return_value);
    }
  else
    {
      GType gtype = peas_extension_get_extension_type (exten);

      return peas_method_apply (G_OBJECT (exten),
                                gtype,
                                method_name,
                                args,
                                return_value);
    }
}