private void unloadedassemblymenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Name == "addtoproject") { NodeAssemblyData data = (NodeAssemblyData)objectview.SelectedNode.Tag; CurrentProject.AddManifest(data.AssemblyName); CurrentProject.Save(CurrentProjectFilename); data.Included = true; data.Loaded = true; data.Definition = LoadAssembly(data.AssemblyName); objectview.SelectedNode.ImageKey = "accept.png"; objectview.SelectedNode.SelectedImageKey = "accept.png"; objectview.SelectedNode.Nodes.Clear(); string realfilename = Path.Combine(CurrentProject.TargetDirectory, data.AssemblyName + ".dll"); string origfilename = Path.Combine(CurrentProject.TargetDirectory, data.AssemblyName + "_Original.dll"); if (!File.Exists(origfilename)) { CreateOriginal(realfilename, origfilename); } // Populate PopulateAssemblyNode(objectview.SelectedNode, data.Definition); } }
private void loadedassemblymenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Name == "removefromproject") { NodeAssemblyData data = (NodeAssemblyData)objectview.SelectedNode.Tag; CurrentProject.RemoveManifest(data.AssemblyName); CurrentProject.Save(CurrentProjectFilename); data.Included = false; data.Loaded = false; data.Definition = null; if (objectview.SelectedNode.Tag == null) { objectview.SelectedNode.Parent.Nodes.Remove(objectview.SelectedNode); } else { objectview.SelectedNode.ImageKey = "cross.png"; objectview.SelectedNode.SelectedImageKey = "cross.png"; objectview.SelectedNode.Nodes.Clear(); } } }
private void objectview_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Right) { TreeNode node = e.Node; if (node != null) { if (node.Tag is NodeAssemblyData) { NodeAssemblyData data = (NodeAssemblyData)node.Tag; if (!data.Included) { unloadedassemblymenu.Show(objectview, e.X, e.Y); } else { loadedassemblymenu.Show(objectview, e.X, e.Y); } } objectview.SelectedNode = node; } } }
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>(); var files = Directory.GetFiles(CurrentProject.TargetDirectory).Where(f => f.EndsWith(".dll") || (f.EndsWith(".exe") && !Path.GetFileName(f).StartsWith(typeof(Program).Assembly.GetName().Name))); foreach (string file in files) { // Check if it's an original dll if (!IsFileOriginal(file)) { // See if it has a manifest string assemblyname = Path.GetFileNameWithoutExtension(file); string assemblyfile = Path.GetFileName(file); if (CurrentProject.Manifests.Any((x) => x.AssemblyName == assemblyfile)) { // Get the manifest // Manifest manifest = CurrentProject.Manifests.Single((x) => x.AssemblyName == assemblyname); // Load the assembly NodeAssemblyData data = new NodeAssemblyData(); data.Included = true; data.AssemblyName = assemblyfile; data.Loaded = true; data.Definition = LoadAssembly(assemblyfile); // 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 = assemblyfile }; 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 = ""; }
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 = ""; }