-
-
Save xenjee/9d6941d7f53294dfb26be530ddff2c50 to your computer and use it in GitHub Desktop.
Initial hook.py including right click/copy clip path thing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/env python | |
#****************************************************************************** | |
# | |
# Filename: hook.py | |
# | |
# Copyright (c) 2008 Autodesk Canada Co. | |
# All rights reserved. | |
# | |
# Use of this software is subject to the terms of the Autodesk license | |
# agreement provided at the time of installation or download, or which | |
# otherwise accompanies this software in either electronic or hard copy form. | |
# ***************************************************************************** | |
# Hook called when a sequence finishes rendering (even if unsuccessful). | |
# moduleName : Name of the rendering module -- String. | |
# sequenceName : Name of the rendered sequence -- String. | |
# elapsedTimeInSeconds : number of seconds used to render -- Float | |
def renderEnded(moduleName, sequenceName, elapsedTimeInSeconds): | |
pass | |
# Hook called when a sequence finishes playback (even if unsuccessful). | |
# sequenceName : Name of the rendered sequence -- String. | |
# fps : FPS -- Float | |
# debugInfo: Debugging Playback Information -- Dict | |
def playbackEnded(sequenceName, fps, debugInfo): | |
pass | |
# Hook called when the user changes the video preview device. The following | |
# values are read from the init.cfg VideoPreviewDevice keyword. | |
# description : Description of the video preview device -- String | |
# (ex : "1920x1080@5994i_free") | |
# width : Width of the preview device -- Integer. | |
# height : Height of the preview device -- Integer. | |
# bitDepth : Bit depth of the preview device -- Integer. | |
# rateString : Rate of the preview device -- String. | |
# (ex : "6000i") | |
# syncString : Sync source of the preview device -- String. | |
# (ex : "freesync") | |
def previewWindowConfigChanged(description,width,height,bitDepth, | |
rateString,syncString): | |
pass | |
# Hook returning the custom ui actions to display to the user in the | |
# contextual menu. | |
# | |
# Returns a tuple of group dictionaries. | |
# | |
# A group dictionary defines a custom menu group where keys defines | |
# the group. | |
# | |
# Keys: | |
# | |
# name: [String] | |
# Name of the action group that will be created in the menu. | |
# | |
# actions: [String] | |
# Tuple of action dictionary which menu items will be created | |
# in the group. | |
# | |
# An action dictionary of userData where the keys defines | |
# the action | |
# | |
# Keys: | |
# | |
# name: [String] | |
# Name of the action that will be passed on customUIAction | |
# callback. | |
# | |
# caption: [String] | |
# Caption of the menu item. | |
# | |
# For example: 2 menu groups containing 1 custom action | |
# | |
# def getCustomUIActions(): | |
# | |
# action1 = {} | |
# action1[ "name" ] = "action1" | |
# action1[ "caption" ] = "Action Number 1" | |
# | |
# group1 = {} | |
# group1[ "name" ] = "Custom Group 1" | |
# group1[ "actions" ] = ( action1, ) | |
# | |
# action2 = {} | |
# action2[ "name" ] = "action2" | |
# action2[ "caption" ] = "Action Number 2" | |
# | |
# group2 = {} | |
# group2[ "name" ] = "Custom Group 2" | |
# group2[ "actions" ] = ( action2, ) | |
# | |
# return ( group1, group2 ) | |
# | |
# | |
def getCustomUIActions(): | |
pathcopyaction = dict(name='pathcopy', caption='Copy to clipboard') | |
pathcopygrp = dict(name='Clip path', actions=(pathcopyaction,)) | |
return (pathcopygrp,) | |
# Hook called when a custom action is triggered in the menu | |
# | |
# info [Dictionary] [Modifiable] | |
# Information about the custom action, | |
# | |
# Keys: | |
# | |
# name: [String] | |
# Name of the action being triggered. | |
# | |
# selection: [Tuple] | |
# Tuple of wiretap ids. | |
# | |
# userData [Dictionary] [Modifiable] | |
# Dictionary that is passed to getCustomUIActions. | |
# | |
def customUIAction(info, userData): | |
if info['name'] == 'pathcopy': | |
import re, os | |
import PySide.QtGui as qtg | |
import libwiretapPythonClientAPI as wt | |
qa = qtg.QApplication.instance() | |
paths = [] | |
wt.WireTapClientInit() | |
wtserver = wt.WireTapServerHandle('localhost') | |
wtmeta = wt.WireTapStr() | |
for wtid in info['selection']: | |
wtclip = wt.WireTapNodeHandle(wtserver, wtid) | |
wtclip.getMetaData('EDL', '', 1, wtmeta) | |
wtedl = wtmeta.c_str() | |
for line in wtedl.splitlines(): | |
if 'ORIGIN' in line and re.match('^DLEDL: EDIT:[0-9]+ ORIGIN: .+$', line): | |
path = line.split(':')[3][1:] | |
paths.append(path) | |
pathstogether = '\n'.join(paths) | |
print "Copying to clipboard: " + pathstogether | |
qa.clipboard().setText(pathstogether) | |
# Hook called when starting the application and when switching project | |
# This value will be used as default for the rename shotname dialog | |
# | |
# project: [String] | |
# Usually called with current project. | |
# | |
# Ex: if project == "project_name": | |
# return "<track>_<segment>_project" | |
# return "<track>_<segment>_global" | |
def timelineDefaultShotName( project ): | |
return "" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment