CpgGroup

CpgGroup — Group object grouping many objects together

Synopsis

#define             CPG_GROUP_CONST                     (obj)
enum                CpgGroupError;
struct              CpgGroup;
struct              CpgGroupClass;
#define             CPG_GROUP_ERROR
GQuark              cpg_group_error_quark               (void);
CpgGroup *          cpg_group_new                       (const gchar *id,
                                                         CpgObject *proxy);
const GSList *      cpg_group_get_children              (CpgGroup *group);
gboolean            cpg_group_add                       (CpgGroup *group,
                                                         CpgObject *object,
                                                         GError **error);
gboolean            cpg_group_remove                    (CpgGroup *group,
                                                         CpgObject *object,
                                                         GError **error);
gboolean            cpg_group_set_proxy                 (CpgGroup *group,
                                                         CpgObject *proxy);
CpgObject *         cpg_group_get_proxy                 (CpgGroup *group);
gboolean            cpg_group_property_is_proxy         (CpgGroup *group,
                                                         const gchar *name);
void                cpg_group_foreach                   (CpgGroup *group,
                                                         GFunc func,
                                                         gpointer data);
CpgObject *         cpg_group_get_child                 (CpgGroup *group,
                                                         const gchar *name);
CpgObject *         cpg_group_find_object               (CpgGroup *group,
                                                         const gchar *selector);
GSList *            cpg_group_find_objects              (CpgGroup *group,
                                                         const gchar *selector);
CpgProperty *       cpg_group_find_property             (CpgGroup *group,
                                                         const gchar *selector);
GSList *            cpg_group_find_properties           (CpgGroup *group,
                                                         const gchar *selector);
gboolean            cpg_group_verify_remove_child       (CpgGroup *group,
                                                         CpgObject *child,
                                                         GError **error);
CpgPropertyInterface * cpg_group_get_property_interface (CpgGroup *group);
GSList *            cpg_group_get_auto_templates_for_child
                                                        (CpgGroup *group,
                                                         CpgObject *child);
                    CpgGroupPrivate;

Object Hierarchy

  GEnum
   +----CpgGroupError
  GObject
   +----CpgObject
         +----CpgGroup
               +----CpgImport
               +----CpgNetwork

Implemented Interfaces

CpgGroup implements CpgUsable, CpgAnnotatable, CpgLayoutable and CpgTaggable.

Properties

  "proxy"                    CpgObject*            : Read / Write / Construct Only

Signals

  "child-added"                                    : Run Last
  "child-removed"                                  : Run Last
  "verify-add-child"                               : Run Last
  "verify-remove-child"                            : Run Last

Description

The CpgGroup is a special CpgObject that contains many objects as children. This can be used make sub-networks that can be easily instantiated, providing some common functionality.

Each group can have a proxy object associated which serves as a bridge between the outside and the inside of the group. In addition, each group has an interface (CpgPropertyInterface) which allows the designer of the group to expose a certain subset of its child properties on the group.

CpgGroup Copy Semantics

When a group is copied with cpg_object_copy, all the children are recursively copied as well. If a group has a proxy, the new group will have its proxy set to the new copy of the original proxy.

Details

CPG_GROUP_CONST()

#define CPG_GROUP_CONST(obj)		(G_TYPE_CHECK_INSTANCE_CAST ((obj), CPG_TYPE_GROUP, CpgGroup const))


enum CpgGroupError

typedef enum
{
	CPG_GROUP_ERROR_CHILD_ALREADY_EXISTS,
	CPG_GROUP_ERROR_CHILD_DOES_NOT_EXIST,
	CPG_GROUP_ERROR_INTERFACE_IS_PROXY,
	CPG_GROUP_ERROR_CHILD_IN_USE,
	CPG_GROUP_ERROR_NUM
} CpgGroupError;


struct CpgGroup

struct CpgGroup;


struct CpgGroupClass

struct CpgGroupClass {
	gboolean      (*add)           (CpgGroup   *group,
	                                CpgObject  *object,
	                                GError    **error);

	gboolean      (*remove)        (CpgGroup   *group,
	                                CpgObject  *object,
	                                GError    **error);

	gboolean      (*verify_remove_child) (CpgGroup   *group,
	                                      CpgObject  *object,
	                                      GError    **error);

	GSList const *(*get_children)  (CpgGroup   *group);

	/* signals */
	void          (*child_added)   (CpgGroup   *group,
	                                CpgObject  *object);
	void          (*child_removed) (CpgGroup   *group,
	                                CpgObject  *object);
};

add ()

add virtual function

remove ()

remove virtual function

verify_remove_child ()

get_children ()

child_added ()

child added default signal handler

child_removed ()

child removed default signal handler The CpgGroup class

CPG_GROUP_ERROR

#define CPG_GROUP_ERROR (cpg_group_error_quark ())


cpg_group_error_quark ()

GQuark              cpg_group_error_quark               (void);


cpg_group_new ()

CpgGroup *          cpg_group_new                       (const gchar *id,
                                                         CpgObject *proxy);

Create a new group.

id :

the group id

proxy :

A CpgObject

Returns :

A CpgGroup

cpg_group_get_children ()

const GSList *      cpg_group_get_children              (CpgGroup *group);

Get a list of the children in group.

group :

A CpgGroup

Returns :

A GSList of CpgObject. [element-type CpgObject][transfer none]

cpg_group_add ()

gboolean            cpg_group_add                       (CpgGroup *group,
                                                         CpgObject *object,
                                                         GError **error);

Add a child object to the group.

group :

A CpgGroup

object :

A CpgObject

Returns :

TRUE if the child could be successfully added, FALSE otherwise

cpg_group_remove ()

gboolean            cpg_group_remove                    (CpgGroup *group,
                                                         CpgObject *object,
                                                         GError **error);

Remove a child object from the group.

group :

A CpgGroup

object :

A CpgObject

error :

A GError

Returns :

TRUE if the child was successfully removed, FALSE otherwise

cpg_group_set_proxy ()

gboolean            cpg_group_set_proxy                 (CpgGroup *group,
                                                         CpgObject *proxy);

Set the proxy object of group to proxy.

group :

A CpgGroup

proxy :

A CpgObject

Returns :

TRUE if the proxy could be successfully changed, FALSE otherwise

cpg_group_get_proxy ()

CpgObject *         cpg_group_get_proxy                 (CpgGroup *group);

Get the proxy object of group.

group :

A CpgGroup

Returns :

A CpgObject. [transfer none]

cpg_group_property_is_proxy ()

gboolean            cpg_group_property_is_proxy         (CpgGroup *group,
                                                         const gchar *name);


cpg_group_foreach ()

void                cpg_group_foreach                   (CpgGroup *group,
                                                         GFunc func,
                                                         gpointer data);

Call func for each child object in the group.

group :

A CpgGroup

func :

A GFunc. [scope call]

data :

User data

cpg_group_get_child ()

CpgObject *         cpg_group_get_child                 (CpgGroup *group,
                                                         const gchar *name);

Get a child from the group by name.

group :

A CpgGroup

name :

The child name

Returns :

A CpgObject. [transfer none]

cpg_group_find_object ()

CpgObject *         cpg_group_find_object               (CpgGroup *group,
                                                         const gchar *selector);

Find object by specifying a path. For example, if there is another group "g" containing a state "s", you can use cpg_group_find_object (group, "g.s") to get the object.

group :

A CpgGroup

Returns :

A CpgObject. [transfer none]

cpg_group_find_objects ()

GSList *            cpg_group_find_objects              (CpgGroup *group,
                                                         const gchar *selector);

Find objects by specifying a path. For example, if there is another group "g" containing a state "s", you can use cpg_group_find_object (group, "g.s") to get the object.

group :

A CpgGroup

Returns :

A CpgObject. [transfer container][element-type CpgObject]

cpg_group_find_property ()

CpgProperty *       cpg_group_find_property             (CpgGroup *group,
                                                         const gchar *selector);

Find a property by specifying an object path. For example, if there is another group "g" containing a state "s" with a property "x", you can use cpg_group_find_property (group, "g.s.x") to get the property.

group :

A CpgGroup

Returns :

A CpgProperty. [transfer none]

cpg_group_find_properties ()

GSList *            cpg_group_find_properties           (CpgGroup *group,
                                                         const gchar *selector);

Find properties by specifying a path. For example, if there is another group "g" containing a state "s" with property "x", you can use cpg_group_find_properties (group, "g.s.x") to get the property.

group :

A CpgGroup

Returns :

A list of CpgProperty. [transfer container][element-type CpgProperty]

cpg_group_verify_remove_child ()

gboolean            cpg_group_verify_remove_child       (CpgGroup *group,
                                                         CpgObject *child,
                                                         GError **error);


cpg_group_get_property_interface ()

CpgPropertyInterface * cpg_group_get_property_interface (CpgGroup *group);

Get the property interface of the group.

group :

A CpgGroup

Returns :

A CpgPropertyInterface. [transfer none]

cpg_group_get_auto_templates_for_child ()

GSList *            cpg_group_get_auto_templates_for_child
                                                        (CpgGroup *group,
                                                         CpgObject *child);

Get the templates that were automatically applied from the group to the child.

group :

A CpgGroup

child :

A CpgObject

Returns :

A GSList of CpgObject. [transfer container][allow-none]

CpgGroupPrivate

typedef struct _CpgGroupPrivate CpgGroupPrivate;

Property Details

The "proxy" property

  "proxy"                    CpgObject*            : Read / Write / Construct Only

The group proxy object

Signal Details

The "child-added" signal

void                user_function                      (CpgGroup  *object,
                                                        CpgObject *action,
                                                        gpointer   user_data)      : Run Last

Emitted when a child object is added to the group

object :

a CpgObject

action :

the added CpgObject

user_data :

user data set when the signal handler was connected.

The "child-removed" signal

void                user_function                      (CpgGroup  *object,
                                                        CpgObject *action,
                                                        gpointer   user_data)      : Run Last

Emitted when a child object is removed from the group

object :

a CpgObject

action :

the removed CpgObject

user_data :

user data set when the signal handler was connected.

The "verify-add-child" signal

gboolean            user_function                      (CpgGroup  *object,
                                                        CpgObject *child,
                                                        gpointer   error,
                                                        gpointer   user_data)      : Run Last

object :

a CpgObject

child :

the child to be removed

error :

the error

user_data :

user data set when the signal handler was connected.

Returns :

TRUE if the child can be added, FALSE otherwise

The "verify-remove-child" signal

gboolean            user_function                      (CpgGroup  *object,
                                                        CpgObject *child,
                                                        gpointer   error,
                                                        gpointer   user_data)      : Run Last

object :

a CpgObject

child :

the child to be removed

error :

the error

user_data :

user data set when the signal handler was connected.

Returns :

TRUE if the child can be removed, FALSE otherwise