예제 #1
0
        internal void UninstallCore(CustomNodeManager customNodeManager, PackageLoader packageLoader, IPreferences prefs)
        {
            if (LoadedAssemblies.Any())
            {
                MarkForUninstall(prefs);
                return;
            }

            try
            {
                LoadedCustomNodes.ToList().ForEach(x => customNodeManager.Remove(x.FunctionId));
                if (BuiltInPackage)
                {
                    LoadState.SetAsUnloaded();
                    RaisePropertyChanged(nameof(LoadState));

                    if (!prefs.PackageDirectoriesToUninstall.Contains(RootDirectory))
                    {
                        prefs.PackageDirectoriesToUninstall.Add(RootDirectory);
                    }
                }
                else
                {
                    packageLoader.Remove(this);
                    Directory.Delete(RootDirectory, true);
                }
            }
            catch (Exception e)
            {
                Log("Exception when attempting to uninstall the package " + Name + " from " + RootDirectory);
                Log(e.GetType() + ": " + e.Message);
                throw;
            }
        }
예제 #2
0
 private void LoadCustomNodesIntoDynamo(CustomNodeManager loader, bool isTestMode)
 {
     foreach (var info in loader.AddUninitializedCustomNodesInPath(CustomNodeDirectory, isTestMode))
     {
         LoadedCustomNodes.Add(info);
     }
 }
예제 #3
0
        internal void RefreshCustomNodesFromDirectory(CustomNodeManager customNodeManager, bool isTestMode)
        {
            LoadedCustomNodes.Clear();

            foreach (var x in customNodeManager.AddUninitializedCustomNodesInPath(CustomNodeDirectory, isTestMode))
            {
                LoadedCustomNodes.Add(x);
            }
        }
예제 #4
0
파일: Package.cs 프로젝트: whztt07/Dynamo
        private bool IsCustomNodeFromPackageInUse(DynamoModel dynamoModel)
        {
            // get all of the function ids from the custom nodes in this package
            var guids = LoadedCustomNodes.Select(x => x.Guid);

            // check if any of the custom nodes is in a workspace
            return(dynamoModel.AllNodes.Where(x => x is Function)
                   .Cast <Function>()
                   .Any(x => guids.Contains(x.Definition.FunctionId)));
        }
예제 #5
0
파일: Package.cs 프로젝트: vtaran/Dynamo
        public bool CustomNodeInWorkspace()
        {
            // get all of the function ids from the custom nodes in this package
            var guids = LoadedCustomNodes.Select(x => x.Guid);

            // check if any of the custom nodes is in a workspace
            return(dynSettings.Controller.DynamoModel.AllNodes.Where(x => x is Function)
                   .Cast <Function>()
                   .Any(x => guids.Contains(x.Definition.FunctionId)));
        }
예제 #6
0
        private bool IsCustomNodeFromPackageInUse(DynamoModel dynamoModel)
        {
            // get all of the function ids from the custom nodes in this package
            var guids = LoadedCustomNodes.Select(x => x.FunctionId);

            // check if any of the custom nodes is in a workspace
            return
                (dynamoModel.Workspaces.SelectMany(ws => ws.Nodes.OfType <Function>())
                 .Any(x => guids.Contains(x.Definition.FunctionId)));
        }
예제 #7
0
        private void LoadCustomNodesIntoDynamo(LoadPackageParams loadPackageParams)
        {
            var loader     = loadPackageParams.CustomNodeManager;
            var isTestMode = loadPackageParams.IsTestMode;

            foreach (var info in loader.AddUninitializedCustomNodesInPath(CustomNodeDirectory, isTestMode))
            {
                LoadedCustomNodes.Add(info);
            }
        }
예제 #8
0
        private bool IsWorkspaceFromPackageOpen(DynamoModel dynamoModel)
        {
            // get all of the function ids from the custom nodes in this package
            var guids = new HashSet <Guid>(LoadedCustomNodes.Select(x => x.FunctionId));

            return
                (dynamoModel.Workspaces.OfType <CustomNodeWorkspaceModel>()
                 .Select(x => x.CustomNodeId)
                 .Any(guids.Contains));
        }
예제 #9
0
        public bool InUse()
        {
            // get all of the function ids from the custom nodes in this package
            var guids = LoadedCustomNodes.Select(x => x.Guid);

            // check if any of the custom nodes is in a workspace
            var customNodeInUse = dynSettings.Controller.DynamoViewModel.AllNodes.Where(x => x is dynFunction)
                                  .Cast <dynFunction>()
                                  .Any(x => guids.Contains(x.Definition.FunctionId));

            return((LoadedTypes.Any() || customNodeInUse) && Loaded);
        }
예제 #10
0
파일: Package.cs 프로젝트: whztt07/Dynamo
        private bool IsWorkspaceFromPackageOpen(DynamoModel dynamoModel)
        {
            // get all of the function ids from the custom nodes in this package
            var guids = LoadedCustomNodes.Select(x => x.Guid);

            return
                (dynamoModel.Workspaces.Any(
                     x =>
            {
                var def = dynamoModel.CustomNodeManager.GetDefinitionFromWorkspace(x);
                return def != null && guids.Contains(def.FunctionId);
            }));
        }
예제 #11
0
파일: Package.cs 프로젝트: vtaran/Dynamo
        public bool WorkspaceOpen()
        {
            // get all of the function ids from the custom nodes in this package
            var guids = LoadedCustomNodes.Select(x => x.Guid);

            return
                (dynSettings.Controller.DynamoModel.Workspaces.Any(
                     x =>
            {
                var def = dynSettings.CustomNodeManager.GetDefinitionFromWorkspace(x);
                return def != null && guids.Contains(def.FunctionId);
            }));
        }
예제 #12
0
        internal void RefreshCustomNodesFromDirectory(CustomNodeManager customNodeManager, bool isTestMode)
        {
            LoadedCustomNodes.Clear();

            var reloadedCustomNodes = customNodeManager.AddUninitializedCustomNodesInPath(
                CustomNodeDirectory,
                isTestMode,
                new PackageInfo(Name, new Version(versionName)));

            foreach (var x in reloadedCustomNodes)
            {
                LoadedCustomNodes.Add(x);
            }
        }
예제 #13
0
파일: Package.cs 프로젝트: hipigod/Dynamo
 internal void UninstallCore()
 {
     try
     {
         LoadedCustomNodes.ToList().ForEach(x => dynamoModel.CustomNodeManager.RemoveFromDynamo(x.Guid));
         dynamoModel.Loader.PackageLoader.LocalPackages.Remove(this);
         Directory.Delete(this.RootDirectory, true);
     }
     catch (Exception e)
     {
         dynamoModel.Logger.Log("Exception when attempting to uninstall the package " + this.Name + " from " + this.RootDirectory);
         dynamoModel.Logger.Log(e.GetType() + ": " + e.Message);
         throw e;
     }
 }
예제 #14
0
파일: Package.cs 프로젝트: vtaran/Dynamo
        public void Load()
        {
            try
            {
                GetAssemblies().Select(DynamoLoader.LoadNodesFromAssembly).SelectMany(x => x).ToList().ForEach(x => LoadedTypes.Add(x));
                DynamoLoader.LoadCustomNodes(CustomNodeDirectory).ForEach(x => LoadedCustomNodes.Add(x));

                Loaded = true;
            }
            catch (Exception e)
            {
                dynSettings.DynamoLogger.Log("Exception when attempting to load package " + this.Name + " from " + this.RootDirectory);
                dynSettings.DynamoLogger.Log(e.GetType() + ": " + e.Message);
            }
        }
예제 #15
0
        internal void UninstallCore(CustomNodeManager customNodeManager, PackageLoader packageLoader, IPreferences prefs)
        {
            if (LoadedAssemblies.Any())
            {
                MarkForUninstall(prefs);
                return;
            }

            try
            {
                LoadedCustomNodes.ToList().ForEach(x => customNodeManager.Remove(x.FunctionId));
                packageLoader.Remove(this);
                Directory.Delete(RootDirectory, true);
            }
            catch (Exception e)
            {
                Log("Exception when attempting to uninstall the package " + Name + " from " + RootDirectory);
                Log(e.GetType() + ": " + e.Message);
                throw;
            }
        }
예제 #16
0
파일: Package.cs 프로젝트: whztt07/Dynamo
        internal void UninstallCore(CustomNodeManager customNodeManager, PackageLoader packageLoader, IPreferences prefs, ILogger logger)
        {
            if (this.LoadedAssemblies.Any())
            {
                this.MarkForUninstall(prefs);
                return;
            }

            try
            {
                LoadedCustomNodes.ToList().ForEach(x => customNodeManager.RemoveFromDynamo(x.Guid));
                packageLoader.LocalPackages.Remove(this);
                Directory.Delete(this.RootDirectory, true);
            }
            catch (Exception e)
            {
                logger.Log("Exception when attempting to uninstall the package " + this.Name + " from " + this.RootDirectory);
                logger.Log(e.GetType() + ": " + e.Message);
                throw e;
            }
        }
예제 #17
0
파일: Package.cs 프로젝트: vtaran/Dynamo
        private void Uninstall()
        {
            var res = MessageBox.Show("Are you sure you want to uninstall " + this.Name + "?  This will delete the packages root directory.\n\n You can always redownload the package.", "Uninstalling Package", MessageBoxButton.YesNo, MessageBoxImage.Question);

            if (res == MessageBoxResult.No)
            {
                return;
            }

            try
            {
                LoadedCustomNodes.ToList().ForEach(x => dynSettings.CustomNodeManager.RemoveFromDynamo(x.Guid));
                dynSettings.PackageLoader.LocalPackages.Remove(this);
                Directory.Delete(this.RootDirectory, true);
            }
            catch (Exception e)
            {
                MessageBox.Show("Dynamo failed to uninstall the package.  You may need to delete the package's root directory manually.", "Uninstall Failure", MessageBoxButton.OK, MessageBoxImage.Error);
                dynSettings.DynamoLogger.Log("Exception when attempting to uninstall the package " + this.Name + " from " + this.RootDirectory);
                dynSettings.DynamoLogger.Log(e.GetType() + ": " + e.Message);
            }
        }
예제 #18
0
파일: Package.cs 프로젝트: whztt07/Dynamo
 private void LoadCustomNodesIntoDynamo(DynamoLoader loader)
 {
     loader.LoadCustomNodes(CustomNodeDirectory).ForEach(x => LoadedCustomNodes.Add(x));
 }