def __init__(self, parent=None, *args, **kwargs): super(LoadMarkerLayout, self).__init__(*args, **kwargs) self.setupUi(self) self.loadMode_model = QtCore.QStringListModel() self.loadMode_comboBox.setModel(self.loadMode_model) self.camera_model = uimodels.StringDataListModel() self.camera_comboBox.setModel(self.camera_model) self.markerGroup_model = uimodels.StringDataListModel() self.markerGroup_comboBox.setModel(self.markerGroup_model) self.distortionMode_model = QtCore.QStringListModel() self.distortionMode_comboBox.setModel(self.distortionMode_model) # Set default values self._file_info = None w, h = lib.get_default_image_resolution() self.imageResWidth_label.setEnabled(False) self.imageResWidth_spinBox.setValue(w) self.imageResWidth_spinBox.setEnabled(False) self.imageResWidth_spinBox.setMaximum(99999) self.imageResHeight_spinBox.setValue(h) self.imageResHeight_spinBox.setEnabled(False) self.imageResHeight_spinBox.setMaximum(99999) self.fileInfo_plainTextEdit.setReadOnly(True) value = const.LOAD_BUNDLE_POS_DEFAULT_VALUE self.loadBndPositions_checkBox.setChecked(value) # Get the file path from the clipboard. try: clippy = QtGui.QClipboard() text = str(clippy.text()).strip() if lib.is_valid_file_path(text): self.setFilePath(text) except Exception as e: msg = 'Could not get file path from clipboard.' LOG.warning(msg) LOG.info(str(e)) # Set up callback connections self.loadMode_comboBox.currentIndexChanged[str].connect(lambda x: self.updateLoadMode()) self.camera_comboBox.currentIndexChanged[str].connect(lambda x: self.markerGroupUpdateClicked()) self.cameraUpdate_pushButton.clicked.connect(self.cameraUpdateClicked) self.markerGroupUpdate_pushButton.clicked.connect(self.markerGroupUpdateClicked) self.filepath_pushButton.clicked.connect(self.filePathBrowseClicked) self.filepath_lineEdit.editingFinished.connect(self.updateFilePathWidget) self.populateUi()
def __init__(self, parent=None, *args, **kwargs): super(LoadMarkerLayout, self).__init__(*args, **kwargs) self.setupUi(self) self.loadMode_model = QtCore.QStringListModel() self.loadMode_comboBox.setModel(self.loadMode_model) self.camera_model = uimodels.StringDataListModel() self.camera_comboBox.setModel(self.camera_model) self.markerGroup_model = uimodels.StringDataListModel() self.markerGroup_comboBox.setModel(self.markerGroup_model) self.distortionMode_model = QtCore.QStringListModel() self.distortionMode_comboBox.setModel(self.distortionMode_model) self.createConnections() self.populateUi()
def __init__(self, parent=None, *args, **kwargs): super(CollectionWidget, self).__init__(*args, **kwargs) self.setupUi(self) # Collection Combo Box. self.model = uimodels.StringDataListModel() self.name_comboBox.setModel(self.model) self.name_comboBox.currentIndexChanged.connect(self.indexChanged) # Collection Select self.select_pushButton.clicked.connect(self.selectClickedButton) self.itemChanged.connect(self.updateModel) return
def create_list_view(self): self.attribute_model = uimodels.StringDataListModel() self.ui.attribute_listView.setModel(self.attribute_model) self.attribute_filter_model = QtCore.QSortFilterProxyModel() self.attribute_filter_model.setSourceModel(self.attribute_model) self.attribute_filter_model.setDynamicSortFilter(False) self.ui.attribute_listView.setModel(self.attribute_filter_model) self.ui.attribute_listView.setSelectionMode( QtWidgets.QAbstractItemView.SingleSelection) self.attribute_sel_model = self.ui.attribute_listView.selectionModel() self.attribute_sel_model.selectionChanged.connect(self.selectionChanged) return
def __init__(self, parent=None, *args, **kwargs): super(LoadMarkerLayout, self).__init__(*args, **kwargs) self.setupUi(self) # 'File Info' should be read-only. self.fileInfo_plainTextEdit.setReadOnly(True) # Camera combo box. self.camera_model = uimodels.StringDataListModel() self.camera_comboBox.setModel(self.camera_model) # Camera update. self.cameraUpdate_pushButton.clicked.connect(self.cameraUpdateClicked) # Set default image resolution values w, h = lib.get_default_image_resolution() self.imageResWidth_spinBox.setValue(w) self.imageResWidth_spinBox.setEnabled(False) self.imageResWidth_spinBox.setMaximum(99999) self.imageResHeight_spinBox.setValue(h) self.imageResHeight_spinBox.setEnabled(False) self.imageResHeight_spinBox.setMaximum(99999) # File path browse. self.filepath_pushButton.clicked.connect(self.filePathBrowseClicked) # Get the file path from the clipboard. try: clippy = QtGui.QClipboard() text = str(clippy.text()).strip() if lib.is_valid_file_path(text): self.setFilePath(text) except Exception as e: msg = 'Could not get file path from clipboard.' LOG.warning(msg) LOG.info(str(e)) # Update the 'Image Resolution' enable state when the file # patch changes. self.filepath_lineEdit.editingFinished.connect( self.updateImageResEnabledState) # Update the 'File Info' when the file patch changes self.filepath_lineEdit.editingFinished.connect(self.updateFileInfoText) # Populate the UI with data self.populateUi()
def __init__(self, parent=None, *args, **kwargs): super(FrameRangeWidget, self).__init__(*args, **kwargs) self.setupUi(self) # Range Type Combo Box. self.model = uimodels.StringDataListModel() self.rangeType_comboBox.setModel(self.model) self.rangeType_comboBox.currentIndexChanged.connect( self.rangeTypeIndexChanged) # Frames Line Edit self.frames_lineEdit.editingFinished.connect(self.framesTextEntered) # Increment by Frames Line Edit self.incrementByFrame_spinBox.valueChanged.connect( self.incrementByFrameValueChanged) self.rangeTypeChanged.connect(self.updateModel) return
def __init__(self, parent=None, *args, **kwargs): super(SolverLayout, self).__init__(*args, **kwargs) self.setupUi(self) # Store the parent window class, so we can set the applyBtn enabled # state. self._parentObject = parent # Hide the Solve Info line until it's set up. GitHub Issue #56 self.solveInfoLine_lineEdit.setVisible(False) # Collection Combo Box. self.collectionName_model = uimodels.StringDataListModel() self.collectionName_comboBox.setModel(self.collectionName_model) self.collectionName_comboBox.currentIndexChanged.connect( self.collectionIndexChanged ) # Collection Select self.collectionSelect_pushButton.clicked.connect( self.collectionSelectClicked ) # Object Nodes # TODO: Perhaps we should remove a tree view and research how # we can embed a Maya Outliner inside our layout with a filter # to only show markers (and their parents), this would provide # a lot of default functionality from Maya. root = object_nodes.ObjectNode('root') self.object_model = object_nodes.ObjectModel(root, font=self.font) self.object_filterModel = QtCore.QSortFilterProxyModel() self.object_filterModel.setSourceModel(self.object_model) self.object_filterModel.setDynamicSortFilter(False) self.object_treeView.setModel(self.object_filterModel) self.object_treeView.setSortingEnabled(True) self.object_treeView.sortByColumn(0, QtCore.Qt.AscendingOrder) self.object_treeView.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) self.object_selModel = self.object_treeView.selectionModel() self.object_selModel.selectionChanged.connect( self.objectNodeSelectionChanged ) self.objectToggleCamera_toolButton.clicked.connect( self.objectToggleCameraClicked, ) self.objectToggleMarker_toolButton.clicked.connect( self.objectToggleMarkerClicked, ) self.objectToggleBundle_toolButton.clicked.connect( self.objectToggleBundleClicked, ) # Object Add and Remove buttons self.objectAdd_toolButton.clicked.connect( self.objectAddClicked ) self.objectRemove_toolButton.clicked.connect( self.objectRemoveClicked ) # Attr Nodes root = attr_nodes.PlugNode('root') self.attribute_model = attr_nodes.AttrModel(root, font=self.font) self.attribute_filterModel = QtCore.QSortFilterProxyModel() self.attribute_filterModel.setSourceModel(self.attribute_model) self.attribute_filterModel.setDynamicSortFilter(False) self.attribute_treeView.setModel(self.attribute_filterModel) self.attribute_treeView.setSortingEnabled(True) self.attribute_treeView.sortByColumn(0, QtCore.Qt.AscendingOrder) self.attribute_treeView.setSelectionMode(QtWidgets.QAbstractItemView.MultiSelection) self.attribute_selModel = self.attribute_treeView.selectionModel() self.attribute_selModel.selectionChanged.connect( self.attrNodeSelectionChanged ) # Attr Add and Remove buttons self.attributeAdd_toolButton.clicked.connect( self.attrAddClicked ) self.attributeRemove_toolButton.clicked.connect( self.attrRemoveClicked ) # Solver Nodes self.solver_model = solver_nodes.SolverModel(font=self.font) self.solver_filterModel = QtCore.QSortFilterProxyModel() self.solver_filterModel.setSourceModel(self.solver_model) self.solver_filterModel.setDynamicSortFilter(False) self.solver_tableView.setModel(self.solver_filterModel) self.solver_tableView.setSortingEnabled(False) self.solver_selModel = self.solver_tableView.selectionModel() # Set up custom widgets for viewing and editing the columns. self.solver_attrFilterDelegate = solver_nodes.AttributeComboBoxDelegate() self.solver_tableView.setItemDelegateForColumn( 2, self.solver_attrFilterDelegate, ) self.solver_strategyDelegate = solver_nodes.StrategyComboBoxDelegate() self.solver_tableView.setItemDelegateForColumn( 3, self.solver_strategyDelegate, ) # Solver Add and Remove buttons self.solverAdd_toolButton.clicked.connect( self.solverAddClicked ) self.solverRemove_toolButton.clicked.connect( self.solverRemoveClicked ) # TODO: Write functions for Move Up/Down buttons. Until then, # we'll hide the buttons to avoid confusion. self.solverMoveUp_toolButton.setVisible(False) self.solverMoveDown_toolButton.setVisible(False) # self.solverMoveUp_toolButton.clicked.connect( # self.solverMoveUpClicked # ) # self.solverMoveDown_toolButton.clicked.connect( # self.solverMoveDownClicked # ) # Override Current Frame self.overrideCurrentFrame_checkBox.stateChanged.connect( self.overrideCurrentFrameChanged ) # Populate the UI with data. self.updateDynamicWindowTitle() self.updateCollectionModel() self.updateObjectToggleButtons() self.updateObjectModel() self.updateAttributeModel() self.updateSolverModel() self.updateSolveValidState() return
def __init__(self, parent=None, *args, **kwargs): super(SolverLayout, self).__init__(*args, **kwargs) self.setupUi(self) # Store the parent window class, so we can set the applyBtn enabled # state. self._parentObject = parent # Collection Combo Box. self.collectionName_model = uimodels.StringDataListModel() self.collectionName_comboBox.setModel(self.collectionName_model) self.collectionName_comboBox.currentIndexChanged.connect( self.collectionIndexChanged) # Collection Select self.collectionSelect_pushButton.clicked.connect( self.collectionSelectClicked) # Object Nodes root = object_nodes.ObjectNode('root') self.object_model = object_nodes.ObjectModel(root, font=self.font) self.object_filterModel = QtCore.QSortFilterProxyModel() self.object_filterModel.setSourceModel(self.object_model) self.object_filterModel.setDynamicSortFilter(False) self.object_header = QtWidgets.QHeaderView(QtCore.Qt.Horizontal, parent=self.object_treeView) self.object_header.setSectionResizeMode( QtWidgets.QHeaderView.ResizeToContents) self.object_treeView.setHeader(self.object_header) self.object_treeView.setModel(self.object_filterModel) self.object_treeView.setSortingEnabled(True) self.object_treeView.sortByColumn(0, QtCore.Qt.AscendingOrder) self.object_treeView.setSelectionMode( QtWidgets.QAbstractItemView.MultiSelection) self.object_selModel = self.object_treeView.selectionModel() self.object_selModel.selectionChanged.connect( self.objectNodeSelectionChanged) self.objectToggleCamera_toolButton.clicked.connect( self.objectToggleCameraClicked, ) self.objectToggleMarker_toolButton.clicked.connect( self.objectToggleMarkerClicked, ) self.objectToggleBundle_toolButton.clicked.connect( self.objectToggleBundleClicked, ) # Object Add and Remove buttons self.objectAdd_toolButton.clicked.connect(self.objectAddClicked) self.objectRemove_toolButton.clicked.connect(self.objectRemoveClicked) # Attr Nodes root = attr_nodes.PlugNode('root') self.attribute_model = attr_nodes.AttrModel(root, font=self.font) self.attribute_filterModel = QtCore.QSortFilterProxyModel() self.attribute_filterModel.setSourceModel(self.attribute_model) self.attribute_filterModel.setDynamicSortFilter(False) self.attribute_header = QtWidgets.QHeaderView( QtCore.Qt.Horizontal, parent=self.attribute_treeView) self.attribute_header.setSectionResizeMode( QtWidgets.QHeaderView.ResizeToContents) self.attribute_treeView.setHeader(self.attribute_header) self.attribute_treeView.setModel(self.attribute_filterModel) self.attribute_treeView.setSortingEnabled(True) self.attribute_treeView.sortByColumn(0, QtCore.Qt.AscendingOrder) self.attribute_treeView.setSelectionMode( QtWidgets.QAbstractItemView.MultiSelection) self.attribute_selModel = self.attribute_treeView.selectionModel() self.attribute_selModel.selectionChanged.connect( self.attrNodeSelectionChanged) self.attributeToggleAnimated_toolButton.clicked.connect( self.attributeToggleAnimatedClicked, ) self.attributeToggleStatic_toolButton.clicked.connect( self.attributeToggleStaticClicked, ) self.attributeToggleLocked_toolButton.clicked.connect( self.attributeToggleLockedClicked, ) # Attr Add and Remove buttons self.attributeAdd_toolButton.clicked.connect(self.attrAddClicked) self.attributeRemove_toolButton.clicked.connect(self.attrRemoveClicked) # Solver Nodes self.solver_model = solver_nodes.SolverModel(font=self.font) self.solver_filterModel = QtCore.QSortFilterProxyModel() self.solver_filterModel.setSourceModel(self.solver_model) self.solver_filterModel.setDynamicSortFilter(False) self.solver_tableView.setModel(self.solver_filterModel) self.solver_tableView.setSortingEnabled(False) self.solver_selModel = self.solver_tableView.selectionModel() # Set up custom widgets for viewing and editing the columns. self.solver_attrFilterDelegate = solver_nodes.AttributeComboBoxDelegate( ) attr_idx = self.solver_model.getColumnIndexFromColumnName( const.SOLVER_COLUMN_NAME_ATTRIBUTES) strategy_idx = self.solver_model.getColumnIndexFromColumnName( const.SOLVER_COLUMN_NAME_STRATEGY) self.solver_tableView.setItemDelegateForColumn( attr_idx, self.solver_attrFilterDelegate, ) self.solver_strategyDelegate = solver_nodes.StrategyComboBoxDelegate() self.solver_tableView.setItemDelegateForColumn( strategy_idx, self.solver_strategyDelegate, ) # Solver Add and Remove buttons self.solverAdd_toolButton.clicked.connect(self.solverAddClicked) self.solverRemove_toolButton.clicked.connect(self.solverRemoveClicked) # TODO: Write functions for Move Up/Down buttons. Until then, # we'll hide the buttons to avoid confusion. self.solverMoveUp_toolButton.setVisible(False) self.solverMoveDown_toolButton.setVisible(False) # self.solverMoveUp_toolButton.clicked.connect( # self.solverMoveUpClicked # ) # self.solverMoveDown_toolButton.clicked.connect( # self.solverMoveDownClicked # ) # Override Current Frame self.overrideCurrentFrame_checkBox.stateChanged.connect( self.overrideCurrentFrameChanged) # Populate the UI with data. self.updateDynamicWindowTitle() self.updateCollectionModel() self.updateObjectToggleButtons() self.updateObjectColumnVisibility() self.updateObjectModel() self.updateAttributeToggleButtons() self.updateAttributeColumnVisibility() self.updateAttributeModel() self.updateSolverModel() self.updateSolveValidState() return