grx/gtk_components/
view_switcher_bar.rs1use std::rc::Rc;
6
7use glib::prelude::Cast;
8use grx_macros::gtk_component;
9use gtk::glib;
10
11use crate::{new_gc, props, view_stack::ViewStack, ComponentExt};
12
13use super::gtk_props::apply;
14
15#[props]
16#[derive(Default, Debug)]
17pub struct Props {
18 pub stack: Option<Rc<ViewStack>>,
19}
20
21pub fn view_switcher_bar(mut props: Props) -> Rc<ViewSwitcherBar> {
22 let widget = libadwaita::ViewSwitcherBar::builder().build();
23 widget.set_reveal(true);
24 if let Some(stack) = &props.stack {
25 let stack: Rc<gtk::Widget> = stack.clone().inner().downcast().unwrap();
26 widget.set_stack(stack.downcast_ref());
27 }
28
29 let widget: gtk::Widget = widget.upcast();
30 let comp = new_gc!(ViewSwitcherBar { widget, props });
31 apply(comp.clone());
32 comp
33}
34
35#[gtk_component(gtk::Widget)]
36#[derive(Debug)]
37pub struct ViewSwitcherBar {}