fmt
This commit is contained in:
parent
f5908ef0d5
commit
ca34a58760
18
src/lib.rs
18
src/lib.rs
|
@ -8,13 +8,13 @@ pub mod parser;
|
||||||
pub mod widget_builders;
|
pub mod widget_builders;
|
||||||
use crate::parser::QML;
|
use crate::parser::QML;
|
||||||
use crate::parser::{parse_qml, Value};
|
use crate::parser::{parse_qml, Value};
|
||||||
use crate::widget_builders::{QmlWidgetBuilder, QmlContext};
|
use crate::widget_builders::{QmlContext, QmlWidgetBuilder};
|
||||||
use evmap::{ReadHandle, WriteHandle};
|
use evmap::{ReadHandle, WriteHandle};
|
||||||
|
|
||||||
|
use rand::Rng;
|
||||||
use std::borrow::BorrowMut;
|
use std::borrow::BorrowMut;
|
||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::sync::mpsc;
|
use std::sync::mpsc;
|
||||||
use rand::Rng;
|
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate pest_derive;
|
extern crate pest_derive;
|
||||||
|
@ -40,8 +40,10 @@ impl Widget for MainViewState {
|
||||||
|
|
||||||
let (r, w) = evmap::new();
|
let (r, w) = evmap::new();
|
||||||
|
|
||||||
|
let mut qmlctx = QmlContext {
|
||||||
let mut qmlctx = QmlContext{ indexes: vec![], code: Default::default() };
|
indexes: vec![],
|
||||||
|
code: Default::default(),
|
||||||
|
};
|
||||||
let this = QmlWidgetBuilder::new().build(widget, 0, 0, top_level[0].0.clone(), top_level[0].1.clone(), ctx, qmlctx.borrow_mut()); //render_ctx(widget, ctx, &top_level, 0, 0, ids.borrow_mut()).unwrap();
|
let this = QmlWidgetBuilder::new().build(widget, 0, 0, top_level[0].0.clone(), top_level[0].1.clone(), ctx, qmlctx.borrow_mut()); //render_ctx(widget, ctx, &top_level, 0, 0, ids.borrow_mut()).unwrap();
|
||||||
ctx.register_state(
|
ctx.register_state(
|
||||||
this,
|
this,
|
||||||
|
@ -124,19 +126,16 @@ impl State for MVState {
|
||||||
fn update(&mut self, _registry: &mut Registry, ctx: &mut Context) {
|
fn update(&mut self, _registry: &mut Registry, ctx: &mut Context) {
|
||||||
match self.value_map.1.borrow_mut() {
|
match self.value_map.1.borrow_mut() {
|
||||||
Some(w) => {
|
Some(w) => {
|
||||||
|
|
||||||
self.engine.register_fn("rand_opacity", move || -> (f32) {
|
self.engine.register_fn("rand_opacity", move || -> (f32) {
|
||||||
let mut rng = rand::thread_rng();
|
let mut rng = rand::thread_rng();
|
||||||
rng.gen_range(0.0,1.0) as f32
|
rng.gen_range(0.0, 1.0) as f32
|
||||||
});
|
});
|
||||||
|
|
||||||
for ((entity, property), code) in self.ids.code.iter() {
|
for ((entity, property), code) in self.ids.code.iter() {
|
||||||
|
|
||||||
let result = self.engine.eval::<(f32)>(code.as_str());
|
let result = self.engine.eval::<(f32)>(code.as_str());
|
||||||
let point = result.unwrap();
|
let point = result.unwrap();
|
||||||
println!("{}.{} = {} {:?}", entity, property, code, point);
|
println!("{}.{} = {} {:?}", entity, property, code, point);
|
||||||
ctx.child(entity.as_str()).set::<f32>(property, point);
|
ctx.child(entity.as_str()).set::<f32>(property, point);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for id in self.ids.indexes.iter() {
|
for id in self.ids.indexes.iter() {
|
||||||
|
@ -148,7 +147,6 @@ impl State for MVState {
|
||||||
}
|
}
|
||||||
w.update(id.clone() + ".text", res.as_string());
|
w.update(id.clone() + ".text", res.as_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
w.refresh();
|
w.refresh();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::parser::Value::{QmlIdent, QmlString};
|
use crate::parser::Value::{QmlIdent, QmlString};
|
||||||
use crate::parser::{Value, QML};
|
use crate::parser::{Value, QML};
|
||||||
use crate::state;
|
use crate::state;
|
||||||
use crate::widget_builders::{WidgetBuilder, QmlContext};
|
use crate::widget_builders::{QmlContext, WidgetBuilder};
|
||||||
use orbtk::prelude::HashMap;
|
use orbtk::prelude::HashMap;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::parser::{Value, QML};
|
use crate::parser::{Value, QML};
|
||||||
use crate::widget_builders::{parse_number, QmlWidgetBuilder, WidgetBuilder, QmlContext};
|
use crate::widget_builders::{parse_number, QmlContext, QmlWidgetBuilder, WidgetBuilder};
|
||||||
use orbtk::prelude::HashMap;
|
use orbtk::prelude::HashMap;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::parser::Value::{QmlIdent, QmlString};
|
use crate::parser::Value::{QmlIdent, QmlString};
|
||||||
use crate::parser::{Value, QML};
|
use crate::parser::{Value, QML};
|
||||||
use crate::state;
|
use crate::state;
|
||||||
use crate::widget_builders::{WidgetBuilder, QmlContext};
|
use crate::widget_builders::{QmlContext, WidgetBuilder};
|
||||||
use orbtk::prelude::HashMap;
|
use orbtk::prelude::HashMap;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
@ -21,7 +21,7 @@ impl WidgetBuilder for ImageBuilder {
|
||||||
qmlctx.indexes.push(text.clone());
|
qmlctx.indexes.push(text.clone());
|
||||||
text.clone()
|
text.clone()
|
||||||
}
|
}
|
||||||
_ => String::new()
|
_ => String::new(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let src = match properties.get("source") {
|
let src = match properties.get("source") {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::parser::Value::QmlString;
|
use crate::parser::Value::QmlString;
|
||||||
use crate::parser::{parse_qml, Value, QML};
|
use crate::parser::{parse_qml, Value, QML};
|
||||||
use crate::widget_builders::{parse_number, QmlWidgetBuilder, WidgetBuilder, QmlContext};
|
use crate::widget_builders::{parse_number, QmlContext, QmlWidgetBuilder, WidgetBuilder};
|
||||||
use orbtk::prelude::HashMap;
|
use orbtk::prelude::HashMap;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
|
|
@ -8,19 +8,19 @@ use crate::widget_builders::textfield::TextBuilder;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
|
||||||
|
use crate::widget_builders::image::ImageBuilder;
|
||||||
use crate::widget_builders::import::ImportBuilder;
|
use crate::widget_builders::import::ImportBuilder;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use crate::widget_builders::image::ImageBuilder;
|
|
||||||
|
|
||||||
pub mod button;
|
pub mod button;
|
||||||
pub mod grid;
|
pub mod grid;
|
||||||
|
pub mod image;
|
||||||
pub mod import;
|
pub mod import;
|
||||||
pub mod rectangle;
|
pub mod rectangle;
|
||||||
pub mod textedit;
|
pub mod textedit;
|
||||||
pub mod textfield;
|
pub mod textfield;
|
||||||
pub mod image;
|
|
||||||
|
|
||||||
pub fn parse_color_property(properties: &HashMap<String,Value>, prop: &str) -> Color {
|
pub fn parse_color_property(properties: &HashMap<String, Value>, prop: &str) -> Color {
|
||||||
match properties.get(prop) {
|
match properties.get(prop) {
|
||||||
Some(QmlString(col)) => match col.as_str() {
|
Some(QmlString(col)) => match col.as_str() {
|
||||||
"red" => Color::rgb(0xff, 00, 00),
|
"red" => Color::rgb(0xff, 00, 00),
|
||||||
|
@ -39,9 +39,9 @@ fn parse_number(val: Option<&Value>) -> f64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct QmlContext{
|
pub struct QmlContext {
|
||||||
pub(crate) indexes: Vec<String>,
|
pub(crate) indexes: Vec<String>,
|
||||||
pub(crate) code: HashMap<(String, String),String>
|
pub(crate) code: HashMap<(String, String), String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait WidgetBuilder {
|
pub trait WidgetBuilder {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::parser::Value::QmlString;
|
use crate::parser::Value::QmlString;
|
||||||
use crate::parser::{Value, QML};
|
use crate::parser::{Value, QML};
|
||||||
use crate::widget_builders::{parse_number, QmlWidgetBuilder, WidgetBuilder, QmlContext, parse_color_property};
|
use crate::widget_builders::{parse_color_property, parse_number, QmlContext, QmlWidgetBuilder, WidgetBuilder};
|
||||||
use orbtk::prelude::HashMap;
|
use orbtk::prelude::HashMap;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
@ -13,11 +13,10 @@ impl WidgetBuilder for RectangleBuilder {
|
||||||
let _width = parse_number(properties.get("width"));
|
let _width = parse_number(properties.get("width"));
|
||||||
let _height = parse_number(properties.get("height"));
|
let _height = parse_number(properties.get("height"));
|
||||||
|
|
||||||
|
|
||||||
let mut rect = Container::new();
|
let mut rect = Container::new();
|
||||||
rect = rect.background(parse_color_property(&properties, "color"));
|
rect = rect.background(parse_color_property(&properties, "color"));
|
||||||
rect = rect.border_brush(parse_color_property(&properties, "border.color"));
|
rect = rect.border_brush(parse_color_property(&properties, "border.color"));
|
||||||
rect = rect.border_width(Thickness::new(1.0,1.0,1.0,1.0));
|
rect = rect.border_width(Thickness::new(1.0, 1.0, 1.0, 1.0));
|
||||||
rect = rect.attach(Grid::row(row as usize));
|
rect = rect.attach(Grid::row(row as usize));
|
||||||
rect = rect.attach(Grid::column(col as usize));
|
rect = rect.attach(Grid::column(col as usize));
|
||||||
let qwb = QmlWidgetBuilder::new();
|
let qwb = QmlWidgetBuilder::new();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use crate::parser::Value::{QmlIdent, QmlString};
|
use crate::parser::Value::{QmlIdent, QmlString};
|
||||||
use crate::parser::{Value, QML};
|
use crate::parser::{Value, QML};
|
||||||
use crate::state;
|
use crate::state;
|
||||||
use crate::widget_builders::{WidgetBuilder, QmlContext};
|
use crate::widget_builders::{QmlContext, WidgetBuilder};
|
||||||
use orbtk::prelude::HashMap;
|
use orbtk::prelude::HashMap;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
use crate::parser::Value::{QmlIdent, QmlString};
|
use crate::parser::Value::{QmlIdent, QmlString};
|
||||||
use crate::parser::{Value, QML};
|
use crate::parser::{Value, QML};
|
||||||
use crate::widget_builders::{WidgetBuilder, QmlContext};
|
use crate::widget_builders::{QmlContext, WidgetBuilder};
|
||||||
use orbtk::prelude::HashMap;
|
use orbtk::prelude::HashMap;
|
||||||
use orbtk::prelude::*;
|
use orbtk::prelude::*;
|
||||||
use orbtk::Entity;
|
use orbtk::Entity;
|
||||||
|
|
Loading…
Reference in New Issue