Exemplo n.º 1
0
        /// <summary>
        /// Validate slide. We guarantee that Validate() will be called after BuildUp()
        /// </summary>
        public virtual void Validate(SlideLoadingContext context)
        {
            var slideLoadingContext = new SlideBuildingContext(context, this);

            foreach (var block in Blocks)
            {
                block.Validate(slideLoadingContext);
            }
        }
Exemplo n.º 2
0
        public Slide Load(byte[] fileContent, SlideLoadingContext context)
        {
            var slideFile = context.SlideFile ?? new FileInfo("<internal>");

            var slideType = DetectSlideType(fileContent, slideFile.Name);

            var slide = (Slide)fileContent.DeserializeXml(slideType);

            slide.BuildUp(context);

            slide.Validate(context);

            return(slide);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Building slide and blocks, fill properties, initialize some values. Any work we need to do before work with slide.
        /// </summary>
        public virtual void BuildUp(SlideLoadingContext context)
        {
            Meta?.FixPaths(context.SlideFile);
            Info = new SlideInfo(context.Unit, context.SlideFile);
            if (Blocks == null)
            {
                Blocks = new SlideBlock[0];
            }

            /* Validate block types. We should do it before building up blocks */
            CheckBlockTypes();

            /* ... and build blocks */
            var slideLoadingContext = new SlideBuildingContext(context, this);

            Blocks = Blocks.SelectMany(b => b.BuildUp(slideLoadingContext, ImmutableHashSet <string> .Empty)).ToArray();

            DefineBlockTypes();
        }
Exemplo n.º 4
0
 public SlideBuildingContext(SlideLoadingContext slideContext, Slide slide)
     : this(slideContext.CourseId, slideContext.Unit, slideContext.CourseSettings, slideContext.CourseDirectory, slide)
 {
 }
Exemplo n.º 5
0
        /// <summary>
        /// Loads slide from XML file
        /// </summary>
        /// <returns>Slide, QuizSlide or ExerciseSlide object</returns>
        public Slide Load(SlideLoadingContext context)
        {
            var fileContent = context.SlideFile.ReadAllContent();

            return(Load(fileContent, context));
        }