New, edit modes

This commit is contained in:
Dane Johnson 2022-05-09 22:30:37 -05:00
parent 0291a6e941
commit 974d21d167

View File

@ -19,17 +19,30 @@ struct BoardBuilderApp {
board: Board, board: Board,
texture: Option<TextureHandle>, texture: Option<TextureHandle>,
image: Option<image::DynamicImage>, image: Option<image::DynamicImage>,
edit_mode: EditMode,
}
enum EditMode {
Nodes,
Edges,
}
impl Default for EditMode {
fn default() -> Self {
EditMode::Nodes
}
} }
impl eframe::App for BoardBuilderApp { impl eframe::App for BoardBuilderApp {
fn update(&mut self, ctx: &Context, _frame: &mut eframe::Frame) { fn update(&mut self, ctx: &Context, _frame: &mut eframe::Frame) {
TopBottomPanel::top("menubar").show(ctx, |ui| { TopBottomPanel::top("menubar").show(ctx, |ui| {
menu::bar(ui, |ui| { menu::bar(ui, |ui| {
fn choose_file() {
FileDialog::new().pick_file();
}
ui.menu_button("File", |ui| { 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 ui.button("Open...").clicked() {
if let Some(board_file) = FileDialog::new().pick_file() { if let Some(board_file) = FileDialog::new().pick_file() {
match read_board_from_file(&board_file) { match read_board_from_file(&board_file) {
@ -46,7 +59,7 @@ impl eframe::App for BoardBuilderApp {
} }
if ui.button("Save As...").clicked() { if ui.button("Save As...").clicked() {
if let Some(board_file) = FileDialog::new().save_file() { 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() { 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"]) .add_filter("Image", &["png", "jpg", "jpeg", "gif", "webp", "bmp", "tiff"])
.pick_file(); .pick_file();
if let Some(image_file) = image_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.menu_button("Edit", |ui| {
ui.button("Edit Nodes"); if ui.button("Edit Nodes").clicked() {
ui.button("Edit Edges"); self.edit_mode = EditMode::Nodes;
ui.button("Edit Labels..."); }
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); style.text_styles.insert(style::TextStyle::Button, button);
cc.egui_ctx.set_style(style); cc.egui_ctx.set_style(style);
BoardBuilderApp::default() BoardBuilderApp::default()
} }
fn load_image_file(&mut self, ctx: &Context, image_file: &Path) -> Result<(), image::ImageError> { fn load_image_file(&mut self, ctx: &Context, image_file: &Path) -> Result<(), image::ImageError> {