Files
Client/Library/dxx8/samples/Multimedia/VBSamples/DirectShow/Editing/DexterVB/frmMain.frm
LGram16 e067522598 Initial commit: ROW Client source code
Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:24:34 +09:00

4843 lines
219 KiB
Plaintext

VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
Object = "{38911DA0-E448-11D0-84A3-00DD01104159}#1.1#0"; "COMCT332.OCX"
Begin VB.Form frmMain
Caption = "DexterVB"
ClientHeight = 5565
ClientLeft = 60
ClientTop = 645
ClientWidth = 8610
Icon = "frmMain.frx":0000
LinkTopic = "Form1"
LockControls = -1 'True
ScaleHeight = 5565
ScaleWidth = 8610
WhatsThisButton = -1 'True
WhatsThisHelp = -1 'True
Begin VB.Timer Timer1
Left = 9300
Top = 1140
End
Begin MSComctlLib.ImageList ctrlMainToolbarImageListHot
Left = 9300
Top = 480
_ExtentX = 1005
_ExtentY = 1005
BackColor = -2147483643
ImageWidth = 16
ImageHeight = 15
MaskColor = 16711935
_Version = 393216
BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628}
NumListImages = 10
BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":030A
Key = ""
EndProperty
BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":062C
Key = ""
EndProperty
BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":094E
Key = ""
EndProperty
BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":0C70
Key = ""
EndProperty
BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":0F62
Key = ""
EndProperty
BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":1254
Key = ""
EndProperty
BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":1546
Key = ""
EndProperty
BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":1838
Key = ""
EndProperty
BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":1B2A
Key = ""
EndProperty
BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":1E1C
Key = ""
EndProperty
EndProperty
End
Begin ComCtl3.CoolBar ctrlCoolBar
Height = 405
Left = 0
TabIndex = 3
Top = 0
Width = 8580
_ExtentX = 15134
_ExtentY = 714
BandCount = 2
FixedOrder = -1 'True
BandBorders = 0 'False
OLEDropMode = 1
MousePointer = 1
_CBWidth = 8580
_CBHeight = 405
_Version = "6.7.8988"
MinHeight1 = 345
NewRow1 = 0 'False
Child2 = "tbMain"
MinHeight2 = 315
Width2 = 5730
NewRow2 = 0 'False
AllowVertical2 = 0 'False
Begin MSComctlLib.Toolbar tbMain
Height = 315
Left = 165
TabIndex = 4
Top = 45
Width = 8325
_ExtentX = 14684
_ExtentY = 556
ButtonWidth = 609
ButtonHeight = 556
AllowCustomize = 0 'False
Wrappable = 0 'False
Style = 1
ImageList = "ctrlMainToolbarImageList"
HotImageList = "ctrlMainToolbarImageListHot"
_Version = 393216
BeginProperty Buttons {66833FE8-8583-11D1-B16A-00C0F0283628}
NumButtons = 11
BeginProperty Button1 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "New"
Description = "New TimeLine"
Object.ToolTipText = "Create A New Timeline"
ImageIndex = 1
EndProperty
BeginProperty Button2 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "Open"
Description = "Open Timeline"
Object.ToolTipText = "Open An Existing Timeline File"
ImageIndex = 2
EndProperty
BeginProperty Button3 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "Save"
Description = "Save Timeline"
Object.ToolTipText = "Save The Timeline"
ImageIndex = 3
EndProperty
BeginProperty Button4 {66833FEA-8583-11D1-B16A-00C0F0283628}
Style = 3
EndProperty
BeginProperty Button5 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "Rewind"
Description = "btnRewind"
Object.ToolTipText = "Rewind To Beginning Of TimeLine"
ImageIndex = 4
EndProperty
BeginProperty Button6 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "SeekBackward"
Description = "btnSeekBack"
Object.ToolTipText = "Seek Backwards One Second At A Time"
ImageIndex = 5
EndProperty
BeginProperty Button7 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "Play"
Description = "Play"
Object.ToolTipText = "Play Currently Loaded Timeline"
ImageIndex = 6
Style = 2
EndProperty
BeginProperty Button8 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "Pause"
Description = "Pause"
Object.ToolTipText = "Pauses Playback"
ImageIndex = 7
Style = 2
EndProperty
BeginProperty Button9 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "Stop"
Description = "Stop"
Object.ToolTipText = "Stops Playback"
ImageIndex = 8
Style = 2
EndProperty
BeginProperty Button10 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "SeekForward"
Description = "btnSeekFwd"
Object.ToolTipText = "Seek Forward One Second At A Time"
ImageIndex = 9
EndProperty
BeginProperty Button11 {66833FEA-8583-11D1-B16A-00C0F0283628}
Key = "FastForward"
Description = "btnffwd"
Object.ToolTipText = "Go To End Of TimeLine"
ImageIndex = 10
EndProperty
EndProperty
OLEDropMode = 1
End
End
Begin MSComctlLib.ListView lstViewInfo
Height = 4745
Left = 2475
TabIndex = 2
Top = 450
Width = 6120
_ExtentX = 10795
_ExtentY = 8361
View = 3
LabelWrap = -1 'True
HideSelection = -1 'True
OLEDropMode = 1
FlatScrollBar = -1 'True
FullRowSelect = -1 'True
HotTracking = -1 'True
HoverSelection = -1 'True
_Version = 393217
ForeColor = -2147483640
BackColor = -2147483643
Appearance = 1
OLEDropMode = 1
NumItems = 0
End
Begin MSComctlLib.TreeView tvwSimpleTree
Height = 4745
Left = 0
TabIndex = 1
Top = 450
Width = 2415
_ExtentX = 4260
_ExtentY = 8361
_Version = 393217
HideSelection = 0 'False
Style = 7
FullRowSelect = -1 'True
HotTracking = -1 'True
ImageList = "ctrlTreeViewImageList"
Appearance = 1
OLEDropMode = 1
End
Begin MSComctlLib.ImageList ctrlMainToolbarImageList
Left = 8685
Top = 480
_ExtentX = 1005
_ExtentY = 1005
BackColor = -2147483643
ImageWidth = 16
ImageHeight = 15
MaskColor = 16711935
_Version = 393216
BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628}
NumListImages = 10
BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":210E
Key = "new"
EndProperty
BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":2430
Key = "open"
EndProperty
BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":2752
Key = "save"
EndProperty
BeginProperty ListImage4 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":2A74
Key = "rewind"
EndProperty
BeginProperty ListImage5 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":2D66
Key = "seekbackward"
EndProperty
BeginProperty ListImage6 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":3058
Key = "play"
EndProperty
BeginProperty ListImage7 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":334A
Key = "pause"
EndProperty
BeginProperty ListImage8 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":363C
Key = "stop"
EndProperty
BeginProperty ListImage9 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":392E
Key = "seekforward"
EndProperty
BeginProperty ListImage10 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":3C20
Key = "fastforward"
EndProperty
EndProperty
End
Begin MSComctlLib.StatusBar sbStatus
Align = 2 'Align Bottom
Height = 345
Left = 0
TabIndex = 0
Top = 5220
Width = 8610
_ExtentX = 15187
_ExtentY = 609
Style = 1
_Version = 393216
BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628}
EndProperty
OLEDropMode = 1
End
Begin MSComDlg.CommonDialog ctrlCommonDialog
Left = 8700
Top = 1080
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin MSComctlLib.ImageList ctrlTreeViewImageList
Left = 9900
Top = 480
_ExtentX = 1005
_ExtentY = 1005
BackColor = -2147483643
ImageWidth = 16
ImageHeight = 16
MaskColor = 12632256
_Version = 393216
BeginProperty Images {2C247F25-8591-11D1-B16A-00C0F0283628}
NumListImages = 3
BeginProperty ListImage1 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":3F12
Key = ""
EndProperty
BeginProperty ListImage2 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":422C
Key = ""
EndProperty
BeginProperty ListImage3 {2C247F27-8591-11D1-B16A-00C0F0283628}
Picture = "frmMain.frx":4546
Key = ""
EndProperty
EndProperty
End
Begin VB.Menu mnuFile
Caption = "&File"
NegotiatePosition= 1 'Left
Begin VB.Menu mnuFileNew
Caption = "&New"
Begin VB.Menu mnuFileNewTimeline
Caption = "Timeline"
End
End
Begin VB.Menu mnuFileOpen
Caption = "&Open"
Shortcut = ^O
End
Begin VB.Menu mnuFileSeptum
Caption = "-"
End
Begin VB.Menu mnuFileSaveAs
Caption = "Save &As"
End
Begin VB.Menu mnuFileSeptum0
Caption = "-"
End
Begin VB.Menu mnuFileExit
Caption = "&Exit"
End
End
Begin VB.Menu mnuTimeline
Caption = "TimeLine"
Visible = 0 'False
Begin VB.Menu mnuTimeLinePlay
Caption = "Play"
End
Begin VB.Menu mnuTimeLineStop
Caption = "Stop"
End
Begin VB.Menu mnuTimeLinePause
Caption = "Pause"
End
Begin VB.Menu mnuTimelineSeptum
Caption = "-"
End
Begin VB.Menu mnuTimelineExpand
Caption = "Expand"
End
Begin VB.Menu mnuTimelineCollapse
Caption = "Collapse"
End
Begin VB.Menu mnuTimelineSeptum2
Caption = "-"
End
Begin VB.Menu mnuTimeLineEdit
Caption = "Edit"
End
Begin VB.Menu mnuTimeLineInsertGroup
Caption = "Insert Group"
End
Begin VB.Menu mnuTimelineSeptum3
Caption = "-"
End
Begin VB.Menu mnuTimeLineRenderTimeLine
Caption = "Render Timeline"
End
Begin VB.Menu mnuTimeLineClearRenderEngine
Caption = "ClearRenderEngine"
End
End
Begin VB.Menu mnuTrack
Caption = "Track"
Visible = 0 'False
Begin VB.Menu mnuTrackEdit
Caption = "Edit"
End
Begin VB.Menu mnuTrackDelete
Caption = "Delete"
End
Begin VB.Menu mnuTrackSeptum
Caption = "-"
End
Begin VB.Menu mnuTrackExpand
Caption = "Expand"
End
Begin VB.Menu mnuTrackCollapse
Caption = "Collapse"
End
Begin VB.Menu mnuTrackSeptum2
Caption = "-"
End
Begin VB.Menu mnuTrackAddClip
Caption = "Add Clip"
End
Begin VB.Menu mnuTrackAddEffect
Caption = "Add Effect"
End
Begin VB.Menu mnuTrackAddTransition
Caption = "Add Transition"
End
End
Begin VB.Menu mnuGroup
Caption = "group"
Visible = 0 'False
Begin VB.Menu mnuGroupEdit
Caption = "Edit"
End
Begin VB.Menu mnuGroupDelete
Caption = "Delete"
End
Begin VB.Menu mnuGroupSeptum
Caption = "-"
End
Begin VB.Menu mnuGroupExpand
Caption = "Expand"
End
Begin VB.Menu mnuGroupCollapse
Caption = "Collapse"
End
Begin VB.Menu mnuGroupSeptum2
Caption = "-"
End
Begin VB.Menu mnuGroupAddComp
Caption = "Add Composition"
End
Begin VB.Menu mnuGroupAddTrack
Caption = "Add Track"
End
Begin VB.Menu mnuGroupAddTransition
Caption = "Add Transition"
End
Begin VB.Menu mnuGroupAddEffect
Caption = "Add Effect"
End
End
Begin VB.Menu mnuComp
Caption = "Comp"
Visible = 0 'False
Begin VB.Menu mnuCompEdit
Caption = "Edit"
End
Begin VB.Menu mnuCompDelete
Caption = "Delete"
End
Begin VB.Menu mnuCompSeptum
Caption = "-"
End
Begin VB.Menu mnuCompExpand
Caption = "Expand"
End
Begin VB.Menu mnuCompCollapse
Caption = "Collapse"
End
Begin VB.Menu mnuCompSeptum2
Caption = "-"
End
Begin VB.Menu mnuCompAddTrack
Caption = "Add Track"
End
Begin VB.Menu mnuCompAddEffect
Caption = "Add Effect"
End
Begin VB.Menu mnuCompAddTransition
Caption = "Add Transition"
End
Begin VB.Menu mnuCompAddComp
Caption = "Add Composition"
End
End
Begin VB.Menu mnuClip
Caption = "Clip"
Visible = 0 'False
Begin VB.Menu mnuClipEdit
Caption = "Edit"
End
Begin VB.Menu mnuClipDelete
Caption = "Delete"
End
Begin VB.Menu mnuClipSeptum
Caption = "-"
End
Begin VB.Menu mnuClipExpand
Caption = "Expand"
End
Begin VB.Menu mnuClipCollapse
Caption = "Collapse"
End
End
Begin VB.Menu mnuTrans
Caption = "Trans"
Visible = 0 'False
Begin VB.Menu mnuTransEdit
Caption = "Edit"
End
Begin VB.Menu mnuTransDelete
Caption = "Delete"
End
Begin VB.Menu mnuTransSeptum
Caption = "-"
End
Begin VB.Menu mnuTransExpand
Caption = "Expand"
End
Begin VB.Menu mnuTransCollapse
Caption = "Collapse"
End
End
Begin VB.Menu mnuEffect
Caption = "Effect"
Visible = 0 'False
Begin VB.Menu mnuEffectEdit
Caption = "Edit"
End
Begin VB.Menu mnuEffectDelete
Caption = "Delete"
End
Begin VB.Menu mnuEffectSeptum
Caption = "-"
End
Begin VB.Menu mnuEffectExpand
Caption = "Expand"
End
Begin VB.Menu mnuEffectCollapse
Caption = "Collapse"
End
End
Begin VB.Menu mnuHelp
Caption = "&Help"
NegotiatePosition= 3 'Right
Begin VB.Menu mnuHelpAbout
Caption = "&About"
End
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'*******************************************************************************
'* This is a part of the Microsoft DXSDK Code Samples.
'* Copyright (C) 1999-2000 Microsoft Corporation.
'* All rights reserved.
'* This source code is only intended as a supplement to
'* Microsoft Development Tools and/or SDK documentation.
'* See these sources for detailed information regarding the
'* Microsoft samples programs.
'*******************************************************************************
Option Explicit
Option Base 0
Option Compare Text
'module-level drag indicator
Private m_boolDrag As Boolean 'returns true if the user is moving the ide septum divided bar
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- FORM EVENT HANDLERS
' *
' *
' ******************************************************************************************************************************
' * procedure name: Form_Activate
' * procedure description: Occurs when a form becomes the active window.
' *
' ******************************************************************************************************************************
Private Sub Form_Activate()
On Local Error GoTo ErrLine
Call AppActivate(App.Title, 0)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_GotFocus
' * procedure description: Occurs when an object receives the focus.
' *
' ******************************************************************************************************************************
Private Sub Form_GotFocus()
On Local Error GoTo ErrLine
'set focus to the treeview
tvwSimpleTree.SetFocus
'if a node has not been selected set the selected node to root
If tvwSimpleTree.Nodes.Count > 0 Then
If Not tvwSimpleTree.SelectedItem Is Nothing Then _
Set tvwSimpleTree.SelectedItem = tvwSimpleTree.Nodes(1)
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_Initialize
' * procedure description: Occurs when an application creates an instance of a Form, MDIForm, or class.
' *
' ******************************************************************************************************************************
Private Sub Form_Initialize()
On Local Error GoTo ErrLine
'initalize module-level variable(s)
Set gbl_colNormalEnum = New Collection
Set gbl_objQuartzVB = New VBQuartzHelper
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_Load
' * procedure description: Occurs when a form is loaded.
' *
' ******************************************************************************************************************************
Private Sub Form_Load()
On Local Error GoTo ErrLine
'set the listview to report view
'and append the column header(s)
lstViewInfo.View = lvwReport
lstViewInfo.ColumnHeaders.Add , "Parameter", _
"Parameter", (lstViewInfo.Width / 2) - 50
lstViewInfo.ColumnHeaders.Add , "Value", "Value", (lstViewInfo.Width / 2) - 50
'assign the width of the column header(s)
If lstViewInfo.ColumnHeaders.Count > 0 Then
lstViewInfo.ColumnHeaders(1).Width = lstViewInfo.Width * 0.2
If lstViewInfo.ColumnHeaders(2).Width <> _
(lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width) Then _
lstViewInfo.ColumnHeaders(2).Width = _
(lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width)
End If
'ensure the listview has zero items
If lstViewInfo.ListItems.Count <> 0 Then _
lstViewInfo.ListItems.Clear
'update the text on the statusbar
sbStatus.SimpleText = "Ready"
'update the button(s)
With tbMain.Buttons
.Item("New").Enabled = True
.Item("Open").Enabled = True
.Item("Save").Enabled = False
.Item("Play").Enabled = False
.Item("Pause").Enabled = False
.Item("Stop").Enabled = False
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'update the state on the popup context menu
mnuFileSaveAs.Enabled = False
mnuTimeLinePlay.Enabled = False
mnuTimeLineStop.Enabled = False
mnuTimeLinePause.Enabled = False
mnuTimeLineRenderTimeLine.Enabled = False
mnuTimeLineClearRenderEngine.Enabled = False
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_MouseDown
' * procedure description: Occurs when the user presses the mouse button while an object has the focus.
' *
' ******************************************************************************************************************************
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'check if we are in the septum
If X > Me.Controls("tvwSimpleTree").Width And X < Me.Controls("lstViewInfo").Left Then
If Y > Me.Controls("tbMain").Height And Y < Me.Controls("sbStatus").Top Then
'we are hovering over the septum bar..
If Button = 1 Then
m_boolDrag = True
If Me.BackColor <> vbBlack Then Me.BackColor = vbBlack
End If
Exit Sub
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_MouseMove
' * procedure description: Occurs when the user moves the mouse.
' *
' ******************************************************************************************************************************
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'check if we are in the septum; and proceed to set the mousepointer
If X > Me.Controls("tvwSimpleTree").Width And X < Me.Controls("lstViewInfo").Left Then
If Y > Me.Controls("tbMain").Height And Y < Me.Controls("sbStatus").Top Then
'we are hovering over the septum bar..
Me.MousePointer = 9
Else
'otherwise reset
Me.MousePointer = vbDefault
Me.BackColor = &H8000000F
End If
End If
'if we are in 'drag mode' then resize the control(s)
If m_boolDrag = True And Button = 1 Then
If X > 65 And X < Me.ScaleWidth - 65 Then Me.Controls("tvwSimpleTree").Width = X
Call Form_Resize
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_MouseUp
' * procedure description: Occurs when the user releases the mouse button while an object has the focus.
' *
' ******************************************************************************************************************************
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'check if we are in the septum
If X > Me.Controls("tvwSimpleTree").Width And X < Me.Controls("lstViewInfo").Left Then
If Y > Me.Controls("tbMain").Height And Y < Me.Controls("sbStatus").Top Then
'we are hovering over the septum bar..
If Button = 1 Then
m_boolDrag = False
If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F
End If
Exit Sub
End If
Else
'reset the mousepointer & septum color
If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F
If Me.MousePointer <> vbDefault Then Me.MousePointer = vbDefault
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_OLEDragDrop
' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual.
' *
' ******************************************************************************************************************************
Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'pass to the application drag drop handler
Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_OLEDragOver
' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual.
' *
' ******************************************************************************************************************************
Private Sub Form_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
On Local Error GoTo ErrLine
'pass to the application drag over handler
Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_QueryUnload
' * procedure description: Occurs before a form or application closes.
' *
' ******************************************************************************************************************************
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim frm As Form
On Local Error GoTo ErrLine
Select Case UnloadMode
Case vbFormControlMenu
'0 The user chose the Close command from the Control menu on the form.
For Each frm In Forms
frm.Move Screen.Width * -8, Screen.Height * -8
frm.Visible = False: Unload frm
Next
Case vbFormCode
'1 The Unload statement is invoked from code.
Exit Sub
Case vbAppWindows
'2 The current Microsoft Windows operating environment session is ending.
For Each frm In Forms
frm.Move Screen.Width * -8, Screen.Height * -8
frm.Visible = False: Unload frm
Next
Case vbAppTaskManager
'3 The Microsoft Windows Task Manager is closing the application.
For Each frm In Forms
frm.Move Screen.Width * -8, Screen.Height * -8
frm.Visible = False: Unload frm
Next
End
Case vbFormMDIForm
'4 An MDI child form is closing because the MDI form is closing.
Exit Sub
Case vbFormOwner
'5 A form is closing because its owner is closing
For Each frm In Forms
frm.Move Screen.Width * -8, Screen.Height * -8
frm.Visible = False: Unload frm
Next
End Select
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_Resize
' * procedure description: Occurs when a form is first displayed or the size of an object changes.
' *
' ******************************************************************************************************************************
Private Sub Form_Resize()
Dim Septum As Single
Dim InternalTop As Single
Dim InternalHeight As Single
On Local Error GoTo ErrLine
Septum = 65 'assign the septum a specified width
If Me.Controls("ctrlCoolBar").Visible = True And Controls("sbStatus").Visible = True Then
'position the coolbar
If Me.Controls("ctrlCoolBar").Top <> Me.ScaleTop Then Me.Controls("ctrlCoolBar").Top = Me.ScaleTop
If Me.Controls("ctrlCoolBar").Left <> Me.ScaleLeft Then Me.Controls("ctrlCoolBar").Left = Me.ScaleLeft
If Me.Controls("ctrlCoolBar").Width <> Me.ScaleWidth Then Me.Controls("ctrlCoolBar").Width = Me.ScaleWidth
'get the internal measurement(s)
InternalTop = Me.ScaleTop + Me.Controls("ctrlCoolBar").Height
InternalHeight = Me.ScaleHeight - (Me.Controls("ctrlCoolBar").Height + Me.Controls("sbStatus").Height)
'verify that the measurement(s) are valid
If InternalTop < 0 Then InternalTop = 0
If InternalHeight < 0 Then InternalHeight = 0
ElseIf Me.Controls("ctrlCoolBar").Visible = True And Controls("sbStatus").Visible = False Then
'position the coolbar
If Me.Controls("ctrlCoolBar").Top <> Me.ScaleTop Then Me.Controls("ctrlCoolBar").Top = Me.ScaleTop
If Me.Controls("ctrlCoolBar").Left <> Me.ScaleLeft Then Me.Controls("ctrlCoolBar").Left = Me.ScaleLeft
If Me.Controls("ctrlCoolBar").Width <> Me.ScaleWidth Then Me.Controls("ctrlCoolBar").Width = Me.ScaleWidth
'get the internal measurement(s)
InternalTop = Me.ScaleTop + Me.Controls("ctrlCoolBar").Height
InternalHeight = Me.ScaleHeight - (Me.Controls("ctrlCoolBar").Height)
'verify that the measurement(s) are valid
If InternalTop < 0 Then InternalTop = 0
ElseIf Me.Controls("ctrlCoolBar").Visible = False And Me.Controls("sbStatus").Visible = True Then
'get the internal measurement(s)
InternalTop = Me.ScaleTop
InternalHeight = Me.ScaleHeight - (Me.Controls("sbStatus").Height)
'verify that the measurement(s) are valid
If InternalTop < 0 Then InternalTop = 0
If InternalHeight < 0 Then InternalHeight = 0
ElseIf Me.Controls("ctrlCoolBar").Visible = False And Controls("sbStatus").Visible = False Then
'get the internal measurement(s)
InternalTop = Me.ScaleTop
InternalHeight = Me.ScaleHeight
'verify that the measurement(s) are valid
If InternalTop < 0 Then InternalTop = 0
If InternalHeight < 0 Then InternalHeight = 0
End If
If Me.Controls("tvwSimpleTree").Visible = True And Controls("lstViewInfo").Visible = False Then
'position the treeview
If Me.Controls("tvwSimpleTree").Top <> InternalTop Then Me.Controls("tvwSimpleTree").Top = InternalTop
If Me.Controls("tvwSimpleTree").Left <> 0 Then Me.Controls("tvwSimpleTree").Left = 0
If Me.Controls("tvwSimpleTree").Height <> InternalHeight Then Me.Controls("tvwSimpleTree").Height = InternalHeight
'position the listview
If Me.Controls("lstViewInfo").Top <> InternalTop Then Me.Controls("lstViewInfo").Top = InternalTop
If (Me.Controls("lstViewInfo").Left + Me.Controls("tvwSimpleTree").Width) + Septum > 0 Then Me.Controls("lstViewInfo").Left = (Me.Controls("tvwSimpleTree").Left + Me.Controls("tvwSimpleTree").Width) + Septum
If Me.Controls("lstViewInfo").Height <> InternalHeight Then Me.Controls("lstViewInfo").Height = InternalHeight
If (Me.ScaleWidth - Me.Controls("lstViewInfo").Width) - Septum > 0 Then Me.Controls("lstViewInfo").Width = (Me.ScaleWidth - Me.Controls("tvwSimpleTree").Width) - Septum
ElseIf Me.Controls("tvwSimpleTree").Visible = True And Controls("lstViewInfo").Visible = True Then
'position the treeview
If Me.Controls("tvwSimpleTree").Top <> InternalTop Then Me.Controls("tvwSimpleTree").Top = InternalTop
If Me.Controls("tvwSimpleTree").Left <> 0 Then Me.Controls("tvwSimpleTree").Left = 0
If Me.Controls("tvwSimpleTree").Height <> InternalHeight Then Me.Controls("tvwSimpleTree").Height = InternalHeight
'position the listview
If Me.Controls("lstViewInfo").Top <> InternalTop Then Me.Controls("lstViewInfo").Top = InternalTop
If (Me.Controls("lstViewInfo").Left + Me.Controls("tvwSimpleTree").Width) + Septum > 0 Then Me.Controls("lstViewInfo").Left = (Me.Controls("tvwSimpleTree").Left + Me.Controls("tvwSimpleTree").Width) + Septum
If Me.Controls("lstViewInfo").Height <> InternalHeight Then Me.Controls("lstViewInfo").Height = InternalHeight
If (Me.ScaleWidth - Me.Controls("lstViewInfo").Width) - Septum > 0 Then Me.Controls("lstViewInfo").Width = (Me.ScaleWidth - Me.Controls("tvwSimpleTree").Width) - Septum
ElseIf Me.Controls("tvwSimpleTree").Visible = False And Controls("lstViewInfo").Visible = True Then
'position the treeview
If Me.Controls("lstViewInfo").Top <> InternalTop Then Me.Controls("lstViewInfo").Top = InternalTop
If Me.Controls("lstViewInfo").Left <> 0 Then Me.Controls("lstViewInfo").Left = 0
If Me.Controls("lstViewInfo").Height <> InternalHeight Then Me.Controls("lstViewInfo").Height = InternalHeight
ElseIf Me.Controls("tvwSimpleTree").Visible = False And Controls("lstViewInfo").Visible = False Then
Exit Sub
End If
'ensure listview's column headers get resized as well..
If lstViewInfo.Visible Then
If lstViewInfo.ColumnHeaders.Count > 0 Then
If lstViewInfo.ColumnHeaders(2).Width <> (lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width) Then _
lstViewInfo.ColumnHeaders(2).Width = (lstViewInfo.Width - lstViewInfo.ColumnHeaders(1).Width)
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_Terminate
' * procedure description: Occurs when all references to an instance of a Form, MDIForm, or class are removed from memory.
' *
' ******************************************************************************************************************************
Private Sub Form_Terminate()
On Local Error GoTo ErrLine
'dereference & clean-up module-level data
If Not gbl_objQuartzVB Is Nothing Then Set gbl_objQuartzVB = Nothing
If Not gbl_colNormalEnum Is Nothing Then Set gbl_colNormalEnum = Nothing
'dereference & clean-up application-level data
If Not gbl_objTimeline Is Nothing Then Set gbl_objTimeline = Nothing
If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing
If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing
If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: Form_Unload
' * procedure description: Occurs when a form is about to be removed from the screen.
' *
' ******************************************************************************************************************************
Private Sub Form_Unload(Cancel As Integer)
On Local Error GoTo ErrLine
With Me
.Move 0 - (Screen.Width * 8), 0 - (Screen.Height * 8): .Visible = False
End With
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- MENU EVENT HANDLERS
' *
' *
' ******************************************************************************************************************************
' * procedure name: mnuClip_Click
' * procedure description: Occurs when the clip popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuClip_Click()
On Local Error GoTo ErrLine
'set menu state
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Children = 0 Then
If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False
If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False
ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then
If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False
If mnuClipCollapse.Enabled = False Then mnuClipCollapse.Enabled = True
ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then
If mnuClipExpand.Enabled = False Then mnuClipExpand.Enabled = True
If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False
Else
If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False
If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuClipCollapse_Click
' * procedure description: Occurs when the clip popup context menu's 'Collapse' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuClipCollapse_Click()
On Local Error GoTo ErrLine
'collapse the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = True Then
tvwSimpleTree.SelectedItem.Expanded = False
If mnuClipExpand.Enabled = False Then mnuClipExpand.Enabled = True
If mnuClipCollapse.Enabled = True Then mnuClipCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuClipExpand_Click
' * procedure description: Occurs when the clip popup context menu's 'Expand' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuClipExpand_Click()
On Local Error GoTo ErrLine
'expand the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = False Then
tvwSimpleTree.SelectedItem.Expanded = True
If mnuClipExpand.Enabled = True Then mnuClipExpand.Enabled = False
If mnuClipCollapse.Enabled = False Then mnuClipCollapse.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuClipDelete_Click
' * procedure description: Occurs when the clip popup context menu's 'Delete' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuClipDelete_Click()
Dim objSource As AMTimelineSrc
On Local Error GoTo ErrLine
'obtain the source from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objSource = gbl_objDexterObject
Else: Exit Sub
End If
'remove the item
Call gbl_objDexterObject.RemoveAll
Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key)
Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index)
If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing
'clean-up & dereference
If Not objSource Is Nothing Then Set objSource = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuClipEdit_Click
' * procedure description: Occurs when the clip popup context menu's 'Edit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuClipEdit_Click()
Dim nMuted As Long
Dim dblTStart As Double
Dim dblTStop As Double
Dim dblMStart As Double
Dim dblMStop As Double
Dim nStretchMode As Long
Dim nStreamNumber As Long
Dim dblDefaultFPS As Double
Dim dblMediaLength As Double
Dim bstrClipMediaName As String
Dim objSourceClip As AMTimelineSrc
On Local Error GoTo ErrLine
'obtain the source from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objSourceClip = gbl_objDexterObject
Else: Exit Sub
End If
'obtain existing group information
If Not objSourceClip Is Nothing Then
With objSourceClip
'get media name
bstrClipMediaName = .GetMediaName
'get dexter start & stop times
Call gbl_objDexterObject.GetStartStop2(dblTStart, dblTStop)
'get media start & stop times
Call .GetMediaTimes2(dblMStart, dblMStop)
'get medialength
dblMediaLength = (dblMStop - dblMStart)
'get stream number
Call .GetStreamNumber(nStreamNumber)
'get default fps
Call .GetDefaultFPS(dblDefaultFPS)
'get stretch mode
Call .GetStretchMode(nStretchMode)
'get muted
Call gbl_objDexterObject.GetMuted(nMuted)
End With
End If
'hide the dialog
Load frmClip
frmClip.Visible = False
'update the form with the existing information
With frmClip
.txtMediaName = CStr(bstrClipMediaName)
.txtMStart = CStr(dblMStart)
.txtMStop = CStr(dblMStop)
.txtTStart = CStr(dblTStart)
.txtTStop = CStr(dblTStop)
.txtMediaLength = CStr(dblMediaLength)
.txtStreamNumber = CStr(nStreamNumber)
.txtFPS = CStr(dblDefaultFPS)
.txtStretchMode = CStr(nStretchMode)
.txtMuted = CStr(nMuted)
End With
'display the dialog
frmClip.Caption = "Edit Source"
frmClip.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmClip.Visible = False: DoEvents
Loop
'verify unload mode
If frmClip.UnloadMode = 1 Then
Unload frmClip: Set frmClip = Nothing: Exit Sub
End If
'update the timeline info given the new information
With objSourceClip
'set the media name
If frmClip.txtMediaName.Text <> vbNullString Then
Call .SetMediaName(CStr(frmClip.txtMediaName.Text))
End If
'set the media times
If IsNumeric(frmClip.txtMStart.Text) Then
Call .SetMediaTimes2(CDbl(frmClip.txtMStart.Text), CDbl(frmClip.txtMStop.Text))
End If
'set the media length
If IsNumeric(frmClip.txtMStop.Text) Then
Call .SetMediaLength2(CDbl(frmClip.txtTStop.Text) - CDbl(frmClip.txtTStart.Text))
End If
'set stream number
If IsNumeric(frmClip.txtStreamNumber.Text) Then
Call .SetStreamNumber(CLng(frmClip.txtStreamNumber.Text))
End If
'set default frames per second
If IsNumeric(frmClip.txtFPS.Text) Then
Call .SetDefaultFPS(CDbl(frmClip.txtFPS.Text))
End If
'set stretch mode
If IsNumeric(frmClip.txtStretchMode.Text) Then
Call .SetStretchMode(CLng(frmClip.txtStretchMode.Text))
End If
'set muted state
If IsNumeric(frmClip.txtMuted.Text) Then
Call gbl_objDexterObject.SetMuted(CLng(frmClip.txtMuted.Text))
End If
End With
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'destroy the dialog
Unload frmClip: Set frmClip = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuComp_Click
' * procedure description: Occurs when the composition popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuComp_Click()
On Local Error GoTo ErrLine
'set menu state
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Children = 0 Then
If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False
If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False
ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then
If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False
If mnuCompCollapse.Enabled = False Then mnuCompCollapse.Enabled = True
ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then
If mnuCompExpand.Enabled = False Then mnuCompExpand.Enabled = True
If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False
Else
If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False
If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompCollapse_Click
' * procedure description: Occurs when the composition popup context menu's 'Collapse' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompCollapse_Click()
On Local Error GoTo ErrLine
'collapse the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = True Then
tvwSimpleTree.SelectedItem.Expanded = False
If mnuCompExpand.Enabled = False Then mnuCompExpand.Enabled = True
If mnuCompCollapse.Enabled = True Then mnuCompCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompExpand_Click
' * procedure description: Occurs when the composition popup context menu's 'Expand' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompExpand_Click()
On Local Error GoTo ErrLine
'expand the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = False Then
tvwSimpleTree.SelectedItem.Expanded = True
If mnuCompExpand.Enabled = True Then mnuCompExpand.Enabled = False
If mnuCompCollapse.Enabled = False Then mnuCompCollapse.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompAddComp_Click
' * procedure description: Occurs when the composition popup context menu's 'Add Composition' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompAddComp_Click()
Dim nPriority As Long
Dim dblStartTime As Double
Dim dblStopTime As Double
Dim objNewComposite As AMTimelineComp
On Local Error GoTo ErrLine
'display the dialog
frmComp.Caption = "Add Composition"
frmComp.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmComp.Visible = False: DoEvents
Loop
'verify unload mode
If frmComp.UnloadMode = 1 Then
Unload frmComp: Set frmComp = Nothing: Exit Sub
End If
'query the dialog for user input
With frmComp
nPriority = CLng(.txtPriority.Text)
dblStartTime = CDbl(.txtStartTime.Text)
dblStopTime = CDbl(.txtStopTime.Text)
End With
'insert the composite into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewComposite = CreateComposite(gbl_objTimeline)
If Not objNewComposite Is Nothing Then Call InsertComposite(objNewComposite, gbl_objDexterObject)
If Not gbl_objDexterObject Is Nothing Then Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'unload the dialog
Unload frmComp: Set frmComp = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompAddEffect_Click
' * procedure description: Occurs when the composition popup context menu's 'Add Effect' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompAddEffect_Click()
Dim nEffectPriority As Long
Dim bstrEffectGUID As String
Dim dblEffectStopTime As Double
Dim dblEffectStartTime As Double
Dim objNewEffect As AMTimelineEffect
Dim objTimelineObject As AMTimelineObj
On Local Error GoTo ErrLine
'display the insert effect dialog
frmEffect.Caption = "Add Effect"
frmEffect.Show vbModal, Me
'wait until the user closes the dialog
Do: DoEvents
If frmEffect.Visible = False Then Exit Do
Loop
'verify unload mode
If frmEffect.UnloadMode = 1 Then
Unload frmEffect: Set frmEffect = Nothing: Exit Sub
End If
'query the dialog information
With frmEffect
If IsNumeric(.txtStartTime.Text) Then
dblEffectStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblEffectStopTime = CDbl(.txtStopTime.Text)
End If
If IsNumeric(.txtPriority.Text) Then
nEffectPriority = CLng(.txtPriority.Text)
End If
If .cmbEffect.Text <> vbNullString Then
bstrEffectGUID = CStr(.cmbEffect.Text)
End If
End With
'insert the effect into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewEffect = CreateEffect(gbl_objTimeline)
If Not objNewEffect Is Nothing Then Call InsertEffect(objNewEffect, gbl_objDexterObject, EffectFriendlyNameToCLSID(bstrEffectGUID), dblEffectStartTime, dblEffectStopTime)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy the dialog
Unload frmEffect: Set frmEffect = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompAddTrack_Click
' * procedure description: Occurs when the composition popup context menu's 'Add Track' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompAddTrack_Click()
Dim nBlank As Long
Dim nMuted As Long
Dim nPriority As Long
Dim dblStartTime As Double
Dim dblStopTime As Double
Dim objNewTrack As AMTimelineTrack
On Local Error GoTo ErrLine
'display the dialog
frmTrack.Caption = "Add Track"
frmTrack.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTrack.Visible = False: DoEvents
Loop
'verify unload mode
If frmTrack.UnloadMode = 1 Then
Unload frmTrack: Set frmTrack = Nothing: Exit Sub
End If
'obtain the user input from the dialog
With frmTrack
If IsNumeric(.txtBlank.Text) Then
nBlank = CLng(.txtBlank.Text)
End If
If IsNumeric(.txtMuted.Text) Then
nMuted = CLng(.txtMuted.Text)
End If
If IsNumeric(.txtMuted.Text) Then
nPriority = CLng(.txtMuted.Text)
End If
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
End With
'insert the track into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewTrack = CreateTrack(gbl_objTimeline)
If Not objNewTrack Is Nothing Then Call InsertTrack(objNewTrack, gbl_objDexterObject, nPriority)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy dialog
Unload frmTrack: Set frmTrack = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompAddTransition_Click
' * procedure description: Occurs when the composition popup context menu's 'Add Transition' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompAddTransition_Click()
Dim nCutpoint As Long
Dim nCutsOnly As Long
Dim nSwapInputs As Long
Dim bstrTransition As String
Dim dblStartTime As Double
Dim dblStopTime As Double
Dim objNewTransition As AMTimelineTrans
On Local Error GoTo ErrLine
'display the dialog
frmTransitions.Caption = "Add Transition"
frmTransitions.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTransitions.Visible = False: DoEvents
Loop
'verify unload mode
If frmTransitions.UnloadMode = 1 Then
Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub
End If
'obtain user input
With frmTransitions
If IsNumeric(.txtCutpoint.Text) Then
nCutpoint = CLng(.txtCutpoint.Text)
End If
If IsNumeric(.txtCutsOnly.Text) Then
nCutsOnly = CLng(.txtCutsOnly.Text)
End If
If IsNumeric(.txtSwapInputs.Text) Then
nSwapInputs = CLng(.txtSwapInputs.Text)
End If
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
If .cmbTransition.Text <> vbNullString Then
bstrTransition = CStr(.cmbTransition.Text)
End If
End With
'insert the transition into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewTransition = CreateTransition(gbl_objTimeline)
If Not objNewTransition Is Nothing Then Call InsertTransition(objNewTransition, gbl_objDexterObject, TransitionFriendlyNameToCLSID(bstrTransition), dblStartTime, dblStopTime)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy the dialog
Unload frmTransitions: Set frmTransitions = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompDelete_Click
' * procedure description: Occurs when the composition popup context menu's 'Delete' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompDelete_Click()
Dim objComposition As AMTimelineComp
On Local Error GoTo ErrLine
'obtain the composition from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objComposition = gbl_objDexterObject
Else: Exit Sub
End If
'remove the item
Call gbl_objDexterObject.RemoveAll
Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key)
Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index)
If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing
'clean-up & dereference
If Not objComposition Is Nothing Then Set objComposition = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuCompEdit_Click
' * procedure description: Occurs when the composition popup context menu's 'Edit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuCompEdit_Click()
Dim nPriority As Long
Dim dblStopTime As Double
Dim dblStartTime As Double
Dim objComp As AMTimelineComp
On Local Error GoTo ErrLine
'obtain the composition from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objComp = gbl_objDexterObject
Else: Exit Sub
End If
'obtain existing group information
If Not objComp Is Nothing Then
'get start /stoptime
Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime)
End If
'hide the dialog
Load frmComp
frmComp.Visible = False
'update the form with the existing information
With frmComp
.txtPriority = 0 'methodology not available
.txtStartTime = CStr(dblStartTime)
.txtStopTime = CStr(dblStopTime)
End With
'display the dialog
frmComp.Caption = "Edit Composition"
frmComp.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmComp.Visible = False: DoEvents
Loop
'verify unload mode
If frmComp.UnloadMode = 1 Then
Unload frmComp: Set frmComp = Nothing: Exit Sub
End If
'update the timeline info given the new information
If Not gbl_objDexterObject Is Nothing Then
'set the media times
If IsNumeric(frmComp.txtStopTime.Text) And IsNumeric(frmComp.txtStartTime.Text) Then
Call gbl_objDexterObject.SetStartStop2(CDbl(frmComp.txtStopTime.Text), CDbl(frmComp.txtStartTime.Text))
End If
End If
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'destroy the dialog
Unload frmClip: Set frmClip = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuEffect_Click
' * procedure description: Occurs when the effect popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuEffect_Click()
On Local Error GoTo ErrLine
'set menu state
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Children = 0 Then
If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False
If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False
ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then
If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False
If mnuEffectCollapse.Enabled = False Then mnuEffectCollapse.Enabled = True
ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then
If mnuEffectExpand.Enabled = False Then mnuEffectExpand.Enabled = True
If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False
Else
If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False
If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuEffectCollapse_Click
' * procedure description: Occurs when the effect popup context menu's 'Collapse' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuEffectCollapse_Click()
On Local Error GoTo ErrLine
'collapse the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = True Then
tvwSimpleTree.SelectedItem.Expanded = False
If mnuEffectExpand.Enabled = False Then mnuEffectExpand.Enabled = True
If mnuEffectCollapse.Enabled = True Then mnuEffectCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuEffectExpand_Click
' * procedure description: Occurs when the effect popup context menu's 'Expand' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuEffectExpand_Click()
On Local Error GoTo ErrLine
'expand the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = False Then
tvwSimpleTree.SelectedItem.Expanded = True
If mnuEffectExpand.Enabled = True Then mnuEffectExpand.Enabled = False
If mnuEffectCollapse.Enabled = False Then mnuEffectCollapse.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuEffectDelete_Click
' * procedure description: Occurs when the effect popup context menu's 'Delete' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuEffectDelete_Click()
Dim objEffect As AMTimelineEffect
On Local Error GoTo ErrLine
'obtain the effect from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objEffect = gbl_objDexterObject
Else: Exit Sub
End If
'remove the item
Call gbl_objDexterObject.RemoveAll
Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key)
Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index)
If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing
'clean-up & dereference
If Not objEffect Is Nothing Then Set objEffect = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuEffectEdit_Click
' * procedure description: Occurs when the effect popup context menu's 'Edit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuEffectEdit_Click()
Dim nPriority As Long
Dim dblStopTime As Double
Dim dblStartTime As Double
Dim bstrEffectCLSID As String
Dim objEffect As AMTimelineEffect
On Local Error GoTo ErrLine
'obtain the effect from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objEffect = gbl_objDexterObject
Else: Exit Sub
End If
'obtain existing group information
If Not objEffect Is Nothing Then
With objEffect
'get priority
Call objEffect.EffectGetPriority(nPriority)
'get start /stoptime
Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime)
'get effect guid
bstrEffectCLSID = gbl_objDexterObject.GetSubObjectGUIDB
End With
End If
'hide the dialog
Load frmEffect
frmEffect.Visible = False
'update the form with the existing information
With frmEffect
.txtPriority = 0 'methodology not available
.txtStartTime = CStr(dblStartTime)
.txtStopTime = CStr(dblStopTime)
.cmbEffect.Text = CStr(EffectCLSIDToFriendlyName(bstrEffectCLSID))
End With
'display the dialog
frmEffect.Caption = "Edit Composition"
frmEffect.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmEffect.Visible = False: DoEvents
Loop
'verify unload mode
If frmEffect.UnloadMode = 1 Then
Unload frmEffect: Set frmEffect = Nothing: Exit Sub
End If
'query the dialog information
With frmEffect
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
If IsNumeric(.txtPriority.Text) Then
nPriority = CLng(.txtPriority.Text)
End If
If .cmbEffect.Text <> vbNullString Then
bstrEffectCLSID = CStr(.cmbEffect.Text)
End If
End With
'update the timeline info given the new information
If Not gbl_objDexterObject Is Nothing Then
'set the media times
Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime)
'set the effect
If EffectFriendlyNameToCLSID(bstrEffectCLSID) <> vbNullString Then
Call gbl_objDexterObject.SetSubObjectGUIDB(EffectFriendlyNameToCLSID(bstrEffectCLSID))
End If
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy the dialog
Unload frmClip: Set frmClip = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuFile_Click
' * procedure description: Occurs when the file popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuFile_Click()
On Local Error GoTo ErrLine
'do not allow new timeline or open file operations when rendering..
If Not gbl_objQuartzVB Is Nothing Then
If gbl_objQuartzVB.State = QTZStatusPlaying Then
If mnuFileNew.Enabled = True Then mnuFileNew.Enabled = False
If mnuFileOpen.Enabled = True Then mnuFileOpen.Enabled = False
Else
If mnuFileNew.Enabled = False Then mnuFileNew.Enabled = True
If mnuFileOpen.Enabled = False Then mnuFileOpen.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuFileExit_Click
' * procedure description: Occurs when the file popup context menu's 'Exit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuFileExit_Click()
Dim frm As Form
On Local Error GoTo ErrLine
'proceed to end the application
For Each frm In Forms
frm.Move Screen.Width * -8, Screen.Height * -8
frm.Visible = False: Unload frm
Next
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuFileNewTimeline_Click
' * procedure description: Occurs when the file popup context menu's 'New' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuFileNewTimeline_Click()
On Local Error GoTo ErrLine
'display the timeline dialog
frmTimeline.Show vbModal, Me
frmTimeline.Caption = "Insert Timeline"
'wait until the user closes the dialog
Do Until frmTimeline.Visible = False: DoEvents
Loop
'determine if they canceled out
If frmTimeline.UnloadMode = 1 Then
Unload frmTimeline: Set frmTimeline = Nothing: Exit Sub
End If
'clear the existing timeline
If Not gbl_objTimeline Is Nothing Then Call ClearTimeline(gbl_objTimeline)
'dereference & clean-up application-level data
If Not gbl_objTimeline Is Nothing Then Set gbl_objTimeline = Nothing
If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing
'reinitalize application-level data
Set gbl_objTimeline = New AMTimeline
Set gbl_objFilterGraph = New FilgraphManager
'reinitalize the treeview/listview
Call lstViewInfo.ListItems.Clear
Call tvwSimpleTree.Nodes.Clear
'set default(s)
With gbl_objTimeline
If IsNumeric(frmTimeline.txtTransitionsEnabled.Text) Then
.EnableTransitions CLng(frmTimeline.txtTransitionsEnabled.Text)
End If
If IsNumeric(frmTimeline.txtEffectsEnabled.Text) Then
.EnableEffects CLng(frmTimeline.txtEffectsEnabled.Text)
End If
If IsNumeric(frmTimeline.txtDefaultFPS.Text) Then
.SetDefaultFPS CDbl(frmTimeline.txtDefaultFPS.Text)
End If
If frmTimeline.cmbDefaultTransition.Text <> vbNullString Then
.SetDefaultTransitionB CStr(TransitionFriendlyNameToCLSID(frmTimeline.cmbDefaultTransition.Text))
End If
If frmTimeline.cmbDefaultEffect.Text <> vbNullString Then
.SetDefaultEffectB CStr(EffectFriendlyNameToCLSID(frmTimeline.cmbDefaultEffect.Text))
End If
End With
'unload dialog
Unload frmTimeline: Set frmTimeline = Nothing
'update ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'update the button(s)
With tbMain.Buttons
.Item("Play").Enabled = True
.Item("Pause").Enabled = False
.Item("Stop").Enabled = False
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'update the state on the popup context menu
mnuTimeLinePlay.Enabled = True
mnuTimeLineStop.Enabled = False
mnuTimeLinePause.Enabled = False
mnuTimeLineRenderTimeLine.Enabled = True
mnuTimeLineClearRenderEngine.Enabled = True
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuFileOpen_Click
' * procedure description: Occurs when the file popup context menu's 'Open' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuFileOpen_Click()
Dim nCount As Long
Dim bstrFileName As String
Dim objLocalTimeline As AMTimeline
On Local Error GoTo ErrLine
'display a common dialog
'for the user and obtain a filename
With ctrlCommonDialog
.CancelError = True
.DefaultExt = "XTL"
.Filter = "XTL Files (*.xtl)|*.xtl|"
.ShowOpen: bstrFileName = .FileName
End With
'verify the file extension is valid
If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then
'at least it's been named an xtl file, proceed to attempt an import..
Set objLocalTimeline = New AMTimeline
Call RestoreTimeline(objLocalTimeline, bstrFileName, DEXImportXTL)
'verify restoration
If Not objLocalTimeline Is Nothing Then
'import succeeded; clean-up application-level scope
If Not gbl_objTimeline Is Nothing Then
'dereference & clean-up timeline
Call ClearTimeline(gbl_objTimeline)
Set gbl_objTimeline = Nothing
'dereference & clean-up rendering
If Not gbl_objQuartzVB Is Nothing Then Call gbl_objQuartzVB.StopGraph
If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing
If Not gbl_objRenderEngine Is Nothing Then Call gbl_objRenderEngine.ScrapIt
If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing
End If
'assign the local timeline to global scope
Set gbl_objTimeline = objLocalTimeline
'render the timeline and derive a filter graph manager
Set gbl_objFilterGraph = RenderTimeline(gbl_objTimeline)
'map the timeline to the userinterface
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
mnuTimeLineClearRenderEngine.Enabled = False
'update the button(s)
With tbMain.Buttons
.Item("Play").Enabled = True
.Item("Pause").Enabled = False
.Item("Stop").Enabled = False
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'enable/disable the state of the popup context menu's
If mnuTimeLinePlay.Enabled = False Then mnuTimeLinePlay.Enabled = True
If mnuTimeLineStop.Enabled = True Then mnuTimeLineStop.Enabled = False
If mnuTimeLinePause.Enabled = False Then mnuTimeLinePause.Enabled = True
If mnuTimeLineRenderTimeLine.Enabled = True Then mnuTimeLineRenderTimeLine.Enabled = False
If mnuTimeLineClearRenderEngine.Enabled = False Then mnuTimeLineClearRenderEngine.Enabled = True
'reset module-level filename
gbl_bstrLoadFile = ctrlCommonDialog.FileName
'reset the caption on the application's main form
bstrFileName = Mid(bstrFileName, InStrRev(bstrFileName, "\") + 1)
Me.Caption = "DexterVB - " & bstrFileName
End If
End If
'clean-up & dereference
If Not objLocalTimeline Is Nothing Then Set objLocalTimeline = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuFileSaveAs_Click
' * procedure description: Occurs when the file popup context menu's 'SaveAs' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuFileSaveAs_Click()
Dim bstrFileName As String
On Local Error GoTo ErrLine
'display a common dialog
'for the user and obtain a filename
With ctrlCommonDialog
.CancelError = True
.DefaultExt = "XTL"
.Filter = "XTL Files (*.xtl)|*.xtl|Graph Files (*.grf)|*.grf|"
.ShowSave: bstrFileName = .FileName
End With
'verify the file extension is valid
If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then
'user would like to export as an xtl file, proceed to attempt an export..
If Not gbl_objTimeline Is Nothing Then
Call SaveTimeline(gbl_objTimeline, bstrFileName, DEXExportXTL)
End If
ElseIf InStr(1, LCase(bstrFileName), ".grf") > 0 Then
'user would like to export as a graph file, proceed to attempt an export..
If Not gbl_objTimeline Is Nothing Then
Call SaveTimeline(gbl_objTimeline, bstrFileName, DEXExportGRF)
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroup_Click
' * procedure description: Occurs when the group popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuGroup_Click()
On Local Error GoTo ErrLine
'set menu state
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Children = 0 Then
If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False
If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False
ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then
If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False
If mnuGroupCollapse.Enabled = False Then mnuGroupCollapse.Enabled = True
ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then
If mnuGroupExpand.Enabled = False Then mnuGroupExpand.Enabled = True
If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False
Else
If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False
If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupCollapse_Click
' * procedure description: Occurs when the group popup context menu's 'Collapse' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupCollapse_Click()
On Local Error GoTo ErrLine
'collapse the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = True Then
tvwSimpleTree.SelectedItem.Expanded = False
If mnuGroupExpand.Enabled = False Then mnuGroupExpand.Enabled = True
If mnuGroupCollapse.Enabled = True Then mnuGroupCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupExpand_Click
' * procedure description: Occurs when the group popup context menu's 'Expand' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupExpand_Click()
On Local Error GoTo ErrLine
'expand the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = False Then
tvwSimpleTree.SelectedItem.Expanded = True
If mnuGroupExpand.Enabled = True Then mnuGroupExpand.Enabled = False
If mnuGroupCollapse.Enabled = False Then mnuGroupCollapse.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupAddComp_Click
' * procedure description: Occurs when the group popup context menu's 'Add Composition' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupAddComp_Click()
Dim nPriority As Long
Dim dblStartTime As Double
Dim dblStopTime As Double
Dim objNewComposite As AMTimelineComp
On Local Error GoTo ErrLine
'display the dialog
frmComp.Caption = "Add Composition"
frmComp.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmComp.Visible = False: DoEvents
Loop
'verify unload mode
If frmComp.UnloadMode = 1 Then
Unload frmComp: Set frmComp = Nothing: Exit Sub
End If
'query the dialog for user input
With frmComp
If IsNumeric(.txtPriority.Text) Then
nPriority = CLng(.txtPriority.Text)
End If
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
End With
'insert the composite into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewComposite = CreateComposite(gbl_objTimeline)
If Not objNewComposite Is Nothing Then Call InsertComposite(objNewComposite, gbl_objDexterObject)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'unload the dialog
Unload frmComp: Set frmComp = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupAddEffect_Click
' * procedure description: Occurs when the group popup context menu's 'Add Effect' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupAddEffect_Click()
Dim nEffectPriority As Long
Dim bstrEffectGUID As String
Dim dblEffectStopTime As Double
Dim dblEffectStartTime As Double
Dim objNewEffect As AMTimelineEffect
Dim objTimelineObject As AMTimelineObj
On Local Error GoTo ErrLine
'display the insert effect dialog
frmEffect.Caption = "Add Effect"
frmEffect.Show vbModal, Me
'wait until the user closes the dialog
Do: DoEvents
If frmEffect.Visible = False Then Exit Do
Loop
'verify unload mode
If frmEffect.UnloadMode = 1 Then
Unload frmEffect: Set frmEffect = Nothing: Exit Sub
End If
'query the dialog information
With frmEffect
If IsNumeric(.txtStartTime.Text) Then
dblEffectStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblEffectStopTime = CDbl(.txtStopTime.Text)
End If
If IsNumeric(.txtPriority.Text) Then
nEffectPriority = CLng(.txtPriority.Text)
End If
If .cmbEffect.Text <> vbNullString Then
bstrEffectGUID = CStr(.cmbEffect.Text)
End If
End With
'insert the effect into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewEffect = CreateEffect(gbl_objTimeline)
If Not objNewEffect Is Nothing Then Call InsertEffect(objNewEffect, gbl_objDexterObject, EffectFriendlyNameToCLSID(bstrEffectGUID), dblEffectStartTime, dblEffectStopTime)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy the dialog
Unload frmEffect: Set frmEffect = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupAddTrack_Click
' * procedure description: Occurs when the group popup context menu's 'Add Track' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupAddTrack_Click()
Dim nBlank As Long
Dim nMuted As Long
Dim nPriority As Long
Dim dblStartTime As Double
Dim dblStopTime As Double
Dim objNewTrack As AMTimelineTrack
On Local Error GoTo ErrLine
'display the dialog
frmTrack.Caption = "Add Track"
frmTrack.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTrack.Visible = False: DoEvents
Loop
'verify unload mode
If frmTrack.UnloadMode = 1 Then
Unload frmTrack: Set frmTrack = Nothing: Exit Sub
End If
'obtain the user input from the dialog
With frmTrack
If IsNumeric(.txtBlank.Text) Then
nBlank = CLng(.txtBlank.Text)
End If
If IsNumeric(.txtMuted.Text) Then
nMuted = CLng(.txtMuted.Text)
End If
If IsNumeric(.txtMuted.Text) Then
nPriority = CLng(.txtMuted.Text)
End If
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
End With
'insert the track into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewTrack = CreateTrack(gbl_objTimeline)
If Not objNewTrack Is Nothing Then Call InsertTrack(objNewTrack, gbl_objDexterObject, nPriority)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy dialog
Unload frmTrack: Set frmTrack = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupAddTransition_Click
' * procedure description: Occurs when the group popup context menu's 'Add Transition' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupAddTransition_Click()
Dim nCutpoint As Long
Dim nCutsOnly As Long
Dim nSwapInputs As Long
Dim bstrTransition As String
Dim dblStartTime As Double
Dim dblStopTime As Double
Dim objNewTransition As AMTimelineTrans
On Local Error GoTo ErrLine
'display the dialog
frmTransitions.Caption = "Add Transition"
frmTransitions.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTransitions.Visible = False: DoEvents
Loop
'verify unload mode
If frmTransitions.UnloadMode = 1 Then
Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub
End If
'obtain user input
With frmTransitions
If IsNumeric(.txtCutpoint.Text) Then
nCutpoint = CLng(.txtCutpoint.Text)
End If
If IsNumeric(.txtCutsOnly.Text) Then
nCutsOnly = CLng(.txtCutsOnly.Text)
End If
If IsNumeric(.txtSwapInputs.Text) Then
nSwapInputs = CLng(.txtSwapInputs.Text)
End If
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
If .cmbTransition.Text <> vbNullString Then
bstrTransition = CStr(.cmbTransition.Text)
End If
End With
'insert the transition into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewTransition = CreateTransition(gbl_objTimeline)
If Not objNewTransition Is Nothing Then Call InsertTransition(objNewTransition, gbl_objDexterObject, TransitionFriendlyNameToCLSID(bstrTransition), dblStartTime, dblStopTime)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy the dialog
Unload frmTransitions: Set frmTransitions = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupDelete_Click
' * procedure description: Occurs when the group popup context menu's 'Delete' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupDelete_Click()
Dim objGroup As AMTimelineGroup
On Local Error GoTo ErrLine
'obtain the group from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objGroup = gbl_objDexterObject
Else: Exit Sub
End If
'remove the item
Call gbl_objDexterObject.RemoveAll
Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key)
Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index)
If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuGroupEdit_Click
' * procedure description: Occurs when the group popup context menu's 'Edit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuGroupEdit_Click()
Dim nPriority As Long
Dim nOutputBuffer As Long
Dim nPreviewMode As Long
Dim dblOutputFPS As Double
Dim bstrGroupName As String
Dim nSmartRecompDirty As Long
Dim nSmartRecompFormat As Long
Dim objGroup As AMTimelineGroup
On Local Error GoTo ErrLine
'obtain the group from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objGroup = gbl_objDexterObject
Else: Exit Sub
End If
'obtain existing group information
If Not objGroup Is Nothing Then
With objGroup
bstrGroupName = .GetGroupName
Call .GetOutputBuffering(nOutputBuffer)
Call .GetOutputFPS(dblOutputFPS)
Call .GetPreviewMode(nPreviewMode)
Call .GetPriority(nPriority)
Call .IsRecompressFormatDirty(nSmartRecompDirty)
Call .IsSmartRecompressFormatSet(nSmartRecompFormat)
End With
End If
'hide the dialog
Load frmGroup
frmTimeline.Visible = False
'update the form with the existing information
With frmGroup
.txtGroupName = bstrGroupName
.txtMediaType = "?" 'feature unavailable, simply set to nullstring
.txtPriority = nPriority
.txtOutputFPS = dblOutputFPS
.txtPreviewMode = nPreviewMode
.txtBuffering = nOutputBuffer
End With
'display the dialog
frmGroup.Caption = "Edit Group"
frmGroup.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmGroup.Visible = False: DoEvents
Loop
'verify unload mode
If frmGroup.UnloadMode = 1 Then
Unload frmGroup: Set frmGroup = Nothing: Exit Sub
End If
'update the timeline info given the new information
With objGroup
.SetGroupName CStr(frmGroup.txtGroupName)
If IsNumeric(frmGroup.txtMediaType) Then
.SetMediaTypeForVB CLng(frmGroup.txtMediaType)
End If
If IsNumeric(frmGroup.txtOutputFPS) Then
If CDbl(frmGroup.txtOutputFPS) > 0 Then
.SetOutputFPS CDbl(frmGroup.txtOutputFPS)
End If
End If
If IsNumeric(frmGroup.txtPreviewMode) Then
.SetPreviewMode CLng(frmGroup.txtPreviewMode)
End If
If IsNumeric(frmGroup.txtBuffering) Then
If CLng(frmGroup.txtBuffering) > 0 Then
.SetOutputBuffering CLng(frmGroup.txtBuffering)
End If
End If
End With
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'destroy the dialog
Unload frmGroup: Set frmGroup = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuHelpAbout_Click
' * procedure description: Occurs when the help menu's 'About' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuHelpAbout_Click()
On Local Error GoTo ErrLine
'display the about dialog for the user
frmAbout.Show 1, Me
frmAbout.SetFocus
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLine_Click
' * procedure description: Occurs when the timeline popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuTimeLine_Click()
On Local Error GoTo ErrLine
'set menu state
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Children = 0 Then
If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False
If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False
ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then
If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False
If mnuTimelineCollapse.Enabled = False Then mnuTimelineCollapse.Enabled = True
ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then
If mnuTimelineExpand.Enabled = False Then mnuTimelineExpand.Enabled = True
If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False
Else
If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False
If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimelineCollapse_Click
' * procedure description: Occurs when the timeline popup context menu's 'Collapse' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimelineCollapse_Click()
On Local Error GoTo ErrLine
'collapse the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = True Then
tvwSimpleTree.SelectedItem.Expanded = False
If mnuTimelineExpand.Enabled = False Then mnuTimelineExpand.Enabled = True
If mnuTimelineCollapse.Enabled = True Then mnuTimelineCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimelineExpand_Click
' * procedure description: Occurs when the timeline popup context menu's 'Expand' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimelineExpand_Click()
On Local Error GoTo ErrLine
'expand the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = False Then
tvwSimpleTree.SelectedItem.Expanded = True
If mnuTimelineExpand.Enabled = True Then mnuTimelineExpand.Enabled = False
If mnuTimelineCollapse.Enabled = False Then mnuTimelineCollapse.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLineClearRenderEngine_Click
' * procedure description: Occurs when the timeline popup context menu's 'ClearRenderEngine' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimeLineClearRenderEngine_Click()
On Local Error GoTo ErrLine
'dereference & clean-up
If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing
If Not gbl_objRenderEngine Is Nothing Then Call gbl_objRenderEngine.ScrapIt
If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing
'disable popup context menu(s)
If mnuTimeLineRenderTimeLine.Enabled = False Then mnuTimeLineRenderTimeLine.Enabled = True
If mnuTimeLineClearRenderEngine.Enabled = True Then mnuTimeLineClearRenderEngine.Enabled = False
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLineEdit_Click
' * procedure description: Occurs when the timeline popup context menu's 'Edit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimeLineEdit_Click()
Dim nDirty As Long
Dim nInsertMode As Long
Dim dblDuration As Double
Dim nEffectsEnabled As Long
Dim dblDefaultFPS As Double
Dim bstrDefaultEffect As String
Dim nTransitionsEnabled As Long
Dim bstrDefaultTransition As String
On Local Error GoTo ErrLine
'obtain existing timeline information
If Not gbl_objTimeline Is Nothing Then
With gbl_objTimeline
.GetInsertMode nInsertMode
.TransitionsEnabled nTransitionsEnabled
.EffectsEnabled nEffectsEnabled
.GetDefaultFPS dblDefaultFPS
.IsDirty nDirty
bstrDefaultTransition = .GetDefaultTransitionB
bstrDefaultEffect = .GetDefaultEffectB
End With
End If
'hide the dialog
Load frmTimeline
frmTimeline.Visible = False
'update the form with the existing information
With frmTimeline
.txtInsertMode.Text = CStr(nInsertMode)
.txtTransitionsEnabled.Text = CStr(nTransitionsEnabled)
.txtEffectsEnabled.Text = CStr(nEffectsEnabled)
.txtDuration.Text = CStr(dblDuration)
.txtDefaultFPS.Text = CStr(dblDefaultFPS)
.txtDirty.Text = CStr(nDirty)
.cmbDefaultTransition.Text = CStr(TransitionCLSIDToFriendlyName(bstrDefaultTransition))
.cmbDefaultEffect.Text = CStr(EffectCLSIDToFriendlyName(bstrDefaultEffect))
End With
'display the dialog
frmTimeline.Caption = "Edit Timeline"
frmTimeline.txtDuration.Enabled = False
frmTimeline.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTimeline.Visible = False: DoEvents
Loop
'determine if they canceled out
If frmTimeline.UnloadMode = 1 Then
Unload frmTimeline: Set frmTimeline = Nothing: Exit Sub
End If
'update the timeline info given the new information
With gbl_objTimeline
If IsNumeric(frmTimeline.txtTransitionsEnabled.Text) Then
.EnableTransitions CLng(frmTimeline.txtTransitionsEnabled.Text)
End If
If IsNumeric(frmTimeline.txtEffectsEnabled.Text) Then
.EnableEffects CLng(frmTimeline.txtEffectsEnabled.Text)
End If
If IsNumeric(frmTimeline.txtDefaultFPS.Text) Then
.SetDefaultFPS CDbl(frmTimeline.txtDefaultFPS.Text)
End If
If TransitionFriendlyNameToCLSID(frmTimeline.cmbDefaultTransition.Text) <> vbNullString Then
.SetDefaultTransitionB CStr(TransitionFriendlyNameToCLSID(frmTimeline.cmbDefaultTransition.Text))
End If
If EffectFriendlyNameToCLSID(frmTimeline.cmbDefaultEffect.Text) <> vbNullString Then
.SetDefaultEffectB CStr(EffectFriendlyNameToCLSID(frmTimeline.cmbDefaultEffect.Text))
End If
End With
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'destroy the dialog
Unload frmTimeline: Set frmTimeline = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLineInsertGroup_Click
' * procedure description: Occurs when the timeline popup context menu's 'Insert Group' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimeLineInsertGroup_Click()
Dim nPriority As Long
Dim nBuffering As Long
Dim nMediaType As Long
Dim dblOutputFPS As Double
Dim nPreviewMode As Long
Dim bstrGroupName As String
Dim objNewGroup As AMTimelineGroup
On Local Error GoTo ErrLine
'display the dialog
frmGroup.Caption = "Insert Group"
Call frmGroup.Show(vbModal, Me)
'wait until the user closes the dialog
Do Until frmGroup.Visible = False: DoEvents
Loop
'verify unload mode
If frmGroup.UnloadMode = 1 Then
Unload frmGroup: Set frmGroup = Nothing: Exit Sub
End If
'obtain the values the user entered into the dialog
With frmGroup
If IsNumeric(.txtPriority.Text) Then
nPriority = CLng(.txtPriority.Text)
End If
If IsNumeric(.txtBuffering.Text) Then
nBuffering = CLng(.txtBuffering.Text)
End If
If IsNumeric(.txtMediaType.Text) Then
nMediaType = CLng(.txtMediaType.Text)
End If
If IsNumeric(.txtOutputFPS.Text) Then
dblOutputFPS = CDbl(.txtOutputFPS.Text)
End If
If IsNumeric(.txtPreviewMode.Text) Then
nPreviewMode = CLng(.txtPreviewMode.Text)
End If
If .txtGroupName.Text <> vbNullString Then
bstrGroupName = CStr(.txtGroupName.Text)
End If
End With
'insert the new group into the application timeline
Set objNewGroup = _
CreateGroup(gbl_objTimeline, bstrGroupName, nMediaType, dblOutputFPS, nPreviewMode, nBuffering)
If Not objNewGroup Is Nothing Then Call InsertGroup(gbl_objTimeline, objNewGroup)
'refresh ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'update the button(s)
With tbMain.Buttons
.Item("New").Enabled = True
.Item("Open").Enabled = True
.Item("Save").Enabled = True
.Item("Play").Enabled = True
.Item("Pause").Enabled = False
.Item("Stop").Enabled = False
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'update the state on the popup context menu
mnuFileSaveAs.Enabled = True
mnuTimeLinePlay.Enabled = True
mnuTimeLineStop.Enabled = False
mnuTimeLinePause.Enabled = False
mnuTimeLineRenderTimeLine.Enabled = True
mnuTimeLineClearRenderEngine.Enabled = True
'unload the dialog
Unload frmGroup: Set frmGroup = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLinePause_Click
' * procedure description: Occurs when the timeline popup context menu's 'Pause' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimelinePause_Click()
On Local Error GoTo ErrLine
'dupe the funtionality of a 'pause' button click
Call tbMain_ButtonClick(tbMain.Buttons("Pause"))
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLinePlay_Click
' * procedure description: Occurs when the timeline popup context menu's 'Play' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimelinePlay_Click()
On Local Error GoTo ErrLine
'dupe the funtionality of a 'play' button click
Call tbMain_ButtonClick(tbMain.Buttons("Play"))
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLineRenderTimeLine_Click
' * procedure description: Occurs when the timeline popup context menu's 'RenderTimeline' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimeLineRenderTimeLine_Click()
On Local Error GoTo ErrLine
'refresh ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'connect front end
Call gbl_objRenderEngine.ConnectFrontEnd
'enable/disable popup context menu's
mnuTimeLineRenderTimeLine.Enabled = False
mnuTimeLineClearRenderEngine.Enabled = True
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTimeLineStop_Click
' * procedure description: Occurs when the timeline popup context menu's 'Stop' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTimelineStop_Click()
On Local Error GoTo ErrLine
'dupe the funtionality of a 'stop' button click
Call tbMain_ButtonClick(tbMain.Buttons("Stop"))
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrack_Click
' * procedure description: Occurs when the track popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuTrack_Click()
On Local Error GoTo ErrLine
'set menu state
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Children = 0 Then
If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False
If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False
ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then
If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False
If mnuTrackCollapse.Enabled = False Then mnuTrackCollapse.Enabled = True
ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then
If mnuTrackExpand.Enabled = False Then mnuTrackExpand.Enabled = True
If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False
Else
If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False
If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrackCollapse_Click
' * procedure description: Occurs when the track popup context menu's 'Collapse' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTrackCollapse_Click()
On Local Error GoTo ErrLine
'collapse the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = True Then
tvwSimpleTree.SelectedItem.Expanded = False
If mnuTrackExpand.Enabled = False Then mnuTrackExpand.Enabled = True
If mnuTrackCollapse.Enabled = True Then mnuTrackCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrackExpand_Click
' * procedure description: Occurs when the track popup context menu's 'Expand' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTrackExpand_Click()
On Local Error GoTo ErrLine
'expand the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = False Then
tvwSimpleTree.SelectedItem.Expanded = True
If mnuTrackExpand.Enabled = True Then mnuTrackExpand.Enabled = False
If mnuTrackCollapse.Enabled = False Then mnuTrackCollapse.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrackAddClip_Click
' * procedure description: Occurs when the track popup context menu's 'Add Clip' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTrackAddClip_Click()
Dim nMuted As Long
Dim dblFPS As Double
Dim dblTStop As Double
Dim dblTStart As Double
Dim dblMStart As Double
Dim dblMStop As Double
Dim nStretchMode As Long
Dim nStreamNumber As Long
Dim dblMediaLength As Double
Dim bstrMediaSourceName As String
Dim objNewSourceClip As AMTimelineSrc
On Local Error GoTo ErrLine
'display the dialog
frmClip.Caption = "Add Clip"
frmClip.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmClip.Visible = False: DoEvents
Loop
'verify unload mode
If frmClip.UnloadMode = 1 Then
Unload frmClip: Set frmClip = Nothing: Exit Sub
End If
'obtain the user input from the dialog
With frmClip
If IsNumeric(.txtMStart.Text) Then
dblMStart = CDbl(.txtMStart.Text)
End If
If IsNumeric(.txtTStop.Text) Then
dblMStop = CDbl(.txtTStop.Text)
End If
If IsNumeric(.txtTStart.Text) Then
dblTStart = CDbl(.txtTStart.Text)
End If
If IsNumeric(.txtTStop.Text) Then
dblTStop = CDbl(.txtTStop.Text)
End If
If IsNumeric(.txtMediaLength.Text) Then
dblMediaLength = CDbl(.txtMediaLength.Text)
End If
If IsNumeric(.txtStreamNumber.Text) Then
nStreamNumber = CLng(.txtStreamNumber.Text)
End If
If IsNumeric(.txtFPS.Text) Then
dblFPS = CDbl(.txtFPS.Text)
End If
If IsNumeric(.txtStretchMode.Text) Then
nStretchMode = CLng(.txtStretchMode.Text)
End If
If IsNumeric(.txtMuted.Text) Then
nMuted = CLng(.txtMuted.Text)
End If
If .txtMediaName <> vbNullString Then
bstrMediaSourceName = CStr(.txtMediaName)
End If
End With
'insert the new clip into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewSourceClip = CreateSource(gbl_objTimeline)
If Not objNewSourceClip Is Nothing Then Call InsertSource(gbl_objDexterObject, objNewSourceClip, bstrMediaSourceName, dblTStart, dblTStop, dblMStart, dblMStop)
If Not objNewSourceClip Is Nothing Then
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'update the button(s)
With tbMain.Buttons
.Item("Play").Enabled = True
.Item("Pause").Enabled = False
.Item("Stop").Enabled = False
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'update the state on the popup context menu
mnuTimeLinePlay.Enabled = True
mnuTimeLineStop.Enabled = False
mnuTimeLinePause.Enabled = False
mnuTimeLineRenderTimeLine.Enabled = True
mnuTimeLineClearRenderEngine.Enabled = True
End If
End If
'destroy dialog
Unload frmClip: Set frmClip = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrackAddEffect_Click
' * procedure description: Occurs when the track popup context menu's 'Add Effect' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTrackAddEffect_Click()
Dim nEffectPriority As Long
Dim bstrEffectGUID As String
Dim dblEffectStopTime As Double
Dim dblEffectStartTime As Double
Dim objNewEffect As AMTimelineEffect
Dim objTimelineObject As AMTimelineObj
On Local Error GoTo ErrLine
'display the insert effect dialog
frmEffect.Caption = "Add Effect"
frmEffect.Show vbModal, Me
'wait until the user closes the dialog
Do: DoEvents
If frmEffect.Visible = False Then Exit Do
Loop
'verify unload mode
If frmEffect.UnloadMode = 1 Then
Unload frmEffect: Set frmEffect = Nothing: Exit Sub
End If
'query the dialog information
With frmEffect
If IsNumeric(.txtStartTime.Text) Then
dblEffectStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblEffectStopTime = CDbl(.txtStopTime.Text)
End If
If IsNumeric(.txtPriority.Text) Then
nEffectPriority = CLng(.txtPriority.Text)
End If
If .cmbEffect.Text <> vbNullString Then
bstrEffectGUID = CStr(.cmbEffect.Text)
End If
End With
'insert the effect into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewEffect = CreateEffect(gbl_objTimeline)
If Not objNewEffect Is Nothing Then Call InsertEffect(objNewEffect, gbl_objDexterObject, EffectFriendlyNameToCLSID(bstrEffectGUID), dblEffectStartTime, dblEffectStopTime)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy the dialog
Unload frmEffect: Set frmEffect = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrackAddTransition_Click
' * procedure description: Occurs when the track popup context menu's 'Add Transition' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTrackAddTransition_Click()
Dim nCutpoint As Long
Dim nCutsOnly As Long
Dim nSwapInputs As Long
Dim bstrTransition As String
Dim dblStartTime As Double
Dim dblStopTime As Double
Dim objNewTransition As AMTimelineTrans
On Local Error GoTo ErrLine
'display the dialog
frmTransitions.Caption = "Add Transition"
frmTransitions.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTransitions.Visible = False: DoEvents
Loop
'verify unload mode
If frmTransitions.UnloadMode = 1 Then
Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub
End If
'obtain user input
With frmTransitions
If IsNumeric(.txtCutpoint.Text) Then
nCutpoint = CLng(.txtCutpoint.Text)
End If
If IsNumeric(.txtCutsOnly.Text) Then
nCutsOnly = CLng(.txtCutsOnly.Text)
End If
If IsNumeric(.txtSwapInputs.Text) Then
nSwapInputs = CLng(.txtSwapInputs.Text)
End If
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
If .cmbTransition.Text <> vbNullString Then
bstrTransition = CStr(.cmbTransition.Text)
End If
End With
'insert the transition into the timeline
If Not gbl_objTimeline Is Nothing Then
Set objNewTransition = CreateTransition(gbl_objTimeline)
If Not objNewTransition Is Nothing Then Call InsertTransition(objNewTransition, gbl_objDexterObject, TransitionFriendlyNameToCLSID(bstrTransition), dblStartTime, dblStopTime)
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
End If
'destroy the dialog
Unload frmTransitions: Set frmTransitions = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrackDelete_Click
' * procedure description: Occurs when the track popup context menu's 'Delete' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTrackDelete_Click()
Dim objTrack As AMTimelineTrack
On Local Error GoTo ErrLine
'obtain the track from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objTrack = gbl_objDexterObject
Else: Exit Sub
End If
'remove the item
Call gbl_objDexterObject.RemoveAll
Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key)
Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index)
If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing
'clean-up & dereference
If Not objTrack Is Nothing Then Set objTrack = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrackEdit_Click
' * procedure description: Occurs when the track popup context menu's 'Edit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTrackEdit_Click()
Dim nBlank As Long
Dim nMuted As Long
Dim nPriority As Long
Dim dblStopTime As Double
Dim dblStartTime As Double
Dim objTrack As AMTimelineTrack
On Local Error GoTo ErrLine
'obtain the track from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objTrack = gbl_objDexterObject
Else: Exit Sub
End If
'obtain existing group information
If Not objTrack Is Nothing Then
With objTrack
'get blank
Call objTrack.AreYouBlank(nBlank)
'get muted
Call gbl_objDexterObject.GetMuted(nMuted)
'get start /stoptime
Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime)
End With
End If
'hide the dialog
Load frmTrack
frmTrack.Visible = False
'update the form with the existing information
With frmTrack
.txtPriority = 0 'methodology not available
.txtStartTime = CStr(dblStartTime)
.txtStopTime = CStr(dblStopTime)
.txtBlank.Text = CStr(nBlank)
.txtMuted.Text = CStr(nMuted)
End With
'display the dialog
frmTrack.Caption = "Edit Track"
frmTrack.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTrack.Visible = False: DoEvents
Loop
'verify unload mode
If frmTrack.UnloadMode = 1 Then
Unload frmTrack: Set frmTrack = Nothing: Exit Sub
End If
'query the dialog information
With frmTrack
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
If IsNumeric(.txtPriority.Text) Then
nPriority = CLng(.txtPriority.Text)
End If
If .txtBlank.Text <> vbNullString Then
nBlank = CStr(.txtBlank.Text)
End If
If .txtMuted.Text <> vbNullString Then
nMuted = CStr(.txtMuted.Text)
End If
End With
'update the timeline info given the new information
If Not gbl_objDexterObject Is Nothing Then
'set the muted state
Call gbl_objDexterObject.SetMuted(nMuted)
'set the media times
Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime)
End If
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'destroy the dialog
Unload frmTrack: Set frmTrack = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTrans_Click
' * procedure description: Occurs when the transition popup context menu is invoked
' *
' ******************************************************************************************************************************
Private Sub mnuTrans_Click()
On Local Error GoTo ErrLine
'set menu state
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Children = 0 Then
If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False
If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False
ElseIf tvwSimpleTree.SelectedItem.Expanded = True Then
If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False
If mnuTransCollapse.Enabled = False Then mnuTransCollapse.Enabled = True
ElseIf tvwSimpleTree.SelectedItem.Expanded = False Then
If mnuTransExpand.Enabled = False Then mnuTransExpand.Enabled = True
If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False
Else
If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False
If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTransCollapse_Click
' * procedure description: Occurs when the transition popup context menu's 'Collapse' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTransCollapse_Click()
On Local Error GoTo ErrLine
'collapse the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = True Then
tvwSimpleTree.SelectedItem.Expanded = False
If mnuTransExpand.Enabled = False Then mnuTransExpand.Enabled = True
If mnuTransCollapse.Enabled = True Then mnuTransCollapse.Enabled = False
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTransExpand_Click
' * procedure description: Occurs when the transition popup context menu's 'Expand' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTransExpand_Click()
On Local Error GoTo ErrLine
'expand the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.SelectedItem.Expanded = False Then
tvwSimpleTree.SelectedItem.Expanded = True
If mnuTransExpand.Enabled = True Then mnuTransExpand.Enabled = False
If mnuTransCollapse.Enabled = False Then mnuTransCollapse.Enabled = True
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTransDelete_Click
' * procedure description: Occurs when the transition popup context menu's 'Delete' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTransDelete_Click()
Dim objTransition As AMTimelineTrans
On Local Error GoTo ErrLine
'obtain the transition from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objTransition = gbl_objDexterObject
Else: Exit Sub
End If
'remove the item
Call gbl_objDexterObject.RemoveAll
Call gbl_colNormalEnum.Remove(tvwSimpleTree.SelectedItem.Key)
Call tvwSimpleTree.Nodes.Remove(tvwSimpleTree.SelectedItem.Index)
If Not gbl_objDexterObject Is Nothing Then Set gbl_objDexterObject = Nothing
'clean-up & dereference
If Not objTransition Is Nothing Then Set objTransition = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: mnuTransEdit_Click
' * procedure description: Occurs when the transition popup context menu's 'Edit' option is elected
' *
' ******************************************************************************************************************************
Private Sub mnuTransEdit_Click()
Dim nCutsOnly As Long
Dim nSwapInputs As Long
Dim dblCutpoint As Double
Dim dblStopTime As Double
Dim dblStartTime As Double
Dim bstrTransitionCLSID As String
Dim objTransition As AMTimelineTrans
On Local Error GoTo ErrLine
'obtain the transition from the global timeline object
'which is reset when the user clicks a node on the tree
If Not gbl_objDexterObject Is Nothing Then
Set objTransition = gbl_objDexterObject
Else: Exit Sub
End If
'obtain existing transition information
If Not objTransition Is Nothing Then
With objTransition
'get cutpoint
Call .GetCutPoint2(dblCutpoint)
'get cutsonly
Call .GetCutsOnly(nCutsOnly)
'get swap inputs
Call .GetSwapInputs(nSwapInputs)
'get start /stoptime
Call gbl_objDexterObject.GetStartStop2(dblStartTime, dblStopTime)
'get transition clsid
bstrTransitionCLSID = gbl_objDexterObject.GetSubObjectGUIDB
End With
End If
'hide the dialog
Load frmTransitions
frmTransitions.Visible = False
'update the form with the existing information
With frmTransitions
.txtStartTime = CStr(dblStartTime)
.txtStopTime = CStr(dblStopTime)
.txtCutsOnly = CStr(nCutsOnly)
.txtCutpoint = CStr(dblCutpoint)
.txtSwapInputs = CStr(nSwapInputs)
.cmbTransition = CStr(TransitionCLSIDToFriendlyName(bstrTransitionCLSID))
End With
'display the dialog
frmTransitions.Caption = "Edit Transition"
frmTransitions.Show vbModal, Me
'wait until the user closes the dialog
Do Until frmTransitions.Visible = False: DoEvents
Loop
'verify unload mode
If frmTransitions.UnloadMode = 1 Then
Unload frmTransitions: Set frmTransitions = Nothing: Exit Sub
End If
'query the dialog information
With frmTransitions
If IsNumeric(.txtStartTime.Text) Then
dblStartTime = CDbl(.txtStartTime.Text)
End If
If IsNumeric(.txtStopTime.Text) Then
dblStopTime = CDbl(.txtStopTime.Text)
End If
If IsNumeric(.txtCutpoint.Text) Then
dblCutpoint = CDbl(.txtCutpoint.Text)
End If
If IsNumeric(.txtCutsOnly.Text) Then
nCutsOnly = CLng(.txtCutsOnly.Text)
End If
If IsNumeric(.txtSwapInputs.Text) Then
nSwapInputs = CLng(.txtSwapInputs.Text)
End If
If .cmbTransition <> vbNullString Then
bstrTransitionCLSID = TransitionFriendlyNameToCLSID(CStr(.cmbTransition.Text))
End If
End With
'update the transition info given the new information
If Not gbl_objDexterObject Is Nothing Then
'set the transition clsid
Call gbl_objDexterObject.SetSubObjectGUIDB(bstrTransitionCLSID)
'set the cutpoint
Call objTransition.SetCutPoint2(dblCutpoint)
'set the cutsonly
Call objTransition.SetCutsOnly(nCutsOnly)
'set the swap inputs
Call objTransition.SetSwapInputs(nSwapInputs)
'set the media times
Call gbl_objDexterObject.SetStartStop2(dblStartTime, dblStopTime)
End If
'refresh the ide
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
'destroy the dialog
Unload frmTransitions: Set frmTransitions = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- STATUSBAR EVENT HANDLERS
' *
' *
' ******************************************************************************************************************************
' * procedure name: sbStatus_MouseMove
' * procedure description: Occurs when the user moves the mouse.
' *
' ******************************************************************************************************************************
Private Sub sbStatus_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
If Me.MousePointer = 9 Then Me.MousePointer = vbDefault
If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: sbStatus_OLEDragDrop
' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual.
' *
' ******************************************************************************************************************************
Private Sub sbStatus_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'pass to the application drag drop handler
Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: sbStatus_OLEDragOver
' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual.
' *
' ******************************************************************************************************************************
Private Sub sbStatus_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
On Local Error GoTo ErrLine
'pass to the application drag over handler
Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- LISTVIEW EVENT HANDLERS
' *
' *
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_AfterLabelEdit
' * procedure description: Occurs after a user edits the label of the currently selected Node or ListItem object.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_AfterLabelEdit(Cancel As Integer, NewString As String)
On Local Error GoTo ErrLine
Cancel = 1
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_BeforeLabelEdit
' * procedure description: Occurs when a user attempts to edit the label of the currently selected ListItem or Node object.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_BeforeLabelEdit(Cancel As Integer)
On Local Error GoTo ErrLine
Cancel = 1
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_Click
' * procedure description: Occurs when the user presses and then releases a mouse button over an object.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_Click()
On Local Error GoTo ErrLine
lstViewInfo.SetFocus
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_ColumnClick
' * procedure description: Occurs when a ColumnHeader object in a ListView control is clicked.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
On Local Error GoTo ErrLine
'sort listview contents by given column
If ColumnHeader.Key = "Parameter" Then
If lstViewInfo.Sorted = False Then lstViewInfo.Sorted = True
If lstViewInfo.SortKey <> 0 Then lstViewInfo.SortKey = 0
If lstViewInfo.SortOrder <> lvwAscending Then lstViewInfo.SortOrder = lvwAscending
ElseIf ColumnHeader.Key = "Value" Then
If lstViewInfo.Sorted = False Then lstViewInfo.Sorted = True
If lstViewInfo.SortKey <> 1 Then lstViewInfo.SortKey = 1
If lstViewInfo.SortOrder <> lvwAscending Then lstViewInfo.SortOrder = lvwAscending
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_GotFocus
' * procedure description: Occurs when an object receives the focus.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_GotFocus()
On Local Error GoTo ErrLine
'reset the tooltip text
lstViewInfo.ToolTipText = vbNullString
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_ItemClick
' * procedure description: Occurs when a ListItem object is clicked or selected
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_ItemClick(ByVal Item As MSComctlLib.ListItem)
On Local Error GoTo ErrLine
'display a tooltip for the item
If Not Item Is Nothing Then
If Item.ListSubItems.Count > 0 Then
If Trim(Item.SubItems(1)) <> vbNullString Then
lstViewInfo.ToolTipText = CStr(Trim(Item.Text) & " = " & Chr(34) & Trim(Item.SubItems(1)) & Chr(34))
Else: lstViewInfo.ToolTipText = vbNullString
End If
Else: lstViewInfo.ToolTipText = CStr(Item.Text)
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_LostFocus
' * procedure description: Occurs when an object loses the focus.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_LostFocus()
On Local Error GoTo ErrLine
'reset the tooltip text
lstViewInfo.ToolTipText = vbNullString
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_MouseDown
' * procedure description: Occurs when the user presses the mouse button while an object has the focus.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'reset the tooltip text
lstViewInfo.ToolTipText = vbNullString
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_MouseMove
' * procedure description: Occurs when the user moves the mouse.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
If Me.MousePointer = 9 Then Me.MousePointer = vbDefault
If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F
'disable tooltip if a hittest on the current position fails
If lstViewInfo.HitTest(X, Y) Is Nothing Then lstViewInfo.ToolTipText = vbNullString
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_OLEDragDrop
' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'pass to the application drag drop handler
Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: lstViewInfo_OLEDragOver
' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual.
' *
' ******************************************************************************************************************************
Private Sub lstViewInfo_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
On Local Error GoTo ErrLine
'pass to the application drag over handler
Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- TREEVIEW EVENT HANDLERS
' *
' *
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_AfterLabelEdit
' * procedure description: Occurs after a user edits the label of the currently selected Node or ListItem object.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_AfterLabelEdit(Cancel As Integer, NewString As String)
On Local Error GoTo ErrLine
Cancel = 1
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_BeforeLabelEdit
' * procedure description: Occurs when a user attempts to edit the label of the currently selected ListItem or Node object.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_BeforeLabelEdit(Cancel As Integer)
On Local Error GoTo ErrLine
Cancel = 1
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_Click
' * procedure description: Occurs when the user presses and then releases a mouse button over an object.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_Click()
On Local Error GoTo ErrLine
'set the root node selected if nothing is selected
If tvwSimpleTree.SelectedItem Is Nothing Then
If tvwSimpleTree.Nodes.Count > 0 Then
If Not tvwSimpleTree.Nodes(1).Root Is Nothing Then
Set tvwSimpleTree.SelectedItem = tvwSimpleTree.Nodes(1).Root
End If
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_Collapse
' * procedure description: Generated when any Node object in a TreeView control is collapsed.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_Collapse(ByVal node As MSComctlLib.node)
On Local Error GoTo ErrLine
'ensure selected
If Not node Is Nothing Then Set tvwSimpleTree.SelectedItem = node
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_DblClick
' * procedure description: Occurs when you press and release a mouse button and then press and release it again over an object.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_DblClick()
On Local Error GoTo ErrLine
'set focus
tvwSimpleTree.SetFocus
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_Expand
' * procedure description: Occurs when a Node object in a TreeView control is expanded; that is, when its child nodes become visible.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_Expand(ByVal node As MSComctlLib.node)
On Local Error GoTo ErrLine
'ensure selected
If Not node Is Nothing Then Set tvwSimpleTree.SelectedItem = node
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_GotFocus
' * procedure description: Occurs when an object receives the focus.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_GotFocus()
On Local Error GoTo ErrLine
'reset the tooltip text
tvwSimpleTree.ToolTipText = vbNullString
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_KeyDown
' * procedure description: Occurs when the user presses a key while an object has the focus.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_KeyDown(KeyCode As Integer, Shift As Integer)
Dim objNode As node
On Local Error GoTo ErrLine
'obtain the selected node on the treeview
If Not tvwSimpleTree.SelectedItem Is Nothing Then
Set objNode = tvwSimpleTree.SelectedItem
Else: Exit Sub
End If
'cross reference the object's guid with the module-level collection
'and attempt to obtain a match based on the unique identifier of the node
If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then
Select Case objNode.Tag
Case "AMTimelineGroup"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineComp"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineTrack"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineSrc"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineTrans"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineEffect"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
End Select
Else: Exit Sub
End If
If KeyCode = vbKeyDelete Then
'delete the item from the treeview
If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then
Select Case objNode.Tag
Case "AMTimeline"
'dereference & clean-up the existing timeline
If Not gbl_objTimeline Is Nothing Then Call ClearTimeline(gbl_objTimeline)
'dereference & clean-up application-level data
If Not gbl_objTimeline Is Nothing Then Set gbl_objTimeline = Nothing
If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing
'reinitalize application-level data
Set gbl_objTimeline = New AMTimeline
Set gbl_objFilterGraph = New FilgraphManager
'reinitalize the treeview/listview
Call lstViewInfo.ListItems.Clear
Call tvwSimpleTree.Nodes.Clear
Case "AMTimelineGroup"
'dupe the functionality of a manual group delete
Call mnuGroupDelete_Click
Case "AMTimelineComp"
'dupe the functionality of a manual composition delete
Call mnuCompDelete_Click
Case "AMTimelineTrack"
'dupe the functionality of a manual track delete
Call mnuTrackDelete_Click
Case "AMTimelineSrc"
'dupe the functionality of a manual clip source delete
Call mnuClipDelete_Click
Case "AMTimelineTrans"
'dupe the functionality of a manual transition delete
Call mnuTransDelete_Click
Case "AMTimelineEffect"
'dupe the functionality of a manual effect delete
Call mnuEffectDelete_Click
End Select
Else: Exit Sub
End If
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_LostFocus
' * procedure description: Occurs when an object loses the focus.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_LostFocus()
On Local Error GoTo ErrLine
'reset the tooltip text
tvwSimpleTree.ToolTipText = vbNullString
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_MouseDown
' * procedure description: Occurs when the user presses the mouse button while an object has the focus.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim objNode As node
On Local Error GoTo ErrLine
'get the current node
If Not tvwSimpleTree.HitTest(X, Y) Is Nothing Then
Set objNode = tvwSimpleTree.HitTest(X, Y)
Set tvwSimpleTree.SelectedItem = objNode
ElseIf Not tvwSimpleTree.SelectedItem Is Nothing Then
Set objNode = tvwSimpleTree.SelectedItem
Else: Exit Sub
End If
'cross reference the object's guid with the module-level collection
'and attempt to obtain a match based on the unique identifier of the node
If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then
Select Case objNode.Tag
Case "AMTimelineGroup"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineComp"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineTrack"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineSrc"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineTrans"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
Case "AMTimelineEffect"
Set gbl_objDexterObject = gbl_colNormalEnum(objNode.Key)
End Select
Else: Exit Sub
End If
'display a tooltip for the item
If Not objNode Is Nothing Then
If Trim(objNode.Text) <> vbNullString Then
tvwSimpleTree.ToolTipText = objNode.Text
End If
End If
'update the listview with the item's information
If Not gbl_colNormalEnum(objNode.Key) Is Nothing Then
Select Case objNode.Tag
Case "AMTimeline"
Call RefreshListView(lstViewInfo, "AMTimeline", objNode.Key)
Call ViewTimelineInfo(lstViewInfo, gbl_objTimeline)
Case "AMTimelineGroup"
Call RefreshListView(lstViewInfo, "AMTimelineGroup", objNode.Key)
Call ViewGroupInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineComp"
Call RefreshListView(lstViewInfo, "AMTimelineComp", objNode.Key)
Call ViewCompositeInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineTrack"
Call RefreshListView(lstViewInfo, "AMTimelineTrack", objNode.Key)
Call ViewTrackInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineSrc"
Call RefreshListView(lstViewInfo, "AMTimelineSrc", objNode.Key)
Call ViewSourceInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineTrans"
Call RefreshListView(lstViewInfo, "AMTimelineTrans", objNode.Key)
Call ViewTransitionInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineEffect"
Call RefreshListView(lstViewInfo, "AMTimelineEffect", objNode.Key)
Call ViewEffectInfo(lstViewInfo, gbl_objDexterObject)
End Select
Else: Exit Sub
End If
'derive the type of object given the tag of the node
'and popup the menu for the given object type..
If Button = 2 Then
Select Case objNode.Tag
Case "AMTimeline"
PopupMenu mnuTimeline
Case "AMTimelineGroup"
PopupMenu mnuGroup
Case "AMTimelineComp"
PopupMenu mnuComp
Case "AMTimelineTrack"
PopupMenu mnuTrack
Case "AMTimelineSrc"
PopupMenu mnuClip
Case "AMTimelineTrans"
PopupMenu mnuTrans
Case "AMTimelineEffect"
PopupMenu mnuEffect
End Select
End If
'clean-up & dereference
If Not objNode Is Nothing Then Set objNode = Nothing
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_MouseMove
' * procedure description: Occurs when the user moves the mouse.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
If Me.MousePointer = 9 Then Me.MousePointer = vbDefault
If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F
'disable tooltip if a hittest on the current position fails
If tvwSimpleTree.HitTest(X, Y) Is Nothing Then tvwSimpleTree.ToolTipText = vbNullString
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_NodeClick
' * procedure description: Occurs when a Node object is clicked.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_NodeClick(ByVal node As MSComctlLib.node)
On Local Error GoTo ErrLine
'display a tooltip for the item
If Not node Is Nothing Then
If Trim(node.Text) <> vbNullString Then
tvwSimpleTree.ToolTipText = node.Text
End If
End If
'update the listview with the item's information
If Not gbl_colNormalEnum(node.Key) Is Nothing Then
Select Case node.Tag
Case "AMTimeline"
Call RefreshListView(lstViewInfo, "AMTimeline", node.Key)
Call ViewTimelineInfo(lstViewInfo, gbl_objTimeline)
Case "AMTimelineGroup"
Call RefreshListView(lstViewInfo, "AMTimelineGroup", node.Key)
Call ViewGroupInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineComp"
Call RefreshListView(lstViewInfo, "AMTimelineComp", node.Key)
Call ViewCompositeInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineTrack"
Call RefreshListView(lstViewInfo, "AMTimelineTrack", node.Key)
Call ViewTrackInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineSrc"
Call RefreshListView(lstViewInfo, "AMTimelineSrc", node.Key)
Call ViewSourceInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineTrans"
Call RefreshListView(lstViewInfo, "AMTimelineTrans", node.Key)
Call ViewTransitionInfo(lstViewInfo, gbl_objDexterObject)
Case "AMTimelineEffect"
Call RefreshListView(lstViewInfo, "AMTimelineEffect", node.Key)
Call ViewEffectInfo(lstViewInfo, gbl_objDexterObject)
End Select
Else: Exit Sub
End If
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_OLEDragDrop
' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'pass to the application drag drop handler
Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tvwSimpleTree_OLEDragOver
' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual.
' *
' ******************************************************************************************************************************
Private Sub tvwSimpleTree_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
On Local Error GoTo ErrLine
'pass to the application drag over handler
Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- TOOLBAR EVENT HANDLERS
' *
' *
' ******************************************************************************************************************************
' * procedure name: tbMain_ButtonClick
' * procedure description: Occurs when the user clicks on a Button object in a Toolbar control.
' *
' ******************************************************************************************************************************
Private Sub tbMain_ButtonClick(ByVal Button As MSComctlLib.Button)
On Local Error GoTo ErrLine
Select Case LCase(Button.Key)
Case "new"
'the functionality is identical to the file 'new' menu option
Call mnuFileNewTimeline_Click
Case "open"
'the functionality is identical to the file 'open' menu option
Call mnuFileOpen_Click
Case "save"
'the functionality is identical to the file 'saveas' menu option
Call mnuFileSaveAs_Click
Case "rewind"
'seek to the beggining of the media
Select Case gbl_objQuartzVB.State
Case QTZStatusConstants.QTZStatusPlaying
Call gbl_objQuartzVB.StopGraph
gbl_objQuartzVB.Position = 0
Case QTZStatusConstants.QTZStatusPaused
gbl_objQuartzVB.Position = 0
Case QTZStatusConstants.QTZStatusStopped
gbl_objQuartzVB.Position = 0
End Select
Case "seekbackward"
'scrub backward by one second
Select Case gbl_objQuartzVB.State
Case QTZStatusConstants.QTZStatusPlaying
Call gbl_objQuartzVB.StopGraph
gbl_objQuartzVB.Position = gbl_objQuartzVB.Position - 1
Case QTZStatusConstants.QTZStatusPaused
gbl_objQuartzVB.Position = gbl_objQuartzVB.Position - 1
Case QTZStatusConstants.QTZStatusStopped
gbl_objQuartzVB.Position = gbl_objQuartzVB.Position - 1
End Select
Case "play"
'update the button(s)
With tbMain.Buttons
.Item("New").Enabled = False
.Item("Open").Enabled = False
.Item("Save").Enabled = False
.Item("Play").Enabled = True
.Item("Pause").Enabled = True
.Item("Stop").Enabled = True
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'update the state on the popup context menu
mnuTimeLinePlay.Enabled = False
mnuTimeLineStop.Enabled = True
mnuTimeLinePause.Enabled = True
mnuTimeLineRenderTimeLine.Enabled = False
mnuTimeLineClearRenderEngine.Enabled = False
'play the timeline for the client
Select Case gbl_objQuartzVB.State
Case QTZStatusConstants.QTZStatusPlaying
Call gbl_objQuartzVB.StopGraph
gbl_objQuartzVB.Position = 0
Call gbl_objQuartzVB.RunGraph
Case QTZStatusConstants.QTZStatusPaused
Call gbl_objQuartzVB.RunGraph
Case QTZStatusConstants.QTZStatusStopped
'to prevent rendering out the timeline again (consequently resetting the media's
'position to zero before restarting audio/video playback) comment the line below..
Set gbl_objQuartzVB.FilterGraph = RenderTimeline(gbl_objTimeline)
Call gbl_objQuartzVB.RunGraph
End Select
Case "pause"
'update the button(s)
With tbMain.Buttons
.Item("New").Enabled = True
.Item("Open").Enabled = True
.Item("Save").Enabled = True
.Item("Play").Enabled = True
.Item("Pause").Enabled = True
.Item("Stop").Enabled = True
.Item("Rewind").Enabled = True
.Item("FastForward").Enabled = True
.Item("SeekForward").Enabled = True
.Item("SeekBackward").Enabled = True
End With
'update the state on the popup context menu
mnuTimeLinePlay.Enabled = True
mnuTimeLineStop.Enabled = True
mnuTimeLinePause.Enabled = False
mnuTimeLineRenderTimeLine.Enabled = False
mnuTimeLineClearRenderEngine.Enabled = False
'pause the timeline
Select Case gbl_objQuartzVB.State
Case QTZStatusConstants.QTZStatusPlaying
Call gbl_objQuartzVB.PauseGraph
Case QTZStatusConstants.QTZStatusPaused
Call gbl_objQuartzVB.PauseGraph
Case QTZStatusConstants.QTZStatusStopped
Call gbl_objQuartzVB.PauseGraph
End Select
Case "stop"
'update the button(s)
With tbMain.Buttons
.Item("New").Enabled = True
.Item("Open").Enabled = True
.Item("Save").Enabled = True
.Item("Play").Enabled = True
.Item("Pause").Enabled = False
.Item("Stop").Enabled = True
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'update the state on the popup context menu
mnuTimeLinePlay.Enabled = True
mnuTimeLineStop.Enabled = False
mnuTimeLinePause.Enabled = False
mnuTimeLineRenderTimeLine.Enabled = True
mnuTimeLineClearRenderEngine.Enabled = True
'stop the timeline
Select Case gbl_objQuartzVB.State
Case QTZStatusConstants.QTZStatusPlaying
Call gbl_objQuartzVB.StopGraph
Case QTZStatusConstants.QTZStatusPaused
Call gbl_objQuartzVB.StopGraph
Case QTZStatusConstants.QTZStatusStopped
Call gbl_objQuartzVB.StopGraph
End Select
Case "seekforward"
'scrub forward by one second
Select Case gbl_objQuartzVB.State
Case QTZStatusConstants.QTZStatusPlaying
Call gbl_objQuartzVB.PauseGraph
gbl_objQuartzVB.Position = gbl_objQuartzVB.Position + 1
Case QTZStatusConstants.QTZStatusPaused
Call gbl_objQuartzVB.PauseGraph
gbl_objQuartzVB.Position = gbl_objQuartzVB.Position + 1
Case QTZStatusConstants.QTZStatusStopped
Call gbl_objQuartzVB.PauseGraph
gbl_objQuartzVB.Position = gbl_objQuartzVB.Position + 1
End Select
Case "fastforward"
'seek to the end of the media
Select Case gbl_objQuartzVB.State
Case QTZStatusConstants.QTZStatusPlaying
Call gbl_objQuartzVB.PauseGraph
gbl_objQuartzVB.Position = (gbl_objQuartzVB.StopTime - 0.01)
Case QTZStatusConstants.QTZStatusPaused
Call gbl_objQuartzVB.PauseGraph
gbl_objQuartzVB.Position = (gbl_objQuartzVB.StopTime - 0.01)
Case QTZStatusConstants.QTZStatusStopped
Call gbl_objQuartzVB.PauseGraph
gbl_objQuartzVB.Position = (gbl_objQuartzVB.StopTime - 0.01)
End Select
End Select
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tbMain_MouseMove
' * procedure description: Occurs when the user moves the mouse.
' *
' ******************************************************************************************************************************
Private Sub tbMain_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
If Me.MousePointer = 9 Then Me.MousePointer = vbDefault
If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tbMain_OLEDragDrop
' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual.
' *
' ******************************************************************************************************************************
Private Sub tbMain_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'pass to the application drag drop handler
Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: tbMain_OLEDragOver
' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual.
' *
' ******************************************************************************************************************************
Private Sub tbMain_OLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
On Local Error GoTo ErrLine
'pass to the application drag over handler
Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- COOLBAR EVENT HANDLERS
' *
' *
' ******************************************************************************************************************************
' * procedure name: ctrlCoolBar_HeightChanged
' * procedure description: Occurrs when the Coolbar control's Height changes, if its Orientation is horizontal. Occurrs when the Coolbar control's Width changes, if its Orientation is vertical.
' *
' ******************************************************************************************************************************
Private Sub ctrlCoolBar_HeightChanged(ByVal NewHeight As Single)
On Local Error GoTo ErrLine
'resize the container
Call Form_Resize
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: ctrlCoolBar_MouseMove
' * procedure description: Occurs when the user moves the mouse.
' *
' ******************************************************************************************************************************
Private Sub ctrlCoolBar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
If Me.MousePointer = 9 Then Me.MousePointer = vbDefault
If Me.BackColor = vbBlack Then Me.BackColor = &H8000000F
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: ctrlCoolBar_OLEDragDrop
' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual.
' *
' ******************************************************************************************************************************
Private Sub ctrlCoolBar_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Local Error GoTo ErrLine
'pass to the application drag drop handler
Call AppOLEDragDrop(Data, Effect, Button, Shift, X, Y)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: ctrlCoolBar_OLEDragOver
' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual.
' *
' ******************************************************************************************************************************
Private Sub ctrlCoolBar_OLEDragOver(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
On Local Error GoTo ErrLine
'pass to the application drag over handler
Call AppOLEDragOver(Data, Effect, Button, Shift, X, Y, State)
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub
' **************************************************************************************************************************************
' * PRIVATE INTERFACE- APPLICATION METHODS
' *
' *
' ******************************************************************************************************************************
' * procedure name: AppOLEDragDrop
' * procedure description: Occurs when data is dropped onto the control via an OLE drag/drop operation, and OLEDropMode is set to manual.
' *
' ******************************************************************************************************************************
Private Sub AppOLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim nCount As Long
Dim bstrFileName As String
Dim objLocalTimeline As AMTimeline
On Local Error GoTo ErrLine
'assign mouse state
Screen.MousePointer = vbHourglass
For nCount = 1 To Data.Files.Count
bstrFileName = Data.Files(nCount)
If Len(bstrFileName) > 4 Then
'verify the file extension is valid
If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then
'at least it's been named an xtl file, proceed to attempt an import..
Set objLocalTimeline = New AMTimeline
Call RestoreTimeline(objLocalTimeline, bstrFileName, DEXImportXTL)
'verify restoration
If Not objLocalTimeline Is Nothing Then
'import succeeded; clean-up application scope
If Not gbl_objTimeline Is Nothing Then
'dereference & clean-up timeline
Call ClearTimeline(gbl_objTimeline)
Set gbl_objTimeline = Nothing
'dereference & clean-up rendering
If Not gbl_objQuartzVB Is Nothing Then Call gbl_objQuartzVB.StopGraph
If Not gbl_objFilterGraph Is Nothing Then Set gbl_objFilterGraph = Nothing
If Not gbl_objRenderEngine Is Nothing Then Call gbl_objRenderEngine.ScrapIt
If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing
End If
'assign the local timeline to global scope
Set gbl_objTimeline = objLocalTimeline
'render the timeline and derive a filter graph manager
Set gbl_objFilterGraph = RenderTimeline(gbl_objTimeline)
'map the timeline to the userinterface
Call GetTimelineDirect(tvwSimpleTree, gbl_objTimeline, gbl_colNormalEnum)
mnuTimeLineClearRenderEngine.Enabled = False
'update the button(s)
With tbMain.Buttons
.Item("New").Enabled = True
.Item("Open").Enabled = True
.Item("Save").Enabled = True
.Item("Play").Enabled = True
.Item("Pause").Enabled = False
.Item("Stop").Enabled = False
.Item("Rewind").Enabled = False
.Item("FastForward").Enabled = False
.Item("SeekForward").Enabled = False
.Item("SeekBackward").Enabled = False
End With
'update the state on the popup context menu
mnuTimeLinePlay.Enabled = True
mnuTimeLineStop.Enabled = False
mnuTimeLinePause.Enabled = True
mnuTimeLineRenderTimeLine.Enabled = True
mnuTimeLineClearRenderEngine.Enabled = True
'reset module-level filename
gbl_bstrLoadFile = Data.Files(nCount)
'reset the caption on the application's main form
bstrFileName = Mid(bstrFileName, InStrRev(bstrFileName, "\") + 1)
Me.Caption = "DexterVB - " & bstrFileName
End If
End If
'clean-up & dereference
If Not objLocalTimeline Is Nothing Then
Set objLocalTimeline = Nothing
Exit For
End If
End If
Next
'reassign mouse state
Screen.MousePointer = vbDefault
Exit Sub
ErrLine:
Err.Clear
'reassign mouse state
Screen.MousePointer = vbDefault
Exit Sub
End Sub
' ******************************************************************************************************************************
' * procedure name: AppOLEDragOver
' * procedure description: Occurs when the mouse is moved over the control during an OLE drag/drop operation, if its OLEDropMode property is set to manual.
' *
' ******************************************************************************************************************************
Private Sub AppOLEDragOver(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer)
Dim nCount As Long
Dim bstrFileName As String
On Local Error GoTo ErrLine
'do not allow drag n' drop operations when rendering..
If Not gbl_objQuartzVB Is Nothing Then
If gbl_objQuartzVB.State = QTZStatusPlaying Then
Effect = vbDropEffectNone
Exit Sub
End If
End If
For nCount = 1 To Data.Files.Count
bstrFileName = Data.Files(nCount)
If Len(bstrFileName) > 4 Then
'verify the file extension is valid
If InStr(1, LCase(bstrFileName), ".xtl") > 0 Then
'at least it's been named an xtl file, proceed to attempt an import..
Effect = vbDropEffectCopy
Else: If Effect <> vbDropEffectNone Then Effect = vbDropEffectNone
End If
End If
Next
Exit Sub
ErrLine:
Err.Clear
Exit Sub
End Sub