Hide ineffective TextureProgressBar properties in the editor
Radial fill properties only have an effect when using a radial fill mode. Stretch margin properties only have an effet when Nine Patch Stretch is enabled.
This commit is contained in:
parent
cc135c5821
commit
9f1870ec49
3 changed files with 26 additions and 13 deletions
|
@ -34,28 +34,28 @@
|
|||
If [code]true[/code], Godot treats the bar's textures like in [NinePatchRect]. Use the [code]stretch_margin_*[/code] properties like [member stretch_margin_bottom] to set up the nine patch's 3×3 grid. When using a radial [member fill_mode], this setting will enable stretching.
|
||||
</member>
|
||||
<member name="radial_center_offset" type="Vector2" setter="set_radial_center_offset" getter="get_radial_center_offset" default="Vector2(0, 0)">
|
||||
Offsets [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE] or [constant FILL_COUNTER_CLOCKWISE].
|
||||
Offsets [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE].
|
||||
</member>
|
||||
<member name="radial_fill_degrees" type="float" setter="set_fill_degrees" getter="get_fill_degrees" default="360.0">
|
||||
Upper limit for the fill of [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE] or [constant FILL_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is equal to its [code]max_value[/code], the texture fills up to this angle.
|
||||
Upper limit for the fill of [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is equal to its [code]max_value[/code], the texture fills up to this angle.
|
||||
See [member Range.value], [member Range.max_value].
|
||||
</member>
|
||||
<member name="radial_initial_angle" type="float" setter="set_radial_initial_angle" getter="get_radial_initial_angle" default="0.0">
|
||||
Starting angle for the fill of [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE] or [constant FILL_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is equal to its [code]min_value[/code], the texture doesn't show up at all. When the [code]value[/code] increases, the texture fills and tends towards [member radial_fill_degrees].
|
||||
Starting angle for the fill of [member texture_progress] if [member fill_mode] is [constant FILL_CLOCKWISE], [constant FILL_COUNTER_CLOCKWISE], or [constant FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE]. When the node's [code]value[/code] is equal to its [code]min_value[/code], the texture doesn't show up at all. When the [code]value[/code] increases, the texture fills and tends towards [member radial_fill_degrees].
|
||||
</member>
|
||||
<member name="size_flags_vertical" type="int" setter="set_v_size_flags" getter="get_v_size_flags" overrides="Control" enum="Control.SizeFlags" is_bitfield="true" default="1" />
|
||||
<member name="step" type="float" setter="set_step" getter="get_step" overrides="Range" default="1.0" />
|
||||
<member name="stretch_margin_bottom" type="int" setter="set_stretch_margin" getter="get_stretch_margin" default="0">
|
||||
The height of the 9-patch's bottom row. A margin of 16 means the 9-slice's bottom corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders.
|
||||
The height of the 9-patch's bottom row. A margin of 16 means the 9-slice's bottom corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders. Only effective if [member nine_patch_stretch] is [code]true[/code].
|
||||
</member>
|
||||
<member name="stretch_margin_left" type="int" setter="set_stretch_margin" getter="get_stretch_margin" default="0">
|
||||
The width of the 9-patch's left column.
|
||||
The width of the 9-patch's left column. Only effective if [member nine_patch_stretch] is [code]true[/code].
|
||||
</member>
|
||||
<member name="stretch_margin_right" type="int" setter="set_stretch_margin" getter="get_stretch_margin" default="0">
|
||||
The width of the 9-patch's right column.
|
||||
The width of the 9-patch's right column. Only effective if [member nine_patch_stretch] is [code]true[/code].
|
||||
</member>
|
||||
<member name="stretch_margin_top" type="int" setter="set_stretch_margin" getter="get_stretch_margin" default="0">
|
||||
The height of the 9-patch's top row.
|
||||
The height of the 9-patch's top row. Only effective if [member nine_patch_stretch] is [code]true[/code].
|
||||
</member>
|
||||
<member name="texture_over" type="Texture2D" setter="set_over_texture" getter="get_over_texture">
|
||||
[Texture2D] that draws over the progress bar. Use it to add highlights or an upper-frame that hides part of [member texture_progress].
|
||||
|
|
|
@ -74,6 +74,7 @@ void TextureProgressBar::set_nine_patch_stretch(bool p_stretch) {
|
|||
nine_patch_stretch = p_stretch;
|
||||
queue_redraw();
|
||||
update_minimum_size();
|
||||
notify_property_list_changed();
|
||||
}
|
||||
|
||||
bool TextureProgressBar::get_nine_patch_stretch() const {
|
||||
|
@ -615,6 +616,7 @@ void TextureProgressBar::set_fill_mode(int p_fill) {
|
|||
|
||||
mode = (FillMode)p_fill;
|
||||
queue_redraw();
|
||||
notify_property_list_changed();
|
||||
}
|
||||
|
||||
int TextureProgressBar::get_fill_mode() {
|
||||
|
@ -669,6 +671,16 @@ Point2 TextureProgressBar::get_radial_center_offset() {
|
|||
return rad_center_off;
|
||||
}
|
||||
|
||||
void TextureProgressBar::_validate_property(PropertyInfo &p_property) const {
|
||||
if (p_property.name.begins_with("stretch_margin_") && !nine_patch_stretch) {
|
||||
p_property.usage = PROPERTY_USAGE_NO_EDITOR;
|
||||
}
|
||||
|
||||
if (p_property.name.begins_with("radial_") && (mode != FillMode::FILL_CLOCKWISE && mode != FillMode::FILL_COUNTER_CLOCKWISE && mode != FillMode::FILL_CLOCKWISE_AND_COUNTER_CLOCKWISE)) {
|
||||
p_property.usage = PROPERTY_USAGE_NO_EDITOR;
|
||||
}
|
||||
}
|
||||
|
||||
void TextureProgressBar::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_under_texture", "tex"), &TextureProgressBar::set_under_texture);
|
||||
ClassDB::bind_method(D_METHOD("get_under_texture"), &TextureProgressBar::get_under_texture);
|
||||
|
@ -710,8 +722,13 @@ void TextureProgressBar::_bind_methods() {
|
|||
ClassDB::bind_method(D_METHOD("get_nine_patch_stretch"), &TextureProgressBar::get_nine_patch_stretch);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "fill_mode", PROPERTY_HINT_ENUM, "Left to Right,Right to Left,Top to Bottom,Bottom to Top,Clockwise,Counter Clockwise,Bilinear (Left and Right),Bilinear (Top and Bottom),Clockwise and Counter Clockwise"), "set_fill_mode", "get_fill_mode");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "nine_patch_stretch"), "set_nine_patch_stretch", "get_nine_patch_stretch");
|
||||
ADD_GROUP("Radial Fill", "radial_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_initial_angle", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,degrees"), "set_radial_initial_angle", "get_radial_initial_angle");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_fill_degrees", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,degrees"), "set_fill_degrees", "get_fill_degrees");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "radial_center_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_radial_center_offset", "get_radial_center_offset");
|
||||
|
||||
ADD_GROUP("", "");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "nine_patch_stretch"), "set_nine_patch_stretch", "get_nine_patch_stretch");
|
||||
ADD_GROUP("Stretch Margin", "stretch_margin_");
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_left", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_stretch_margin", "get_stretch_margin", SIDE_LEFT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::INT, "stretch_margin_top", PROPERTY_HINT_RANGE, "0,16384,1,suffix:px"), "set_stretch_margin", "get_stretch_margin", SIDE_TOP);
|
||||
|
@ -729,11 +746,6 @@ void TextureProgressBar::_bind_methods() {
|
|||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_over"), "set_tint_over", "get_tint_over");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "tint_progress"), "set_tint_progress", "get_tint_progress");
|
||||
|
||||
ADD_GROUP("Radial Fill", "radial_");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_initial_angle", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider,degrees"), "set_radial_initial_angle", "get_radial_initial_angle");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "radial_fill_degrees", PROPERTY_HINT_RANGE, "0.0,360.0,0.1,slider,degrees"), "set_fill_degrees", "get_fill_degrees");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "radial_center_offset", PROPERTY_HINT_NONE, "suffix:px"), "set_radial_center_offset", "get_radial_center_offset");
|
||||
|
||||
BIND_ENUM_CONSTANT(FILL_LEFT_TO_RIGHT);
|
||||
BIND_ENUM_CONSTANT(FILL_RIGHT_TO_LEFT);
|
||||
BIND_ENUM_CONSTANT(FILL_TOP_TO_BOTTOM);
|
||||
|
|
|
@ -43,6 +43,7 @@ class TextureProgressBar : public Range {
|
|||
protected:
|
||||
static void _bind_methods();
|
||||
void _notification(int p_what);
|
||||
void _validate_property(PropertyInfo &p_property) const;
|
||||
|
||||
public:
|
||||
enum FillMode {
|
||||
|
|
Loading…
Reference in a new issue