From 5f4ade47bdf7f85f31142c0db9d505d2e5ad58bc Mon Sep 17 00:00:00 2001 From: Jaby Date: Thu, 20 Mar 2025 21:26:32 +0100 Subject: [PATCH] Support selecting project to open --- .../tim_tool/src/gui/file_tab/callbacks.rs | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs b/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs index 38e1f532..5c44bbd0 100644 --- a/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs +++ b/src/Tools/tim_tool/src/gui/file_tab/callbacks.rs @@ -128,17 +128,23 @@ pub(super) fn on_save_project_clicked(tim_manager: MutexTIMManager) -> impl FnMu } pub(super) fn on_browse_open_project_clicked() -> impl FnMut(&mut FileTab, &MainWindow) -> Result<(), Error> + 'static { - move |_file_tab, _main_window| { - Err(Error::not_implemented("on_browse_open_project_clicked")) + move |_file_tab, main_window| { + let file_path = create_project_file_dialog() + .set_title("Save location for TIM project file") + .pick_file(); + + if let Some(file_path) = file_path { + if let Some(file_path) = file_path.to_str() { + main_window.set_project_widget_open_project_path(SharedString::from(file_path)); + } + } + Ok(()) } } pub(super) fn on_browse_save_project_clicked() -> impl FnMut(&mut FileTab, &MainWindow) -> Result<(), Error> + 'static { move |_file_tab, main_window| { - let file_path = FileDialog::new() - .add_filter("TIM project file (.tim_project)", &["tim_project"]) - .add_filter("JSON file (.json; .jsn)", &["json", "jsn"]) - .add_filter("All", &["*"]) + let file_path = create_project_file_dialog() .set_title("Save location for TIM project file") .save_file(); @@ -149,4 +155,11 @@ pub(super) fn on_browse_save_project_clicked() -> impl FnMut(&mut FileTab, &Main } Ok(()) } +} + +fn create_project_file_dialog() -> FileDialog { + FileDialog::new() + .add_filter("TIM project file (.tim_project)", &["tim_project"]) + .add_filter("JSON file (.json; .jsn)", &["json", "jsn"]) + .add_filter("All", &["*"]) } \ No newline at end of file