A 'Event procedure' is a Tcl procedure that is invoked from GiD when doing some actions. I allows developers to interleave its code with the GiD flow.

The structure of problem_type_name.tcl can optionally implement some of these Tcl prototype procedures (and other user-defined procedures). The procedures listed below are automatically called by GiD. Their syntax corresponds to standard Tcl/Tk language:

Note: is is possible to get the ordered list of Tcl events with the procedure GiD_Info events

Note: default values are category==GENERAL and propietary==gid

To be called a Tcl procedure must be previously registered, using

GiD_RegisterEvent <event_name> <procedure> ?<category>? ?<propietary>?

<event_name> must be a valid event, like GiD_Event_InitProblemtype

<procedure> is the name of our procedure, with appropiated prototype of arguments

Can know the expected arguments with the command GiD_Info events -args <event_name>, or reading this documentation.

Avoid to use as procedure name the event_name, to avoid conflicts. It is recommended for example use a prefix or namespace that suggest that is defined by our own problemtype, etc.)

<category>: GENERAL, PROBLEMTYPE, PLUGIN (default==GENERAL)

used for a better classification.

<propietary>: the name of our problemtype, etc. (according with category, default == gid)

GiD defined events are of category=GENERAL and propietary=gid, these are the default values in case of missing parameters

The category and propietary allow automatically unregister events when unloading a problemtype or plugin.

GiD_UnRegisterEvent <event_name> <procedure> ?<category>? ?<propietary>?

To unregister an event, previously registered with GiD_RegisterEvent

GiD_UnRegisterEvents ?<category>? ?<propietary>?

To unregister all events of a category and propietary

GiD_GetRegisteredEventProcs <event_name> ?<category>? ?<propietary>?

To get the list of procedures registered for the event, category and propietary

GiD_GetRegisteredEventProcsAll <event_name>

To get all procedures registered for an event, without take into accoult the category and propietary.

GiD_GetIsRegisteredEvent <event_name>

Return 1 if there is some procedure registered for the event, 0 else

RaiseEvent_Registered <event_name> <args>

To raise an event from Tcl scripting (providing the appropriated arguments)