![]() |
![]() |
![]() |
Caja-Actions™ Reference Manual | ![]() |
---|---|---|---|---|
Top | Description | Object Hierarchy | Prerequisites | Known Implementations |
#include <caja-actions/private/na-iduplicable.h> #define NA_TYPE_IDUPLICABLE #define NA_IDUPLICABLE (instance) #define NA_IS_IDUPLICABLE (instance) #define NA_IDUPLICABLE_GET_INTERFACE (instance) NAIDuplicable; NAIDuplicableInterface; #define IDUPLICABLE_SIGNAL_MODIFIED_CHANGED #define IDUPLICABLE_SIGNAL_VALID_CHANGED void na_iduplicable_dispose (const NAIDuplicable *object
); void na_iduplicable_dump (const NAIDuplicable *object
); NAIDuplicable * na_iduplicable_duplicate (const NAIDuplicable *object
,guint mode
); void na_iduplicable_check_status (const NAIDuplicable *object
); NAIDuplicable * na_iduplicable_get_origin (const NAIDuplicable *object
); gboolean na_iduplicable_is_valid (const NAIDuplicable *object
); gboolean na_iduplicable_is_modified (const NAIDuplicable *object
); void na_iduplicable_set_origin (NAIDuplicable *object
,const NAIDuplicable *origin
); void na_iduplicable_set_modified (NAIDuplicable *object
,gboolean modified
); void na_iduplicable_register_consumer (GObject *consumer
); enum DuplicableMode;
NAIDuplicable is implemented by NAObject, NAObjectAction, NAObjectId, NAObjectItem, NAObjectMenu and NAObjectProfile.
This interface is implemented by NAObject in order to let NAObject -derived instance duplication be easily tracked. This works by keeping a pointer on the original object at duplication time, and then only checking edition status when explicitely required.
As the reference count of the original object is not incremented here, the caller has to garantee itself that the original object will stay in life at least as long as the duplicated one.
Objects whose origin is NULL are considered as modified ; this is in particular the case of new, pasted, imported and dropped objects.
when a new object, whether is is really new or it has been pasted, imported or dropped, is inserted somewhere in the tree, its immediate parent is also marked as modified.
Check for edition status, which positions modification and validity status, is not recursive ; it is the responsability of the implementation to check for edition status of children of object..
Table 10. Historic of the versions of the NAIDuplicable interface
Caja-Actions™ version | NAIDuplicable interface version | |
---|---|---|
since 2.30 | 1 | current version |
#define NA_IDUPLICABLE( instance ) ( G_TYPE_CHECK_INSTANCE_CAST( instance, NA_TYPE_IDUPLICABLE, NAIDuplicable ))
#define NA_IS_IDUPLICABLE( instance ) ( G_TYPE_CHECK_INSTANCE_TYPE( instance, NA_TYPE_IDUPLICABLE ))
#define NA_IDUPLICABLE_GET_INTERFACE( instance ) ( G_TYPE_INSTANCE_GET_INTERFACE(( instance ), NA_TYPE_IDUPLICABLE, NAIDuplicableInterface ))
typedef struct { /** * copy: * @target: the #NAIDuplicable target of the copy. * @source: the #NAIDuplicable source of the copy. * @mode: the duplication mode. * * Copies data from @source to @ŧarget, so that @target becomes an * exact copy of @source. * * Each derived class of the implementation should define this * function to copy its own data. The implementation should take * care itself of calling each function in the class hierarchy, * from topmost base class to most-derived one. * * Since: 2.30 */ void ( *copy ) ( NAIDuplicable *target, const NAIDuplicable *source, guint mode ); /** * are_equal: * @a: a first #NAIDuplicable object. * @b: a second #NAIDuplicable object to be compared to the first * one. * * Compares the two objects. * * Each derived class of the implementation should define this * function to compare its own data. The implementation should take * care itself of calling each function in the class hierarchy, * from topmost base class to most-derived one. * * When testing for the modification status of an object, @a stands for * the original object, while @b stands for the duplicated one. * * Returns: TRUE if @a and @b are identical, FALSE else. * * Since: 2.30 */ gboolean ( *are_equal ) ( const NAIDuplicable *a, const NAIDuplicable *b ); /** * is_valid: * @object: the NAIDuplicable object to be checked. * * Checks @object for validity. * * Each derived class of the implementation should define this * function to compare its own data. The implementation should take * care itself of calling each function in the class hierarchy, * from topmost base class to most-derived one. * * Returns: TRUE if @object is valid, FALSE else. * * Since: 2.30 */ gboolean ( *is_valid ) ( const NAIDuplicable *object ); } NAIDuplicableInterface;
This interface is implemented by NAObject objects, in order to be able to keep the trace of all duplicated objects.
#define IDUPLICABLE_SIGNAL_MODIFIED_CHANGED "iduplicable-modified-changed"
#define IDUPLICABLE_SIGNAL_VALID_CHANGED "iduplicable-valid-changed"
void na_iduplicable_dispose (const NAIDuplicable *object
);
Releases resources.
|
the NAIDuplicable object to be initialized. |
Since 2.30
void na_iduplicable_dump (const NAIDuplicable *object
);
Dumps via g_debug the properties of the object.
We ouput here only the data we set ourselves againt the NAIDuplicable -implemented object.
This function should be called by the implementation when it dumps itself its own content.
|
the NAIDuplicable object to be dumped. |
Since 2.30
NAIDuplicable * na_iduplicable_duplicate (const NAIDuplicable *object
,guint mode
);
Exactly duplicates a NAIDuplicable -implemented object, including
modification and validity status which are copied from object
to
the duplicated one.
|
the NAIDuplicable object to be duplicated. |
|
the DuplicableMode duplication mode. |
Returns : |
a new NAIDuplicable. |
Since 2.30
void na_iduplicable_check_status (const NAIDuplicable *object
);
Checks the edition status of the NAIDuplicable object, and set up the corresponding properties.
This function is supposed to be called each time the object may have
been modified in order to set the corresponding properties. Helper
functions na_iduplicable_is_modified()
and na_iduplicable_is_valid()
will then only return the current value of the properties.
na_iduplicable_check_status()
is not, as itself, recursive.
That is, the modification and validity status are only set on the
specified object.
NAObject implementation has chosen to handle itself the recursivity:
na_object_check_status()
so first check status for children, before
calling this function.
|
the NAIDuplicable object to be checked. |
Since 2.30
NAIDuplicable * na_iduplicable_get_origin (const NAIDuplicable *object
);
Returns the origin of a duplicated NAIDuplicable.
|
the NAIDuplicable object whose origin is to be returned. |
Returns : |
the original NAIDuplicable, or NULL. |
Since 2.30
gboolean na_iduplicable_is_valid (const NAIDuplicable *object
);
Returns the current value of the relevant property without rechecking the edition status itself.
|
the NAIDuplicable object whose status is to be returned. |
Returns : |
TRUE is the provided object is valid. |
Since 2.30
gboolean na_iduplicable_is_modified (const NAIDuplicable *object
);
Returns the current value of the 'is_modified' property without rechecking the edition status itself.
|
the NAIDuplicable object whose status is to be returned. |
Returns : |
TRUE is the provided object has been modified regarding of
the original one. |
Since 2.30
void na_iduplicable_set_origin (NAIDuplicable *object
,const NAIDuplicable *origin
);
Sets the new origin of a duplicated NAIDuplicable.
|
the NAIDuplicable object whose origin is to be set. |
|
the new original NAIDuplicable. |
Since 2.30
void na_iduplicable_set_modified (NAIDuplicable *object
,gboolean modified
);
na_iduplicable_set_modified
is deprecated and should not be used in newly-written code. 3.1
Sets the new modification status of a duplicated NAIDuplicable.
|
the NAIDuplicable object whose modification status is to be set. |
|
the new modification status NAIDuplicable. |
Since 2.30
void na_iduplicable_register_consumer (GObject *consumer
);
This function registers a consumer, i.e. an instance to which edition status signals will be propagated.
|
the target instance. |
Since 2.30