예제 #1
0
        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;
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
                }
            }
        }
예제 #4
0
        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();
        }