/****************************************************************************** * @file create_person_dialog.h * @brief Formulaire GTK de création d'une personne observée. ******************************************************************************/ #ifndef LABFY_INVESTIGATION_CREATE_PERSON_DIALOG_H #define LABFY_INVESTIGATION_CREATE_PERSON_DIALOG_H #include "core/person_entity_service.h" #include "core/evidence_staging.h" #include "models/evidence_record.h" #include "models/person_evidence_selection.h" #include "core/task_manager.h" #include "core/tool_registry.h" #include G_BEGIN_DECLS /** @brief Résultat opaque possédé par le callback. */ typedef struct CreatePersonDialogResult CreatePersonDialogResult; /** @brief Callback appelé après validation ou annulation. */ typedef void (*CreatePersonDialogCallback)(CreatePersonDialogResult *result, gpointer user_data); typedef gboolean (*CreatePersonDialogSessionCheck)(gpointer user_data); /** * @brief Présente le formulaire de création d'une personne. * @param parent Fenêtre parente. * @param evidence_records Preuves disponibles empruntées. * @param callback Callback de fin. * @param user_data Données privées du callback. * @return TRUE si le dialogue a été présenté. */ gboolean create_person_dialog_present(GtkWindow *parent, Database *database, const GPtrArray *evidence_records, const char *investigation_root_path, TaskManager *task_manager, const ToolInfo *tesseract_tool, CreatePersonDialogSessionCheck session_check, CreatePersonDialogCallback callback, gpointer user_data, GDestroyNotify user_data_destroy); /** @brief Libère un résultat. */ void create_person_dialog_result_free(CreatePersonDialogResult *result); /** @brief Retourne les données empruntées du résultat. */ const PersonEntityInput *create_person_dialog_result_get_input( const CreatePersonDialogResult *result); const PersonEvidenceSelection *create_person_dialog_result_get_evidence_selection( const CreatePersonDialogResult *result); EvidenceStaging *create_person_dialog_result_steal_staging( CreatePersonDialogResult *result); const GPtrArray *create_person_dialog_result_get_ocr_runs( const CreatePersonDialogResult *result); const GPtrArray *create_person_dialog_result_get_factual_relations( const CreatePersonDialogResult *result); const GPtrArray *create_person_dialog_result_get_ocr_projections( const CreatePersonDialogResult *result); gboolean create_person_dialog_test_overlay_has_region(GtkWindow *window); guint64 create_person_dialog_test_ocr_generation(GtkWindow *window); G_END_DECLS #endif