Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        public void HideRunningStatus(RunningTaskInformation runningTask)
        {
            NotebookTab taskOutputTab = GetTab(runningTask);

            if (taskOutputTab != null)
            {
                taskOutputTab.Label = runningTask.Name;
            }
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        void OnStopButtonClick(object sender, EventArgs e)
        {
            RunningTaskInformation runningTask = widget.GetRunningTaskFromCurrentTab();

            if (runningTask != null)
            {
                runningTask.Stop();
            }
        }
Exemple #5
0
 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);
 }