LunarPresentation/Commands/BraceToRow.cs
(开头部分) 10KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Windows;
using System.Collections.Generic;
using System.Xml;
namespace SHomeWorkshop.LunarPresentation.Commands
{
public partial class Command
{
/// <summary>
/// 只方法只应由Command.BraceToRow()的另一个无参数静态方法调用。
/// 必须保证startIndex和endIndex的正确性。否则会出现未处理异常——且不会提示。
/// </summary>
/// <param name="startBrace"></param>
/// <param name="startIndex"></param>
/// <param name="endBrace"></param>
/// <param name="endIndex"></param>
private static void BraceToRow(Expressions.Brace startBrace, int startIndex, Expressions.Brace endBrace, int endIndex)
{
if (startBrace == null || endBrace == null) return;
if (startBrace.Editor != endBrace.Editor) return;
if (startBrace.ParentPanel == null || endBrace.ParentPanel == null) return;
if (startBrace.ParentPanel != endBrace.ParentPanel) return;
if (startIndex < 0 || endIndex < 0 || startIndex >= endIndex) return;
Editor editor = startBrace.Editor;
Expressions.SubPanel parentPanel = startBrace.ParentPanel;
// 将这两个括弧间的所有公式嵌入一个新“行”中。
List<Expressions.Expression> exList = new List<Expressions.Expression>();
for (int i = startIndex + 1; i < endIndex; i++)//两个括弧本身其实不需要放到行中。
{
Expressions.Expression ex = startBrace.ParentPanel.BasePanel.Children[i] as Expressions.Expression;
if (ex != null)
{
exList.Add(ex);
}
}
ModifingItem mi = new ModifingItem() { OldSelectedExID = startBrace.ExID };
Action actDelEndBrace = new Action(endBrace.ExID,
endIndex, endBrace.GetType().Name, "DeleteExpression", endBrace.XmlData.OuterXml,
null, ActionType.Delete, parentPanel.ExID);
parentPanel.XmlData.RemoveChild(endBrace.XmlData);
parentPanel.BasePanel.Children.Remove(endBrace);
mi.Add(actDelEndBrace);
for (int i = exList.Count - 1; i >= 0; i--)
{
Expressions.Expression ex = exList[i];
Action actDelEx = new Action(ex.ExID,
parentPanel.BasePanel.Children.IndexOf(ex),
ex.GetType().Name, "DeleteExpression", ex.XmlData.OuterXml, null,
ActionType.Delete, parentPanel.ExID);
parentPanel.XmlData.RemoveChild(ex.XmlData);
parentPanel.BasePanel.Children.Remove(ex);
mi.Add(actDelEx);
后面还有 173 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。