Exemple #1
0
        private void UpdateCurrentTemplate()
        {
            var viewModel = ViewModel;

            if (viewModel == null)
            {
                return;
            }

            UpdateStack();
            UpdateAttributes();
            viewModel.Bytecode = currentTemplate.impl.Disassemble();
            viewModel.Ast      = currentTemplate.impl.ast;

            SetSelectionPath(viewModel.TemplateCallHierarchy[0], currentTemplate.GetEnclosingInstanceStack(true));

            TemplateTextBox.Document = new FlowDocument(new Paragraph(new Run(currentTemplate.impl.template)
            {
                FontFamily = new FontFamily("Consolas")
            }));
            Interval r = currentTemplate.impl.TemplateRange;

            if (currentTemplate.EnclosingInstance != null)
            {
                int i = GetIndexOfChild((DebugTemplate)currentTemplate.EnclosingInstance, currentTemplate);
                if (i == -1)
                {
                    Highlight(OutputTextBox.Document, null);
                    Highlight(TemplateTextBox.Document, r);
                }
                else
                {
                    InterpEvent e = ViewModel.Visualizer.Interpreter.GetEvents(currentTemplate.EnclosingInstance)[i];
                    if (e is EvalTemplateEvent)
                    {
                        if (currentTemplate.IsAnonymousSubtemplate)
                        {
                            Highlight(TemplateTextBox.Document, r);
                        }

                        Highlight(OutputTextBox.Document, e.OutputInterval);
                    }
                }
            }
            else
            {
                Highlight(OutputTextBox.Document, null);
                Highlight(TemplateTextBox.Document, r);
            }
        }