dear_imgui_rs/widget/tree/
entry.rs1use crate::Id;
2use crate::sys;
3use crate::ui::Ui;
4
5use super::{TreeNode, TreeNodeFlags, TreeNodeId, TreeNodeToken};
6
7impl Ui {
9 pub fn tree_node<I, T>(&self, id: I) -> Option<TreeNodeToken<'_>>
16 where
17 I: Into<TreeNodeId<T>>,
18 T: AsRef<str>,
19 {
20 self.tree_node_config(id).push()
21 }
22
23 pub fn tree_node_config<I, T>(&self, id: I) -> TreeNode<'_, T>
29 where
30 I: Into<TreeNodeId<T>>,
31 T: AsRef<str>,
32 {
33 TreeNode::new(id.into(), self)
34 }
35
36 #[doc(alias = "CollapsingHeader")]
38 pub fn collapsing_header(&self, label: impl AsRef<str>, flags: TreeNodeFlags) -> bool {
39 let label_ptr = self.scratch_txt(label);
40 unsafe { sys::igCollapsingHeader_TreeNodeFlags(label_ptr, flags.bits()) }
41 }
42
43 #[doc(alias = "CollapsingHeader")]
49 pub fn collapsing_header_with_visible(
50 &self,
51 label: impl AsRef<str>,
52 visible: &mut bool,
53 flags: TreeNodeFlags,
54 ) -> bool {
55 let label_ptr = self.scratch_txt(label);
56 unsafe { sys::igCollapsingHeader_BoolPtr(label_ptr, visible as *mut bool, flags.bits()) }
57 }
58
59 #[doc(alias = "GetTreeNodeToLabelSpacing")]
61 pub fn tree_node_to_label_spacing(&self) -> f32 {
62 unsafe { sys::igGetTreeNodeToLabelSpacing() }
63 }
64
65 #[doc(alias = "TreeNodeGetOpen")]
67 pub fn tree_node_get_open(&self, storage_id: Id) -> bool {
68 unsafe { sys::igTreeNodeGetOpen(storage_id.raw()) }
69 }
70}