def __init__(self, label, description, publish_asset, session, settings_provider=None, parent=None): '''Display instances that can be published.''' super(Workflow, self).__init__() self.setObjectName('ftrack-workflow-widget') self.session = session self._label_text = label self.publish_asset = publish_asset plugin = ftrack_connect_pipeline.get_plugin() plugin_information = plugin.get_plugin_information() event_metadata = { 'workflow_label': self._label_text, } if isinstance(plugin_information, dict): event_metadata.update(plugin_information) send_usage('USED-FTRACK-CONNECT-PIPELINE-PUBLISH', event_metadata) self.publish_asset.prepare_publish() self.item_options_store = {} self.general_options_store = {} self.settings_provider = settings_provider if self.settings_provider is None: self.settings_provider = BaseSettingsProvider() self.settings_map = {} list_instances_widget = QtWidgets.QFrame() list_instances_widget.setObjectName('ftrack-instances-widget') self._list_instances_layout = QtWidgets.QVBoxLayout() list_instances_widget.setLayout(self._list_instances_layout) self._list_instances_layout.setContentsMargins(5, 5, 5, 5) list_instance_settings_widget = QtWidgets.QFrame() list_instance_settings_widget.setObjectName( 'ftrack-instances-settings-widget') self._list_items_settings_layout = QtWidgets.QVBoxLayout() self._list_items_settings_layout.addStretch(1) list_instance_settings_widget.setLayout( self._list_items_settings_layout) self._list_items_settings_layout.setContentsMargins(5, 5, 5, 5) configuration_layout = QtWidgets.QHBoxLayout() configuration_layout.addWidget(list_instances_widget, stretch=1) configuration_layout.addWidget(list_instance_settings_widget, stretch=1) configuration = QtWidgets.QFrame() configuration.setObjectName('ftrack-configuration-widget') configuration.setLayout(configuration_layout) configuration_layout.setContentsMargins(0, 0, 0, 0) information_layout = QtWidgets.QHBoxLayout() information_layout.addWidget( QtWidgets.QLabel('<h3>{0}</h3>'.format(self._label_text))) information_layout.addWidget(QtWidgets.QLabel( '<i>{0}</i>'.format(description)), stretch=1) information = QtWidgets.QFrame() information.setObjectName('ftrack-information-widget') information.setLayout(information_layout) information_layout.setContentsMargins(0, 0, 0, 0) publish_button = QtWidgets.QPushButton('Publish') publish_button.clicked.connect(self.on_publish_clicked) main_layout = QtWidgets.QVBoxLayout(self) self.setLayout(main_layout) self.layout().setContentsMargins(0, 0, 0, 0) scroll = QtWidgets.QScrollArea(self) scroll.setWidgetResizable(True) scroll.setLineWidth(0) scroll.setFrameShape(QtWidgets.QFrame.NoFrame) scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) scroll.setWidget(configuration) self._list_instances_layout.addWidget(information) main_layout.addWidget(scroll, stretch=1) self._list_items_settings_layout.addWidget(publish_button) self._publish_overlay = BusyOverlay(self, message='Publishing Assets...') self._publish_overlay.setStyleSheet(OVERLAY_DARK_STYLE) self._publish_overlay.setVisible(False) self.result_win = PublishResult(self.session, self) self.result_win.setStyleSheet(OVERLAY_DARK_STYLE) self.result_win.setVisible(False) self.refresh()
def __init__(self, parent=None, connector=None, currentEntity=None): if not connector: raise ValueError( 'Please provide a connector object for {0}'.format( self.__class__.__name__ ) ) self.connector = connector if not parent: self.parent = self.connector.getMainWindow() self.currentEntity = currentEntity super(PublishAssetDialog, self).__init__(self.parent) self.setSizePolicy( QtWidgets.QSizePolicy( QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding ) ) applyTheme(self, 'integration') self.assetType = None self.assetName = None self.status = None self.mainLayout = QtWidgets.QVBoxLayout(self) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainWidget = QtWidgets.QWidget(self) self.scrollLayout = QtWidgets.QVBoxLayout(self.mainWidget) self.scrollLayout.setSpacing(6) self.scrollArea = QtWidgets.QScrollArea(self) self.mainLayout.addWidget(self.scrollArea) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollArea.setLineWidth(0) self.scrollArea.setFrameShape(QtWidgets.QFrame.NoFrame) self.scrollArea.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff ) self.scrollArea.setWidget(self.mainWidget) self.headerWidget = header.Header(getpass.getuser(), self) self.scrollLayout.addWidget(self.headerWidget) if 'FTRACK_TASKID' in os.environ: self.browseMode = 'Task' else: self.browseMode = 'Shot' self.browseTasksWidget = ContextSelector( currentEntity=self.currentEntity, parent=self ) self.scrollLayout.addWidget(self.browseTasksWidget) self.exportAssetOptionsWidget = ExportAssetOptionsWidget( self, browseMode=self.browseMode ) self.scrollLayout.addWidget(self.exportAssetOptionsWidget) self.exportOptionsWidget = ExportOptionsWidget( self, connector=self.connector ) self.scrollLayout.addWidget(self.exportOptionsWidget) spacerItem = QtWidgets.QSpacerItem( 20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding ) self.scrollLayout.addItem(spacerItem) self.setObjectName('ftrackPublishAsset') self.setWindowTitle("ftrackPublishAsset") panelComInstance = ftrack_connector.panelcom.PanelComInstance.instance() panelComInstance.addSwitchedShotListener(self.reset_context_browser) panelComInstance.addSwitchedShotListener(self.resetOptions) self.exportAssetOptionsWidget.clickedAssetTypeSignal.connect( self.exportOptionsWidget.setStackedWidget ) self.browseTasksWidget.entityChanged.connect( self.exportAssetOptionsWidget.updateView ) self.exportOptionsWidget.ui.publishButton.clicked.connect( self.publishAsset ) panelComInstance.publishProgressSignal.connect( self.exportOptionsWidget.setProgress ) self.browseTasksWidget.reset()
def __init__(self, parent=None, connector=None): '''Instantiate widget with *connector*.''' if not connector: raise ValueError( 'Please provide a connector object for {0}'.format( self.__class__.__name__)) super(FtrackImportAssetDialog, self).__init__(parent=parent) applyTheme(self, 'integration') #---------------------------------------------------------------------------# # Add for proper hou colors try: import hou self.stylesheet = '%s; background-color: #3a3a3a; color: #FFFFFF;' % hou.qt.styleSheet( ) self.setStyleSheet(self.stylesheet) except: pass #---------------------------------------------------------------------------# self.connector = connector self.currentEntity = ftrack.Task( os.getenv('FTRACK_TASKID', os.getenv('FTRACK_SHOTID'))) self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) self.setMinimumWidth(600) self.mainLayout = QtWidgets.QVBoxLayout(self) self.setLayout(self.mainLayout) self.mainLayout.setContentsMargins(0, 0, 0, 0) self.mainLayout.setSpacing(0) self.scrollArea = QtWidgets.QScrollArea(self) self.mainLayout.addWidget(self.scrollArea) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollArea.setLineWidth(0) self.scrollArea.setFrameShape(QtWidgets.QFrame.NoFrame) self.scrollArea.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.mainWidget = QtWidgets.QWidget(self) self.scrollArea.setWidget(self.mainWidget) self.verticalLayout = QtWidgets.QVBoxLayout() self.mainWidget.setLayout(self.verticalLayout) self.headerWidget = header.Header(getpass.getuser(), self) self.verticalLayout.addWidget(self.headerWidget, stretch=0) self.browseTasksWidget = ContextSelector( currentEntity=self.currentEntity, parent=self) self.verticalLayout.addWidget(self.browseTasksWidget, stretch=0) self.listAssetsTableWidget = ListAssetsTableWidget(self) self.verticalLayout.addWidget(self.listAssetsTableWidget, stretch=4) # Horizontal line self.divider = QtWidgets.QFrame() self.divider.setFrameShape(QtWidgets.QFrame.HLine) self.divider.setFrameShadow(QtWidgets.QFrame.Sunken) self.divider.setLineWidth(2) self.verticalLayout.addWidget(self.divider) self.assetVersionDetailsWidget = AssetVersionDetailsWidget( self, connector=self.connector) self.verticalLayout.addWidget(self.assetVersionDetailsWidget, stretch=0) self.componentTableWidget = ComponentTableWidget( self, connector=self.connector) self.verticalLayout.addWidget(self.componentTableWidget, stretch=3) self.horizontalLayout = QtWidgets.QHBoxLayout() self.verticalLayout.addLayout(self.horizontalLayout) self.importAllButton = QtWidgets.QPushButton("Import All") self.importAllButton.setFixedWidth(120) self.importAllButton.setObjectName('ftrack-import-btn') self.importSelectedButton = QtWidgets.QPushButton("Import Selected") self.importSelectedButton.setFixedWidth(120) self.importAllButton.setObjectName('ftrack-import-btn') self.horizontalLayout.addWidget(self.importSelectedButton) self.horizontalLayout.addWidget(self.importAllButton) self.horizontalLayout.setAlignment(QtCore.Qt.AlignRight) self.importOptionsWidget = ImportOptionsWidget( parent=self, connector=self.connector) self.verticalLayout.addWidget(self.importOptionsWidget, stretch=0) self.messageLabel = QtWidgets.QLabel(self) self.messageLabel.setText(' \n ') self.verticalLayout.addWidget(self.messageLabel, stretch=0) self.setObjectName('ftrackImportAsset') self.setWindowTitle("ftrackImportAsset") panelComInstance = PanelComInstance.instance() panelComInstance.addSwitchedShotListener(self.reset_context_browser) self.browseTasksWidget.entityChanged.connect(self.clickedIdSignal) self.importAllButton.clicked.connect(self.importAllComponents) self.importSelectedButton.clicked.connect( self.importSelectedComponents) self.listAssetsTableWidget.assetVersionSelectedSignal[str].connect( self.clickedAssetVSignal) self.listAssetsTableWidget.assetTypeSelectedSignal[str].connect( self.importOptionsWidget.setStackedWidget) self.importSignal.connect(panelComInstance.refreshListeners) self.componentTableWidget.importComponentSignal.connect( self.onImportComponent) self.browseTasksWidget.reset()