Exemplo n.º 1
0
        private void addGenericCallback(MDagPath dagPath, MDagMessage.DagMessage msg, string cbName)
        {
            if (dagPath == null || MDagPath.getCPtr(dagPath).Handle == IntPtr.Zero)
            {
                // we don't have genericCallback
                // MDagMessage.addDagCallback(DagMessage, MDagMessage::MMessageParentChildFunction)
                try
                {
                    switch (msg)
                    {
                    case MDagMessage.DagMessage.kChildAdded:
                        MDagMessage.ChildAdded += userDAGGenericCB;
                        break;

                    case MDagMessage.DagMessage.kChildRemoved:
                        MDagMessage.ChildRemoved += userDAGGenericCB;
                        break;

                    case MDagMessage.DagMessage.kChildReordered:
                        MDagMessage.ChildReordered += userDAGGenericCB;
                        break;

                    case MDagMessage.DagMessage.kInstanceAdded:
                        MDagMessage.InstanceAdded += userDAGGenericCB;
                        break;

                    case MDagMessage.DagMessage.kInstanceRemoved:
                        MDagMessage.InstanceRemoved += userDAGGenericCB;
                        break;

                    case MDagMessage.DagMessage.kParentAdded:
                        MDagMessage.ParentAdded += userDAGGenericCB;
                        break;

                    case MDagMessage.DagMessage.kParentRemoved:
                        MDagMessage.ParentRemoved += userDAGGenericCB;
                        break;

                    default:
                        throw new ArgumentException("Failed to add generic callback", "msg");
                    }

                    string info = string.Format("Adding a callback for {0} on all nodes", cbName);
                    MGlobal.displayInfo(info);
                }
                catch (System.Exception)
                {
                    string err = string.Format("Could not add callback to {0}", dagPath.fullPathName);
                    MGlobal.displayError(err);
                }
            }
            else
            {
                string msgName = "Unknown";
                try
                {
                    // we doesn't support obsolete
                    // MDagMessage.addDagCallback(DagMessage, MDagMessage::MMessageParentChildFunction)
                    switch (msg)
                    {
                    case MDagMessage.DagMessage.kChildAdded:
                        msgName = "ChildAdded";
                        dagPath.ChildAddedDagPath += userDAGChildAddedCB;
                        break;

                    case MDagMessage.DagMessage.kChildRemoved:
                        msgName = "ChildRemoved";
                        dagPath.ChildRemovedDagPath += userDAGChildRemovedCB;
                        break;

                    case MDagMessage.DagMessage.kChildReordered:
                        msgName = "ChildRecordered";
                        dagPath.ChildReorderedDagPath += userDAGChildRemovedCB;
                        break;

                    case MDagMessage.DagMessage.kInstanceAdded:
                        msgName = "InstanceAdded";
                        dagPath.InstanceAddedDagPath += userDAGChildAddedCB;
                        break;

                    case MDagMessage.DagMessage.kInstanceRemoved:
                        msgName = "InstanceRemoved";
                        dagPath.InstanceRemovedDagPath += userDAGInstanceRemovedCB;
                        break;

                    case MDagMessage.DagMessage.kParentAdded:
                        msgName = "ParentAdded";
                        dagPath.ParentAddedDagPath += userDAGParentAddedCB;
                        break;

                    case MDagMessage.DagMessage.kParentRemoved:
                        msgName = "ParentRemoved";
                        dagPath.ParentRemovedDagPath += userDAGParentRemovedCB;
                        break;

                    default:
                        throw new ArgumentException("Failed to add generic callback", "msg");
                    }
                    string info = string.Format("Adding a callback listening msg {0} for {1} on {2}",
                                                msgName, cbName, dagPath.fullPathName);
                    MGlobal.displayInfo(info);
                }
                catch (System.Exception)
                {
                    string err = string.Format("Could not add callback listening msg {0} to {1}",
                                               msgName, dagPath.fullPathName);
                    throw new ApplicationException(err);
                }
            }
        }