public TaskOutputEditorForm(OutputCollection outputs) { Text = "Task Outputs"; InitializeComponent(); this.outputs = outputs ?? new OutputCollection(); buttAdd.Visible = true; buttDelete.Visible = true; if (outputs != null) { foreach (var o in outputs) { cmboOutputs.Items.Add(o.Key); } } cmboVariables.Items.Add(new KeyValuePair <string, VariableObj>("(none)", null)); if (Model.Workflow.Variables != null) { foreach (var variable in Model.Workflow.Variables.Where(v => !v.Key.StartsWith("_"))) { cmboVariables.Items.Add(variable); } } cmboType.DataSource = DataType.AllTypes; if (cmboOutputs.Items.Count > 0) { cmboOutputs.SelectedIndex = 0; } OutputChanged(null, EventArgs.Empty); }
public IOutputDevice CreateDevice(Guid deviceId, Guid moduleId, Guid moduleInstanceId, string name) { IHasOutputs<IntentOutput> outputs = new OutputCollection<IntentOutput>(); IModuleDataRetriever dataRetriever = new ModuleInstanceDataRetriever(VixenSystem.ModuleStore.InstanceData); IOutputModuleConsumer<ISmartControllerModuleInstance> outputModuleConsumer = new OutputModuleConsumer<ISmartControllerModuleInstance>(moduleId, moduleInstanceId, dataRetriever); IOutputMediator<IntentOutput> outputMediator = new OutputMediator<IntentOutput>(outputs, outputModuleConsumer.Module); IHardware executionControl = new BasicOutputModuleExecutionControl(outputModuleConsumer.Module); return new SmartOutputController(deviceId, name, outputMediator, executionControl, outputModuleConsumer); }
public SmartFilterAdapter( InputCollectionWrapper <T> input, LinqContinuousCollection <T> output, Expression <Func <T, bool> > predicateExpr) : base(input, output, ExpressionPropertyAnalyzer.GetReferencedPropertyNames(predicateExpr)[typeof(T)]) { _predicate = predicateExpr.Compile(); foreach (T item in input.InnerAsList) { if (_predicate(item)) { OutputCollection.Add(item); } } }
public DataModel(MainWindow mainWindow) { MainWindow = mainWindow; ServerList = new ServerList(); ServerSession = new ServerSession(this); ServerStatus = new ServerStatus(this); Database = new Database(this); QuickSearch = new QuickSearch(this); AdvancedSearch = new AdvancedSearch(this); DatabaseView = new DatabaseView(this); StreamsCollection = new StreamsCollection(); SavedPlaylists = new SavedPlaylists(this); CurrentSong = new CurrentSong(this); Playlist = new Playlist(this); OutputCollection = new OutputCollection(this); CustomDateNormalizer = new DateNormalizer(); CustomDateNormalizer.ReadFromSettings(); YearNormalizer = new DateNormalizer(new string[] {"YYYY"}); }
public DataModel(MainWindow mainWindow) { MainWindow = mainWindow; NetworkLog = null; ServerList = new ServerList(); ServerSession = new ServerSession(this); ServerStatus = new ServerStatus(this); Database = new Database(this); QuickSearch = new QuickSearch(this); AdvancedSearch = new AdvancedSearch(this); DatabaseView = new DatabaseView(this); StreamsCollection = new StreamsCollection(); SavedPlaylists = new SavedPlaylists(this); CurrentSong = new CurrentSong(this); Playlist = new Playlist(this); OutputCollection = new OutputCollection(this); CustomDateNormalizer = new DateNormalizer(); CustomDateNormalizer.ReadFromSettings(); YearNormalizer = new DateNormalizer(new string[] { "YYYY" }); }
/// <summary> /// Gets the Output Collection for this class /// </summary> /// <param name="alphabetize">If set to <c>true</c> alphabetize.</param> public void GetOutputCollection(bool alphabetize) { if (alphabetize) { this.OutputCollection = StringHelper.UnboxParenthesis(this.InputString).OrderBy(o => o).ToList(); } string dash = string.Empty; while (OutputCollection.Where(o => o.Contains("(")).Any()) { dash = dash + "-"; string straggler = OutputCollection.FirstOrDefault(o => o.Contains("(")); int index = OutputCollection.FindIndex(o => o.Contains("(")); if (straggler != null) { string keeper = StringHelper.GetLeader(straggler); string collection = StringHelper.GetNestedString(straggler); OutputCollection[index] = keeper; GetNestedArray(index, collection, dash, alphabetize); } } }
private IEnumerable<Output> DoInject( string assemblyFile, string typeName, string methodName, string strongNameKeyPair, string[] assemblySearchDirs) { OutputCollection outputCollection = new OutputCollection(); try { if (String.IsNullOrWhiteSpace(assemblyFile)) { outputCollection.Add(OutputImportance.Error, "Must specify a valid assembly."); return outputCollection; } if (String.IsNullOrWhiteSpace(typeName)) typeName = "ModuleInitializer"; if (String.IsNullOrWhiteSpace(methodName)) methodName = "Initialize"; StrongNameKeyPair snkpair; if (!String.IsNullOrWhiteSpace(strongNameKeyPair)) { if (!File.Exists(strongNameKeyPair)) { outputCollection.Add( OutputImportance.Error, "The '{0}' strong name keypair was not found.", strongNameKeyPair); return outputCollection; } // Accessing public key requires UnmanagedCode security permission. try { SecurityPermission sp = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode); sp.Demand(); } catch (Exception e) { outputCollection.Add( OutputImportance.Error, "Could not instrument '{0}' as cannot resign assembly, UnmanagedCode security permission denied.", strongNameKeyPair, e.Message); return outputCollection; } try { /* * Turns out that if we get the strong name key pair directly using the StrongNameKeyPair(string filename) * constructor overload, then retrieving the public key fails due to file permissions. * Opening the filestream ourselves with read access, and reading the snk that way works, and allows * us to successfully resign (who knew?). */ using (FileStream fs = new FileStream(strongNameKeyPair, FileMode.Open, FileAccess.Read)) snkpair = new StrongNameKeyPair(fs); // Ensure we can access public key - this will be done by mono later so check works now. // ReSharper disable once UnusedVariable byte[] publicKey = snkpair.PublicKey; } catch (Exception e) { outputCollection.Add( OutputImportance.Error, "Error occurred whilst accessing public key from '{0}' strong name keypair. {1}", strongNameKeyPair, e.Message); return outputCollection; } } else // No resigning necessary. snkpair = null; if (!File.Exists(assemblyFile)) { outputCollection.Add(OutputImportance.Error, "The '{0}' assembly was not found.", assemblyFile); return outputCollection; } // Look for PDB file. string pdbFile = Path.ChangeExtension(assemblyFile, ".pdb"); // Create resolver for assemblies DefaultAssemblyResolver asmResolver = new DefaultAssemblyResolver(); // Add the search directories to the resolver string assemblyDir = Path.GetDirectoryName(Path.GetFullPath(assemblyFile)); asmResolver.AddSearchDirectory(Path.GetFullPath(assemblyDir)); foreach (string dir in assemblySearchDirs.Select(Path.GetFullPath).Distinct()) if (!string.Equals(dir, assemblyDir)) asmResolver.AddSearchDirectory(dir); // Read the assembly definition ReaderParameters readParams = new ReaderParameters(ReadingMode.Immediate); readParams.AssemblyResolver = asmResolver; bool hasPdb = false; if (File.Exists(pdbFile)) { readParams.ReadSymbols = true; readParams.SymbolReaderProvider = new PdbReaderProvider(); hasPdb = true; } AssemblyDefinition assembly = AssemblyDefinition.ReadAssembly(assemblyFile, readParams); if (assembly == null) { outputCollection.Add( OutputImportance.Error, "Failed to load assembly definition for '{0}'.", assemblyFile); return outputCollection; } // Find the main module. ModuleDefinition module = assembly.MainModule; if (module == null) { outputCollection.Add( OutputImportance.Error, "Failed to load main module definition from assembly '{0}'.", assemblyFile); return outputCollection; } if (module.Types == null) { outputCollection.Add( OutputImportance.Error, "Failed to load main module types from assembly '{0}'.", assemblyFile); return outputCollection; } // Find the <Module> type definition // ReSharper disable once PossibleNullReferenceException TypeDefinition moduleType = module.Types.SingleOrDefault(t => t.Name == "<Module>"); if (moduleType == null) { outputCollection.Add( OutputImportance.Error, "Could not find type '<Module>' in assembly '{0}'.", assemblyFile); return outputCollection; } // Find void type // ReSharper disable once PossibleNullReferenceException TypeReference voidRef = module.TypeSystem.Void; if (voidRef == null) { outputCollection.Add( OutputImportance.Error, "Could not find type 'void' in assembly '{0}'.", assemblyFile); return outputCollection; } // Find the type definition // ReSharper disable once PossibleNullReferenceException TypeDefinition typeDefinition = module.Types.SingleOrDefault(t => t.Name == typeName); if (typeDefinition == null) { outputCollection.Add( OutputImportance.Warning, "Could not find type '{0}' in assembly '{1}'.", typeName, assemblyFile); return outputCollection; } // Find the method MethodDefinition callee = typeDefinition.Methods != null ? typeDefinition.Methods.FirstOrDefault( // ReSharper disable PossibleNullReferenceException m => m.Name == methodName && m.Parameters.Count == 0) // ReSharper restore PossibleNullReferenceException : null; if (callee == null) { outputCollection.Add( OutputImportance.Warning, "Could not find method '{0}' with no parameters in type '{1}' in assembly '{2}'.", methodName, typeName, assemblyFile); return outputCollection; } if (callee.IsPrivate) { outputCollection.Add( OutputImportance.Error, "Method '{0}' in type '{1}' in assembly '{2}' cannot be private as it can't be accessed by the Module Initializer.", methodName, typeName, assemblyFile); return outputCollection; } if (!callee.IsStatic) { outputCollection.Add( OutputImportance.Error, "Method '{0}' in type '{1}' in assembly '{2}' cannot be an instance method as it can't be instantiated by the Module Initializer.", methodName, typeName, assemblyFile); return outputCollection; } outputCollection.Add( OutputImportance.MessageHigh, "Method '{0}' in type '{1}' in assembly '{2}' will be called during Module initialization.", methodName, typeName, assemblyFile); // Create the module initializer. MethodDefinition cctor = new MethodDefinition( ".cctor", MethodAttributes.Static | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, voidRef); // ReSharper disable PossibleNullReferenceException ILProcessor il = cctor.Body.GetILProcessor(); il.Append(il.Create(OpCodes.Call, callee)); il.Append(il.Create(OpCodes.Ret)); moduleType.Methods.Add(cctor); // ReSharper restore PossibleNullReferenceException WriterParameters writeParams = new WriterParameters(); if (hasPdb) { writeParams.WriteSymbols = true; writeParams.SymbolWriterProvider = new PdbWriterProvider(); } if (snkpair != null) { writeParams.StrongNameKeyPair = snkpair; outputCollection.Add( OutputImportance.MessageHigh, "Assembly '{0}' is being resigned by '{1}'.", assemblyFile, strongNameKeyPair); } else { outputCollection.Add( OutputImportance.MessageHigh, "Assembly '{0}' will not be resigned.", assemblyFile); } assembly.Write(assemblyFile, writeParams); return outputCollection; } catch (Exception ex) { outputCollection.Add(OutputImportance.Error, "An unexpected error occurred. {0}", ex.Message); return outputCollection; } }