internal void Initialize(IServiceProvider serviceProvider)
        {
            this.ServiceProvider = serviceProvider;
            var cursorData = serviceProvider.GetRequiredService <ICursorProjectData>();

            this._bindingWatchers = new List <BindingWatcherBase>();
            {
                var bw = new BindingWatcher <long?>(cursorData, "CursorMs");
                bw.BindingChanged += (s, e) =>
                {
                    this.CursorMs = (long?)e.NewValue;
                };
                this.CursorMs = (long?)cursorData.CursorMs;
                this._bindingWatchers.Add(bw);
            }

            var tlp = this.ServiceProvider.GetRequiredService <ITimelineProjectData>();
            {
                Binding b = new Binding("ViewMs.StartMs");
                b.Source = tlp;
                this.SetBinding(StartMsProperty, b);
            }
            {
                Binding b = new Binding("ViewMs.EndMs");
                b.Source = tlp;
                this.SetBinding(EndMsProperty, b);
            }
        }
        public MainWindow(IServiceProvider serviceProvider)
        {
            this.ServiceProvider = serviceProvider;
            var appState = this.ServiceProvider.GetRequiredService <AppState>();

            InitializeComponent();
            this.x_Grid.DataContext = appState;
            this.InitializeMenu();
            this._bindingWatchers = new List <BindingWatcherBase>();
            {
                var bw = new BindingWatcher <string>(appState, "Project.ProjectData.Text");
                bw.BindingChanged += async(s, e) =>
                {
                    OnProjectTextChanged(e.OldValue, e.NewValue);
                    RequestSubtitleUpdate();
                }

                ;
                RequestSubtitleUpdate();
                this._bindingWatchers.Add(bw);
            }


            {
                var bw = new BindingWatcher <long?>(appState, "Project.IsDirty");
                bw.BindingChanged += (s, e) =>
                {
                    this.SetTitle();
                }

                ;
                this.SetTitle();
                this._bindingWatchers.Add(bw);
            }

            this.InvalidateCommandMenus();
        }
示例#3
0
        public void Initialize(IServiceProvider serviceProvider)
        {
            this.ServiceProvider = serviceProvider;
            InvalidateCommandMenus();

            this.x_CursorControl.Initialize(ServiceProvider);

            this.Media.ScrubbingEnabled = true;

            this._bindingWatchers = new List <BindingWatcherBase>();

            var projectSettings  = this.ServiceProvider.GetRequiredService <IVideoPlayerProjectSettings>();
            var projectData      = this.ServiceProvider.GetRequiredService <IVideoPlayerProjectData>();
            var videoPlayerState = this.ServiceProvider.GetRequiredService <IVideoPlayerState>();

            {
                var bw = new BindingWatcher <string>(projectSettings, "VideoFilePath");
                bw.BindingChanged += (s, e) =>
                {
                    SetMediaSource((string)e.NewValue);
                }

                ;
                SetMediaSource(bw.BoundProperty);
                this._bindingWatchers.Add(bw);
            }

            {
                var bw = new BindingWatcher <SmpteFrameRate>(projectSettings, "FrameRate");
                bw.BindingChanged += (s, e) =>
                {
                    this.SyncVideoCursor();
                }

                ;
                this._bindingWatchers.Add(bw);
            }

            {
                var bw = new BindingWatcher <long>(projectSettings, "OffsetFrames");
                bw.BindingChanged += (s, e) =>
                {
                    this.SyncVideoCursor();
                };
                this._bindingWatchers.Add(bw);
            }

            {
                var bw = new BindingWatcher <long?>(projectData, "CursorMs");
                bw.BindingChanged += (s, e) =>
                {
                    this.SyncVideoCursor();
                };
                this.SyncVideoCursor();
                this._bindingWatchers.Add(bw);
            }

            {
                var bw = new BindingWatcher <long?>(videoPlayerState, "SpeedRatio");
                bw.BindingChanged += (s, e) =>
                {
                    this.Media.SpeedRatio = videoPlayerState != null ? videoPlayerState.SpeedRatio : 1.0;
                }

                ;
                this.Media.SpeedRatio = videoPlayerState != null ? videoPlayerState.SpeedRatio : 1.0;
                this._bindingWatchers.Add(bw);
            }

            {
                BindMediaRenderingEvents();
            }



            //this.Media.Source = new Uri(ViewModel.FilePath);
            // Global FFmpeg message handlerx_StackPanel_TimelineCommands
            Unosquare.FFME.MediaElement.FFmpegMessageLogged += OnMediaFFmpegMessageLogged;
            Media.MessageLogged += OnMediaMessageLogged;
            Media.MediaFailed   += OnMediaFailed;
            Media.MediaOpened   += this.Media_MediaOpened;
            Media.SourceUpdated += (s, e) =>
            {
            }

            ;
            Media.PositionChanged += (s, e) =>
            {
                var projectData = this.ServiceProvider.GetRequiredService <IVideoPlayerProjectData>();
                projectData.CursorMs = (long)this.Media.ActualPosition?.TotalMilliseconds;
            }

            ;

            /* #endregion*/
        }