NAIContext

## NAIContext NAIContext — The Contextual Interface |

## Functions

#define | NA_TYPE_ICONTEXT
#define | NA_ICONTEXT_GET_INTERFACE()
gboolean | na_icontext_are_equal ()
void | na_icontext_check_mimetypes ()
void | na_icontext_copy ()
gboolean | na_icontext_is_candidate ()
gboolean | na_icontext_is_valid ()
void | na_icontext_read_done ()
void | na_icontext_set_scheme ()
void | na_icontext_set_only_desktop ()
void | na_icontext_set_not_desktop ()
void | na_icontext_replace_folder ()

## Types and Values

| NAIContext
| NAIContextInterfacePrivate
| NAIContextInterface

## Includes

    #include <caja-actions/na-icontext.h>

## Description

This interface is implemented by all NAObject -derived objects whose the display in the Caja context menu is subject to some conditions.

Implementors, typically NAObjectAction, NAObjectProfile and NAObjectMenu, host the required data as NADataBoxed in a dedicated NA_FACTORY_CONDITIONS_GROUP data group.

## Functions

### NA_TYPE_ICONTEXT

    #define NA_TYPE_ICONTEXT                      ( na_icontext_get_type())

### NA_ICONTEXT_GET_INTERFACE()

    #define NA_ICONTEXT_GET_INTERFACE( instance ) ( G_TYPE_INSTANCE_GET_INTERFACE(( instance ), NA_TYPE_ICONTEXT, NAIContextInterface ))

### na_icontext_are_equal ()

    gboolean
    na_icontext_are_equal (const NAIContext *a,
                           const NAIContext *b);

#### Parameters

a | the (original) NAIContext context. |
b | the (duplicated) NAIContext context to be checked. |

#### Returns

`TRUE` if this `a` and `b` are equal, `FALSE` else.

Since: 3.1

### na_icontext_check_mimetypes ()

    void
    na_icontext_check_mimetypes (const NAIContext *context);

Check the current list of mimetypes to see if it covers all mimetypes, or all regular files, or something else.

#### Parameters

context | the NAIContext object to be checked. |

Since: 2.30

### na_icontext_copy ()

    void
    na_icontext_copy (NAIContext *context,
                      const NAIContext *source);

Copy specific data from `source` to `context` .

#### Parameters

context | the target NAIContext context. |
source | the source NAIContext context. |

Since: 3.1

### na_icontext_is_candidate ()

    gboolean
    na_icontext_is_candidate (const NAIContext *context,
                              guint target,
                              GList *selection);

Determines if the given object may be candidate to be displayed in the Caja context menu, depending of the list of currently selected items.

This function is called by `build_caja_menus` plugin function for each item found in NAPivot items list, and, when this an action, for each profile of this action.

#### Parameters

context | a NAIContext to be checked. |
target | the current target. |
selection | the currently selected items, as a GList of NASelectedInfo items. |

#### Returns

`TRUE` if this `context` succeeds to all tests and is so a valid candidate to be displayed in Caja context menu, `FALSE` else.

Since: 2.30

### na_icontext_is_valid ()

    gboolean
    na_icontext_is_valid (const NAIContext *context);

#### Parameters

context | the NAIContext to be checked. |

#### Returns

`TRUE` if this `context` is valid, `FALSE` else.

This function is part of `NAIDuplicable::check_status` and is called by NAIDuplicable objects which also implement NAIContext interface. It so doesn't make sense of asking the object for its validity status as it has already been checked before calling the function.

Since: 2.30

### na_icontext_read_done ()

    void
    na_icontext_read_done (NAIContext *context);

Prepares the specified NAIContext just after it has been read.

- This setup an internal flag when mimetypes is like 'all/all' in order to optimize computation time;

#### Parameters

context | the NAIContext to be prepared. |

Since: 2.30

### na_icontext_set_scheme ()

    void
    na_icontext_set_scheme (NAIContext *context,
                            const gchar *scheme,
                            gboolean selected);

Sets the status of a `scheme` relative to this `context` .

#### Parameters

context | the NAIContext to be updated. |
scheme | name of the scheme. |
selected | whether this scheme is candidate to this `context` . |

Since: 2.30

### na_icontext_set_only_desktop ()

    void
    na_icontext_set_only_desktop (NAIContext *context,
                                  const gchar *desktop,
                                  gboolean selected);

Sets the status of the `desktop` relative to this `context` for the NotShowIn list.

#### Parameters

context | the NAIContext to be updated. |
desktop | name of the desktop environment. |
selected | whether this `desktop` is candidate to this `context` . |

Since: 2.30

### na_icontext_set_not_desktop ()

    void
    na_icontext_set_not_desktop (NAIContext *context,
                                 const gchar *desktop,
                                 gboolean selected);

### na_icontext_replace_folder ()

    void
    na_icontext_replace_folder (NAIContext *context,
                                const gchar *old,
                                const gchar *new);

Replaces the `old` URI by the `new` one.

#### Parameters

context | the NAIContext to be updated. |
old | the old uri. |
new | the new uri. |

Since: 2.30

## Types and Values

### NAIContext

    typedef struct _NAIContext NAIContext;

### NAIContextInterfacePrivate

    typedef struct _NAIContextInterfacePrivate NAIContextInterfacePrivate;

### NAIContextInterface

    typedef struct {
    	/**
    	 * is_candidate:
    	 * @object: this NAIContext object.
    	 * @target: the initial target which triggered this function's stack.
    	 *  This target is defined in na-object-item.h.
    	 * @selection: the current selection as a GList of CajaFileInfo.
    	 *
    	 * The NAIContext implementor may take advantage of this
    	 * virtual function to check for its own specific data. Only if the
    	 * implementor does return %TRUE (or just doesn't implement this
    	 * virtual), the conditions themselves will be checked.
    	 *
    	 * Returns: %TRUE if the @object may be a potential candidate, %FALSE
    	 * else.
    	 *
    	 * Since: 2.30
    	 */
    	gboolean ( *is_candidate )( NAIContext *object, guint target, GList *selection );
    } NAIContextInterface;

This interface manages all conditions relevant to a displayable status in Caja.

#### Members

`is_candidate` () | determines if the given NAObject-derived object is candidate to display in Caja. |