public ProjectKeyframeOverview(FileTreeObject fileTreeObject, ProjectManager projectManager, FFmpegManager ffmpegManager, DefaultCodecHeaderManager defaultCodecHeaderManager, FullFileScanner fullFileScanner, Creator <SelectingKeyframe> selectingKeyframeCreator) { if (_activeInstance != null) { throw new Exception("It's not allowed to create multiple ProjectKeyframeOverview windows."); } _activeInstance = this; _fileTreeObject = fileTreeObject; _projectManager = projectManager; _ffmpegManager = ffmpegManager; _defaultCodecHeaderManager = defaultCodecHeaderManager; _fullFileScanner = fullFileScanner; _selectingKeyframeCreator = selectingKeyframeCreator; InitializeComponent(); ReportProgressComplete(); _resultRows = new List <ProjectKeyframeOverviewRow>(); resultsTree.DataSource = _resultRows; projectManager.ProjectChanged += new EventHandler <ProjectChangedEventArgs>(projectManager_ProjectChanged); defaultCodecHeaderManager.CodecHeaderChanged += new DefaultCodecHeaderManager.DefaultCodecHeaderChangeHandler(defaultCodecHeaderManager_CodecHeaderChanged); fullFileScanner.ScanNextCodecStreamOnInvalidation = true; fullFileScanner.ScanMoreThanOneFragment = false; fullFileScanner.ScanProgressChanged += new ProgressChangedEventHandler(fullFileScanner_ScanProgressChanged); fullFileScanner.ResultDetected += new FullFileScanner.ResultDetectedHandler(fullFileScanner_ResultDetected); fullFileScanner.ScanCompleted += new FullFileScanner.ScanCompleteHandler(fullFileScanner_ScanCompleted); fullFileScanner.ScanNumCodecStreams = 1; // Limit to only 1 codecstream, otherwise the scan will take to long }
protected override void OnClosing(CancelEventArgs e) { base.OnClosing(e); if (NumKeyframeRows > 0 && !AskSureCloseProjectKeyframeOverview()) { e.Cancel = true; return; } StopKeyframeScan(); _activeInstance = null; }