diff --git a/Cargo.toml b/Cargo.toml index 5215147d1ff7886fb09a36b3c2e1147173da72d0..135ac2a6c3b9f81933fecc5a0eb8c9ddb7f2c00d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,4 +6,6 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -termion = "2.0.1" \ No newline at end of file +termion = "2.0.1" +crossterm = "0.25.0" +cursive = "0.15.0" \ No newline at end of file diff --git a/src/gui.rs b/src/gui.rs new file mode 100644 index 0000000000000000000000000000000000000000..7878c2bf670b00add1e575881c007684500c049f --- /dev/null +++ b/src/gui.rs @@ -0,0 +1,70 @@ +use cursive::Cursive; +use cursive::CursiveExt; +use cursive::views::{TextView, Dialog, LinearLayout, Button}; +use crate::training::Training; + +pub struct App { + cursive: Cursive, + training_list: Vec<Training>, +} + +impl App { + pub fn new() -> Self { + let mut cursive = Cursive::default(); + let training_list = Vec::new(); + + // Créez une vue TextView pour afficher la liste des entraînements + let training_view = TextView::new("Liste des entraînements"); + + // Créez un bouton pour lire tous les entraînements + let btn_list = Button::new("Voir", |s| { + // Vous pouvez ajouter votre logique d'ajout ici + s.add_layer(Dialog::info("Fonctionnalité non implémentée")); + }); + + // Créez un bouton pour ajouter un nouveau entraînement + let btn_add = Button::new("Ajouter", |s| { + // Vous pouvez ajouter votre logique d'ajout ici + s.add_layer(Dialog::info("Fonctionnalité non implémentée")); + }); + + // Créez un bouton pour modifier un entraînement + let btn_update = Button::new("Modifier", |s| { + // Vous pouvez ajouter votre logique d'ajout ici + s.add_layer(Dialog::info("Fonctionnalité non implémentée")); + }); + + // Créez un bouton pour supprimer un entraînement + let btn_delete = Button::new("Supprimer", |s| { + // Vous pouvez ajouter votre logique d'ajout ici + s.add_layer(Dialog::info("Fonctionnalité non implémentée")); + }); + + // Créez un bouton pour supprimer un entraînement + let btn_exit = Button::new("Quitter", |s| { + // Vous pouvez ajouter votre logique d'ajout ici + s.quit(); + }); + + // Créez un LinearLayout pour organiser la vue TextView et le bouton + let layout = LinearLayout::vertical() + .child(training_view) + .child(btn_list) + .child(btn_add) + .child(btn_update) + .child(btn_delete) + .child(btn_exit); + + + cursive.add_layer(layout); + + cursive.add_global_callback('q', |s| s.quit()); + + + App { cursive, training_list } + } + + pub fn run(&mut self) { + self.cursive.run(); + } +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index dda1496733c2bb9d8b5d6f21e2737d1e4c29cc9a..dc5bf99be44ef7b28dbf9782d68fddc0ad735bd2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,9 @@ mod training; mod participant; -mod terminal; +//mod terminal; +mod gui; -use terminal::App; +use gui::App; fn main() { let mut app = App::new();