## MgDataEntry

MgDataEntry — Interface which provides the user with specific widgets to manipulate data

## Synopsis

    struct      MgDataEntry;
    enum        MgDataEntryAttribute;
    struct      MgDataEntryIface;
    guint       mg_data_entry_get_type          (void);
    void        mg_data_entry_set_value_type    (MgDataEntry *de,
                                                 GdaValueType type);
    GdaValueType mg_data_entry_get_value_type   (MgDataEntry *de);
    void        mg_data_entry_set_value         (MgDataEntry *de,
                                                 const GdaValue *value);
    GdaValue*   mg_data_entry_get_value         (MgDataEntry *de);
    void        mg_data_entry_set_value_orig    (MgDataEntry *de,
                                                 const GdaValue *value);
    const GdaValue* mg_data_entry_get_value_orig
                                                (MgDataEntry *de);
    void        mg_data_entry_set_current_as_orig
                                                (MgDataEntry *de);
    void        mg_data_entry_set_value_default (MgDataEntry *de,
                                                 const GdaValue *value);
    void        mg_data_entry_set_attributes    (MgDataEntry *de,
                                                 guint attrs,
                                                 guint mask);
    guint       mg_data_entry_get_attributes    (MgDataEntry *de);
    MgDataHandler* mg_data_entry_get_handler    (MgDataEntry *de);
    gboolean    mg_data_entry_expand_in_layout  (MgDataEntry *de);

## Object Hierarchy

      GInterface
       +----MgDataEntry

## Known Implementations

MgDataEntry is implemented by MgEntryTime, MgEntryCombo, MgEntryString, MgEntryNone, MgEntryCidr, MgEntryBoolean, MgEntryPassmd5 and MgEntryWrapper.

## Signal Prototypes

    "contents-modified"
                void        user_function      (MgDataEntry *mgdataentry,
                                                gpointer user_data);
    "status-changed"
                void        user_function      (MgDataEntry *mgdataentry,
                                                gpointer user_data);

## Description

This interface is implemented by widgets to enable users to manipulate data of different types. Such widgets are created by objects implementing the MgDataHandler interface.

## Details

### struct MgDataEntry

    struct MgDataEntry;

### enum MgDataEntryAttribute

    typedef enum {
    	MG_DATA_ENTRY_IS_NULL        = 1 << 0, /* READ | WRITE */
    	MG_DATA_ENTRY_CAN_BE_NULL    = 1 << 1, /* READ | WRITE */
    	MG_DATA_ENTRY_IS_DEFAULT     = 1 << 2, /* READ | WRITE */
    	MG_DATA_ENTRY_CAN_BE_DEFAULT = 1 << 3, /* READ | WRITE */
    	MG_DATA_ENTRY_IS_UNCHANGED   = 1 << 4, /* READ | WRITE */
    	MG_DATA_ENTRY_ACTIONS_SHOWN  = 1 << 5, /* READ | WRITE */
    	MG_DATA_ENTRY_DATA_NON_VALID = 1 << 6, /* READ */
    	MG_DATA_ENTRY_HAS_VALUE_ORIG = 1 << 7  /* READ */
    } MgDataEntryAttribute;

### struct MgDataEntryIface

    struct MgDataEntryIface {

    	GTypeInterface           g_iface;

    	/* signals */
    	void            (* contents_modified)     (MgDataEntry *de);
    	void            (* status_changed)        (MgDataEntry *de);

    	/* virtual table */
    	void            ( *set_value_type)        (MgDataEntry *de, GdaValueType type);
    	GdaValueType    ( *get_value_type)        (MgDataEntry *de);
    	void            ( *set_value)             (MgDataEntry *de, const GdaValue * value);
    	GdaValue       *( *get_value)             (MgDataEntry *de);
    	void            ( *set_value_orig)        (MgDataEntry *de, const GdaValue * value);
    	const GdaValue *( *get_value_orig)        (MgDataEntry *de);
    	void            ( *set_value_default)     (MgDataEntry *de, const GdaValue * value);
    	void            ( *set_attributes)        (MgDataEntry *de, guint attrs, guint mask);
    	guint           ( *get_attributes)        (MgDataEntry *de);
    	MgDataHandler  *( *get_handler)           (MgDataEntry *de);
    	gboolean        ( *expand_in_layout)      (MgDataEntry *de);
    };

### mg_data_entry_get_type ()

    guint       mg_data_entry_get_type          (void);

Returns : |

### mg_data_entry_set_value_type ()

    void        mg_data_entry_set_value_type    (MgDataEntry *de,
                                                 GdaValueType type);

Sets the type of value the MgDataEntry will handle. The type must be compatible with what the widget can handle.

`de` : | a GtkWidget object which implements the MgDataEntry interface
`type` : |

### mg_data_entry_get_value_type ()

    GdaValueType mg_data_entry_get_value_type   (MgDataEntry *de);

Fetch the type of data the MgDataEntry handles

`de` : | a GtkWidget object which implements the MgDataEntry interface
Returns : | the GdaValueType type

### mg_data_entry_set_value ()

    void        mg_data_entry_set_value         (MgDataEntry *de,
                                                 const GdaValue *value);

Push a value into the MgDataEntry. The value parameter must either be: - NULL or of type GDA_VALUE_TYPE_NULL, or - of type specified using mg_data_entry_set_value_type.

`de` : | a GtkWidget object which implements the MgDataEntry interface
`value` : |

### mg_data_entry_get_value ()

    GdaValue*   mg_data_entry_get_value         (MgDataEntry *de);

Fetch the value held in the MgDataEntry widget. If the value is set to NULL, the returned value is of type GDA_VALUE_TYPE_NULL. If the value is set to default, then the returned value is of type GDA_VALUE_TYPE_NULL or is the default value if it has been provided to the widget (and is of the same type as the one provided by `de`).

`de` : | a GtkWidget object which implements the MgDataEntry interface
Returns : | a new GdaValue

### mg_data_entry_set_value_orig ()

    void        mg_data_entry_set_value_orig    (MgDataEntry *de,
                                                 const GdaValue *value);

Push a value into the MgDataEntry in the same way as `mg_data_entry_set_value()` but also sets this value as the original value.

`de` : | a GtkWidget object which implements the MgDataEntry interface
`value` : |

### mg_data_entry_get_value_orig ()

    const GdaValue* mg_data_entry_get_value_orig
                                                (MgDataEntry *de);

Fetch the original value held in the MgDataEntry widget

`de` : | a GtkWidget object which implements the MgDataEntry interface
Returns : | the GdaValue

### mg_data_entry_set_current_as_orig ()

    void        mg_data_entry_set_current_as_orig
                                                (MgDataEntry *de);

Tells that the current value in `de` is to be considered as the original value

`de` : | a GtkWidget object which implements the MgDataEntry interface

### mg_data_entry_set_value_default ()

    void        mg_data_entry_set_value_default (MgDataEntry *de,
                                                 const GdaValue *value);

Sets the default value for the MgDataEntry which gets displayed when the user forces the default value. If it is not set then it is set to type GDA_VALUE_TYPE_NULL. The value parameter must either be: - NULL or of type GDA_VALUE_TYPE_NULL, or - of type specified using mg_data_entry_set_value_type.

`de` : | a GtkWidget object which implements the MgDataEntry interface
`value` : |

### mg_data_entry_set_attributes ()

    void        mg_data_entry_set_attributes    (MgDataEntry *de,
                                                 guint attrs,
                                                 guint mask);

Sets the parameters of the MgDataEntry. Only the attributes corresponding to the mask are set, the other ones are ignored.

`de` : | a GtkWidget object which implements the MgDataEntry interface
`attrs` : | the attributes to set (OR'ed between them)
`mask` : | the mask corresponding to the considered attributes

### mg_data_entry_get_attributes ()

    guint       mg_data_entry_get_attributes    (MgDataEntry *de);

Retreives the parameters of the MgDataEntry widget.

`de` : | a GtkWidget object which implements the MgDataEntry interface
Returns : | the OR'ed bits corresponding to the attributes.

### mg_data_entry_get_handler ()

    MgDataHandler* mg_data_entry_get_handler    (MgDataEntry *de);

Fetch the MgDataHandler the MgDataEntry is using

`de` : | a GtkWidget object which implements the MgDataEntry interface
Returns : | the MgDataHandler object

### mg_data_entry_expand_in_layout ()

    gboolean    mg_data_entry_expand_in_layout  (MgDataEntry *de);

Used for the layout of the widget in containers.

`de` : | a GtkWidget object which implements the MgDataEntry interface
Returns : | TRUE if the widget should expand

## Signals

### The "contents-modified" signal

    void        user_function                  (MgDataEntry *mgdataentry,
                                                gpointer user_data);

`mgdataentry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

### The "status-changed" signal

    void        user_function                  (MgDataEntry *mgdataentry,
                                                gpointer user_data);

`mgdataentry` : | the object which received the signal.
`user_data` : | user data set when the signal handler was connected.

## See Also

The MgServerDataType class and MgDataHandler interface.