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)
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)
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)
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)
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()
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)
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
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)
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()
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()
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)
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()
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()
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)
def get_main_layout(self): return layouts.GridLayout(spacing=0, margins=(0, 0, 0, 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()
def get_main_layout(self): main_layout = layouts.GridLayout(margins=(0, 0, 0, 0)) return main_layout