Example #1
0
    def setupUI(self):
        mainLayout = UI.VertBox()
        mainBox = UI.TitledBox(title='Mappings')
        mainBoxLayout = UI.HorBox()

        unmappedLayout = UI.VertBox()
        separator = UI.Separator(d=1)
        mapBtnLayout = UI.VertBox()
        mapBtnLayout.setAlignment(QtCore.Qt.AlignVCenter)
        separator1 = UI.Separator(d=1)
        importedLayout = UI.VertBox()

        mainBoxLayout.addLayout(unmappedLayout)
        mainBoxLayout.addWidget(separator)
        mainBoxLayout.addLayout(mapBtnLayout)
        mainBoxLayout.addWidget(separator1)
        mainBoxLayout.addLayout(importedLayout)

        #########
        label = QtWidgets.QLabel('Unmapped influences')
        label.setAlignment(QtCore.Qt.AlignHCenter)

        self.existingInfluences = QtWidgets.QListWidget()
        unmappedLayout.addWidget(label)
        unmappedLayout.addWidget(self.existingInfluences)
        ###############
        mapBtn = QtWidgets.QPushButton('>>>')
        mapBtn.setFixedWidth(30)
        mapBtn.released.connect(self.setInfluenceMapping)
        mapBtnLayout.addWidget(mapBtn)

        unmapBtn = QtWidgets.QPushButton('<<<')
        unmapBtn.setFixedWidth(30)
        unmapBtn.released.connect(self.resetInfluenceMapping)
        mapBtnLayout.addWidget(unmapBtn)

        #############
        label = QtWidgets.QLabel('Available imported influences')
        label.setAlignment(QtCore.Qt.AlignHCenter)
        self.importedInfluences = QtWidgets.QListWidget()
        importedLayout.addWidget(label)
        importedLayout.addWidget(self.importedInfluences)
        ################
        okBtn = QtWidgets.QPushButton('Ok')
        okBtn.clicked.connect(self.accept)

        mainBox.layout.addLayout(mainBoxLayout)
        mainLayout.addWidget(mainBox)
        mainLayout.addWidget(okBtn)
        self.setLayout(mainLayout)
Example #2
0
    def setup_ui(self):
        """
        Sets up the UI for the tool
        """
        central_widget = QWidget()
        central_widget.setFixedWidth(300)
        main_layout = UI.VertBox()
        # The four main widgets: Character , Blueprints, Skeleton, Rigging
        main_layout.addWidget(self.char_widget)
        main_layout.addWidget(self.bp_widget)
        main_layout.addWidget(self.skeleton_widget)
        main_layout.addWidget(self.rig_widget)

        # create the char layout ui
        self.add_char_ui()
        # create the blueprints layout ui
        self.add_blueprints_ui()
        # skeleton ui
        self.add_skeleton_ui()
        # rigging ui
        self.add_rigging_ui()

        self.info_dock = UI.InfoDock()
        self.addDockWidget(Qt.BottomDockWidgetArea, self.info_dock)  # dockWidget

        central_widget.setLayout(main_layout)
        self.setCentralWidget(central_widget)
Example #3
0
    def setupUI(self):
        centralWidget = QtWidgets.QWidget()

        mainLayout = UI.VertBox()
        mainBox = UI.TitledBox(title='Skin IO')

        skinFolderLayout = UI.HorBox()
        self.skinFolderEdit = UI.LabelEditWidget(label='Skin Folder')
        skinFolderBtn = UI.ButtonB('<<')

        skinFolderLayout.addWidget(self.skinFolderEdit)
        skinFolderLayout.addWidget(skinFolderBtn)

        exportBtn = UI.ButtonB('Export')
        importBtn = UI.ButtonB('Import')

        exportBtn.clicked.connect(self.exportSkin)
        importBtn.clicked.connect(self.importSkin)
        skinFolderBtn.clicked.connect(self.setSkinsFolder)

        mainBox.layout.addLayout(skinFolderLayout)
        mainBox.layout.addWidget(exportBtn)
        mainBox.layout.addWidget(importBtn)

        mainLayout.addWidget(mainBox)

        centralWidget.setLayout(mainLayout)
        self.setCentralWidget(centralWidget)
Example #4
0
    def __init__(self, parent=getMayaWindow()):
        super(CharBrowserUI, self).__init__(parent)

        #
        self.repo_path = 'c:\\repo\\StarIsland_content\\'
        self.char_list = self.get_dirs(self.repo_path)
        self.back_folders_btn = []
        self.favorite_folders = []
        # UI members
        self.char_layout = UI.VertBox()
        self.back_folders_layout = UI.HorBox()
        self.back_folders_layout.setAlignment(QtCore.Qt.AlignLeft)
        self.char_combo = QtWidgets.QComboBox()
        self.char_combo.setMinimumHeight(30)
        self.char_combo.setEditable(1)
        self.char_combo.lineEdit().setReadOnly(1)
        self.char_combo.lineEdit().setAlignment(QtCore.Qt.AlignCenter)
        self.action_btn_layout = QtWidgets.QHBoxLayout()
        self.set_project_btn = UI.ActionButton('Set Project')
        self.open_file_btn = UI.ActionButton('Open File')
        self.save_file_btn = UI.ActionButton('Save File')

        self.char_browser = QtWidgets.QListWidget()
        #
        self.setWindowTitle('Staramba Char Browser')
        self.setObjectName(CharBrowserUIWin)

        self.setupUI()
        self.resize(400, 500)
    def setupUI(self):
        centralWidget = qt_handlers.qWidget()

        mainLayout = UI.VertBox()
        mainBox = UI.TitledBox(title='Controllers Util')

        nameLayout = UI.HorBox()
        self.ctrlNameEdit = UI.LabelEditWidget(label='Name')
        pickNameBtn = UI.ButtonB('<<')
        self.ctrlTargetPicker = UI.ObjectPickerWidget(label='Target')

        ctrlLayout = UI.HorBox()
        ctrlLayout.setAlignment(QtCore.Qt.AlignLeft)
        shapes = ['circle', 'box', 'square', 'joint']
        self.ctrlShape = UI.LabelComboWidget(label='Shape')
        # self.ctrlShape.setMaximumWidth(140)
        self.ctrlShape.combo.addItems(shapes)
        attrSeparator = UI.Separator(d=1)
        self.ctrlScaleSlider = UI.FloatSpinWidget(label='Scale')
        self.ctrlScaleSlider.spin.setValue(1.0)
        ctrlLayout.addWidget(self.ctrlShape)
        ctrlLayout.addWidget(attrSeparator)
        ctrlLayout.addWidget(self.ctrlScaleSlider)

        separator = UI.Separator()
        btnLayout = UI.HorBox()
        newBtn = UI.ButtonB('create')
        exportBtn = UI.ButtonB('export')
        importBtn = UI.ButtonB('import')

        btnLayout.addWidget(exportBtn)
        btnLayout.addWidget(importBtn)

        separator1 = UI.Separator()
        titleBar = UI.TitleBar(title='Library')
        separator2 = UI.Separator()

        nameLayout.addWidget(self.ctrlNameEdit)
        nameLayout.addWidget(pickNameBtn)
        mainBox.layout.addLayout(nameLayout)
        mainBox.layout.addWidget(self.ctrlTargetPicker)
        mainBox.layout.addLayout(ctrlLayout)
        mainBox.layout.addWidget(separator)
        mainBox.layout.addWidget(newBtn)
        mainBox.layout.addWidget(separator1)
        mainBox.layout.addWidget(titleBar)
        mainBox.layout.addWidget(separator2)
        mainBox.layout.addLayout(btnLayout)

        newBtn.released.connect(self.createCtrl)
        pickNameBtn.released.connect(self.setCtrlName)
        exportBtn.released.connect(self.exportShape)
        importBtn.released.connect(self.importShape)

        mainLayout.addWidget(mainBox)

        centralWidget.setLayout(mainLayout)
        self.setCentralWidget(centralWidget)
Example #6
0
    def add_rigging_ui(self):
        layout = UI.VertBox()

        rig_box = UI.TitledBox(title='    Rig')
        create_rig_btn = UI.ButtonB('RIG IT')
        rig_box.layout.addWidget(create_rig_btn)

        layout.addWidget(rig_box)
        self.rig_widget.setLayout(layout)
Example #7
0
    def add_skeleton_ui(self):
        layout = UI.VertBox()

        skeleton_box = UI.TitledBox(title='    Skeleton')
        create_skeleton_btn = UI.ButtonB('Create')
        skeleton_box.layout.addWidget(create_skeleton_btn)

        layout.addWidget(skeleton_box)
        create_skeleton_btn.clicked.connect(self.buildSkeleton)
        self.skeleton_widget.setLayout(layout)
Example #8
0
    def setupRiggingTab(self):
        self.rigFunctionsInfo = self.getFunctions(rig_utils)
        print self.rigFunctionsInfo

        self.riggingWidget = QtWidgets.QWidget()
        layout = UI.VertBox()

        layout.setContentsMargins(5, 5, 5, 5)

        for category in self.rigFunctionsInfo.keys():
            categoryWidget = QtWidgets.QWidget()

            categoryLayout = UI.VertBox()
            categoryWidget.setLayout(categoryLayout)

            label = QtWidgets.QLabel(category)
            label.setAlignment(QtCore.Qt.AlignRight)

            separator = UI.Separator()
            gridLayout = QtWidgets.QGridLayout()
            gridLayout.setAlignment(QtCore.Qt.AlignLeft)

            label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignCenter)

            for item in self.rigFunctionsInfo[category]:
                btnName = self.niceName(item[0])
                btn = QtWidgets.QPushButton(btnName)
                # btn.setFixedHeight(20)
                btn.clicked.connect(
                    functools.partial(self.executeTool, item[1]))
                i = self.rigFunctionsInfo[category].index(item)
                gridLayout.addWidget(btn, i / 4, i % 4)

            categoryLayout.addWidget(label)
            categoryLayout.addWidget(separator)
            categoryLayout.addLayout(gridLayout)
            categoryWidget.setFixedHeight(categoryWidget.sizeHint().height())
            layout.addWidget(categoryWidget)

        self.riggingWidget.setLayout(layout)
        self.riggingWidget.setFixedHeight(
            self.riggingWidget.sizeHint().height())
        self.tabs.addTab(self.riggingWidget, 'Rigging')
    def add_blueprints_ui(self):
        """
        Sets up the Blueprint tab UI
        Dynamically creates the UI for the creation of the blueprints by getting a list of python files holding the
         blueprints from modules/blueprint
        Currently each blueprint module gets a button
        """
        blueprints_layout = UI.VertBox()
        self.bp_box = UI.TitledBox(title='Blueprints')

        bp_ui_layout = QGridLayout()
        blueprints_list = self.get_bp_files_list()

        if blueprints_list:
            num_bp = len(blueprints_list)
            for i in range(num_bp):
                if blueprints_list[
                        i] != 'blueprint':  # we dont need to create an UI for the blueprint base class
                    python_module = self.import_python_module(
                        blueprints_list[i])
                    if python_module:
                        module_ui = self.create_bp_ui(
                            mod_name=python_module.BLUEPRINT_TYPE, index=i)
                        self.bp_modules_ui.append(module_ui)

        for i, m in enumerate(self.bp_modules_ui):
            bp_ui_layout.addWidget(m, i / 3, i % 3)

        btn_layout = UI.HorBox()
        btn_layout.setAlignment(Qt.AlignRight)

        edit_bp_btn = UI.ButtonB('Edit')
        delete_bp_btn = UI.ButtonB('Delete')
        delete_bp_btn.setStyleSheet(
            "background-color: rgb(250,10,20); font-weight: bold")
        btn_layout.addWidget(edit_bp_btn)
        btn_layout.addWidget(delete_bp_btn)

        self.bp_settings_ui_layout = UI.HorBox()

        self.bp_box.layout.addLayout(bp_ui_layout)
        self.bp_box.layout.addLayout(self.bp_settings_ui_layout)
        separator = UI.Separator()
        self.bp_box.layout.addWidget(separator)
        self.bp_box.layout.addWidget(self.bp_list)
        self.bp_box.layout.addLayout(btn_layout)

        blueprints_layout.addWidget(self.bp_box)
        self.bp_widget.setLayout(blueprints_layout)

        edit_bp_btn.released.connect(self.editSelectedBlueprint)
        self.bp_list.doubleClicked.connect(self.deselect_bp)
    def add_char_ui(self):
        """
        Sets up the UI for the character.

        Important:
        char_box.layout  - the layout where all the widgets should be added
        """
        char_layout = UI.VertBox()

        char_box = UI.TitledBox(title='Character')

        # self.char_settings = char_settings.CharSettingsWidget()
        # name_layout = UI.HorBox()
        self.char_name = UI.LabelEditWidget(label='Character name:',
                                            label_size=85)
        self.char_name.edit.setReadOnly(1)
        self.char_name.hide()
        #
        # name_layout.addWidget(self.char_name)
        # name_layout.addWidget(self.char_name_suffix)
        #
        # title = UI.TitleBar(title='Name')
        btn_layout = UI.HorBox()
        new_char_btn = UI.ButtonB('NEW')
        new_char_btn.setStyleSheet(
            "background-color: rgb(0,100,200); font-weight: bold")
        delete_char_btn = UI.ButtonB('Rename')
        btn_layout.addWidget(new_char_btn)
        btn_layout.addWidget(delete_char_btn)

        separator = UI.Separator()

        # char_box.layout.addWidget(self.char_settings)
        # char_box.layout.addWidget(title)
        # char_box.layout.addLayout(name_layout)
        char_box.layout.addWidget(self.char_name)
        char_box.layout.addWidget(separator)
        char_box.layout.addLayout(btn_layout)

        char_layout.addWidget(char_box)

        new_char_btn.clicked.connect(self.open_char_dialog)

        self.char_widget.setLayout(char_layout)
Example #11
0
    def setupUI(self):
        centralWidget = QtWidgets.QWidget()

        mainLayout = UI.VertBox()
        mainBox = UI.TitledBox(title='Skin IO')

        skinFolderLayout = UI.HorBox()
        skinFolderBtn = UI.ButtonB('...')

        skinFolderLayout.addWidget(self.skinFolderEdit)
        skinFolderLayout.addWidget(skinFolderBtn)

        gridLayout = QtWidgets.QGridLayout()
        # titleMesh = QtWidgets.QLabel('Meshes')
        titleSkins = QtWidgets.QLabel('Skin Files')
        # gridLayout.addWidget(titleMesh, 0, 0)
        gridLayout.addWidget(titleSkins, 0, 0)
        # gridLayout.addWidget(self.meshesListWidget, 1, 0)
        gridLayout.addWidget(self.skinsListWidget, 1, 0)
        # self.meshesListWidget.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)
        self.skinsListWidget.setSelectionMode(
            QtWidgets.QAbstractItemView.ExtendedSelection)

        exportBtn = UI.ButtonB('Export')
        importBtn = UI.ButtonB('Import')

        exportBtn.clicked.connect(self.exportSkin)
        importBtn.clicked.connect(self.importSkin)
        skinFolderBtn.clicked.connect(self.browseSkinsFolder)

        mainBox.layout.addLayout(skinFolderLayout)
        mainBox.layout.addLayout(gridLayout)
        # mainBox.layout.addWidget(self.skinsListWidget)

        mainBox.layout.addWidget(self.useMeshName)
        mainBox.layout.addWidget(exportBtn)
        mainBox.layout.addWidget(importBtn)

        mainLayout.addWidget(mainBox)

        centralWidget.setLayout(mainLayout)
        self.setCentralWidget(centralWidget)
Example #12
0
    def add_char_ui(self):
        """
        Sets up the UI for the character.

        Important:
        char_box.layout  - the layout where all the widgets should be added
        """
        char_layout = UI.VertBox()

        char_box = UI.TitledBox(title='Character')

        self.char_settings = char_settings.CharSettingsWidget()
        name_layout = UI.HorBox()
        self.char_name = UI.LabelEditWidget(label='Character name:', label_size=85, edit_size=80)
        self.char_name_suffix = UI.LabelEditWidget(label='+', label_size=10, edit_size=40)
        self.char_name_suffix.edit.setText('_' + MRIGLOBALS.CHAR)

        name_layout.addWidget(self.char_name)
        name_layout.addWidget(self.char_name_suffix)

        title = UI.TitleBar(title='Name')
        btn_layout = UI.HorBox()
        new_char_btn = UI.ButtonB('NEW')
        new_char_btn.setStyleSheet("background-color: rgb(0,100,200); font-weight: bold")
        delete_char_btn = UI.ButtonB('Rename')
        btn_layout.addWidget(new_char_btn)
        btn_layout.addWidget(delete_char_btn)

        separator = UI.Separator()

        char_box.layout.addWidget(self.char_settings)
        char_box.layout.addWidget(title)
        char_box.layout.addLayout(name_layout)
        char_box.layout.addWidget(separator)
        char_box.layout.addLayout(btn_layout)

        char_layout.addWidget(char_box)

        new_char_btn.clicked.connect(self.create_character)

        self.char_widget.setLayout(char_layout)
Example #13
0
    def setupUI(self):
        central_widget = QtWidgets.QWidget()

        main_layout = UI.VertBox()
        main_box = UI.TitledBox(title='Browse')

        if len(self.char_list) > 0:
            self.char_combo.addItems(self.char_list)

        self.char_combo.activated[str].connect(self.char_combo_changed)

        separator = UI.Separator()

        char_browser_layout = UI.HorBox()
        self.char_browser.hide()
        self.char_browser.itemDoubleClicked.connect(
            self.char_browser_double_clicked)
        char_browser_layout.addWidget(self.char_browser)

        self.char_layout.addWidget(self.char_combo)
        # self.char_layout.addWidget(self.main_dir)
        self.char_layout.addWidget(separator)
        self.char_layout.addLayout(self.back_folders_layout)
        self.char_layout.addLayout(char_browser_layout)

        self.set_project_btn.clicked.connect(self.set_project_clicked)
        self.open_file_btn.clicked.connect(self.open_file_clicked)
        self.save_file_btn.clicked.connect(self.save_file_clicked)

        self.action_btn_layout.addWidget(self.set_project_btn)
        self.action_btn_layout.addWidget(self.open_file_btn)
        self.action_btn_layout.addWidget(self.save_file_btn)

        main_box.layout.addLayout(self.char_layout)
        main_box.layout.addLayout(self.action_btn_layout)
        main_layout.addWidget(main_box)

        central_widget.setLayout(main_layout)
        self.setCentralWidget(central_widget)

        self.char_combo_changed(self.char_combo.currentText())