Ejemplo n.º 1
0
 /// <summary>
 /// Adds an empty manifest with the given assembly name to the project
 /// </summary>
 /// <param name="assemblyname"></param>
 public void AddManifest(string assemblyname)
 {
     Manifest manifest = new Manifest();
     manifest.AssemblyName = assemblyname;
     Manifests.Add(manifest);
 }
Ejemplo n.º 2
0
        private void PopulateInitialTree()
        {
            // Set status
            statuslabel.Text = "Loading project...";
            statuslabel.Invalidate();

            // Add project settings
            TreeNode projectsettings = new TreeNode("Project Settings");

            projectsettings.ImageKey         = "cog_edit.png";
            projectsettings.SelectedImageKey = "cog_edit.png";
            projectsettings.Tag = "Project Settings";
            objectview.Nodes.Add(projectsettings);

            // Add hooks
            TreeNode hooks = new TreeNode("Hooks");

            hooks.ImageKey         = "lightning.png";
            hooks.SelectedImageKey = "lightning.png";
            objectview.Nodes.Add(hooks);
            foreach (var hook in CurrentProject.Manifests.SelectMany((m) => m.Hooks))
            {
                TreeNode hooknode = new TreeNode(hook.Name);
                if (hook.Flagged)
                {
                    hooknode.ImageKey         = "script_error.png";
                    hooknode.SelectedImageKey = "script_error.png";
                }
                else
                {
                    hooknode.ImageKey         = "script_lightning.png";
                    hooknode.SelectedImageKey = "script_lightning.png";
                }
                hooknode.Tag = hook;
                hooks.Nodes.Add(hooknode);
            }

            // Add assemblies
            TreeNode assemblies = new TreeNode("Assemblies");

            assemblies.ImageKey         = "folder.png";
            assemblies.SelectedImageKey = "folder.png";
            objectview.Nodes.Add(assemblies);
            List <TreeNode> assemblynodes = new List <TreeNode>();

            foreach (string file in Directory.EnumerateFiles(CurrentProject.TargetDirectory, "*.dll"))
            {
                // Check if it's an original dll
                if (!IsFileOriginal(file))
                {
                    // See if it has a manifest
                    string assemblyname = Path.GetFileNameWithoutExtension(file);
                    if (CurrentProject.Manifests.Any((x) => x.AssemblyName == assemblyname))
                    {
                        // Get the manifest
                        Manifest manifest = CurrentProject.Manifests.Single((x) => x.AssemblyName == assemblyname);

                        // Load the assembly
                        NodeAssemblyData data = new NodeAssemblyData();
                        data.Included     = true;
                        data.AssemblyName = assemblyname;
                        data.Loaded       = true;
                        data.Definition   = LoadAssembly(assemblyname);

                        // Create a node for it
                        TreeNode assembly = new TreeNode(assemblyname);
                        if (data.Definition == null)
                        {
                            assembly.ImageKey         = "error.png";
                            assembly.SelectedImageKey = "error.png";
                        }
                        else
                        {
                            assembly.ImageKey         = "accept.png";
                            assembly.SelectedImageKey = "accept.png";
                        }
                        assembly.Tag = data;
                        assemblynodes.Add(assembly);

                        // Populate
                        if (data.Definition != null)
                        {
                            PopulateAssemblyNode(assembly, data.Definition);
                        }
                    }
                    else
                    {
                        // Nope, just make an empty node for it
                        TreeNode assembly = new TreeNode(assemblyname);
                        assembly.ImageKey         = "cross.png";
                        assembly.SelectedImageKey = "cross.png";
                        assembly.Tag = new NodeAssemblyData()
                        {
                            Included = false, AssemblyName = assemblyname
                        };
                        assemblynodes.Add(assembly);
                    }
                }
            }

            // Sort
            assemblynodes.Sort((a, b) =>
            {
                return(Comparer <string> .Default.Compare(a.ImageKey, b.ImageKey));
            });

            // Add
            for (int i = 0; i < assemblynodes.Count; i++)
            {
                assemblies.Nodes.Add(assemblynodes[i]);
            }

            // Set status
            statuslabel.Text = "";
        }