How The SwapClips Script Works
1. Reads previous PROJECT, CLIP, LAYER and FRAME info from CONFIG.INI file into four variables.
2. Reads the current PROJECT, CLIP, LAYER and FRAME, storing in another four variables.
3. Restores to previous PROJECT, CLIP, LAYER and FRAME.
4. Finally, saves current PROJECT, CLIP, LAYER and FRAME into the CONFIG.INI file.
It is simply a toggle between two frames , they can be in the SAME project and clip and layer, or from completely DIFFERENT projects, clips and/or layers.
If you move to a new project, clip, layer or frame, that becomes the new frame that the script reads in step two and saves in step four.
So, you can simply toggle between two frames, back and forth, then change SOURCE or TARGET frame at any time.
How I use the script/button:
During my drawing process, I often select, then stamp frames from my current AnimBrush. But that requires me to page through the AnimBrush frames every time I reload the AnimBrush.
I wanted the freedom to access and clip from a larger source library of stamp-able images.
The SwapClips script lets me have a SOURCE project open, with an unlimited collection of stamp-able images, from which to grab, in a few simple clicks using the SwapClips button.
To streamline the retrieval I have assigned the SwapClips button to a Shortcut key( T ) which acts as a toggle between SOURCE frame and TARGET frame. I have also assigned the Copy-It-Out button to an adjoining Shortcut key( R ) right next to the SwapClips Shortcut key which makes it quick and easy to retrieve any stamp-able image in four strokes.
To be clear, if I want a different SOURCE frame, I change to the new SOURCE frame when I am on the current SOURCE frame. If I want a different TARGET frame, I change to the new TARGET frame when I am on the current TARGET frame.
Code: Select all
// SwapClips.grg // Svengali © 2020 // ( May ) 2020 - ver .1 // Swaps between different Frames, from the same or different Layers, from the same or different Clips // from the same or different projects: // Stores Project/Clip/Layer/Frame information for the alternate frame in the SAME four strings // under a single CONFIG.INI group name. // each time you swap, the previous location is stored, consisting of info on Project/clip/layer/frame. // for example, you might use clip/layer/frame ONE as an image source library from which to cut/copy images... // then use clip/layer/frame/ TWO... any individual frame where images are to be stamped... Param none ScriptName = "SwapClips" tv_LockDisplay QUIET // suspend display during frame swaps // ============== Read stored info for previous frame from user string ============================ tv_ReadUserString "SwapClips" "ProjectID" // read stored project ID PreviousProjectID = result // store as previous project ID tv_ReadUserString "SwapClips" "ClipID" // read stored clip ID PreviousClipID = result // store as previous clip ID tv_ReadUserString "SwapClips" "LayerID" // read stored layer ID PreviousLayerID = result // store as previous layer ID tv_ReadUserString " SwapClips" "Frame" // read stored project frame PreviousFrame = result // store as previous frame number // =============== Acquire and store info for current frame in variables =========================== tv_ProjectCurrentID // get ID for current project NextProjectID = result // store as next project ID tv_ClipCurrentID // get ID for current clip NextClipID = result // store as next clip ID tv_LayerCurrentID // get layer ID for current project NextLayerID = result // store as next layer ID tv_ProjectCurrentFrame // get current project frame (not clip frame) NextFrame = result // store as next frame number // =============== Restore previous frame to be current ====================================== tv_ProjectSelect PreviousProjectID // go to previous project tv_ClipSelect PrevousClipID // go to previous clip tv_LayerSet PreviousLayerID // go to previous layer tv_ProjectCurrentFrame PreviousFrame // go to previous project frame // =============== Store current frame info in user string ====================================== tv_WriteUserString "SwapClips" "ProjectID" NextProjectID // write out next project ID tv_WriteUserString "SwapClips" "ClipID" NextClipID // write out next clip ID tv_WriteUserString "SwapClips" "LayerID" NextLayerID // write out next layer ID tv_WriteUserString "SwapClips" "Frame" NextFrame // write out next frame number // =============== debug info for both swap frames ========================================= debug = 0 // debug = 1 nodebug = 0 IF debug != 0 Text = "Prev: ProjID="PreviousProjectID " ClipID="PreviousClipID " LayerID="PreviousLayerID " Frame=" PreviousFrame Text = Text"\nNext: ProjID="NextProjectID " ClipID="NextClipID " LayerID="NextLayerID " Frame=" NextFrame tv_LockDisplay Text // display swap frames info FOR i = 1 to 500000 // pause timed loop tv_Nop END END tv_UnLockDisplay // reactivate display tv_UpdateDisplay // refresh display