Пример #1
0
        public void ReCalculate()
        {
            if (!Input.TextArea.TextView.VisualLinesValid)
            {
                Input.TextArea.TextView.EnsureVisualLines();
            }

            var resultList = Calculator.Calculate(Input.Text);

            var outputText = "";

            for (int i = 0; i < resultList.Count; ++i)
            {
                // Line up to input
                int bound = (int)(Input.TextArea.TextView.VisualLines[i].Height / BaseLineHeight);
                // One less '\n' on the first line
                if (i == 0)
                {
                    bound--;
                }
                outputText += (bound > 0 ? (new string('\n', bound)) : "") + resultList[i] + "\u2001";
            }
            Output.Text = outputText;
            SelectionHelper?.InvalidateCache();

            // Show the splitter if necessary
            bool outputOverflowed = (outputColumn.ActualWidth - Output.ActualWidth - Output.Margin.Left - Output.Margin.Right) <= 10;

            if (outputOverflowed || Calculator.isInputOverflowed)
            {
                splitter.Visibility = Visibility.Visible;
            }
            else
            {
                splitter.Visibility = Visibility.Collapsed;
            }
        }