Example #1
0
        void UpdateBindings(Stetic.Component obj, ITypeSymbol cls)
        {
            if (targetObject == null || cls == 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);
            }
        }
Example #2
0
        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);
            }
        }