82 lines
2.1 KiB
GDScript
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()
|