public static void FlattenToPathObject(this IObject3D item, UndoBuffer undoBuffer) { if (item is IPathObject pathObject) { using (item.RebuildLock()) { var newPathObject = new PathObject3D(); newPathObject.VertexSource = new VertexStorage(pathObject.VertexSource); // and replace us with the children var replaceCommand = new ReplaceCommand(new[] { item }, new[] { newPathObject }); if (undoBuffer != null) { undoBuffer.AddAndDo(replaceCommand); } else { replaceCommand.Do(); } newPathObject.MakeNameNonColliding(); } } }
public LibraryCollectionContainer() { this.ChildContainers = new List <ILibraryContainerLink>(); this.Items = new List <ILibraryItem>(); this.Name = "Library".Localize(); var rootLibraryCollection = Datastore.Instance.dbSQLite.Table <PrintItemCollection>().Where(v => v.Name == "_library").Take(1).FirstOrDefault(); if (rootLibraryCollection != null) { this.ChildContainers.Add( new DynamicContainerLink( () => "Local Library".Localize(), StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")), StaticData.Instance.LoadIcon(Path.Combine("Library", "local_library_icon.png")), () => new SqliteLibraryContainer(rootLibraryCollection.Id))); } this.ChildContainers.Add( new DynamicContainerLink( () => "Calibration Parts".Localize(), StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")), StaticData.Instance.LoadIcon(Path.Combine("Library", "calibration_library_icon.png")), () => new CalibrationPartsContainer()) { IsReadOnly = true }); this.ChildContainers.Add( new DynamicContainerLink( () => "Primitives".Localize(), StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")), StaticData.Instance.LoadIcon(Path.Combine("Library", "primitives_library_icon.png")), () => new PrimitivesContainer()) { IsReadOnly = true }); var forceAddQueue = false; #if DEBUG forceAddQueue = true; #endif // only add the queue if there are items in it var queueItems = QueueData.Instance.PrintItems.ToList(); if (forceAddQueue || queueItems.Any()) { this.ChildContainers.Add( new DynamicContainerLink( () => "Print Queue".Localize(), StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")), StaticData.Instance.LoadIcon(Path.Combine("Library", "queue_icon.png")), () => new PrintQueueContainer())); } #if DEBUG this.ChildContainers.Add( new DynamicContainerLink( () => "Pipe Works".Localize(), StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")), null, () => new PipeWorksContainer()) { IsReadOnly = true }); int index = 0; this.ChildContainers.Add( new DynamicContainerLink( () => "Experimental".Localize(), StaticData.Instance.LoadIcon(Path.Combine("Library", "folder.png")), null, () => new DynamicContainer() { Items = new List <ILibraryItem>() { new GeneratorItem( () => "Calibration Tab".Localize(), async() => await XyCalibrationTabObject3D.Create()) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Calibration Face".Localize(), async() => await XyCalibrationFaceObject3D.Create()) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Text2".Localize(), async() => await TextPathObject3D.Create()) { DateCreated = new System.DateTime(index++) }, new GeneratorItem( () => "Path".Localize(), () => { var storage = new VertexStorage(); storage.MoveTo(5, 5); storage.LineTo(10, 5); storage.LineTo(7.5, 10); storage.ClosePolygon(); var path = new PathObject3D() { VertexSource = storage }; return(Task.FromResult <IObject3D>(path)); }) { DateCreated = new System.DateTime(index++) }, } }) { IsReadOnly = true }); #endif }