public async Task <ITaskRunnerCommandResult> RunTaskAsync(TaskRunnerWithOptions task, bool clearConsole = true) { Runtime.AssertMainThread(); RunningTaskInformation runningTask = null; try { Xwt.NotebookTab tab = widget.GetTaskOutputTab(task.TaskRunner.Name); OutputProgressMonitor progressMonitor = widget.GetProgressMonitor(tab, clearConsole); task.ApplyOptionsToCommand(); var context = new TaskRunnerCommandContext(progressMonitor); runningTask = new RunningTaskInformation(context, task); TaskRunnerServices.Workspace.AddRunningTask(runningTask); widget.OpenTaskOutputTab(tab, runningTask); var result = await task.TaskRunner.Invoke(context); widget.ShowResult(tab, result); return(result); } finally { if (runningTask != null) { TaskRunnerServices.Workspace.RemoveRunningTask(runningTask); widget.HideRunningStatus(runningTask); } } }
public void HideRunningStatus(RunningTaskInformation runningTask) { NotebookTab taskOutputTab = GetTab(runningTask); if (taskOutputTab != null) { taskOutputTab.Label = runningTask.Name; } }
public void OpenTaskOutputTab(NotebookTab tab, RunningTaskInformation task) { tab.Label = GettextCatalog.GetString("{0} (Running)", task.Name); var tabInfo = tab.Child.Tag as TabInfo; tabInfo.Task = task; notebook.CurrentTab = tab; }
void OnStopButtonClick(object sender, EventArgs e) { RunningTaskInformation runningTask = widget.GetRunningTaskFromCurrentTab(); if (runningTask != null) { runningTask.Stop(); } }
NotebookTab GetTab(RunningTaskInformation runningTask) { for (int i = 1; i < notebook.Tabs.Count; ++i) { var tab = notebook.Tabs [i]; var tabInfo = tab.Child.Tag as TabInfo; if (runningTask == tabInfo.Task) { return(tab); } } return(null); }