Esempio n. 1
0
    def generate_lines(self):
        '''
        Will generate lines of project list
        '''

        self.listWidget = QtWidgets.QListWidget()
        for self.index, p in enumerate(self.projects):
            item = QtWidgets.QListWidgetItem("{full_name}".format(**p))
            # item.setSelected(False)
            self.listWidget.addItem(item)
        print(self.listWidget.indexFromItem(item))
        # self.listWidget.setCurrentItem(self.listWidget.itemFromIndex(1))

        # add options to schemas widget
        self.schema_combobox.addItems(self.schemas)

        # add options to disk widget
        self.disk_combobox.addItems(self.disks)

        # populate content of project info widgets
        self.projects[1] = self._fill_project_attributes_widgets(p, None)
    def setup_ui(self):
        """Build the initial UI"""

        MULTI_SELECT = QtWidgets.QAbstractItemView.ExtendedSelection

        layout = QtWidgets.QVBoxLayout(self)

        publish = QtWidgets.QCheckBox("Suspend Publish Job")
        extend_frames = QtWidgets.QCheckBox("Extend Frames")
        override_frames = QtWidgets.QCheckBox("Override Frames")
        override_frames.setEnabled(False)
        defaultlayer = QtWidgets.QCheckBox("Include Default Render Layer")
        maya_batch_checkbox = QtWidgets.QCheckBox("Use MayaBatch")
        maya_batch_checkbox.setChecked(True)
        maya_batch_checkbox.setToolTip(
            'This uses the MayaBatch plugin. It keeps the scenes loaded '
            'between frames, which reduces the overhead of rendering the '
            'job.\nIt is however easier to debug a render when turning this '
            'off and render using MayaCmd')

        # region Priority
        priority_grp = QtWidgets.QGroupBox("Priority")
        priority_hlayout = QtWidgets.QHBoxLayout()

        priority_value = QtWidgets.QSpinBox()
        priority_value.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
        priority_value.setEnabled(False)
        priority_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        priority_slider.setMinimum(0)
        priority_slider.setMaximum(99)

        priority_hlayout.addWidget(priority_value)
        priority_hlayout.addWidget(priority_slider)
        priority_grp.setLayout(priority_hlayout)
        # endregion Priority

        # region ChunkSize
        chunksize_grp = QtWidgets.QGroupBox("Frames Per Task")
        chunksize_hlayout = QtWidgets.QHBoxLayout()

        chunksize_value = QtWidgets.QSpinBox()
        chunksize_value.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)
        chunksize_value.setEnabled(False)
        chunksize_value.setValue(1)  # default value
        chunksize_value.setMinimum(1)
        chunksize_value.setMaximum(99)
        chunksize_slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        chunksize_slider.setMinimum(1)
        chunksize_slider.setMaximum(99)

        chunksize_hlayout.addWidget(chunksize_value)
        chunksize_hlayout.addWidget(chunksize_slider)
        chunksize_grp.setLayout(chunksize_hlayout)
        # endregion

        # region pools
        pools_grp = QtWidgets.QGroupBox("Pools")
        pools_vlayout = QtWidgets.QVBoxLayout()

        primary_hlayout = QtWidgets.QHBoxLayout()
        primary_label = QtWidgets.QLabel("Primary")
        primary_pool = QtWidgets.QComboBox()
        primary_hlayout.addWidget(primary_label)
        primary_hlayout.addWidget(primary_pool)

        secondary_hlayout = QtWidgets.QHBoxLayout()
        secondary_label = QtWidgets.QLabel("Secondary")
        secondary_pool = QtWidgets.QComboBox()
        secondary_hlayout.addWidget(secondary_label)
        secondary_hlayout.addWidget(secondary_pool)

        pools_vlayout.addLayout(primary_hlayout)
        pools_vlayout.addLayout(secondary_hlayout)

        pools_grp.setLayout(pools_vlayout)
        # endregion pools

        # Group box for type of machine list
        list_type_grp = QtWidgets.QGroupBox("Machine List Type")
        list_type_hlayout = QtWidgets.QHBoxLayout()

        black_list = QtWidgets.QRadioButton("Blacklist")
        black_list.setChecked(True)
        black_list.setToolTip("List machines which the job WILL NOT use")

        white_list = QtWidgets.QRadioButton("Whitelist")
        white_list.setToolTip("List machines which the job WILL use")

        list_type_hlayout.addWidget(black_list)
        list_type_hlayout.addWidget(white_list)
        list_type_grp.setLayout(list_type_hlayout)

        # region Machine selection
        machines_hlayout = QtWidgets.QHBoxLayout()
        machines_hlayout.setSpacing(2)
        machine_list = QtWidgets.QListWidget()
        listed_machines = QtWidgets.QListWidget()

        # Buttons
        button_vlayout = QtWidgets.QVBoxLayout()
        button_vlayout.setAlignment(QtCore.Qt.AlignCenter)
        button_vlayout.setSpacing(4)

        add_machine_btn = QtWidgets.QPushButton(">")
        add_machine_btn.setFixedWidth(25)

        remove_machine_btn = QtWidgets.QPushButton("<")
        remove_machine_btn.setFixedWidth(25)

        button_vlayout.addWidget(add_machine_btn)
        button_vlayout.addWidget(remove_machine_btn)

        machines_hlayout.addWidget(machine_list)
        machines_hlayout.addLayout(button_vlayout)
        machines_hlayout.addWidget(listed_machines)

        # Machine selection widget settings
        machine_list.setSelectionMode(MULTI_SELECT)
        listed_machines.setSelectionMode(MULTI_SELECT)

        # endregion
        accept_btn = QtWidgets.QPushButton("Use Settings")

        layout.addWidget(defaultlayer)
        layout.addWidget(publish)
        layout.addWidget(extend_frames)
        layout.addWidget(override_frames)
        layout.addWidget(maya_batch_checkbox)
        layout.addWidget(priority_grp)
        layout.addWidget(chunksize_grp)
        layout.addWidget(pools_grp)
        layout.addWidget(list_type_grp)
        layout.addLayout(machines_hlayout)
        layout.addWidget(accept_btn)

        # Enable access for all methods
        self.publish = publish
        self.extend_frames = extend_frames
        self.override_frames = override_frames
        self.defaultlayer = defaultlayer

        self.priority_value = priority_value
        self.priority_slider = priority_slider

        self.chunksize_value = chunksize_value
        self.chunksize_slider = chunksize_slider

        self.primary_pool = primary_pool
        self.secondary_pool = secondary_pool

        self.black_list = black_list
        self.white_list = white_list
        self.machine_list = machine_list

        self.listed_machines = listed_machines
        self.add_machine_btn = add_machine_btn
        self.remove_machine_btn = remove_machine_btn

        self.use_maya_batch = maya_batch_checkbox
        self.accept = accept_btn

        self.setLayout(layout)
Esempio n. 3
0
    def __init__(self, session=None, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        # Attributes
        self._context = None
        self._session = session or api.Session
        self.log = logging.getLogger("File Sequence Publisher")

        # Build UI
        window_icon = qta.icon("fa.filter", color=style.colors.default)
        self.setWindowIcon(window_icon)
        self.setWindowTitle("File Sequence Publisher")

        layout = QtWidgets.QVBoxLayout()

        breadcrumps = SimpleContextSwitcher()

        set_context_btn = QtWidgets.QPushButton("Set Context")

        browse_hlayout = QtWidgets.QHBoxLayout()
        file_path = QtWidgets.QLineEdit()
        browse_button = QtWidgets.QPushButton("Browse")
        browse_hlayout.addWidget(file_path)
        browse_hlayout.addWidget(browse_button)

        family_layout = QtWidgets.QHBoxLayout()
        family_label = QtWidgets.QLabel("Family")
        family_label.setFixedWidth(50)
        family_box = SearchComboBox()
        family_layout.addWidget(family_label)
        family_layout.addWidget(family_box)

        collect_layout = QtWidgets.QVBoxLayout()
        collect_buttons_hlayout = QtWidgets.QHBoxLayout()

        refresh_icon = qta.icon("fa.refresh", color=style.colors.default)
        refresh_button = QtWidgets.QPushButton()
        refresh_button.setIcon(refresh_icon)
        refresh_button.setFixedWidth(28)
        collect_button = QtWidgets.QPushButton("Collect")
        collect_buttons_hlayout.addWidget(collect_button)
        collect_buttons_hlayout.addWidget(refresh_button)

        collect_view = QtWidgets.QListWidget()
        collect_view.setAlternatingRowColors(True)
        collect_view.setSelectionMode(3)
        collect_view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        collect_view.customContextMenuRequested.connect(
            self.show_right_mouse_menu)

        collect_layout.addLayout(collect_buttons_hlayout)
        collect_layout.addWidget(collect_view)

        publish_button = QtWidgets.QPushButton("Publish")
        publish_button.setEnabled(False)

        layout.addWidget(breadcrumps)
        layout.addLayout(browse_hlayout)
        layout.addLayout(family_layout)
        layout.addLayout(collect_layout)
        layout.addWidget(publish_button)

        self.setLayout(layout)

        self.set_context_btn = set_context_btn

        self.browse = browse_button
        self.file_path = file_path
        self.family = family_box
        self.collect_button = collect_button
        self.collection_view = collect_view
        self.publish_button = publish_button
        self.refresh_button = refresh_button

        self.make_connections()

        self.install()

        self.get_families()

        self.resize(self.sizeHint())