vgtk 0.3.0

A declarative UI framework for GTK
Documentation
use std::borrow::Borrow;

use glib::{Object, Type};

use super::{VHandler, VNode, VProperty};
use crate::Component;

pub struct VObject<Model: Component> {
    pub object_type: Type,
    pub constructor: Option<Box<dyn Fn() -> Object>>,
    pub properties: Vec<VProperty>,
    pub child_props: Vec<VProperty>,
    pub handlers: Vec<VHandler<Model>>,
    pub children: Vec<VNode<Model>>,
}

impl<Model: Component> VObject<Model> {
    pub fn get_prop<S: Borrow<str>>(&self, name: S) -> Option<&VProperty> {
        let name = name.borrow();
        for prop in &self.properties {
            if prop.name == name {
                return Some(prop);
            }
        }
        None
    }
}