private void LoadPresentation(bool rememberSelected)
        {
            Slide selected = SelectedSlide;

            if (rememberSelected)
                PresentationController.Instance.SuppressLayoutChanging = true;

            this.Model.BeginUpdate();
            this.Model.Clear();

            Presentation.Presentation m_Presentation = PresentationController.Instance.Presentation;
            PresentationInfo m_PresentationInfo = PresentationController.Instance.PresentationInfo;

            _inited = true;
            Author = m_PresentationInfo.Author;

            using (SplashForm form = SplashForm.CreateAndShowForm(false, false))
            {
                //create views for slides
                m_Presentation.SlideList.ForEach(slide =>
                {
                    form.Status = "Обработка сцены " + slide.Name;
                    form.Progress = (int)((float)(m_Presentation.SlideList.IndexOf(slide) + 1) / m_Presentation.SlideList.Count * 100.0f);

                    PointF? point = null;
                    if (m_Presentation.SlidePositionList.ContainsKey(slide.Id))
                    {
                        point = m_Presentation.SlidePositionList[slide.Id];
                    }

                    //slide.State = SlideState.Normal;
                    CreateSlideView(slide, point ?? GetNextSlideViewPos());
                });

                m_Presentation.SlideList.ForEach(slide =>
                {
                    slide.LinkList().ForEach(link =>
                    {
                        form.Status = "Обработка связи " + slide.Name;
                        form.Progress = (int)((slide.LinkList().IndexOf(link) + 1) / (float)slide.LinkList().Count * 100.0f);

                        SlideView v1 = slideViews(slide);
                        SlideView v2 = slideViews(link.NextSlide);
                        SlideLink slidelink = new SlideLink(PointF.Empty, PointF.Empty);

                        v1.CentralPort.TryConnect(slidelink.TailEndPoint);
                        v2.CentralPort.TryConnect(slidelink.HeadEndPoint);

                        slidelink.IsDefault = link.IsDefault;

                        Model.AppendChild(slidelink);
                        slidelink.Refresh();
                    });
                });

                StartSlide = slideViews(m_Presentation.StartSlide);
                StartSlide.IsStartSlide = true;

                UpdateStartSlide();
                RefreshDefaultSlidePath(true);

                SlideIdenty = new Identity(m_Presentation.SlideList.Max(s => s.Id));

                m_PresentationInfo.SlideInfoList.ForEach(s =>
                {
                    var slides = m_Presentation.SlideList.Where(slide => slide.Id == s.Id);
                    if (slides.Count() > 0)
                    {
                        //slideViews(slides.First()).IsLocked = s.LockingInfo != null;
                        if (s.LockingInfo != null)
                            slideViews(slides.First()).Lock(s.LockingInfo.RequireLock == RequireLock.ForEdit);
                        else
                            slideViews(slides.First()).Unlock();
                    }
                });
            }
            this.Model.EndUpdate();
            Model.HistoryManager.ClearHistory();

            if (selected != null && selected.IsLocked && PresentationController.Instance.CanUnlockSlide(selected))
            {
                Slide selClone = m_Presentation.SlideList.Where(s => s.Id == selected.Id).FirstOrDefault();
                if (selClone != null)
                {
                    selClone.SourceList.Clear();
                    selClone.SourceList.AddRange(selected.SourceList);

                    selClone.DisplayList.Clear();
                    foreach (Display d in selected.DisplayList)
                    {
                        Display newDisplay = d.Type.CreateNewDisplay();
                        selClone.DisplayList.Add(newDisplay);
                        foreach (Window w in d.WindowList)
                        {
                            newDisplay.WindowList.Add(w.SimpleClone());
                        }
                    }


                    if (rememberSelected && selected != null)
                    {
                        SelectSlideView(slideViews(selClone));
                    }
                }
            }
            PresentationController.Instance.SuppressLayoutChanging = false;
        }