## NADataDef, NADataGroup NADataDef, NADataGroup — The Data Factory Structure Definitions |

## Synopsis

    #include <nautilus-actions/na-data-def.h>

                        NADataDef;
                        NADataGroup;
    const NADataDef *   na_data_def_get_data_def            (const NADataGroup *group,
                                                             const gchar *group_name,
                                                             const gchar *name);

## Description

NADataDef and NADataGroup are structures which handle the list of elementary datas for each and every NAObjectItem which happens to implement the NAIFactoryObject interface.

## Details

### NADataDef

    typedef struct {
    	gchar     *name;
    	gboolean   readable;
    	gboolean   writable;
    	gboolean   has_property;
    	gchar     *short_label;
    	gchar     *long_label;
    	guint      type;
    	gchar     *default_value;
    	gboolean   write_if_default;
    	gboolean   copyable;
    	gboolean   comparable;
    	gboolean   mandatory;
    	gboolean   localizable;
    	gchar     *gconf_entry;
    	gchar     *desktop_entry;
    	gchar      option_short;
    	gchar     *option_long;
    	gint       option_flags;
    	GOptionArg option_arg;
    	gchar     *option_label;
    	gchar     *option_arg_label;
    } NADataDef;

This structure fully describes an elementary factory data. Each NAIFactoryObject item definition may include several groups of this structure.

gchar *`name`; | both the id and the canonical name. Used when getting/setting properties. Is defined in na-ifactory-object-data.h and must be globally unique. Must be an invariant as it is known from plugin extensions.
gboolean `readable`; | whether the data should be read on unserialization operations. If FALSE, then no attempt will be made to read it and the data will have to be set dynamically. When a data has been written once (see below), and unless special cases (see e.g. type), it should remain readable even if it has becomen obsolete (for backward compatibility).
gboolean `writable`; | whether the data is to be written on serialization operations. If FALSE, then no attempt will be made to write it. Mainly set to FALSE for dynamically set variables and obsoleted ones.
gboolean `has_property`; | whether a property should be set for this variable ? Set to FALSE for obsolete variables.
gchar *`short_label`; | short localizable descriptive name. Used in GParamSpec and in schemas.
gchar *`long_label`; | long, if not complete, localizable description. Used in GParamSpec and in schemas?
guint `type`; | the elementary NA_DATA_TYPE_xxx data type.
gchar *`default_value`; | the default to assign when creating a new object. This default is also displayed in command-line help of nautilus-actions-new utility.
gboolean `write_if_default`; | write this value even if it is the default value ? Should default to FALSE.
gboolean `copyable`; | whether this data should be automatically copied when we are duplicating an object to another ? In all cases, the implementation is always triggered by the `copy()` interface method.
gboolean `comparable`; | whether this data should be compared when we are testing two objects for equality.
gboolean `mandatory`; | whether this data must be not null and not empty when we are testing for validity of an object.
gboolean `localizable`; | whether this is a localizable data when serializing or exporting.
gchar *`gconf_entry`; | same entry is also used for GConf-based XML docs.
gchar *`desktop_entry`; | entry in .desktop files.
gchar `option_short`; | the short version of a command-line parameter in nautilus-actions-new, or 0.
gchar *`option_long`; | the long version of the same command-line parameter in nautilus-actions-new, or NULL.
gint `option_flags`; | GOptionFlags for the command-line parameter, or 0.
GOptionArg `option_arg`; | the type of the option, or 0.
gchar *`option_label`; | the localizable description for the variable in nautilus-actions-new. Defaults to `short_label` if NULL.
gchar *`option_arg_label`; | the localizable description for the argument.

### NADataGroup

    typedef struct {
    	gchar     *group;
    	NADataDef *def;
    } NADataGroup;

This structure fully describes a logical group of data. Each NAIFactoryObject item definition is built from a list of these groups.

gchar *`group`; | the name of the group, as defined in na-ifactory-object-data.h.
NADataDef *`def`; | the list of the corresponding data structures.

### na_data_def_get_data_def ()

    const NADataDef *   na_data_def_get_data_def            (const NADataGroup *group,
                                                             const gchar *group_name,
                                                             const gchar *name);

`group` : | a NADataGroup structure array.
`group_name` : | the searched group name.
`name` : | the searched data name.
Returns : | a pointer to the NADataDef structure, or `NULL` if not found.

Since 2.30