Files
uarep-ctl/scenes/button-flat/nine-patch-button.gd

72 lines
1.9 KiB
GDScript

@tool
extends PanelContainer
var save_modulate: Color
func set_text(val: String): $button.set_text(val)
func set_pressed(val: bool): $button.set_pressed(val)
func set_disabled(val: bool): disabled = val
func button_connect(button_signal: String, proc: Callable): $button.connect(button_signal, proc)
func get_text(): return $button.get_text()
func is_pressed(): return $button.is_pressed()
func is_toggle_mode(): return $button.is_toggle_mode()
@export var texture_state0: Texture2D = preload('res://data/кнопка-квадрат-0.png'):
set(val): $state.set_texture(val)
@export var texture_state1: Texture2D = preload('res://data/кнопка-квадрат-1.png'):
set(val): $state.set_texture(val)
@export var text: String = '':
set(val): $button.set_text(val)
get: return $button.get_text()
@export var disabled: bool = false:
set(val):
$button.set_disabled(val)
$back.disabled = val
if val:
save_modulate = $state.modulate
$state.modulate *= Color(1.0, 1.0, 1.0, 0.5)
else:
$state.modulate = save_modulate
get: return $button.disabled
@export var pressed: bool = false:
set(val): $button.set_pressed(val)
get: return $button.is_pressed()
@export var toggle_mode: bool = false:
set(val):
if is_inside_tree():
$button.set_toggle_mode(val)
get: return $button.is_toggle_mode()
func _on_resized() -> void:
$back.scale = size
$back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0))
func _enter_tree() -> void:
$back.scale = size
$back.material.set('shader_parameter/scale', size / Vector2(20.0, 20.0))
save_modulate = modulate
func set_toggle_mode (val: bool):
if is_inside_tree():
$button.set_toggle_mode(val)
func _on_button_toggled(val: bool):
if val: $state.set_texture(texture_state1)
else: $state.set_texture(texture_state0)