def updateView(self, ftrackEntity): '''Update view with the provided *ftrackEntity*''' try: self.currentTask = ftrackEntity project = self.currentTask.getProject() taskid = '11c137c0-ee7e-4f9c-91c5-8c77cec22b2c' # Populate statuses based on task if it is a task. if self.currentTask.get('object_typeid') == taskid: self.ui.ListStatusComboBox.show() self.ui.assetTaskLabel_2.show() self.ui.ListStatusComboBox.clear() statuses = project.getTaskStatuses( self.currentTask.get('typeid')) for index, status, in enumerate(statuses): self.ui.ListStatusComboBox.addItem(status.getName()) if status.get('statusid') == self.currentTask.get( 'statusid'): self.ui.ListStatusComboBox.setCurrentIndex(index) else: self.ui.ListStatusComboBox.hide() self.ui.assetTaskLabel_2.hide() if self.browseMode == 'Task': task = self.currentTask.getParent() assets = task.getAssets(assetTypes=self.assetTypesStr) assets = sorted(assets, key=lambda a: a.getName().lower()) self.ui.ListAssetsViewModel.clear() item = QtGui.QStandardItem('New') item.id = '' curAssetType = self.currentAssetType if curAssetType: itemType = QtGui.QStandardItem(curAssetType) else: itemType = QtGui.QStandardItem('') self.ui.ListAssetsViewModel.setItem(0, 0, item) self.ui.ListAssetsViewModel.setItem(0, 1, itemType) self.ui.ListAssetNamesComboBox.setCurrentIndex(0) blankRows = 0 for i in range(0, len(assets)): assetName = assets[i].getName() if assetName != '': item = QtGui.QStandardItem(assetName) item.id = assets[i].getId() itemType = QtGui.QStandardItem( assets[i].getType().getShort()) j = i - blankRows + 1 self.ui.ListAssetsViewModel.setItem(j, 0, item) self.ui.ListAssetsViewModel.setItem(j, 1, itemType) else: blankRows += 1 except: import traceback import sys traceback.print_exc(file=sys.stdout)
def __init__(self, parent, browseMode='Shot'): QtWidgets.QWidget.__init__(self, parent) self.ui = Ui_ExportAssetOptions() self.ui.setupUi(self) self.currentAssetType = None self.currentTask = None self.browseMode = browseMode self.ui.ListAssetsViewModel = QtGui.QStandardItemModel() self.ui.ListAssetsSortModel = QtCore.QSortFilterProxyModel() self.ui.ListAssetsSortModel.setDynamicSortFilter(True) self.ui.ListAssetsSortModel.setFilterKeyColumn(1) self.ui.ListAssetsSortModel.setSourceModel(self.ui.ListAssetsViewModel) self.ui.ListAssetNamesComboBox.setModel(self.ui.ListAssetsSortModel) self.ui.ListAssetsComboBoxModel = QtGui.QStandardItemModel() assetTypeItem = QtGui.QStandardItem('Select AssetType') self.assetTypes = [] self.assetTypes.append('') self.ui.ListAssetsComboBoxModel.appendRow(assetTypeItem) assetHandler = FTAssetHandlerInstance.instance() self.assetTypesStr = sorted(assetHandler.getAssetTypes()) for assetTypeStr in self.assetTypesStr: try: assetType = ftrack.AssetType(assetTypeStr) except: log.warning('{0} not available in ftrack'.format(assetTypeStr)) continue assetTypeItem = QtGui.QStandardItem(assetType.getName()) assetTypeItem.type = assetType.getShort() self.assetTypes.append(assetTypeItem.type) self.ui.ListAssetsComboBoxModel.appendRow(assetTypeItem) self.ui.ListAssetsComboBox.setModel(self.ui.ListAssetsComboBoxModel) self.ui.AssetTaskComboBoxModel = QtGui.QStandardItemModel() self.ui.AssetTaskComboBox.setModel(self.ui.AssetTaskComboBoxModel) self.ui.ListAssetNamesComboBox.currentIndexChanged[str].connect( self.onAssetChanged) if browseMode == 'Task': self.ui.AssetTaskComboBox.hide() self.ui.assetTaskLabel.hide()
def updateTasks(self, ftrackEntity): '''Update task with the provided *ftrackEntity*''' self.currentTask = ftrackEntity try: shotpath = self.currentTask.getName() taskParents = self.currentTask.getParents() for parent in taskParents: shotpath = '{0}.{1}'.format(parent.getName(), shotpath) self.ui.AssetTaskComboBox.clear() tasks = self.currentTask.getTasks() curIndex = 0 ftrackuser = ftrack.User(getpass.getuser()) taskids = [x.getId() for x in ftrackuser.getTasks()] for i in range(len(tasks)): assetTaskItem = QtGui.QStandardItem(tasks[i].getName()) assetTaskItem.id = tasks[i].getId() self.ui.AssetTaskComboBoxModel.appendRow(assetTaskItem) if (os.environ.get('FTRACK_TASKID') == assetTaskItem.id): curIndex = i else: if assetTaskItem.id in taskids: curIndex = i self.ui.AssetTaskComboBox.setCurrentIndex(curIndex) except: print 'Not a task'
def updateAssetTypeOptions(self): '''Update list of asset types to filter by.''' self.assetTypeSelectorModel.clear() assetTypes = ftrack.getAssetTypes() assetTypes = sorted(assetTypes, key=lambda assetType: assetType.getName().lower()) assetTypeItem = QtGui.QStandardItem('Show All') self.assetTypeSelectorModel.appendRow(assetTypeItem) assetHandler = FTAssetHandlerInstance.instance() assetTypesStr = sorted(assetHandler.getAssetTypes()) for assetTypeStr in assetTypesStr: try: assetType = ftrack.AssetType(assetTypeStr) except: print assetTypeStr + ' not available in ftrack' continue assetTypeItem = QtGui.QStandardItem(assetType.getName()) assetTypeItem.type = assetType.getShort() self.assetTypeSelectorModel.appendRow(assetTypeItem)
def __init__(self, parent, task=None, connector=None): '''Instantiate asset manager with *connector*.''' QtWidgets.QWidget.__init__(self, parent) if not connector: raise ValueError( 'Please provide a connector object for {0}'.format( self.__class__.__name__)) self.connector = connector self.ui = Ui_AssetManager() self.ui.setupUi(self) self.setMinimumWidth(500) self.ui.AssertManagerTableWidget.setSortingEnabled(True) self.ui.AssertManagerTableWidget.setShowGrid(False) self.ui.AssertManagerTableWidget.verticalHeader().hide() self.ui.AssertManagerTableWidget.setColumnCount(16) self.ui.AssertManagerTableWidget.horizontalHeader( ).setDefaultSectionSize(65) self.ui.AssertManagerTableWidget.setColumnWidth(0, 20) self.ui.AssertManagerTableWidget.setColumnWidth(5, 55) self.ui.AssertManagerTableWidget.setColumnWidth(6, 65) self.ui.AssertManagerTableWidget.setColumnWidth(9, 20) self.ui.AssertManagerTableWidget.setColumnWidth(10, 20) self.ui.AssertManagerTableWidget.setColumnWidth(11, 20) self.ui.AssertManagerTableWidget.setColumnWidth(15, 20) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( QtWidgets.QHeaderView.Stretch) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( 0, QtWidgets.QHeaderView.Fixed) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( 5, QtWidgets.QHeaderView.Fixed) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( 6, QtWidgets.QHeaderView.Fixed) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( 9, QtWidgets.QHeaderView.Fixed) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( 10, QtWidgets.QHeaderView.Fixed) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( 11, QtWidgets.QHeaderView.Fixed) self.ui.AssertManagerTableWidget.horizontalHeader().setResizeMode( 15, QtWidgets.QHeaderView.Fixed) self.ui.AssertManagerTableWidget.setColumnHidden(2, True) self.ui.AssertManagerTableWidget.setColumnHidden(3, True) self.ui.AssertManagerTableWidget.setColumnHidden(6, True) self.ui.AssertManagerTableWidget.setColumnHidden(10, True) self.ui.AssertManagerTableWidget.setColumnHidden(12, True) self.ui.AssertManagerTableWidget.setColumnHidden(13, True) self.ui.AssertManagerTableWidget.setColumnHidden(14, True) self.columnHeaders = [ '', 'Component', 'CmpId', 'AssetTypeShort', 'Type', 'Version', 'LatestV', 'Name', 'SceneName', '', '', '', 'AssetId', 'AssetVersionId', 'CurrentVersionFallback', '' ] self.ui.AssertManagerTableWidget.setHorizontalHeaderLabels( self.columnHeaders) self.ui.AssetManagerComboBoxModel = QtGui.QStandardItemModel() assetTypes = ftrack.getAssetTypes() assetTypes = sorted(assetTypes, key=lambda a: a.getName().lower()) assetTypeItem = QtGui.QStandardItem('Show All') self.ui.AssetManagerComboBoxModel.appendRow(assetTypeItem) for assetType in assetTypes: assetTypeItem = QtGui.QStandardItem(assetType.getName()) assetTypeItem.type = assetType.getShort() self.ui.AssetManagerComboBoxModel.appendRow(assetTypeItem) self.ui.AssetManagerComboBox.setModel( self.ui.AssetManagerComboBoxModel) self.signalMapperSelect = QtCore.QSignalMapper() self.signalMapperSelect.mapped[str].connect(self.selectObject) self.signalMapperRemove = QtCore.QSignalMapper() self.signalMapperRemove.mapped[str].connect(self.removeObject) self.signalMapperComment = QtCore.QSignalMapper() self.signalMapperComment.mapped[str].connect(self.openComments) extraOptionsMenu = QtWidgets.QMenu(self.ui.menuButton) extraOptionsMenu.addAction('Get SceneSelection', self.getSceneSelection) extraOptionsMenu.addAction('Set SceneSelection', self.setSceneSelection) self.ui.menuButton.setMenu(extraOptionsMenu) self.refreshAssetManager()