Example #1
0
    def ui(self):
        super(JointsLabelDialog, self).ui()

        name_label = label.BaseLabel('Specify label sides', parent=self)
        left_side_label = label.BaseLabel('Left Side: ', parent=self)
        self._left_side_line = lineedit.BaseLineEdit(parent=self)
        right_side_label = label.BaseLabel('Right Side: ', parent=self)
        self._right_side_line = lineedit.BaseLineEdit(parent=self)

        info_widget = message.BaseMessage(
            'You can disable auto joint label in tool\n button options (right click on it', parent=self).info()

        grid_layout = layouts.GridLayout()
        grid_layout.addWidget(name_label, 0, 0, 1, 2)
        grid_layout.addWidget(left_side_label, 1, 0, Qt.AlignRight)
        grid_layout.addWidget(self._left_side_line, 1, 1)
        grid_layout.addWidget(right_side_label, 2, 0, Qt.AlignRight)
        grid_layout.addWidget(self._right_side_line, 2, 1)

        self._button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)

        self.main_layout.addLayout(grid_layout)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addWidget(self._button_box)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addWidget(info_widget)
Example #2
0
    def ui(self):

        self.color_buttons = list()

        super(BaseColorDialog, self).ui()

        grid_layout = layouts.GridLayout()
        grid_layout.setAlignment(Qt.AlignTop)
        self.main_layout.addLayout(grid_layout)
        color_index = 0
        for i in range(0, 4):
            for j in range(0, 8):
                color_btn = QPushButton()
                color_btn.setMinimumHeight(35)
                color_btn.setMinimumWidth(35)
                self.color_buttons.append(color_btn)
                color_btn.setStyleSheet(
                    'background-color:rgb(%s,%s,%s);' %
                    (self.maya_colors[color_index][0] * 255,
                     self.maya_colors[color_index][1] * 255,
                     self.maya_colors[color_index][2] * 255))
                grid_layout.addWidget(color_btn, i, j)
                color_index += 1
        selected_color_layout = layouts.HorizontalLayout()
        self.main_layout.addLayout(selected_color_layout)
        self.color_slider = QSlider(Qt.Horizontal)
        self.color_slider.setMinimum(0)
        self.color_slider.setMaximum(31)
        self.color_slider.setValue(2)
        self.color_slider.setStyleSheet(
            "QSlider::groove:horizontal {border: 1px solid #999999;height: 25px; /* the groove expands "
            "to the size of the slider by default. by giving it a height, it has a fixed size */background: "
            "qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);margin: 2px 0;}"
            "QSlider::handle:horizontal {background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4,"
            " stop:1 #8f8f8f);border: 1px solid #5c5c5c;width: 10px;margin: -2px 0; /* handle is placed by "
            "default on the contents rect of the groove. Expand outside the groove */border-radius: 1px;}"
        )
        selected_color_layout.addWidget(self.color_slider)

        color_label_layout = layouts.HorizontalLayout(margins=(10, 10, 10, 10))
        self.main_layout.addLayout(color_label_layout)

        self.color_lbl = QLabel()
        self.color_lbl.setStyleSheet(
            "border: 1px solid black; background-color:rgb(0, 0, 0);")
        self.color_lbl.setMinimumWidth(45)
        self.color_lbl.setMaximumWidth(80)
        self.color_lbl.setMinimumHeight(80)
        self.color_lbl.setAlignment(Qt.AlignCenter)
        color_label_layout.addWidget(self.color_lbl)

        bottom_layout = layouts.HorizontalLayout()
        bottom_layout.setAlignment(Qt.AlignRight)
        self.main_layout.addLayout(bottom_layout)

        self.ok_btn = QPushButton('Ok')
        self.cancel_btn = QPushButton('Cancel')
        bottom_layout.addLayout(dividers.DividerLayout())
        bottom_layout.addWidget(self.ok_btn)
        bottom_layout.addWidget(self.cancel_btn)
Example #3
0
    def __init__(self, overlay):
        super(DropOverlayCross, self).__init__(overlay.parentWidget())

        self._overlay = overlay
        self._widgets = None

        self.setWindowFlags(Qt.Tool | Qt.FramelessWindowHint)
        self.setWindowTitle('DropOverlayCross')
        self.setAttribute(Qt.WA_TranslucentBackground)

        self._grid = layouts.GridLayout(spacing=0, margins=(0, 0, 0, 0))

        bl1 = QBoxLayout(QBoxLayout.TopToBottom)
        bl1.setContentsMargins(0, 0, 0, 0)
        bl1.setSpacing(0)
        self.setLayout(bl1)

        bl2 = QBoxLayout(QBoxLayout.LeftToRight)
        bl2.setContentsMargins(0, 0, 0, 0)
        bl2.setSpacing(0)

        bl1.addStretch(1)
        bl1.addLayout(bl2)
        bl2.addStretch(1)
        bl2.addLayout(self._grid, 0)
        bl2.addStretch(1)
        bl1.addStretch(1)
Example #4
0
    def __init__(self, title='', animation_duration=300, parent=None):
        super(ExpandableLine, self).__init__(parent=parent)

        self._animation_duration = animation_duration

        base_layout = layouts.GridLayout(margins=(0, 0, 0, 0))
        base_layout.setVerticalSpacing(0)
        self.setLayout(base_layout)

        self.expand_btn = QToolButton()
        self.expand_btn.setText(str(title))
        self.expand_btn.setStyleSheet('QToolButton { border : none; }')
        self.expand_btn.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        self.expand_btn.setArrowType(Qt.ArrowType.RightArrow)
        self.expand_btn.setCheckable(True)
        self.expand_btn.setChecked(True)

        header_line = QFrame()
        header_line.setFrameShape(QFrame.HLine)
        header_line.setFrameShadow(QFrame.Sunken)
        header_line.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)

        self.content_area = QScrollArea()
        self.content_area.setStyleSheet('QScrollArea { border: none;}')
        self.content_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        self.content_area.setMaximumHeight(0)
        self.content_area.setMinimumHeight(0)

        self.toggle_anim = QParallelAnimationGroup()
        self.toggle_anim.addAnimation(QPropertyAnimation(self, 'minimumHeight'))
        self.toggle_anim.addAnimation(QPropertyAnimation(self, 'maximumHeight'))
        self.toggle_anim.addAnimation(QPropertyAnimation(self.content_area, 'maximumHeight'))

        row = 0
        base_layout.addWidget(self.expand_btn, row, 0, 1, 1, Qt.AlignLeft)
        base_layout.addWidget(header_line, row, 2, 1, 1)
        row += 1
        base_layout.addWidget(self.content_area, row, 0, 1, 3)

        def expand_view(checked):
            arrow_type = Qt.DownArrow if checked else Qt.RightArrow
            direction = QAbstractAnimation.Forward if checked else QAbstractAnimation.Backward
            self.expand_btn.setArrowType(arrow_type)
            self.toggle_anim.setDirection(direction)
            self.toggle_anim.start()

        # === SIGNALS === #
        self.expand_btn.toggled.connect(expand_view)

        expand_view(True)
Example #5
0
    def ui(self):
        super(CheckBoxExample, self).ui()

        maya_icon = tpDcc.ResourcesMgr().icon('maya')
        nuke_icon = tpDcc.ResourcesMgr().icon('nuke')
        houdini_icon = tpDcc.ResourcesMgr().icon('houdini')

        grid_lyt = layouts.GridLayout()
        for index, (text, state) in enumerate(
                [('Unchecked', Qt.Unchecked), ('Checked', Qt.Checked), ('Partially', Qt.PartiallyChecked)]):
            normal_cbx = checkbox.BaseCheckBox(text)
            normal_cbx.setCheckState(state)
            disabled_cbx = checkbox.BaseCheckBox(text)
            disabled_cbx.setCheckState(state)
            disabled_cbx.setEnabled(False)
            grid_lyt.addWidget(normal_cbx, 0, index)
            grid_lyt.addWidget(disabled_cbx, 1, index)

        icon_lyt = layouts.HorizontalLayout()
        for text, icon in [('maya', maya_icon), ('Nuke', nuke_icon), ('Houdini', houdini_icon)]:
            cbx_icon = checkbox.BaseCheckBox(text)
            cbx_icon.setIcon(icon)
            icon_lyt.addWidget(cbx_icon)

        bind_cbx = checkbox.BaseCheckBox('Data Bind')
        lbl = label.BaseLabel()
        btn = buttons.BaseButton('Change State')
        btn.clicked.connect(lambda: self.set_field('checked', not self.field('checked')))
        self.register_field('checked', True)
        self.register_field('checked_text', lambda: 'Yes!' if self.field('checked') else 'No!!')
        self.bind('checked', bind_cbx, 'checked', signal='stateChanged')
        self.bind('checked_text', lbl, 'text')

        self.main_layout.addWidget(dividers.Divider('Basic'))
        self.main_layout.addLayout(grid_lyt)
        self.main_layout.addWidget(dividers.Divider('Icon'))
        self.main_layout.addLayout(icon_lyt)
        self.main_layout.addWidget(dividers.Divider('Data Bind'))
        self.main_layout.addWidget(bind_cbx)
        self.main_layout.addWidget(lbl)
        self.main_layout.addWidget(btn)
        self.main_layout.addStretch()
Example #6
0
    def ui(self):
        super(JointUtilsView, self).ui()

        utils_layout = layouts.GridLayout()
        self.main_layout.addLayout(utils_layout)

        self._display_lra_btn = buttons.BaseButton('Display LRA', parent=self)
        self._hide_lra_btn = buttons.BaseButton('Hide LRA', parent=self)
        self._reset_orient_to_world_btn = buttons.BaseButton('Reset to World', parent=self)
        self._select_hierarchy_btn = buttons.BaseButton('Select Hierarchy', parent=self)

        self._display_lra_btn.setIcon(resources.icon('eye'))
        self._hide_lra_btn.setIcon(resources.icon('eye_closed'))
        self._reset_orient_to_world_btn.setIcon(resources.icon('reset'))
        self._select_hierarchy_btn.setIcon(resources.icon('cursor'))

        utils_layout.addWidget(self._display_lra_btn, 0, 0)
        utils_layout.addWidget(self._hide_lra_btn, 0, 1)
        utils_layout.addWidget(self._reset_orient_to_world_btn, 0, 2)
        utils_layout.addWidget(self._select_hierarchy_btn, 1, 0)
Example #7
0
    def _setup_colors_tab(self):
        scroll_area = QScrollArea()
        scroll_area.setWidgetResizable(True)
        colors_widget = QWidget()
        colors_layout = layouts.GridLayout(spacing=2, margins=(2, 2, 2, 2))
        colors_layout.setAlignment(Qt.AlignTop)
        colors_widget.setLayout(colors_layout)
        scroll_area.setWidget(colors_widget)

        color_attribute_names = self._theme.get_color_attribute_names(
        ) or list()
        for i, color_attribute_name in enumerate(color_attribute_names):
            if not hasattr(self._theme, color_attribute_name):
                continue
            label, selector = self._add_color_widget(
                color_attribute_name, getattr(self._theme,
                                              color_attribute_name))
            colors_layout.addWidget(label, i, 0, Qt.AlignRight)
            colors_layout.addWidget(selector, i, 1)

        return scroll_area
Example #8
0
    def __init__(self, parent, widget=None, duration=DEFAULT_DURATION):
        super(Lightbox, self).__init__(parent)

        self.setObjectName('Lightbox')

        self._widget = None
        self._accepted = False
        self._rejected = False
        self._animation = None
        self._duration = duration

        self.setStyleSheet('background-color: rgba(255, 0, 0, 50);')

        layout = layouts.GridLayout(parent=self)
        self.setLayout(layout)

        layout.setRowStretch(0, 1)
        layout.setRowStretch(1, 5)
        layout.setRowStretch(2, 1)
        layout.setColumnStretch(0, 1)
        layout.setColumnStretch(1, 5)
        layout.setColumnStretch(2, 1)

        layout.addWidget(QWidget(), 0, 0)
        layout.addWidget(QWidget(), 0, 1)
        layout.addWidget(QWidget(), 0, 2)
        layout.addWidget(QWidget(), 1, 0)
        layout.addWidget(QWidget(), 1, 2)
        layout.addWidget(QWidget(), 2, 0)
        layout.addWidget(QWidget(), 2, 1)
        layout.addWidget(QWidget(), 2, 2)

        if widget:
            self.setWidget(widget)

        parent = self.parent()
        parent.installEventFilter(self)
Example #9
0
    def ui(self):
        super(NameIt, self).ui()

        tools_toolbar = toolbar.ToolBar('Main ToolBar', parent=self)
        tools_toolbar.setMovable(False)
        # tools_toolbar.setAllowedAreas(Qt.TopToolBarArea | Qt.BottomToolBarArea)
        self.main_layout.addWidget(tools_toolbar)

        refresh_btn = buttons.BaseToolButton(parent=tools_toolbar)
        refresh_btn.setIcon(resources.icon('refresh'))
        refresh_btn.clicked.connect(self._on_refresh)
        self._refresh_btn = tools_toolbar.addWidget(refresh_btn)
        self._refresh_btn.setEnabled(False)

        save_btn = buttons.BaseToolButton(parent=tools_toolbar)
        save_btn.setIcon(resources.icon('save'))
        save_btn.clicked.connect(self._on_save)
        self._save_btn = tools_toolbar.addWidget(save_btn)
        self._save_btn.setEnabled(False)

        if self._is_renamer_tool_available():
            renamer_btn = buttons.BaseToolButton(parent=tools_toolbar)
            renamer_btn.setIcon(resources.icon('rename'))
            renamer_btn.clicked.connect(self._on_open_renamer_tool)
            tools_toolbar.addWidget(renamer_btn)

        self._name_file_line = directory.SelectFile(label_text='Naming File',
                                                    parent=tools_toolbar)
        tools_toolbar.addWidget(self._name_file_line)

        base_layout = layouts.HorizontalLayout(spacing=0, margins=(0, 0, 0, 0))
        self.main_layout.addLayout(base_layout)

        panels_splitter = QSplitter(parent=self)
        panels_splitter.setSizePolicy(QSizePolicy.Expanding,
                                      QSizePolicy.Expanding)
        base_layout.addWidget(panels_splitter)

        left_panel_widget = QWidget()
        left_panel_layout = layouts.VerticalLayout(margins=(5, 0, 5, 0))
        left_panel_widget.setLayout(left_panel_layout)
        panels_splitter.addWidget(left_panel_widget)

        # Tab Widget
        rules_tab = QWidget()
        tokens_tab = QWidget()
        templates_tab = QWidget()
        templates_tokens_tab = QWidget()

        self.tabs = tabs.BaseTabWidget()
        self.tabs.addTab(rules_tab, 'Rules')
        self.tabs.addTab(tokens_tab, 'Tokens')
        self.tabs.addTab(templates_tab, 'Templates')
        self.tabs.addTab(templates_tokens_tab, 'Templates Tokens')
        left_panel_layout.addWidget(self.tabs)

        # Rules Tab
        rules_main_layout = layouts.VerticalLayout(spacing=0,
                                                   margins=(5, 5, 5, 5))
        self.rules_list = QListWidget()
        rules_main_layout.addWidget(self.rules_list)
        left_panel_buttons_layout_rules = layouts.HorizontalLayout(margins=(5,
                                                                            5,
                                                                            5,
                                                                            0))
        rules_main_layout.addLayout(left_panel_buttons_layout_rules)
        self.add_rule_btn = buttons.BaseButton(parent=self)
        self.remove_rule_btn = buttons.BaseButton(parent=self)
        self.add_rule_btn.setIcon(resources.icon('plus'))
        self.remove_rule_btn.setIcon(resources.icon('minus'))
        left_panel_buttons_layout_rules.addStretch()
        left_panel_buttons_layout_rules.addWidget(self.add_rule_btn)
        left_panel_buttons_layout_rules.addWidget(self.remove_rule_btn)
        rules_tab.setLayout(rules_main_layout)

        # Tokens Tab
        tokens_main_layout = layouts.VerticalLayout(margins=(5, 5, 5, 5))
        tokens_main_layout.setSpacing(0)
        self.tokens_list = QListWidget()
        tokens_main_layout.addWidget(self.tokens_list)
        left_panel_buttons_layout_tokens = layouts.HorizontalLayout(
            margins=(5, 5, 5, 0))
        tokens_main_layout.addLayout(left_panel_buttons_layout_tokens)
        self.add_token_btn = buttons.BaseButton(parent=self)
        self.remove_token_btn = buttons.BaseButton(parent=self)
        self.add_token_btn.setIcon(resources.icon('plus'))
        self.remove_token_btn.setIcon(resources.icon('minus'))
        left_panel_buttons_layout_tokens.addStretch()
        left_panel_buttons_layout_tokens.addWidget(self.add_token_btn)
        left_panel_buttons_layout_tokens.addWidget(self.remove_token_btn)
        tokens_tab.setLayout(tokens_main_layout)

        # Templates Tab
        templates_main_layout = layouts.VerticalLayout(spacing=0,
                                                       margins=(5, 5, 5, 5))
        self.templates_list = QListWidget()
        templates_main_layout.addWidget(self.templates_list)
        left_panel_buttons_layout_templates = layouts.HorizontalLayout(
            margins=(5, 5, 5, 0))
        templates_main_layout.addLayout(left_panel_buttons_layout_templates)
        self.add_template_btn = buttons.BaseButton(parent=self)
        self.remove_template_btn = buttons.BaseButton(parent=self)
        self.add_template_btn.setIcon(resources.icon('plus'))
        self.remove_template_btn.setIcon(resources.icon('minus'))
        left_panel_buttons_layout_templates.addStretch()
        left_panel_buttons_layout_templates.addWidget(self.add_template_btn)
        left_panel_buttons_layout_templates.addWidget(self.remove_template_btn)
        templates_tab.setLayout(templates_main_layout)

        # Template Tokens Tab
        templates_tokens_main_layout = layouts.VerticalLayout(spacing=0,
                                                              margins=(5, 5, 5,
                                                                       5))
        self.template_tokens_list = QListWidget()
        templates_tokens_main_layout.addWidget(self.template_tokens_list)
        left_panel_buttons_layout_templates_tokens = layouts.HorizontalLayout(
            margins=(5, 5, 5, 0))
        left_panel_buttons_layout_templates_tokens.setContentsMargins(
            5, 5, 5, 0)
        templates_tokens_main_layout.addLayout(
            left_panel_buttons_layout_templates_tokens)
        self.add_template_token_btn = buttons.BaseButton(parent=self)
        self.remove_template_token_btn = buttons.BaseButton(parent=self)
        self.add_template_token_btn.setIcon(resources.icon('plus'))
        self.remove_template_token_btn.setIcon(resources.icon('minus'))
        left_panel_buttons_layout_templates_tokens.addStretch()
        left_panel_buttons_layout_templates_tokens.addWidget(
            self.add_template_token_btn)
        left_panel_buttons_layout_templates_tokens.addWidget(
            self.remove_template_token_btn)
        templates_tokens_tab.setLayout(templates_tokens_main_layout)

        # === PROPERTIES === #
        main_group = QGroupBox('Properties')
        panels_splitter.addWidget(main_group)

        self.group_layout = layouts.VerticalLayout(spacing=0,
                                                   margins=(5, 5, 5, 5))
        main_group.setLayout(self.group_layout)

        # Rules Panel
        self.rules_widget = QWidget(self)
        rules_layout = layouts.GridLayout()
        self.rules_widget.setLayout(rules_layout)
        expression_lbl = label.BaseLabel('Expression', parent=self)
        self.expression_line = lineedit.BaseLineEdit(parent=self)
        self.expression_btn = buttons.BaseButton('   <', parent=self)
        self.expression_btn.setEnabled(False)
        self.expression_btn.setStyleSheet(
            "QPushButton::menu-indicator{image:url(none.jpg);}")
        self.expression_menu = QMenu(self)
        self.expression_btn.setMenu(self.expression_menu)
        iterator_lbl = label.BaseLabel('Iterator', parent=self)
        self.iterator_cbx = combobox.BaseComboBox(parent=self)
        for it_format in [
                '@', '@^', '#', '##', '###', '####', '#####', 'None'
        ]:
            self.iterator_cbx.addItem(it_format)
        description_rule_lbl = label.BaseLabel('Description', parent=self)
        self.description_rule_text = QTextEdit(parent=self)
        self.group_layout.addWidget(self.rules_widget)

        rules_layout.addWidget(expression_lbl, 0, 0, Qt.AlignRight)
        rules_layout.addWidget(self.expression_line, 0, 1)
        rules_layout.addWidget(self.expression_btn, 0, 2)
        rules_layout.addWidget(iterator_lbl, 1, 0, Qt.AlignRight | Qt.AlignTop)
        rules_layout.addWidget(self.iterator_cbx, 1, 1, 1, 2)
        rules_layout.addWidget(description_rule_lbl, 2, 0,
                               Qt.AlignRight | Qt.AlignTop)
        rules_layout.addWidget(self.description_rule_text, 2, 1, 1, 2)

        # Tokens Panel
        self.tokens_widget = QWidget(parent=self)
        tokens_layout = layouts.GridLayout()
        self.tokens_widget.setLayout(tokens_layout)
        values_lbl = label.BaseLabel('Values')
        data = {'key': list(), 'value': list()}
        self.values_table = TokensTable(data, 0, 2)
        self.values_table.setSizePolicy(QSizePolicy.Expanding,
                                        QSizePolicy.Expanding)
        values_buttons_layout = layouts.HorizontalLayout(margins=(5, 5, 5, 0))
        self.add_key_value_btn = buttons.BaseButton(parent=self)
        self.remove_key_value_btn = buttons.BaseButton(parent=self)
        self.add_key_value_btn.setIcon(resources.icon('plus'))
        self.remove_key_value_btn.setIcon(resources.icon('minus'))
        values_buttons_layout.addWidget(self.add_key_value_btn)
        values_buttons_layout.addWidget(self.remove_key_value_btn)
        values_buttons_layout.addStretch()
        default_lbl = label.BaseLabel('Default', parent=self)
        self.default_cbx = combobox.BaseComboBox(parent=self)
        description_tokens_lbl = label.BaseLabel('Description', parent=self)
        self.description_token_text = QTextEdit(parent=self)
        self.group_layout.addWidget(self.tokens_widget)
        self.tokens_widget.hide()
        tokens_layout.addWidget(values_lbl, 0, 0, Qt.AlignRight | Qt.AlignTop)
        tokens_layout.addWidget(self.values_table, 0, 1, 2, 1)
        tokens_layout.addLayout(values_buttons_layout, 0, 2)
        tokens_layout.addWidget(default_lbl, 4, 0, Qt.AlignRight)
        tokens_layout.addWidget(self.default_cbx, 4, 1, 1, 2)
        tokens_layout.addWidget(description_tokens_lbl, 5, 0,
                                Qt.AlignRight | Qt.AlignTop)
        tokens_layout.addWidget(self.description_token_text, 5, 1, 1, 2)

        # Templates Panel
        self.templates_widget = QWidget(parent=self)
        templates_layout = layouts.VerticalLayout()
        self.templates_widget.setLayout(templates_layout)
        pattern_layout = layouts.HorizontalLayout(spacing=5,
                                                  margins=(5, 5, 5, 5))
        pattern_lbl = label.BaseLabel('Pattern: ', parent=self)
        self.pattern_line = lineedit.BaseLineEdit(parent=self)
        pattern_layout.addWidget(pattern_lbl)
        pattern_layout.addWidget(self.pattern_line)
        templates_layout.addLayout(pattern_layout)
        templates_layout.addLayout(dividers.DividerLayout())
        self.template_tokens_layout = layouts.GridLayout()
        self.template_tokens_layout.setAlignment(Qt.AlignTop)
        template_tokens_frame = QFrame(parent=self)
        template_tokens_frame.setFrameShape(QFrame.StyledPanel)
        template_tokens_frame.setFrameShadow(QFrame.Sunken)
        template_tokens_frame.setLayout(self.template_tokens_layout)
        templates_layout.addWidget(template_tokens_frame)
        self.group_layout.addWidget(self.templates_widget)
        self.templates_widget.hide()

        # Templates Tokens Panel
        self.templates_tokens_widget = QWidget(parent=self)
        templates_tokens_layout = layouts.VerticalLayout()
        self.templates_tokens_widget.setLayout(templates_tokens_layout)
        description_templates_token_layout = layouts.HorizontalLayout(
            spacing=5, margins=(5, 5, 5, 5))
        description_tokens_layout = layouts.VerticalLayout()
        description_templates_token_lbl = label.BaseLabel('Description: ',
                                                          parent=self)
        description_tokens_layout.addWidget(description_templates_token_lbl)
        description_tokens_layout.addStretch()
        self.description_templates_token_text = QTextEdit(parent=self)
        description_templates_token_layout.addLayout(description_tokens_layout)
        description_templates_token_layout.addWidget(
            self.description_templates_token_text)
        templates_tokens_layout.addLayout(description_templates_token_layout)
        self.group_layout.addWidget(self.templates_tokens_widget)
        self.templates_tokens_widget.hide()

        # Initialize database
        self._init_db()

        # First update of the UI
        self.update_expression_menu()
        self.update_tokens_properties_state()
        self.update_rules_properties_state()
        self.update_templates_properties_state()
Example #10
0
    def ui(self):
        super(LabelExample, self).ui()

        title_lyt = layouts.GridLayout()
        title_lyt.addWidget(label.BaseLabel('Label h1').h1(), 0, 0)
        title_lyt.addWidget(label.BaseLabel('Label h2').h2(), 1, 0)
        title_lyt.addWidget(label.BaseLabel('Label h3').h3(), 2, 0)
        title_lyt.addWidget(label.BaseLabel('Label h4').h4(), 3, 0)
        title_lyt.addWidget(label.BaseLabel('Label h1').h1(), 0, 1)
        title_lyt.addWidget(label.BaseLabel('Label h2').h2(), 1, 1)
        title_lyt.addWidget(label.BaseLabel('Label h3').h3(), 2, 1)
        title_lyt.addWidget(label.BaseLabel('Label h4').h4(), 3, 1)

        text_type_lyt = base.QHBoxLayout()
        text_type_lyt.addWidget(label.BaseLabel('Label: Normal'))
        text_type_lyt.addWidget(label.BaseLabel('Label: Secondary').secondary())
        text_type_lyt.addWidget(label.BaseLabel('Label: Warning').warning())
        text_type_lyt.addWidget(label.BaseLabel('Label: Dange').danger())
        disable_text = label.BaseLabel('Label: Disabled')
        disable_text.setEnabled(False)
        text_type_lyt.addWidget(disable_text)

        mix_lyt = layouts.HorizontalLayout()
        mix_lyt.addWidget(label.BaseLabel('Label: Strong & Underline').strong().underline())
        mix_lyt.addWidget(label.BaseLabel('Label: Danger & Delete').danger().delete())
        mix_lyt.addWidget(label.BaseLabel('Label: Warning & Strong').warning().strong())
        mix_lyt.addWidget(label.BaseLabel('Label: H4 & Mark').h4().mark())

        elide_lyt = layouts.VerticalLayout()
        label_none = label.BaseLabel('This is a elide NONE mode label. Ellipsis should NOT appear in the text.')
        label_left = label.BaseLabel(
            'This is a elide LEFT mode label. '
            'The ellipsis should appear at the beginning of the text. '
            'xiao mao xiao gou xiao ci wei')
        label_left.theme_elide_mode = Qt.ElideLeft
        label_middle = label.BaseLabel(
            'This is a elide MIDDLE mode label. '
            'The ellipsis should appear in the middle of the text. '
            'xiao mao xiao gou xiao ci wei')
        label_middle.theme_elide_mode = Qt.ElideMiddle
        label_right = label.BaseLabel()
        label_right.setText('This is a elide RIGHT mode label. '
                            'The ellipsis should appear at the end of the text. '
                            'Some text to fill the line bala bala bala.')
        label_right.theme_elide_mode = Qt.ElideRight
        elide_lyt.addWidget(label_none)
        elide_lyt.addWidget(label_left)
        elide_lyt.addWidget(label_middle)
        elide_lyt.addWidget(label_right)

        text_attr_lyt = layouts.HorizontalLayout()
        text_attr_lyt.addWidget(label.BaseLabel('Label: Mark').mark())
        text_attr_lyt.addWidget(label.BaseLabel('Label: Code').code())
        text_attr_lyt.addWidget(label.BaseLabel('Label: Underline').underline())
        text_attr_lyt.addWidget(label.BaseLabel('Label: Delete').delete())
        text_attr_lyt.addWidget(label.BaseLabel('Label: Strong').strong())

        data_bind_lyt = layouts.HorizontalLayout()
        data_bind_lbl = label.BaseLabel()
        btn = buttons.BaseButton('Randon an Animal').primary()
        btn.clicked.connect(self._on_change_text)
        data_bind_lyt.addWidget(data_bind_lbl)
        data_bind_lyt.addWidget(btn)
        data_bind_lyt.addStretch()
        self.register_field('show_text', 'Guess')
        self.bind('show_text', data_bind_lbl, 'text')

        self.main_layout.addWidget(dividers.Divider('different level'))
        self.main_layout.addLayout(title_lyt)
        self.main_layout.addWidget(dividers.Divider('different type'))
        self.main_layout.addLayout(text_type_lyt)
        self.main_layout.addWidget(dividers.Divider('different property'))
        self.main_layout.addLayout(text_attr_lyt)
        self.main_layout.addWidget(dividers.Divider('mix'))
        self.main_layout.addLayout(mix_lyt)
        self.main_layout.addWidget(dividers.Divider('elide mode'))
        self.main_layout.addLayout(elide_lyt)
        self.main_layout.addStretch()
Example #11
0
    def ui(self):
        super(BaseFileFolderDialog, self).ui()

        from tpDcc.libs.qt.widgets import directory

        self.places = dict()

        self.grid = layouts.GridLayout()
        sub_grid = layouts.GridLayout()
        self.grid.addWidget(QLabel('Path:'), 0, 0, Qt.AlignRight)

        self.path_edit = QLineEdit(self)
        self.path_edit.setReadOnly(True)
        self.filter_box = QComboBox(self)
        self.file_edit = QLineEdit(self)

        self.view = directory.FileListWidget(self)
        self.view.setWrapping(True)
        self.view.setFocusPolicy(Qt.StrongFocus)

        self.open_button = QPushButton('Select', self)
        self.cancel_button = QPushButton('Cancel', self)

        size = QSize(32, 24)
        self.up_button = QPushButton('Up')
        self.up_button.setToolTip('Go up')
        self.up_button.setMinimumSize(size)
        self.up_button.setMaximumSize(size)

        size = QSize(56, 24)
        self.refresh_button = QPushButton('Reload')
        self.refresh_button.setToolTip('Reload file list')
        self.refresh_button.setMinimumSize(size)
        self.refresh_button.setMaximumSize(size)

        self.show_hidden = QCheckBox('Hidden')
        self.show_hidden.setChecked(False)
        self.show_hidden.setToolTip('Toggle show hidden files')

        sub_grid.addWidget(self.up_button, 0, 1)
        sub_grid.addWidget(self.path_edit, 0, 2)
        sub_grid.addWidget(self.refresh_button, 0, 3)
        sub_grid.addWidget(self.show_hidden, 0, 4)
        self.grid.addLayout(sub_grid, 0, 1)
        self.grid.addWidget(self.get_drives_widget(), 1, 0)
        self.grid.addWidget(self.view, 1, 1)
        self.grid.addWidget(QLabel('File name:'), 7, 0, Qt.AlignRight)
        self.grid.addWidget(self.file_edit, 7, 1)
        self.filter_label = QLabel('Filter:')
        self.grid.addWidget(self.filter_label, 8, 0, Qt.AlignRight)
        self.grid.addWidget(self.filter_box, 8, 1)
        hbox = layouts.GridLayout()
        hbox.addWidget(self.open_button, 0, 0, Qt.AlignRight)
        hbox.addWidget(self.cancel_button, 0, 1, Qt.AlignRight)
        self.grid.addLayout(hbox, 9, 1, Qt.AlignRight)
        self.main_layout.addLayout(self.grid)
        self.setGeometry(200, 100, 600, 400)

        self.open_button.clicked.connect(self.accept)
        self.cancel_button.clicked.connect(self.reject)
        self.up_button.clicked.connect(self.go_up)
        self.refresh_button.clicked.connect(self.update_view)
        self.show_hidden.stateChanged.connect(self.update_view)
        self.view.directory_activated.connect(
            self.activate_directory_from_view)
        self.view.file_activated.connect(self.activate_file_from_view)
        self.view.file_selected.connect(self.select_file_item)
        self.view.folder_selected.connect(self.select_folder_item)
        self.view.up_requested.connect(self.go_up)
        self.view.update_requested.connect(self.update_view)
Example #12
0
    def ui(self):
        super(BaseAlembicExporter, self).ui()

        self._stack = stack.SlidingStackedWidget()
        self.main_layout.addWidget(self._stack)

        exporter_widget = QWidget()
        exporter_layout = layouts.VerticalLayout(spacing=0,
                                                 margins=(0, 0, 0, 0))
        exporter_widget.setLayout(exporter_layout)
        self._stack.addWidget(exporter_widget)

        self._waiter = waiter.ArtellaWaiter(
            spinner_type=spinner.SpinnerType.Thumb)
        self._stack.addWidget(self._waiter)

        buttons_layout = layouts.GridLayout()
        exporter_layout.addLayout(buttons_layout)

        name_lbl = label.BaseLabel('Alembic Name: ', parent=self)
        self._name_line = lineedit.BaseLineEdit(parent=self)
        buttons_layout.addWidget(name_lbl, 0, 0, 1, 1, Qt.AlignRight)
        buttons_layout.addWidget(self._name_line, 0, 1)

        shot_name_lbl = label.BaseLabel('Shot Name: ', parent=self)
        self._shot_line = lineedit.BaseLineEdit(parent=self)
        buttons_layout.addWidget(shot_name_lbl, 1, 0, 1, 1, Qt.AlignRight)
        buttons_layout.addWidget(self._shot_line, 1, 1)

        frame_range_lbl = label.BaseLabel('Frame Range: ', parent=self)
        self._start = spinbox.BaseSpinBox(parent=self)
        self._start.setRange(-sys.maxint, sys.maxint)
        self._start.setFixedHeight(20)
        self._start.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        self._end = spinbox.BaseSpinBox(parent=self)
        self._end.setRange(-sys.maxint, sys.maxint)
        self._end.setFixedHeight(20)
        self._end.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        frame_range_widget = QWidget()
        frame_range_layout = layouts.HorizontalLayout(spacing=2,
                                                      margins=(2, 2, 2, 2))
        frame_range_widget.setLayout(frame_range_layout)
        for widget in [frame_range_lbl, self._start, self._end]:
            frame_range_layout.addWidget(widget)
        buttons_layout.addWidget(frame_range_lbl, 2, 0, 1, 1, Qt.AlignRight)
        buttons_layout.addWidget(frame_range_widget, 2, 1)

        folder_icon = resources.icon('folder')
        export_path_layout = layouts.HorizontalLayout(spacing=2,
                                                      margins=(2, 2, 2, 2))
        export_path_widget = QWidget()
        export_path_widget.setLayout(export_path_layout)
        export_path_lbl = label.BaseLabel('Export Path: ', parent=self)
        self._export_path_line = lineedit.BaseLineEdit(parent=self)
        self._export_path_line.setReadOnly(True)
        self._export_path_line.setText(self._project.get_path())
        self._export_path_btn = buttons.BaseButton(parent=self)
        self._export_path_btn.setIcon(folder_icon)
        self._export_path_btn.setIconSize(QSize(18, 18))
        self._export_path_btn.setStyleSheet(
            "background-color: rgba(255, 255, 255, 0); border: 0px solid rgba(255,255,255,0);"
        )
        export_path_layout.addWidget(self._export_path_line)
        export_path_layout.addWidget(self._export_path_btn)
        buttons_layout.addWidget(export_path_lbl, 3, 0, 1, 1, Qt.AlignRight)
        buttons_layout.addWidget(export_path_widget, 3, 1)

        exporter_layout.addLayout(dividers.DividerLayout())

        checkboxes_layout = layouts.VerticalLayout(spacing=2,
                                                   margins=(2, 2, 2, 2))
        exporter_layout.addLayout(checkboxes_layout)

        self._open_folder_after_export_cbx = checkbox.BaseCheckBox(
            'Open Folder After Export?', parent=self)
        self._open_folder_after_export_cbx.setChecked(True)
        checkboxes_layout.addWidget(self._open_folder_after_export_cbx)
        self._export_all_alembics_together_cbx = checkbox.BaseCheckBox(
            'Export All Selected Geometry in One Alembic?', parent=self)
        self._export_all_alembics_together_cbx.setChecked(True)
        checkboxes_layout.addWidget(self._export_all_alembics_together_cbx)

        exporter_layout.addLayout(dividers.DividerLayout())

        self._export_btn = buttons.BaseButton('Export', parent=self)
        self._export_btn.setIcon(resources.icon('export'))
        self._export_btn.setEnabled(False)
        self.main_layout.addWidget(self._export_btn)

        exporter_layout.addStretch()

        self.refresh()
Example #13
0
    def ui(self):

        self._central_layout = layouts.VerticalLayout(margins=(0, 0, 0, 0),
                                                      spacing=0)
        self.setLayout(self._central_layout)

        self._top_widget = QWidget()
        self._top_layout = layouts.VerticalLayout(margins=(0, 0, 0, 0),
                                                  spacing=0)
        self._top_widget.setLayout(self._top_layout)

        for r in self._resizers:
            r.setParent(self)
            r.windowResizedFinished.connect(self.dialogResizedFinished)
        self.set_resize_directions()

        self._dragger = dragger.DialogDragger(parent=self)
        self._dragger.setVisible(self.is_frameless())
        self._top_layout.addWidget(self._dragger)

        self.main_widget = DialogContents()
        self.main_layout = self.get_main_layout()
        self.main_widget.setLayout(self.main_layout)

        self.logo_view = QGraphicsView()
        self.logo_view.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
        self.logo_view.setMaximumHeight(100)
        self._logo_scene = QGraphicsScene()
        self._logo_scene.setSceneRect(QRectF(0, 0, 2000, 100))
        self.logo_view.setScene(self._logo_scene)
        self.logo_view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.logo_view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.logo_view.setFocusPolicy(Qt.NoFocus)

        if self._has_title and self._title_pixmap:
            self._logo_scene.addPixmap(self._title_pixmap)
            self._top_layout.addWidget(self.logo_view)

        title_background_pixmap = self._get_title_pixmap()
        if self._has_title and title_background_pixmap:
            self._logo_scene.addPixmap(title_background_pixmap)
            self._top_layout.addWidget(self.logo_view)
        else:
            self.logo_view.setVisible(False)

        grid_layout = layouts.GridLayout()
        grid_layout.setHorizontalSpacing(0)
        grid_layout.setVerticalSpacing(0)
        grid_layout.setContentsMargins(0, 0, 0, 0)
        grid_layout.addWidget(self._top_widget, 1, 1, 1, 1)
        grid_layout.addWidget(self.main_widget, 2, 1, 1, 1)
        grid_layout.addWidget(self._top_left_resizer, 0, 0, 1, 1)
        grid_layout.addWidget(self._top_resizer, 0, 1, 1, 1)
        grid_layout.addWidget(self._top_right_resizer, 0, 2, 1, 1)
        grid_layout.addWidget(self._left_resizer, 1, 0, 2, 1)
        grid_layout.addWidget(self._right_resizer, 1, 2, 2, 1)
        grid_layout.addWidget(self._bottom_left_resizer, 3, 0, 1, 1)
        grid_layout.addWidget(self._bottom_resizer, 3, 1, 1, 1)
        grid_layout.addWidget(self._bottom_right_resizer, 3, 2, 1, 1)
        grid_layout.setColumnStretch(1, 1)
        grid_layout.setRowStretch(2, 1)

        # Shadow effect for dialog
        # BUG: This causes some rendering problems when using other shadow effects in child widgets of the window
        # BUG: Also detected problems when updating wigets (tree views, web browsers, etc)
        # https://bugreports.qt.io/browse/QTBUG-35196
        # shadow_effect = QGraphicsDropShadowEffect(self)
        # shadow_effect.setBlurRadius(qtutils.dpi_scale(15))
        # shadow_effect.setColor(QColor(0, 0, 0, 150))
        # shadow_effect.setOffset(qtutils.dpi_scale(0))
        # self.setGraphicsEffect(shadow_effect)

        self._central_layout.addLayout(grid_layout)

        for r in self._resizers:
            r.windowResizedFinished.connect(self.dialogResizedFinished)

        if self._size:
            self.resize(self._size[0], self._size[1])
    def ui(self):
        super(BaseAlembicImporter, self).ui()

        buttons_layout = layouts.GridLayout()
        self.main_layout.addLayout(buttons_layout)

        shot_name_lbl = label.BaseLabel('Shot Name: ', parent=self)
        self._shot_line = lineedit.BaseLineEdit(parent=self)
        buttons_layout.addWidget(shot_name_lbl, 1, 0, 1, 1, Qt.AlignRight)
        buttons_layout.addWidget(self._shot_line, 1, 1)
        shot_name_lbl.setVisible(False)
        self._shot_line.setVisible(False)

        folder_icon = resources.icon('folder')
        alembic_path_layout = layouts.HorizontalLayout(spacing=2,
                                                       margins=(2, 2, 2, 2))
        alembic_path_widget = QWidget()
        alembic_path_widget.setLayout(alembic_path_layout)
        alembic_path_lbl = label.BaseLabel('Alembic File: ', parent=self)
        self._alembic_path_line = lineedit.BaseLineEdit(parent=self)
        self._alembic_path_line.setReadOnly(True)
        self._alembic_path_btn = buttons.BaseButton(parent=self)
        self._alembic_path_btn.setIcon(folder_icon)
        self._alembic_path_btn.setIconSize(QSize(18, 18))
        self._alembic_path_btn.setStyleSheet(
            "background-color: rgba(255, 255, 255, 0); border: 0px solid rgba(255,255,255,0);"
        )
        alembic_path_layout.addWidget(self._alembic_path_line)
        alembic_path_layout.addWidget(self._alembic_path_btn)
        buttons_layout.addWidget(alembic_path_lbl, 2, 0, 1, 1, Qt.AlignRight)
        buttons_layout.addWidget(alembic_path_widget, 2, 1)

        import_mode_layout = layouts.HorizontalLayout(spacing=2,
                                                      margins=(2, 2, 2, 2))
        import_mode_layout.setContentsMargins(2, 2, 2, 2)
        import_mode_layout.setSpacing(2)
        import_mode_widget = QWidget()
        import_mode_widget.setLayout(import_mode_layout)
        import_mode_lbl = label.BaseLabel('Import mode: ', parent=self)
        self._create_radio = buttons.BaseRadioButton('Create', parent=self)
        self._add_radio = buttons.BaseRadioButton('Add', parent=self)
        self._merge_radio = buttons.BaseRadioButton('Merge', parent=self)
        self._create_radio.setChecked(True)
        import_mode_layout.addWidget(self._create_radio)
        import_mode_layout.addWidget(self._add_radio)
        import_mode_layout.addWidget(self._merge_radio)
        buttons_layout.addWidget(import_mode_lbl, 3, 0, 1, 1, Qt.AlignRight)
        buttons_layout.addWidget(import_mode_widget, 3, 1)
        import_mode_lbl.setVisible(False)
        import_mode_widget.setVisible(False)

        self._auto_display_lbl = label.BaseLabel('Auto Display Smooth?: ',
                                                 parent=self)
        self._auto_smooth_display = checkbox.BaseCheckBox(parent=self)
        self._auto_smooth_display.setChecked(True)
        buttons_layout.addWidget(self._auto_display_lbl, 4, 0, 1, 1,
                                 Qt.AlignRight)
        buttons_layout.addWidget(self._auto_smooth_display, 4, 1)

        if dcc.client().is_maya():
            maya_gpu_cache_lbl = label.BaseLabel(
                'Import Alembic as GPU Cache?', parent=self)
            self._maya_gpu_cache_cbx = checkbox.BaseCheckBox(parent=self)
            self._maya_gpu_cache_cbx.setChecked(True)
            buttons_layout.addWidget(maya_gpu_cache_lbl, 5, 0, 1, 1,
                                     Qt.AlignRight)
            buttons_layout.addWidget(self._maya_gpu_cache_cbx, 5, 1)
        elif dcc.client().is_houdini():
            hou_archive_abc_node_lbl = label.BaseLabel(
                'Import Alembic as Archive?', parent=self)
            self._hou_archive_abc_node_cbx = checkbox.BaseCheckBox(parent=self)
            buttons_layout.addWidget(hou_archive_abc_node_lbl, 5, 0, 1, 1,
                                     Qt.AlignRight)
            buttons_layout.addWidget(self._hou_archive_abc_node_cbx, 5, 1)

        self.main_layout.addStretch()
        self.main_layout.addLayout(dividers.DividerLayout())

        buttons_layout = layouts.HorizontalLayout(spacing=2,
                                                  margins=(2, 2, 2, 2))
        self.main_layout.addLayout(buttons_layout)
        self._import_btn = buttons.BaseButton('Import', parent=self)
        self._import_btn.setIcon(resources.icon('import'))
        self._import_btn.setSizePolicy(QSizePolicy.Expanding,
                                       QSizePolicy.Preferred)
        self._reference_btn = buttons.BaseButton('Reference', parent=self)
        self._reference_btn.setIcon(resources.icon('reference'))
        self._reference_btn.setSizePolicy(QSizePolicy.Expanding,
                                          QSizePolicy.Preferred)
        buttons_layout.addWidget(self._import_btn)
        buttons_layout.addWidget(self._reference_btn)

        if dcc.client().is_houdini():
            self._reference_btn.setEnabled(False)
    def ui(self):
        super(SymmeshView, self).ui()

        top_layout = layouts.GridLayout()
        mirror_axis_lbl = label.BaseLabel('Mirror Axis: ', parent=self)
        self._axis_radio_grp = QButtonGroup()
        self._yz_radio = buttons.BaseRadioButton(consts.AXIS[0], parent=self)
        self._xz_radio = buttons.BaseRadioButton(consts.AXIS[1], parent=self)
        self._xy_radio = buttons.BaseRadioButton(consts.AXIS[2], parent=self)
        self._radios = [self._yz_radio, self._xz_radio, self._xy_radio]
        self._axis_radio_grp.addButton(self._yz_radio)
        self._axis_radio_grp.addButton(self._xz_radio)
        self._axis_radio_grp.addButton(self._xy_radio)
        axis_radio_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2))
        axis_radio_layout.addWidget(self._yz_radio)
        axis_radio_layout.addWidget(self._xz_radio)
        axis_radio_layout.addWidget(self._xy_radio)
        axis_radio_layout.addStretch()
        global_tolerance_lbl = label.BaseLabel('Global Tolerance: ', parent=self)
        self._global_tolerance_spn = spinbox.BaseDoubleSpinBox(parent=self)
        self._global_tolerance_spn.setDecimals(4)
        self._global_tolerance_spn.setValue(0.0010)
        top_layout.addWidget(mirror_axis_lbl, 0, 0, Qt.AlignRight)
        top_layout.addLayout(axis_radio_layout, 0, 1)
        top_layout.addWidget(global_tolerance_lbl, 1, 0)
        top_layout.addWidget(self._global_tolerance_spn, 1, 1)

        options_cbx_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2))
        self._neg_to_pos_cbx = checkbox.BaseCheckBox('Operate -X to +X', parent=self)
        self._use_pivot_as_origin_cbx = checkbox.BaseCheckBox('Use Pivot as Origin', parent=self)
        self._use_pivot_as_origin_cbx.setChecked(True)
        options_cbx_layout.addWidget(self._neg_to_pos_cbx)
        options_cbx_layout.addItem(QSpacerItem(10, 0, QSizePolicy.Fixed, QSizePolicy.Fixed))
        options_cbx_layout.addWidget(self._use_pivot_as_origin_cbx)
        options_cbx_layout.addStretch()

        select_geo_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2))
        self._select_geo_line = lineedit.BaseLineEdit(parent=self)
        self._select_geo_line.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
        self._select_geo_line.setReadOnly(True)
        self._select_base_geo_btn = buttons.BaseButton('Select Base Geo', parent=self)
        self._select_base_geo_btn.setIcon(resources.icon('cursor'))
        select_geo_layout.addWidget(self._select_geo_line)
        select_geo_layout.addWidget(self._select_base_geo_btn)
        self._symmetry_message = message.BaseMessage('', parent=self).small()

        selection_widget = QWidget(parent=self)
        selection_layout = layouts.FlowLayout()
        selection_widget.setLayout(selection_layout)
        mirror_flip_widget = QWidget(parent=self)
        mirror_flip_layout = layouts.FlowLayout()
        mirror_flip_widget.setLayout(mirror_flip_layout)
        revert_widget = QWidget(parent=self)
        revert_layout = layouts.FlowLayout()
        revert_widget.setLayout(revert_layout)

        self._check_symmetry_btn = buttons.BaseButton('Check Symmetry', parent=self)
        self._selection_mirror_btn = buttons.BaseButton('Selection Mirror', parent=self)
        self._select_moved_vertices_btn = buttons.BaseButton('Select Moved Vertices', parent=self)
        self._mirror_selected_btn = buttons.BaseButton('Mirror Selected', parent=self)
        self._flip_selected_btn = buttons.BaseButton('Flip Selected', parent=self)
        self._revert_selected_to_base = buttons.BaseButton('Revert Selected to Base', parent=self)
        self._revert_bias_slider = sliders.HoudiniDoubleSlider(parent=self, slider_range=[0.0, 1.0])

        # TODO: Implement this feature
        self._live_revert_bias_cbx = checkbox.BaseCheckBox('Live', parent=self)
        self._live_revert_bias_cbx.setVisible(False)

        self._check_symmetry_btn.setIcon(resources.icon('refresh'))
        self._selection_mirror_btn.setIcon(resources.icon('vertex'))
        self._select_moved_vertices_btn.setIcon(resources.icon('cursor'))
        self._mirror_selected_btn.setIcon(resources.icon('mirror'))
        self._flip_selected_btn.setIcon(resources.icon('flip_vertical'))
        self._revert_selected_to_base.setIcon(resources.icon('rollback'))

        selection_layout.addWidget(self._check_symmetry_btn)
        selection_layout.addWidget(self._selection_mirror_btn)
        selection_layout.addWidget(self._select_moved_vertices_btn)
        mirror_flip_layout.addWidget(self._mirror_selected_btn)
        mirror_flip_layout.addWidget(self._flip_selected_btn)
        revert_layout.addWidget(self._revert_selected_to_base)
        revert_layout.addWidget(self._revert_bias_slider)
        revert_layout.addWidget(self._live_revert_bias_cbx)

        self.main_layout.addLayout(top_layout)
        self.main_layout.addLayout(options_cbx_layout)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addLayout(select_geo_layout)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addWidget(self._symmetry_message)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addWidget(selection_widget)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addWidget(mirror_flip_widget)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addWidget(revert_widget)
        self.main_layout.addStretch()
Example #16
0
    def ui(self):
        super(MuscleSplineView, self).ui()

        expander = expandables.ExpanderWidget()

        muscle_setup_widget = QWidget()
        muscle_setup_layout = layouts.VerticalLayout(spacing=2,
                                                     margins=(2, 2, 2, 2))
        muscle_setup_widget.setLayout(muscle_setup_layout)
        muscle_setup_base_layout = layouts.GridLayout(spacing=5,
                                                      margins=(2, 2, 2, 2))
        name_label = label.BaseLabel('Name:', parent=self)
        self._name_line = lineedit.BaseLineEdit(parent=self)
        size_label = label.BaseLabel('Size:')
        self._size_spn = spinbox.BaseDoubleSpinBox(parent=self)
        self._size_spn.setMinimum(1.0)
        insertion_ctrls_lbl = label.BaseLabel('N. Controls:', parent=self)
        insertion_ctrls_lbl.setToolTip('Number Insertion Controls')
        self._insertion_ctrls_spn = spinbox.BaseSpinBox(parent=self)
        self._insertion_ctrls_spn.setMinimum(2)
        self._insertion_ctrls_spn.setMaximum(24)
        insertion_type_lbl = label.BaseLabel('Type:', parent=self)
        self._insertion_type_combo = combobox.BaseComboBox(parent=self)
        num_driven_lbl = label.BaseLabel('N. Driven:', parent=self)
        num_driven_lbl.setToolTip('Number Driven Joints')
        self._num_driven_spn = spinbox.BaseSpinBox(parent=self)
        self._num_driven_spn.setMinimum(1)
        self._num_driven_spn.setMaximum(64)
        num_driven_type_lbl = label.BaseLabel('Type:')
        self._num_driven_type_combo = combobox.BaseComboBox(parent=self)
        extras_layout = layouts.HorizontalLayout(spacing=2,
                                                 margins=(2, 2, 2, 2))
        self._cns_mid_ctrls_cbx = checkbox.BaseCheckBox(
            'Constraint Mid Controls', parent=self)
        self._lock_ctrls_scale_cbx = checkbox.BaseCheckBox(
            'Lock Controls Scale', parent=self)
        self._lock_jiggle_attrs_cbx = checkbox.BaseCheckBox(
            'Lock Jiggle Attributes', parent=self)
        extras_layout.addStretch()
        extras_layout.addWidget(self._cns_mid_ctrls_cbx)
        extras_layout.addWidget(self._lock_ctrls_scale_cbx)
        extras_layout.addWidget(self._lock_jiggle_attrs_cbx)
        extras_layout.addStretch()

        muscle_setup_layout.addLayout(muscle_setup_base_layout)
        muscle_setup_layout.addWidget(dividers.Divider())
        muscle_setup_layout.addLayout(extras_layout)
        muscle_setup_base_layout.addWidget(name_label, 0, 0, Qt.AlignRight)
        muscle_setup_base_layout.addWidget(self._name_line, 0, 1)
        muscle_setup_base_layout.addWidget(size_label, 1, 0, Qt.AlignRight)
        muscle_setup_base_layout.addWidget(self._size_spn, 1, 1)
        muscle_setup_base_layout.addWidget(dividers.Divider(), 2, 0, 1, 2)
        muscle_setup_base_layout.addWidget(insertion_ctrls_lbl, 3, 0,
                                           Qt.AlignRight)
        muscle_setup_base_layout.addWidget(self._insertion_ctrls_spn, 3, 1)
        muscle_setup_base_layout.addWidget(insertion_type_lbl, 4, 0,
                                           Qt.AlignRight)
        muscle_setup_base_layout.addWidget(self._insertion_type_combo, 4, 1)
        muscle_setup_base_layout.addWidget(dividers.Divider(), 5, 0, 1, 2)
        muscle_setup_base_layout.addWidget(num_driven_lbl, 6, 0, Qt.AlignRight)
        muscle_setup_base_layout.addWidget(self._num_driven_spn, 6, 1)
        muscle_setup_base_layout.addWidget(num_driven_type_lbl, 7, 0,
                                           Qt.AlignRight)
        muscle_setup_base_layout.addWidget(self._num_driven_type_combo, 7, 1)

        advanced_setup_widget = QWidget()
        advanced_setup_layout = layouts.VerticalLayout(spacing=2,
                                                       margins=(2, 2, 2, 2))
        advanced_setup_widget.setLayout(advanced_setup_layout)

        self._advanced_widgets_widget = QWidget()
        advanced_widgets_layout = layouts.VerticalLayout(spacing=0,
                                                         margins=(0, 0, 0, 0))
        self._advanced_widgets_widget.setLayout(advanced_widgets_layout)
        advanced_setup_base_layout = layouts.GridLayout(spacing=5,
                                                        margins=(2, 2, 2, 2))
        self._advanced_enable_cbx = checkbox.BaseCheckBox('Enable',
                                                          parent=self)
        ctrl_suffix_lbl = label.BaseLabel('Control Suffix:', parent=self)
        self._ctrl_suffix_line = lineedit.BaseLineEdit(parent=self)
        joint_suffix_lbl = label.BaseLabel('Joint Suffix:', parent=self)
        self._joint_suffix_line = lineedit.BaseLineEdit(parent=self)
        grp_suffix_lbl = label.BaseLabel('Group Suffix:', parent=self)
        self._grp_suffix_line = lineedit.BaseLineEdit(parent=self)
        drv_suffix_lbl = label.BaseLabel('Driven Suffix:', parent=self)
        self._drv_suffix_line = lineedit.BaseLineEdit(parent=self)
        advanced_setup_set_layout = layouts.GridLayout(spacing=5,
                                                       margins=(2, 2, 2, 2))
        self._create_sets_cbx = checkbox.BaseCheckBox('Create Sets',
                                                      parent=self)
        muscle_set_lbl = label.BaseLabel('Main Muscle Set Name:', parent=self)
        self._main_muscle_set_name_line = lineedit.BaseLineEdit(parent=self)
        set_suffix_lbl = label.BaseLabel('Muscle Set Suffix:', parent=self)
        self._muscle_set_suffix_line = lineedit.BaseLineEdit(parent=self)
        muscle_spline_name_lbl = label.BaseLabel('Muscle Spline Name:',
                                                 parent=self)
        self._muscle_spline_name_line = lineedit.BaseLineEdit(parent=self)
        controls_group_suffix_lbl = label.BaseLabel('Controls Group Suffix:',
                                                    parent=self)
        self._controls_group_suffix_line = lineedit.BaseLineEdit(parent=self)
        joints_group_suffix_lbl = label.BaseLabel('Joints Group Suffix:')
        self._joints_group_suffix_line = lineedit.BaseLineEdit(parent=self)
        root_group_suffix_lbl = label.BaseLabel('Root Group Suffix:',
                                                parent=self)
        self._root_group_suffix_line = lineedit.BaseLineEdit(parent=self)
        auto_group_suffix_lbl = label.BaseLabel('Auto Group Suffix:',
                                                parent=self)
        self._auto_group_suffix_line = lineedit.BaseLineEdit(parent=self)
        create_layout = layouts.HorizontalLayout(spacing=0,
                                                 margins=(0, 0, 0, 0))
        self._create_btn = buttons.BaseButton('Create', parent=self)
        create_layout.addStretch()
        create_layout.addWidget(self._create_btn)
        create_layout.addStretch()

        advanced_setup_layout.addWidget(self._advanced_enable_cbx)
        advanced_setup_layout.addWidget(dividers.Divider())
        advanced_setup_layout.addWidget(self._advanced_widgets_widget)
        advanced_widgets_layout.addLayout(advanced_setup_base_layout)
        advanced_widgets_layout.addLayout(advanced_setup_set_layout)
        advanced_setup_base_layout.addWidget(ctrl_suffix_lbl, 0, 0,
                                             Qt.AlignRight)
        advanced_setup_base_layout.addWidget(self._ctrl_suffix_line, 0, 1)
        advanced_setup_base_layout.addWidget(joint_suffix_lbl, 1, 0,
                                             Qt.AlignRight)
        advanced_setup_base_layout.addWidget(self._joint_suffix_line, 1, 1)
        advanced_setup_base_layout.addWidget(grp_suffix_lbl, 2, 0,
                                             Qt.AlignRight)
        advanced_setup_base_layout.addWidget(self._grp_suffix_line, 2, 1)
        advanced_setup_base_layout.addWidget(drv_suffix_lbl, 3, 0,
                                             Qt.AlignRight)
        advanced_setup_base_layout.addWidget(self._drv_suffix_line, 3, 1)
        advanced_setup_base_layout.addWidget(dividers.Divider(), 4, 0, 1, 2)
        advanced_setup_set_layout.addWidget(self._create_sets_cbx, 0, 0)
        advanced_setup_set_layout.addWidget(muscle_set_lbl, 1, 0,
                                            Qt.AlignRight)
        advanced_setup_set_layout.addWidget(self._main_muscle_set_name_line, 1,
                                            1)
        advanced_setup_set_layout.addWidget(set_suffix_lbl, 2, 0,
                                            Qt.AlignRight)
        advanced_setup_set_layout.addWidget(self._muscle_set_suffix_line, 2, 1)
        advanced_setup_set_layout.addWidget(dividers.Divider(), 3, 0, 1, 2)
        advanced_setup_set_layout.addWidget(muscle_spline_name_lbl, 4, 0,
                                            Qt.AlignRight)
        advanced_setup_set_layout.addWidget(self._muscle_spline_name_line, 4,
                                            1)
        advanced_setup_set_layout.addWidget(dividers.Divider(), 5, 0, 1, 2)
        advanced_setup_set_layout.addWidget(controls_group_suffix_lbl, 6, 0,
                                            Qt.AlignRight)
        advanced_setup_set_layout.addWidget(self._controls_group_suffix_line,
                                            6, 1)
        advanced_setup_set_layout.addWidget(joints_group_suffix_lbl, 7, 0,
                                            Qt.AlignRight)
        advanced_setup_set_layout.addWidget(self._joints_group_suffix_line, 7,
                                            1)
        advanced_setup_set_layout.addWidget(root_group_suffix_lbl, 8, 0,
                                            Qt.AlignRight)
        advanced_setup_set_layout.addWidget(self._root_group_suffix_line, 8, 1)
        advanced_setup_set_layout.addWidget(auto_group_suffix_lbl, 9, 0,
                                            Qt.AlignRight)
        advanced_setup_set_layout.addWidget(self._auto_group_suffix_line, 9, 1)

        expander.addItem('Advanced Setup', advanced_setup_widget)
        expander.addItem('Muscle Setup', muscle_setup_widget)

        self.main_layout.addWidget(expander)
        self.main_layout.addWidget(dividers.Divider())
        self.main_layout.addLayout(create_layout)
Example #17
0
 def get_main_layout(self):
     return layouts.GridLayout(spacing=0, margins=(0, 0, 0, 0))
Example #18
0
    def ui(self):
        super(BrowserExample, self).ui()

        browser1 = browser.ClickBrowserFileButton('Browse File PushButton',
                                                  parent=self).primary()
        browser2 = browser.ClickBrowserFolderButton('Browse Folder PushButton',
                                                    parent=self)
        browser2.setIcon(tpDcc.ResourcesMgr().icon('upload'))
        browser3 = browser.ClickBrowserFileButton('Browse Multi Files',
                                                  multiple=True,
                                                  parent=self).primary()
        browser4 = browser.ClickBrowserFileToolButton().huge()
        lbl4 = label.BaseLabel()
        lbl4._set_elide_mode(Qt.ElideMiddle)
        browser4.fileChanged.connect(lbl4.setText)
        browser5 = browser.ClickBrowserFolderToolButton().huge()
        lbl5 = label.BaseLabel()
        lbl5._set_elide_mode(Qt.ElideMiddle)
        browser5.folderChanged.connect(lbl5.setText)
        browser6 = browser.DragFileButton('Click or drag file here')
        browser6.image = 'attachment'
        lbl6 = label.BaseLabel()
        lbl6._set_elide_mode(Qt.ElideMiddle)
        browser6.fileChanged.connect(lbl6.setText)
        browser7 = browser.DragFolderButton()
        lbl7 = label.BaseLabel()
        lbl7._set_elide_mode(Qt.ElideMiddle)
        browser7.folderChanged.connect(lbl7.setText)
        browser8 = browser.DragFileButton('Click or drag media file here')
        browser8.image('video_file')
        browser8.filters = ['.mov', '.mp4']
        lbl8 = label.BaseLabel()
        lbl8._set_elide_mode(Qt.ElideRight)
        self.register_field('current_file', '')
        self.bind('current_file', browser8, 'path', signal='fileChanged')
        self.bind('current_file', lbl8, 'text')

        lyt1 = layouts.HorizontalLayout()
        lyt1.addWidget(browser1)
        lyt1.addWidget(browser2)
        lyt1.addWidget(browser3)

        lyt2 = layouts.HorizontalLayout()
        lyt2.addWidget(lbl4)
        lyt2.addWidget(browser4)
        lyt2.addWidget(lbl5)
        lyt2.addWidget(browser5)

        lyt3 = layouts.GridLayout()
        lyt3.addWidget(browser6, 2, 0)
        lyt3.addWidget(lbl6, 3, 0)
        lyt3.addWidget(browser7, 2, 1)
        lyt3.addWidget(lbl7, 3, 1)

        self.main_layout.addWidget(dividers.Divider('ClickBrowserFileButton'))
        self.main_layout.addLayout(lyt1)
        self.main_layout.addWidget(dividers.Divider('ClickBrowserToolButton'))
        self.main_layout.addLayout(lyt2)
        self.main_layout.addWidget(dividers.Divider('DragBrowserToolButton'))
        self.main_layout.addLayout(lyt3)
        self.main_layout.addWidget(dividers.Divider('data bind'))
        self.main_layout.addWidget(browser8)
        self.main_layout.addWidget(lbl8)
        self.main_layout.addStretch()
Example #19
0
    def get_main_layout(self):
        main_layout = layouts.GridLayout(margins=(0, 0, 0, 0))

        return main_layout