def _init(self): if not self._shot_widget: return self._buttons_widget = self._create_asset_files_buttons() self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addWidget(self._buttons_widget) self.main_layout.addLayout(dividers.DividerLayout()) self._stack = stack.SlidingStackedWidget() self._stack.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.main_layout.addWidget(self._stack) no_shots_widget = QFrame() no_shots_widget.setFrameShape(QFrame.StyledPanel) no_shots_widget.setFrameShadow(QFrame.Sunken) no_shots_widget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) no_shots_layout = QVBoxLayout() no_shots_layout.setContentsMargins(0, 0, 0, 0) no_shots_layout.setSpacing(0) no_shots_widget.setLayout(no_shots_layout) no_shots_lbl = QLabel() no_items_pixmap = tpDcc.ResourcesMgr().pixmap('no_shot_selected') no_shots_lbl.setPixmap(no_items_pixmap) no_shots_lbl.setAlignment(Qt.AlignCenter) no_shots_layout.addItem( QSpacerItem(0, 10, QSizePolicy.Preferred, QSizePolicy.Expanding)) no_shots_layout.addWidget(no_shots_lbl) no_shots_layout.addItem( QSpacerItem(0, 10, QSizePolicy.Preferred, QSizePolicy.Expanding)) version_widget = QWidget() version_layout = QHBoxLayout() version_layout.setContentsMargins(2, 2, 2, 2) version_layout.setSpacing(2) version_widget.setLayout(version_layout) version_splitter = QSplitter(Qt.Horizontal) version_layout.addWidget(version_splitter) self._versions_tree = ShotVersionsTree() version_splitter.addWidget(self._versions_tree) version_splitter.addWidget(QPushButton('Test')) self._stack.addWidget(no_shots_widget) self._stack.addWidget(version_splitter) self._versions_tree.itemClicked.connect(self._on_version_item_clicked)
def ui(self): super(AssetsManagerSettingsWidget, self).ui() self._auto_check_published_cbx = QCheckBox('Auto Check Published Versions?') self.main_layout.addWidget(self._auto_check_published_cbx) self._auto_check_working_cbx = QCheckBox('Auto Check Working Versions?') self.main_layout.addWidget(self._auto_check_working_cbx) self._auto_check_lock_cbx = QCheckBox('Check Lock/Unlock Working Versions?') self.main_layout.addWidget(self._auto_check_lock_cbx) self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addItem(QSpacerItem(0, 10, QSizePolicy.Preferred, QSizePolicy.Expanding)) bottom_layout = QHBoxLayout() bottom_layout.setContentsMargins(0, 0, 0, 0) bottom_layout.setSpacing(1) self.main_layout.addLayout(bottom_layout) save_icon = tpDcc.ResourcesMgr().icon('save') cancel_icon = tpDcc.ResourcesMgr().icon('close') self._save_btn = QPushButton('Save') self._save_btn.setIcon(save_icon) self._cancel_btn = QPushButton('Cancel') self._cancel_btn.setIcon(cancel_icon) bottom_layout.addWidget(self._save_btn) bottom_layout.addWidget(self._cancel_btn)
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 ui(self): super(ManualRenameWidget, self).ui() manual_accordion = accordion.AccordionWidget() self.main_layout.addWidget(manual_accordion) self._renamer_widget = renamerwidget.renamer_widget( client=self._controller.client, parent=self) self._prefix_suffix_widget = prefixsuffixwidget.preffix_suffix_widget( client=self._controller.client, naming_config=self._model.naming_config, parent=self) self._number_side_widget = numbersidewidget.number_side_widget( client=self._controller.client, parent=self) self._namespace_widget = None if dcc.is_maya(): self._namespace_widget = namespacewidget.namespace_widget( client=self._controller.client, parent=self) self._replacer_widget = replacerwidget.replacer_widget( client=self._controller.client, parent=self) self._utils_widget = utilswidget.utils_widget( client=self._controller.client, parent=self) manual_accordion.add_item('Name', self._renamer_widget) manual_accordion.add_item('Prefix/Suffix', self._prefix_suffix_widget) manual_accordion.add_item('Number & Side', self._number_side_widget) if self._namespace_widget: manual_accordion.add_item('Namespace', self._namespace_widget) manual_accordion.add_item('Search & Replace', self._replacer_widget) manual_accordion.add_item('Utils', self._utils_widget) self._rename_btn = buttons.BaseButton('Rename') self._rename_btn.setIcon(resources.icon('rename')) self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addWidget(self._rename_btn)
def ui(self): super(UtilsView, self).ui() base_layout = layouts.VerticalLayout(spacing=2, margins=(0, 0, 0, 0)) self.main_layout.addLayout(base_layout) name_utils_layout = layouts.HorizontalLayout(spacing=5, margins=(0, 0, 0, 0)) self._automatic_suffix_btn = buttons.BaseButton('Automatic Suffix', parent=self) self._automatic_suffix_btn.setIcon(resources.icon('suffix')) self._make_unique_name_btn = buttons.BaseButton('Make Unique Name', parent=self) self._make_unique_name_btn.setIcon(resources.icon('name')) name_utils_layout.addWidget(self._automatic_suffix_btn) name_utils_layout.addWidget(self._make_unique_name_btn) if dcc.is_maya(): namespace_utils_layout = layouts.HorizontalLayout(spacing=5, margins=(0, 0, 0, 0)) self._clean_unused_namespaces_btn = buttons.BaseButton('Unused Namespaces', parent=self) self._clean_unused_namespaces_btn.setIcon(resources.icon('clean')) self._namespace_editor_btn = buttons.BaseButton('Namespace Editor', parent=self) self._namespace_editor_btn.setIcon(resources.icon('browse_page')) self._reference_editor_btn = buttons.BaseButton('Reference Editor', parent=self) self._reference_editor_btn.setIcon(resources.icon('connect')) namespace_utils_layout.addWidget(self._clean_unused_namespaces_btn) namespace_utils_layout.addWidget(self._namespace_editor_btn) namespace_utils_layout.addWidget(self._reference_editor_btn) index_utils_layout = layouts.HorizontalLayout(spacing=5, margins=(0, 0, 0, 0)) self._remove_all_numbers_btn = buttons.BaseButton('Remove All Numbers', parent=self) self._remove_all_numbers_btn.setIcon(resources.icon('trash')) self._remove_tail_numbers_btn = buttons.BaseButton('Remove Tail Numbers', parent=self) self._remove_tail_numbers_btn.setIcon(resources.icon('trash')) index_utils_layout.addWidget(self._remove_all_numbers_btn) index_utils_layout.addWidget(self._remove_tail_numbers_btn) base_layout.addLayout(name_utils_layout) base_layout.addLayout(dividers.DividerLayout()) base_layout.addLayout(index_utils_layout) if dcc.is_maya(): base_layout.addLayout(dividers.DividerLayout()) base_layout.addLayout(namespace_utils_layout)
def ui(self): super(BugWidget, self).ui() bug_data_frame = QFrame() bug_data_frame.setFrameStyle(QFrame.Raised | QFrame.StyledPanel) self._bug_data_layout = QGridLayout() bug_data_frame.setLayout(self._bug_data_layout) self._trace_text = QTextEdit() self._trace_text.setMinimumHeight(100) self._trace_text.setReadOnly(True) self._trace_text.setEnabled(False) self._title_line = QLineEdit() self._title_line.setPlaceholderText('Short title for the bug ...') self._steps_area = QTextEdit() txt_msg = 'Explain with details how to reproduce the error ...' steps_lbl = QLabel(txt_msg) if qtutils.is_pyside2(): self._steps_area.setPlaceholderText(txt_msg) self._steps_area.setMinimumHeight(350) self._send_btn = QPushButton('Send Bug') self._send_btn.setIcon(tp.ResourcesMgr().icon('bug')) self._send_btn.setEnabled(False) self.main_layout.addWidget(dividers.Divider('Bug Data')) self.main_layout.addWidget(bug_data_frame) self.main_layout.addWidget(dividers.Divider('Error Trace')) self.main_layout.addWidget(self._trace_text) self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addWidget(self._title_line) if qtutils.is_pyside(): self.main_layout.addWidget(steps_lbl) self.main_layout.addWidget(self._steps_area) self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addWidget(self._send_btn) self._fill_bug_data()
def ui(self): super(ArtellaLightRigManager, self).ui() buttons_layout = QHBoxLayout() buttons_layout.setContentsMargins(0, 0, 0, 0) buttons_layout.setSpacing(0) self.main_layout.addLayout(buttons_layout) self._open_btn = QToolButton() self._open_btn.setIcon(tpDcc.ResourcesMgr().icon('open')) self._sync_btn = QToolButton() self._sync_btn.setIcon(tpDcc.ResourcesMgr().icon('sync')) buttons_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) buttons_layout.addWidget(self._open_btn) buttons_layout.addWidget(dividers.get_horizontal_separator_widget()) buttons_layout.addWidget(self._sync_btn) buttons_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Fixed)) self.main_layout.addLayout(dividers.DividerLayout()) self._stack = stack.SlidingStackedWidget() self.main_layout.addWidget(self._stack) no_lights_pixmap = tpDcc.ResourcesMgr().pixmap('no_light_rigs') no_lights_lbl = QLabel() no_lights_lbl.setPixmap(no_lights_pixmap) no_lights_widget = QWidget() no_lights_layout = QHBoxLayout() no_lights_widget.setLayout(no_lights_layout) no_lights_layout.setContentsMargins(2, 2, 2, 2) no_lights_layout.setSpacing(2) no_lights_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) no_lights_layout.addWidget(no_lights_lbl) no_lights_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) self._stack.addWidget(no_lights_widget) light_rigs_widget = QWidget() self._light_rigs_layout = QHBoxLayout() light_rigs_widget.setLayout(self._light_rigs_layout) self._light_rigs_layout.setContentsMargins(5, 5, 5, 5) self._light_rigs_layout.setSpacing(5) self._light_rigs_layout.setAlignment(Qt.AlignCenter) self._stack.addWidget(light_rigs_widget) self._update_ui()
def ui(self): super(ProjectSettingsWidget, self).ui() image_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) image_layout.setContentsMargins(2, 2, 2, 2) image_layout.setSpacing(2) self.main_layout.addLayout(image_layout) self._project_image = QLabel() self._project_image.setAlignment(Qt.AlignCenter) image_layout.addStretch() image_layout.addWidget(self._project_image) image_layout.addStretch() self._settings_tab = tabs.BaseTabWidget(parent=self) self.main_layout.addWidget(self._settings_tab) self._naming_widget = NamingWidget(project=self._project) self._project_options_widget = rigoptionsviewer.RigOptionsViewer( option_object=self._project, parent=self) self._external_code_widget = ExternalCodeDirectoryWidget(parent=self) version_control_widget = QWidget(parent=self) version_control_layout = layouts.VerticalLayout(spacing=0, margins=(2, 2, 2, 2)) version_control_widget.setLayout(version_control_layout) self._version_type_combo = combobox.BaseComboBox(parent=self) version_control_layout.addWidget(self._version_type_combo) version_control_layout.addStretch() self._settings_tab.addTab(self._project_options_widget, 'Settings') self._settings_tab.addTab(self._naming_widget, 'Nomenclature') self._settings_tab.addTab(version_control_widget, 'Version Control') self._settings_tab.addTab(self._external_code_widget, 'External Code') bottom_layout = layouts.VerticalLayout(spacing=2, margins=(2, 2, 2, 2)) bottom_layout.setAlignment(Qt.AlignBottom) self.main_layout.addLayout(bottom_layout) bottom_layout.addLayout(dividers.DividerLayout()) buttons_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) bottom_layout.addLayout(buttons_layout) ok_icon = resources.icon('ok') self._ok_btn = buttons.BaseButton(parent=self) self._ok_btn.setIcon(ok_icon) buttons_layout.addWidget(self._ok_btn)
def ui(self): super(AutoRenameWidget, self).ui() top_layout = layouts.HorizontalLayout(spacing=2, margins=(0, 0, 0, 0)) self._unique_id_cbx = checkbox.BaseCheckBox('Unique Id') self._last_joint_end_cbx = checkbox.BaseCheckBox('Make Last Joint End') top_layout.addStretch() top_layout.addWidget(self._unique_id_cbx) top_layout.addWidget(self._last_joint_end_cbx) self.main_layout.addLayout(top_layout) main_splitter = QSplitter(Qt.Horizontal) main_splitter.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) self.main_layout.addWidget(main_splitter) auto_widget = QWidget() auto_layout = layouts.VerticalLayout(spacing=0, margins=(0, 0, 0, 0)) auto_widget.setLayout(auto_layout) main_splitter.addWidget(auto_widget) self._rules_list = QTreeWidget(self) self._rules_list.setHeaderHidden(True) self._rules_list.setSortingEnabled(True) self._rules_list.setRootIsDecorated(False) self._rules_list.setSelectionMode(QAbstractItemView.SingleSelection) self._rules_list.sortByColumn(0, Qt.AscendingOrder) self._rules_list.setUniformRowHeights(True) self._rules_list.setAlternatingRowColors(True) auto_layout.addWidget(self._rules_list) auto_w = QWidget() self.auto_l = layouts.VerticalLayout(spacing=0, margins=(0, 0, 0, 0)) auto_w.setLayout(self.auto_l) auto_w.setMinimumWidth(200) main_splitter.addWidget(auto_w) self.main_auto_layout = QFormLayout() self.auto_l.addLayout(self.main_auto_layout) self._rename_btn = buttons.BaseButton('Rename') self._rename_btn.setIcon(resources.icon('rename')) self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addWidget(self._rename_btn)
def ui(self): super(ArtellaOutlinerWidget, self).ui() self._toolbar = QToolBar() self._setup_toolbar() self.main_layout.addWidget(self._toolbar) self._main_stack = stack.SlidingStackedWidget(self) self.main_layout.addWidget(self._main_stack) self._outliner_widget = QWidget() self._outliner_layout = QVBoxLayout() self._outliner_layout.setContentsMargins(2, 2, 2, 2) self._outliner_layout.setSpacing(2) self._outliner_widget.setLayout(self._outliner_layout) top_layout = QHBoxLayout() top_layout.setContentsMargins(0, 0, 0, 0) top_layout.setSpacing(2) top_layout.setAlignment(Qt.AlignCenter) self._tags_menu_layout = QHBoxLayout() self._tags_menu_layout.setContentsMargins(0, 0, 0, 0) self._tags_menu_layout.setSpacing(0) self._tags_menu_layout.setAlignment(Qt.AlignTop) top_layout.addLayout(self._tags_menu_layout) self._tags_btn_grp = QButtonGroup(self) self._tags_btn_grp.setExclusive(True) self._outliners_stack = stack.SlidingStackedWidget() self._outliner_layout.addLayout(top_layout) self._outliner_layout.addLayout(dividers.DividerLayout()) self._outliner_layout.addWidget(self._outliners_stack) self._settings_widget = ArtellaOutlinerSettings() self._main_stack.addWidget(self._outliner_widget) self._main_stack.addWidget(self._settings_widget)
def ui(self): super(RequestWidget, self).ui() self._title_line = QLineEdit() self._title_line.setPlaceholderText('Short title for the request ...') self._request_area = QTextEdit() txt_msg = 'Explain with details your request ...' request_lbl = QLabel(txt_msg) if qtutils.is_pyside2(): self._request_area.setPlaceholderText(txt_msg) self._request_area.setMinimumHeight(100) self._send_btn = QPushButton('Send Request') self._send_btn.setIcon(tp.ResourcesMgr().icon('message')) self._send_btn.setEnabled(False) self.main_layout.addWidget(self._title_line) if qtutils.is_pyside(): self.main_layout.addWidget(request_lbl) self.main_layout.addWidget(self._request_area) self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addWidget(self._send_btn)
def ui(self): super(TaggerInfoWidget, self).ui() frame = QFrame() frame.setFrameShadow(QFrame.Sunken) frame.setFrameShape(QFrame.StyledPanel) frame_layout = QVBoxLayout() frame_layout.setContentsMargins(5, 5, 5, 5) frame_layout.setSpacing(5) frame.setLayout(frame_layout) self._curr_info_lbl = QLabel('') self._curr_info_lbl.setAlignment(Qt.AlignCenter) self._new_tagger_node_btn = QPushButton( 'Create Tag Data node for "{0}"?'.format( artellapipe.TagsMgr().get_current_selection())) self._new_tagger_node_btn.setIcon(tpDcc.ResourcesMgr().icon('tag_add')) self.main_layout.addWidget(frame) frame_layout.addWidget(self._curr_info_lbl) frame_layout.addLayout(dividers.DividerLayout()) frame_layout.addWidget(self._new_tagger_node_btn)
def ui(self): if dcc.get_version() <= 2016: self.main_layout = self.get_main_layout() self.setLayout(self.main_layout) self.color_dialog = QColorDialog(parent=self) self.color_dialog.setWindowFlags(Qt.Widget) self.color_dialog.setOptions(QColorDialog.DontUseNativeDialog | QColorDialog.NoButtons) self.main_layout.addWidget(self.color_dialog) 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) else: super(MayaColorDialog, self).ui()
def ui(self): super(AlembicManagerView, self).ui() export_icon = resources.icon('export') import_icon = resources.icon('import') buttons_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) self.main_layout.addLayout(buttons_layout) self.main_layout.addLayout(dividers.DividerLayout()) self._exporter_btn = buttons.BaseButton('Exporter', parent=self) self._exporter_btn.setIcon(export_icon) self._exporter_btn.setMinimumWidth(80) self._exporter_btn.setCheckable(True) self._importer_btn = buttons.BaseButton('Importer', parent=self) self._importer_btn.setIcon(import_icon) self._importer_btn.setMinimumWidth(80) self._importer_btn.setCheckable(True) buttons_layout.addStretch() buttons_layout.addWidget(self._exporter_btn) buttons_layout.addWidget(self._importer_btn) self._importer_btn.setCheckable(True) self._buttons_grp = QButtonGroup(self) self._buttons_grp.setExclusive(True) self._buttons_grp.addButton(self._exporter_btn) self._buttons_grp.addButton(self._importer_btn) self._exporter_btn.setChecked(True) self._stack = stack.SlidingStackedWidget() self.main_layout.addWidget(self._stack) self._alembic_exporter = exporter.AlembicExporter(project=self.project) self._alembic_importer = importer.AlembicImporter(project=self.project) self._stack.addWidget(self._alembic_exporter) self._stack.addWidget(self._alembic_importer)
def ui(self): super(RenamerView, self).ui() top_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) top_layout.setAlignment(Qt.AlignLeft) self._buttons_grp = QButtonGroup(self) self._buttons_grp.setExclusive(True) self.main_layout.addLayout(top_layout) self.main_layout.addLayout(dividers.DividerLayout()) self._categories_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) self._categories_layout.setAlignment(Qt.AlignLeft) selection_layout = layouts.HorizontalLayout(spacing=2, margins=(4, 0, 4, 0)) top_layout.addLayout(selection_layout) self._all_radio = buttons.BaseRadioButton('All', parent=self) self._all_radio.setFixedHeight(19) self._all_radio.setAutoExclusive(True) self._selected_radio = buttons.BaseRadioButton('Selected', parent=self) self._selected_radio.setFixedHeight(19) self._selected_radio.setChecked(True) self._selected_radio.setAutoExclusive(True) self._hierarchy_cbx = checkbox.BaseCheckBox('Hierarchy', parent=self) self._hierarchy_cbx.setFixedHeight(19) self._node_types_combo = combobox.BaseComboBox(parent=self) self._auto_rename_shapes_cbx = None self._auto_rename_shapes_cbx = checkbox.BaseCheckBox( 'Auto Rename Shapes', parent=self) self._auto_rename_shapes_cbx.setChecked(True) if not dcc.client().is_maya(): self._auto_rename_shapes_cbx.setVisible(False) selection_layout.addWidget(self._selected_radio) selection_layout.addWidget(self._all_radio) selection_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Fixed, QSizePolicy.Fixed)) selection_layout.addWidget(self._hierarchy_cbx) selection_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Fixed, QSizePolicy.Fixed)) selection_layout.addWidget(self._node_types_combo) if self._auto_rename_shapes_cbx: selection_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Fixed, QSizePolicy.Fixed)) selection_layout.addWidget(self._auto_rename_shapes_cbx) self._splitter = splitter.CollapsibleSplitter(parent=self) self._splitter.setOrientation(Qt.Horizontal) self._splitter.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) self._splitter.setMinimumHeight(750) self.main_layout.addWidget(self._splitter) self._rename_tab = tabs.BaseTabWidget(parent=self) self._splitter.addWidget(self._rename_tab) self._manual_rename_widget = manualrenamewidget.ManualRenameWidget( model=self._model, controller=self._controller, parent=self) self._auto_rename_widget = autorenamewidget.AutoRenameWidget( model=self._model, controller=self._controller, parent=self) self._rename_tab.addTab(self._manual_rename_widget, 'Manual') self._rename_tab.addTab(self._auto_rename_widget, 'Auto') self._stack = stack.SlidingStackedWidget() # splitter_right_widget = QWidget() # splitter_right_layout = layouts.VerticalLayout(spacing=0, margins=(0, 0, 0, 0)) # splitter_right_layout.addLayout(self._categories_layout) # splitter_right_layout.addWidget(self._stack) # splitter_right_widget.setLayout(splitter_right_layout) # self._splitter.addWidget(splitter_right_widget) # # no_items_widget = QFrame() # no_items_widget.setFrameShape(QFrame.StyledPanel) # no_items_widget.setFrameShadow(QFrame.Sunken) # no_items_widget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) # no_items_layout = layouts.VerticalLayout(spacing=0, margins=(0, 0, 0, 0)) # no_items_widget.setLayout(no_items_layout) # no_items_lbl = label.BaseLabel() # no_items_pixmap = tp.ResourcesMgr().pixmap('no_items') # no_items_lbl.setPixmap(no_items_pixmap) # no_items_lbl.setAlignment(Qt.AlignCenter) # no_items_layout.addItem(QSpacerItem(0, 10, QSizePolicy.Preferred, QSizePolicy.Expanding)) # no_items_layout.addWidget(no_items_lbl) # no_items_layout.addItem(QSpacerItem(0, 10, QSizePolicy.Preferred, QSizePolicy.Expanding)) # # self._stack.addWidget(no_items_widget) self._splitter.handle(0).collapse() self._splitter.setSizes([1, 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()
def ui(self): super(CategoryWidget, self).ui() filter_layout = layouts.HorizontalLayout(spacing=2, margins=(10, 0, 10, 0)) self.main_layout.addLayout(filter_layout) refresh_icon = resources.icon('refresh') self._refresh_list_btn = buttons.IconButton( icon=refresh_icon, icon_padding=2, button_style=buttons.ButtonStyles.FlatStyle) self._names_filter = search.SearchFindWidget() self._search_lbl = QLabel('0 found') filter_layout.addWidget(self._refresh_list_btn) filter_layout.addWidget(self._names_filter) filter_layout.addWidget(self._search_lbl) self._types_layout = layouts.HorizontalLayout(spacing=2, margins=(0, 0, 0, 0)) self.main_layout.addLayout(self._types_layout) self._names_list = QTreeWidget(self) self._names_list.setHeaderHidden(True) self._names_list.setSortingEnabled(False) self._names_list.setRootIsDecorated(False) self._names_list.setSelectionMode(QAbstractItemView.ExtendedSelection) self._names_list.sortByColumn(0, Qt.AscendingOrder) self._names_list.setUniformRowHeights(True) self._names_list.setAlternatingRowColors(True) self.main_layout.addWidget(self._names_list) bottom_buttons_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) bottom_buttons_layout.setAlignment(Qt.AlignLeft) self.main_layout.addLayout(bottom_buttons_layout) preview_icon = resources.icon('preview') self._sort_btn = buttons.BaseButton('Sort', parent=self) self._sort_btn.setMinimumWidth(40) self._all_btn = buttons.BaseButton('All', parent=self) self._all_btn.setMinimumWidth(40) self._none_btn = buttons.BaseButton('None', parent=self) self._none_btn.setMinimumWidth(40) bottom_buttons_layout.addWidget(self._sort_btn) bottom_buttons_layout.addWidget(self._all_btn) bottom_buttons_layout.addWidget(self._none_btn) bottom_buttons_layout.addWidget( dividers.get_horizontal_separator_widget()) self._hide_default_scene_nodes_cbx = checkbox.BaseCheckBox( 'Hide Default Scene Objects', parent=self) self._hide_default_scene_nodes_cbx.setChecked(True) bottom_buttons_layout.addWidget(self._hide_default_scene_nodes_cbx) self.main_layout.addLayout(dividers.DividerLayout()) preview_layout = layouts.HorizontalLayout(spacing=2, margins=(0, 0, 0, 0)) self.main_layout.addLayout(preview_layout) self._preview_btn = buttons.BaseButton('Preview', parent=self) self._preview_btn.setIcon(preview_icon) self._preview_btn.setCheckable(True) self._preview_btn.setChecked(True) self._preview_btn.setMinimumWidth(100) self._preview_btn.setMaximumWidth(100) self._rename_btn = buttons.BaseButton( 'Select objects in the list to rename ...', parent=self) self._rename_btn.setEnabled(False) preview_layout.addWidget(self._preview_btn) preview_layout.addWidget(self._rename_btn) self._setup_types() self.refresh()
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): 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(ArtellaAssetsLibraryWidget, self).ui() self._stack = stack.SlidingStackedWidget() self.main_layout.addWidget(self._stack) no_assets_widget = QWidget() no_assets_layout = QVBoxLayout() no_assets_layout.setContentsMargins(2, 2, 2, 2) no_assets_layout.setSpacing(2) no_assets_widget.setLayout(no_assets_layout) no_assets_frame = QFrame() no_assets_frame.setFrameShape(QFrame.StyledPanel) no_assets_frame.setFrameShadow(QFrame.Sunken) no_assets_frame_layout = QHBoxLayout() no_assets_frame_layout.setContentsMargins(2, 2, 2, 2) no_assets_frame_layout.setSpacing(2) no_assets_frame.setLayout(no_assets_frame_layout) no_assets_layout.addWidget(no_assets_frame) no_assets_found_label = QLabel() no_assets_found_pixmap = tp.ResourcesMgr().pixmap('no_assets_found') no_assets_found_label.setPixmap(no_assets_found_pixmap) no_assets_frame_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) no_assets_frame_layout.addWidget(no_assets_found_label) no_assets_frame_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) loading_waiter = waiter.ArtellaWaiter() viewer_widget = QWidget() viewer_layout = QVBoxLayout() viewer_layout.setContentsMargins(2, 2, 2, 2) viewer_layout.setSpacing(2) viewer_widget.setLayout(viewer_layout) self._stack.addWidget(no_assets_widget) self._stack.addWidget(viewer_widget) self._stack.addWidget(loading_waiter) self._search = search.SearchFindWidget() self._assets_viewer = assetsviewer.AssetsViewer(project=self._project, column_count=2, parent=self) self._assets_viewer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self._top_layout = QHBoxLayout() self._top_layout.setContentsMargins(0, 0, 0, 0) self._top_layout.setSpacing(2) self._top_layout.setAlignment(Qt.AlignCenter) viewer_layout.addLayout(self._top_layout) self._categories_menu_layout = QHBoxLayout() self._categories_menu_layout.setContentsMargins(0, 0, 0, 0) self._categories_menu_layout.setSpacing(5) self._categories_menu_layout.setAlignment(Qt.AlignTop) self._top_layout.addLayout(self._categories_menu_layout) self._categories_btn_grp = QButtonGroup(self) self._categories_btn_grp.setExclusive(True) viewer_layout.addWidget(self._search) viewer_layout.addWidget(dividers.Divider()) viewer_layout.addWidget(self._assets_viewer) self._supported_types_layout = QHBoxLayout() self._supported_types_layout.setContentsMargins(2, 2, 2, 2) self._supported_types_layout.setSpacing(2) self._supported_types_layout.setAlignment(Qt.AlignTop) viewer_layout.addLayout(self._supported_types_layout) self._supported_types_btn_grp = QButtonGroup(self) self._supported_types_btn_grp.setExclusive(True) self._sync_to_latest = QCheckBox('Sync to Latest Version') self._sync_to_latest.setChecked(True) self._fit_camera_cbx = QCheckBox('Fit Camera') self._fit_camera_cbx.setChecked(False) viewer_layout.addLayout(dividers.DividerLayout()) checkboxes_layout = QHBoxLayout() checkboxes_layout.setContentsMargins(5, 5, 5, 5) checkboxes_layout.setSpacing(2) viewer_layout.addLayout(checkboxes_layout) checkboxes_layout.addWidget(self._sync_to_latest) checkboxes_layout.addWidget(self._fit_camera_cbx) checkboxes_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) viewer_layout.addLayout(dividers.DividerLayout())
def ui(self): super(ArtellaTaggerWidget, self).ui() self.resize(300, 300) self._error_pixmap = tp.ResourcesMgr().pixmap('error', category='icons').scaled( QSize(24, 24)) self._warning_pixmap = tp.ResourcesMgr().pixmap( 'warning', category='icons').scaled(QSize(24, 24)) self._ok_pixmap = tp.ResourcesMgr().pixmap('ok', category='icons').scaled( QSize(24, 24)) top_layout = QHBoxLayout() top_layout.setContentsMargins(2, 2, 2, 2) top_layout.setSpacing(5) self.main_layout.addLayout(top_layout) select_tag_data_btn = QPushButton('Select Tag Data') select_tag_data_btn.setMinimumWidth(125) select_tag_data_btn.setIcon(tp.ResourcesMgr().icon('tag')) remove_tag_data_btn = QPushButton('Remove Tag Data') remove_tag_data_btn.setMinimumWidth(125) remove_tag_data_btn.setIcon(tp.ResourcesMgr().icon('tag_remove')) top_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) # export_tag_data_btn = QPushButton('Export Tag Data') # export_tag_data_btn.setEnabled(False) # import_tag_data_btn = QPushButton('Import Tag Data') # import_tag_data_btn.setEnabled(False) top_layout.addWidget(select_tag_data_btn) top_layout.addWidget(remove_tag_data_btn) # top_layout.addWidget(export_tag_data_btn) # top_layout.addWidget(import_tag_data_btn) top_layout.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) self.main_layout.addLayout(dividers.DividerLayout()) # ====================================================================================== breadcrumb_layout = QHBoxLayout() breadcrumb_layout.setContentsMargins(2, 2, 2, 2) breadcrumb_layout.setSpacing(2) self._breadcrumb = breadcrumb.BreadcrumbFrame() self._curr_info_image = QLabel() self._curr_info_image.setAlignment(Qt.AlignCenter) self._curr_info_image.setPixmap(self._error_pixmap) breadcrumb_layout.addWidget(self._curr_info_image) breadcrumb_layout.addWidget(self._breadcrumb) self.main_layout.addLayout(breadcrumb_layout) # ====================================================================================== self._stack = stack.SlidingStackedWidget() self.main_layout.addWidget(self._stack) # ====================================================================================== self._tagger_info = taggerinfo.TaggerInfoWidget() self._tagger_info.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self._stack.addWidget(self._tagger_info) # ====================================================================================== editors_widget = QWidget() editors_layout = QVBoxLayout() editors_layout.setContentsMargins(2, 2, 2, 2) editors_layout.setSpacing(2) editors_widget.setLayout(editors_layout) self._tag_types_menu_layout = QHBoxLayout() self._tag_types_menu_layout.setContentsMargins(0, 0, 0, 0) self._tag_types_menu_layout.setSpacing(0) self._tag_types_menu_layout.setAlignment(Qt.AlignTop) editors_layout.addLayout(self._tag_types_menu_layout) self._tag_types_btn_grp = QButtonGroup(self) self._tag_types_btn_grp.setExclusive(True) editors_layout.addLayout(self._tag_types_menu_layout) self._editors_stack = stack.SlidingStackedWidget() editors_layout.addWidget(self._editors_stack) self._stack.addWidget(editors_widget) # ================================================================================ self._tagger_info.createTagNode.connect( self._on_create_new_tag_data_node_for_current_selection) select_tag_data_btn.clicked.connect( artellapipe.TagsMgr().select_tag_data_node) remove_tag_data_btn.clicked.connect(self._on_remove_tag_data_node)
def ui(self): super(NumberSideView, self).ui() rename_mult_layout = layouts.HorizontalLayout(spacing=5, margins=(0, 0, 0, 0)) rename_mult_layout.setAlignment(Qt.AlignLeft) self.main_layout.addLayout(rename_mult_layout) self._rename_mult_cbx = checkbox.BaseCheckBox(parent=self) self._rename_mult_cbx.setChecked(True) self._rename_mult_method_lbl = label.BaseLabel('Number: ', parent=self) self._renamer_mult_method_combo = combobox.BaseComboBox(parent=self) self._renamer_mult_method_combo.addItem('Numbers (0-9)') self._renamer_mult_method_combo.addItem('Letters (a-z)') rename_mult_layout.addWidget(self._rename_mult_cbx) rename_mult_layout.addWidget(self._rename_mult_method_lbl) rename_mult_layout.addWidget(self._renamer_mult_method_combo) self._frame_pad_lbl = label.BaseLabel('Pad: ', parent=self) self._frame_pad_spin = spinbox.BaseSpinBox(parent=self) self._frame_pad_spin.setValue(2) self._frame_pad_spin.setFocusPolicy(Qt.NoFocus) self._frame_pad_spin.setMinimum(1) self._frame_pad_spin.setMaximum(10) self._frame_combo = combobox.BaseComboBox(parent=self) self._frame_combo.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self._frame_combo.addItems(['Replace', 'Append', 'Change Pad']) self._frame_btn = buttons.BaseButton() self._frame_btn.setIcon(resources.icon('numbered_list')) rename_mult_layout.addWidget(self._frame_pad_lbl) rename_mult_layout.addWidget(self._frame_pad_spin) rename_mult_layout.addWidget(self._frame_combo) lower_upper_grp = QButtonGroup(self) self._lower_radio = buttons.BaseRadioButton('Lower', parent=self) self._upper_radio = buttons.BaseRadioButton('Upper', parent=self) lower_upper_grp.addButton(self._lower_radio) lower_upper_grp.addButton(self._upper_radio) self._lower_radio.setVisible(False) self._upper_radio.setVisible(False) self._lower_radio.setFixedHeight(19) self._upper_radio.setFixedHeight(19) self._upper_radio.setAutoExclusive(True) self._lower_radio.setAutoExclusive(True) self._lower_radio.setChecked(True) self._lower_radio.setEnabled(False) self._upper_radio.setEnabled(False) rename_mult_layout.addWidget(self._lower_radio) rename_mult_layout.addWidget(self._upper_radio) rename_mult_layout.addWidget(self._frame_btn) self.main_layout.addLayout(dividers.DividerLayout()) side_layout = layouts.HorizontalLayout(spacing=2, margins=(0, 0, 0, 0)) side_layout.setAlignment(Qt.AlignLeft) self.main_layout.addLayout(side_layout) self._side_cbx = checkbox.BaseCheckBox(parent=self) self._side_cbx.setChecked(True) side_layout.addWidget(self._side_cbx) self._side_lbl = label.BaseLabel('Side: ', parent=self) self._none_side = buttons.BaseRadioButton('None', parent=self) self._right_side = buttons.BaseRadioButton('Right', parent=self) self._center_side = buttons.BaseRadioButton('Center', parent=self) self._mid_side = buttons.BaseRadioButton('Mid', parent=self) self._left_side = buttons.BaseRadioButton('Left', parent=self) self._none_side.setFixedHeight(15) self._right_side.setFixedHeight(15) self._center_side.setFixedHeight(15) self._mid_side.setFixedHeight(15) self._left_side.setFixedHeight(15) side_layout.addWidget(self._side_lbl) side_layout.addWidget(self._none_side) side_layout.addWidget(self._right_side) side_layout.addWidget(self._center_side) side_layout.addWidget(self._mid_side) side_layout.addWidget(self._left_side) self._none_side.setAutoExclusive(True) self._right_side.setAutoExclusive(True) self._center_side.setAutoExclusive(True) self._mid_side.setAutoExclusive(True) self._left_side.setAutoExclusive(True) self._none_side.setChecked(True) self._capital_side = checkbox.BaseCheckBox('Capital?', parent=self) self._side_btn = buttons.BaseButton(parent=self) self._side_btn.setIcon(resources.icon('font_size')) side_layout.addStretch() side_layout.addWidget(self._capital_side) side_layout.addStretch() side_layout.addWidget(self._side_btn)
def ui(self): super(ArtellaUploader, self).ui() self._path_widget = QWidget() path_layout = QVBoxLayout() path_layout.setContentsMargins(0, 0, 0, 0) path_layout.setSpacing(0) path_base_layout = QHBoxLayout() path_base_layout.setContentsMargins(0, 0, 0, 0) path_base_layout.setSpacing(0) path_layout.addLayout(path_base_layout) self._path_widget.setLayout(path_layout) path_lbl = QLabel('Path: ') path_lbl.setFixedWidth(30) self._folder_path = QLineEdit() tip = 'Select folder where files to batch are located' self._folder_path.setToolTip(tip) self._folder_path.setStatusTip(tip) self._folder_path.setContextMenuPolicy(Qt.CustomContextMenu) browse_icon = tp.ResourcesMgr().icon('open') self._browse_btn = QPushButton() self._browse_btn.setFlat(True) self._browse_btn.setIcon(browse_icon) self._browse_btn.setFixedWidth(30) self._browse_btn.setToolTip('Browse Root Folder') self._browse_btn.setStatusTip('Browse Root Folder') sync_icon = tp.ResourcesMgr().icon('sync') self._sync_btn = QPushButton() self._sync_btn.setFlat(True) self._sync_btn.setIcon(sync_icon) path_base_layout.addWidget(path_lbl) path_base_layout.addWidget(self._folder_path) path_base_layout.addWidget(self._browse_btn) path_base_layout.addWidget(dividers.get_horizontal_separator_widget()) path_base_layout.addWidget(self._sync_btn) self._all_cbx = QCheckBox() self._all_cbx.setChecked(True) cbx_lyt = QHBoxLayout() cbx_lyt.setContentsMargins(0, 0, 0, 0) cbx_lyt.setSpacing(0) cbx_lyt.addWidget(self._all_cbx) cbx_lyt.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) self._total_items_lbl = QLabel('') cbx_lyt.addItem( QSpacerItem(10, 0, QSizePolicy.Expanding, QSizePolicy.Preferred)) cbx_lyt.addWidget(self._total_items_lbl) self._files_list = QTreeWidget() self._files_list.setColumnCount(4) self._files_list.setAlternatingRowColors(True) self._files_list.setHeaderLabels( ['', 'Path', 'Current Version', 'New Version']) self._files_list.setColumnWidth(0, 80) self._files_list.resizeColumnToContents(1) self._files_list.setColumnWidth(2, 120) self._progress = self._project.get_progress_bar() self._progress.setVisible(False) self._progress.setTextVisible(False) self._progress_lbl = QLabel('') self._progress_lbl.setAlignment(Qt.AlignCenter) buttons_layout = QHBoxLayout() buttons_layout.setContentsMargins(2, 2, 2, 2) buttons_layout.setSpacing(2) lock_icon = tp.ResourcesMgr().icon('lock') unlock_icon = tp.ResourcesMgr().icon('unlock') upload_icon = tp.ResourcesMgr().icon('upload') self._lock_btn = QPushButton('Lock') self._lock_btn.setIcon(lock_icon) self._unlock_btn = QPushButton('Unlock') self._unlock_btn.setIcon(unlock_icon) self._upload_btn = QPushButton('Upload') self._upload_btn.setIcon(upload_icon) buttons_layout.addWidget(self._lock_btn) buttons_layout.addWidget(self._unlock_btn) buttons_layout.addWidget(self._upload_btn) self.main_layout.addWidget(self._path_widget) self.main_layout.addLayout(dividers.DividerLayout()) self.main_layout.addLayout(cbx_lyt) self.main_layout.addWidget(self._files_list) self.main_layout.addWidget(self._progress) self.main_layout.addWidget(self._progress_lbl) self.main_layout.addLayout(buttons_layout) self._files_list.model().dataChanged.connect(self._on_data_changed) self._browse_btn.clicked.connect(self._on_browse) self._sync_btn.clicked.connect(self._on_sync) self._all_cbx.toggled.connect(self._on_toggle_all) self._lock_btn.clicked.connect(self._on_lock) self._upload_btn.clicked.connect(self._on_upload) self._unlock_btn.clicked.connect(self._on_unlock)