def setupUI(self): self.setMinimumSize(self._widget_size) self.setMaximumSize(self._widget_size) layout = QtWidgets.QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) layout.setSpacing(0) self._snapshot_frame = QtWidgets.QFrame(self) self._snapshot_frame.setMinimumSize(self._widget_size) self._snapshot_frame.setMaximumSize(self._widget_size) self._stackLayout = QtWidgets.QStackedLayout() self._stackLayout.setContentsMargins(0, 0, 0, 0) layout_images = QtWidgets.QHBoxLayout(self._snapshot_frame) layout_images.setContentsMargins(0, 0, 0, 0) layout_images.addLayout(self._stackLayout) self._viewer_view = SnapshotsView("Viewer", self._snapshot_frame) self._stackLayout.addWidget(self._viewer_view) self._dag_view = SnapshotsView("DAG", self._snapshot_frame) self._stackLayout.addWidget(self._dag_view) self._no_snapshot = QtWidgets.QFrame(self._snapshot_frame) self._no_snapshot.setStyleSheet( "QFrame{/*background: #000;*/ border:0px;}") layout_no_snapshot = QtWidgets.QHBoxLayout(self._no_snapshot) label_no_snapshot = QtWidgets.QLabel( "No snapshot available...", self._no_snapshot) label_no_snapshot.setStyleSheet("color:#855") label_no_snapshot.setAlignment( QtCore.Qt.AlignCenter | QtCore.Qt.AlignVCenter) layout_no_snapshot.addWidget(label_no_snapshot) self._stackLayout.addWidget(self._no_snapshot) self._edit_buttons = SnapshotsEditButtons( False, False, self._snapshot_frame) self._edit_buttons.refresh_toggled.connect(self.initiate_snapshots) self._edit_buttons.zoom_level_toggled.connect(self.zoom_level) self._edit_buttons.handscroll_mode_toggled.connect( self.set_handscroll_mode) self._edit_buttons.drawing_mode_toggled.connect(self.set_drawing_mode) self._edit_buttons.eraser_toggled.connect(self.erase_drawing) self._edit_buttons.color_modified.connect(self.set_pen_color) self.target_button_container = QtWidgets.QWidget(self) self.target_button_container_layout = QtWidgets.QHBoxLayout() self.target_button_container.setLayout(self.target_button_container_layout) self._viewer_btn = QtWidgets.QPushButton("Use Active Viewer", self) self._viewer_btn.setObjectName("Viewer_btn") self._viewer_btn.clicked.connect(self.chooseSource) self._dag_btn = QtWidgets.QPushButton("Use Node Graph", self) self._dag_btn.setObjectName("DAG_btn") self._dag_btn.clicked.connect(self.chooseSource) self.target_button_container_layout.addWidget(self._viewer_btn) self.target_button_container_layout.addWidget(self._dag_btn) layout.addWidget(self._snapshot_frame) layout.addWidget(self.target_button_container)
def __init__(self): super(ProgressDialog, self).__init__() applyTheme(self, 'integration') self.hbox = QtWidgets.QHBoxLayout() self.progressBar = QtWidgets.QProgressBar(self) self.hbox.addWidget(self.progressBar) self.setLayout(self.hbox) self.setMinimumSize(QtCore.QSize(720, 560))
def __init__(self, bridge, context, parent=None): self._bridge = bridge super(WorkflowRelationship, self).__init__(context, parent) self._layout = QtWidgets.QHBoxLayout() self.setLayout(self._layout) self.workflowWidget = _WorkflowRelationshipWidget(self) self._layout.addWidget(self.workflowWidget)
def setupUI(self): css_settings_global = """ QFrame { border: none; color: #FFF; } QCheckBox { color: #DDD; padding: 0px; background: none; } /*QComboBox { color: #DDD; padding: 2px; background: #333; }*/ QComboBox::drop-down { border-radius: 0px; } QToolButton { color: #DDD; padding: 0px; background: #333; } """ self.setStyleSheet(css_settings_global) main_layout = QtWidgets.QVBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(5) settings_frame = QtWidgets.QFrame(self) layout_settings = QtWidgets.QHBoxLayout(settings_frame) layout_settings.setContentsMargins(0, 0, 0, 0) layout_settings.setSpacing(6) asset_types = ["All Asset Types"] + ['comp'] self._asset_connectors_cbbox = QtWidgets.QComboBox(self) self._asset_connectors_cbbox.addItems(asset_types) self._asset_connectors_cbbox.currentIndexChanged.connect( self._update_tree) self._asset_connectors_cbbox.setMaximumHeight(23) self._asset_connectors_cbbox.setMinimumWidth(100) self._asset_connectors_cbbox.setSizeAdjustPolicy( QtWidgets.QComboBox.AdjustToContents) self._refresh_btn = QtWidgets.QPushButton(self) self._refresh_btn.setText("refresh") self._refresh_btn.clicked.connect(self.initiate_assets_tree) spacer = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) layout_settings.addWidget(self._asset_connectors_cbbox) layout_settings.addItem(spacer) layout_settings.addWidget(self._refresh_btn) main_layout.addWidget(settings_frame) self.assets_tree = AssetsTree(self) main_layout.addWidget(self.assets_tree)
def _build(self): '''Build and layout widget.''' layout = QtWidgets.QVBoxLayout() layout.setSpacing(2) layout.setContentsMargins(6, 6, 6, 6) self.setLayout(layout) formLayout = QtWidgets.QGridLayout() layout.addLayout(formLayout) self._nameLabel = QtWidgets.QLabel('Name') formLayout.addWidget(self._nameLabel, 2, 0, 1, 1) self._nameInput = QtWidgets.QLineEdit() formLayout.addWidget(self._nameInput, 2, 1, 1, 1) self._typeLabel = QtWidgets.QLabel('Type') self._typeLabel.setEnabled(True) formLayout.addWidget(self._typeLabel, 1, 0, 1, 1) self._typeSelector = QtWidgets.QComboBox() self._typeSelector.setEnabled(True) formLayout.addWidget(self._typeSelector, 1, 1, 1, 1) self._objectLabel = QtWidgets.QLabel('Object') formLayout.addWidget(self._objectLabel, 0, 0, 1, 1) self._objectSelector = QtWidgets.QComboBox() formLayout.addWidget(self._objectSelector, 0, 1, 1, 1) controlsLayout = QtWidgets.QHBoxLayout() layout.addLayout(controlsLayout) spacerItem = QtWidgets.QSpacerItem(10, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) controlsLayout.addItem(spacerItem) self._cancelButton = QtWidgets.QPushButton('Cancel') controlsLayout.addWidget(self._cancelButton) self._createButton = QtWidgets.QPushButton('Create') self._createButton.setAutoDefault(True) self._createButton.setDefault(True) controlsLayout.addWidget(self._createButton)
def makeUI(self): self.mainWidget = QtWidgets.QWidget() applyTheme(self.mainWidget, 'integration') self.mainWidget.setContentsMargins(0, 0, 0, 0) self.hlayout = QtWidgets.QHBoxLayout() self.hlayout.setContentsMargins(0, 0, 0, 0) self.mainWidget.setLayout(self.hlayout) self._lineEdit = QtWidgets.QLineEdit() self._lineEdit.setText( HelpFunctions.getPath(self.current_task, slash=True)) self.hlayout.addWidget(self._lineEdit) self._browse = QtWidgets.QPushButton("Browse") self.hlayout.addWidget(self._browse) QtCore.QObject.connect(self._browse, QtCore.SIGNAL('clicked()'), self.openBrowser) return self.mainWidget
def _build(self): '''Build and layout widget.''' layout = QtWidgets.QHBoxLayout() self.setLayout(layout) icon = QtWidgets.QPixmap(':icon-ftrack-box') smallIcon = icon.scaled(QtCore.QSize(24, 24), QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) iconLabel = QtWidgets.QLabel() iconLabel.setPixmap(smallIcon) layout.addWidget(iconLabel) self._label = QtWidgets.QLabel(self._noSelectionMessage) self._label.setEnabled(False) layout.addWidget(self._label) layout.addStretch() self._browseButton = QtWidgets.QPushButton('Browse...') layout.addWidget(self._browseButton)
def setupUI(self): css_task_global = """ QLabel { padding: 0px; background: none; } /*QTabWidget::pane { border-top: 2px solid #151515; top: -2px;} QTabBar::tab { padding: 6px 10px; background: #151515; border-top: 2px solid #151515; border-right: 2px solid #151515; border-left: 2px solid #151515; border-radius: 0px; } QTabBar::tab:selected { background: #333; border-top-left-radius: 4px; border-top-right-radius: 4px; } QTabBar::tab:hover { background: #222; } QTabBar::tab:!selected { margin-top: 2px; }*/ """ css_task_name_lbl = "font-size: 13px;" css_task_name = "color: #c3cfa4; font-size: 13px; font-weight: bold;" self.setStyleSheet(css_task_global) task_frame_layout = QtWidgets.QVBoxLayout(self) task_frame_layout.setContentsMargins(0, 0, 0, 0) task_frame_layout.setSpacing(15) # Display Task infos task_info_layout = QtWidgets.QFormLayout() task_info_layout.setContentsMargins(10, 10, 10, 10) task_info_layout.setSpacing(10) task_name_lbl = QtWidgets.QLabel("Task", self) task_name_lbl.setStyleSheet(css_task_name_lbl) self._task_name = QtWidgets.QLabel(self._t_name, self) self._task_name.setStyleSheet(css_task_name) project_lbl = QtWidgets.QLabel("Project", self) self._project_name = QtWidgets.QLabel(self._t_project_name, self) shot_lbl = QtWidgets.QLabel("Shot", self) shot_layout = QtWidgets.QHBoxLayout() shot_layout.setSpacing(6) self._shot_name = QtWidgets.QLabel(self) self._separator_shot = QtWidgets.QLabel("/", self) self._separator_shot.setVisible(False) self._sequence_name = QtWidgets.QLabel(self) spacer_shot = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) shot_layout.addWidget(self._sequence_name) shot_layout.addWidget(self._separator_shot) shot_layout.addWidget(self._shot_name) shot_layout.addItem(spacer_shot) shot_status_lbl = QtWidgets.QLabel("Shot status", self) shot_status = ftrack.getShotStatuses() self._shot_status = StatusWidget(shot_status, self) task_status_lbl = QtWidgets.QLabel("Task status", self) task_status = ftrack.getTaskStatuses() self._task_status = StatusWidget(task_status, self) due_date_lbl = QtWidgets.QLabel("Due date", self) self._due_date = QtWidgets.QLabel(self) task_info_layout.setWidget(0, QtWidgets.QFormLayout.LabelRole, task_name_lbl) task_info_layout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self._task_name) task_info_layout.setWidget(1, QtWidgets.QFormLayout.LabelRole, project_lbl) task_info_layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self._project_name) task_info_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, shot_lbl) task_info_layout.setItem(2, QtWidgets.QFormLayout.FieldRole, shot_layout) task_info_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, shot_status_lbl) task_info_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self._shot_status) task_info_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, task_status_lbl) task_info_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self._task_status) task_info_layout.setWidget(5, QtWidgets.QFormLayout.LabelRole, due_date_lbl) task_info_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self._due_date) task_frame_layout.addItem(task_info_layout) self._tab_widget = QtWidgets.QTabWidget(self) # Display Nuke Assets from this task self.tab_asset_tree = QtWidgets.QWidget() self.tab_asset_tree.busy_overlay = LoadingOverlay(self.tab_asset_tree) self.tab_asset_tree.busy_overlay.hide() tab_asset_tree_layout = QtWidgets.QVBoxLayout(self.tab_asset_tree) tab_asset_tree_layout.setContentsMargins(0, 8, 0, 0) self.assets_widget = SceneAssetsWidget(self) self.assets_widget.worker_started.connect( self.tab_asset_tree.busy_overlay.show) self.assets_widget.worker_started.connect( self.tab_asset_tree.busy_overlay.raise_) self.assets_widget.worker_stopped.connect( self.tab_asset_tree.busy_overlay.hide) tab_asset_tree_layout.addWidget(self.assets_widget) self._tab_widget.addTab(self.tab_asset_tree, "All Scene Assets") task_frame_layout.addWidget(self._tab_widget)
def setupUI(self): main_layout = QtWidgets.QVBoxLayout(self) main_layout.setContentsMargins(0, 0, 0, 0) main_layout.setSpacing(0) self._script_editor_tree = ScriptEditorTreeView(self) self._script_editor_tree.setSelectionMode( QtWidgets.QAbstractItemView.NoSelection) self._script_editor_tree.setIndentation(20) self._script_editor_tree.setAnimated(True) self._script_editor_tree.setHeaderHidden(True) self._script_editor_tree.setExpandsOnDoubleClick(True) self._script_editor_tree.file_dropped.connect(self._emit_dropped_file) main_layout.addWidget(self._script_editor_tree) self._option_frame = QtWidgets.QFrame(self) option_layout = QtWidgets.QHBoxLayout(self._option_frame) option_layout.setContentsMargins(0, 8, 0, 8) option_layout.setSpacing(8) # filter_lbl = QtGui.QLabel("Filter", self._option_frame) css_filter = """ QLineEdit { border: 1px solid #666; background: #555; color: #000; } """ self._filter_edit = QtWidgets.QLineEdit(self._option_frame) self._filter_edit.setMaximumHeight(20) # self._filter_edit.setStyleSheet(css_filter) self._filter_edit.textChanged.connect(self._set_filter) self._previous_occurence = QtWidgets.QPushButton( 'previous', self._option_frame) # self._previous_occurence.setArrowType(QtCore.Qt.LeftArrow) # self._previous_occurence.setMaximumWidth(20) # self._previous_occurence.setMaximumHeight(20) self._next_occurence = QtWidgets.QPushButton('next', self._option_frame) # self._next_occurence.setArrowType(QtCore.Qt.RightArrow) # self._next_occurence.setMaximumWidth(20) # self._next_occurence.setMaximumHeight(20) spacer = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self._collapse_all_btn = QtWidgets.QPushButton("Collapse All", self._option_frame) self._collapse_all_btn.setMaximumHeight(20) # self._collapse_all_btn.setStyleSheet(css_btn) self._collapse_all_btn.clicked.connect( self._script_editor_tree.collapseAll) self._expand_all_btn = QtWidgets.QPushButton("Expand All", self._option_frame) self._expand_all_btn.setMaximumHeight(20) # self._expand_all_btn.setStyleSheet(css_btn) self._expand_all_btn.clicked.connect( self._script_editor_tree.expandAll) option_layout.addWidget(self._filter_edit) option_layout.addWidget(self._previous_occurence) option_layout.addWidget(self._next_occurence) option_layout.addItem(spacer) option_layout.addWidget(self._collapse_all_btn) option_layout.addWidget(self._expand_all_btn) main_layout.addWidget(self._option_frame)
def __init__(self, parent=None): '''Initialise widget with *parent*.''' super(NukeCrew, self).__init__(parent=parent) ftrack_connect.ui.theme.applyTheme(self, 'integration') self.setMinimumWidth(400) self.setSizePolicy( QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)) self.vertical_layout = QtWidgets.QVBoxLayout(self) self.horizontal_layout = QtWidgets.QHBoxLayout() self.header = Header(username=getpass.getuser(), parent=self) self.vertical_layout.addWidget(self.header) self.notification_list = _notification_list.Notification(self) self._hub = ftrack_connect_nuke.crew_hub.crew_hub self._classifier = UserClassifier() self._classifier.update_context(self._read_context_from_environment()) current_user = ftrack.getUser(getpass.getuser()) groups = ['Assigned', 'Contributors', 'Supervisors'] self.chat = _crew.Crew(groups, current_user, hub=self._hub, classifier=self._classifier, parent=self) self.chat.chat.busyOverlay.setStyleSheet(NUKE_OVERLAY_STYLE) added_user_ids = [] for _user in session.query('select id, username, first_name, last_name' ' from User where is_active is True'): if _user['id'] != current_user.getId(): self.chat.addUser( u'{0} {1}'.format(_user['first_name'], _user['last_name']), _user['id']) added_user_ids.append(_user['id']) self.tab_panel = QtWidgets.QTabWidget(parent=self) self.tab_panel.addTab(self.chat, 'Chat') self.tab_panel.addTab(self.notification_list, 'Notifications') self.horizontal_layout.addWidget(self.tab_panel) # TODO: This styling should probably be done in a global stylesheet # for the entire Nuke plugin. self.notification_list.overlay.setStyleSheet(NUKE_OVERLAY_STYLE) self.vertical_layout.setContentsMargins(0, 0, 0, 0) self.vertical_layout.addLayout(self.horizontal_layout) self.setObjectName('Crew') self.setWindowTitle('Crew') # Import inline to avoid mysterious segfault in nuke 9.1dev build. from ftrack_connect.connector.panelcom import (PanelComInstance as _PanelComInstance) panel_communication_singleton = _PanelComInstance.instance() panel_communication_singleton.addRefreshListener(self.on_refresh_event) self.on_refresh_event() if not self._hub.compatibleServerVersion: logging.info('Incompatible server version.') self.blockingOverlay = ftrack_connect.ui.widget.overlay.BlockingOverlay( self, message='Incompatible server version.') self.blockingOverlay.setStyleSheet(NUKE_OVERLAY_STYLE) self.blockingOverlay.show() else: self._hub.populateUnreadConversations(current_user.getId(), added_user_ids)
def setupUI(self): super(GizmoPublisherDialog, self).setupUI() self.resize(980, 640) gizmo_widget = QtWidgets.QWidget() gizmo_layout = QtWidgets.QVBoxLayout(gizmo_widget) gizmo_layout.setContentsMargins(5, 0, 0, 0) css_asset_global = """ QFrame { padding: 3px; background: #222; color: #FFF; font-size: 13px; } QLabel { padding: 0px; background: none; } """ css_asset_name = """ QLineEdit { padding: 3px; border: 1px solid #444; background: #333; color: #FFF; font-weight: bold; } """ css_asset_version = "color: #de8888; font-weight: bold;" asset_main_frame = QtWidgets.QFrame(self) asset_main_frame.setMinimumWidth(600) # comment this line to remove the black background on asset. asset_main_frame.setStyleSheet(css_asset_global) asset_main_frame_layout = QtWidgets.QHBoxLayout(asset_main_frame) asset_main_frame_layout.setSpacing(10) asset_name_lbl = QtWidgets.QLabel("Asset", asset_main_frame) self._asset_name = QtWidgets.QLineEdit(asset_main_frame) self._asset_name.setText("Gizmo") self._asset_name.textChanged.connect(self._validate_asset_name) self._asset_name.setStyleSheet(css_asset_name) asset_version_lbl = QtWidgets.QLabel("Version", asset_main_frame) self._asset_version = QtWidgets.QLabel("...", asset_main_frame) self._asset_version.setStyleSheet(css_asset_version) asset_main_frame_layout.addWidget(asset_name_lbl) asset_main_frame_layout.addWidget(self._asset_name) asset_main_frame_layout.addWidget(asset_version_lbl) asset_main_frame_layout.addWidget(self._asset_version) gizmo_layout.addWidget(asset_main_frame) file_layout = QtWidgets.QVBoxLayout() file_layout.setContentsMargins(0, 0, 0, 0) file_layout.setSpacing(8) browser_layout = QtWidgets.QHBoxLayout() browser_layout.setContentsMargins(0, 0, 0, 0) browser_layout.setSpacing(8) browser_label = QtWidgets.QLabel("Gizmo file", gizmo_widget) browser_edit_css = """ QLineEdit { border: 1px solid #666; background: #555; color: #000; } """ self._browser_edit = QtWidgets.QLineEdit(gizmo_widget) self._browser_edit.setStyleSheet(browser_edit_css) self._browser_edit.textChanged.connect(self.set_gizmo_file) completer = QtWidgets.QCompleter(gizmo_widget) completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive) completer.setCompletionMode(QtWidgets.QCompleter.InlineCompletion) dir = QtWidgets.QDirModel(completer) dir.setFilter( QtCore.QDir.Dirs | QtCore.QDir.NoDot | QtCore.QDir.NoDotDot) completer.setModel(dir) self._browser_edit.setCompleter(completer) self._browser_btn = QtWidgets.QToolButton(gizmo_widget) self._browser_btn.setText("...") self._browser_btn.clicked.connect(self._browse_gizmo) browser_layout.addWidget(browser_label) browser_layout.addWidget(self._browser_edit) browser_layout.addWidget(self._browser_btn) file_layout.addItem(browser_layout) self._gizmo_file_content = ScriptEditorWidget(gizmo_widget) file_layout.addWidget(self._gizmo_file_content) self._gizmo_file_content.file_dropped.connect( self._initiate_dropped_file) gizmo_layout.addItem(file_layout) self._comment_widget = CommentWidget(gizmo_widget) self._comment_widget.setMaximumHeight(120) self._comment_widget.changed.connect(self._validate_gizmo) gizmo_layout.addWidget(self._comment_widget) self._save_btn.clicked.disconnect() self._save_btn.clicked.connect(self._publish) self.main_container_layout.addWidget(gizmo_widget) self._save_btn.setText("Publish Gizmo") self._save_btn.setMinimumWidth(150) self._save_btn.setEnabled(False) self.set_task(self.current_task)
def _build(self): '''Build and layout widget.''' layout = QtWidgets.QVBoxLayout() self.setLayout(layout) # Header header = ftrack_connect.ui.widget.header.Header( getpass.getuser(), self) header.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed) layout.addWidget(header) secondaryHeader = QtWidgets.QFrame() headerLayout = QtWidgets.QHBoxLayout() headerLayout.setContentsMargins(0, 0, 0, 0) secondaryHeader.setLayout(headerLayout) layout.addWidget(secondaryHeader) self._createButton = QtWidgets.QToolButton() self._createButton.setIcon( QtGui.QIcon.fromTheme('plus', QtGui.QIcon(':icon-plus'))) headerLayout.addWidget(self._createButton) self._navigateUpButton = QtWidgets.QToolButton() self._navigateUpButton.setIcon( QtGui.QIcon.fromTheme('go-up', QtGui.QIcon(':icon-arrow-up'))) headerLayout.addWidget(self._navigateUpButton) headerLayout.addStretch(1) # Bookmarks contentSplitter = QtWidgets.QSplitter() layout.addWidget(contentSplitter) self._bookmarksView = QtWidgets.QTableWidget() self._bookmarksView.setEditTriggers( QtWidgets.QAbstractItemView.NoEditTriggers) self._bookmarksView.setGridStyle(QtCore.Qt.NoPen) self._bookmarksView.setColumnCount(1) self._bookmarksView.setColumnCount(1) self._bookmarksView.setRowCount(0) self._bookmarksView.horizontalHeader().setVisible(False) self._bookmarksView.horizontalHeader().setStretchLastSection(True) self._bookmarksView.verticalHeader().setVisible(False) self._bookmarksView.verticalHeader().setDefaultSectionSize(25) contentSplitter.addWidget(self._bookmarksView) # Navigation self._navigator = QtWidgets.QTableWidget() self._navigator.setEditTriggers( QtWidgets.QAbstractItemView.NoEditTriggers) self._navigator.setGridStyle(QtCore.Qt.NoPen) self._navigator.setColumnCount(1) self._navigator.horizontalHeader().setStretchLastSection(True) self._navigator.verticalHeader().hide() self._navigator.setHorizontalHeaderLabels(['Name']) contentSplitter.addWidget(self._navigator) self._versionsNavigator = QtWidgets.QTableWidget() self._versionsNavigator.setEditTriggers( QtWidgets.QAbstractItemView.NoEditTriggers) self._versionsNavigator.setGridStyle(QtCore.Qt.NoPen) self._versionsNavigator.setColumnCount(1) self._versionsNavigator.verticalHeader().hide() self._versionsNavigator.setSortingEnabled(False) self._versionsNavigator.setHorizontalHeaderLabels(['Version']) contentSplitter.addWidget(self._versionsNavigator) self._componentsNavigator = QtWidgets.QTableWidget() self._componentsNavigator.setEditTriggers( QtWidgets.QAbstractItemView.NoEditTriggers) self._componentsNavigator.setColumnCount(1) self._componentsNavigator.horizontalHeader().setStretchLastSection( True) self._componentsNavigator.verticalHeader().hide() self._componentsNavigator.verticalHeader().setStretchLastSection(False) self._componentsNavigator.setHorizontalHeaderLabels(['Component']) contentSplitter.addWidget(self._componentsNavigator) # Details self._detailView = ftrack_connect_foundry.ui.detail_view.DetailView( self._bridge) contentSplitter.addWidget(self._detailView) # Location self._locationField = QtWidgets.QLineEdit() layout.addWidget(self._locationField) self._locationOptions = QtWidgets.QFrame() layout.addWidget(self._locationOptions) locationOptionsLayout = QtWidgets.QHBoxLayout() locationOptionsLayout.setContentsMargins(0, 0, 0, 0) self._locationOptions.setLayout(locationOptionsLayout) self._assetNameField = QtWidgets.QLineEdit() self._assetNameField.setEnabled(False) locationOptionsLayout.addWidget(self._assetNameField) self._overrideNameHintOption = QtWidgets.QCheckBox( 'Specify Asset Name') locationOptionsLayout.addWidget(self._overrideNameHintOption)