Slider: show_value, hide tooltip on button press
[skip ci]
This commit is contained in:
@@ -72,8 +72,8 @@
|
|||||||
<div flex_direction="column" gap="8">
|
<div flex_direction="column" gap="8">
|
||||||
<label text="height 16" weight="bold" />
|
<label text="height 16" weight="bold" />
|
||||||
|
|
||||||
<label text="range 0-100 value 25" />
|
<label text="range 0-100 value 25, no text" />
|
||||||
<Slider width="200" height="16" min_value="0" max_value="100" value="25" />
|
<Slider show_value="0" width="200" height="16" min_value="0" max_value="100" value="25" />
|
||||||
|
|
||||||
<label text="range 10-20 value 15" />
|
<label text="range 10-20 value 15" />
|
||||||
<Slider width="200" height="16" min_value="10" max_value="20" value="15" />
|
<Slider width="200" height="16" min_value="10" max_value="20" value="15" />
|
||||||
|
|||||||
@@ -298,6 +298,10 @@ _Needs to be bigger than `min_value`_
|
|||||||
|
|
||||||
_Initial slider value_
|
_Initial slider value_
|
||||||
|
|
||||||
|
`show_value`: "1" | "0"
|
||||||
|
|
||||||
|
_Set to 0 if you don't want to display value text in the slider handle_
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Checkbox component
|
## Checkbox component
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ impl ValuesMinMax {
|
|||||||
pub struct Params {
|
pub struct Params {
|
||||||
pub style: taffy::Style,
|
pub style: taffy::Style,
|
||||||
pub values: ValuesMinMax,
|
pub values: ValuesMinMax,
|
||||||
|
pub show_value: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct State {
|
struct State {
|
||||||
@@ -80,8 +81,8 @@ struct State {
|
|||||||
|
|
||||||
struct Data {
|
struct Data {
|
||||||
body_node: taffy::NodeId,
|
body_node: taffy::NodeId,
|
||||||
slider_handle_rect_id: WidgetID, // Rectangle
|
slider_handle_rect_id: WidgetID, // Rectangle
|
||||||
slider_text_id: WidgetID, // Text
|
slider_text_id: Option<WidgetID>, // Text
|
||||||
slider_handle_id: WidgetID,
|
slider_handle_id: WidgetID,
|
||||||
slider_handle_node_id: taffy::NodeId,
|
slider_handle_node_id: taffy::NodeId,
|
||||||
}
|
}
|
||||||
@@ -226,7 +227,9 @@ impl State {
|
|||||||
common.alterables.mark_dirty(data.slider_handle_node_id);
|
common.alterables.mark_dirty(data.slider_handle_node_id);
|
||||||
common.alterables.mark_redraw();
|
common.alterables.mark_redraw();
|
||||||
|
|
||||||
if let Some(mut label) = common.state.widgets.get_as::<WidgetLabel>(data.slider_text_id) {
|
if let Some(slider_text_id) = data.slider_text_id
|
||||||
|
&& let Some(mut label) = common.state.widgets.get_as::<WidgetLabel>(slider_text_id)
|
||||||
|
{
|
||||||
Self::update_text(common, &mut label, self.values.value);
|
Self::update_text(common, &mut label, self.values.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,29 +474,34 @@ pub fn construct(ess: &mut ConstructEssentials, params: Params) -> anyhow::Resul
|
|||||||
|
|
||||||
let globals = ess.layout.state.globals.clone();
|
let globals = ess.layout.state.globals.clone();
|
||||||
|
|
||||||
let (slider_text, _) = ess.layout.add_child(
|
let slider_text: Option<(WidgetPair, taffy::NodeId)> = if params.show_value {
|
||||||
slider_handle.id,
|
let pair = ess.layout.add_child(
|
||||||
WidgetLabel::create(
|
slider_handle.id,
|
||||||
&mut globals.get(),
|
WidgetLabel::create(
|
||||||
WidgetLabelParams {
|
&mut globals.get(),
|
||||||
content: Translation::default(),
|
WidgetLabelParams {
|
||||||
style: TextStyle {
|
content: Translation::default(),
|
||||||
color: Some(drawing::Color::new(0.0, 0.0, 0.0, 0.75)), // always black
|
style: TextStyle {
|
||||||
weight: Some(FontWeight::Bold),
|
color: Some(drawing::Color::new(0.0, 0.0, 0.0, 0.75)), // always black
|
||||||
align: Some(HorizontalAlign::Center),
|
weight: Some(FontWeight::Bold),
|
||||||
..Default::default()
|
align: Some(HorizontalAlign::Center),
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
),
|
||||||
),
|
Default::default(),
|
||||||
Default::default(),
|
)?;
|
||||||
)?;
|
Some(pair)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
|
|
||||||
let data = Rc::new(Data {
|
let data = Rc::new(Data {
|
||||||
slider_handle_rect_id: slider_handle_rect.id,
|
slider_handle_rect_id: slider_handle_rect.id,
|
||||||
body_node: slider_body_node,
|
body_node: slider_body_node,
|
||||||
slider_handle_id: slider_handle.id,
|
slider_handle_id: slider_handle.id,
|
||||||
slider_handle_node_id,
|
slider_handle_node_id,
|
||||||
slider_text_id: slider_text.id,
|
slider_text_id: slider_text.map(|s| s.0.id),
|
||||||
});
|
});
|
||||||
|
|
||||||
let state = Rc::new(RefCell::new(state));
|
let state = Rc::new(RefCell::new(state));
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
components::{Component, slider},
|
components::{Component, slider},
|
||||||
layout::WidgetID,
|
layout::WidgetID,
|
||||||
parser::{AttribPair, ParserContext, parse_check_f32, process_component, style::parse_style},
|
parser::{AttribPair, ParserContext, parse_check_f32, parse_check_i32, process_component, style::parse_style},
|
||||||
widget::ConstructEssentials,
|
widget::ConstructEssentials,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -14,6 +14,7 @@ pub fn parse_component_slider(
|
|||||||
let mut max_value = 1.0;
|
let mut max_value = 1.0;
|
||||||
let mut initial_value = 0.5;
|
let mut initial_value = 0.5;
|
||||||
let mut step = 1.0;
|
let mut step = 1.0;
|
||||||
|
let mut show_value = 1;
|
||||||
|
|
||||||
let style = parse_style(attribs);
|
let style = parse_style(attribs);
|
||||||
|
|
||||||
@@ -32,6 +33,9 @@ pub fn parse_component_slider(
|
|||||||
"step" => {
|
"step" => {
|
||||||
parse_check_f32(value, &mut step);
|
parse_check_f32(value, &mut step);
|
||||||
}
|
}
|
||||||
|
"show_value" => {
|
||||||
|
parse_check_i32(value, &mut show_value);
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -49,6 +53,7 @@ pub fn parse_component_slider(
|
|||||||
value: initial_value,
|
value: initial_value,
|
||||||
step,
|
step,
|
||||||
},
|
},
|
||||||
|
show_value: show_value != 0,
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user