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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。