private void AddMovieButton_Click(object sender, RoutedEventArgs e) { if (ProjectIsNotNull()) { var result = openMovieDialog.ShowDialog(this); if (result.GetValueOrDefault()) { if (File.Exists(openMovieDialog.FileName)) { var moviePath = openMovieDialog.FileName; var metaDataPath = String.Format("{0}.csmd", moviePath); var metaData = new ClipSynthMetaData(); if (File.Exists(metaDataPath)) { metaData.Path = metaDataPath; ClipSynthMetaData.Load(ref metaData); } else { MessageBox.Show("Meta data file not found! Please ensure you generate this movie file using ClipSynth", "ClipSynth Warning"); } var movie = new ClipSynthMovie() { Path = moviePath, Thumbnail = metaData.Thumbnail, MetaData = metaDataPath, Start = 1, End = metaData.Frames, UniqueId = project.GetUniqueId(), }; project.Movies.Add(movie); ListBox_AddItem(movie); } } project.Dirty = true; } }
private void GenerateButton_Click(object sender, RoutedEventArgs e) { #region Images mode if (settings.Mode == ClipSynthMode.Images) { // First type encountered will only be processed var fileTypes = new String[] { "jpg", "jpeg", "png", }; var checkedItems = TreeView_GetAllCheckedItems(); if (checkedItems.Count > 0) { ProgressBar.Maximum = checkedItems.Count; } else { MessageBox.Show("No items selected!", "ClipSynth Warning", MessageBoxButton.OK, MessageBoxImage.Warning); } foreach (var checkedItem in checkedItems) { ++ProgressBar.Value; ProgressBar.InvalidateVisual(); foreach (var fileType in fileTypes) { var directory = IOPath.GetFileNameWithoutExtension(checkedItem.Path); var files = Directory.GetFiles(checkedItem.Path, String.Format("*.{0}", fileType), SearchOption.TopDirectoryOnly); if (files.Length > 0) { var jobs = new StreamWriter(@"VirtualDub.jobs"); jobs.WriteLine("VirtualDub.Open(U\"{0}\");", files[0]); UInt32 width = 0, height = 0; UInt32.TryParse(WidthTextBox.Text, out width); UInt32.TryParse(HeightTextBox.Text, out height); if (width != 0 && height != 0) { jobs.WriteLine("VirtualDub.video.filters.Add(\"resize\");"); jobs.WriteLine("VirtualDub.video.filters.instance[0].Config({0}, {1}, 2);", width, height); } var filename = String.Format("{0}.{1}.avi", IOPath.Combine(checkedItem.Path, directory), fileType); var imageFileSplit = files[0].Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (imageFileSplit.Length > 0) { filename = String.Format("{0}.avi", imageFileSplit[0]); } jobs.WriteLine("VirtualDub.video.SetFrameRate2({0}, {1}, {2});", 30, 1, 1); jobs.WriteLine("VirtualDub.SaveCompatibleAVI(U\"{0}\");", filename); jobs.WriteLine("VirtualDub.Close();"); jobs.Close(); File.Delete(filename); var process = Process.Start(VirtualDubPath, "/s VirtualDub.jobs"); process.WaitForExit(); if (File.Exists(filename)) { var metaData = new ClipSynthMetaData(); metaData.Path = String.Format("{0}.csmd", filename); metaData.Movie = filename; metaData.Thumbnail = files[0]; metaData.Frames = files.Length; ClipSynthMetaData.Save(ref metaData); } } } } ProgressBar.Value = 0; ProgressBar.Maximum = 100; } #endregion #region Movies mode if (settings.Mode == ClipSynthMode.Movies) { var avs = new StreamWriter(@"VirtualDub.avs"); var jobs = new StreamWriter(@"VirtualDub.jobs"); var checkedItems = ListBox_GetAllCheckedItems(); if (checkedItems.Count > 0) { ProgressBar.Maximum = checkedItems.Count; } else { MessageBox.Show("No items selected!", "ClipSynth Warning", MessageBoxButton.OK, MessageBoxImage.Warning); avs.Close(); jobs.Close(); return; } var index = 0; foreach (var checkedItem in checkedItems) { ++ProgressBar.Value; ProgressBar.InvalidateVisual(); var filename = (string)checkedItem.Label.Tag; if (File.Exists(filename)) { avs.WriteLine("_{0} = AVISource(\"{1}\").Trim({2}, {3})", index++, filename, checkedItem.Start, checkedItem.End); } } if (index != 0) { avs.Write("_{0} = ", index); for (int i = 0; i < index; i++) { avs.Write("{0}_{1}", i != 0 ? " + " : String.Empty, i); } avs.WriteLine(); var soundtracks = SoundtrackListBox_GetAllCheckedItems(); if (soundtracks.Count > 0) { var soundtrack = (string)soundtracks[0].Label.Tag; if (File.Exists(soundtrack)) { if (IOPath.GetExtension(soundtrack) == ".mp3") { avs.Write("LoadPlugin(\"NicAudio.dll\")"); avs.Write("AudioDub(_{0}, NicMPG123Source(\"{1}\"))", index, soundtrack); avs.WriteLine(); avs.Write("DelayAudio(-{0})", soundtracks[0].Start / 30.0f); } else if (IOPath.GetExtension(soundtrack) == ".wav") { avs.Write("AudioDub(_{0}, WAVSource(\"{1}\"))", index, soundtrack); avs.WriteLine(); avs.Write("DelayAudio(-{0})", soundtracks[0].Start / 30.0f); } } } else { avs.Write("_{0}", index); } avs.Close(); var previewFilename = String.Format("{0}.avi", IOPath.Combine(IOPath.GetDirectoryName(settings.Project), "Preview")); jobs.WriteLine("VirtualDub.Open(U\"VirtualDub.avs\");"); jobs.WriteLine("VirtualDub.SaveCompatibleAVI(U\"{0}\");", previewFilename); jobs.WriteLine("VirtualDub.Close();"); jobs.Close(); File.Delete(previewFilename); var process = Process.Start(VirtualDubPath, "/s VirtualDub.jobs"); process.WaitForExit(); if (File.Exists(previewFilename)) { var result = MessageBox.Show("Generate complete. Do you want to preview now?", "ClipSynth Question", MessageBoxButton.YesNo, MessageBoxImage.Question); switch (result) { case MessageBoxResult.No: break; case MessageBoxResult.Yes: process = Process.Start(previewFilename); break; default: break; } } } else { avs.Close(); jobs.Close(); } ProgressBar.Value = 0; ProgressBar.Maximum = 100; } #endregion }
private void ListBox_AddItem(ClipSynthMovie movie) { // Meta data intelligent check/fix if (!File.Exists(movie.Thumbnail)) { var metaDataThumbnail = IOPath.Combine(IOPath.GetDirectoryName(movie.Path), IOPath.GetFileName(movie.Thumbnail)); if (File.Exists(metaDataThumbnail)) { movie.Thumbnail = metaDataThumbnail; // Fix meta data file var metaData = new ClipSynthMetaData(); metaData.Path = movie.MetaData; ClipSynthMetaData.Load(ref metaData); metaData.Movie = movie.Path; metaData.Thumbnail = metaDataThumbnail; ClipSynthMetaData.Save(ref metaData); } } var item = new ListBoxItem(); var checkBoxContent = new CheckBoxContent(movie.Path, IOPath.GetFileName(movie.Path), ListBoxCheckBox_Checked, movie.Thumbnail, movie.Start, movie.End, movie.UniqueId); checkBoxContent.Tag = movie; checkBoxContent.CheckBox.IsChecked = movie.Checked; checkBoxContent.Label.ToolTip = movie.Path; checkBoxContent.Label.Tag = movie.Path; item.Content = checkBoxContent; checkBoxContent.StartTextBox.TextChanged += ListBoxTextBox_TextChanged; checkBoxContent.EndTextBox.TextChanged += ListBoxTextBox_TextChanged; FileListBox.Items.Add(item); }