Example #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 == C64Studio.Parser.ParserBase.ParseMessage.LineType.WARNING)
                {
                    hasWarnings = true;
                    break;
                }
            }
            ignoreWarningToolStripMenuItem.Enabled = hasWarnings;
        }
Example #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);
        }
Example #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 == C64Studio.Parser.ParserBase.ParseMessage.LineType.WARNING)
                {
                    Core.Settings.IgnoredWarnings.Add(message.Code);
                }
            }
        }
Example #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 == C64Studio.Parser.ParserBase.ParseMessage.LineType.ERROR)
                {
                    item.ImageIndex = 0;
                    item.Text       = "0";
                }
                else if (msgType == C64Studio.Parser.ParserBase.ParseMessage.LineType.WARNING)
                {
                    item.ImageIndex = 1;
                    item.Text       = "2";
                }
                else if (msgType == C64Studio.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 == C64Studio.Parser.ParserBase.ParseMessage.LineType.ERROR)
                        {
                            childItem.ImageIndex = 0;
                            childItem.Text       = "0";
                        }
                        else if (childMessage.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.WARNING)
                        {
                            childItem.ImageIndex = 1;
                            childItem.Text       = "2";
                        }
                        else if (childMessage.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.SEVERE_WARNING)
                        {
                            childItem.ImageIndex = 2;
                            childItem.Text       = "1";
                        }
                        else
                        {
                            childItem.Text = "3";
                        }
                        childItem.SubItems.Add(documentLine.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(documentFile.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();
        }
Example #5
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 docInfos in Core.MainForm.DocumentInfos)
            {
                if ((docInfos.Type == ProjectElement.ElementType.ASM_SOURCE) &&
                    (docInfos.BaseDoc != null))
                {
                    SourceASMEx source = (SourceASMEx)docInfos.BaseDoc;

                    source.RemoveAllErrorMarkings();
                }
            }
            foreach (System.Collections.Generic.KeyValuePair <int, Parser.ParserBase.ParseMessage> msg in Parser.Messages)
            {
                int lineIndex = msg.Key;
                Parser.ParserBase.ParseMessage message = msg.Value;

                /*
                 * if ( message.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.MESSAGE )
                 * {
                 * continue;
                 * }*/
                if (Core.Settings.IgnoredWarnings.ContainsValue(message.Code))
                {
                    // ignore warning
                    continue;
                }

                string documentFile = "";
                int    documentLine = -1;
                //Debug.Log( "a" );
                Parser.DocumentAndLineFromGlobalLine(lineIndex, out documentFile, out documentLine);
                //Debug.Log( "b" );
                if (message.AlternativeFile == null)
                {
                    message.AlternativeFile      = documentFile;
                    message.AlternativeLineIndex = documentLine;
                }

                if (message.CharIndex != -1)
                {
                    if (ParsedProject == null)
                    {
                        var sourceDocInfo = Core.MainForm.DetermineDocumentByFileName(documentFile);
                        if ((sourceDocInfo != null) &&
                            (sourceDocInfo.BaseDoc != null) &&
                            (sourceDocInfo.Type == ProjectElement.ElementType.ASM_SOURCE))
                        {
                            var sourceFile = (SourceASMEx)sourceDocInfo.BaseDoc;
                            if (sourceFile != null)
                            {
                                sourceFile.MarkTextAsError(documentLine, message.CharIndex, message.Length);
                            }
                        }
                    }
                    else
                    {
                        var sourceElement = ParsedProject.GetElementByFilename(documentFile);
                        if (sourceElement != null)
                        {
                            var sourceFile = (SourceASMEx)sourceElement.Document;
                            if (sourceFile != null)
                            {
                                sourceFile.MarkTextAsError(documentLine, message.CharIndex, message.Length);
                            }
                            else
                            {
                                // TODO - have no document to mark?
                            }
                        }
                        else
                        {
                            // TODO - have no document to mark?
                        }
                    }
                }

                //dh.Log( "Error in " + lineIndex );

                ++documentLine;

                ListViewItem item = new ListViewItem();

                if (message.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.ERROR)
                {
                    item.ImageIndex = 0;
                    item.Text       = "0";
                }
                else if (message.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.WARNING)
                {
                    item.ImageIndex = 1;
                    item.Text       = "2";
                }
                else if (message.Type == C64Studio.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;

                //Debug.Log( "c" );
                listMessages.Items.Add(item);
                //Debug.Log( "d" );
                if (message.ChildMessages != null)
                {
                    foreach (var childMessage in message.ChildMessages)
                    {
                        ListViewItem childItem = new ListViewItem();

                        if (childMessage.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.ERROR)
                        {
                            childItem.ImageIndex = 0;
                            childItem.Text       = "0";
                        }
                        else if (childMessage.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.WARNING)
                        {
                            childItem.ImageIndex = 1;
                            childItem.Text       = "2";
                        }
                        else if (childMessage.Type == C64Studio.Parser.ParserBase.ParseMessage.LineType.SEVERE_WARNING)
                        {
                            childItem.ImageIndex = 2;
                            childItem.Text       = "1";
                        }
                        else
                        {
                            childItem.Text = "3";
                        }
                        childItem.SubItems.Add(documentLine.ToString());
                        childItem.SubItems.Add(childMessage.Code.ToString().Substring(0, 5));
                        childItem.SubItems.Add(documentFile.ToString());
                        childItem.SubItems.Add(childMessage.Message);
                        childItem.Tag = childMessage;

                        //Debug.Log( "c" );
                        listMessages.Items.Add(childItem);
                    }
                }
            }
            //Debug.Log( "e" );
            listMessages.Sorting            = oldOrder;
            listMessages.ListViewItemSorter = new CompileResultItemComparer(listMessagesSortColumn, listMessages.Sorting);
            //listMessages.Sort();
            //Debug.Log( "f" );
            listMessages.EndUpdate();
        }
        public int Compare(object x, object y)
        {
            Parser.ParserBase.ParseMessage msg1 = (Parser.ParserBase.ParseMessage)(((ListViewItem)x).Tag);
            Parser.ParserBase.ParseMessage msg2 = (Parser.ParserBase.ParseMessage)(((ListViewItem)y).Tag);

            int returnVal = -1;

            if (msg1 == null)
            {
                if (msg2 == null)
                {
                    returnVal = 0;
                }
                returnVal = 1;
            }
            else if (msg2 == null)
            {
                returnVal = -1;
            }

            // prio trumps col content
            if (msg2.ParentMessage == msg1)
            {
                return(-1);
            }
            else if (msg1.ParentMessage == msg2)
            {
                return(1);
            }

            // sort by parent
            if (msg1.ParentMessage != null)
            {
                msg1 = msg1.ParentMessage;
            }
            if (msg2.ParentMessage != null)
            {
                msg2 = msg2.ParentMessage;
            }
            // cols are type, line, code, file, message
            // sort by cols now

            if (col == 0)
            {
                // Type
                returnVal = IntCompare((int)msg1.Type, (int)msg2.Type);
            }
            else if (col == 1)
            {
                // line
                returnVal = IntCompare((int)msg1.AlternativeLineIndex, (int)msg2.AlternativeLineIndex);
            }
            else if (col == 2)
            {
                // code
                returnVal = IntCompare((int)msg1.Code, (int)msg2.Code);
            }
            else if (col == 3)
            {
                // file
                returnVal = string.Compare(msg1.AlternativeFile, msg2.AlternativeFile);
            }
            else if (col == 4)
            {
                // message
                returnVal = string.Compare(msg1.Message, msg2.Message);
            }

            // Determine whether the sort order is descending.
            if (order == SortOrder.Descending)
            {
                // Invert the value returned by String.Compare.
                returnVal *= -1;
            }
            return(returnVal);
        }