How update the Signal's Panel in the Editor to show user signals added by gdscript in a tool script?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By newold

I have a custom node (tool) with export variable. This variable is type String/File and when you select any file then a fuction load this file and create some user signals found in the read file.

Is there a way for godot to show me these signals on the signals panel in the Editor?

I know that property_list_changed_notify() updates the inspector panel but not the signals panel

tool
extends CanvasLayer


export(String, FILE, "lang.data") var DATA setget parse_data

var my_data

func parse_data(value):
	DATA = value
	var f = File.new()
	f.open(value, File.READ)
	my_data = JSON.parse(f.get_as_text()).result
	f.close()
	
	# Create user signals from data
	for s in my_data.signals:
		add_user_signal(s)
		
	# Update signals panel in editor
	# HOW??????????????????????????????

I had a look at the sources of the editor node and unfortunately it doesn’t handle the node dock like it does the inspector dock. There’s a missing node_dock->update() call somewhere, or a missing getter that would allow us to retrieve the node dock. Unfortunately, the NodeDock class is native only i.e. it doesn’t register any of its methods for use in gdscript.

I couldn’t find an issue on github on this subject, so I don’t think many people need this feature. You could try opening a new issue. Maybe there is a workaround I don’t know, and the github contributors may help you better.

Bernard Cloutier | 2020-10-09 18:06