Add GrowDirection to xml values

This commit is contained in:
hodasemi 2023-01-17 15:33:25 +01:00
parent 2f7ad1fc76
commit 4bb62bcfe8
2 changed files with 35 additions and 13 deletions

View file

@ -11,7 +11,9 @@ use std::{
sync::{Arc, RwLock, Weak},
};
use super::validator::{cow_to_fill_type, cow_to_str, cow_to_text_alignment, str_into};
use super::validator::{
cow_to_fill_type, cow_to_grow_direction, cow_to_str, cow_to_text_alignment, str_into,
};
pub struct ProgressBarInfo {
pub id: String,
@ -39,7 +41,7 @@ impl ProgressBarInfo {
attributes: quick_xml::events::attributes::Attributes<'a>,
grid: &Arc<GridInfo>,
) -> Result<ProgressBarInfo> {
let mut label_info = ProgressBarInfo {
let mut progress_bar_info = ProgressBarInfo {
id: String::new(),
x_slot: Mandatory::default(),
@ -64,20 +66,27 @@ impl ProgressBarInfo {
let attribute = attribute_res?;
match attribute.key.into_inner() {
b"id" => label_info.id = cow_to_str(attribute.value),
b"x_slot" => label_info.x_slot.set(str_into(attribute.value)?),
b"y_slot" => label_info.y_slot.set(str_into(attribute.value)?),
b"x_size" => label_info.x_dim = str_into(attribute.value)?,
b"y_size" => label_info.y_dim = str_into(attribute.value)?,
b"background" => label_info.background = Some(cow_to_fill_type(attribute.value)),
b"foreground" => label_info.foreground = Some(cow_to_fill_type(attribute.value)),
b"id" => progress_bar_info.id = cow_to_str(attribute.value),
b"x_slot" => progress_bar_info.x_slot.set(str_into(attribute.value)?),
b"y_slot" => progress_bar_info.y_slot.set(str_into(attribute.value)?),
b"x_size" => progress_bar_info.x_dim = str_into(attribute.value)?,
b"y_size" => progress_bar_info.y_dim = str_into(attribute.value)?,
b"background" => {
progress_bar_info.background = Some(cow_to_fill_type(attribute.value))
}
b"foreground" => {
progress_bar_info.foreground = Some(cow_to_fill_type(attribute.value))
}
b"direction" => {
progress_bar_info.direction = Some(cow_to_grow_direction(attribute.value)?)
}
b"text_color" => {
let text = cow_to_str(attribute.value);
label_info.text_color = Color::try_from(text.as_str())?;
progress_bar_info.text_color = Color::try_from(text.as_str())?;
}
b"text_ratio" => label_info.text_ratio = Some(str_into(attribute.value)?),
b"text_ratio" => progress_bar_info.text_ratio = Some(str_into(attribute.value)?),
b"text_alignment" => {
label_info.text_alignment = cow_to_text_alignment(attribute.value)?
progress_bar_info.text_alignment = cow_to_text_alignment(attribute.value)?
}
_ => {
return Err(anyhow::Error::msg(format!(
@ -88,6 +97,6 @@ impl ProgressBarInfo {
}
}
Ok(label_info)
Ok(progress_bar_info)
}
}

View file

@ -537,6 +537,19 @@ pub fn cow_to_text_alignment<'a>(cow: Cow<'a, [u8]>) -> Result<TextAlignment> {
TextAlignment::try_from(text)
}
pub fn cow_to_grow_direction<'a>(cow: Cow<'a, [u8]>) -> Result<GrowDirection> {
let text = cow_to_str(cow);
match text.as_str() {
"left_to_right" => Ok(GrowDirection::LeftToRight),
"bottom_to_top" => Ok(GrowDirection::BottomToTop),
_ => Err(anyhow::Error::msg(format!(
"failed parsing grow direction: {}",
text
))),
}
}
pub fn str_to_vert_align<'a>(cow: Cow<'a, [u8]>) -> Result<VerticalAlign> {
let string = cow_to_str(cow);