static int set_ListChanged(IntPtr L)
    {
        try
        {
            Newtonsoft.Json.Linq.JContainer obj = (Newtonsoft.Json.Linq.JContainer)ToLua.CheckObject(L, 1, typeof(Newtonsoft.Json.Linq.JContainer));
            EventObject arg0 = null;

            if (LuaDLL.lua_isuserdata(L, 2) != 0)
            {
                arg0 = (EventObject)ToLua.ToObject(L, 2);
            }
            else
            {
                return(LuaDLL.luaL_throw(L, "The event 'Newtonsoft.Json.Linq.JContainer.ListChanged' can only appear on the left hand side of += or -= when used outside of the type 'Newtonsoft.Json.Linq.JContainer'"));
            }

            if (arg0.op == EventOp.Add)
            {
                System.ComponentModel.ListChangedEventHandler ev = (System.ComponentModel.ListChangedEventHandler)arg0.func;
                obj.ListChanged += ev;
            }
            else if (arg0.op == EventOp.Sub)
            {
                System.ComponentModel.ListChangedEventHandler ev = (System.ComponentModel.ListChangedEventHandler)arg0.func;
                obj.ListChanged -= ev;
            }

            return(0);
        }
        catch (Exception e)
        {
            return(LuaDLL.toluaL_exception(L, e));
        }
    }
Esempio n. 2
0
 private void SubscribeToChildStatusChanged(object proxy, string propertyName, object newValue)
 {
     lock (_StatusChangedEventHandlersLock)
     {
         if (!_StatusChangedEventHandlers.ContainsKey(propertyName))
         {
             if (newValue is IChangeTrackable newChild)
             {
                 EventHandler newHandler = (sender, e) => SetAndRaiseStatusChanged(proxy, parents: new List <object> {
                     proxy
                 }, setStatusEvenIfStatsAddedOrDeleted: false);
                 newChild.StatusChanged += newHandler;
                 _StatusChangedEventHandlers.Add(propertyName, newHandler);
                 return;
             }
             if (newValue is System.ComponentModel.IBindingList newCollectionChild)
             {
                 System.ComponentModel.ListChangedEventHandler newHandler = (sender, e) => SetAndRaiseStatusChanged(proxy, parents: new List <object> {
                     proxy
                 }, setStatusEvenIfStatsAddedOrDeleted: false);
                 newCollectionChild.ListChanged += newHandler;
                 _StatusChangedEventHandlers.Add(propertyName, newHandler);
             }
         }
     }
 }
        private void SubscribeToChildStatusChanged(object proxy, string propertyName, object newValue)
        {
            void Handler(object sender)
            {
                SetAndRaiseStatusChanged(proxy, parents: new List <object> {
                    proxy
                }, setStatusEvenIfStatsAddedOrDeleted: false);
                if (sender is IRevertibleChangeTrackingInternal trackable && trackable.IsChanged(new List <object> {
                    proxy
                }) is bool isChanged && (isChanged && _ChangedComplexOrCollectionProperties.Add(propertyName) || !isChanged && _ChangedComplexOrCollectionProperties.Remove(propertyName)))
                {
                    RaiseChangePropertiesChanged(proxy);
                }
            }

            lock (_StatusChangedEventHandlersLock)
            {
                if (!_StatusChangedEventHandlers.ContainsKey(propertyName))
                {
                    if (newValue is IChangeTrackable newChild)
                    {
                        EventHandler newHandler = (sender, e) => Handler(newValue);
                        newChild.StatusChanged += newHandler;
                        _StatusChangedEventHandlers.Add(propertyName, newHandler);
                        return;
                    }
                    if (newValue is System.ComponentModel.IBindingList newCollectionChild)
                    {
                        System.ComponentModel.ListChangedEventHandler newHandler = (sender, e) => Handler(newValue);
                        newCollectionChild.ListChanged += newHandler;
                        _StatusChangedEventHandlers.Add(propertyName, newHandler);
                    }
                }
            }
        }
Esempio n. 4
0
 private void SubscribeToChildStatusChanged(object proxy, string propertyName, object newValue)
 {
     if (!_StatusChangedEventHandlers.ContainsKey(propertyName))
     {
         var newChild = newValue as IChangeTrackable;
         if (newChild != null)
         {
             EventHandler newHandler = (sender, e) => SetAndRaiseStatusChanged(proxy, false);
             newChild.StatusChanged += newHandler;
             _StatusChangedEventHandlers.Add(propertyName, newHandler);
             return;
         }
         var newCollictionChild = newValue as System.ComponentModel.IBindingList;
         if (newCollictionChild != null)
         {
             System.ComponentModel.ListChangedEventHandler newHandler = (sender, e) => SetAndRaiseStatusChanged(proxy, false);
             newCollictionChild.ListChanged += newHandler;
             _StatusChangedEventHandlers.Add(propertyName, newHandler);
         }
     }
 }
Esempio n. 5
0
        private void SubscribeToChildStatusChanged(object proxy, string propertyName, object newValue)
        {
            if (!_StatusChangedEventHandlers.ContainsKey(propertyName))
            {
                if (newValue.DoIfType <IChangeTrackable>(newChild =>
                {
                    EventHandler newHandler = (sender, e) => SetAndRaiseStatusChanged(proxy, false);
                    newChild.StatusChanged += newHandler;
                    _StatusChangedEventHandlers.Add(propertyName, newHandler);
                }))
                {
                    return;
                }

                newValue.DoIfType <System.ComponentModel.IBindingList>(newCollectionChild =>
                {
                    System.ComponentModel.ListChangedEventHandler newHandler = (sender, e) => SetAndRaiseStatusChanged(proxy, false);
                    newCollectionChild.ListChanged += newHandler;
                    _StatusChangedEventHandlers.Add(propertyName, newHandler);
                });
            }
        }
Esempio n. 6
0
    public System.ComponentModel.ListChangedEventHandler System_ComponentModel_ListChangedEventHandler(LuaFunction func, LuaTable self, bool flag)
    {
        if (func == null)
        {
            System.ComponentModel.ListChangedEventHandler fn = delegate(object param0, System.ComponentModel.ListChangedEventArgs param1) { };
            return(fn);
        }

        if (!flag)
        {
            System_ComponentModel_ListChangedEventHandler_Event target = new System_ComponentModel_ListChangedEventHandler_Event(func);
            System.ComponentModel.ListChangedEventHandler       d      = target.Call;
            target.method = d.Method;
            return(d);
        }
        else
        {
            System_ComponentModel_ListChangedEventHandler_Event target = new System_ComponentModel_ListChangedEventHandler_Event(func, self);
            System.ComponentModel.ListChangedEventHandler       d      = target.CallWithSelf;
            target.method = d.Method;
            return(d);
        }
    }
Esempio n. 7
0
 void Push_System_ComponentModel_ListChangedEventHandler(IntPtr L, System.ComponentModel.ListChangedEventHandler o)
 {
     ToLua.Push(L, o);
 }
Esempio n. 8
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="dispatcher"></param>
 /// <param name="action"></param>
 public ListChangedWrapperEventData(Colosoft.Threading.IDispatcher dispatcher, System.ComponentModel.ListChangedEventHandler action)
 {
     Dispatcher = dispatcher;
     Action     = action;
 }