process_viewer 0.5.5

A process viewer GUI
use gtk::glib::IsA;
use gtk::prelude::*;
use gtk::{Box, Label, Notebook, Orientation, Widget};

pub struct NoteBook {
    pub notebook: Notebook,
    pub tabs: Vec<Box>,
}

impl NoteBook {
    pub fn new() -> NoteBook {
        NoteBook {
            notebook: Notebook::new(),
            tabs: Vec::new(),
        }
    }

    pub fn create_tab<T: IsA<Widget>>(&mut self, title: &str, widget: &T) -> Option<u32> {
        let label = Label::new(Some(title));
        let tab = Box::new(Orientation::Horizontal, 0);

        tab.set_hexpand(true);
        tab.set_vexpand(true);
        tab.append(&label);

        let index = self.notebook.append_page(widget, Some(&tab));
        self.tabs.push(tab);
        Some(index)
    }
}