first commit
This commit is contained in:
81
addons/script_spliter/context/menu_tool.gd
Normal file
81
addons/script_spliter/context/menu_tool.gd
Normal file
@@ -0,0 +1,81 @@
|
||||
@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()
|
||||
Reference in New Issue
Block a user