qml 0.0.9

Safe QML bindings for Rust
#![allow(non_snake_case)]
#[macro_use]
extern crate qml;

use qml::*;

pub struct Test;

impl Test {
    pub fn launchGoose(&self, i: i32, i2: String) -> Option<&QVariant> {
        println!("GOOSE HI from {} and {}", i2, i);
        None
    }
}

Q_OBJECT!(
pub Test as QTest{
    signals:
        fn testname (a: i32, b: i32, f: f32, d: f64, bo: bool, list: QVariantList);
    slots:
        fn launchGoose(i: i32, launchText: String);
    properties:
        name: String; read: get_name, write: set_name, notify: name_changed;
        i: i32; read: get_i, write: set_i, notify: i_changed;
        f: f32; read: get_f, write: set_f, notify: f_changed;
        d: f64; read: get_d, write: set_d, notify: d_changed;
        b: bool; read: get_b, write: set_b, notify: b_changed;
        list: QVariantList; read: get_list, write: set_list, notify: list_changed;
});

fn main() {
    let list = qvarlist![["John", [2, 2]], ["Ivan", [10, 0]], ["Mary", [0, 1]]];
    let mut qtest = QTest::new(Test, "name".into(), 5, 5_f32, 5_f64, true, list.into());
    let list = qvarlist![[26, [2, 2]]];
    qtest.testname(54, 55, 5_f32, 6_f64, true, list.into());
    qtest.qslot_call("launchGoose",
                     vec![42.into(), "QML Rust".to_string().into()]);
    println!("{:?}", qtest.qmeta());
}