|
@@ -19,30 +19,25 @@
|
|
|
use darkfi::net::settings;
|
|
use darkfi::net::settings;
|
|
|
use sled_overlay::sled;
|
|
use sled_overlay::sled;
|
|
|
|
|
|
|
|
-
|
|
|
|
|
use crate::{
|
|
use crate::{
|
|
|
app::{
|
|
app::{
|
|
|
- node::{
|
|
|
|
|
- create_button, create_editbox,
|
|
|
|
|
- create_layer, create_text, create_vector_art,
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ node::{create_button, create_editbox, create_layer, create_text, create_vector_art},
|
|
|
App,
|
|
App,
|
|
|
},
|
|
},
|
|
|
expr::{self, Compiler},
|
|
expr::{self, Compiler},
|
|
|
- prop::{
|
|
|
|
|
- Property, PropertyAtomicGuard, PropertyFloat32, PropertyStr, PropertyValue, Role
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ prop::{Property, PropertyAtomicGuard, PropertyFloat32, PropertyStr, PropertyValue, Role},
|
|
|
scene::{SceneNodePtr, Slot},
|
|
scene::{SceneNodePtr, Slot},
|
|
|
shape,
|
|
shape,
|
|
|
- ui::{
|
|
|
|
|
- Button, EditBox, Layer, OnModify, ShapeVertex, Text, VectorArt, VectorShape
|
|
|
|
|
- }, ExecutorPtr,
|
|
|
|
|
|
|
+ ui::{Button, EditBox, Layer, OnModify, ShapeVertex, Text, VectorArt, VectorShape},
|
|
|
|
|
+ ExecutorPtr,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
use super::{ColorScheme, CHANNELS, COLOR_SCHEME};
|
|
use super::{ColorScheme, CHANNELS, COLOR_SCHEME};
|
|
|
|
|
|
|
|
-use std::collections::BTreeMap;
|
|
|
|
|
-use std::sync::{Arc, Mutex};
|
|
|
|
|
|
|
+use std::{
|
|
|
|
|
+ collections::BTreeMap,
|
|
|
|
|
+ sync::{Arc, Mutex},
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
mod android_ui_consts {
|
|
mod android_ui_consts {
|
|
|
pub const SETTING_LABEL_X: f32 = 40.;
|
|
pub const SETTING_LABEL_X: f32 = 40.;
|
|
@@ -137,8 +132,14 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let mut cc = Compiler::new();
|
|
let mut cc = Compiler::new();
|
|
|
cc.add_const_f32("BORDER_RIGHT_SCALE", BORDER_RIGHT_SCALE);
|
|
cc.add_const_f32("BORDER_RIGHT_SCALE", BORDER_RIGHT_SCALE);
|
|
|
cc.add_const_f32("SEARCH_PADDING_X", SEARCH_PADDING_X);
|
|
cc.add_const_f32("SEARCH_PADDING_X", SEARCH_PADDING_X);
|
|
|
- cc.add_const_f32("X_RATIO", 1./2.);
|
|
|
|
|
- let window_scale = PropertyFloat32::wrap(&app.sg_root.clone().lookup_node("/setting/scale").unwrap(), Role::Internal, "value", 0).unwrap();
|
|
|
|
|
|
|
+ cc.add_const_f32("X_RATIO", 1. / 2.);
|
|
|
|
|
+ let window_scale = PropertyFloat32::wrap(
|
|
|
|
|
+ &app.sg_root.clone().lookup_node("/setting/scale").unwrap(),
|
|
|
|
|
+ Role::Internal,
|
|
|
|
|
+ "value",
|
|
|
|
|
+ 0,
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
let atom = &mut PropertyAtomicGuard::new();
|
|
let atom = &mut PropertyAtomicGuard::new();
|
|
|
|
|
|
|
|
// Main view
|
|
// Main view
|
|
@@ -210,7 +211,6 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
layer_node.clone().link(node);
|
|
layer_node.clone().link(node);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
let node = create_button("back_btn");
|
|
let node = create_button("back_btn");
|
|
|
node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
@@ -254,7 +254,7 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
|
|
|
|
|
let node = node.setup(|me| Button::new(me, app.ex.clone())).await;
|
|
let node = node.setup(|me| Button::new(me, app.ex.clone())).await;
|
|
|
layer_node.clone().link(node.clone());
|
|
layer_node.clone().link(node.clone());
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// Label: "SETTINGS" title
|
|
// Label: "SETTINGS" title
|
|
|
let node = create_text("settings_label_fontsize");
|
|
let node = create_text("settings_label_fontsize");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
@@ -294,7 +294,6 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
.await;
|
|
.await;
|
|
|
layer_node.clone().link(node);
|
|
layer_node.clone().link(node);
|
|
|
|
|
|
|
|
-
|
|
|
|
|
// Search Bar Background
|
|
// Search Bar Background
|
|
|
let node = create_vector_art("emoji_picker_bg");
|
|
let node = create_vector_art("emoji_picker_bg");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
@@ -328,7 +327,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let prop = editbox_node.get_property("rect").unwrap();
|
|
let prop = editbox_node.get_property("rect").unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 0, SEARCH_PADDING_X).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, SEARCH_PADDING_X).unwrap();
|
|
|
prop.clone().set_expr(atom, Role::App, 1, cc.compile("60 + 20").unwrap()).unwrap();
|
|
prop.clone().set_expr(atom, Role::App, 1, cc.compile("60 + 20").unwrap()).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w - SEARCH_PADDING_X*2").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(atom, Role::App, 2, cc.compile("w - SEARCH_PADDING_X*2").unwrap())
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
let prop = editbox_node.get_property("text_color").unwrap();
|
|
let prop = editbox_node.get_property("text_color").unwrap();
|
|
|
if COLOR_SCHEME == ColorScheme::DarkMode {
|
|
if COLOR_SCHEME == ColorScheme::DarkMode {
|
|
@@ -376,7 +377,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let node = create_vector_art("search_icon");
|
|
let node = create_vector_art("search_icon");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 0, BACKARROW_X).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, BACKARROW_X).unwrap();
|
|
|
- prop.clone().set_f32(atom, Role::App, 1, SETTING_LABEL_LINESPACE + SETTING_LABEL_LINESPACE/2.).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_f32(atom, Role::App, 1, SETTING_LABEL_LINESPACE + SETTING_LABEL_LINESPACE / 2.)
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 2, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 2, 0.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 3).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 3).unwrap();
|
|
@@ -466,7 +469,7 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let mut cc2 = cc.clone();
|
|
let mut cc2 = cc.clone();
|
|
|
let search = move || {
|
|
let search = move || {
|
|
|
let atom = &mut PropertyAtomicGuard::new();
|
|
let atom = &mut PropertyAtomicGuard::new();
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
let path = "/window/settings_layer/search_input";
|
|
let path = "/window/settings_layer/search_input";
|
|
|
let node = sg_root3.clone().lookup_node(path.to_string()).unwrap();
|
|
let node = sg_root3.clone().lookup_node(path.to_string()).unwrap();
|
|
|
let search_string = node.get_property_str("text").unwrap();
|
|
let search_string = node.get_property_str("text").unwrap();
|
|
@@ -480,7 +483,6 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let _ = search_label_node.set_property_f32(atom, Role::App, "font_size", 16.);
|
|
let _ = search_label_node.set_property_f32(atom, Role::App, "font_size", 16.);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
let path = "/window/settings_layer/settings";
|
|
let path = "/window/settings_layer/settings";
|
|
|
let node = sg_root3.clone().lookup_node(path.to_string()).unwrap();
|
|
let node = sg_root3.clone().lookup_node(path.to_string()).unwrap();
|
|
|
let setting_nodes = node.get_children();
|
|
let setting_nodes = node.get_children();
|
|
@@ -585,7 +587,7 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 60.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 60.).unwrap();
|
|
|
prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * 100").unwrap()).unwrap();
|
|
prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * 100").unwrap()).unwrap();
|
|
|
- prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE/3.5).unwrap();
|
|
|
|
|
|
|
+ prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE / 3.5).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
|
|
|
|
|
|
let mut shape = VectorShape::new();
|
|
let mut shape = VectorShape::new();
|
|
@@ -596,8 +598,8 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let y2 = expr::const_f32(SETTING_LABEL_LINESPACE);
|
|
let y2 = expr::const_f32(SETTING_LABEL_LINESPACE);
|
|
|
|
|
|
|
|
let (color1, color2) = match COLOR_SCHEME {
|
|
let (color1, color2) = match COLOR_SCHEME {
|
|
|
- ColorScheme::DarkMode => ([0., 0.94, 1., 0.4], [0., 0.3, 0.25, 0.0]),
|
|
|
|
|
- ColorScheme::PaperLight => ([0., 0.94, 1., 0.4], [0., 0.3, 0.25, 0.0]),
|
|
|
|
|
|
|
+ ColorScheme::DarkMode => ([0., 0.94, 1., 0.4], [0., 0.3, 0.25, 0.0]),
|
|
|
|
|
+ ColorScheme::PaperLight => ([0., 0.94, 1., 0.4], [0., 0.3, 0.25, 0.0]),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
let mut verts = vec![
|
|
let mut verts = vec![
|
|
@@ -629,13 +631,7 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let app_setting_root = app.sg_root.clone().lookup_node("/setting").unwrap();
|
|
let app_setting_root = app.sg_root.clone().lookup_node("/setting").unwrap();
|
|
|
for setting in app_setting_root.get_children().iter() {
|
|
for setting in app_setting_root.get_children().iter() {
|
|
|
let name = ["app", &setting.name.clone()].join(".");
|
|
let name = ["app", &setting.name.clone()].join(".");
|
|
|
- settings_map.insert(
|
|
|
|
|
- name.clone(),
|
|
|
|
|
- Arc::new(Setting {
|
|
|
|
|
- name,
|
|
|
|
|
- node: setting.clone(),
|
|
|
|
|
- }),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ settings_map.insert(name.clone(), Arc::new(Setting { name, node: setting.clone() }));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Get the settings from all plugins
|
|
// Get the settings from all plugins
|
|
@@ -648,13 +644,8 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
if let Some(sroot) = setting_root {
|
|
if let Some(sroot) = setting_root {
|
|
|
for setting in sroot.get_children().iter() {
|
|
for setting in sroot.get_children().iter() {
|
|
|
let name = [plugin.name.clone(), setting.name.clone()].join(".");
|
|
let name = [plugin.name.clone(), setting.name.clone()].join(".");
|
|
|
- settings_map.insert(
|
|
|
|
|
- name.clone(),
|
|
|
|
|
- Arc::new(Setting {
|
|
|
|
|
- name,
|
|
|
|
|
- node: setting.clone(),
|
|
|
|
|
- }),
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ settings_map
|
|
|
|
|
+ .insert(name.clone(), Arc::new(Setting { name, node: setting.clone() }));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -673,8 +664,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
|
settings_layer_node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
|
|
settings_layer_node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
|
|
|
settings_layer_node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
settings_layer_node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
|
- let settings_layer_node =
|
|
|
|
|
- settings_layer_node.setup(|me| Layer::new(me, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let settings_layer_node = settings_layer_node
|
|
|
|
|
+ .setup(|me| Layer::new(me, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
layer_node.clone().link(settings_layer_node.clone());
|
|
layer_node.clone().link(settings_layer_node.clone());
|
|
|
|
|
|
|
|
// Iterate over the map and process each setting
|
|
// Iterate over the map and process each setting
|
|
@@ -695,8 +687,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
setting_layer_node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
|
|
setting_layer_node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
|
|
|
setting_layer_node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
setting_layer_node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
|
- let setting_layer_node =
|
|
|
|
|
- setting_layer_node.setup(|me| Layer::new(me, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let setting_layer_node = setting_layer_node
|
|
|
|
|
+ .setup(|me| Layer::new(me, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
settings_layer_node.clone().link(setting_layer_node.clone());
|
|
settings_layer_node.clone().link(setting_layer_node.clone());
|
|
|
|
|
|
|
|
// Background Label
|
|
// Background Label
|
|
@@ -704,7 +697,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap())
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
|
|
|
|
|
@@ -737,20 +732,41 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
[0.15, 0.2, 0.19, 1.],
|
|
[0.15, 0.2, 0.19, 1.],
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
|
|
|
|
|
if is_bool {
|
|
if is_bool {
|
|
|
// Background Value: Bool FALSE
|
|
// Background Value: Bool FALSE
|
|
|
let node = create_vector_art("value_bg_bool_false");
|
|
let node = create_vector_art("value_bg_bool_false");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * (1-X_RATIO) + BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 2,
|
|
|
|
|
+ cc.compile("w * (1-X_RATIO) + BORDER_RIGHT_SCALE").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
|
- node.set_property_bool(atom, Role::App, "is_visible", matches!(setting_clone.get_value(), PropertyValue::Bool(false))).unwrap();
|
|
|
|
|
|
|
+ node.set_property_bool(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ "is_visible",
|
|
|
|
|
+ matches!(setting_clone.get_value(), PropertyValue::Bool(false)),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
|
|
|
let mut shape = VectorShape::new();
|
|
let mut shape = VectorShape::new();
|
|
|
|
|
|
|
@@ -760,9 +776,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let y2 = expr::const_f32(SETTING_LABEL_LINESPACE);
|
|
let y2 = expr::const_f32(SETTING_LABEL_LINESPACE);
|
|
|
|
|
|
|
|
let (color1, color2) = match COLOR_SCHEME {
|
|
let (color1, color2) = match COLOR_SCHEME {
|
|
|
- //ColorScheme::DarkMode => ([0., 0.11, 0.11, 1.], [0., 0.11, 0.11, 1.]),
|
|
|
|
|
- ColorScheme::DarkMode => ([0.0, 0.04, 0.04, 0.0], [0.7, 0.0, 0.0, 0.15]),
|
|
|
|
|
- ColorScheme::PaperLight => ([0.0, 0.04, 0.04, 0.0], [0.7, 0.0, 0.0, 0.15]),
|
|
|
|
|
|
|
+ //ColorScheme::DarkMode => ([0., 0.11, 0.11, 1.], [0., 0.11, 0.11, 1.]),
|
|
|
|
|
+ ColorScheme::DarkMode => ([0.0, 0.04, 0.04, 0.0], [0.7, 0.0, 0.0, 0.15]),
|
|
|
|
|
+ ColorScheme::PaperLight => ([0.0, 0.04, 0.04, 0.0], [0.7, 0.0, 0.0, 0.15]),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
let mut verts = vec![
|
|
let mut verts = vec![
|
|
@@ -783,20 +799,40 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
[0.15, 0.2, 0.19, 1.],
|
|
[0.15, 0.2, 0.19, 1.],
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
-
|
|
|
|
|
|
|
|
|
|
// Background Value: Bool TRUE
|
|
// Background Value: Bool TRUE
|
|
|
let node = create_vector_art("value_bg_bool_true");
|
|
let node = create_vector_art("value_bg_bool_true");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * (1-X_RATIO) + BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 2,
|
|
|
|
|
+ cc.compile("w * (1-X_RATIO) + BORDER_RIGHT_SCALE").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
|
- node.set_property_bool(atom, Role::App, "is_visible", matches!(setting_clone.get_value(), PropertyValue::Bool(true))).unwrap();
|
|
|
|
|
|
|
+ node.set_property_bool(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ "is_visible",
|
|
|
|
|
+ matches!(setting_clone.get_value(), PropertyValue::Bool(true)),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
|
|
|
let mut shape = VectorShape::new();
|
|
let mut shape = VectorShape::new();
|
|
|
|
|
|
|
@@ -806,9 +842,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let y2 = expr::const_f32(SETTING_LABEL_LINESPACE);
|
|
let y2 = expr::const_f32(SETTING_LABEL_LINESPACE);
|
|
|
|
|
|
|
|
let (color1, color2) = match COLOR_SCHEME {
|
|
let (color1, color2) = match COLOR_SCHEME {
|
|
|
- //ColorScheme::DarkMode => ([0., 0.11, 0.11, 1.], [0., 0.11, 0.11, 1.]),
|
|
|
|
|
- ColorScheme::DarkMode => ([0., 0.3, 0.25, 0.0], [0., 0.3, 0.25, 0.5]),
|
|
|
|
|
- ColorScheme::PaperLight => ([0., 0.3, 0.25, 0.0], [0., 0.3, 0.25, 0.5]),
|
|
|
|
|
|
|
+ //ColorScheme::DarkMode => ([0., 0.11, 0.11, 1.], [0., 0.11, 0.11, 1.]),
|
|
|
|
|
+ ColorScheme::DarkMode => ([0., 0.3, 0.25, 0.0], [0., 0.3, 0.25, 0.5]),
|
|
|
|
|
+ ColorScheme::PaperLight => ([0., 0.3, 0.25, 0.0], [0., 0.3, 0.25, 0.5]),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
let mut verts = vec![
|
|
let mut verts = vec![
|
|
@@ -829,16 +865,31 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
[0.15, 0.2, 0.19, 1.],
|
|
[0.15, 0.2, 0.19, 1.],
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
} else {
|
|
} else {
|
|
|
// Background Value
|
|
// Background Value
|
|
|
let node = create_vector_art("value_bg");
|
|
let node = create_vector_art("value_bg");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * (1-X_RATIO) + BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 2,
|
|
|
|
|
+ cc.compile("w * (1-X_RATIO) + BORDER_RIGHT_SCALE").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 0).unwrap();
|
|
|
node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_visible", true).unwrap();
|
|
@@ -874,13 +925,12 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
[0.15, 0.2, 0.19, 1.],
|
|
[0.15, 0.2, 0.19, 1.],
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
// Label Key
|
|
// Label Key
|
|
|
let label_value_node = create_text("key_label");
|
|
let label_value_node = create_text("key_label");
|
|
|
let prop = label_value_node.get_property("rect").unwrap();
|
|
let prop = label_value_node.get_property("rect").unwrap();
|
|
@@ -889,8 +939,12 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO").unwrap()).unwrap();
|
|
prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO").unwrap()).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 100.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 100.).unwrap();
|
|
|
label_value_node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
label_value_node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
|
- label_value_node.set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE).unwrap();
|
|
|
|
|
- label_value_node.set_property_f32(atom, Role::App, "font_size", SETTING_LABEL_FONTSIZE).unwrap();
|
|
|
|
|
|
|
+ label_value_node
|
|
|
|
|
+ .set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE)
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
+ label_value_node
|
|
|
|
|
+ .set_property_f32(atom, Role::App, "font_size", SETTING_LABEL_FONTSIZE)
|
|
|
|
|
+ .unwrap();
|
|
|
label_value_node.set_property_str(atom, Role::App, "text", setting_name.clone()).unwrap();
|
|
label_value_node.set_property_str(atom, Role::App, "text", setting_name.clone()).unwrap();
|
|
|
let prop = label_value_node.get_property("text_color").unwrap();
|
|
let prop = label_value_node.get_property("text_color").unwrap();
|
|
|
if COLOR_SCHEME == ColorScheme::DarkMode {
|
|
if COLOR_SCHEME == ColorScheme::DarkMode {
|
|
@@ -924,9 +978,13 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
editbox_node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
editbox_node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
|
editbox_node.set_property_bool(atom, Role::App, "is_focused", true).unwrap();
|
|
editbox_node.set_property_bool(atom, Role::App, "is_focused", true).unwrap();
|
|
|
let prop = editbox_node.get_property("rect").unwrap();
|
|
let prop = editbox_node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE").unwrap())
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO - BORDER_RIGHT_SCALE").unwrap())
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
editbox_node.set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE).unwrap();
|
|
editbox_node.set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE).unwrap();
|
|
|
editbox_node.set_property_f32(atom, Role::App, "font_size", SETTING_EDIT_FONTSIZE).unwrap();
|
|
editbox_node.set_property_f32(atom, Role::App, "font_size", SETTING_EDIT_FONTSIZE).unwrap();
|
|
@@ -983,7 +1041,13 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let editz_text2 = editz_text.clone();
|
|
let editz_text2 = editz_text.clone();
|
|
|
let listen_enter = app.ex.spawn(async move {
|
|
let listen_enter = app.ex.spawn(async move {
|
|
|
while let Ok(_) = recvr.recv().await {
|
|
while let Ok(_) = recvr.recv().await {
|
|
|
- update_setting(setting2.clone(), sg_root2.clone(), active_setting2.clone(), editz_text2.clone()).await;
|
|
|
|
|
|
|
+ update_setting(
|
|
|
|
|
+ setting2.clone(),
|
|
|
|
|
+ sg_root2.clone(),
|
|
|
|
|
+ active_setting2.clone(),
|
|
|
|
|
+ editz_text2.clone(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .await;
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
app.tasks.lock().unwrap().push(listen_enter);
|
|
app.tasks.lock().unwrap().push(listen_enter);
|
|
@@ -1010,50 +1074,91 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
if !is_active_setting {
|
|
if !is_active_setting {
|
|
|
-
|
|
|
|
|
if is_bool {
|
|
if is_bool {
|
|
|
-
|
|
|
|
|
// Bool circle: FALSE
|
|
// Bool circle: FALSE
|
|
|
let node = create_vector_art("bool_icon_bg_false");
|
|
let node = create_vector_art("bool_icon_bg_false");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE + 6").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE + 6").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, SETTING_LABEL_LINESPACE / 2.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, SETTING_LABEL_LINESPACE / 2.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 2, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 2, 0.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
|
- node.set_property_bool(atom, Role::App, "is_visible", matches!(setting_clone.get_value(), PropertyValue::Bool(false))).unwrap();
|
|
|
|
|
|
|
+ node.set_property_bool(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ "is_visible",
|
|
|
|
|
+ matches!(setting_clone.get_value(), PropertyValue::Bool(false)),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
|
|
|
let shape = shape::create_circle([0.9, 0.4, 0.4, 0.7]).scaled(5.);
|
|
let shape = shape::create_circle([0.9, 0.4, 0.4, 0.7]).scaled(5.);
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
|
|
|
|
|
// Bool circle: TRUE
|
|
// Bool circle: TRUE
|
|
|
let node = create_vector_art("bool_icon_bg_true");
|
|
let node = create_vector_art("bool_icon_bg_true");
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE + 6").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE + 6").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, SETTING_LABEL_LINESPACE / 2.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, SETTING_LABEL_LINESPACE / 2.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 2, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 2, 0.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 0.).unwrap();
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
|
- node.set_property_bool(atom, Role::App, "is_visible", matches!(setting_clone.get_value(), PropertyValue::Bool(true))).unwrap();
|
|
|
|
|
|
|
+ node.set_property_bool(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ "is_visible",
|
|
|
|
|
+ matches!(setting_clone.get_value(), PropertyValue::Bool(true)),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
|
|
|
let shape = shape::create_circle([0., 0.94, 1., 1.]).scaled(5.);
|
|
let shape = shape::create_circle([0., 0.94, 1., 1.]).scaled(5.);
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
|
|
|
|
|
// Label showing the setting's current value
|
|
// Label showing the setting's current value
|
|
|
let value_node = create_text("value_label");
|
|
let value_node = create_text("value_label");
|
|
|
let prop = value_node.get_property("rect").unwrap();
|
|
let prop = value_node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE + 20 + 6").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE + 20 + 6").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO").unwrap())
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 100.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 100.).unwrap();
|
|
|
value_node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
value_node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
|
- value_node.set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE).unwrap();
|
|
|
|
|
- value_node.set_property_f32(atom, Role::App, "font_size", SETTING_LABEL_FONTSIZE).unwrap();
|
|
|
|
|
- value_node.set_property_str(atom, Role::App, "text", setting_clone.value_as_string()).unwrap();
|
|
|
|
|
|
|
+ value_node
|
|
|
|
|
+ .set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE)
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
+ value_node
|
|
|
|
|
+ .set_property_f32(atom, Role::App, "font_size", SETTING_LABEL_FONTSIZE)
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
+ value_node
|
|
|
|
|
+ .set_property_str(atom, Role::App, "text", setting_clone.value_as_string())
|
|
|
|
|
+ .unwrap();
|
|
|
let prop = value_node.get_property("text_color").unwrap();
|
|
let prop = value_node.get_property("text_color").unwrap();
|
|
|
if matches!(setting_clone.get_value(), PropertyValue::Bool(false)) {
|
|
if matches!(setting_clone.get_value(), PropertyValue::Bool(false)) {
|
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.9).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.9).unwrap();
|
|
@@ -1080,20 +1185,33 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
})
|
|
})
|
|
|
.await;
|
|
.await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
-
|
|
|
|
|
} else {
|
|
} else {
|
|
|
-
|
|
|
|
|
// Label showing the setting's current value
|
|
// Label showing the setting's current value
|
|
|
let value_node = create_text("value_label");
|
|
let value_node = create_text("value_label");
|
|
|
let prop = value_node.get_property("rect").unwrap();
|
|
let prop = value_node.get_property("rect").unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ 0,
|
|
|
|
|
+ cc.compile("w * X_RATIO + BORDER_RIGHT_SCALE").unwrap(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(atom, Role::App, 2, cc.compile("w * X_RATIO").unwrap())
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 100.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 100.).unwrap();
|
|
|
value_node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
value_node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
|
- value_node.set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE).unwrap();
|
|
|
|
|
- value_node.set_property_f32(atom, Role::App, "font_size", SETTING_LABEL_FONTSIZE).unwrap();
|
|
|
|
|
- value_node.set_property_str(atom, Role::App, "text", setting_clone.value_as_string()).unwrap();
|
|
|
|
|
|
|
+ value_node
|
|
|
|
|
+ .set_property_f32(atom, Role::App, "baseline", SETTING_LABEL_BASELINE)
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
+ value_node
|
|
|
|
|
+ .set_property_f32(atom, Role::App, "font_size", SETTING_LABEL_FONTSIZE)
|
|
|
|
|
+ .unwrap();
|
|
|
|
|
+ value_node
|
|
|
|
|
+ .set_property_str(atom, Role::App, "text", setting_clone.value_as_string())
|
|
|
|
|
+ .unwrap();
|
|
|
let prop = value_node.get_property("text_color").unwrap();
|
|
let prop = value_node.get_property("text_color").unwrap();
|
|
|
if COLOR_SCHEME == ColorScheme::DarkMode {
|
|
if COLOR_SCHEME == ColorScheme::DarkMode {
|
|
|
prop.clone().set_f32(atom, Role::App, 0, 1.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, 1.).unwrap();
|
|
@@ -1122,15 +1240,15 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
// A wide button useful to select the current setting
|
|
// A wide button useful to select the current setting
|
|
|
let node = create_button("selector_btn");
|
|
let node = create_button("selector_btn");
|
|
|
node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
|
let prop = node.get_property("rect").unwrap();
|
|
let prop = node.get_property("rect").unwrap();
|
|
|
prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO").unwrap()).unwrap();
|
|
prop.clone().set_expr(atom, Role::App, 0, cc.compile("w * X_RATIO").unwrap()).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 1, 0.).unwrap();
|
|
|
- prop.clone().set_expr(atom, Role::App, 2, cc.compile("w * (1-X_RATIO)").unwrap()).unwrap();
|
|
|
|
|
|
|
+ prop.clone()
|
|
|
|
|
+ .set_expr(atom, Role::App, 2, cc.compile("w * (1-X_RATIO)").unwrap())
|
|
|
|
|
+ .unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, SETTING_LABEL_LINESPACE).unwrap();
|
|
|
|
|
|
|
|
let sg_root = app.sg_root.clone();
|
|
let sg_root = app.sg_root.clone();
|
|
@@ -1157,72 +1275,102 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
// Hide the selected setting value label (set its text empty)
|
|
// Hide the selected setting value label (set its text empty)
|
|
|
// of the selected setting, if there's one
|
|
// of the selected setting, if there's one
|
|
|
if !_was_active {
|
|
if !_was_active {
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_editbox", &s.name);
|
|
|
|
|
|
|
+ let path =
|
|
|
|
|
+ format!("/window/settings_layer/settings/{}/value_editbox", &s.name);
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
node.set_property_bool(atom, Role::App, "is_active", false).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_active", false).unwrap();
|
|
|
node.set_property_bool(atom, Role::App, "is_focused", false).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_focused", false).unwrap();
|
|
|
node.set_property_f32(atom, Role::App, "font_size", 0.).unwrap();
|
|
node.set_property_f32(atom, Role::App, "font_size", 0.).unwrap();
|
|
|
node.set_property_str(atom, Role::App, "text", "").unwrap();
|
|
node.set_property_str(atom, Role::App, "text", "").unwrap();
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
// Hide confirm button
|
|
// Hide confirm button
|
|
|
// (Bool settings don't have a confirm button so we have to check for it to
|
|
// (Bool settings don't have a confirm button so we have to check for it to
|
|
|
// not panic)
|
|
// not panic)
|
|
|
- let is_bool = matches!(lock.clone().unwrap().get_value(), PropertyValue::Bool(_));
|
|
|
|
|
|
|
+ let is_bool =
|
|
|
|
|
+ matches!(lock.clone().unwrap().get_value(), PropertyValue::Bool(_));
|
|
|
if !is_bool {
|
|
if !is_bool {
|
|
|
- let path = format!("/window/settings_layer/settings/{}/confirm_btn_bg", &s.name);
|
|
|
|
|
|
|
+ let path =
|
|
|
|
|
+ format!("/window/settings_layer/settings/{}/confirm_btn_bg", &s.name);
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
_was_active
|
|
_was_active
|
|
|
} else {
|
|
} else {
|
|
|
false
|
|
false
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- // Update what setting active_setting points to
|
|
|
|
|
|
|
+ // Update what setting active_setting points to
|
|
|
*lock = Some(setting_clone.clone());
|
|
*lock = Some(setting_clone.clone());
|
|
|
debug!("active setting set to: {}", lock.clone().unwrap().name);
|
|
debug!("active setting set to: {}", lock.clone().unwrap().name);
|
|
|
|
|
|
|
|
let is_bool = matches!(lock.clone().unwrap().get_value(), PropertyValue::Bool(_));
|
|
let is_bool = matches!(lock.clone().unwrap().get_value(), PropertyValue::Bool(_));
|
|
|
if is_bool {
|
|
if is_bool {
|
|
|
- // Hide the setting value label (set its text empty)
|
|
|
|
|
- let label_path = format!("/window/settings_layer/settings/{}/value_label", &setting_clone.name);
|
|
|
|
|
|
|
+ // Hide the setting value label (set its text empty)
|
|
|
|
|
+ let label_path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_label",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let editbox = sg_root.clone().lookup_node(&label_path).unwrap();
|
|
let editbox = sg_root.clone().lookup_node(&label_path).unwrap();
|
|
|
let label_text = PropertyStr::wrap(&editbox, Role::App, "text", 0).unwrap();
|
|
let label_text = PropertyStr::wrap(&editbox, Role::App, "text", 0).unwrap();
|
|
|
let value = &lock.clone().unwrap().get_value();
|
|
let value = &lock.clone().unwrap().get_value();
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_bg_bool_true", &setting_clone.name);
|
|
|
|
|
- let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
- let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
-
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_bg_bool_false", &setting_clone.name);
|
|
|
|
|
- let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
- let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_bg_bool_true",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
|
|
+ let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
+ let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/bool_icon_bg_true", &setting_clone.name);
|
|
|
|
|
- let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
- let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_bg_bool_false",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
|
|
+ let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
+ let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/bool_icon_bg_false", &setting_clone.name);
|
|
|
|
|
- let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
- let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/bool_icon_bg_true",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
|
|
+ let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
+ let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/bool_icon_bg_false",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
|
|
+ let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
|
|
+ let _ = node.set_property_bool(atom, Role::App, "is_visible", false);
|
|
|
|
|
|
|
|
if matches!(value, PropertyValue::Bool(false)) {
|
|
if matches!(value, PropertyValue::Bool(false)) {
|
|
|
- &lock.clone().unwrap().node.set_property_bool(atom, Role::User, "value", true);
|
|
|
|
|
|
|
+ &lock.clone().unwrap().node.set_property_bool(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::User,
|
|
|
|
|
+ "value",
|
|
|
|
|
+ true,
|
|
|
|
|
+ );
|
|
|
label_text.set(atom, "TRUE");
|
|
label_text.set(atom, "TRUE");
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_bg_bool_true", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_bg_bool_true",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/bool_icon_bg_true", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/bool_icon_bg_true",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_label", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_label",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
let prop = node.get_property("text_color").unwrap();
|
|
let prop = node.get_property("text_color").unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.).unwrap();
|
|
@@ -1230,18 +1378,32 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
prop.clone().set_f32(atom, Role::App, 2, 1.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 2, 1.).unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 1.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 1.).unwrap();
|
|
|
} else {
|
|
} else {
|
|
|
- &lock.clone().unwrap().node.set_property_bool(atom, Role::User, "value", false);
|
|
|
|
|
|
|
+ &lock.clone().unwrap().node.set_property_bool(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::User,
|
|
|
|
|
+ "value",
|
|
|
|
|
+ false,
|
|
|
|
|
+ );
|
|
|
label_text.set(atom, "FALSE");
|
|
label_text.set(atom, "FALSE");
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_bg_bool_false", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_bg_bool_false",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/bool_icon_bg_false", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/bool_icon_bg_false",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
|
|
|
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_label", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_label",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
let prop = node.get_property("text_color").unwrap();
|
|
let prop = node.get_property("text_color").unwrap();
|
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.9).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 0, 0.9).unwrap();
|
|
@@ -1250,28 +1412,42 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
prop.clone().set_f32(atom, Role::App, 3, 1.).unwrap();
|
|
prop.clone().set_f32(atom, Role::App, 3, 1.).unwrap();
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- // Hide the setting value label (set its text empty)
|
|
|
|
|
|
|
+ // Hide the setting value label (set its text empty)
|
|
|
// TODO?: Visilibity property on labels
|
|
// TODO?: Visilibity property on labels
|
|
|
- let label_path = format!("/window/settings_layer/settings/{}/value_label", &setting_clone.name);
|
|
|
|
|
|
|
+ let label_path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_label",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let editbox = sg_root.clone().lookup_node(&label_path).unwrap();
|
|
let editbox = sg_root.clone().lookup_node(&label_path).unwrap();
|
|
|
let label_text = PropertyStr::wrap(&editbox, Role::App, "text", 0).unwrap();
|
|
let label_text = PropertyStr::wrap(&editbox, Role::App, "text", 0).unwrap();
|
|
|
label_text.set(atom, "");
|
|
label_text.set(atom, "");
|
|
|
|
|
|
|
|
// Show the editbox
|
|
// Show the editbox
|
|
|
- let path = format!("/window/settings_layer/settings/{}/value_editbox", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/value_editbox",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_active", true).unwrap();
|
|
|
node.set_property_bool(atom, Role::App, "is_focused", true).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_focused", true).unwrap();
|
|
|
node.set_property_f32(atom, Role::App, "font_size", 16.).unwrap();
|
|
node.set_property_f32(atom, Role::App, "font_size", 16.).unwrap();
|
|
|
if !was_active {
|
|
if !was_active {
|
|
|
- node.set_property_str(atom, Role::App, "text", setting_clone.value_as_string()).unwrap();
|
|
|
|
|
|
|
+ node.set_property_str(
|
|
|
|
|
+ atom,
|
|
|
|
|
+ Role::App,
|
|
|
|
|
+ "text",
|
|
|
|
|
+ setting_clone.value_as_string(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .unwrap();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// Show confirm button
|
|
// Show confirm button
|
|
|
- let path = format!("/window/settings_layer/settings/{}/confirm_btn_bg", &setting_clone.name);
|
|
|
|
|
|
|
+ let path = format!(
|
|
|
|
|
+ "/window/settings_layer/settings/{}/confirm_btn_bg",
|
|
|
|
|
+ &setting_clone.name
|
|
|
|
|
+ );
|
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
let node = sg_root.clone().lookup_node(&path).unwrap();
|
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
let _ = node.set_property_bool(atom, Role::App, "is_visible", true);
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -1300,8 +1476,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
node.set_property_u32(atom, Role::App, "z_index", 1).unwrap();
|
|
|
|
|
|
|
|
let shape = shape::create_switch([0., 0.94, 1., 1.]).scaled(10.);
|
|
let shape = shape::create_switch([0., 0.94, 1., 1.]).scaled(10.);
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node);
|
|
setting_layer_node.clone().link(node);
|
|
|
} else {
|
|
} else {
|
|
|
// Confirm button
|
|
// Confirm button
|
|
@@ -1315,8 +1492,9 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
|
|
|
|
|
|
let shape = shape::create_confirm([0., 0.94, 1., 1.]).scaled(10.);
|
|
let shape = shape::create_confirm([0., 0.94, 1., 1.]).scaled(10.);
|
|
|
- let node =
|
|
|
|
|
- node.setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone())).await;
|
|
|
|
|
|
|
+ let node = node
|
|
|
|
|
+ .setup(|me| VectorArt::new(me, shape, app.render_api.clone(), app.ex.clone()))
|
|
|
|
|
+ .await;
|
|
|
setting_layer_node.clone().link(node.clone());
|
|
setting_layer_node.clone().link(node.clone());
|
|
|
|
|
|
|
|
let node = create_button("confirm_btn");
|
|
let node = create_button("confirm_btn");
|
|
@@ -1342,7 +1520,13 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let listen_click = app.ex.spawn(async move {
|
|
let listen_click = app.ex.spawn(async move {
|
|
|
while let Ok(_) = recvr.recv().await {
|
|
while let Ok(_) = recvr.recv().await {
|
|
|
info!("confirm clicked");
|
|
info!("confirm clicked");
|
|
|
- update_setting(setting2.clone(), sg_root2.clone(), active_setting2.clone(), editz_text2.clone()).await;
|
|
|
|
|
|
|
+ update_setting(
|
|
|
|
|
+ setting2.clone(),
|
|
|
|
|
+ sg_root2.clone(),
|
|
|
|
|
+ active_setting2.clone(),
|
|
|
|
|
+ editz_text2.clone(),
|
|
|
|
|
+ )
|
|
|
|
|
+ .await;
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
app.tasks.lock().unwrap().push(listen_click);
|
|
app.tasks.lock().unwrap().push(listen_click);
|
|
@@ -1361,7 +1545,12 @@ pub async fn make(app: &App, window: SceneNodePtr, ex: ExecutorPtr) {
|
|
|
let _ = node.set_property_str(atom, Role::App, "text", &counter_text).unwrap();
|
|
let _ = node.set_property_str(atom, Role::App, "text", &counter_text).unwrap();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-async fn update_setting(setting: Arc<Setting>, sg_root: SceneNodePtr, active_setting: Arc<Mutex<Option<Arc<Setting>>>>, editz_text: PropertyStr) {
|
|
|
|
|
|
|
+async fn update_setting(
|
|
|
|
|
+ setting: Arc<Setting>,
|
|
|
|
|
+ sg_root: SceneNodePtr,
|
|
|
|
|
+ active_setting: Arc<Mutex<Option<Arc<Setting>>>>,
|
|
|
|
|
+ editz_text: PropertyStr,
|
|
|
|
|
+) {
|
|
|
let atom = &mut PropertyAtomicGuard::new();
|
|
let atom = &mut PropertyAtomicGuard::new();
|
|
|
let setting_name = &setting.clone().name;
|
|
let setting_name = &setting.clone().name;
|
|
|
|
|
|
|
@@ -1381,7 +1570,8 @@ async fn update_setting(setting: Arc<Setting>, sg_root: SceneNodePtr, active_set
|
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
|
node.set_property_str(atom, Role::App, "text", value_str).unwrap();
|
|
node.set_property_str(atom, Role::App, "text", value_str).unwrap();
|
|
|
}
|
|
}
|
|
|
- let path = format!("/window/settings_layer/settings/{}/confirm_btn_bg", setting_name);
|
|
|
|
|
|
|
+ let path =
|
|
|
|
|
+ format!("/window/settings_layer/settings/{}/confirm_btn_bg", setting_name);
|
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
|
}
|
|
}
|
|
@@ -1389,7 +1579,7 @@ async fn update_setting(setting: Arc<Setting>, sg_root: SceneNodePtr, active_set
|
|
|
let mut active_setting_value = active_setting.lock().unwrap();
|
|
let mut active_setting_value = active_setting.lock().unwrap();
|
|
|
*active_setting_value = None;
|
|
*active_setting_value = None;
|
|
|
}
|
|
}
|
|
|
- },
|
|
|
|
|
|
|
+ }
|
|
|
PropertyValue::Float32(_) => {
|
|
PropertyValue::Float32(_) => {
|
|
|
let value_str = editz_text.get();
|
|
let value_str = editz_text.get();
|
|
|
let parsed = value_str.parse::<f32>();
|
|
let parsed = value_str.parse::<f32>();
|
|
@@ -1398,7 +1588,8 @@ async fn update_setting(setting: Arc<Setting>, sg_root: SceneNodePtr, active_set
|
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
|
node.set_property_str(atom, Role::App, "text", value_str).unwrap();
|
|
node.set_property_str(atom, Role::App, "text", value_str).unwrap();
|
|
|
}
|
|
}
|
|
|
- let path = format!("/window/settings_layer/settings/{}/confirm_btn_bg", setting_name);
|
|
|
|
|
|
|
+ let path =
|
|
|
|
|
+ format!("/window/settings_layer/settings/{}/confirm_btn_bg", setting_name);
|
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
if let Some(node) = sg_root.clone().lookup_node(path) {
|
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
node.set_property_bool(atom, Role::App, "is_visible", false).unwrap();
|
|
|
}
|
|
}
|
|
@@ -1406,7 +1597,7 @@ async fn update_setting(setting: Arc<Setting>, sg_root: SceneNodePtr, active_set
|
|
|
let mut active_setting_value = active_setting.lock().unwrap();
|
|
let mut active_setting_value = active_setting.lock().unwrap();
|
|
|
*active_setting_value = None;
|
|
*active_setting_value = None;
|
|
|
}
|
|
}
|
|
|
- },
|
|
|
|
|
|
|
+ }
|
|
|
PropertyValue::Str(_) => {
|
|
PropertyValue::Str(_) => {
|
|
|
let value_str = editz_text.get();
|
|
let value_str = editz_text.get();
|
|
|
let path = format!("/window/settings_layer/settings/{}/value_label", setting_name);
|
|
let path = format!("/window/settings_layer/settings/{}/value_label", setting_name);
|
|
@@ -1420,7 +1611,7 @@ async fn update_setting(setting: Arc<Setting>, sg_root: SceneNodePtr, active_set
|
|
|
setting.node.set_property_str(atom, Role::User, "value", value_str);
|
|
setting.node.set_property_str(atom, Role::User, "value", value_str);
|
|
|
let mut active_setting_value = active_setting.lock().unwrap();
|
|
let mut active_setting_value = active_setting.lock().unwrap();
|
|
|
*active_setting_value = None;
|
|
*active_setting_value = None;
|
|
|
- },
|
|
|
|
|
- _ => {},
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ _ => {}
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|