public static void ToXmlIsRoundtripInvariant() { var fragmentXml = Fragment.ToXml(); var trippedFragment = SourceFragment.FromXml(fragmentXml); Assert.AreEqual(Fragment, trippedFragment); }
LiveElement CreateChildElement(SourceFragment sourceFragment) { var elm = new LiveElement(parent: this); elm.UpdateFrom(sourceFragment.ToXml()); return(elm); }
static IElement CreateRootElement(SourceFragment fragment, string filename) { var parent = new LiveElement( AbsoluteFilePath.Parse("/project/" + filename), Observable.Never <ILookup <ObjectIdentifier, ObjectIdentifier> >(), Observable.Return(true), new Subject <Unit>(), Observer.Create <IBinaryMessage>(msg => { }), s => Element.Empty); // Panel is an example of an instance // Circle is an example of a class (called MyClass) parent.UpdateFrom(fragment.ToXml()); return(parent); }
public static IControl Create(IElement parent, Text name, SourceFragment fragment, Func <IElement, IControl> content) { var type = fragment.ToXml().Name.LocalName; var children = parent.Children .Where(e => e.Name.Is(type)) .Replay(1).RefCount(); var hasContent = children.Select(c => c.Any()); var selectedChild = children.Select(c => c.LastOrNone().Or(Element.Empty)).Switch(); var stackedContent = children .PoolPerElement(e => content(e.Switch())) .StackFromTop(separator: () => Spacer.Medium); var textColor = parent.IsReadOnly().Select(ro => ro ? Theme.DisabledText : Theme.DefaultText).Switch(); return(Layout.StackFromTop( Separator.Weak, Layout.Dock() .Left(Label.Create(name, Theme.DefaultFont, color: textColor) .CenterVertically()) .Right(ListButtons.AddButton(() => parent.Paste(fragment), isEnabled: parent.IsReadOnly().IsFalse()) .CenterVertically()) .Right(Spacer.Small) .Right(ListButtons.RemoveButton(() => selectedChild.Cut(), isEnabled: selectedChild.IsReadOnly().IsFalse()) .CenterVertically()) .Fill() .WithHeight(30) .WithInspectorPadding(), Separator.Weak.ShowWhen(hasContent), Separator.Weak.ShowWhen(hasContent), Layout.StackFromTop( Spacer.Medium, stackedContent, Spacer.Medium, Separator.Weak.ShowWhen(hasContent)) .MakeCollapsable(RectangleEdge.Bottom, hasContent))); }