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);
        }
示例#2
0
        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);
        }
示例#3
0
        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;
        }