/**
 * This script will create a thumbnail of all events on the selected track
 * They will be placed in the "StoragePath" subdirectory and stored in JPEG format.
 * The base name of the thumbnail is the name of the original file.
 *
 * Written By: Edward Troxel
 * www.jetdv.com/tts
 * Modified: 05-01-2003
 **/


import System.Windows.Forms; 
import SonicFoundry.Vegas; 
import System.IO; 
import Microsoft.Win32; 



try { 
  // The first thing this script does is save off the preview & project 
  // settings that will be set later. This is so they can be restored 
  // after the script is complete. 
  var origPreviewRenderQuality = Vegas.Project.Preview.RenderQuality; 
  var origPreviewFillSize = Vegas.Project.Preview.FullSize; 
  var origFieldOrder = Vegas.Project.Video.FieldOrder; 
  var origProjectDeinterlaceMethod = Vegas.Project.Video.DeinterlaceMethod; 
  var currentTime = Vegas.Cursor; 


  //Enter the path here - below represents D:\VMedia. NOTE: \\ = \ when entering path names!
  var StoragePath = "D:\\VMedia"
  var OffSet = new Timecode("00:00:00:10");

  var track = FindSelectedTrack();
  if (null == track)
      throw "no selected track";

  // Set the preview quality and size. 
  Vegas.Project.Preview.RenderQuality = VideoRenderQuality.Best; 
  Vegas.Project.Preview.FullSize = true; 

  // Set the field order and deinterlace method 
  Vegas.Project.Video.FieldOrder = VideoFieldOrder.ProgressiveScan; 
  Vegas.Project.Video.DeinterlaceMethod = VideoDeinterlaceMethod.InterpolateFields; 

  //do all events on the selected track
  var eventEnum = new Enumerator(track.Events);
  while (!eventEnum.atEnd()) {
    var evnt : TrackEvent = TrackEvent(eventEnum.item());

    var MyFilePath = evnt.ActiveTake.MediaPath; 
    var extFileName = Path.GetFileName(MyFilePath);
    var baseFileName = Path.GetFileNameWithoutExtension(extFileName); 
    var FullFileName = Path.Combine(StoragePath, baseFileName + ".jpg")

    // save a snapshot. The SaveSnapshot method returns a 
    // member of the RenderStatus enumeration. If the user 
    // hits the escape key or quits the app, exit the loop. 
    if (Vegas.SaveSnapshot(FullFileName, ImageFileFormat.JPEG, evnt.Start + OffSet) == RenderStatus.Complete) {
      Vegas.UpdateUI(); 
    }

    eventEnum.moveNext();
  }


  // restore the project and preview settings 
  Vegas.Project.Preview.RenderQuality = origPreviewRenderQuality; 
  Vegas.Project.Preview.FullSize = origPreviewFillSize; 
  Vegas.Project.Video.FieldOrder = origFieldOrder; 
  Vegas.Project.Video.DeinterlaceMethod = origProjectDeinterlaceMethod; 
  Vegas.Cursor = currentTime; 

} catch (e) { 
  MessageBox.Show(e); 
} 




function FindSelectedTrack() : Track {
  var trackEnum = new Enumerator(Vegas.Project.Tracks);
  while (!trackEnum.atEnd()) {
    var track : Track = Track(trackEnum.item());
    if (track.Selected) {
        return track;
    }
    trackEnum.moveNext();
  }
  return null;
}

