| 141 | } |
| 142 | |
| 143 | pub fn choose_folder(&self) -> Receiver<Option<PathBuf>> { |
| 144 | let (tx, rx) = bounded::<Option<PathBuf>>(1); |
| 145 | let _ = self.0.dispatch(move |_| { |
| 146 | let folder = known_folder(&knownfolders::FOLDERID_ProgramFiles); |
| 147 | let folder = folder.and_then(|path| path.to_str().map(str::to_string)).unwrap_or_default(); |
| 148 | let params = wfd::DialogParams { |
| 149 | options: wfd::FOS_PICKFOLDERS, |
| 150 | title: "Select a directory", |
| 151 | default_folder: &folder, |
| 152 | ..Default::default() |
| 153 | }; |
| 154 | let _ = tx.send( |
| 155 | wfd::open_dialog(params).map(|res| res.selected_file_path).ok() |
| 156 | ); |
| 157 | Ok(()) |
| 158 | }); |
| 159 | |
| 160 | rx |
| 161 | } |
| 162 | } |
| 163 | |
| 164 | pub fn spawn_gui() { |