TeplAbstractFactory: Tepl 3 Reference Manual

## TeplAbstractFactory TeplAbstractFactory — Abstract factory singleton class |

## Functions

void | tepl_abstract_factory_set_singleton ()
TeplAbstractFactory * | tepl_abstract_factory_get_singleton ()
TeplTab * | tepl_abstract_factory_create_tab ()
GtkWidget * | tepl_abstract_factory_create_tab_label ()

## Types and Values

| TeplAbstractFactory
struct | TeplAbstractFactoryClass

## Object Hierarchy

        GObject
        ╰── TeplAbstractFactory

## Includes

    #include <tepl/tepl.h>

## Description

The Tepl framework uses the TeplAbstractFactory singleton to create some objects and widgets. By creating a subclass of TeplAbstractFactory (to override the desired virtual functions) and setting the instance with `tepl_abstract_factory_set_singleton()`, an application can tell Tepl to create custom objects and widgets.

Note that GtkTextViewClass has the ::create_buffer factory method, that TeplView overrides to create a TeplBuffer. How the TeplView and TeplBuffer are created can be customized with the ::create_tab vfunc of TeplAbstractFactory.

## Functions

### tepl_abstract_factory_set_singleton ()

    void
    tepl_abstract_factory_set_singleton (TeplAbstractFactory *factory);

Sets the TeplAbstractFactory singleton. This should be called early in `main()`, for example just after calling `tepl_init()`.

This function must be called only once, before the first call to `tepl_abstract_factory_get_singleton()`.

Tepl takes ownership of the `factory` reference.

#### Parameters

factory | a TeplAbstractFactory. | [transfer full]

Since: 3.0

### tepl_abstract_factory_get_singleton ()

    TeplAbstractFactory *
    tepl_abstract_factory_get_singleton (void);

Gets the TeplAbstractFactory singleton instance.

If `tepl_abstract_factory_set_singleton()` has not been called, the singleton is created with a TeplAbstractFactory instance.

#### Returns

the TeplAbstractFactory singleton instance.

[transfer none]

Since: 3.0

### tepl_abstract_factory_create_tab ()

    TeplTab *
    tepl_abstract_factory_create_tab (TeplAbstractFactory *factory);

#### Parameters

factory | the TeplAbstractFactory. |

#### Returns

a new TeplTab.

[transfer floating]

Since: 3.0

### tepl_abstract_factory_create_tab_label ()

    GtkWidget *
    tepl_abstract_factory_create_tab_label
                                   (TeplAbstractFactory *factory,
                                    TeplTab *tab);

Creates a new tab label for `tab` , suitable for `gtk_notebook_set_tab_label()`.

#### Parameters

factory | the TeplAbstractFactory. |
tab | a TeplTab. |

#### Returns

a new GtkWidget, or `NULL` for the default tab label (“page N” with GtkNotebook).

[transfer floating][nullable]

Since: 3.0

## Types and Values

### TeplAbstractFactory

    typedef struct _TeplAbstractFactory TeplAbstractFactory;

### struct TeplAbstractFactoryClass

    struct TeplAbstractFactoryClass {
    	GObjectClass parent_class;

    	TeplTab * (* create_tab)		(TeplAbstractFactory *factory);

    	GtkWidget * (* create_tab_label) (TeplAbstractFactory *factory,
    						 TeplTab             *tab);
    };

#### Members

`create_tab` () | Virtual function pointer for `tepl_abstract_factory_create_tab()`. By default the TeplTab is created with `tepl_tab_new()`. |
`create_tab_label` () | Virtual function pointer for `tepl_abstract_factory_create_tab_label()`. By default the tab label is created with `tepl_tab_label_new()`. |