160 lines
4.4 KiB
C
160 lines
4.4 KiB
C
/******************************************************************************
|
|
* @file create_relation_dialog.h
|
|
* @brief Dialogue GTK de préparation d'une relation entre deux entités.
|
|
******************************************************************************/
|
|
|
|
#ifndef LABFY_INVESTIGATION_CREATE_RELATION_DIALOG_H
|
|
#define LABFY_INVESTIGATION_CREATE_RELATION_DIALOG_H
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
/**
|
|
* @brief Résultat opaque produit par le dialogue.
|
|
*/
|
|
typedef struct CreateRelationDialogResult CreateRelationDialogResult;
|
|
|
|
/**
|
|
* @brief Codes d'erreur produits par CreateRelationDialog.
|
|
*/
|
|
typedef enum
|
|
{
|
|
CREATE_RELATION_DIALOG_ERROR_INVALID_ARGUMENT,
|
|
CREATE_RELATION_DIALOG_ERROR_EMPTY_TARGETS,
|
|
CREATE_RELATION_DIALOG_ERROR_MEMORY,
|
|
CREATE_RELATION_DIALOG_ERROR_INVALID_DATA
|
|
} CreateRelationDialogError;
|
|
|
|
/**
|
|
* @brief Domaine d'erreur du dialogue.
|
|
*/
|
|
#define CREATE_RELATION_DIALOG_ERROR \
|
|
create_relation_dialog_error_quark()
|
|
|
|
/**
|
|
* @brief Callback appelé après validation ou annulation.
|
|
*
|
|
* En cas de validation, result appartient au callback et doit être libéré
|
|
* avec create_relation_dialog_result_free().
|
|
*
|
|
* En cas d'annulation, result vaut NULL.
|
|
*
|
|
* @param result Résultat possédé par le callback, ou NULL.
|
|
* @param user_data Données privées fournies lors de l'ouverture.
|
|
*/
|
|
typedef void (*CreateRelationDialogCallback)(
|
|
CreateRelationDialogResult *result,
|
|
gpointer user_data
|
|
);
|
|
|
|
/**
|
|
* @brief Retourne le domaine d'erreur du dialogue.
|
|
*/
|
|
GQuark create_relation_dialog_error_quark(void);
|
|
|
|
/**
|
|
* @brief Présente le dialogue de création d'une relation.
|
|
*
|
|
* entities doit contenir des pointeurs EntityRecord valides. Le dialogue
|
|
* copie tous les identifiants et libellés nécessaires et ne conserve aucun
|
|
* pointeur vers les modèles fournis.
|
|
*
|
|
* L'entité source est retirée de la liste des cibles.
|
|
*
|
|
* Cette fonction ne crée aucune relation et n'accède pas à SQLite.
|
|
*
|
|
* @param parent Fenêtre GTK parente.
|
|
* @param source_entity_identifier UUID de l'entité source.
|
|
* @param entities Tableau de EntityRecord.
|
|
* @param callback Fonction appelée après validation ou annulation.
|
|
* @param user_data Données privées transmises au callback.
|
|
* @param error Emplacement facultatif recevant une erreur immédiate.
|
|
*
|
|
* @return TRUE si le dialogue a été créé et présenté.
|
|
*/
|
|
gboolean create_relation_dialog_present(
|
|
GtkWindow *parent,
|
|
const char *source_entity_identifier,
|
|
const GPtrArray *entities,
|
|
CreateRelationDialogCallback callback,
|
|
gpointer user_data,
|
|
GError **error
|
|
);
|
|
|
|
/**
|
|
* @brief Valide les valeurs obligatoires d'une relation.
|
|
*
|
|
* Cette fonction est indépendante de l'affichage et pourra être testée
|
|
* sans ouvrir de fenêtre GTK.
|
|
*
|
|
* @param source_entity_identifier UUID de l'entité source.
|
|
* @param target_entity_identifier UUID de l'entité cible.
|
|
* @param relation_type Type de relation non vide.
|
|
* @param confidence Confiance comprise entre 0 et 100.
|
|
* @param error Emplacement facultatif recevant une erreur.
|
|
*
|
|
* @return TRUE lorsque les valeurs sont valides.
|
|
*/
|
|
gboolean create_relation_dialog_validate_values(
|
|
const char *source_entity_identifier,
|
|
const char *target_entity_identifier,
|
|
const char *relation_type,
|
|
gint confidence,
|
|
GError **error
|
|
);
|
|
|
|
/**
|
|
* @brief Libère un résultat.
|
|
*
|
|
* Cette fonction accepte NULL.
|
|
*/
|
|
void create_relation_dialog_result_free(
|
|
CreateRelationDialogResult *result
|
|
);
|
|
|
|
/**
|
|
* @brief Retourne l'UUID de l'entité source.
|
|
*/
|
|
const char *create_relation_dialog_result_get_source_identifier(
|
|
const CreateRelationDialogResult *result
|
|
);
|
|
|
|
/**
|
|
* @brief Retourne l'UUID de l'entité cible.
|
|
*/
|
|
const char *create_relation_dialog_result_get_target_identifier(
|
|
const CreateRelationDialogResult *result
|
|
);
|
|
|
|
/**
|
|
* @brief Retourne le type de relation.
|
|
*/
|
|
const char *create_relation_dialog_result_get_relation_type(
|
|
const CreateRelationDialogResult *result
|
|
);
|
|
|
|
/**
|
|
* @brief Retourne le libellé facultatif.
|
|
*/
|
|
const char *create_relation_dialog_result_get_label(
|
|
const CreateRelationDialogResult *result
|
|
);
|
|
|
|
/**
|
|
* @brief Retourne la justification facultative.
|
|
*/
|
|
const char *create_relation_dialog_result_get_justification(
|
|
const CreateRelationDialogResult *result
|
|
);
|
|
|
|
/**
|
|
* @brief Retourne le niveau de confiance.
|
|
*/
|
|
gint create_relation_dialog_result_get_confidence(
|
|
const CreateRelationDialogResult *result
|
|
);
|
|
|
|
G_END_DECLS
|
|
|
|
#endif
|