diff --git a/board-builder-impl-egui/src/main.rs b/board-builder-impl-egui/src/main.rs index 7225d64..ea13c4b 100644 --- a/board-builder-impl-egui/src/main.rs +++ b/board-builder-impl-egui/src/main.rs @@ -19,17 +19,30 @@ struct BoardBuilderApp { board: Board, texture: Option, image: Option, + edit_mode: EditMode, +} + +enum EditMode { + Nodes, + Edges, +} +impl Default for EditMode { + fn default() -> Self { + EditMode::Nodes + } } impl eframe::App for BoardBuilderApp { fn update(&mut self, ctx: &Context, _frame: &mut eframe::Frame) { TopBottomPanel::top("menubar").show(ctx, |ui| { menu::bar(ui, |ui| { - fn choose_file() { - FileDialog::new().pick_file(); - } ui.menu_button("File", |ui| { - ui.button("New"); + if ui.button("New").clicked() { + self.board = Board::default(); + self.texture = None; + self.image = None; + self.edit_mode = EditMode::Nodes; + } if ui.button("Open...").clicked() { if let Some(board_file) = FileDialog::new().pick_file() { match read_board_from_file(&board_file) { @@ -46,7 +59,7 @@ impl eframe::App for BoardBuilderApp { } if ui.button("Save As...").clicked() { if let Some(board_file) = FileDialog::new().save_file() { - write_board_to_file(&self.board, self.image.as_ref(), &board_file); + write_board_to_file(&self.board, self.image.as_ref(), &board_file).expect("Something went wrong saving!"); } } if ui.button("Open Image...").clicked() { @@ -54,14 +67,20 @@ impl eframe::App for BoardBuilderApp { .add_filter("Image", &["png", "jpg", "jpeg", "gif", "webp", "bmp", "tiff"]) .pick_file(); if let Some(image_file) = image_file { - self.load_image_file(ctx, &image_file); + self.load_image_file(ctx, &image_file).unwrap(); } } }); ui.menu_button("Edit", |ui| { - ui.button("Edit Nodes"); - ui.button("Edit Edges"); - ui.button("Edit Labels..."); + if ui.button("Edit Nodes").clicked() { + self.edit_mode = EditMode::Nodes; + } + if ui.button("Edit Edges").clicked() { + self.edit_mode = EditMode::Edges; + } + if ui.button("Edit Labels...").clicked() { + todo!(); + } }) }); }); @@ -86,7 +105,6 @@ impl BoardBuilderApp { style.text_styles.insert(style::TextStyle::Button, button); cc.egui_ctx.set_style(style); - BoardBuilderApp::default() } fn load_image_file(&mut self, ctx: &Context, image_file: &Path) -> Result<(), image::ImageError> {