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(); }
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*/ }