/
SetEventLengthForSlowMo.py
120 lines (93 loc) · 4.13 KB
/
SetEventLengthForSlowMo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# * Sets the event length of all selected clips corresponsing to the slo mo rate
# *
# *
# * Author: Harold Linke
# * Date: August 9, 2019
# *
import clr
clr.AddReference('System.Windows.Forms')
import System.Windows.Forms
from System.Windows.Forms import *
clr.AddReference('ScriptPortal.Vegas')
import ScriptPortal.Vegas
from ScriptPortal.Vegas import *
clr.AddReference('System.Drawing')
import System.Drawing
class StringDialog (Form):
def addTextControl(self,labelName, left, width, top, defaultValue):
self.label = System.Windows.Forms.Label()
self.label.AutoSize = True
self.label.Text = labelName + ":"
self.label.Left = left
self.label.Top = top + 4
self.Controls.Add(self.label)
self.textbox = System.Windows.Forms.TextBox()
self.textbox.Multiline = False
self.textbox.Left = self.label.Right
self.textbox.Top = top
self.textbox.Width = width - (self.label.Width)
self.textbox.Text = defaultValue
self.Controls.Add(self.textbox)
return self.textbox
def __init__(self,mainLabel, inputLabel, inputInit):
self.Text = mainLabel
self.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
self.MaximizeBox = False
self.StartPosition = FormStartPosition.CenterScreen
self.Width = 350
self.Height = 160
self.buttonWidth = 80
self.buttonHeight = 24
self.buttonTop = 60
self.stringBox = self.addTextControl(inputLabel, 20, 200, 20, inputInit)
self.okButton = System.Windows.Forms.Button()
self.okButton.Text = "OK"
self.okButton.Left = 240 - ((self.buttonWidth+20))
self.okButton.Top = self.buttonTop
self.okButton.Width = self.buttonWidth
self.okButton.Height = self.buttonHeight
self.okButton.DialogResult = System.Windows.Forms.DialogResult.OK
self.AcceptButton = self.okButton
self.Controls.Add(self.okButton)
self.btnCancel = System.Windows.Forms.Button()
self.btnCancel.Text = "Cancel"
self.btnCancel.Left = 140 - ((self.buttonWidth+20))
self.btnCancel.Top = self.buttonTop
self.btnCancel.Width = self.buttonWidth
self.btnCancel.Height = self.buttonHeight
self.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
# self.AcceptButton = self.okButton
self.Controls.Add(self.btnCancel)
self.Controls.Add(self.okButton)
self.label = System.Windows.Forms.Label()
self.label.AutoSize = True
self.label.Text = "Copyright 2018 Hlinke"
self.label.Left = 20
self.label.Top = 100
self.Controls.Add(self.label)
def FindSelectedEvents (myVEGAS: Vegas):
selectedEvents = []
for track in myVEGAS.Project.Tracks:
for trackEvent in track.Events:
if trackEvent.Selected:
if not (trackEvent in selectedEvents):
eventisGrouped = trackEvent.IsGrouped
if eventisGrouped: # add all group members e.g. audio and video
selectedEvents += list(trackEvent.Group) # add all grouped events
else:
selectedEvents.append(trackEvent)
return selectedEvents
def FromVegas(pyVEGAS):
maxLength = Timecode.FromString("00:00:04:00")
dialog = StringDialog("Set Event length for Slow Motion - Enter SloMo","Slow Mo Play Rate (0.00)","1.00")
dialogResult = dialog.ShowDialog()
if System.Windows.Forms.DialogResult.OK == dialogResult:
playrate_str = dialog.stringBox.Text
playrate = float(playrate_str)
for evnt in FindSelectedEvents(pyVEGAS):
length_TC = evnt.Length
length_MS = length_TC.ToMilliseconds()
newLength = Timecode.FromMilliseconds(length_MS / playrate)
evnt.Length = newLength
if __name__ == "__main__":
FromVegas(pyVEGAS)