Exemple #1
0
        private void DgvProjectScripts_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //string newCellValue = dataGridProjectScripts.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();

            //get selected row from data grid
            VMHome.ProjectScript dgvProjectScriptsSelectedRow = DgvProjectScripts_GetSelectedRowByCell();

            //make sure the selected item is available
            if (dgvProjectScriptsSelectedRow == null)
            {
                return;
            }

            //get selected script entity's from database
            var repoProjectScript = _ettCommander.project_script.SingleOrDefault(m => m.id == dgvProjectScriptsSelectedRow.Id);

            //make sure data is exist in database
            if (repoProjectScript == null)
            {
                MessageBox.Show($"script '{dgvProjectScriptsSelectedRow.Name}' is not found");

                return;
            }

            //update
            repoProjectScript.name   = dgvProjectScriptsSelectedRow.Name;
            repoProjectScript.script = dgvProjectScriptsSelectedRow.Script;

            //commit
            _ettCommander.SaveChanges();

            //reload project script data grid
            DgvProjectScripts_Populate();
        }
Exemple #2
0
        private void BtnProjectScriptRemove_Click(object sender, EventArgs e)
        {
            //get selected row from data grid
            VMHome.ProjectScript dgvProjectScriptsSelectedRow = DgvProjectScripts_GetSelectedRow();

            //make sure the selected item is available
            if (dgvProjectScriptsSelectedRow == null)
            {
                return;
            }

            //get selected row's entity from databsae
            project_script repoProjectScript = _ettCommander.project_script.SingleOrDefault(m => m.id == dgvProjectScriptsSelectedRow.Id);

            //make sure data is exist in database
            if (repoProjectScript == null)
            {
                MessageBox.Show($"project script '{dgvProjectScriptsSelectedRow.Name}' not found in database");

                return;
            }

            //delete
            _ettCommander.project_script.Remove(repoProjectScript);

            //commit
            _ettCommander.SaveChanges();

            //reload data grid
            DgvProjectScripts_Populate();
        }
Exemple #3
0
        //run selected script in grid
        private void RunSelectedScript()
        {
            //get selected row from data grid
            VMHome.ProjectScript dgvProjectScriptsSelectedRow = DgvProjectScripts_GetSelectedRowByCell();

            //make sure the selected item is available
            if (dgvProjectScriptsSelectedRow == null)
            {
                return;
            }

            //make sure the script is not being run
            if (dgvProjectScriptsSelectedRow.Pid.HasValue)
            {
                MessageBox.Show($"script '{dgvProjectScriptsSelectedRow.Name}' is already active");

                return;
            }

            //get selected script entity's from database
            var repoProjectScript = _ettCommander.project_script.SingleOrDefault(m => m.id == dgvProjectScriptsSelectedRow.Id);

            //make sure data is exist in database
            if (repoProjectScript == null)
            {
                MessageBox.Show($"script '{dgvProjectScriptsSelectedRow.Name}' is not found");

                return;
            }

            //START -- RUN SCRIPT

            //create temporary file
            string filePath = CombineScriptDirectoryWithFileName(CombineProjectNameWithScriptName(repoProjectScript.project.name, repoProjectScript.name));
            bool   isCreatingFileSuccess = _utlFile.CreateAndWrite(filePath, repoProjectScript.script);

            if (!isCreatingFileSuccess)
            {
                MessageBox.Show("failed creating temporary comand file");

                return;
            }

            //get current time
            DateTime now = DateTime.Now;

            //define process start configuration
            ProcessStartInfo processStartInfo = new ProcessStartInfo
            {
                FileName        = filePath,
                UseShellExecute = false,
            };

            //initialize process
            Process process = new Process
            {
                StartInfo           = processStartInfo,
                EnableRaisingEvents = true,
            };

            //add event handler when process is exited
            process.Exited += (object _sender, EventArgs _e) =>
            {
                //remove pid for this script
                dgvProjectScriptsSelectedRow.Pid = null;

                //delete temporary file
                _utlFile.Delete(filePath);

                //play sound if user wants it
                if (_isVolumeOn)
                {
                    SystemSounds.Hand.Play();
                }
            };

            //start process
            process.Start();

            //set and last executed date for this script
            dgvProjectScriptsSelectedRow.Pid          = process.Id;
            dgvProjectScriptsSelectedRow.LastExecuted = now;

            //END -- RUN SCRIPT

            //update
            repoProjectScript.last_executed = now;

            //commit
            _ettCommander.SaveChanges();
        }