示例#1
0
        private void SetEditorContent(String content)
        {
            SubtitlesContentModificationArea modificationArea =
                (this.Editor.EditState.Selection.Length > 0) ?
                SubtitlesContentModificationArea.Selection :
                SubtitlesContentModificationArea.Entire;

            SubtitlesEditState newEditState = null;

            if (modificationArea == SubtitlesContentModificationArea.Selection)
            {
                //Utworzenie nowego stanu edycjiu uwzględniającego zmiane długości tekstu w wyniku zmiany timingów i dostosowanie długości początkowego
                //zaznaczenia do nowej długości tekstu, tak odpowiadało ono dalej pierwotnie zaznaczonej treści.
                int       initialContentLength  = this.Editor.SubtitlesContent.Length;
                int       modifiedContentLength = content.Length;
                int       contentLengthDelta    = modifiedContentLength - initialContentLength;
                Selection adjustedSelection     = new Selection(
                    this.Editor.EditState.Selection.Start,
                    this.Editor.EditState.Selection.Length + contentLengthDelta);
                newEditState = new SubtitlesEditState(this.Editor.EditState.CaretPosition, adjustedSelection);
            }
            else
            {
                //Nie ma zaznaczenia, więc można wykorzystać niezmodyfikowany stan edycji.
                newEditState = this.Editor.EditState;
            }

            //Najpierw modyfikacja nowej zawrtości, a później stanu edycji
            //aby po zmodyfikowaniu zawrtości stan edycji był taki sam jak przed.
            SubtitlesContentModification   contentModification   = new SubtitlesContentModification(content, modificationArea);
            SubtitlesEditStateModification editStateModification = new SubtitlesEditStateModification(newEditState);

            ModificationComposer composer = new ModificationComposer();

            composer.Begin();
            composer.Add(contentModification);
            composer.Add(editStateModification);
            var modification = composer.End();

            this.Editor.PerformModification(modification);
        }
示例#2
0
        private void SetEditorContent(String content)
        {
            SubtitlesContentModificationArea modificationArea =
                Editor.EditState.Selection.Length > 0 ?
                SubtitlesContentModificationArea.Selection :
                SubtitlesContentModificationArea.Entire;

            //Najpierw modyfikacja nowej zawrtości, a później stanu edycji
            //aby po zmodyfikowaniu zawrtości stan edycji był taki sam jak przed.
            SubtitlesContentModification   contentModification   = new SubtitlesContentModification(content, SubtitlesContentModificationArea.Entire);
            SubtitlesEditStateModification editStateModification = new SubtitlesEditStateModification(Editor.EditState);

            ModificationComposer composer = new ModificationComposer();

            composer.Begin();
            composer.Add(contentModification);
            composer.Add(editStateModification);
            var modification = composer.End();

            this.Editor.PerformModification(modification);
        }
示例#3
0
        /// <summary>
        /// Konstruktor.
        /// </summary>
        /// <param name="viewManager">Obiekt menadżera widoków.</param>
        /// <param name="view">Obiekt zarządzanego przez prezentera widoku.</param>
        /// <param name="subtitlesManager">Obiekt modelu menadżera plików.</param>
        /// <param name="subtitlesEditor">Edytor napisów.</param>
        public SubtitlesPresenter(IViewManager viewManager, ISubtitlesView view, SubtitlesManager subtitlesManager, SubtitlesEditor subtitlesEditor)
            : base(viewManager, view)
        {
            this.manager = subtitlesManager;
            this.manager.CurrentSubtitlesChanged += new EventHandler <SubtitlesChangedEventArgs>(CurrentSubtitlesChangedHandler);

            this.subtitles = subtitlesManager.CurrentSubtitles;
            this.subtitles.ContentChanged += new EventHandler <SubtitlesContentChangedEventArgs>(SubtitlesContentChangedHandler);

            this.View.Content           = this.subtitles.Content;
            this.View.SelectionChanged += new EventHandler <SelectionChangedEventArgs>(ViewSelectionChangedHandler);
            this.View.ContentChanged   += new EventHandler(ViewContentChangedHandler);
            this.View.Scrolled         += new EventHandler <ScrolledEventArgs>(ViewScrolledHandler);

            this.editor = subtitlesEditor;
            this.editor.EditStateChanged += new EventHandler <SubtitlesEditStateChangedEventArgs>(EditorEditStateChangedHandler);

            this.composer = new ModificationComposer();

            this.previousLineNumberingDigits = 1;
        }