# Plugin UIs

typedef unsigned (*LilvUISupportedFunc)(const char *container_type_uri, const char *ui_type_uri)

  Function to determine whether a UI type is supported.

  This is provided by the user and must return non-zero iff using a UI of type `ui_type_uri` in a container of type `container_type_uri` is supported.

LilvUIs *lilv_plugin_get_uis(const LilvPlugin *plugin)

  Get all UIs for `plugin`.

  Returned value must be freed by caller using lilv_uis_free().

const LilvNode *lilv_ui_get_uri(const LilvUI *ui)

  Get the URI of a Plugin UI.

  Returns:

    A shared value which must not be modified or freed.

const LilvNodes *lilv_ui_get_classes(const LilvUI *ui)

  Get the types (URIs of RDF classes) of a Plugin UI.

  Note that in most cases `lilv_ui_is_supported()` should be used, which avoids the need to use this function (and type specific logic).

  Returns:

    A shared value which must not be modified or freed.

bool lilv_ui_is_a(const LilvUI *ui, const LilvNode *class_uri)

  Check whether a plugin UI has a given type.

  Parameters:

    - ui – The Plugin UI

    - class_uri – The URI of the LV2 UI type to check this UI against

unsigned lilv_ui_is_supported(const LilvUI *ui, LilvUISupportedFunc supported_func, const LilvNode *container_type, const LilvNode **ui_type)

  Return true iff a Plugin UI is supported as a given widget type.

  Parameters:

    - ui – The Plugin UI

    - supported_func – User provided supported predicate.

    - container_type – The widget type to host the UI within.

    - ui_type – (Output) If non-NULL, set to the native type of the UI which is owned by `ui` and must not be freed by the caller.

  Returns:

    The embedding quality level returned by `supported_func`.

const LilvNode *lilv_ui_get_bundle_uri(const LilvUI *ui)

  Get the URI for a Plugin UI’s bundle.

  Returns:

    A shared value which must not be modified or freed.

const LilvNode *lilv_ui_get_binary_uri(const LilvUI *ui)

  Get the URI for a Plugin UI’s shared library.

  Returns:

    A shared value which must not be modified or freed.