public RunPluginForm(Plugin plugin, string[] filenames) { InitializeComponent(); Plugin = plugin; Height = Plugin.Height; Width = Plugin.Width; CWAFilenames = filenames; TempCWAFilePath = System.IO.Path.Combine(destFolder, "input.cwa"); string t = Plugin.FilePath + Plugin.HTMLFilePath; Console.WriteLine("t: " + t); Go(Plugin.FilePath + Path.DirectorySeparatorChar + Plugin.HTMLFilePath); }
private void RunProcess2(string parameterString, Plugin p, string outputName, string[] inputNames) { ProcessStartInfo psi = new ProcessStartInfo(); psi.FileName = p.FilePath + Path.DirectorySeparatorChar + p.RunFilePath; //TODO - Idea to try and do the outfile as a filepath rather than filename. //Find arguments and replace the output file with the full file path. Console.WriteLine("current user working folder: " + Properties.Settings.Default.CurrentWorkingFolder); if (!Properties.Settings.Default.CurrentWorkingFolder[Properties.Settings.Default.CurrentWorkingFolder.Length - 1].Equals('\\')) parameterString = parameterString.Replace(outputName, "\"" + Properties.Settings.Default.CurrentWorkingFolder + "\\" + outputName + "\""); else parameterString = parameterString.Replace(outputName, "\"" + Properties.Settings.Default.CurrentWorkingFolder + outputName + "\""); psi.Arguments = parameterString; Console.WriteLine("Arguments: " + parameterString); psi.UseShellExecute = false; psi.RedirectStandardError = false; psi.RedirectStandardOutput = true; psi.Verb = "runas"; psi.CreateNoWindow = false; PluginQueueItem pqi = new PluginQueueItem(p, parameterString, inputNames); pqi.StartInfo = psi; pqi.OriginalOutputName = outputName; //Add PQI to file queue string filesStr = pqi.Files[0]; for (int i = 1; i < pqi.Files.Length; i++) filesStr += " | " + pqi.Files[i]; ListViewItem lvi = new ListViewItem(new string[] { pqi.Name, filesStr, "0" }); BackgroundWorker pluginQueueWorker = new BackgroundWorker(); pluginQueueWorker.WorkerSupportsCancellation = true; pluginQueueWorker.DoWork += new DoWorkEventHandler(pluginQueueWorker_DoWork); pluginQueueWorker.ProgressChanged += new ProgressChangedEventHandler(pluginQueueWorker_ProgressChanged); pluginQueueWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(pluginQueueWorker_RunWorkerCompleted); lvi.Tag = pluginQueueWorker; queueListViewItems2.Items.Add(lvi); Directory.SetCurrentDirectory(p.FilePath); pluginQueueWorker.RunWorkerAsync(pqi); }
public static Plugin CreatePlugin(string pluginSettingsFolderPath) { Plugin plugin = null; Console.WriteLine("\nPlugin:" + Path.GetFileNameWithoutExtension(pluginSettingsFolderPath) + "\n"); try { string[] files = Directory.GetFiles(pluginSettingsFolderPath, "*.plugin"); if (files.Length > 0) { //Get first because there should only be 1 .plugin file. string pluginSettingsPath = files[0]; try { StreamReader sr = new StreamReader(pluginSettingsPath); string pluginSettingsRaw = sr.ReadToEnd(); if (pluginSettingsRaw.Length > 0) { XmlDocument pluginSettingsXML = new XmlDocument(); try { plugin = new Plugin(); plugin.FilePath = pluginSettingsFolderPath; pluginSettingsXML.LoadXml(pluginSettingsRaw); //Go through XML and fill a Plugin() instance. XmlNodeList heightXML = pluginSettingsXML.GetElementsByTagName("height"); XmlNodeList widthXML = pluginSettingsXML.GetElementsByTagName("width"); XmlNodeList runFilePathXML = pluginSettingsXML.GetElementsByTagName("runFilePath"); XmlNodeList htmlFilePathXML = pluginSettingsXML.GetElementsByTagName("htmlFilePath"); XmlNodeList savedValuesFilePathXML = pluginSettingsXML.GetElementsByTagName("savedValuesFilePath"); XmlNodeList iconFilePathXML = pluginSettingsXML.GetElementsByTagName("iconName"); XmlNodeList descriptionXML = pluginSettingsXML.GetElementsByTagName("description"); XmlNodeList readableNameXML = pluginSettingsXML.GetElementsByTagName("readableName"); XmlNodeList fileNameXML = pluginSettingsXML.GetElementsByTagName("fileName"); XmlNodeList outputExtensionsXML = pluginSettingsXML.GetElementsByTagName("outputExtensions"); XmlNodeList defaultValuesXML = pluginSettingsXML.GetElementsByTagName("defaultValues"); XmlNodeList outputFileXML = pluginSettingsXML.GetElementsByTagName("outputFile"); XmlNodeList inputFileXML = pluginSettingsXML.GetElementsByTagName("inputFile"); XmlNodeList wantMetaDataXML = pluginSettingsXML.GetElementsByTagName("wantMetadata"); XmlNodeList numberOfInputFilesXML = pluginSettingsXML.GetElementsByTagName("numberOfInputFiles"); XmlNodeList requiresCWANames = pluginSettingsXML.GetElementsByTagName("requiresCWANames"); XmlNodeList createsOutput = pluginSettingsXML.GetElementsByTagName("createsOutput"); int height = 0; if (heightXML.Count < 1 || !int.TryParse(heightXML[0].InnerText, out height)) plugin.Height = 600; else plugin.Height = height; int width = 0; if (widthXML.Count < 1 || !int.TryParse(widthXML[0].InnerText, out width)) plugin.Width = 800; else plugin.Width = width; plugin.RunFilePath = "none"; if (runFilePathXML.Count > 0) plugin.RunFilePath = runFilePathXML[0].InnerText; //TODO Else Throw new thingy plugin.HTMLFilePath = "none"; if (htmlFilePathXML.Count > 0) plugin.HTMLFilePath = htmlFilePathXML[0].InnerText; //TODO Else Throw new thingy plugin.SavedValuesFilePath = "none"; if (savedValuesFilePathXML.Count > 0) plugin.SavedValuesFilePath = savedValuesFilePathXML[0].InnerText; plugin.iconFilePath = "none"; if (iconFilePathXML.Count > 0) { plugin.iconFilePath = iconFilePathXML[0].InnerText; try { plugin.loadIcon(plugin.iconFilePath); } catch (Exception) { } } plugin.Description = "none"; if (descriptionXML.Count > 0) plugin.Description = descriptionXML[0].InnerText; plugin.ReadableName = "none"; if (readableNameXML.Count > 0) plugin.ReadableName = readableNameXML[0].InnerText; plugin.FileName = "none"; if (fileNameXML.Count > 0) plugin.FileName = fileNameXML[0].InnerText; if (outputExtensionsXML.Count > 0) { plugin.OutputExtensions = new string[outputExtensionsXML[0].ChildNodes.Count]; for (int i = 0; i < outputExtensionsXML[0].ChildNodes.Count; i++) plugin.OutputExtensions[i] = outputExtensionsXML[0].ChildNodes[i].InnerText; } plugin.DefaultValues = new Dictionary<string, string>(); if (defaultValuesXML.Count > 0) foreach (XmlNode node in defaultValuesXML[0].ChildNodes) plugin.DefaultValues.Add(node.Name, node.InnerText); plugin.OutputFile = "none"; if (outputFileXML.Count > 0) plugin.OutputFile = outputFileXML[0].InnerText; plugin.InputFile = "none"; if (inputFileXML.Count > 0) plugin.InputFile = inputFileXML[0].InnerText; plugin.WantMetaData = false; if (wantMetaDataXML.Count > 0) plugin.WantMetaData = wantMetaDataXML[0].InnerText.Equals("true") ? true : false; plugin.NumberOfInputFiles = 1; if (numberOfInputFilesXML.Count > 0) plugin.NumberOfInputFiles = Int32.Parse(numberOfInputFilesXML[0].InnerText); plugin.RequiresCWANames = false; if (requiresCWANames.Count > 0) plugin.RequiresCWANames = requiresCWANames[0].InnerText.Equals("true") ? true : false; plugin.CreatesOutput = false; if (createsOutput.Count > 0) plugin.CreatesOutput = createsOutput[0].InnerText.Equals("true") ? true : false; Console.WriteLine("height: " + plugin.Height); Console.WriteLine("width: " + plugin.Width); Console.WriteLine("run file: " + plugin.RunFilePath); Console.WriteLine("html file: " + plugin.HTMLFilePath); Console.WriteLine("saved values file: " + plugin.SavedValuesFilePath); Console.WriteLine("icon file: " + plugin.iconFilePath); Console.WriteLine("description: " + plugin.Description); Console.WriteLine("readable name: " + plugin.ReadableName); Console.WriteLine("Want metadata: " + plugin.WantMetaData); Console.WriteLine("Number of input files: " + plugin.NumberOfInputFiles); Console.WriteLine("Output Extensions: "); if (plugin.OutputExtensions != null && plugin.OutputExtensions.Length < 1) Console.Write("none"); else foreach (string outputExtension in plugin.OutputExtensions) Console.WriteLine("\tExtension: " + outputExtension); Console.WriteLine("Default Values: "); if (plugin.DefaultValues.Count < 1) Console.Write("none"); else foreach (KeyValuePair<string, string> kvp in plugin.DefaultValues) Console.WriteLine("\tDefault Value Name: " + kvp.Key + " | Value: " + kvp.Value); //Now we want to look into the saved values. Console.WriteLine("Saved Values: "); Dictionary<string, string> savedValuesDictionary = GetSavedValues(Properties.Settings.Default.CurrentWorkingFolder + "\\" + plugin.ReadableName + "_" + plugin.SavedValuesFilePath); if (savedValuesDictionary != null) { foreach (KeyValuePair<string, string> kvp in savedValuesDictionary) Console.WriteLine("Saved Value Name: " + kvp.Key + " | Value: " + kvp.Value); } else { Console.Write("No Saved Values file.\n"); } plugin.SelectionBlockCount = -1; plugin.SelectionBlockStart = -1; plugin.SelectionDateTimeEnd = ""; plugin.SelectionDateTimeStart = ""; return plugin; } catch (XmlException) { Console.WriteLine("Error: Plugin Settings File is not valid XML."); } } sr.Close(); } catch (Exception e) { Console.WriteLine("Error: Invalid Stream for Saved Values\r\n" + e.Message); } } } catch (Exception e) { Console.WriteLine("Error: Could not find profile plugin: " + Path.GetFileNameWithoutExtension(pluginSettingsFolderPath) + "\r\n" + e.Message); } return null; }