public FinderPluginNode(IHDEHost host, IPluginHost2 pluginHost, [Config("Tags")] IDiffSpread <string> tagsPin) { // The InitializeComponent() call is required for Windows Forms designer support. InitializeComponent(); FHDEHost = host; FPluginHost = pluginHost; FSearchTextBox.ContextMenu = new ContextMenu(); FSearchTextBox.ContextMenu.Popup += FSearchTextBox_ContextMenu_Popup; FSearchTextBox.MouseWheel += FSearchTextBox_MouseWheel; FMappingRegistry = new MappingRegistry(); FMappingRegistry.RegisterDefaultMapping <INamed, DefaultNameProvider>(); FHierarchyViewer.Registry = FMappingRegistry; FTagsPin = tagsPin; FTagsPin.Changed += HandleTagsPinChanged; FNodeFilter = new NodeFilter(); FNodeView = FNodeFilter.UpdateFilter(string.Empty, FHDEHost.RootNode); FHDEHost.WindowSelectionChanged += HandleWindowSelectionChanged; //defer setting the active patch window as //this will trigger the initial WindowSelectionChangeCB //which will want to access this windows caption which is not yet available SynchronizationContext.Current.Post((object state) => HandleWindowSelectionChanged(FHDEHost, new WindowEventArgs(FHDEHost.ActivePatchWindow)), null); }
public NodePlugin(Host vlHost, RuntimeHost runtimeHost, NodeId nodeId, IPluginHost2 pluginHost, IIORegistry ioRegistry) { FInstanceId = Element.ProduceNewIdentity(); FVlHost = vlHost; FRuntimeHost = runtimeHost; NodeId = nodeId; FPluginHost = pluginHost; FIORegistry = ioRegistry; FBuildResult = new BuildResult(this, null, null, null, null, null, null); }
public ConflictSolution Solve(IPluginHost2 declarer, Declaration newDeclaration, Dictionary <string, Declaration> register) { SetConflictInfo(newDeclaration, register); FUI.SetExistingDeclaration(FExisting); FUI.SetNewSelection(FRegister.Keys); FUI.SetExistingUsers(GetUsers(FExisting.Name)); FUI.SetNewUsers(new[] { NiceNodePath(declarer) }); var kind = (ConflictSolutionKind)FUI.ShowDialog(); return(new ConflictSolution(kind, FUI.NewDeclarationName, FUI.NewDeclarationBody)); }
//load from config pin void LoadDeclaration(IPluginHost2 nodeHost, IStructDeclarer declarer, string text) { if (declarer.Declaration == null || declarer.Declaration.ToString() != text) //we are only interested in cache on startup { var d = FDeclarationFactory["Template"]; if (!string.IsNullOrWhiteSpace(text)) { d = FDeclarationFactory.Create(text); var existing = FDeclarationFactory.Get(d.Name); if (existing == null) //is new { FDeclarationFactory.Add(d, false); } else if (d.Equals(existing)) //equals existing, don't worry { d = existing; } else { var solution = FConflictMgr.Solve(nodeHost, d, FDeclarationFactory.FDeclarations); switch (solution.SolutionKind) { case ConflictManager.ConflictSolutionKind.Ignore: d = existing; break; case ConflictManager.ConflictSolutionKind.Split: d = FDeclarationFactory.Get(solution.DeclarationName); if (d == null) { d = FDeclarationFactory.Create(solution.DeclarationName, solution.DeclarationBody); FDeclarationFactory.Add(d, false); } break; case ConflictManager.ConflictSolutionKind.Overwrite: d = FDeclarationFactory.Create(solution.DeclarationName, solution.DeclarationBody); FDeclarationFactory.Update(existing.Name, d); break; } } } declarer.Declaration = d; (declarer.IOManager as IOManager).UpdateFromDeclaration(d); SetDescriptiveName(declarer, d.Name); } }
public IPluginBase CreatePlugin(INodeInfo nodeInfo, IPluginHost2 pluginHost) { IPluginBase plugin = null; string assemblyLocation = string.Empty; var isUpToDate = GetAssemblyLocation(nodeInfo, out assemblyLocation); // HACK: pluginHost is null in case of WindowSwitcher/NodeBrowser/etc. Fix this. if (pluginHost != null) { // Mark the node if old assembly was loaded and log warning. if (!isUpToDate) { pluginHost.Status |= StatusCode.HasInvalidData; FLogger.Log(LogType.Warning, string.Format("Plugin of node '{0}' (ID: {1}) is out of date and couldn't be recompiled. Check its source code for errors.", nodeInfo.Username, pluginHost.GetID())); } else { pluginHost.Status &= ~StatusCode.HasInvalidData; } } var assembly = Assembly.LoadFrom(assemblyLocation); //Check if need to start anything before rest is loaded FStartableRegistry.ProcessAssembly(assembly); var type = assembly.GetType(nodeInfo.Arguments); // type can be null if assembly is corrupt or doesn't contain cached node info anymore if (type != null) { var attribute = GetPluginInfoAttributeData(type); if (attribute != null) { var pluginContainer = new PluginContainer( pluginHost as IInternalPluginHost, FIORegistry, FParentContainer, FNodeInfoFactory, this, type, nodeInfo); // We intercept the plugin to manage IOHandlers. plugin = pluginContainer; FPluginContainers[pluginContainer.PluginBase] = pluginContainer; // HACK: FPluginHost is null in case of WindowSwitcher and friends if (pluginHost != null) { AssignOptionalPluginInterfaces(pluginHost as IInternalPluginHost, pluginContainer.PluginBase); } // Send event, clients are not interested in wrapping plugin, so send original here. if (this.PluginCreated != null) { this.PluginCreated(pluginContainer.PluginBase, pluginHost); } } else { var v1Plugin = (IPlugin)assembly.CreateInstance(nodeInfo.Arguments); v1Plugin.SetPluginHost(pluginHost); plugin = v1Plugin; // HACK: FPluginHost is null in case of WindowSwitcher and friends if (pluginHost != null) { AssignOptionalPluginInterfaces(pluginHost as IInternalPluginHost, plugin); } // Send event if (this.PluginCreated != null) { this.PluginCreated(plugin, pluginHost); } } } else { pluginHost.Status |= StatusCode.HasInvalidData; FLogger.Log(LogType.Warning, string.Format("Type '{0}' not found in assembly '{1}'. Failed to create plugin node {2} (ID: {3}).", nodeInfo.Arguments, assembly.FullName, nodeInfo.Username, pluginHost.GetID())); } return(plugin); }
public SScopedValueNode(IPluginHost2 host, IHDEHost hdeHost) { FHost = host; hdeHost.MainLoop.OnPrepareGraph += OnPrepareGraph; }
public NodeBrowserPluginNode(IHDEHost host, INodeInfoFactory nodeInfoFactory, NodeCollection nodeCollection, IPluginHost2 pluginHost) { HDEHost = host; NodeInfoFactory = nodeInfoFactory; FNodeCollection = nodeCollection; IsStandalone = pluginHost != null; DefaultConstructor(); }
public RScopedValueNode(IPluginHost2 host, IHDEHost hdeHost) { FHost = host; hdeHost.MainLoop.OnRender += OnRender; }