mirror of
https://github.com/Astatin3/unshell.git
synced 2026-06-09 06:47:59 -06:00
Work on tree
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::{Value, json};
|
||||
|
||||
use crate::{
|
||||
ModuleError, Result,
|
||||
config::{InterfaceData, InterfaceStruct, TreeMessage},
|
||||
config::{ConfigStructField, InterfaceData, InterfaceStruct, TreeMessage},
|
||||
warn,
|
||||
};
|
||||
|
||||
@@ -55,30 +54,3 @@ impl Config {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize, Serialize)]
|
||||
pub enum ConfigStructField {
|
||||
Header(String),
|
||||
Text(String),
|
||||
String {
|
||||
// Default value of string edit in struct
|
||||
#[serde(default)]
|
||||
default: String,
|
||||
max_length: Option<usize>,
|
||||
// Display string edit as password
|
||||
#[serde(default)]
|
||||
protected: Option<bool>,
|
||||
},
|
||||
Integer {
|
||||
// Default value of integer in struct
|
||||
#[serde(default)]
|
||||
default: i32,
|
||||
min: Option<i32>,
|
||||
max: Option<i32>,
|
||||
},
|
||||
// Checkbox
|
||||
// Dropdown
|
||||
// Collapsing header
|
||||
// Slider
|
||||
// ...
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::{Value, json};
|
||||
|
||||
use crate::{
|
||||
ModuleError, Result,
|
||||
config::{ConfigStructField, InterfaceData, InterfaceStruct, Tree, TreeMessage},
|
||||
warn,
|
||||
};
|
||||
|
||||
pub type ConfigStructListKeys = Vec<ConfigStructField>;
|
||||
pub type ConfigStructListValues = Vec<Vec<Value>>;
|
||||
|
||||
pub struct ConfigStructList {
|
||||
keys: ConfigStructListKeys,
|
||||
values: ConfigStructListValues,
|
||||
}
|
||||
|
||||
impl ConfigStructList {
|
||||
pub fn new(keys: ConfigStructListKeys) -> Self {
|
||||
// let values = keys
|
||||
// .iter()
|
||||
// .map(|key| match key {
|
||||
// ConfigStructField::Header(_) => Value::Null,
|
||||
// ConfigStructField::Text(_) => Value::Null,
|
||||
// ConfigStructField::String { default, .. } => json!(default),
|
||||
// ConfigStructField::Integer { default, .. } => json!(default),
|
||||
// })
|
||||
// .collect();
|
||||
|
||||
Self {
|
||||
keys,
|
||||
values: Vec::new(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// impl Tree for ConfigStructList {}
|
||||
@@ -1,4 +1,5 @@
|
||||
pub mod config_struct;
|
||||
pub mod config_struct_list;
|
||||
mod tree;
|
||||
|
||||
pub use tree::{InterfaceData, InterfaceStruct, Tree, TreeMessage};
|
||||
@@ -11,3 +12,30 @@ pub struct RuntimeConfig {
|
||||
pub name: String,
|
||||
pub config: HashMap<String, String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)]
|
||||
pub enum ConfigStructField {
|
||||
Header(String),
|
||||
Text(String),
|
||||
String {
|
||||
// Default value of string edit in struct
|
||||
#[serde(default)]
|
||||
default: String,
|
||||
max_length: Option<usize>,
|
||||
// Display string edit as password
|
||||
#[serde(default)]
|
||||
protected: bool,
|
||||
},
|
||||
Integer {
|
||||
// Default value of integer in struct
|
||||
#[serde(default)]
|
||||
default: i32,
|
||||
min: Option<i32>,
|
||||
max: Option<i32>,
|
||||
},
|
||||
// Checkbox
|
||||
// Dropdown
|
||||
// Collapsing header
|
||||
// Slider
|
||||
// ...
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user