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(); }
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(); }
//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(); }