Struct egui::containers::collapsing_header::CollapsingState
source · pub struct CollapsingState {
id: Id,
state: InnerState,
}
Expand description
This is a a building block for building collapsing regions.
It is used by CollapsingHeader
and Window
, but can also be used on its own.
See CollapsingState::show_header
for how to show a collapsing header with a custom header.
Fields§
§id: Id
§state: InnerState
Implementations§
source§impl CollapsingState
impl CollapsingState
pub fn load(ctx: &Context, id: Id) -> Option<Self>
pub fn store(&self, ctx: &Context)
pub fn remove(&self, ctx: &Context)
pub fn id(&self) -> Id
pub fn load_with_default_open(ctx: &Context, id: Id, default_open: bool) -> Self
pub fn is_open(&self) -> bool
pub fn set_open(&mut self, open: bool)
pub fn toggle(&mut self, ui: &Ui)
Will toggle when clicked, etc.
Will toggle when clicked, etc.
Will toggle when clicked, etc.
sourcepub fn show_header<HeaderRet>(
self,
ui: &mut Ui,
add_header: impl FnOnce(&mut Ui) -> HeaderRet,
) -> HeaderResponse<'_, HeaderRet>
pub fn show_header<HeaderRet>( self, ui: &mut Ui, add_header: impl FnOnce(&mut Ui) -> HeaderRet, ) -> HeaderResponse<'_, HeaderRet>
Shows header and body (if expanded).
The header will start with the default button in a horizontal layout, followed by whatever you add.
Will also store the state.
Returns the response of the collapsing button, the custom header, and the custom body.
let id = ui.make_persistent_id("my_collapsing_header");
egui::collapsing_header::CollapsingState::load_with_default_open(ui.ctx(), id, false)
.show_header(ui, |ui| {
ui.label("Header"); // you can put checkboxes or whatever here
})
.body(|ui| ui.label("Body"));
sourcepub fn show_body_indented<R>(
&mut self,
header_response: &Response,
ui: &mut Ui,
add_body: impl FnOnce(&mut Ui) -> R,
) -> Option<InnerResponse<R>>
pub fn show_body_indented<R>( &mut self, header_response: &Response, ui: &mut Ui, add_body: impl FnOnce(&mut Ui) -> R, ) -> Option<InnerResponse<R>>
Show body if we are open, with a nice animation between closed and open. Indent the body to show it belongs to the header.
Will also store the state.
sourcepub fn show_body_unindented<R>(
&mut self,
ui: &mut Ui,
add_body: impl FnOnce(&mut Ui) -> R,
) -> Option<InnerResponse<R>>
pub fn show_body_unindented<R>( &mut self, ui: &mut Ui, add_body: impl FnOnce(&mut Ui) -> R, ) -> Option<InnerResponse<R>>
Show body if we are open, with a nice animation between closed and open. Will also store the state.
Paint this CollapsingState
’s toggle button. Takes an IconPainter
as the icon.
fn circle_icon(ui: &mut egui::Ui, openness: f32, response: &egui::Response) {
let stroke = ui.style().interact(&response).fg_stroke;
let radius = egui::lerp(2.0..=3.0, openness);
ui.painter().circle_filled(response.rect.center(), radius, stroke.color);
}
let mut state = egui::collapsing_header::CollapsingState::load_with_default_open(
ui.ctx(),
ui.make_persistent_id("my_collapsing_state"),
false,
);
let header_res = ui.horizontal(|ui| {
ui.label("Header");
state.show_toggle_button(ui, circle_icon);
});
state.show_body_indented(&header_res.response, ui, |ui| ui.label("Body"));
Trait Implementations§
source§impl Clone for CollapsingState
impl Clone for CollapsingState
source§fn clone(&self) -> CollapsingState
fn clone(&self) -> CollapsingState
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more