private void contextCompilerMessage_Opening(object sender, CancelEventArgs e) { copyListToClipboardToolStripMenuItem.Enabled = (listMessages.Items.Count != 0); if (listMessages.SelectedItems.Count == 0) { ignoreWarningToolStripMenuItem.Enabled = false; jumpToFileToolStripMenuItem.Enabled = false; return; } jumpToFileToolStripMenuItem.Enabled = true; copyListToClipboardToolStripMenuItem.Enabled = true; bool hasWarnings = false; foreach (ListViewItem item in listMessages.SelectedItems) { Parser.ParserBase.ParseMessage message = (Parser.ParserBase.ParseMessage)item.Tag; if (message.Type == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.WARNING) { hasWarnings = true; break; } } ignoreWarningToolStripMenuItem.Enabled = hasWarnings; }
private void JumpToFile(ListViewItem Item) { Parser.ParserBase.ParseMessage Message = (Parser.ParserBase.ParseMessage)Item.Tag; int lineNumber = -1; int.TryParse(Item.SubItems[1].Text, out lineNumber); string fileToJumpTo = Item.SubItems[3].Text; if (Message.AlternativeFile != null) { fileToJumpTo = Message.AlternativeFile; lineNumber = Message.AlternativeLineIndex + 1; } // double click override last shown message index int index = 0; foreach (var message in Core.Navigating.CompileMessages) { if (message.Value == Message) { Core.Navigating.LastShownMessageIndex = index; break; } ++index; } Core.Navigating.OpenDocumentAndGotoLine(m_ListProject, Core.Navigating.FindDocumentInfoByPath(fileToJumpTo), lineNumber - 1); }
private void ignoreWarningToolStripMenuItem_Click(object sender, EventArgs e) { foreach (ListViewItem item in listMessages.SelectedItems) { Parser.ParserBase.ParseMessage message = (Parser.ParserBase.ParseMessage)item.Tag; if (message.Type == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.WARNING) { Core.Settings.IgnoredWarnings.Add(message.Code); } } }
public void UpdateFromMessages(Parser.ParserBase Parser, Project ParsedProject) { if (InvokeRequired) { Invoke(new UpdateFromMessagesCallback(UpdateFromMessages), new object[] { Parser, ParsedProject }); return; } m_ListProject = ParsedProject; ClearMessages(); listMessages.BeginUpdate(); SortOrder oldOrder = listMessages.Sorting; listMessages.Sorting = SortOrder.None; listMessages.ListViewItemSorter = null; foreach (var docInfo in Core.MainForm.DocumentInfos) { var compilableDoc = docInfo.CompilableDocument; compilableDoc?.RemoveAllErrorMarkings(); } foreach (System.Collections.Generic.KeyValuePair <int, Parser.ParserBase.ParseMessage> msg in Parser.Messages) { int lineIndex = msg.Key; Parser.ParserBase.ParseMessage message = msg.Value; var msgType = message.Type; if (Core.Settings.IgnoredWarnings.ContainsValue(message.Code)) { // ignore warning continue; } string documentFile = ""; int documentLine = -1; Parser.DocumentAndLineFromGlobalLine(lineIndex, out documentFile, out documentLine); if (message.AlternativeFile == null) { message.AlternativeFile = documentFile; message.AlternativeLineIndex = documentLine; } if (message.CharIndex != -1) { CompilableDocument compilableDoc = null; if (ParsedProject == null) { var sourceDocInfo = Core.MainForm.DetermineDocumentByFileName(documentFile); if (sourceDocInfo != null) { compilableDoc = sourceDocInfo.CompilableDocument; } } else { var sourceElement = ParsedProject.GetElementByFilename(documentFile); if (sourceElement != null) { if (sourceElement.Document != null) { compilableDoc = sourceElement.DocumentInfo.CompilableDocument; } } } compilableDoc?.MarkTextAsError(documentLine, message.CharIndex, message.Length); } ++documentLine; ListViewItem item = new ListViewItem(); if (msgType == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.ERROR) { item.ImageIndex = 0; item.Text = "0"; } else if (msgType == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.WARNING) { item.ImageIndex = 1; item.Text = "2"; } else if (msgType == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.SEVERE_WARNING) { item.ImageIndex = 2; item.Text = "1"; } else { item.Text = "3"; } item.SubItems.Add(documentLine.ToString()); string messageCode = message.Code.ToString(); if (messageCode.Length >= 5) { item.SubItems.Add(messageCode.Substring(0, 5)); } else { item.SubItems.Add(messageCode); } if (documentFile != null) { item.SubItems.Add(documentFile.ToString()); } else { item.SubItems.Add("--"); } item.SubItems.Add(message.Message); item.Tag = message; listMessages.Items.Add(item); if (message.ChildMessages != null) { foreach (var childMessage in message.ChildMessages) { ListViewItem childItem = new ListViewItem(); if (childMessage.Type == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.ERROR) { childItem.ImageIndex = 0; childItem.Text = "0"; } else if (childMessage.Type == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.WARNING) { childItem.ImageIndex = 1; childItem.Text = "2"; } else if (childMessage.Type == RetroDevStudio.Parser.ParserBase.ParseMessage.LineType.SEVERE_WARNING) { childItem.ImageIndex = 2; childItem.Text = "1"; } else { childItem.Text = "3"; } int messageDocLine = documentLine; if (childMessage.AlternativeLineIndex != -1) { messageDocLine = childMessage.AlternativeLineIndex; } string messageDoc = documentFile; if (!string.IsNullOrEmpty(childMessage.AlternativeFile)) { messageDoc = childMessage.AlternativeFile; } childItem.SubItems.Add(messageDocLine.ToString()); if (childMessage.Code.ToString().Length >= 5) { childItem.SubItems.Add(childMessage.Code.ToString().Substring(0, 5)); } else { childItem.SubItems.Add(childMessage.Code.ToString()); } childItem.SubItems.Add(messageDoc.ToString()); childItem.SubItems.Add(childMessage.Message); childItem.Tag = childMessage; listMessages.Items.Add(childItem); } } } listMessages.Sorting = oldOrder; listMessages.ListViewItemSorter = new CompileResultItemComparer(listMessagesSortColumn, listMessages.Sorting); listMessages.EndUpdate(); }