improved tree widget and separatated "FileTree" implementation out into separate src file
This commit is contained in:
@@ -22,7 +22,7 @@ use tiles::PanelFactory;
|
||||
use tiles::documentation::Documentation;
|
||||
use tiles::editor::Editor;
|
||||
use tiles::io_devices::framebuffer::FrameBufferUi;
|
||||
use zxq5_egui::context_tree::{ContextTree, NewFileTree};
|
||||
use zxq5_egui::tree::{MenuTree, TreeEvent, file::FileTree};
|
||||
|
||||
pub mod appearance;
|
||||
mod controller;
|
||||
@@ -44,7 +44,7 @@ pub struct DamnSimpleUI {
|
||||
|
||||
show_process_manager: bool,
|
||||
process_manager: ProcessManager,
|
||||
file_tree: ContextTree<Action, NewFileTree>,
|
||||
file_tree: MenuTree<Action, FileTree>,
|
||||
}
|
||||
|
||||
impl eframe::App for DamnSimpleUI {
|
||||
@@ -74,13 +74,17 @@ impl eframe::App for DamnSimpleUI {
|
||||
});
|
||||
|
||||
Panel::left("left_panel").resizable(true).show(ui, |ui| {
|
||||
let inner_res = self.file_tree.ui(ui);
|
||||
let response = self.file_tree.ui(ui);
|
||||
let Some(event) = response.inner else {
|
||||
return;
|
||||
};
|
||||
|
||||
if let Some(event) = inner_res.inner {
|
||||
// match event {
|
||||
// ContextTreeEvent::Clicked(node) => self.perform_action(Action::OpenFile(node)),
|
||||
// ContextTreeEvent::ContextAction(action, node) => self.perform_action(action),
|
||||
// }
|
||||
match event {
|
||||
TreeEvent::ContextAction(action, _tree) => self.perform_action(action),
|
||||
TreeEvent::Clicked(tree) => {
|
||||
let filename = tree.filename().to_owned();
|
||||
self.perform_action(Action::OpenFile(filename));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -147,16 +151,15 @@ impl DamnSimpleUI {
|
||||
show_process_manager: true,
|
||||
process_manager: ProcessManager::new(),
|
||||
|
||||
file_tree: ContextTree::new(
|
||||
NewFileTree::build(&std::env::current_dir().unwrap()),
|
||||
|ui, node| match node {
|
||||
NewFileTree::Leaf { filename } => ui
|
||||
file_tree: MenuTree::new()
|
||||
.root(Some(FileTree::build(&std::env::current_dir().unwrap())))
|
||||
.ctx(|ui, node| match node {
|
||||
FileTree::File { path: filename } => ui
|
||||
.button("Open Binary")
|
||||
.clicked()
|
||||
.then_some(Action::LoadBinary(DataSource::File(filename.clone()))),
|
||||
NewFileTree::Branch { .. } => None,
|
||||
},
|
||||
),
|
||||
FileTree::Directory { .. } => None,
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user