## IBusFactory IBusFactory — Factory for creating engine instances. |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    struct              IBusFactory;
    struct              IBusFactoryClass;
    IBusFactory *       ibus_factory_new                    (GDBusConnection *connection);
    void                ibus_factory_add_engine             (IBusFactory *factory,
                                                             const gchar *engine_name,
                                                             GType engine_type);
    IBusEngine *        ibus_factory_create_engine          (IBusFactory *factory,
                                                             const gchar *engine_name);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----IBusObject
                   +----IBusService
                         +----IBusFactory

## Signals

      "create-engine"                                  : Run Last

## Description

An IBusFactory is an IBusService that creates input method engine (IME) instance. It provides CreateEngine remote method, which creates an IME instance by name, and returns the D-Bus object path to IBus daemon.

`see_also`: IBusEngine

## Details

### struct IBusFactory

    struct IBusFactory;

An opaque data type representing an IBusFactory.

### struct IBusFactoryClass

    struct IBusFactoryClass {
        /* signals */
        IBusEngine *
                    (* create_engine)
                                        (IBusFactory    *factory,
                                         const gchar    *engine_name);
    };

### ibus_factory_new ()

    IBusFactory *       ibus_factory_new                    (GDBusConnection *connection);

New an IBusFactory.

`connection` : | An GDBusConnection.
Returns : | A newly allocated IBusFactory.

### ibus_factory_add_engine ()

    void                ibus_factory_add_engine             (IBusFactory *factory,
                                                             const gchar *engine_name,
                                                             GType engine_type);

Add an engine to the factory.

`factory` : | An IBusFactory.
`engine_name` : | Name of an engine.
`engine_type` : | GType of an engine.

### ibus_factory_create_engine ()

    IBusEngine *        ibus_factory_create_engine          (IBusFactory *factory,
                                                             const gchar *engine_name);

Create an IBusEngine with `engine_name`.

`factory` : | An IBusFactory.
`engine_name` : | Name of an engine.
Returns : | IBusEngine with `engine_name`. [transfer full]

## Signal Details

### The `"create-engine"` signal

    IBusEngine*         user_function                      (IBusFactory *factory,
                                                            gchar       *engine_name,
                                                            gpointer     user_data)        : Run Last

The ::create-engine signal is a signal to create IBusEngine with `engine_name`, which gets emitted when IBusFactory received CreateEngine dbus method. The callback functions will be called until a callback returns a non-null object of IBusEngine.

`factory` : | the factory which received the signal
`engine_name` : | the engine_name which received the signal
`returns` : | An IBusEngine. [transfer full]
`user_data` : | user data set when the signal handler was connected.