Skip to content

Commit 5f19fa0

Browse files
authored
Merge pull request #24 from dmackdev/customisable-toggle-icon
Customisable toggle buttons
2 parents b6fd96e + 13fdac0 commit 5f19fa0

File tree

6 files changed

+282
-183
lines changed

6 files changed

+282
-183
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ let response = JsonTree::new("customised-tree", &value)
2828
})
2929
.default_expand(DefaultExpand::All)
3030
.abbreviate_root(true) // Show {...} when the root object is collapsed.
31+
.toggle_buttons_state(ToggleButtonsState::VisibleDisabled)
3132
.on_render(|ui, ctx| {
3233
// Customise rendering of the JsonTree, and/or handle interactions.
3334
match ctx {

examples/demo.rs

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use egui_json_tree::{
1212
DefaultRender, RenderBaseValueContext, RenderContext, RenderExpandableDelimiterContext,
1313
RenderPropertyContext,
1414
},
15-
DefaultExpand, JsonTree,
15+
DefaultExpand, JsonTree, ToggleButtonsState,
1616
};
1717
use serde_json::{json, Value};
1818

@@ -625,6 +625,53 @@ impl Show for JsonEditorExample {
625625
}
626626
}
627627

628+
struct ToggleButtonsCustomisationDemo {
629+
value: Value,
630+
toggle_buttons_state: ToggleButtonsState,
631+
}
632+
633+
impl ToggleButtonsCustomisationDemo {
634+
fn new(value: Value) -> Self {
635+
Self {
636+
value,
637+
toggle_buttons_state: Default::default(),
638+
}
639+
}
640+
}
641+
642+
impl Show for ToggleButtonsCustomisationDemo {
643+
fn title(&self) -> &'static str {
644+
"Toggle Buttons Customisation"
645+
}
646+
647+
fn show(&mut self, ui: &mut Ui) {
648+
ui.vertical(|ui| {
649+
ui.horizontal(|ui| {
650+
ui.selectable_value(
651+
&mut self.toggle_buttons_state,
652+
ToggleButtonsState::VisibleEnabled,
653+
"Visible and enabled",
654+
);
655+
ui.selectable_value(
656+
&mut self.toggle_buttons_state,
657+
ToggleButtonsState::VisibleDisabled,
658+
"Visible and disabled",
659+
);
660+
ui.selectable_value(
661+
&mut self.toggle_buttons_state,
662+
ToggleButtonsState::Hidden,
663+
"Hidden",
664+
);
665+
});
666+
667+
JsonTree::new("show", &self.value)
668+
.default_expand(DefaultExpand::All)
669+
.toggle_buttons_state(self.toggle_buttons_state)
670+
.show(ui);
671+
});
672+
}
673+
}
674+
628675
struct DemoApp {
629676
examples: Vec<Box<dyn Show>>,
630677
open_example_idx: Option<usize>,
@@ -655,7 +702,8 @@ impl Default for DemoApp {
655702
Box::new(CustomExample::new("Custom Input")),
656703
Box::new(SearchExample::new(complex_object.clone())),
657704
Box::new(CopyToClipboardExample::new(complex_object.clone())),
658-
Box::new(JsonEditorExample::new(complex_object)),
705+
Box::new(JsonEditorExample::new(complex_object.clone())),
706+
Box::new(ToggleButtonsCustomisationDemo::new(complex_object)),
659707
],
660708
open_example_idx: None,
661709
}

src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
//! # DefaultRender, RenderBaseValueContext, RenderContext, RenderExpandableDelimiterContext,
99
//! # RenderPropertyContext,
1010
//! # },
11-
//! # DefaultExpand, JsonTree, JsonTreeStyle
11+
//! # DefaultExpand, JsonTree, JsonTreeStyle, ToggleButtonsState
1212
//! # };
1313
//! # egui::__run_test_ui(|ui| {
1414
//! let value = serde_json::json!({ "foo": "bar", "fizz": [1, 2, 3]});
@@ -24,6 +24,7 @@
2424
//! })
2525
//! .default_expand(DefaultExpand::All)
2626
//! .abbreviate_root(true) // Show {...} when the root object is collapsed.
27+
//! .toggle_buttons_state(ToggleButtonsState::VisibleDisabled)
2728
//! .on_render(|ui, ctx| {
2829
//! // Customise rendering of the JsonTree, and/or handle interactions.
2930
//! match ctx {
@@ -76,6 +77,7 @@ mod node;
7677
mod response;
7778
mod search;
7879
mod style;
80+
mod toggle_buttons_state;
7981
mod tree;
8082

8183
pub mod delimiters;
@@ -86,4 +88,5 @@ pub mod value;
8688
pub use default_expand::DefaultExpand;
8789
pub use response::JsonTreeResponse;
8890
pub use style::JsonTreeStyle;
91+
pub use toggle_buttons_state::ToggleButtonsState;
8992
pub use tree::JsonTree;

0 commit comments

Comments
 (0)