128 lines
3.1 KiB
Markdown
128 lines
3.1 KiB
Markdown
# Ticket #004
|
|
|
|
## Titre
|
|
|
|
Créer la fenêtre principale (`MainWindow`).
|
|
|
|
---
|
|
|
|
## Objectif
|
|
|
|
Créer la fenêtre principale de Labfy Investigation.
|
|
|
|
Cette fenêtre deviendra le point central de l'interface utilisateur.
|
|
|
|
À ce stade, elle ne contient qu'une structure vide destinée à accueillir les futurs composants.
|
|
|
|
---
|
|
|
|
## Responsabilités
|
|
|
|
Le module `MainWindow` doit :
|
|
|
|
- créer la fenêtre principale ;
|
|
- définir son titre ;
|
|
- définir sa taille par défaut ;
|
|
- afficher une zone centrale vide ;
|
|
- afficher une barre d'état.
|
|
|
|
---
|
|
|
|
## Hors périmètre
|
|
|
|
Ce ticket ne doit pas :
|
|
|
|
- afficher l'arborescence des fichiers ;
|
|
- ouvrir une enquête ;
|
|
- afficher les preuves ;
|
|
- communiquer avec SQLite ;
|
|
- gérer les menus.
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
Le module appartient à la couche **Views**.
|
|
|
|
Il est responsable uniquement de l'interface graphique.
|
|
|
|
Aucune logique métier ne doit être présente dans ce module.
|
|
|
|
---
|
|
|
|
## Dépendances
|
|
|
|
- GTK4
|
|
|
|
Aucune dépendance vers SQLite.
|
|
|
|
---
|
|
|
|
## Fichiers concernés
|
|
|
|
```text
|
|
include/views/main_window.h
|
|
src/views/main_window.c
|
|
```
|
|
|
|
---
|
|
|
|
## Interface attendue
|
|
|
|
```c
|
|
MainWindow *main_window_new(GtkApplication *application);
|
|
|
|
GtkWindow *main_window_get_window(
|
|
const MainWindow *main_window
|
|
);
|
|
|
|
void main_window_present(MainWindow *main_window);
|
|
|
|
void main_window_free(MainWindow *main_window);
|
|
```
|
|
|
|
---
|
|
|
|
## Interface graphique attendue
|
|
|
|
```text
|
|
┌───────────────────────────────────────────────────────────────┐
|
|
│ Labfy Investigation │
|
|
├───────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ │
|
|
│ Zone de travail │
|
|
│ │
|
|
│ │
|
|
├───────────────────────────────────────────────────────────────┤
|
|
│ Aucune enquête ouverte │
|
|
└───────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## Critères d'acceptation
|
|
|
|
- [ ] Le projet compile sans warning.
|
|
- [ ] Une fenêtre s'ouvre correctement.
|
|
- [ ] La fenêtre est créée par le module `MainWindow`.
|
|
- [ ] `Application` n'appelle plus directement `gtk_application_window_new()`.
|
|
- [ ] Aucun état global.
|
|
- [ ] Documentation Doxygen.
|
|
- [ ] Gestion mémoire correcte.
|
|
|
|
---
|
|
|
|
## Tests
|
|
|
|
- Lancement de l'application.
|
|
- Fermeture de la fenêtre.
|
|
- Vérification de l'absence de fuite mémoire.
|
|
|
|
---
|
|
|
|
## Commit attendu
|
|
|
|
```text
|
|
feat(view): create main window
|
|
```
|