/// <summary> /// Изменяет свойства сцены (Форма "Свойства") /// </summary> /// <param name="CurrentSlideView">Отображение сцены для изменения</param> /// <param name="Slide">Содержит требуемые изменения</param> /// <param name="NewDefLink">Новая ссылка по умолчанию</param> /// <param name="OldDefLink">Старая ссылка по умолчанию</param> /// <param name="IsStartup">True, если сцена - стартовая для сценария</param> internal void ChangeSlideData(SlideView CurrentSlideView, Slide Slide, SlideLink NewDefLink, bool IsStartup) { Model.HistoryManager.StartAtomicAction(CommandDescr.EditSlideDescr); Slide.Modified = DateTime.Now; string authorName = identity.User.FullName; if (String.IsNullOrEmpty(authorName)) authorName = identity.User.Name; Slide.Author = authorName; Model.HistoryManager.RecordPropertyChanged(CurrentSlideView, String.Empty, "Slide"); Slide.CopyTo(CurrentSlideView.Slide); if (NewDefLink != null) { RefreshDefaultLinkForSlide(CurrentSlideView, NewDefLink); foreach (var link in CurrentSlideView.GetOutgoingLinks().Except(new[] { NewDefLink })) { Model.HistoryManager.RecordPropertyChanged(link, String.Empty, "IsDefault"); link.IsDefault = false; } } bool updateStartup = false; if (IsStartup) { Model.HistoryManager.RecordPropertyChanged(this, String.Empty, "m_startSlideId"); StartSlide = CurrentSlideView; updateStartup = true; } else { if (StartSlide.Slide.Id == CurrentSlideView.Slide.Id && SlideCount > 1) { Model.HistoryManager.RecordPropertyChanged(this, String.Empty, "m_startSlideId"); StartSlide = Model.Nodes.OfType<SlideView>().Except(new[] { CurrentSlideView }).First(); updateStartup = true; } } RefreshDefaultSlidePath(false); Model.HistoryManager.EndAtomicAction(); if (updateStartup) UpdateStartSlide(); }