settings implementation

This commit is contained in:
galister
2026-01-07 02:16:43 +09:00
parent 51dbb6f14d
commit ce558855d4
21 changed files with 561 additions and 351 deletions

View File

@@ -1,13 +1,13 @@
use crate::{
assets::AssetPath,
components::{Component, button, tooltip},
components::{button, tooltip, Component},
drawing::Color,
i18n::Translation,
layout::WidgetID,
parser::{
AttribPair, ParserContext, ParserFile, parse_check_f32, parse_check_i32, parse_children, parse_f32,
print_invalid_attrib, process_component,
parse_check_f32, parse_check_i32, parse_children, parse_f32, print_invalid_attrib, process_component,
style::{parse_color_opt, parse_round, parse_style, parse_text_style},
AttribPair, ParserContext, ParserFile,
},
widget::util::WLength,
};
@@ -41,10 +41,14 @@ pub fn parse_component_button<'a>(
let (key, value) = (pair.attrib.as_ref(), pair.value.as_ref());
match key {
"text" => {
translation = Some(Translation::from_raw_text(value));
if !value.is_empty() {
translation = Some(Translation::from_raw_text(value));
}
}
"translation" => {
translation = Some(Translation::from_translation_key(value));
if !value.is_empty() {
translation = Some(Translation::from_translation_key(value));
}
}
"round" => {
parse_round(value, &mut round, ctx.doc_params.globals.get().defaults.rounding_mult);
@@ -77,8 +81,8 @@ pub fn parse_component_button<'a>(
sprite_src = Some(asset_path);
}
}
"tooltip" => tooltip = Some(Translation::from_translation_key(value)),
"tooltip_str" => tooltip = Some(Translation::from_raw_text(value)),
"tooltip" if !value.is_empty() => tooltip = Some(Translation::from_translation_key(value)),
"tooltip_str" if !value.is_empty() => tooltip = Some(Translation::from_raw_text(value)),
"tooltip_side" => {
tooltip_side = match value {
"left" => Some(tooltip::TooltipSide::Left),

View File

@@ -1,9 +1,9 @@
use crate::{
components::{Component, checkbox, radio_group::ComponentRadioGroup},
components::{checkbox, radio_group::ComponentRadioGroup, Component},
i18n::Translation,
layout::WidgetID,
parser::{
AttribPair, Fetchable, ParserContext, parse_check_f32, parse_check_i32, process_component, style::parse_style,
parse_check_f32, parse_check_i32, process_component, style::parse_style, AttribPair, Fetchable, ParserContext,
},
};
@@ -29,10 +29,14 @@ pub fn parse_component_checkbox(
let (key, value) = (pair.attrib.as_ref(), pair.value.as_ref());
match key {
"text" => {
translation = Translation::from_raw_text(value);
if !value.is_empty() {
translation = Translation::from_raw_text(value);
}
}
"translation" => {
translation = Translation::from_translation_key(value);
if !value.is_empty() {
translation = Translation::from_translation_key(value);
}
}
"value" => {
component_value = Some(value.into());