LunarPresentation/Commands/ConvertRowsAndRichTexts.cs

(开头部分) 10KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System.Windows;
using System.Xml;
using System.Xml.Linq;

namespace SHomeWorkshop.LunarPresentation.Commands
{
    public partial class Command
    {
        /// <summary>
        /// 将准备好的“行”集合转换成一个富文本块。
        /// </summary>
        public static void ConvertRowsToRichText()
        {
            if (Globals.selectedEditor == null) return;
            if (Globals.selectedEditor.SelectedExpression == null) return;
            if (Globals.selectedEditor.SelectedExpression is Expressions.Row == false)
            {
                MessageBox.Show("请先选中一个“行”!", Globals.appName,
                    MessageBoxButton.OK, MessageBoxImage.Warning);
                return;//子面板不支持Copy。
            }

            Expressions.Row outRow = Globals.selectedEditor.SelectedExpression as Expressions.Row;

            //看看行中有无其它行。最多两层。
            //如果只有一层,则行中必须是文本块或上下标。
            //如果行中还有行,则内层的各行中只能是文本块或上下标。
            if (ValidateRows(outRow) == false)
            {
                MessageBox.Show("要转换的“行”中存在非法类型的公式。" +
                "要转换的“行”中最多再嵌套一层“行”,内层的“行”将被转换成单独一个段落。" +
                "除此而外,要转换的“行”中只允许存在“文本块”和“上下标式”。",
                    Globals.appName, MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            //转换
            XElement element = new XElement("Expression");
            element.SetAttributeValue("Type", "RichText");

            for (int i = 0; i < outRow.FirstSubPanel.BasePanel.Children.Count; i++)
            {
                Expressions.Expression ex = outRow.FirstSubPanel.BasePanel.Children[i] as Expressions.Expression;
                if (ex is Expressions.BaseText)
                {
                    ConvertBaseText(element, ex);
                }
                else if (ex is Expressions.MarkText)
                {
                    ConvertMarkText(element, ex);
                }
                else if (ex is Expressions.Row)
                {
                    Expressions.Row inRow = ex as Expressions.Row;

                    if (i > 0)
                    {
                        element.Add(new XElement("Text", string.Empty));
                    }

后面还有 213 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。