global proc jpSetSceneRanges() { int $jpSSRnumOfScenes = `optionVar -q "jpSSRnumOfScenes"`; string $jpSSRprojName = `optionVar -q "jpSSRprojName"`; string $jpSSRrangeFile = `optionVar -q "jpSSRrangeFile"`; string $winName = "setSceneRangesWin"; if (`window -exists $winName`) deleteUI $winName; window -t "Set Scene Ranges" //-wh 140 500 -rtf 1 -mnb 1 -mxb 0 -menuBar 1 $winName ; menu -l "File" jpSSRfileMenu; menuItem -l "Read..." -p jpSSRfileMenu -c "jpSSRreadDialog();jpSetSceneRanges();jpSetSceneRanges();" jpSSRreadMenuItem; menuItem -l "Write..." -en 1 -p jpSSRfileMenu -c "jpSSRwriteDialog()" jpSSRwriteMenuItem; menuItem -l "Refresh" -p jpSSRfileMenu -c "jpSetSceneRanges()" jpSSRrefreshMenuItem; columnLayout -w 140; rowColumnLayout -nc 2 -cw 1 90 -cw 2 40; text -fn "boldLabelFont" -l "Num of Scenes:"; intFieldGrp -h 25 -w 10 -en 1 -nf 1 -cal 1 "right" -v1 $jpSSRnumOfScenes -cc ("jpSSRUpdateNumOfScenes()") numOfScenesGrp; setParent ..; textFieldGrp -cw 1 45 -cw 2 85 -tx $jpSSRprojName -l "Project:" -cc ("optionVar -sv \"jpSSRprojName\" `textFieldGrp -q -tx projNameGrp`") projNameGrp; button -h 25 -w 130 -al "center" -l "Range All" -c "jpSSRRangeAll()"; separator -w 130; text -fn "boldLabelFont" -l " Scenes:"; int $numOfScenes; if($jpSSRnumOfScenes != 0) { $numOfScenes = $jpSSRnumOfScenes; }//end if else { $numOfScenes = 1; }//end else int $start; int $end; for($scene=1; $scene <= $numOfScenes; $scene++) { string $padScene = jpPadNumber($scene, 2); rowColumnLayout -nc 3 -cw 1 70 -cw 2 60; button -h 25 -w 70 -en 1 -al "center" -l ("sc" + $padScene) -c ("jpSetRange(`intFieldGrp -q -v1 " + ("scene" + $padScene + "RangeGrp") + "`,`intFieldGrp -q -v2 " + ("scene" + $padScene + "RangeGrp") + "`)"); intFieldGrp -h 25 -w 100 -en 1 -nf 2 -cal 1 "right" -cw 1 30 -cal 2 "right" -cw 2 30 ("scene" + $padScene + "RangeGrp"); setParent ..; }//end for if($jpSSRrangeFile != 0) { jpSSRread($jpSSRrangeFile, "txt"); }//end if showWindow $winName; }//end proc jpSetSceneRanges global proc jpSSRUpdateNumOfScenes() { int $newNumOfScenes = `intFieldGrp -q -v1 numOfScenesGrp`; optionVar -iv "jpSSRnumOfScenes" $newNumOfScenes; jpSetSceneRanges(); }//end proc jpSSRUpdateNumOfScenes global proc jpSetRange(int $start, int $end) { if($start != 0 && $end != 0) { playbackOptions -min $start; playbackOptions -ast $start; playbackOptions -aet $end; playbackOptions -max $end; }//end if }//end proc jpSetRange global proc jpSSRRangeAll() { string $padScene = jpPadNumber(1, 2); int $newNumOfScenes = `intFieldGrp -q -v1 numOfScenesGrp`; int $min = `intFieldGrp -q -v1 ("scene" + $padScene + "RangeGrp")`; string $padScene = jpPadNumber($newNumOfScenes, 2); int $max = `intFieldGrp -q -v2 ("scene" + $padScene + "RangeGrp")`; if($min == 0) { $min = 1; }//end if jpSetRange($min, $max); }//end proc jpSetAllRange global proc jpSSRreadDialog() { global string $jpSSRreadFile; fileBrowserDialog -m 0 -fc "jpSSRread" -an "PickFile"; }//end proc jpVCsetPathDialog global proc jpSSRread(string $fileName, string $fileType) { global string $jpSSRreadFile; string $scenes[] = jpReadLines($fileName); int $numOfScenes = int($scenes[0]); intFieldGrp -e -v1 $numOfScenes numOfScenesGrp; optionVar -iv "jpSSRnumOfScenes" $numOfScenes; string $projName = $scenes[1]; textFieldGrp -e -tx $projName projNameGrp; optionVar -sv "jpSSRprojName" $projName; for($scene = 1; $scene <= $numOfScenes; $scene++) { string $padScene = jpPadNumber($scene, 2); string $startEnd[]; tokenize $scenes[$scene + 1] ":" $startEnd; int $start = int($startEnd[0]); int $end = int($startEnd[1]); catchQuiet(`intFieldGrp -e -v1 $start ("scene" + $padScene + "RangeGrp")`); catchQuiet(`intFieldGrp -e -v2 $end ("scene" + $padScene + "RangeGrp")`); }//end for optionVar -sv "jpSSRrangeFile" $fileName; }//end proc jpSSRread ///////////////////// //Read lines from file ///////////////////// global proc string[] jpReadLines(string $file) { string $lines[]; if(!`filetest -r $file`) { warning ("File Not Found: " + $file); }//end if int $fileID = `fopen $file r`; string $nextLine = `fgetline $fileID`; int $i = 0; while ( size( $nextLine ) > 0 ) { string $tokContents[]; int $tokNumber = `tokenize $nextLine "\n" $tokContents`; if($tokNumber > 0) { $lines[$i] = $tokContents[0]; $i++; }//end if //$scenes[$i] = $nextLine; $nextLine = `fgetline $fileID`; //$i++; }//end while fclose $fileID; return $lines; }//end proc global proc jpSSRwriteDialog() { global string $jpSSRreadFile; fileBrowserDialog -m 1 -fc "jpSSRwriteRanges" -an "SaveRanges"; }//end proc jpVCsetPathDialog global proc jpSSRwriteRanges(string $file, string $fileType) { int $fileID = `fopen $file w`; int $numOfScenes = `intFieldGrp -q -v1 numOfScenesGrp`; fprint $fileID ($numOfScenes + "\n"); string $projName = `textFieldGrp -q -tx projNameGrp`; fprint $fileID ($projName + "\n"); int $start; int $end; for($scene = 1; $scene <= $numOfScenes; $scene++) { string $padScene = jpPadNumber($scene, 2); $start = `intFieldGrp -q -v1 ("scene" + $padScene + "RangeGrp")`; $end = `intFieldGrp -q -v2 ("scene" + $padScene + "RangeGrp")`; fprint $fileID ($start + ":" + $end + "\n"); }//end for fclose $fileID; }//end proc