MusicTimer/addons/kanban_tasks/data/layout.gd
2024-03-22 17:11:54 +01:00

50 lines
1.0 KiB
GDScript

@tool
extends "kanban_resource.gd"
## Layout data.
# Use `PackedStringArray` because nested typed collections are not supported.
var columns: Array[PackedStringArray] = []:
get:
return columns.duplicate()
set(value):
columns = value
__notify_changed()
func _init(p_columns: Array[PackedStringArray] = []) -> void:
columns = p_columns
super._init()
func to_json() -> Dictionary:
var cols := []
for c in columns:
var col = []
for uuid in c:
col.append(uuid)
cols.append(col)
return {
"columns": cols,
}
func from_json(json: Dictionary) -> void:
if json.has("columns"):
if json["columns"] is Array:
var cols: Array[PackedStringArray] = []
for c in json["columns"]:
var arr := PackedStringArray()
if c is Array:
for id in c:
arr.append(id)
else:
push_warning("Layout data is corrupted.")
cols.append(arr)
columns = cols
else:
push_warning("Layout data is corrupted.")
else:
push_warning("Loading incomplete json data which is missing a list of columns.")