static void LineDataFunc(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { Gtk.CellRendererText textRenderer = (Gtk.CellRendererText)cell; TaskListEntry task = model.GetValue(iter, DataColumns.Task) as TaskListEntry; if (task == null) { textRenderer.Text = ""; return; } SetText(textRenderer, model, iter, task, task.Line != 0 ? task.Line.ToString() : ""); }
static void PathDataFunc(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { Gtk.CellRendererText textRenderer = (Gtk.CellRendererText)cell; TaskListEntry task = model.GetValue(iter, DataColumns.Task) as TaskListEntry; if (task == null) { textRenderer.Text = ""; return; } SetText(textRenderer, model, iter, task, GetPath(task)); }
static void ToggleDataFunc(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { Gtk.CellRendererToggle toggleRenderer = (Gtk.CellRendererToggle)cell; TaskListEntry task = model.GetValue(iter, DataColumns.Task) as TaskListEntry; if (task == null) { toggleRenderer.Visible = false; return; } toggleRenderer.Active = task.Completed; }
internal MessageBubbleTextMarker(MessageBubbleCache cache, TaskListEntry task, bool isError, string errorMessage) { if (cache == null) { throw new ArgumentNullException("cache"); } this.cache = cache; this.task = task; this.isError = isError; AddError(task, isError, errorMessage); // cache.Changed += (sender, e) => CalculateLineFit (editor, lineSegment); }
public static string GetFile(this TaskListEntry task) { string tmpPath = ""; string fileName = ""; try { tmpPath = GetPath(task); fileName = Path.GetFileName(tmpPath); } catch (Exception) { fileName = tmpPath; } return(fileName); }
public void AddError(TaskListEntry task, bool isError, string errorMessage) { if (this.task == null) { this.task = task; } var match = mcsErrorFormat.Match(errorMessage); if (match.Success) { errorMessage = match.Groups [1].Value; } errors.Add(new ErrorText(task, isError, errorMessage)); DisposeLayout(); }
void AddTaskInternal(TaskListEntry t) { if (tasks.Contains(t)) { return; } Xwt.Drawing.Image stock; switch (t.Severity) { case TaskSeverity.Error: stock = iconError; errorCount++; UpdateErrorsNum(); break; case TaskSeverity.Warning: stock = iconWarning; warningCount++; UpdateWarningsNum(); break; default: stock = iconInfo; infoCount++; UpdateMessagesNum(); break; } tasks [t] = t; var indexOfNewLine = t.Description.IndexOfAny(new [] { '\n', '\r' }); if (indexOfNewLine != -1) { var iter = store.AppendValues(stock, false, t, t.Description.Remove(indexOfNewLine)); store.AppendValues(iter, iconEmpty, false, null, t.Description); } else { store.AppendValues(stock, false, t, t.Description); } UpdatePadIcon(); }
bool GetSelectedErrorReference(out string reference) { TaskListEntry task = SelectedTask; if (task != null && !String.IsNullOrEmpty(task.HelpKeyword)) { reference = task.HelpKeyword; return(true); } if (task != null && !String.IsNullOrEmpty(task.Code)) { reference = task.Code; return(true); } reference = null; return(false); }
public static void AddTask(string fileName, string message, int column, int line, TaskSeverity taskType) { // HACK: Use a compiler error since we cannot add an error // task otherwise (task type property is read-only and // no constructors usable). BuildError error = new BuildError(); error.Column = column; error.Line = line; error.ErrorText = message; error.FileName = fileName; error.IsWarning = false; //Task task = new Task(fileName, message, column, line); TaskListEntry task = new TaskListEntry(error); TaskService.Errors.Add(task); }
void OnTaskCopied(object o, EventArgs args) { TaskListEntry task = SelectedTask; if (task != null) { StringBuilder text = new StringBuilder(); if (!string.IsNullOrEmpty(task.FileName)) { text.Append(task.FileName); if (task.Line >= 1) { text.Append("(").Append(task.Column); if (task.Column >= 0) { text.Append(",").Append(task.Column); } text.Append(")"); } text.Append(": "); } text.Append(task.Severity); if (!string.IsNullOrEmpty(task.Code)) { text.Append(" ").Append(task.Code); } text.Append(": "); text.Append(task.Description); if (task.WorkspaceObject != null) { text.Append(" (").Append(task.WorkspaceObject.Name).Append(")"); } if (!string.IsNullOrEmpty(task.Category)) { text.Append(" ").Append(task.Category); } clipboard = Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false)); clipboard.Text = text.ToString(); clipboard = Clipboard.Get(Gdk.Atom.Intern("PRIMARY", false)); clipboard.Text = text.ToString(); } }
internal void SelectTaskListEntry(TaskListEntry taskListEntry) { TreeIter iter; if (!view.Model.GetIterFirst(out iter)) { return; } do { var t = (TaskListEntry)view.Model.GetValue(iter, DataColumns.Task); if (t == taskListEntry) { view.Selection.SelectIter(iter); view.ScrollToCell(view.Model.GetPath(iter), view.Columns [0], false, 0, 0); return; } } while (view.Model.IterNext(ref iter)); }
void OnTaskJumpto(object o, EventArgs args) { TreeIter iter, sortedIter; TreeModel model; if (view.Selection.GetSelected(out model, out sortedIter)) { iter = filter.ConvertIterToChildIter(sort.ConvertIterToChildIter(sortedIter)); store.SetValue(iter, DataColumns.Read, true); TaskListEntry task = store.GetValue(iter, DataColumns.Task) as TaskListEntry; if (task != null) { TaskService.ShowStatus(task); task.JumpToPosition(); TaskService.Errors.CurrentLocationTask = task; IdeApp.Workbench.ActiveLocationList = TaskService.Errors; } } }
/// <summary> /// Добавляет задачу <paramref name="aTask"/> в очередь задач на выполнение. /// </summary> /// <param name="aTask"> /// Задача, добавляемая в очередь задач на выполнение. /// </param> /// <param name="aTaskPriority"> /// Приоритет задачи. /// </param> private void EnqueueTask(Task aTask, TaskPriority aTaskPriority) { TaskListEntry lEntry = new TaskListEntry(aTask, aTaskPriority); LogPriority(aTaskPriority, ConsoleColor.Green); lock (mQueuedTasksLock) { // Добавить задачу в очередь задач на выполнение. mQueuedTasks.Add(lEntry); LogMessage( string.Format( "В очередь добавлена задача с приоритетом {0}", lEntry.TaskPriority), ConsoleColor.Green); // Поднять барьер доступа к очереди задач. LogMessage("Поднять барьер доступа к очереди задач.", ConsoleColor.DarkRed); } lock (mTaskSchedulerLock) { // Сигнализировать об изменении в условии блокировки по mTaskSchedulerLock. Monitor.Pulse(mTaskSchedulerLock); } }
bool FilterTasks(TreeModel model, TreeIter iter) { bool canShow = false; try { TaskListEntry task = store.GetValue(iter, DataColumns.Task) as TaskListEntry; if (task == null) { return(true); } if (task.Severity == TaskSeverity.Error && errorBtn.Active) { canShow = true; } else if (task.Severity == TaskSeverity.Warning && warnBtn.Active) { canShow = true; } else if (task.Severity == TaskSeverity.Information && msgBtn.Active) { canShow = true; } if (canShow && !string.IsNullOrWhiteSpace(currentSearchPattern)) { canShow = (task.Description != null && task.Description.IndexOf(currentSearchPattern, StringComparison.OrdinalIgnoreCase) != -1) || (task.Code != null && task.Code.IndexOf(currentSearchPattern, StringComparison.OrdinalIgnoreCase) != -1) || (task.FileName != null && task.FileName.FileName.IndexOf(currentSearchPattern, StringComparison.OrdinalIgnoreCase) != -1) || (task.WorkspaceObject != null && task.WorkspaceObject.Name != null && task.WorkspaceObject.Name.IndexOf(currentSearchPattern, StringComparison.OrdinalIgnoreCase) != -1) || (task.Category != null && task.Category.IndexOf(currentSearchPattern, StringComparison.OrdinalIgnoreCase) != -1); } } catch { //Not yet fully added return(false); } return(canShow); }
static void FileDataFunc(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { Gtk.CellRendererText textRenderer = (Gtk.CellRendererText)cell; TaskListEntry task = model.GetValue(iter, DataColumns.Task) as TaskListEntry; if (task == null) { textRenderer.Text = ""; return; } string tmpPath = ""; string fileName = ""; try { tmpPath = GetPath(task); fileName = Path.GetFileName(tmpPath); } catch (Exception) { fileName = tmpPath; } SetText(textRenderer, model, iter, task, fileName); }
bool GetSelectedErrorReference(out string reference) { string webRequest = "http://google.com/search?q="; TaskListEntry task = SelectedTask; if (task != null && task.HasDocumentationLink()) { reference = task.DocumentationLink; return(true); } if (task != null && !string.IsNullOrEmpty(task.HelpKeyword)) { reference = webRequest + System.Web.HttpUtility.UrlEncode(task.HelpKeyword); return(true); } if (task != null && !string.IsNullOrEmpty(task.Code)) { reference = webRequest + System.Web.HttpUtility.UrlEncode(task.Code); return(true); } reference = null; return(false); }
async Task OnGoToLog(object o, EventArgs args) { var rows = view.Selection.GetSelectedRows(); if (!rows.Any()) { return; } TreeIter iter, sortedIter; if (view.Model.GetIter(out sortedIter, rows [0])) { iter = filter.ConvertIterToChildIter(sort.ConvertIterToChildIter(sortedIter)); store.SetValue(iter, DataColumns.Read, true); TaskListEntry task = store.GetValue(iter, DataColumns.Task) as TaskListEntry; if (task != null) { await OpenBuildOutputViewDocument(); if (task.Severity == TaskSeverity.Error) { await buildOutputViewContent.GoToError(task.Message, task.GetProjectWithExtension()); } else if (task.Severity == TaskSeverity.Warning) { await buildOutputViewContent.GoToWarning(task.Message, task.GetProjectWithExtension()); } else if (task.Severity == TaskSeverity.Information) { await buildOutputViewContent.GoToMessage(task.Message, task.GetProjectWithExtension()); } } } }
public void SetPrimaryError(TaskListEntry task) { this.primaryTask = task; var text = task.Description; EnsureLayoutCreated(editor); var match = mcsErrorFormat.Match(text); if (match.Success) { text = match.Groups[1].Value; } int idx = -1; for (int i = 0; i < errors.Count; i++) { if (errors[i].ErrorMessage == text) { idx = i; break; } } if (idx <= 0) { return; } var tmp = errors[idx]; errors.RemoveAt(idx); errors.Insert(0, tmp); var tmplayout = layouts[idx]; layouts.RemoveAt(idx); layouts.Insert(0, tmplayout); }
/// <summary> /// This should be called every frame to update all of the AI tasks. /// </summary> public void updateAi() { int startIndex = 0; for (int k = 0; k < this.tasks.Count; k++) { TaskListEntry entry = this.tasks[k]; ITask task = entry.task; if (entry.isRunning() && !task.canBeInterupted()) { startIndex = k; break; } } for (int i = startIndex; i < this.tasks.Count; i++) { TaskListEntry entry = this.tasks[i]; ITask task = entry.task; if (entry.isRunning()) { // Task is running // Check is the task should continue executing if (task.continueExecuting()) { // Tasks should continue. if (!task.allowLowerPriority()) { // Don't let tasks with a lower priority run break; } } else { // For whatever reason the task no longer wants to run, stop it entry.stopRunning(); } } else { // Task is not running if (task.shouldExecute()) { // If the task being looked at doesn't allow // lower priority, stop all others. if (!task.allowLowerPriority()) { for (int j = i + 1; j < this.tasks.Count; j++) { this.tasks[j].stopRunning(); } } entry.startRunning(); if (!task.allowLowerPriority()) { break; } } } } foreach (TaskListEntry entry in this.tasks) { if (entry.isRunning()) { entry.task.preform(); } } }
public void AddTask(TaskListEntry t) { AddTaskInternal(t); filter.Refilter(); }
private void BuildTaskPage() { //first remove all existing task entries foreach (TaskListEntry entry in _taskList) { GameObject.Destroy(entry.Checkmark.gameObject); GameObject.Destroy(entry.Circle.gameObject); GameObject.Destroy(entry.TaskText.gameObject); } _taskList.Clear(); float y = 0; for (int i = 0; i < GameManager.Inst.PlayerProgress.IncompleteTasks.Count; i++) { int id = GameManager.Inst.PlayerProgress.IncompleteTasks[i]; GameObject o = GameObject.Instantiate(Resources.Load("TaskListEntry")) as GameObject; TaskListEntry entry = o.GetComponent <TaskListEntry>(); entry.Checkmark.alpha = 0; entry.Circle.alpha = 1; entry.transform.parent = TaskListAnchor.transform; entry.TaskText.MakePixelPerfect(); //entry.Checkmark.MakePixelPerfect(); //entry.Circle.MakePixelPerfect(); entry.TaskText.text = GameManager.Inst.DBManager.DBHandlerStoryEvent.LoadTask(id); entry.transform.localPosition = new Vector3(0, y, 0); _taskList.Add(entry); y -= entry.TaskText.height + 15; } y -= 10; for (int i = GameManager.Inst.PlayerProgress.CompletedTasks.Count - 1; i >= 0; i--) { int id = GameManager.Inst.PlayerProgress.CompletedTasks[i]; GameObject o = GameObject.Instantiate(Resources.Load("TaskListEntry")) as GameObject; TaskListEntry entry = o.GetComponent <TaskListEntry>(); entry.Checkmark.alpha = 1; entry.Circle.alpha = 0; entry.transform.parent = TaskListAnchor.transform; entry.TaskText.MakePixelPerfect(); entry.TaskText.color = new Color(0.5f, 0.5f, 0.5f); //entry.Checkmark.MakePixelPerfect(); //entry.Circle.MakePixelPerfect(); entry.TaskText.text = GameManager.Inst.DBManager.DBHandlerStoryEvent.LoadTask(id); entry.transform.localPosition = new Vector3(0, y, 0); _taskList.Add(entry); y -= entry.TaskText.height + 15; if (y < -675) { break; } } }
static void SetText(CellRendererText textRenderer, TreeModel model, TreeIter iter, TaskListEntry task, string text) { textRenderer.Text = text; textRenderer.Weight = (int)((bool)model.GetValue(iter, DataColumns.Read) ? Pango.Weight.Normal : Pango.Weight.Bold); textRenderer.Strikethrough = task.Completed; }
public ErrorText(TaskListEntry task, bool isError, string errorMessage) { this.Task = task; this.IsError = isError; this.ErrorMessage = errorMessage; }
/// <summary> /// Логика работы планировщика выполнения задач. Выполняется в отдельном потоке. /// </summary> private void TaskSchedulerLogic() { lock (mTaskSchedulerLock) { while (true) { // Отпускаем монитор и ждём сигнала, поданного через mTaskSchedulerLock. #warning Добавить Monitor.Pulse(mTaskSchedulerLock) в случае окончания выполнения всех задач Monitor.Wait(mTaskSchedulerLock); lock (mQueuedTasksLock) { lock (mIsStoppedLock) { lock (mRunningTasksLock) { if (IsStopped && !mRunningTasks.Any() && !mQueuedTasks.Any()) { LogMessage( "Запрошена остановка пула и больше нет задач в очереди на выполнение."); LogMessage("Планировщик - Выход из потока планировщика."); // Сигнализировать об окончании выполнения последней задачи. mPoolStoppedGate.Set(); LogMessage("Завершение работы программы."); return; } } } } lock (mQueuedTasksLock) { if (!mQueuedTasks.Any()) { // Очередь задач пуста. // Продолжить ожидание. continue; } } lock (mRunningTasksLock) { if (mRunningTasks.Count >= mConcurrentTaskNumber) { // Список выполняемых задач полон. // Продолжить ожидание. continue; } } LogMessage( "Дождались появления задачи в очереди задач.", ConsoleColor.DarkRed); // Дождаться и получить следующую задачу для выполнения. TaskListEntry lTask = DequeueTask(); LogMessage("Планировщик - Получена новая задача для выполнения."); // Подписаться на событие завершения выполнения задачи. lTask.Task.Finished += OnTaskFinished; // Добавить задачу в список выполняемых задач. lock (mRunningTasksLock) { mRunningTasks.Add(lTask); } if (lTask.TaskPriority == TaskPriority.High) { // Запущена задача с высоким приоритетом. // Увеличить значение счётчика запущенных задач с высоким приоритетом на единицу. Interlocked.Increment(ref mQueuedHighPriorityTaskCounter); } else if (lTask.TaskPriority == TaskPriority.Normal) { // Запущена задача с обычным приоритетом. // Уменьшить значение счётчика запущенных задач с высоким приоритетом на HighPriorityTaskFactor. Interlocked.Add( ref mQueuedHighPriorityTaskCounter, -HighPriorityTaskFactor); } // Запустить задачу на выполнение. lTask.Task.Execute(); LogMessage( string.Format( "Планировщик - Запущена задача с приоритетом {0}.", lTask.TaskPriority), ConsoleColor.DarkYellow); lock (mRunningTasksLock) { LogMessage( string.Format( "В списке выполняющихся задач {0} задач.", mRunningTasks.Count)); } } } }
void MonoDevelop.Ide.Editor.IMessageBubbleLineMarker.AddTask(TaskListEntry task) { AddError(task, task.Severity == TaskSeverity.Error, task.Description); }
public static string GetProjectWithExtension(this TaskListEntry task) { return((task != null && task.WorkspaceObject is SolutionItem) ? Path.GetFileName(((SolutionItem)task.WorkspaceObject).FileName) : string.Empty); }
public static string GetProject(this TaskListEntry task) { return((task != null && task.WorkspaceObject is SolutionFolderItem) ? task.WorkspaceObject.Name : string.Empty); }