예제 #1
0
    def __init__(self, parent=None, *args, **kwargs):
        super(CreateControllerLayout, self).__init__(*args, **kwargs)
        self.setupUi(self)

        # Create Button Groups (because we get compile errors if
        # trying to create these in the .ui file).
        self.node_type_btnGrp = QtWidgets.QButtonGroup()
        self.node_type_btnGrp.addButton(self.group_rdo_btn)
        self.node_type_btnGrp.addButton(self.locator_rdo_btn)

        self.bake_mode_btnGrp = QtWidgets.QButtonGroup()
        self.bake_mode_btnGrp.addButton(self.full_bake_rdo_btn)
        self.bake_mode_btnGrp.addButton(self.smart_bake_rdo_btn)
        self.bake_mode_btnGrp.addButton(self.current_frame_rdo_btn)

        self.space_btnGrp = QtWidgets.QButtonGroup()
        self.space_btnGrp.addButton(self.world_space_rdo_btn)
        self.space_btnGrp.addButton(self.object_space_rdo_btn)
        self.space_btnGrp.addButton(self.screen_space_rdo_btn)

        # Create Connections
        self.main_object_btn.clicked.connect(self.get_main_object)
        self.pivot_object_btn.clicked.connect(self.get_pivot_object)
        self.smart_bake_rdo_btn.clicked.connect(self.smart_bake_radio_button_clicked)
        self.full_bake_rdo_btn.clicked.connect(self.fullbake_space_radio_button_clicked)
        self.current_frame_rdo_btn.clicked.connect(self.fullbake_space_radio_button_clicked)

        self.reset_options()
예제 #2
0
    def createUI(self):
        self.lineEdit = QtWidgets.QLineEdit()
        self.setButton = QtWidgets.QPushButton("Set")
        self.setButton.clicked.connect(self.setter)

        self.lockCheckBox = QtWidgets.QCheckBox("Lock")
        self.lockCheckBox.stateChanged.connect(self.lock)

        self.modeRadioGrp = QtWidgets.QButtonGroup()
        self.vertexMode = QtWidgets.QRadioButton('Vertex')
        self.normalMode = QtWidgets.QRadioButton('Normal')
        self.surfaceMode = QtWidgets.QRadioButton('Surface')
        self.normalMode.setChecked(True)

        self.modeRadioGrp.addButton(self.vertexMode)
        self.modeRadioGrp.addButton(self.normalMode)
        self.modeRadioGrp.addButton(self.surfaceMode)
        self.modeRadioGrp.setId(self.vertexMode, 1)
        self.modeRadioGrp.setId(self.normalMode, 2)
        self.modeRadioGrp.setId(self.surfaceMode, 3)

        self.distanceLE = QtWidgets.QLineEdit("99999")
        self.distanceLock = QtWidgets.QCheckBox("Lock")
        self.distanceLock.stateChanged.connect(self.lockDistance)

        self.snapButton = QtWidgets.QPushButton("Snap")
        self.snapButton.setFixedHeight(40)
        self.snapButton.clicked.connect(self.snap)
예제 #3
0
 def __init__(self, separator="/", parent=None):
     super(MBreadcrumb, self).__init__(parent)
     self._separator = separator
     self._main_layout = QtWidgets.QHBoxLayout()
     self._main_layout.setContentsMargins(0, 0, 0, 0)
     self._main_layout.setSpacing(0)
     self._main_layout.addStretch()
     self.setLayout(self._main_layout)
     self.setSizePolicy(QtWidgets.QSizePolicy.Minimum,
                        QtWidgets.QSizePolicy.Minimum)
     self._button_group = QtWidgets.QButtonGroup()
     self._label_list = []
예제 #4
0
 def __init__(self, orientation=QtCore.Qt.Horizontal, parent=None):
     super(MButtonGroupBase, self).__init__(parent=parent)
     self._main_layout = QtWidgets.QBoxLayout(
         QtWidgets.QBoxLayout.LeftToRight if orientation ==
         QtCore.Qt.Horizontal else QtWidgets.QBoxLayout.TopToBottom)
     self._main_layout.setContentsMargins(0, 0, 0, 0)
     self.setLayout(self._main_layout)
     self.setSizePolicy(QtWidgets.QSizePolicy.Minimum,
                        QtWidgets.QSizePolicy.Minimum)
     self._button_group = QtWidgets.QButtonGroup()
     self._orientation = ("horizontal" if orientation
                          == QtCore.Qt.Horizontal else "vertical")
예제 #5
0
    def _build(self):
        self.setMaximumWidth(200)
        _layout = QtWidgets.QVBoxLayout(self)
        _layout.setSpacing(0)
        _layout.setContentsMargins(0, 0, 0, 0)

        # # filter type widget
        # self.filter_type_widget = QtWidgets.QFrame()
        # _layout.addWidget(self.filter_type_widget)
        # self.filter_type_layout = QtWidgets.QVBoxLayout(self.filter_type_widget)
        # self.filter_type_layout.setSpacing(0)
        # self.filter_type_layout.setContentsMargins(0,0,0,0)
        # #  title button
        # self.filter_type_name_button = QtWidgets.QPushButton()
        # self.filter_type_name_button.setObjectName("title_button")
        # self.filter_type_name_button.setMaximumHeight(25)
        # self.filter_type_name_button.setText(u"资产类型检索")
        # self.filter_type_name_button.setIcon(QtGui.QIcon(resource.get("icons","filter.png")))
        # self.filter_type_layout.addWidget(self.filter_type_name_button)
        # #  type widget
        # self.filter_type_checkbox_widget = QtWidgets.QFrame()
        # self.filter_type_layout.addWidget(self.filter_type_checkbox_widget)
        # self.filter_type_checkbox_layout = QtWidgets.QVBoxLayout(self.filter_type_checkbox_widget)
        # self.filter_type_checkbox_layout.setContentsMargins(20,0,0,0)

        # task step
        self.step_widget = QtWidgets.QFrame()
        _layout.addWidget(self.step_widget)
        self.step_layout = QtWidgets.QVBoxLayout(self.step_widget)
        self.step_layout.setSpacing(0)
        self.step_layout.setContentsMargins(0, 0, 0, 0)
        self.step_name_button = QtWidgets.QPushButton()
        self.step_name_button.setObjectName("title_button")
        self.step_name_button.setMaximumHeight(25)
        self.step_name_button.setText(u"场景装配任务步骤")
        self.step_name_button.setIcon(
            QtGui.QIcon(resource.get("icons", "filter.png")))
        self.step_layout.addWidget(self.step_name_button)
        # step checkbox widget
        self.step_checkbox_widget = QtWidgets.QFrame()
        self.step_checkbox_layout = QtWidgets.QVBoxLayout(
            self.step_checkbox_widget)
        self.step_checkbox_layout.setContentsMargins(20, 0, 0, 0)
        self.step_group = QtWidgets.QButtonGroup(self.step_checkbox_widget)
        self.step_layout.addWidget(self.step_checkbox_widget)

        _layout.addStretch(True)
예제 #6
0
    def _build(self):
        """ build name widget
        """
        self.setObjectName("window_menu_frame")
        _layout = QtWidgets.QHBoxLayout(self)

        _layout.setSpacing(4)
        _layout.setContentsMargins(8,8,8,8)

        # title button
        self.title_button = QtWidgets.QPushButton()
        _layout.addWidget(self.title_button)
        self.title_button.setObjectName("attr_title_button")
        self.title_button.setMinimumWidth(120)
        #self.title_button.setIcon(QtGui.QIcon(resource.get("icons", "{}.png".format(self._entity_type))))
        #self.title_button.setText("{}{}".format(language.word(self._entity_type), language.word("code")))
        self.title_button.setText(u"渲染器")

        self.renderer_group = QtWidgets.QButtonGroup()
        # name lineedit
        for _renderer in renderers:
            _renderer_checkbox = QtWidgets.QCheckBox()
            _renderer_checkbox.setText(_renderer)
            _layout.addWidget(_renderer_checkbox)
            self.renderer_group.addButton(_renderer_checkbox)

        _layout.addStretch(True)
        # self.code_lineedit = lineedit.LineEdit()
        # _layout.addWidget(self.code_lineedit)
        # self.code_lineedit.set_tip(language.word("required"))
        # _code_reg_exp = QtCore.QRegExp("[A-Za-z0-9_]{6,30}")
        # _pReg =  QtGui.QRegExpValidator(_code_reg_exp)
        # self.code_lineedit.setValidator(_pReg)
        
        # # star button
        # self.star_button = QtWidgets.QPushButton()
        # _layout.addWidget(self.star_button)
        # self.star_button.setObjectName("attr_title_button")
        # self.star_button.setIcon(QtGui.QIcon(resource.get("icons", "must.png")))
        # self.star_button.setMaximumSize(20,20)

        
        
        
예제 #7
0
    def init_widgets(self):
        w = QtWidgets.QWidget()
        w.setAttribute(QtCore.Qt.WA_StyledBackground, True)
        l = QtWidgets.QHBoxLayout()
        l.setSpacing(20)
        w.setLayout(l)

        def group_changed(*args):
            self.emit_changed()

        def press_button(index):
            def do_press(*args):
                self.button_group.button(index).setChecked(True)
                self.emit_changed()

            return do_press

        self.button_group = QtWidgets.QButtonGroup()
        self.button_group.buttonClicked.connect(group_changed)

        for i, opt in enumerate(self.options):
            c = QtWidgets.QCheckBox(self.parent())
            if i == 0:
                c.setChecked(True)
            c.setFixedSize(20, 20)

            cl = QtWidgets.QLabel(opt)
            cl.setProperty('clickable', True)
            cl.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
            cl.mousePressEvent = press_button(i)

            bl = QtWidgets.QHBoxLayout()
            bl.setSpacing(5)
            bl.addWidget(cl)
            bl.addWidget(c)
            self.button_group.addButton(c, i)
            l.addLayout(bl)

        return (w, )
예제 #8
0
파일: ui.py 프로젝트: kthulhu/miMayaPlugins
    def createUI(self):
        self.lineEdit = QtWidgets.QLineEdit()
        self.lineEdit.setEnabled(False)
        self.setButton = QtWidgets.QPushButton("Set")
        self.setButton.clicked.connect(self.setter)

        self.modeRadioGrp = QtWidgets.QButtonGroup()
        self.vertexMode = QtWidgets.QRadioButton('Vertex')
        self.normalMode = QtWidgets.QRadioButton('Normal')
        self.surfaceMode = QtWidgets.QRadioButton('Surface')
        self.normalMode.setChecked(True)

        self.modeRadioGrp.addButton(self.vertexMode)
        self.modeRadioGrp.addButton(self.normalMode)
        self.modeRadioGrp.addButton(self.surfaceMode)
        self.modeRadioGrp.setId(self.vertexMode, 1)
        self.modeRadioGrp.setId(self.normalMode, 2)
        self.modeRadioGrp.setId(self.surfaceMode, 3)

        self.distanceLE = QtWidgets.QLineEdit("99999")
        self.distanceLock = QtWidgets.QCheckBox("Lock")
        self.distanceLock.stateChanged.connect(self.lockDistance)

        self.customVectorCheck = QtWidgets.QCheckBox("Use custom vector")
        self.customVectorCheck.stateChanged.connect(
            self.changeCustomVectorState)
        self.customVectorX = QtWidgets.QLineEdit("0")
        self.customVectorY = QtWidgets.QLineEdit("0")
        self.customVectorZ = QtWidgets.QLineEdit("0")
        self.customVectorX.setEnabled(False)
        self.customVectorY.setEnabled(False)
        self.customVectorZ.setEnabled(False)
        self.tbdCheckBox = QtWidgets.QCheckBox("Test both directions")

        self.snapButton = QtWidgets.QPushButton("Snap")
        self.snapButton.setFixedHeight(40)
        self.snapButton.clicked.connect(self.snap)
예제 #9
0
    def setupOptionsUi(self, parent): # override
        """
        Build options UI containing different preset filter types
        """
        self.optsVLayout = QtWidgets.QVBoxLayout(parent)
        self.optsVLayout.setObjectName("optsVLayout")

        self.optsSimpleTypesGrid = QtWidgets.QGridLayout(parent)
        # self.optsSimpleTypesGrid.setSpacing(8)
        self.optsSimpleTypesGrid.setContentsMargins(0, 0, 0, 0)
        self.optsVLayout.addLayout(self.optsSimpleTypesGrid)

        # create a grid of buttons for toggling some basic node kwargs
        btnGroup = QtWidgets.QButtonGroup(parent)
        btnGroup.setExclusive(False)
        btnGroup.buttonToggled.connect(self.setNodeKwargForSimpleType)
        numColumns = 3
        row, col = 0, 0
        for key in self.searchModel.commonNodeKwargKeys:
            btn = QtWidgets.QPushButton(parent)
            btn.setObjectName('nodeKwargBtn_{0}'.format(key))
            btn.setCheckable(True)
            btn.setChecked(QtCore.Qt.Checked if self.searchModel.getNodeKwargValue(key) else QtCore.Qt.Unchecked)
            btn.setText(key.title())
            btnGroup.addButton(btn)
            self.optsSimpleTypesGrid.addWidget(btn, row, col)
            col += 1
            if col >= numColumns:
                col = 0
                row += 1

        # create a custom flags input field for more granular control
        self.optsNodeKwargsAdvancedLabel = QtWidgets.QLabel(parent)
        self.optsNodeKwargsAdvancedLabel.setWordWrap(True)
        self.optsNodeKwargsAdvancedLabel.setText('additional flags are supported: e.g. `-type joint`')
        self.optsNodeKwargsAdvancedLabel.setObjectName('optsNodeKwargsAdvancedLabel')
        self.optsVLayout.addWidget(self.optsNodeKwargsAdvancedLabel)
예제 #10
0
    def __init__(self, toggle_names, plot_widget, data_type):
        """
        Builds the data control widget with the supplied toggle names and
        data types
        :param toggle_names: list of toggle names to add to the widget
        :param plot_widget: QWidget that the toggle is to operate on
        :param data_type: str, type of toggles to create
            supported: 'Axis', 'Derivative'
        """
        super(DataControlWidget, self).__init__()

        self.main_layout = None  # QVBoxLayout

        self.toggle_names = toggle_names
        self.plot_widget = plot_widget
        self.data_type = data_type

        self.toggles = {}
        self.toggle_group = QtWidgets.QButtonGroup()
        self.toggle_group.setExclusive(False)

        self.isolate_toggle = None  # DataToggle object reference

        self.__build_data_control_widget()
예제 #11
0
파일: opendialog.py 프로젝트: zky001/ts2
    def __init__(self, parent, tab=0):
        """Constructor for the OpenDialog."""
        super().__init__(parent)
        self.setWindowTitle(self.tr("Open Simulation"))
        self.setMinimumWidth(800)
        self.setMinimumHeight(800)

        m = 5
        containerLayout = QtWidgets.QHBoxLayout()
        containerLayout.setContentsMargins(m, m, m, m)
        self.setLayout(containerLayout)

        # ========================================
        # Left Bar + navigation
        self.leftBar = QtWidgets.QVBoxLayout()
        self.leftBar.setContentsMargins(0, 0, 0, 0)
        containerLayout.addLayout(self.leftBar)

        self.buttGroup = QtWidgets.QButtonGroup()
        self.buttGroup.setExclusive(True)

        self.leftBar.addWidget(self._make_nav_button(self.tr("Sims"),
                                                     NAV.sims))
        self.leftBar.addWidget(
            self._make_nav_button(self.tr("Recent"), NAV.recent))
        self.leftBar.addWidget(
            self._make_nav_button(self.tr("Browse"), NAV.filesystem))
        self.leftBar.addStretch(20)

        # ==================================================================================
        # Stack widget for main
        mainLayout = QtWidgets.QVBoxLayout()
        mainLayout.setContentsMargins(0, 0, 0, 0)
        containerLayout.addLayout(mainLayout)

        self.stackWidget = QtWidgets.QStackedWidget()
        mainLayout.addWidget(self.stackWidget, 200)

        # =================
        # Downloaded Sims
        self.downloadWidget = QtWidgets.QWidget()
        self.downloadLayout = QtWidgets.QVBoxLayout()
        self.downloadLayout.setContentsMargins(0, 0, 0, 0)
        self.downloadWidget.setLayout(self.downloadLayout)
        self.stackWidget.addWidget(self.downloadWidget)

        tbBrowse = QtWidgets.QToolBar()
        self.downloadLayout.addWidget(tbBrowse)

        self.txtUrl = QtWidgets.QLineEdit(self)
        self.txtUrl.setText(ts2.get_info().get('simulations_repo'))
        tbBrowse.addWidget(self.txtUrl)

        self.buttDownload = tbBrowse.addAction("Download", self.onDownload)

        self.treeSims = QtWidgets.QTreeWidget()
        self.downloadLayout.addWidget(self.treeSims)
        hitem = self.treeSims.headerItem()
        hitem.setText(C.name, "Name")
        hitem.setText(C.description, "Description")
        hitem.setText(C.file_name, "File")
        hitem.setText(C.file_path, "Path")
        self.treeSims.setColumnHidden(C.file_path, True)
        self.treeSims.header().setStretchLastSection(True)
        self.treeSims.itemDoubleClicked.connect(self.onTreeSimsItemDblClicked)

        # =====================================
        # Recent

        self.treeRecent = QtWidgets.QTreeWidget()
        self.stackWidget.addWidget(self.treeRecent)

        hitem = self.treeRecent.headerItem()
        hitem.setText(0, "Path")

        self.treeRecent.itemDoubleClicked.connect(
            self.onTreeRecentItemDblClicked)

        # =====================================
        # Browse
        self.filesModel = QtWidgets.QFileSystemModel()
        self.filesModel.setRootPath(QtCore.QDir.homePath())
        self.filesModel.setNameFilters(["*.ts2", "*.json"])

        self.treeFiles = QtWidgets.QTreeView()
        self.treeFiles.setModel(self.filesModel)

        self.stackWidget.addWidget(self.treeFiles)

        self.treeFiles.doubleClicked.connect(self.onTreeBrowseItemDblClicked)

        # =================================
        # Bottom status
        self.statusBar = widgets.StatusBar()
        mainLayout.addWidget(self.statusBar, 0)
        if settings.debug:
            self.statusBar.showMessage(settings.simulationsDir)

        self.buttGroup.buttonToggled.connect(self.onNavButtClicked)
        self.buttGroup.button(tab).setChecked(True)
예제 #12
0
def get_input(title, data, options=None):
    if options is None:
        options = DEFAULT_OPTIONS.copy()

    dialog = QtWidgets.QWidget()

    layout = QtWidgets.QGridLayout()
    dialog.setLayout(layout)
    layout.setContentsMargins(0, 0, 0, 0)
    layout.setSpacing(4)

    widget_map = dict()

    row = 0
    for key, value in data.items():
        label = QtWidgets.QLabel('{name}:'.format(name=key))
        layout.addWidget(label, row, 0)

        if PropValue.isBool(value):
            widget = QtWidgets.QCheckBox()
            widget.setChecked(PropValue.toBool(value))
            layout.addWidget(widget, row, 1)
            widget_map[key] = widget

        elif PropValue.isColor(value):
            widget = SetColorButton()
            widget.set_color(PropValue.toColor(value))
            layout.addWidget(widget, row, 1)
            widget_map[key] = widget

        elif PropValue.isFloat(value):
            widget = QtWidgets.QDoubleSpinBox()
            widget.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
            widget.setMaximum(options['numericMax'])
            widget.setMinimum(options['numericMin'])
            widget.setDecimals(options['numericPrecision'])
            widget.setValue(PropValue.toFloat(value))
            layout.addWidget(widget, row, 1)
            widget_map[key] = widget

        elif PropValue.isInt(value):
            widget = QtWidgets.QSpinBox()
            widget.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
            widget.setMaximum(options['numericMax'])
            widget.setMinimum(options['numericMin'])
            widget.setValue(PropValue.toInt(value))
            layout.addWidget(widget, row, 1)
            widget_map[key] = widget

        elif PropValue.isVector3D(value):
            value = PropValue.toVector3D(value)
            widget = QtWidgets.QWidget()
            wlayout = QtWidgets.QHBoxLayout(widget)
            wlayout.setContentsMargins(2, 2, 2, 2)
            wlayout.setSpacing(2)

            xwidget = QtWidgets.QDoubleSpinBox()
            xwidget.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
            xwidget.setValue(value.x)
            wlayout.addWidget(xwidget)

            ywidget = QtWidgets.QDoubleSpinBox()
            ywidget.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
            ywidget.setValue(value.y)
            wlayout.addWidget(ywidget)

            zwidget = QtWidgets.QDoubleSpinBox()
            zwidget.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
            zwidget.setValue(value.z)
            wlayout.addWidget(zwidget)

            layout.addWidget(widget, row, 1)
            widget_map[key] = widget

        elif PropValue.isEnum(value):
            if options['listDisplaysAsRadios']:
                values = PropValue.toEnum(value)
                widget = QtWidgets.QWidget()
                button_group = QtWidgets.QButtonGroup()
                wlayout = QtWidgets.QHBoxLayout(widget)
                wlayout.setContentsMargins(2, 2, 2, 2)
                wlayout.setSpacing(2)

                isChecked = False
                for val in values:
                    button = QtWidgets.QRadioButton(val)
                    button_group.addButton(button)
                    wlayout.addWidget(button)

                if not isChecked:
                    button.setChecked(True)
                    isChecked = True
                layout.addWidget(widget, row, 1)
                widget_map[key] = widget
            else:
                widget = QtWidgets.QComboBox()
                widget.addItems(PropValue.toEnum(value))
                layout.addWidget(widget, row, 1)
                widget_map[key] = widget

        elif PropValue.isString(value):
            widget = QtWidgets.QLineEdit(PropValue.toString(value))
            layout.addWidget(widget, row, 1)
            widget_map[key] = widget

        row += 1

    dialog.widget_map = widget_map
    grp = PropGroup(title, dialog)

    return grp
예제 #13
0
    def __init__(self, parent=None):
        super(RigExtensionView, self).__init__(parent=parent)

        self.associateBtn = QtWidgets.QPushButton('associate')
        self.associateBtn.setToolTip(
            'Pair a source node with a target node for mirroring.')
        self.associateBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                        QtWidgets.QSizePolicy.Minimum)
        self.disassociateBtn = QtWidgets.QPushButton('disassociate')
        self.disassociateBtn.setToolTip(
            'Break and clear the association of a node and its target.')
        self.disassociateBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)

        self.xAxisBtn = QtWidgets.QPushButton('X')
        self.xAxisBtn.setToolTip('Toggle on to mirror across the X Axis.')
        self.xAxisBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                    QtWidgets.QSizePolicy.Minimum)
        self.xAxisBtn.setCheckable(True)
        self.xAxisBtn.setChecked(True)
        self.yAxisBtn = QtWidgets.QPushButton('Y')
        self.yAxisBtn.setToolTip('Toggle on to mirror across the Y Axis.')
        self.yAxisBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                    QtWidgets.QSizePolicy.Minimum)
        self.yAxisBtn.setCheckable(True)
        self.zAxisBtn = QtWidgets.QPushButton('Z')
        self.zAxisBtn.setToolTip('Toggle on to mirror across the Z Axis.')
        self.zAxisBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                    QtWidgets.QSizePolicy.Minimum)
        self.zAxisBtn.setCheckable(True)

        mirrorAxisGrp = QtWidgets.QButtonGroup(self)
        mirrorAxisGrp.setExclusive(True)
        mirrorAxisGrp.addButton(self.xAxisBtn)
        mirrorAxisGrp.addButton(self.yAxisBtn)
        mirrorAxisGrp.addButton(self.zAxisBtn)

        self.simpleMirrorModeBtn = QtWidgets.QPushButton('Simple')
        self.simpleMirrorModeBtn.setToolTip(
            'Toggle on to mirror a node in `FK` mode.')
        self.simpleMirrorModeBtn.setCheckable(True)
        self.simpleMirrorModeBtn.setChecked(True)
        self.simpleMirrorModeBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                               QtWidgets.QSizePolicy.Minimum)
        self.inverseMirrorModeBtn = QtWidgets.QPushButton('Inverse')
        self.inverseMirrorModeBtn.setToolTip(
            'Toggle on to mirror a node in `IK` mode.')
        self.inverseMirrorModeBtn.setCheckable(True)
        self.inverseMirrorModeBtn.setSizePolicy(
            QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)

        mirrorModeGrp = QtWidgets.QButtonGroup(self)
        mirrorModeGrp.setExclusive(True)
        mirrorModeGrp.addButton(self.simpleMirrorModeBtn)
        mirrorModeGrp.addButton(self.inverseMirrorModeBtn)

        self.editCustomMirrorBtn = QtWidgets.QPushButton(
            'Edit Custom Mirroring')
        self.editCustomMirrorBtn.setToolTip(
            'Customize how specific attributes mirror between associated nodes.'
        )

        self.recursiveChb = QtWidgets.QCheckBox('Mirror Recursively')
        self.recursiveChb.setToolTip(
            'Toggle on to run a mirror function on all children of a selected node.'
        )
        self.mirrorBtn = QtWidgets.QPushButton('Mirror Node')
        self.mirrorBtn.setToolTip(
            'Mirror the creation, parenting, and transform of a selected node.'
        )
        self.mirrorParentingBtn = QtWidgets.QPushButton('Mirror Parenting')
        self.mirrorParentingBtn.setToolTip(
            'Mirror only the parenting of a selected node, must be associated already.'
        )
        self.mirrorTransformBtn = QtWidgets.QPushButton('Mirror Transform')
        self.mirrorTransformBtn.setToolTip(
            'Mirror only the transformation of a selected node, must be associated already.'
        )

        pairNodesLayout = QtWidgets.QHBoxLayout()
        pairNodesLayout.setAlignment(QtCore.Qt.AlignTop)
        pairNodesLayout.setSpacing(1)
        pairNodesLayout.setContentsMargins(0, 0, 0, 0)
        pairNodesLayout.addWidget(self.associateBtn)
        pairNodesLayout.addWidget(self.disassociateBtn)

        editCustomLayout = QtWidgets.QHBoxLayout()
        editCustomLayout.setAlignment(QtCore.Qt.AlignTop)
        editCustomLayout.setSpacing(1)
        editCustomLayout.setContentsMargins(0, 2, 0, 0)
        editCustomLayout.addWidget(self.editCustomMirrorBtn)

        mirrorDirLayout = QtWidgets.QHBoxLayout()
        mirrorDirLayout.setAlignment(QtCore.Qt.AlignTop)
        mirrorDirLayout.setSpacing(1)
        mirrorDirLayout.setContentsMargins(0, 10, 0, 0)
        mirrorDirLayout.addWidget(self.xAxisBtn)
        mirrorDirLayout.addWidget(self.yAxisBtn)
        mirrorDirLayout.addWidget(self.zAxisBtn)

        mirrorTypeLayout = QtWidgets.QHBoxLayout()
        mirrorTypeLayout.setAlignment(QtCore.Qt.AlignTop)
        mirrorTypeLayout.setSpacing(1)
        mirrorTypeLayout.setContentsMargins(0, 2, 0, 0)
        mirrorTypeLayout.addWidget(self.simpleMirrorModeBtn)
        mirrorTypeLayout.addWidget(self.inverseMirrorModeBtn)

        mirrorFuncLayout = QtWidgets.QVBoxLayout()
        mirrorFuncLayout.setAlignment(QtCore.Qt.AlignTop)
        mirrorFuncLayout.setSpacing(1)
        mirrorFuncLayout.setContentsMargins(0, 10, 0, 0)
        mirrorFuncLayout.addWidget(self.recursiveChb)
        mirrorFuncLayout.addWidget(self.mirrorBtn)
        mirrorFuncLayout.addWidget(self.mirrorParentingBtn)
        mirrorFuncLayout.addWidget(self.mirrorTransformBtn)

        # settings layout
        settingsLayout = QtWidgets.QVBoxLayout()
        settingsLayout.setAlignment(QtCore.Qt.AlignTop)
        settingsLayout.setSpacing(0)
        settingsLayout.setContentsMargins(5, 5, 5, 10)
        settingsLayout.addLayout(pairNodesLayout)
        settingsLayout.addLayout(editCustomLayout)
        settingsLayout.addLayout(mirrorDirLayout)
        settingsLayout.addLayout(mirrorTypeLayout)
        settingsLayout.addLayout(mirrorFuncLayout)

        mirrorSettingsGrp = QtWidgets.QGroupBox('')
        mirrorSettingsGrp.setLayout(settingsLayout)

        # top layout
        mainLayout = QtWidgets.QVBoxLayout()
        mainLayout.setAlignment(QtCore.Qt.AlignTop)
        mainLayout.setSpacing(0)
        mainLayout.setContentsMargins(0, 0, 0, 0)
        mainLayout.addWidget(mirrorSettingsGrp)

        self.setLayout(mainLayout)
        self.setObjectName('RigMirrorToolsView')
        self.setWindowTitle('Rig Mirror Tools')

        self.associateBtn.clicked.connect(self.associateNodes)
        self.disassociateBtn.clicked.connect(self.disassociateNodes)

        self.mirrorBtn.clicked.connect(self.mirrorNodes)
        self.mirrorParentingBtn.clicked.connect(self.mirrorParenting)
        self.mirrorTransformBtn.clicked.connect(self.mirrorTransforms)
예제 #14
0
    def _build(self):
        self.setMaximumWidth(200)
        _layout = QtWidgets.QVBoxLayout(self)
        _layout.setSpacing(0)
        _layout.setContentsMargins(0, 0, 0, 0)

        # # filter type widget
        # self.filter_type_widget = QtWidgets.QFrame()
        # _layout.addWidget(self.filter_type_widget)
        # self.filter_type_layout = QtWidgets.QVBoxLayout(self.filter_type_widget)
        # self.filter_type_layout.setSpacing(0)
        # self.filter_type_layout.setContentsMargins(0,0,0,0)
        # #  title button
        # self.filter_project_step_button = QtWidgets.QPushButton()
        # self.filter_project_step_button.setMaximumHeight(25)
        # self.filter_project_step_button.setText(u"任务步骤检索")
        # self.filter_project_step_button.setIcon(QtGui.QIcon(resource.get("icons","filter.png")))
        # self.filter_type_layout.addWidget(self.filter_project_step_button)
        # #  type widget
        # self.filter_project_step_checkbox_widget = QtWidgets.QFrame()
        # self.filter_type_layout.addWidget(self.filter_project_step_checkbox_widget)
        # self.filter_project_step_checkbox_layout = QtWidgets.QVBoxLayout(self.filter_project_step_checkbox_widget)
        # self.filter_project_step_checkbox_layout.setContentsMargins(20,0,0,0)

        # self.step_name_button = QtWidgets.QPushButton()
        # self.step_name_button.setMaximumHeight(25)
        # self.step_name_button.setText(u"任务步骤")
        # self.step_name_button.setIcon(QtGui.QIcon(resource.get("icons","filter.png")))
        # _layout.addWidget(self.step_name_button)

        # asset task step
        self.step_widget = QtWidgets.QFrame()
        _layout.addWidget(self.step_widget)
        self.step_layout = QtWidgets.QVBoxLayout(self.step_widget)
        self.step_layout.setSpacing(0)
        self.step_layout.setContentsMargins(0, 0, 0, 0)

        # asset
        self.asset_step_name_button = QtWidgets.QPushButton()
        self.asset_step_name_button.setMaximumHeight(25)
        self.asset_step_name_button.setText(
            language.word("task step for asset"))
        self.asset_step_name_button.setObjectName("attr_name_button")
        self.asset_step_name_button.setIcon(
            QtGui.QIcon(resource.get("icons", "asset.png")))
        self.step_layout.addWidget(self.asset_step_name_button)
        self.asset_step_checkbox_widget = QtWidgets.QFrame()
        self.asset_step_checkbox_layout = QtWidgets.QVBoxLayout(
            self.asset_step_checkbox_widget)
        self.asset_step_checkbox_layout.setContentsMargins(20, 0, 0, 0)
        self.step_layout.addWidget(self.asset_step_checkbox_widget)

        # # sequence
        # self.sequence_step_name_button = QtWidgets.QPushButton()
        # self.sequence_step_name_button.setMaximumHeight(25)
        # self.sequence_step_name_button.setText(language.word("sequence"))
        # self.sequence_step_name_button.setIcon(QtGui.QIcon(resource.get("icons","sequence.png")))
        # self.step_layout.addWidget(self.sequence_step_name_button)
        # self.sequence_step_checkbox_widget = QtWidgets.QFrame()
        # self.sequence_step_checkbox_layout = QtWidgets.QVBoxLayout(self.sequence_step_checkbox_widget)
        # self.sequence_step_checkbox_layout.setContentsMargins(20,0,0,0)
        # self.step_layout.addWidget(self.sequence_step_checkbox_widget)

        # # shot
        # self.shot_step_name_button = QtWidgets.QPushButton()
        # self.shot_step_name_button.setMaximumHeight(25)
        # self.shot_step_name_button.setText(language.word("shot"))
        # self.shot_step_name_button.setIcon(QtGui.QIcon(resource.get("icons","shot.png")))
        # self.step_layout.addWidget(self.shot_step_name_button)
        # self.shot_step_checkbox_widget = QtWidgets.QFrame()
        # self.shot_step_checkbox_layout = QtWidgets.QVBoxLayout(self.shot_step_checkbox_widget)
        # self.shot_step_checkbox_layout.setContentsMargins(20,0,0,0)
        # self.step_layout.addWidget(self.shot_step_checkbox_widget)

        # # step checkbox widget
        # self.step_checkbox_widget = QtWidgets.QFrame()
        # self.step_checkbox_layout = QtWidgets.QVBoxLayout(self.step_checkbox_widget)
        # self.step_checkbox_layout.setContentsMargins(20,0,0,0)
        self.step_group = QtWidgets.QButtonGroup(self)
        # self.step_layout.addWidget(self.step_checkbox_widget)
        _layout.addStretch(True)

        # update all
        self.update_project_step_button = QtWidgets.QPushButton()
        self.update_project_step_button.setMinimumSize(100, 40)
        self.update_project_step_button.setText(u"任务步骤批量更新")
        _layout.addWidget(self.update_project_step_button)
    def initUI(self):

        #Create 'Main Menu' button
        self.mainButton = QtWidgets.QPushButton(str(self.name), self)
        self.mainButton.setObjectName('main')
        self.mainButton.setStyleSheet(
            "QPushButton#main::menu-indicator {subcontrol-position: left bottom; bottom: -4px;}"
        )

        self.createMenus()

        self.scaleButton = QtWidgets.QPushButton('S')
        self.scaleButton.setObjectName('S')
        self.scaleButton.setCheckable(True)
        self.scaleButton.setAutoExclusive(False)
        self.scaleButton.setStyleSheet(
            "QPushButton#S {background-color: dimgray; min-width: 0.5em; min-height: 1.5em; border-radius: 12px; font-weight: bold; font-size: 10pt;} QPushButton#S:checked {background-color: darkgray;}"
        )
        self.scaleWidget = TransformElement('scale', self)
        self.scaleButton.clicked.connect(self.SRT_stateUpdate)

        self.rotateButton = QtWidgets.QPushButton('R')
        self.rotateButton.setObjectName('R')
        self.rotateButton.setStyleSheet(
            "QPushButton#R {background-color: dimgray; min-width: 1.2em; min-height: 1.5em; border-radius: 12px; font-weight: bold; font-size: 10pt;} QPushButton#R:checked {background-color: darkgray;}"
        )
        self.rotateButton.setCheckable(True)
        self.rotateButton.setAutoExclusive(False)
        self.rotateWidget = TransformElement('rotate', self)
        self.rotateWidget.X.asDegree = True
        self.rotateWidget.Y.asDegree = True
        self.rotateWidget.Z.asDegree = True
        self.rotateButton.clicked.connect(self.SRT_stateUpdate)

        self.translateButton = QtWidgets.QPushButton('T')
        self.translateButton.setObjectName('T')
        self.translateButton.setStyleSheet(
            "QPushButton#T {background-color: dimgray; min-width: 1.2em; min-height: 1.5em; border-radius: 12px; font-weight: bold; font-size: 10pt;} QPushButton#T:checked {background-color: darkgray;}"
        )
        self.translateButton.setCheckable(True)
        self.translateButton.setAutoExclusive(False)
        self.translateWidget = TransformElement('translate', self)
        self.translateButton.clicked.connect(self.SRT_stateUpdate)

        self.SRTgroup = QtWidgets.QButtonGroup()
        self.SRTgroup.setExclusive(True)
        self.SRTgroup.addButton(self.scaleButton)
        self.SRTgroup.addButton(self.rotateButton)
        self.SRTgroup.addButton(self.translateButton)

        self.globalButton = QtWidgets.QPushButton('Global')
        self.globalButton.setCheckable(True)
        self.localButton = QtWidgets.QPushButton('Local')
        self.localButton.setCheckable(True)
        self.viewButton = QtWidgets.QPushButton('View')
        self.viewButton.setCheckable(True)
        self.parentButton = QtWidgets.QPushButton('Parent')
        self.parentButton.setCheckable(True)
        self.addButton = QtWidgets.QPushButton('Add')
        self.addButton.setCheckable(True)
        self.refButton = TooglableMenuButton(
            os.path.join(self.iconPath, "leftTopArrow.png"), self.refMenu,
            'Ref')
        self.refButton.setObjectName('Ref')
        self.refButton.setCheckable(True)

        self.planeButton = TooglableMenuButton(
            os.path.join(self.iconPath, "leftTopArrow.png"), self.refMenu,
            'Plane')
        self.planeButton.setObjectName('Plane')
        self.planeButton.setCheckable(True)

        self.volumeButton = QtWidgets.QPushButton('Vol')
        self.volumeButton.setCheckable(True)

        self.SRTModegroup = QtWidgets.QButtonGroup()
        self.SRTModegroup.setExclusive(True)
        self.SRTModegroup.addButton(self.globalButton)
        self.SRTModegroup.addButton(self.localButton)
        self.SRTModegroup.addButton(self.viewButton)
        self.SRTModegroup.addButton(self.parentButton)
        self.SRTModegroup.addButton(self.addButton)
        self.SRTModegroup.addButton(self.refButton)
        self.SRTModegroup.addButton(self.planeButton)
        self.SRTModegroup.addButton(self.volumeButton)

        self.cogButton = QtWidgets.QPushButton('COG')
        self.cogButton.setCheckable(True)
        self.proportionalButton = QtWidgets.QPushButton('Prop')
        self.proportionalButton.setCheckable(True)
        self.symmetryButton = TooglableMenuButton(
            os.path.join(self.iconPath, "leftTopArrow.png"), self.symMenu,
            'Sym')
        self.symmetryButton.setCheckable(True)

        SRTgrid = QtWidgets.QGridLayout()
        SRTgrid.setSpacing(0)
        SRTgrid.setContentsMargins(2, 2, 2, 2)
        SRTgrid.addWidget(self.scaleButton, 0, 2)
        SRTgrid.addWidget(self.scaleWidget, 0, 0, 1, 2)
        SRTgrid.addWidget(self.rotateButton, 1, 2)
        SRTgrid.addWidget(self.rotateWidget, 1, 0, 1, 2)
        SRTgrid.addWidget(self.translateButton, 2, 2)
        SRTgrid.addWidget(self.translateWidget, 2, 0, 1, 2)

        SRToptionsGrid = QtWidgets.QGridLayout()
        SRToptionsGrid.setSpacing(0)
        SRToptionsGrid.addWidget(self.globalButton, 0, 0)
        SRToptionsGrid.addWidget(self.localButton, 0, 1)
        SRToptionsGrid.addWidget(self.viewButton, 0, 2)
        SRToptionsGrid.addWidget(self.parentButton, 1, 0)
        SRToptionsGrid.addWidget(self.addButton, 1, 0)
        SRToptionsGrid.addWidget(self.refButton, 1, 1)
        SRToptionsGrid.addWidget(self.planeButton, 1, 2)
        SRToptionsGrid.addWidget(self.volumeButton, 1, 2)
        SRToptionsGrid.setRowMinimumHeight(2, 2)
        SRToptionsGrid.addWidget(self.cogButton, 3, 0)
        SRToptionsGrid.addWidget(self.proportionalButton, 3, 1)
        SRToptionsGrid.addWidget(self.symmetryButton, 3, 2)

        mainGrid = QtWidgets.QGridLayout()
        mainGrid.setSpacing(0)
        mainGrid.setContentsMargins(0, 0, 0, 0)
        mainGrid.addWidget(self.mainButton, 0, 0)
        mainGrid.addLayout(SRTgrid, 1, 0)
        mainGrid.addLayout(SRToptionsGrid, 2, 0)

        self.setLayout(mainGrid)
예제 #16
0
    def __init__(self, parent=None):
        """Create the visual components.

        Args:
            parent (QtWidgets.QWidget): Qt object to be the parent this one lives under.

        Returns:
            None
        """
        super(AnimExtensionView, self).__init__(parent=parent)

        # mirror settings
        self.selectionBtn = QtWidgets.QPushButton('Selection')
        self.selectionBtn.setToolTip(
            'Toggle on to mirror based on pairs of selected nodes.')
        self.selectionBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                        QtWidgets.QSizePolicy.Expanding)
        self.selectionBtn.setCheckable(True)
        self.selectionBtn.setChecked(True)
        self.rigBtn = QtWidgets.QPushButton('Rig')
        self.rigBtn.setToolTip(
            'Toggle on to mirror based on the rig settings.')
        self.rigBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                  QtWidgets.QSizePolicy.Expanding)
        self.rigBtn.setMinimumWidth(self.selectionBtn.sizeHint().width())
        self.rigBtn.setCheckable(True)

        mirrorModeGrp = QtWidgets.QButtonGroup(self)
        mirrorModeGrp.setExclusive(True)
        mirrorModeGrp.addButton(self.selectionBtn)
        mirrorModeGrp.addButton(self.rigBtn)

        self.mirrorTypeCombo = QtWidgets.QComboBox()
        self.mirrorTypeCombo.setToolTip(
            'How to mirror: Auto >> Rig Settings, Simple >> FK, Inverse >> IK.'
        )
        self.mirrorTypeCombo.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        self.mirrorTypeCombo.addItems(['Auto', 'Simple', 'Inverse'])

        self.xAxisBtn = QtWidgets.QPushButton('X')
        self.xAxisBtn.setToolTip('Toggle on to mirror across the X Axis.')
        self.xAxisBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                    QtWidgets.QSizePolicy.Expanding)
        self.xAxisBtn.setCheckable(True)
        self.xAxisBtn.setChecked(True)
        self.yAxisBtn = QtWidgets.QPushButton('Y')
        self.yAxisBtn.setToolTip('Toggle on to mirror across the Y Axis.')
        self.yAxisBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                    QtWidgets.QSizePolicy.Expanding)
        self.yAxisBtn.setCheckable(True)
        self.zAxisBtn = QtWidgets.QPushButton('Z')
        self.zAxisBtn.setToolTip('Toggle on to mirror across the Z Axis.')
        self.zAxisBtn.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                    QtWidgets.QSizePolicy.Expanding)
        self.zAxisBtn.setCheckable(True)

        mirrorAxisGrp = QtWidgets.QButtonGroup(self)
        mirrorAxisGrp.setExclusive(True)
        mirrorAxisGrp.addButton(self.xAxisBtn)
        mirrorAxisGrp.addButton(self.yAxisBtn)
        mirrorAxisGrp.addButton(self.zAxisBtn)

        self.translateBtn = QtWidgets.QPushButton('Translate')
        self.translateBtn.setCheckable(True)
        self.translateBtn.setChecked(True)
        self.rotateBtn = QtWidgets.QPushButton('Rotate')
        self.rotateBtn.setMinimumWidth(self.translateBtn.sizeHint().width())
        self.rotateBtn.setCheckable(True)
        self.rotateBtn.setChecked(True)
        self.scaleBtn = QtWidgets.QPushButton('Scale')
        self.scaleBtn.setMinimumWidth(self.translateBtn.sizeHint().width())
        self.scaleBtn.setCheckable(True)
        self.scaleBtn.setChecked(True)

        self.mirrorAxisAddBtn = QtWidgets.QPushButton('+')
        self.mirrorAxisAddBtn.setToolTip(
            'Add the selected node as the axis to mirror across.')
        self.mirrorAxisRemoveBtn = QtWidgets.QPushButton('x')
        self.mirrorAxisRemoveBtn.setToolTip(
            'Set mirroring to mirror across the origin.')
        self.mirrorAxisField = QtWidgets.QLineEdit('origin')
        self.mirrorAxisField.setMinimumHeight(
            self.mirrorAxisAddBtn.sizeHint().height())
        self.mirrorAxisField.setReadOnly(True)

        mirrorModeLayout = QtWidgets.QHBoxLayout()
        mirrorModeLayout.setAlignment(QtCore.Qt.AlignLeft)
        mirrorModeLayout.setSpacing(1)
        mirrorModeLayout.setContentsMargins(0, 0, 0, 0)
        mirrorModeLayout.addWidget(self.selectionBtn)
        mirrorModeLayout.addWidget(self.rigBtn)

        mirrorTypeLayout = QtWidgets.QHBoxLayout()
        mirrorTypeLayout.setAlignment(QtCore.Qt.AlignLeft)
        mirrorTypeLayout.setSpacing(1)
        mirrorTypeLayout.setContentsMargins(0, 0, 0, 0)
        mirrorTypeLayout.addWidget(self.mirrorTypeCombo)

        mirrorDirLayout = QtWidgets.QHBoxLayout()
        mirrorDirLayout.setAlignment(QtCore.Qt.AlignLeft)
        mirrorDirLayout.setSpacing(1)
        mirrorDirLayout.setContentsMargins(0, 0, 0, 0)
        mirrorDirLayout.addWidget(self.xAxisBtn)
        mirrorDirLayout.addWidget(self.yAxisBtn)
        mirrorDirLayout.addWidget(self.zAxisBtn)

        mirrorTRSLayout = QtWidgets.QHBoxLayout()
        mirrorTRSLayout.setSpacing(1)
        mirrorTRSLayout.setContentsMargins(0, 0, 0, 0)
        mirrorTRSLayout.addWidget(self.translateBtn)
        mirrorTRSLayout.addWidget(self.rotateBtn)
        mirrorTRSLayout.addWidget(self.scaleBtn)

        mirrorAxisLayout = QtWidgets.QHBoxLayout()
        mirrorAxisLayout.setSpacing(1)
        mirrorAxisLayout.setContentsMargins(0, 0, 0, 0)
        mirrorAxisLayout.addWidget(self.mirrorAxisField)
        mirrorAxisLayout.addWidget(self.mirrorAxisAddBtn)
        mirrorAxisLayout.addWidget(self.mirrorAxisRemoveBtn)

        mirrorSettingsLayout = QtWidgets.QFormLayout()
        mirrorSettingsLayout.setSpacing(1)
        mirrorSettingsLayout.setContentsMargins(5, 5, 5, 10)
        mirrorSettingsLayout.setFieldGrowthPolicy(
            QtWidgets.QFormLayout.ExpandingFieldsGrow)
        mirrorSettingsLayout.setLabelAlignment(QtCore.Qt.AlignLeft)
        mirrorSettingsLayout.addRow('Mirror Mode:', mirrorModeLayout)
        mirrorSettingsLayout.addRow('Mirror Type:', mirrorTypeLayout)
        mirrorSettingsLayout.addRow('Mirror TRS:', mirrorTRSLayout)
        mirrorSettingsLayout.addRow('Mirror Direction:', mirrorDirLayout)
        mirrorSettingsLayout.addRow('Mirror Across:', mirrorAxisLayout)

        mirrorSettingsGrp = QtWidgets.QGroupBox('')
        mirrorSettingsGrp.setLayout(mirrorSettingsLayout)

        # mirror functions
        self.mirrorBtn = QtWidgets.QPushButton('Mirror')
        self.mirrorBtn.setToolTip('Mirror based on the settings above. ')
        self.flipBtn = QtWidgets.QPushButton('Flip')
        self.flipBtn.setToolTip(
            'Flip poses based on the settings above. Will flip non-mirror nodes in place.'
        )

        self.flipCenteredBtn = QtWidgets.QPushButton('Flip Centered')
        self.flipCenteredBtn.setToolTip(
            'Flip the selected non-mirror nodes in place.')

        mirrorFunctionsLayout = QtWidgets.QVBoxLayout()
        mirrorFunctionsLayout.setSpacing(1)
        mirrorFunctionsLayout.setContentsMargins(5, 5, 5, 10)
        mirrorFunctionsLayout.addWidget(self.mirrorBtn)
        mirrorFunctionsLayout.addWidget(self.flipBtn)

        mirrorFunctionsLayout.addWidget(self.flipCenteredBtn)

        mirrorFunctionsGrp = QtWidgets.QGroupBox('')
        mirrorFunctionsGrp.setLayout(mirrorFunctionsLayout)

        # top layout
        mainLayout = QtWidgets.QVBoxLayout()
        mainLayout.setAlignment(QtCore.Qt.AlignTop)
        mainLayout.setSpacing(5)
        mainLayout.setContentsMargins(0, 0, 0, 0)

        mainLayout.addWidget(mirrorSettingsGrp)
        mainLayout.addWidget(mirrorFunctionsGrp)

        self.setLayout(mainLayout)
        self.setObjectName('AnimMirrorToolsView')
        self.setWindowTitle('Anim Mirror Tools')

        self.mirrorBtn.clicked.connect(self.mirror)
        self.flipBtn.clicked.connect(self.flip)
        self.flipCenteredBtn.clicked.connect(self.flipCentered)
        self.mirrorAxisAddBtn.clicked.connect(self.addMirrorAxisNode)
        self.mirrorAxisRemoveBtn.clicked.connect(self.removeMirrorAxisNode)
예제 #17
0
    def __init__(self, parent, tab=0):
        """Constructor for the OpenDialog."""
        super().__init__(parent)
        self.setWindowTitle(self.tr("Open Simulation"))
        self.setMinimumWidth(800)
        self.setMinimumHeight(800)

        m = 5
        containerLayout = QtWidgets.QHBoxLayout()
        containerLayout.setContentsMargins(m, m, m, m)
        self.setLayout(containerLayout)

        # ========================================
        # Left Bar + navigation
        self.leftBar = QtWidgets.QVBoxLayout()
        self.leftBar.setContentsMargins(0, 0, 0, 0)
        containerLayout.addLayout(self.leftBar)

        self.buttGroup = QtWidgets.QButtonGroup()
        self.buttGroup.setExclusive(True)

        self.leftBar.addWidget(self._make_nav_button(self.tr("Sims"),
                                                     NAV.sims))
        self.leftBar.addWidget(
            self._make_nav_button(self.tr("Recent"), NAV.recent))
        self.leftBar.addWidget(
            self._make_nav_button(self.tr("Browse"), NAV.filesystem))
        self.leftBar.addWidget(
            self._make_nav_button(self.tr("Network"), NAV.network))
        self.leftBar.addStretch(20)

        # ==================================================================================
        # Stack widget for main
        mainLayout = QtWidgets.QVBoxLayout()
        mainLayout.setContentsMargins(0, 0, 0, 0)
        containerLayout.addLayout(mainLayout)

        self.stackWidget = QtWidgets.QStackedWidget()
        mainLayout.addWidget(self.stackWidget, 200)

        # =================
        # Downloaded Sims
        self.downloadWidget = QtWidgets.QWidget()
        self.downloadLayout = QtWidgets.QVBoxLayout()
        self.downloadLayout.setContentsMargins(0, 0, 0, 0)
        self.downloadWidget.setLayout(self.downloadLayout)
        self.stackWidget.addWidget(self.downloadWidget)

        tbBrowse = QtWidgets.QToolBar()
        self.downloadLayout.addWidget(tbBrowse)

        self.txtUrl = QtWidgets.QLineEdit(self)
        self.txtUrl.setText(ts2.get_info().get('simulations_repo'))
        tbBrowse.addWidget(self.txtUrl)

        self.buttDownload = tbBrowse.addAction(self.tr("Download"),
                                               self.onDownload)

        self.treeSims = QtWidgets.QTreeWidget()
        self.downloadLayout.addWidget(self.treeSims)
        hitem = self.treeSims.headerItem()
        hitem.setText(C.name, "Name")
        hitem.setText(C.description, "Description")
        hitem.setText(C.file_name, "File")
        hitem.setText(C.file_path, "Path")
        self.treeSims.setColumnHidden(C.file_path, True)
        self.treeSims.header().setStretchLastSection(True)
        self.treeSims.itemDoubleClicked.connect(self.onTreeSimsItemDblClicked)

        # =====================================
        # Recent

        self.treeRecent = QtWidgets.QTreeWidget()
        self.stackWidget.addWidget(self.treeRecent)

        hitem = self.treeRecent.headerItem()
        hitem.setText(0, "Path")

        self.treeRecent.itemDoubleClicked.connect(
            self.onTreeRecentItemDblClicked)

        # =====================================
        # Browse
        self.filesModel = QtWidgets.QFileSystemModel()
        self.filesModel.setRootPath(QtCore.QDir.homePath())
        self.filesModel.setNameFilters(["*.ts2", "*.json"])
        self.filesModel.setNameFilterDisables(False)

        self.treeFiles = QtWidgets.QTreeView()
        self.treeFiles.setModel(self.filesModel)
        self.treeFiles.setColumnWidth(0, 300)
        self.treeFiles.setExpanded(
            self.filesModel.index(QtCore.QDir.homePath()), True)
        path = QtCore.QDir.home()
        while path.cdUp():
            self.treeFiles.setExpanded(self.filesModel.index(path.path()),
                                       True)

        self.stackWidget.addWidget(self.treeFiles)

        self.treeFiles.doubleClicked.connect(self.onTreeBrowseItemDblClicked)

        # =================================
        # Network
        self.networkWidget = QtWidgets.QWidget()
        self.networkLayout = QtWidgets.QVBoxLayout()
        self.networkLayout.setContentsMargins(0, 0, 0, 0)
        self.networkWidget.setLayout(self.networkLayout)
        self.stackWidget.addWidget(self.networkWidget)

        networkLabel = QtWidgets.QLabel(
            self.tr("Connect to simulation server"))
        networkLabel.setStyleSheet("font-size: 15px; font-weight: bold;")
        labelLayout = QtWidgets.QHBoxLayout()
        labelLayout.addStretch(1)
        labelLayout.addWidget(networkLabel)
        labelLayout.addStretch(1)
        self.networkLayout.addLayout(labelLayout)

        tbNetworkBarLayout = QtWidgets.QHBoxLayout()
        self.networkLayout.addLayout(tbNetworkBarLayout)

        tbNetworkBarLayout.addWidget(QtWidgets.QLabel(self.tr("Host:")))
        self.networkServer = QtWidgets.QLineEdit(self)
        self.networkServer.setText("localhost")
        tbNetworkBarLayout.addWidget(self.networkServer, 2)
        tbNetworkBarLayout.addWidget(QtWidgets.QLabel(self.tr("Port:")))
        self.networkPort = QtWidgets.QLineEdit(self)
        self.networkPort.setInputMask("00000")
        self.networkPort.setText("22222")
        tbNetworkBarLayout.addWidget(self.networkPort, 1)

        self.connectAction = QtWidgets.QAction(self.tr("Connect"))
        self.connectAction.triggered.connect(self.onConnect)
        btn = QtWidgets.QToolButton()
        btn.setDefaultAction(self.connectAction)
        self.buttConnect = tbNetworkBarLayout.addWidget(btn)
        self.networkLayout.addStretch(1)

        # =================================
        # Bottom status
        self.statusBar = widgets.StatusBar()
        mainLayout.addWidget(self.statusBar, 0)
        if settings.debug:
            self.statusBar.showMessage(settings.simulationsDir)

        self.buttGroup.buttonToggled.connect(self.onNavButtClicked)
        self.buttGroup.button(tab).setChecked(True)
예제 #18
0
    def _build(self):
        self.setMaximumWidth(240)
        _layout = QtWidgets.QVBoxLayout(self)
        _layout.setSpacing(0)
        _layout.setContentsMargins(0,0,0,0)

        # # asset task step
        # self.step_widget = QtWidgets.QFrame()
        # _layout.addWidget(self.step_widget)
        # self.step_layout = QtWidgets.QVBoxLayout(self.step_widget)
        # self.step_layout.setSpacing(0)
        # self.step_layout.setContentsMargins(0,0,0,0)

        # self.tab_widget = QtWidgets.QTabWidget()
        # self.step_layout.addWidget(self.tab_widget)
        # self.tab_widget.setStyleSheet("QTabBar::tab{height:24px;}")

        # asset frame
        self.asset_widget = QtWidgets.QFrame()
        # self.tab_widget.addTab(self.asset_widget, u"资产")
        _layout.addWidget(self.asset_widget)
        self.asset_layout = QtWidgets.QVBoxLayout(self.asset_widget)
        self.asset_layout.setSpacing(0)
        self.asset_layout.setContentsMargins(0,0,0,0)
        self.asset_step_name_button = QtWidgets.QPushButton()
        self.asset_step_name_button.setObjectName("title_button")
        self.asset_step_name_button.setMaximumHeight(25)
        self.asset_step_name_button.setText(language.word("asset"))
        self.asset_step_name_button.setIcon(QtGui.QIcon(resource.get("icons","asset.png")))
        self.asset_layout.addWidget(self.asset_step_name_button)
        self.asset_step_checkbox_widget = QtWidgets.QFrame()
        self.asset_step_checkbox_layout = QtWidgets.QVBoxLayout(self.asset_step_checkbox_widget)
        self.asset_step_checkbox_layout.setContentsMargins(20,0,0,0)
        self.asset_layout.addWidget(self.asset_step_checkbox_widget)
        self.asset_layout.addStretch(True)
        
        # assembly
        self.assembly_widget = QtWidgets.QFrame()
        # self.tab_widget.addTab(self.assembly_widget, u"场景")
        _layout.addWidget(self.assembly_widget)
        self.assembly_layout = QtWidgets.QVBoxLayout(self.assembly_widget)
        self.assembly_layout.setSpacing(0)
        self.assembly_layout.setContentsMargins(0,0,0,0)
        self.assembly_step_name_button = QtWidgets.QPushButton()
        self.assembly_step_name_button.setObjectName("title_button")
        self.assembly_step_name_button.setMaximumHeight(25)
        self.assembly_step_name_button.setText(language.word("assembly"))
        self.assembly_step_name_button.setIcon(QtGui.QIcon(resource.get("icons","assembly.png")))
        self.assembly_layout.addWidget(self.assembly_step_name_button)
        self.assembly_step_checkbox_widget = QtWidgets.QFrame()
        self.assembly_step_checkbox_layout = QtWidgets.QVBoxLayout(self.assembly_step_checkbox_widget)
        self.assembly_step_checkbox_layout.setContentsMargins(20,0,0,0)
        self.assembly_layout.addWidget(self.assembly_step_checkbox_widget)
        self.assembly_layout.addStretch(True)

        # sequence
        self.sequence_widget = QtWidgets.QFrame()
        # self.tab_widget.addTab(self.sequence_widget, u"场次")
        _layout.addWidget(self.sequence_widget)
        self.sequence_layout = QtWidgets.QVBoxLayout(self.sequence_widget)
        self.sequence_layout.setSpacing(0)
        self.sequence_layout.setContentsMargins(0,0,0,0)
        self.sequence_step_name_button = QtWidgets.QPushButton()
        self.sequence_step_name_button.setObjectName("title_button")
        self.sequence_step_name_button.setMaximumHeight(25)
        self.sequence_step_name_button.setText(language.word("sequence"))
        self.sequence_step_name_button.setIcon(QtGui.QIcon(resource.get("icons","sequence.png")))
        self.sequence_layout.addWidget(self.sequence_step_name_button)
        self.sequence_step_checkbox_widget = QtWidgets.QFrame()
        self.sequence_step_checkbox_layout = QtWidgets.QVBoxLayout(self.sequence_step_checkbox_widget)
        self.sequence_step_checkbox_layout.setContentsMargins(20,0,0,0)
        self.sequence_layout.addWidget(self.sequence_step_checkbox_widget)
        self.sequence_layout.addStretch(True)

        # shot
        self.shot_widget = QtWidgets.QFrame()
        # self.tab_widget.addTab(self.shot_widget, u"镜头")
        _layout.addWidget(self.shot_widget)
        self.shot_layout = QtWidgets.QVBoxLayout(self.shot_widget)
        self.shot_layout.setSpacing(0)
        self.shot_layout.setContentsMargins(0,0,0,0)
        self.shot_step_name_button = QtWidgets.QPushButton()
        self.shot_step_name_button.setObjectName("title_button")
        self.shot_step_name_button.setMaximumHeight(25)
        self.shot_step_name_button.setText(language.word("shot"))
        self.shot_step_name_button.setIcon(QtGui.QIcon(resource.get("icons","shot.png")))
        self.shot_layout.addWidget(self.shot_step_name_button)
        self.shot_step_checkbox_widget = QtWidgets.QFrame()
        self.shot_step_checkbox_layout = QtWidgets.QVBoxLayout(self.shot_step_checkbox_widget)
        self.shot_step_checkbox_layout.setContentsMargins(20,0,0,0)
        self.shot_layout.addWidget(self.shot_step_checkbox_widget)
        self.shot_layout.addStretch(True)

        # # step checkbox widget
        # self.step_checkbox_widget = QtWidgets.QFrame()
        # self.step_checkbox_layout = QtWidgets.QVBoxLayout(self.step_checkbox_widget)
        # self.step_checkbox_layout.setContentsMargins(20,0,0,0)
        self.step_group = QtWidgets.QButtonGroup(self)
        # self.step_layout.addWidget(self.step_checkbox_widget)
        _layout.addStretch(True)
예제 #19
0
    def _build(self):
        self.setMaximumWidth(200)
        _layout = QtWidgets.QVBoxLayout(self)
        _layout.setSpacing(0)
        _layout.setContentsMargins(0, 0, 0, 0)

        # asset task step
        self.step_widget = QtWidgets.QFrame()
        _layout.addWidget(self.step_widget)
        self.step_layout = QtWidgets.QVBoxLayout(self.step_widget)
        self.step_layout.setSpacing(0)
        self.step_layout.setContentsMargins(0, 0, 0, 0)

        # asset
        self.asset_step_name_button = QtWidgets.QPushButton()
        self.asset_step_name_button.setObjectName("title_button")
        self.asset_step_name_button.setMaximumHeight(25)
        self.asset_step_name_button.setText(language.word("asset"))
        self.asset_step_name_button.setIcon(
            QtGui.QIcon(resource.get("icons", "asset.png")))
        self.step_layout.addWidget(self.asset_step_name_button)
        self.asset_step_checkbox_widget = QtWidgets.QFrame()
        self.asset_step_checkbox_layout = QtWidgets.QVBoxLayout(
            self.asset_step_checkbox_widget)
        self.asset_step_checkbox_layout.setContentsMargins(20, 0, 0, 0)
        self.step_layout.addWidget(self.asset_step_checkbox_widget)

        # assembly
        self.assembly_step_name_button = QtWidgets.QPushButton()
        self.assembly_step_name_button.setObjectName("title_button")
        self.assembly_step_name_button.setMaximumHeight(25)
        self.assembly_step_name_button.setText(language.word("assembly"))
        self.assembly_step_name_button.setIcon(
            QtGui.QIcon(resource.get("icons", "assembly.png")))
        self.step_layout.addWidget(self.assembly_step_name_button)
        self.assembly_step_checkbox_widget = QtWidgets.QFrame()
        self.assembly_step_checkbox_layout = QtWidgets.QVBoxLayout(
            self.assembly_step_checkbox_widget)
        self.assembly_step_checkbox_layout.setContentsMargins(20, 0, 0, 0)
        self.step_layout.addWidget(self.assembly_step_checkbox_widget)

        # sequence
        self.sequence_step_name_button = QtWidgets.QPushButton()
        self.sequence_step_name_button.setObjectName("title_button")
        self.sequence_step_name_button.setMaximumHeight(25)
        self.sequence_step_name_button.setText(language.word("sequence"))
        self.sequence_step_name_button.setIcon(
            QtGui.QIcon(resource.get("icons", "sequence.png")))
        self.step_layout.addWidget(self.sequence_step_name_button)
        self.sequence_step_checkbox_widget = QtWidgets.QFrame()
        self.sequence_step_checkbox_layout = QtWidgets.QVBoxLayout(
            self.sequence_step_checkbox_widget)
        self.sequence_step_checkbox_layout.setContentsMargins(20, 0, 0, 0)
        self.step_layout.addWidget(self.sequence_step_checkbox_widget)

        # shot
        self.shot_step_name_button = QtWidgets.QPushButton()
        self.shot_step_name_button.setObjectName("title_button")
        self.shot_step_name_button.setMaximumHeight(25)
        self.shot_step_name_button.setText(language.word("shot"))
        self.shot_step_name_button.setIcon(
            QtGui.QIcon(resource.get("icons", "shot.png")))
        self.step_layout.addWidget(self.shot_step_name_button)
        self.shot_step_checkbox_widget = QtWidgets.QFrame()
        self.shot_step_checkbox_layout = QtWidgets.QVBoxLayout(
            self.shot_step_checkbox_widget)
        self.shot_step_checkbox_layout.setContentsMargins(20, 0, 0, 0)
        self.step_layout.addWidget(self.shot_step_checkbox_widget)

        # # step checkbox widget
        # self.step_checkbox_widget = QtWidgets.QFrame()
        # self.step_checkbox_layout = QtWidgets.QVBoxLayout(self.step_checkbox_widget)
        # self.step_checkbox_layout.setContentsMargins(20,0,0,0)
        self.step_group = QtWidgets.QButtonGroup(self)
        # self.step_layout.addWidget(self.step_checkbox_widget)
        _layout.addStretch(True)