void AddSignalsRec (CodeTypeDeclaration type, Stetic.Component comp) { foreach (Stetic.Signal signal in comp.GetSignals ()) { CodeMemberMethod met = new CodeMemberMethod (); met.Name = signal.Handler; met.Attributes = MemberAttributes.Family; met.ReturnType = new CodeTypeReference (signal.SignalDescriptor.HandlerReturnTypeName); foreach (Stetic.ParameterDescriptor pinfo in signal.SignalDescriptor.HandlerParameters) met.Parameters.Add (new CodeParameterDeclarationExpression (pinfo.TypeName, pinfo.Name)); type.Members.Add (met); } foreach (Stetic.Component cc in comp.GetChildren ()) { AddSignalsRec (type, cc); } }
void UpdateBindings (Stetic.Component obj, IType cls) { if (targetObject == null) return; // Remove signals for which there isn't a handler in the class Stetic.SignalCollection objectSignals = obj.GetSignals (); if (objectSignals != null) { Stetic.Signal[] signals = new Stetic.Signal [objectSignals.Count]; objectSignals.CopyTo (signals, 0); foreach (Stetic.Signal signal in signals) { if (FindSignalHandler (cls, signal) == null) { obj.RemoveSignal (signal); } } } // Update children foreach (Stetic.Component ob in obj.GetChildren ()) UpdateBindings (ob, cls); }