public static void DetachSigEventHandler(this Sig cue, UnifiedSigEventHandler handler)
        {
            eSigEvent eventType;

            switch (cue.Type)
            {
            case eSigType.Bool:
                eventType = eSigEvent.BoolChange;
                break;

            case eSigType.UShort:
                eventType = cue.IsInput ? eSigEvent.UShortInputRamping : eSigEvent.UShortChange;
                break;

            case eSigType.String:
                eventType = eSigEvent.StringChange;
                break;

            default:
                eventType = eSigEvent.NA;
                break;
            }

            cue.DetachSigEventHandler(handler, eventType);
        }
        public static void AttachSigEventHandler(this Sig cue, UnifiedSigEventHandler handler, eSigEvent eventType)
        {
            var uuo = cue.UserObject as UnifiedSigUserObject;

            if (uuo == null)
            {
                uuo = new UnifiedSigUserObject {
                    UserObject = cue.UserObject
                };
                cue.UserObject = uuo;
            }
            if (uuo.UnifiedSigEvents == null)
            {
                uuo.UnifiedSigEvents = new List <UnifiedSigEventInfo> ();
            }

            var ucei = new UnifiedSigEventInfo {
                eSigEvent = eventType, SigChange = handler
            };

            uuo.UnifiedSigEvents.Add(ucei);
        }
        public static void DetachSigEventHandler(this Sig cue, UnifiedSigEventHandler handler, eSigEvent eventType)
        {
            var uuo = cue.UserObject as UnifiedSigUserObject;

            if (uuo == null || uuo.UnifiedSigEvents == null)
            {
                return;
            }

            var ucei = uuo.UnifiedSigEvents.FirstOrDefault(u => u.eSigEvent == eventType && u.SigChange == handler);

            if (ucei == null)
            {
                return;
            }

            uuo.UnifiedSigEvents.Remove(ucei);

            if (uuo.UnifiedSigEvents.Count == 0)
            {
                cue.UserObject = uuo.UserObject;
            }
        }
 public void AttachStringEventHandler(string name, UnifiedSigEventHandler handler, eSigEvent eventType)
 {
     StringOutput[name].AttachSigEventHandler(handler, eventType);
 }
 public void AttachStringEventHandler(string name, UnifiedSigEventHandler handler)
 {
     AttachStringEventHandler(name, handler, eSigEvent.StringChange);
 }
 public static void DetachSigEventHandler <T> (this SigCollectionBase <T> coll, string name, UnifiedSigEventHandler handler) where T : Sig
 {
     coll[name].DetachSigEventHandler(handler);
 }
 public static void DetachSigEventHandler(this UShortInputSig cue, UnifiedSigEventHandler handler)
 {
     cue.DetachSigEventHandler(handler, eSigEvent.UShortInputRamping);
 }
 public static void DetachSigEventHandler(this UShortOutputSig cue, UnifiedSigEventHandler handler)
 {
     cue.DetachSigEventHandler(handler, eSigEvent.UShortChange);
 }
 public void AttachUShortRampEventHandler(uint index, UnifiedSigEventHandler handler, eSigEvent eventType)
 {
     UShortInput[index].AttachSigEventHandler(handler, eventType);
 }
 public void AttachUShortRampEventHandler(uint index, UnifiedSigEventHandler handler)
 {
     AttachUShortRampEventHandler(index, handler, eSigEvent.UShortInputRamping);
 }
 public void AttachUShortEventHandler(string name, UnifiedSigEventHandler handler)
 {
     AttachBooleanEventHandler(name, handler, eSigEvent.UShortChange);
 }
 public void AttachUShortEventHandler(uint index, UnifiedSigEventHandler handler)
 {
     AttachUShortEventHandler(index, handler, eSigEvent.UShortChange);
 }
 public void AttachBooleanEventHandler(uint index, UnifiedSigEventHandler handler, eSigEvent eventType)
 {
     BooleanOutput[index].AttachSigEventHandler(handler, eventType);
 }
 public void AttachBooleanEventHandler(uint index, UnifiedSigEventHandler handler)
 {
     AttachBooleanEventHandler(index, handler, eSigEvent.BoolChange);
 }
 public static void AttachSigEventHandler <T> (this SigCollectionBase <T> coll, uint index, UnifiedSigEventHandler handler, eSigEvent eventType) where T : Sig
 {
     coll[index].AttachSigEventHandler(handler, eventType);
 }
 public static void AttachSigEventHandler <T> (this SigCollectionBase <T> coll, string name, UnifiedSigEventHandler handler, eSigEvent eventType) where T : Sig
 {
     coll[name].AttachSigEventHandler(handler, eventType);
 }
 public void AttachUShortRampEventHandler(string name, UnifiedSigEventHandler handler)
 {
     AttachUShortRampEventHandler(name, handler, eSigEvent.UShortInputRamping);
 }
 public static void DetachSigEventHandler(this BoolOutputSig cue, UnifiedSigEventHandler handler)
 {
     cue.DetachSigEventHandler(handler, eSigEvent.BoolChange);
 }
 public void AttachUShortRampEventHandler(string name, UnifiedSigEventHandler handler, eSigEvent eventType)
 {
     UShortInput[name].AttachSigEventHandler(handler, eventType);
 }
 public static void DetachSigEventHandler(this StringOutputSig cue, UnifiedSigEventHandler handler)
 {
     cue.DetachSigEventHandler(handler, eSigEvent.StringChange);
 }
 public void AttachStringEventHandler(uint index, UnifiedSigEventHandler handler)
 {
     AttachStringEventHandler(index, handler, eSigEvent.StringChange);
 }
 public void AttachStringEventHandler(uint index, UnifiedSigEventHandler handler, eSigEvent eventType)
 {
     StringOutput[index].AttachSigEventHandler(handler, eventType);
 }
 public static void DetachSigEventHandler <T> (this SigCollectionBase <T> coll, uint index, UnifiedSigEventHandler handler) where T : Sig
 {
     coll[index].DetachSigEventHandler(handler);
 }