コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    def ui(self):

        self.color_buttons = list()

        super(BaseColorDialog, self).ui()

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

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

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

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

        self.ok_btn = QPushButton('Ok')
        self.cancel_btn = QPushButton('Cancel')
        bottom_layout.addLayout(dividers.DividerLayout())
        bottom_layout.addWidget(self.ok_btn)
        bottom_layout.addWidget(self.cancel_btn)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    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()
コード例 #7
0
    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()
コード例 #8
0
    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)
コード例 #9
0
    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)
コード例 #10
0
    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)
コード例 #11
0
    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)
コード例 #12
0
    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)
コード例 #13
0
    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()
コード例 #14
0
    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)
コード例 #15
0
    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])
コード例 #16
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()
コード例 #17
0
    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()
コード例 #18
0
    def ui(self):
        super(BaseAlembicExporter, self).ui()

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

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

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

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

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

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

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

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

        exporter_layout.addLayout(dividers.DividerLayout())

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

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

        exporter_layout.addLayout(dividers.DividerLayout())

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

        exporter_layout.addStretch()

        self.refresh()
コード例 #19
0
    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)
コード例 #20
0
    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())
コード例 #21
0
    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)
コード例 #22
0
    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)