[][src]Struct neutrino::widgets::tabs::Tabs

pub struct Tabs { /* fields omitted */ }

A list of tabs

Fields

name: String
state: TabsState    
listener: Option<Box<dyn TabsListener>>

Default values

name: name.to_string()
state:
    title: vec![]
    children: vec![]
    selected: 0
    direction: Direction::Horizontal
    stretched: false
    style: "".to_string()
listener: None

Style

div.tabs[.direction-vertical]
    div.tab-titles
        div.tab-title[.selected]
    div.tab

Example

use std::cell::RefCell;
use std::rc::Rc;

use neutrino::widgets::tabs::{Tabs, TabsListener, TabsState};
use neutrino::widgets::label::Label;
use neutrino::utils::theme::Theme;
use neutrino::{App, Window};


struct Dessert {
    index: u32,
    value: String,
}

impl Dessert {
    fn new() -> Self {
        Self { index: 0, value: "Cake".to_string() }
    }

    fn index(&self) -> u32 {
        self.index
    }

    fn value(&self) -> &str {
        &self.value
    }

    fn set(&mut self, index: u32, value: &str) {
        self.index = index;
        self.value = value.to_string();
    }
}


struct MyTabsListener {
    dessert: Rc<RefCell<Dessert>>,
}

impl MyTabsListener {
   pub fn new(dessert: Rc<RefCell<Dessert>>) -> Self {
       Self { dessert }
   }
}

impl TabsListener for MyTabsListener {
    fn on_change(&self, state: &TabsState) {
        let index = state.selected();
        self.dessert.borrow_mut().set(
            index,
            &state.titles()[index as usize]
        );
    }

    fn on_update(&self, state: &mut TabsState) {
        state.set_selected(self.dessert.borrow().index());
    }
}


fn main() {
    let dessert = Rc::new(RefCell::new(Dessert::new()));

    let my_listener = MyTabsListener::new(Rc::clone(&dessert));

    let mut my_label = Label::new("my_label");
    my_label.set_text("World!");

    let mut my_tabs = Tabs::new("my_tabs");
    my_tabs.add("Hello", Box::new(my_label));
    my_tabs.set_listener(Box::new(my_listener));
}

Methods

impl Tabs[src]

pub fn new(name: &str) -> Self[src]

Create a Tabs

pub fn set_selected(&mut self, selected: u32)[src]

Set the selected index

pub fn set_direction(&mut self, direction: Direction)[src]

Set the direction

Example

Direction::Horizontal

+-------+-------+
| Tab 1 | Tab 2 |   
+-------+-------+
|    Content    |
|               |
+---------------+

Direction::Vertical

+-------+-------------+
| Tab 1 |             |
+-------+   Content   |
| Tab 2 |             |
+-------+-------------+

pub fn set_stretched(&mut self)[src]

Set the stretched flag to true

pub fn set_listener(&mut self, listener: Box<dyn TabsListener>)[src]

Set the listener

pub fn set_style(&mut self, style: &str)[src]

Set the style

pub fn add(&mut self, name: &str, child: Box<dyn Widget>)[src]

Add a tab

Trait Implementations

impl Widget for Tabs[src]

Auto Trait Implementations

impl !Send for Tabs

impl Unpin for Tabs

impl !Sync for Tabs

impl !UnwindSafe for Tabs

impl !RefUnwindSafe for Tabs

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,