Files
2025-07-20 10:34:21 +02:00

82 lines
2.1 KiB
GDScript

@tool
extends Window
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Script Spliter
# https://github.com/CodeNameTwister/Script-Spliter
#
# Script Spliter addon for godot 4
# author: "Twister"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
@export var _container : Node
@export var _custom_options : Control
var _plugin : Object = null
func _init_1() -> void:
if _container and _plugin:
var columns : int = _plugin.call(&"get_split_columns")
var rows : int = _plugin.call(&"get_split_rows")
set_split_value(columns, rows)
func _ready() -> void:
if _custom_options:
_custom_options.visible = false
if !visibility_changed.is_connected(_on_visibility_change):
visibility_changed.connect(_on_visibility_change)
_init_1()
func set_plugin(current_plugin : Object) -> void:
_plugin = current_plugin
func _on_visibility_change() -> void:
if !visible: return
if !_plugin:
return
_init_1()
func enable_options() -> void:
var custom : CheckBox = _container.get_child(_container.get_child_count() - 1)
for c : Node in _container.get_children():
if c is CheckBox:
c.button_pressed = false
_custom_options.visible = true
custom.button_pressed = true
func set_split_value(columns : int, rows : int) -> void:
var current : Node = null
var custom : CheckBox = _container.get_child(_container.get_child_count() - 1)
for c : Node in _container.get_children():
if c is CheckBox:
if c.columns == columns and c.rows == rows:
current = c
c.button_pressed = true
continue
c.button_pressed = false
if columns < 2 and rows < 2:
current = _container.get_child(0)
if current is CheckBox:
current.button_pressed = true
else:
current = null
_custom_options.visible = current == null
custom.button_pressed = _custom_options.visible
_custom_options.set_values(columns, rows)
func _on_ok_pressed() -> void:
var columns : int = _custom_options.get_columns_value()
var rows : int = _custom_options.get_rows_value()
if !_plugin:
push_error("[ERROR] Can not set split type!")
else:
_plugin.call(&"set_type_split", columns, rows)
hide()
func _on_cancel_pressed() -> void:
hide()