/// <summary>
        /// After performing the Operations, the QVWs are refreshed to solidify the changes made
        /// </summary>
        /// <param name="textBox">Textbox reference used for updates</param>
        /// <param name="qvws">List of QVWs that are the targets of operations</param>
        internal void RefreshQVW(TextBox textBox, string[] qvws)
        {
            application = new QlikView.Application();
            foreach (string qvw in qvws)
            {
                textBox.Text += Environment.NewLine + "    " + qvw;
                textBox.Refresh();

                try
                {
                    QlikView.Doc document = application.OpenDoc(qvw);
                    Thread.Sleep(1000);
                    document.Save();
                    document.CloseDoc();
                }
                catch (Exception ee)
                {
                    MessageBox.Show("QV Refreshing Error: " + ee.Message, "QV Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    textBox.Text += "  ERROR Refreshing ...";
                    textBox.Refresh();
                    throw;
                }
            }
            application.Quit();
            textBox.Text += Environment.NewLine + "    Complete!" + Environment.NewLine;
            textBox.Refresh();
        }
        /// <summary>
        /// Creates missing -prj folders, optionally refreshes existing -prj folders
        /// </summary>
        /// <param name="textBox">Textbox reference used for updates</param>
        /// <param name="isSingle">True if operating on a single project only</param>
        /// <param name="refreshPrj">True indicates existing -prj folders should be refreshed</param>
        /// <param name="useAutomation">True indicates QlikView Automation is being used</param>
        /// <param name="qvws">List of QVWs that are the targets of operations</param>
        internal bool CreatePRJFolders(TextBox textBox, bool isSingle, bool refreshPrj, bool useAutomation, string[] qvws)
        {
            textBox.Text += "Performing -prj maintenance prior to operation...";
            textBox.Refresh();
            bool prjCreated = false;
            bool prjEmpty   = false;
            bool success    = true;

            if (useAutomation)
            {
                application = new QlikView.Application();
            }
            foreach (string qvw in qvws)
            {
                string prjFolder = qvw.Replace(".qvw", "-prj");
                bool   refresh   = refreshPrj;
                if (!Directory.Exists(prjFolder))
                {
                    refresh       = true;
                    textBox.Text += Environment.NewLine + "    Creating -prj Folder for " + qvw;
                    textBox.Refresh();
                    // Create -prj folder
                    Directory.CreateDirectory(prjFolder);
                    prjCreated = true;
                }
                else
                {
                    string[] prjFiles = Directory.EnumerateFiles(prjFolder).ToArray();
                    if (prjFiles.Length < 8 && !useAutomation)
                    {
                        MessageBox.Show("Empty -prj folder found for\n " + prjFolder.Replace("-prj", ".qvw"), "Empty -prj Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        prjEmpty = true;
                    }
                }
                if (refresh && useAutomation)
                {
                    textBox.Text += Environment.NewLine + "    Refreshing -prj Folder for " + qvw;
                    textBox.Refresh();
                    foreach (string file in Directory.EnumerateFiles(prjFolder))
                    {
                        File.Delete(file);
                    }

                    // Populate (or repopulate) -prj folder
                    try
                    {
                        QlikView.Doc document = application.OpenDoc(qvw);
                        Thread.Sleep(1000);
                        document.Save();
                        document.CloseDoc();
                    }
                    catch (Exception ee)
                    {
                        MessageBox.Show("QV -prj Error: " + ee.Message, "QV Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        textBox.Text += "  ERROR Populating -prj Folder ...";
                        textBox.Refresh();
                        throw;
                    }
                }
            }
            if (useAutomation)
            {
                application.Quit();
            }
            if (prjCreated && !useAutomation)
            {
                MessageBox.Show("-prj folders were created, and must be populated before operations can be performed.", "Created -prj Warning", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                success = false;
            }
            textBox.Text += Environment.NewLine + "    Complete!" + Environment.NewLine + Environment.NewLine;
            textBox.Refresh();

            if (prjEmpty)
            {
                success = false;
            }

            return(success);
        }