Esempio n. 1
0
    def __init__(self, parent=None):
        super(HostSelectorWidget, self).__init__(parent=parent)

        panel = {
            "selection": QtWidgets.QWidget(),
            "container": QtWidgets.QWidget(),
        }

        model = {
            "containerModel": models.HostContainerListModel(),
        }

        widget = {
            "selectionChk": QtWidgets.QCheckBox("Use Selection"),
            "selectionBtn": QtWidgets.QPushButton("Compare Selection"),
            "containerChk": QtWidgets.QCheckBox("Use Container"),
            "containerBox": QtWidgets.QComboBox(),
        }

        widget["containerBox"].setModel(model["containerModel"])

        layout = QtWidgets.QVBoxLayout(panel["selection"])
        layout.addWidget(widget["selectionChk"])
        layout.addWidget(widget["selectionBtn"])

        layout = QtWidgets.QVBoxLayout(panel["container"])
        layout.addWidget(widget["containerChk"])
        layout.addWidget(widget["containerBox"])

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(panel["selection"])
        layout.addWidget(panel["container"])

        # Connect

        widget["selectionChk"].stateChanged.connect(self.on_use_selection)
        widget["containerChk"].stateChanged.connect(self.on_use_container)
        widget["selectionBtn"].pressed.connect(self.on_selection_pressed)
        widget["containerBox"].currentIndexChanged.connect(
            self.on_container_picked)

        # Init

        self.widget = widget
        self.model = model

        widget["containerChk"].setCheckState(QtCore.Qt.Checked)

        # Confirm host registered
        if not has_host():
            # Disable all widgets
            for widget in self.widget.values():
                widget.setEnabled(False)
Esempio n. 2
0
    def setup_ui(self):
        """Build the UI"""

        # Assets (left)
        asset_outliner = widgets.AssetOutliner()

        # Looks (right)
        looks_widget = QtWidgets.QWidget()
        looks_layout = QtWidgets.QVBoxLayout(looks_widget)

        look_outliner = widgets.LookOutliner()  # Database look overview

        assign_selected = QtWidgets.QCheckBox("Assign to selected only")
        assign_selected.setToolTip("Whether to assign only to selected nodes "
                                   "or to the full asset")
        remove_unused_btn = QtWidgets.QPushButton("Remove Unused Looks")

        looks_layout.addWidget(look_outliner)
        looks_layout.addWidget(assign_selected)
        looks_layout.addWidget(remove_unused_btn)

        # Footer
        status = QtWidgets.QStatusBar()
        status.setSizeGripEnabled(False)
        status.setFixedHeight(25)
        warn_layer = QtWidgets.QLabel("Current Layer is not "
                                      "defaultRenderLayer")
        warn_layer.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
        warn_layer.setStyleSheet("color: #DD5555; font-weight: bold;")
        warn_layer.setFixedHeight(25)

        footer = QtWidgets.QHBoxLayout()
        footer.setContentsMargins(0, 0, 0, 0)
        footer.addWidget(status)
        footer.addWidget(warn_layer)

        # Build up widgets
        main_layout = QtWidgets.QVBoxLayout(self)
        main_layout.setSpacing(0)
        main_splitter = QtWidgets.QSplitter()
        main_splitter.setStyleSheet("QSplitter{ border: 0px; }")
        main_splitter.addWidget(asset_outliner)
        main_splitter.addWidget(looks_widget)
        main_splitter.setSizes([350, 200])
        main_layout.addWidget(main_splitter)
        main_layout.addLayout(footer)

        # Set column width
        asset_outliner.view.setColumnWidth(0, 200)
        look_outliner.view.setColumnWidth(0, 150)

        # Open widgets
        self.asset_outliner = asset_outliner
        self.look_outliner = look_outliner
        self.status = status
        self.warn_layer = warn_layer

        # Buttons
        self.remove_unused = remove_unused_btn
        self.assign_selected = assign_selected
Esempio n. 3
0
    def create_tab(self):
        panel = {
            "body": QtWidgets.QWidget(),
            "top": QtWidgets.QWidget(),
            "control": QtWidgets.QWidget(),
            "table": QtWidgets.QWidget(),
        }

        widget = {
            "label": QtWidgets.QLabel("Table Name:"),
            "line": QtWidgets.QLineEdit(),
            "nameChk": QtWidgets.QCheckBox("Show Long Name"),
            "selectorA": views.SelectorWidget(side=views.SIDE_A),
            "selectorB": views.SelectorWidget(side=views.SIDE_B),
            "comparer": views.ComparingTable(),
            "statusLine": widgets.StatusLineWidget(main_logger, self),
        }

        layout = QtWidgets.QHBoxLayout(panel["top"])
        layout.addWidget(widget["label"])
        layout.addWidget(widget["line"])
        layout.addWidget(widget["nameChk"])

        layout = QtWidgets.QHBoxLayout(panel["control"])
        layout.addWidget(widget["selectorA"])
        layout.addWidget(widget["selectorB"])

        layout = QtWidgets.QVBoxLayout(panel["table"])
        layout.addWidget(widget["comparer"])
        layout.addWidget(widget["statusLine"])

        layout = QtWidgets.QVBoxLayout(panel["body"])
        layout.addWidget(panel["top"])
        layout.addSpacing(-14)
        layout.addWidget(panel["control"])
        layout.addSpacing(-24)
        layout.addWidget(panel["table"], stretch=True)
        layout.setContentsMargins(0, 0, 0, 0)

        tab = self.page["tab"]

        # Add Tab
        name = "New %d" % tab.count()
        index = tab.addTab(panel["body"], name)
        tab.setCurrentIndex(index)
        widget["line"].setText(name)

        # Connect
        widget["selectorA"].connect_comparer(widget["comparer"])
        widget["selectorB"].connect_comparer(widget["comparer"])
        widget["nameChk"].stateChanged.connect(
            widget["comparer"].on_name_mode_changed)
        widget["line"].textChanged.connect(
            lambda text: tab.setTabText(index, text))
Esempio n. 4
0
    def __init__(self, parent=None, *args, **kwargs):
        Popup.__init__(self, parent=parent, *args, **kwargs)

        layout = self.layout()

        # Insert toggle for Update keys
        toggle = QtWidgets.QCheckBox("Update Keys")
        layout.insertWidget(1, toggle)
        self.widgets["toggle"] = toggle

        self.on_clicked.connect(self.emit_click_with_state)

        layout.insertStretch(1, 1)
Esempio n. 5
0
    def __init__(self, parent=None, *args, **kwargs):
        Popup.__init__(self, parent=parent, *args, **kwargs)

        layout = self.layout()

        # Add toggle
        toggle = QtWidgets.QCheckBox("Update Keys")
        layout.insertWidget(1, toggle)
        self.widgets["toggle"] = toggle

        layout.insertStretch(1, 1)

        # Update button text
        fix = self.widgets["show"]
        fix.setText("Fix")
Esempio n. 6
0
    def __init__(self, root=None, callback=None, with_keys=None, parent=None):
        super(Window, self).__init__(parent=parent)
        self.setWindowTitle("Setup Sequences")

        icon_dir = qtawesome.icon("fa.folder-open", color="gray")

        data = pindict.to_pindict({
            "rootPath": {
                "main": QtWidgets.QWidget(),
                "label": QtWidgets.QLabel("Root: "),
                "path": QtWidgets.QLineEdit(),
                "find": QtWidgets.QPushButton(icon_dir, "Browse.."),
            },
            "sequences": {
                "main": QtWidgets.QWidget(),
                "options": QtWidgets.QWidget(),
                "single": QtWidgets.QCheckBox("Include Single Frame"),
                "stereo": QtWidgets.QCheckBox("Pair Stereo Sequences"),
                "nameRegex": QtWidgets.QWidget(),
                "label": QtWidgets.QLabel("Channel Name: "),
                "nHead": QtWidgets.QLineEdit(),
                "nTail": QtWidgets.QLineEdit(),
                "view": widgets.SequenceWidget(),
            },
            "endDialog": {
                "main": QtWidgets.QWidget(),
                "accept": QtWidgets.QPushButton("Accept"),
                "cancel": QtWidgets.QPushButton("Cancel"),
                "callback": callback,
                "with_keys": with_keys,
            },
        })

        with data.pin("rootPath") as root_path:
            layout = QtWidgets.QHBoxLayout(root_path["main"])
            layout.addWidget(root_path["label"])
            layout.addWidget(root_path["path"], stretch=True)
            layout.addWidget(root_path["find"])
            layout.setContentsMargins(4, 0, 4, 0)

        with data.pin("sequences") as sequences:
            layout = QtWidgets.QHBoxLayout(sequences["options"])
            layout.addWidget(sequences["single"])
            layout.addSpacing(5)
            layout.addWidget(sequences["stereo"])
            layout.addStretch()
            layout.setContentsMargins(2, 2, 2, 2)
            layout = QtWidgets.QHBoxLayout(sequences["nameRegex"])
            layout.addWidget(sequences["label"])
            layout.addWidget(sequences["nHead"], stretch=True)
            layout.addWidget(sequences["nTail"], stretch=True)
            layout.setContentsMargins(2, 2, 2, 2)
            layout = QtWidgets.QVBoxLayout(sequences["main"])
            layout.addWidget(sequences["options"])
            layout.addSpacing(8)
            layout.addWidget(sequences["nameRegex"])
            layout.addWidget(sequences["view"])
            layout.setContentsMargins(4, 6, 4, 0)

        with data.pin("endDialog") as end_dialog:
            layout = QtWidgets.QHBoxLayout(end_dialog["main"])
            layout.addWidget(end_dialog["accept"])
            layout.addWidget(end_dialog["cancel"])
            layout.setContentsMargins(4, 0, 4, 0)

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(data["rootPath"]["main"])
        layout.addWidget(data["sequences"]["main"], stretch=True)
        layout.addWidget(data["endDialog"]["main"])

        if root:
            data["rootPath"]["path"].setText(root)
            data["rootPath"]["find"].setEnabled(False)
            data["sequences"]["single"].setEnabled(False)
        data["rootPath"]["path"].setReadOnly(True)

        data["rootPath"]["path"].textChanged.connect(self.find_sequences)
        data["rootPath"]["find"].clicked.connect(self.open_browser)

        data["sequences"]["single"].stateChanged.connect(self.on_single)
        data["sequences"]["stereo"].stateChanged.connect(self.on_stereo)

        data["sequences"]["nHead"].textChanged.connect(self.on_nhead_changed)
        data["sequences"]["nTail"].textChanged.connect(self.on_ntail_changed)

        data["endDialog"]["accept"].clicked.connect(self.on_accepted)
        data["endDialog"]["cancel"].clicked.connect(self.reject)

        self.data = data

        # Defaults
        self.is_single = False
        self.is_stereo = False
        self.from_cache = False
        self.resize(600, 800)
    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. 8
0
    def setup_ui(self):
        """Build the UI"""

        # Assets (left)
        asset_outliner = widgets.AssetOutliner()

        # Looks (right)
        looks_widget = QtWidgets.QWidget()
        looks_layout = QtWidgets.QVBoxLayout(looks_widget)
        # Sub widgets and layouts
        db_looks_widget = QtWidgets.QWidget()
        db_looks_layout = QtWidgets.QVBoxLayout(db_looks_widget)
        loaded_looks_widget = QtWidgets.QWidget()
        loaded_looks_layout = QtWidgets.QVBoxLayout(loaded_looks_widget)

        # Database look overview
        look_outliner = widgets.LookOutliner()
        # Scene look overview
        loaded_look_outliner = widgets.LoadedLookOutliner()
        # Button and checkBox
        overload_chk = QtWidgets.QCheckBox("Overload Looks")
        remove_unused_btn = QtWidgets.QPushButton("Remove Unused Looks")

        db_looks_layout.addWidget(look_outliner)
        db_looks_layout.addWidget(overload_chk)
        loaded_looks_layout.addWidget(loaded_look_outliner)

        # Look Splitter
        look_splitter = QtWidgets.QSplitter()
        look_splitter.setOrientation(QtCore.Qt.Vertical)
        look_splitter.setStyleSheet("QSplitter{ border: 0px; }")
        look_splitter.addWidget(db_looks_widget)
        look_splitter.addWidget(loaded_looks_widget)
        look_splitter.setSizes([200, 120])

        looks_layout.addWidget(look_splitter)
        looks_layout.addWidget(remove_unused_btn)

        # Footer
        status = QtWidgets.QStatusBar()
        status.setSizeGripEnabled(False)
        status.setFixedHeight(25)
        warn_layer = QtWidgets.QLabel("Current Layer is not "
                                      "defaultRenderLayer")
        warn_layer.setAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter)
        warn_layer.setStyleSheet("color: #DD5555; font-weight: bold;")
        warn_layer.setFixedHeight(25)

        footer = QtWidgets.QHBoxLayout()
        footer.setContentsMargins(0, 0, 0, 0)
        footer.addWidget(status)
        footer.addWidget(warn_layer)

        # Build up widgets
        main_layout = QtWidgets.QVBoxLayout(self)
        main_layout.setSpacing(0)
        main_splitter = QtWidgets.QSplitter()
        main_splitter.setStyleSheet("QSplitter{ border: 0px; }")
        main_splitter.addWidget(asset_outliner)
        main_splitter.addWidget(looks_widget)
        main_splitter.setSizes([350, 280])
        main_layout.addWidget(main_splitter)
        main_layout.addLayout(footer)

        # Set column width
        asset_outliner.view.setColumnWidth(0, 200)
        look_outliner.view.setColumnWidth(0, 140)  # "label" column
        look_outliner.view.setColumnWidth(2, 50)  # "match" column

        loaded_look_outliner.view.setColumnWidth(0, 140)  # "label" column
        loaded_look_outliner.view.setColumnWidth(1, 60)  # "ident" column

        # Open widgets
        self.asset_outliner = asset_outliner
        self.look_outliner = look_outliner
        self.loaded_look_outliner = loaded_look_outliner
        self.status = status
        self.warn_layer = warn_layer

        # Buttons and CheckBoxes
        self.remove_unused = remove_unused_btn
        self.overload = overload_chk
Esempio n. 9
0
    def __init__(self, parent=None, context=None):
        super(Window, self).__init__(parent)
        self.context = context
        project_name = io.active_project()
        self.setWindowTitle("Asset creator ({0})".format(project_name))
        self.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        # Validators
        self.valid_parent = False

        self.session = None

        # assets widget
        assets_widget = QtWidgets.QWidget()
        assets_widget.setContentsMargins(0, 0, 0, 0)
        assets_layout = QtWidgets.QVBoxLayout(assets_widget)
        assets = widget.AssetWidget()
        assets.view.setSelectionMode(assets.view.ExtendedSelection)
        assets_layout.addWidget(assets)

        # Outlink
        label_outlink = QtWidgets.QLabel("Outlink:")
        input_outlink = QtWidgets.QLineEdit()
        input_outlink.setReadOnly(True)
        input_outlink.setStyleSheet("background-color: #333333;")
        checkbox_outlink = QtWidgets.QCheckBox("Use outlink")
        # Parent
        label_parent = QtWidgets.QLabel("*Parent:")
        input_parent = QtWidgets.QLineEdit()
        input_parent.setReadOnly(True)
        input_parent.setStyleSheet("background-color: #333333;")

        # Name
        label_name = QtWidgets.QLabel("*Name:")
        input_name = QtWidgets.QLineEdit()
        input_name.setPlaceholderText("<asset name>")

        # Asset Build
        label_assetbuild = QtWidgets.QLabel("Asset Build:")
        combo_assetbuilt = QtWidgets.QComboBox()

        # Task template
        label_task_template = QtWidgets.QLabel("Task template:")
        combo_task_template = QtWidgets.QComboBox()

        # Info widget
        info_widget = QtWidgets.QWidget()
        info_widget.setContentsMargins(10, 10, 10, 10)
        info_layout = QtWidgets.QVBoxLayout(info_widget)

        # Inputs widget
        inputs_widget = QtWidgets.QWidget()
        inputs_widget.setContentsMargins(0, 0, 0, 0)

        inputs_layout = QtWidgets.QFormLayout(inputs_widget)
        inputs_layout.addRow(label_outlink, input_outlink)
        inputs_layout.addRow(None, checkbox_outlink)
        inputs_layout.addRow(label_parent, input_parent)
        inputs_layout.addRow(label_name, input_name)
        inputs_layout.addRow(label_assetbuild, combo_assetbuilt)
        inputs_layout.addRow(label_task_template, combo_task_template)

        # Add button
        btns_widget = QtWidgets.QWidget()
        btns_widget.setContentsMargins(0, 0, 0, 0)
        btn_layout = QtWidgets.QHBoxLayout(btns_widget)
        btn_create_asset = QtWidgets.QPushButton("Create asset")
        btn_create_asset.setToolTip(
            "Creates all neccessary components for asset"
        )
        checkbox_app = None
        if self.context is not None:
            checkbox_app = QtWidgets.QCheckBox("Open {}".format(
                self.context.capitalize())
            )
            btn_layout.addWidget(checkbox_app)
        btn_layout.addWidget(btn_create_asset)

        task_view = QtWidgets.QTreeView()
        task_view.setIndentation(0)
        task_model = model.TasksModel()
        task_view.setModel(task_model)

        info_layout.addWidget(inputs_widget)
        info_layout.addWidget(task_view)
        info_layout.addWidget(btns_widget)

        # Body
        body = QtWidgets.QSplitter()
        body.setContentsMargins(0, 0, 0, 0)
        body.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                           QtWidgets.QSizePolicy.Expanding)
        body.setOrientation(QtCore.Qt.Horizontal)
        body.addWidget(assets_widget)
        body.addWidget(info_widget)
        body.setStretchFactor(0, 100)
        body.setStretchFactor(1, 150)

        # statusbar
        message = QtWidgets.QLabel()
        message.setFixedHeight(20)

        statusbar = QtWidgets.QWidget()
        layout = QtWidgets.QHBoxLayout(statusbar)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.addWidget(message)

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(body)
        layout.addWidget(statusbar)

        self.data = {
            "label": {
                "message": message,
            },
            "view": {
                "tasks": task_view
            },
            "model": {
                "assets": assets,
                "tasks": task_model
            },
            "inputs": {
                "outlink": input_outlink,
                "outlink_cb": checkbox_outlink,
                "parent": input_parent,
                "name": input_name,
                "assetbuild": combo_assetbuilt,
                "tasktemplate": combo_task_template,
                "open_app": checkbox_app
            },
            "buttons": {
                "create_asset": btn_create_asset
            }
        }

        # signals
        btn_create_asset.clicked.connect(self.create_asset)
        assets.selection_changed.connect(self.on_asset_changed)
        input_name.textChanged.connect(self.on_asset_name_change)
        checkbox_outlink.toggled.connect(self.on_outlink_checkbox_change)
        combo_task_template.currentTextChanged.connect(
            self.on_task_template_changed
        )
        if self.context is not None:
            checkbox_app.toggled.connect(self.on_app_checkbox_change)
        # on start
        self.on_start()

        self.resize(600, 500)

        self.echo("Connected to project: {0}".format(project_name))
Esempio n. 10
0
    def __init__(self, parent=None):
        super(SelectionOutline, self).__init__(parent=parent)

        self.model = model.SelectionModel()
        proxy = QtCore.QSortFilterProxyModel()
        proxy.setSourceModel(self.model)

        view = QtWidgets.QTreeView()
        view.setIndentation(20)
        view.setStyleSheet("""
            QTreeView::item{
                padding: 4px 1px;
                border: 0px;
            }
        """)
        view.setAllColumnsShowFocus(True)
        view.setAlternatingRowColors(True)
        view.setSortingEnabled(True)
        view.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        view.sortByColumn(1, QtCore.Qt.AscendingOrder)
        view.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection)

        # Delegate
        time_delegate = delegates.PrettyTimeDelegate()
        column = self.model.Columns.index("time")
        view.setItemDelegateForColumn(column, time_delegate)

        view.setModel(proxy)
        view.setColumnWidth(0, 100)
        view.setColumnWidth(1, 140)
        view.setColumnWidth(2, 200)
        view.setColumnWidth(3, 200)
        view.setColumnWidth(4, 70)
        self.view = view
        self.proxy = proxy

        # (TODO)
        # Get all nodes
        # Get selected nodes
        # Dynamic selecting (If this enabled, dim out above two. Default off)
        # "Freeze List" will not be needed

        freezer = QtWidgets.QCheckBox("Freeze List")

        # (TODO)
        # These three not implemented
        include_hierarchy = QtWidgets.QCheckBox("Include Hierarchy")
        hide_referenced = QtWidgets.QCheckBox("Hide Referenced")
        refresh = QtWidgets.QPushButton("Refresh")

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(freezer)
        layout.addWidget(include_hierarchy)
        layout.addWidget(hide_referenced)
        layout.addWidget(self.view)
        layout.addWidget(refresh)

        self.setLayout(layout)

        self.data = {
            "delegates": {
                "time": time_delegate,
            }
        }

        self.view.customContextMenuRequested.connect(self.on_menu)
        freezer.stateChanged.connect(self.on_freezed)
Esempio n. 11
0
    def setup_ui(self):
        """Build the initial UI"""
        layout = QtWidgets.QVBoxLayout(self)

        # region executable
        executable_grp = QtWidgets.QGroupBox("Executable")
        executable_vlayout = QtWidgets.QVBoxLayout()

        executable_hlayout = QtWidgets.QHBoxLayout()
        executable_filename = QtWidgets.QLineEdit()
        executable_button = QtWidgets.QPushButton()
        executable_button.setIcon(self.style().standardIcon(
            getattr(QtWidgets.QStyle, 'SP_DialogOpenButton')))
        executable_hlayout.addWidget(executable_filename)
        executable_hlayout.addWidget(executable_button)

        executable_vlayout.addLayout(executable_hlayout)
        executable_grp.setLayout(executable_vlayout)
        # endregion executable

        # region options
        options_grp = QtWidgets.QGroupBox("Options")
        options_vlayout = QtWidgets.QVBoxLayout()

        postfix_hlayout = QtWidgets.QHBoxLayout()
        postfix_label = QtWidgets.QLabel("Postfix")
        postfix_value = QtWidgets.QLineEdit()
        postfix_hlayout.addWidget(postfix_label)
        postfix_hlayout.addWidget(postfix_value)

        compression_hlayout = QtWidgets.QHBoxLayout()
        compression_label = QtWidgets.QLabel("Compression")
        compression_value = QtWidgets.QComboBox()
        compression_hlayout.addWidget(compression_label)
        compression_hlayout.addWidget(compression_value)

        linear_hlayout = QtWidgets.QHBoxLayout()
        linear_label = QtWidgets.QLabel("Linear Conversion")
        linear_value = QtWidgets.QComboBox()
        linear_hlayout.addWidget(linear_label)
        linear_hlayout.addWidget(linear_value)

        tilesize_hlayout = QtWidgets.QHBoxLayout()
        tilesize_label = QtWidgets.QLabel("Tile Size")
        tilesize_value = QtWidgets.QSpinBox()
        tilesize_value.setValue(64)
        tilesize_hlayout.addWidget(tilesize_label)
        tilesize_hlayout.addWidget(tilesize_value)

        overwrite_hlayout = QtWidgets.QHBoxLayout()
        overwrite_label = QtWidgets.QLabel("Overwrite")
        overwrite_value = QtWidgets.QCheckBox()
        overwrite_value.setChecked(False)
        overwrite_hlayout.addWidget(overwrite_label)
        overwrite_hlayout.addWidget(overwrite_value)

        preserve_hlayout = QtWidgets.QHBoxLayout()
        preserve_label = QtWidgets.QLabel("Preserve Color Space ")
        preserve_value = QtWidgets.QCheckBox()
        preserve_value.setChecked(True)
        preserve_hlayout.addWidget(preserve_label)
        preserve_hlayout.addWidget(preserve_value)

        preserve_filter_hlayout = QtWidgets.QHBoxLayout()
        preserve_filter_label = QtWidgets.QLabel("Preserver Filter")
        preserve_filter_value = QtWidgets.QLineEdit()
        preserve_filter_hlayout.addWidget(preserve_filter_label)
        preserve_filter_hlayout.addWidget(preserve_filter_value)

        options_vlayout.addLayout(postfix_hlayout)
        options_vlayout.addLayout(compression_hlayout)
        options_vlayout.addLayout(linear_hlayout)
        options_vlayout.addLayout(tilesize_hlayout)
        options_vlayout.addLayout(overwrite_hlayout)
        options_vlayout.addLayout(preserve_hlayout)
        options_vlayout.addLayout(preserve_filter_hlayout)

        options_grp.setLayout(options_vlayout)
        # endregion options

        # Group box for type of machine list
        list_type_grp = QtWidgets.QGroupBox("File Texture Nodes")
        list_type_hlayout = QtWidgets.QVBoxLayout()

        refresh_button = QtWidgets.QPushButton("Refresh")
        refresh_button.setToolTip("Refresh texture lists")
        refresh_button.setIcon(self.style().standardIcon(
            getattr(QtWidgets.QStyle, 'SP_BrowserReload')))

        # region file node list
        file_node_hlayout = QtWidgets.QVBoxLayout()
        file_node_hlayout.setSpacing(2)
        file_node_list = QtWidgets.QListView()
        file_node_list.setAlternatingRowColors(True)
        file_node_list.setSelectionBehavior(
            QtWidgets.QAbstractItemView.SelectRows)
        file_node_list.setSelectionMode(
            QtWidgets.QAbstractItemView.MultiSelection)
        # endregion

        # conversion buttons
        button_vlayout = QtWidgets.QHBoxLayout()
        button_vlayout.setAlignment(QtCore.Qt.AlignCenter)
        button_vlayout.setSpacing(4)

        convert_button = QtWidgets.QPushButton("Convert")
        exr_button = QtWidgets.QPushButton("Show EXR")
        source_button = QtWidgets.QPushButton("Show Source")
        set_source_button = QtWidgets.QPushButton("Set new source")
        set_source_button.setDisabled(True)

        button_vlayout.addWidget(convert_button)
        button_vlayout.addWidget(exr_button)
        button_vlayout.addWidget(source_button)
        button_vlayout.addWidget(set_source_button)

        file_node_hlayout.addWidget(file_node_list)
        file_node_hlayout.addLayout(button_vlayout)

        list_type_hlayout.addWidget(refresh_button)
        list_type_hlayout.addLayout(file_node_hlayout)
        list_type_grp.setLayout(list_type_hlayout)

        layout.addWidget(executable_grp)
        layout.addWidget(options_grp)
        layout.addWidget(list_type_grp)
        layout.addLayout(file_node_hlayout)

        # Enable access for all methods
        self.file_node_list = file_node_list
        self.postfix_value = postfix_value
        self.compression_value = compression_value
        self.linear_value = linear_value
        self.tilesize_value = tilesize_value
        self.executable_filename = executable_filename
        self.exr_button = exr_button
        self.source_button = source_button
        self.convert_button = convert_button
        self.refresh_button = refresh_button
        self.overwritevalue = overwrite_value
        self.preserve_value = preserve_value
        self.preserve_filter_value = preserve_filter_value

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

        title = "Yeti Rig Manager 1.1.0 - [%s]" % lib.get_workfile()
        geometry = (800, 400)

        self.log = logging.getLogger("Yeti Rig Manager")

        self.setObjectName("yetiRigManager")
        self.setWindowTitle(title)
        self.setWindowFlags(QtCore.Qt.Window)
        self.setParent(parent)

        layout = QtWidgets.QVBoxLayout()

        # Control layout
        control_layout = QtWidgets.QHBoxLayout()

        force_checkbox = QtWidgets.QCheckBox("Force")
        force_checkbox.setChecked(True)

        refresh_button = QtWidgets.QPushButton()
        refresh_icon = qta.icon("fa.refresh", color="white")

        refresh_button.setIcon(refresh_icon)
        refresh_button.setFixedWidth(28)
        refresh_button.setFixedHeight(28)

        control_layout.addWidget(force_checkbox)
        control_layout.addStretch(True)
        control_layout.addWidget(refresh_button)

        view_layout = QtWidgets.QHBoxLayout()

        rig_view = AssetOutliner()
        match_view = MatchOutliner()

        view_layout.addWidget(rig_view)
        view_layout.addWidget(match_view)

        # Default action buttons
        action_button_layout = QtWidgets.QHBoxLayout()
        connect_button = QtWidgets.QPushButton("Connect")
        disconnect_button = QtWidgets.QPushButton("Disconnect")

        action_button_layout.addWidget(connect_button)
        action_button_layout.addWidget(disconnect_button)

        layout.addLayout(control_layout)
        layout.addLayout(view_layout)
        layout.addLayout(action_button_layout)

        self.setLayout(layout)

        self.force_checkbox = force_checkbox
        self.refresh_button = refresh_button
        self.connect_button = connect_button
        self.disconnect_button = disconnect_button

        self.rig_view = rig_view
        self.match_view = match_view

        self.resize(*geometry)

        self.connections()
Esempio n. 13
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent=parent)

        self.log = logging.getLogger(__name__)

        self.setWindowTitle("Create New Project")
        self.setWindowFlags(QtCore.Qt.Dialog)
        self.setStyleSheet(style.create_widget)

        layout = QtWidgets.QVBoxLayout()
        layout.setAlignment(QtCore.Qt.AlignCenter)
        layout.setContentsMargins(50, 50, 50, 50)
        layout.setSpacing(20)

        create_vlayout = QtWidgets.QVBoxLayout()

        project_label = QtWidgets.QLabel("Project Name")

        project_name = QtWidgets.QLineEdit()
        project_name.setPlaceholderText("Example: MARVEL_Spiderman_HomeComing")
        project_name.setStyleSheet("QLineEdit: {font-size: 50px}")

        create_vlayout.addWidget(project_label)
        create_vlayout.addWidget(project_name)

        # Clone from existing
        clone_vlayout = QtWidgets.QVBoxLayout()

        clone_label_hlayout = QtWidgets.QHBoxLayout()

        clone_toggle = QtWidgets.QCheckBox()
        clone_toggle.setFixedWidth(24)
        clone_toggle.setFixedHeight(24)
        clone_label = QtWidgets.QLabel("Clone")

        clone_label_hlayout.addWidget(clone_label)
        clone_label_hlayout.addWidget(clone_toggle)

        clone_project = QtWidgets.QComboBox()

        clone_vlayout.addLayout(clone_label_hlayout)
        clone_vlayout.addWidget(clone_project)

        create_button = QtWidgets.QPushButton("Create")
        create_button.setStyleSheet(style.flat_button)
        create_button.setFixedWidth(500)

        cancel_button = QtWidgets.QPushButton("Cancel")
        cancel_button.setStyleSheet(style.flat_button)
        cancel_button.setFixedWidth(500)

        layout.addLayout(create_vlayout)
        layout.addLayout(clone_vlayout)
        layout.addWidget(create_button)
        layout.addWidget(cancel_button)

        self.setLayout(layout)

        self.project_name = project_name

        self.clone_toggle = clone_toggle
        self.clone_project = clone_project

        self.create = create_button
        self.cancel = cancel_button

        # Build connections
        self.connect_signals()

        self.refresh()
Esempio n. 14
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        self.setWindowTitle("Replicate Houdini Asset (particles)")
        self.setWindowFlags(QtCore.Qt.Window)
        self.setParent(parent)
        self.resize(280, 280)

        layout = QtWidgets.QVBoxLayout()

        input_box = QtWidgets.QGroupBox("Input")
        input_box.setStyleSheet("{color: red}")
        input_vboxlayout = QtWidgets.QVBoxLayout()
        from_selection = QtWidgets.QCheckBox("Selected")
        from_selection.setChecked(True)

        name_hlayout = QtWidgets.QHBoxLayout()
        name_label = QtWidgets.QLabel("Name")
        name_field = QtWidgets.QLineEdit()
        name_hlayout.addWidget(name_label)
        name_hlayout.addWidget(name_field)

        input_box.setLayout(input_vboxlayout)
        input_vboxlayout.addWidget(from_selection)
        input_vboxlayout.addLayout(name_hlayout)

        time_box = QtWidgets.QGroupBox("Time")
        time_hlayout = QtWidgets.QHBoxLayout()
        time_start_vbox = QtWidgets.QVBoxLayout()
        time_start_label = QtWidgets.QLabel("Start")
        time_start = QtWidgets.QSpinBox()
        time_start_vbox.addWidget(time_start_label)
        time_start_vbox.addWidget(time_start)

        time_end_vbox = QtWidgets.QVBoxLayout()
        time_end_label = QtWidgets.QLabel("End")
        time_end = QtWidgets.QSpinBox()
        time_end_vbox.addWidget(time_end_label)
        time_end_vbox.addWidget(time_end)

        time_hlayout.addLayout(time_start_vbox)
        time_hlayout.addLayout(time_end_vbox)
        time_box.setLayout(time_hlayout)

        mapping_box = QtWidgets.QGroupBox("Attribute mapping")
        mapping_layout = QtWidgets.QVBoxLayout()
        mapping_box.setLayout(mapping_layout)

        button_vlayout = QtWidgets.QVBoxLayout()
        replicate = QtWidgets.QPushButton("Replicate")
        update_hlayout = QtWidgets.QHBoxLayout()
        update_all_button = QtWidgets.QPushButton("Update All")
        update_selected_button = QtWidgets.QPushButton("Update Selected")
        update_hlayout.addWidget(update_all_button)
        update_hlayout.addWidget(update_selected_button)

        refresh_button = QtWidgets.QPushButton("Refresh")

        button_vlayout.addWidget(replicate)
        button_vlayout.addLayout(update_hlayout)
        button_vlayout.addWidget(refresh_button)

        layout.addWidget(input_box)
        # layout.addWidget(time_box)
        layout.addWidget(mapping_box)
        layout.addLayout(button_vlayout)

        # Open up items for code
        self._selection = []
        self.mapping_data = {}

        self.from_selection = from_selection
        self.name_field = name_field

        self.time_start = time_start
        self.time_end = time_end

        self.mapping_layout = mapping_layout
        self.replicate_button = replicate
        self.update_all_button = update_all_button
        self.update_selected_button = update_selected_button
        self.refesh_button = refresh_button

        self.setLayout(layout)

        layout.addStretch(True)

        self.get_settings()

        self.connections()
Esempio n. 15
0
    def __init__(self, parent=None):

        ################################################
        # |---------------------| |------------------| #
        # |Comp                 | |Asset             | #
        # |[..][              v]| |[               v]| #
        # |---------------------| |------------------| #
        # | Update existing comp [ ]                 | #
        # |------------------------------------------| #
        # |                Switch                    | #
        # |------------------------------------------| #
        ################################################

        QtWidgets.QWidget.__init__(self, parent)

        layout = QtWidgets.QVBoxLayout()

        # Comp related input
        comp_hlayout = QtWidgets.QHBoxLayout()
        comp_label = QtWidgets.QLabel("Comp file")
        comp_label.setFixedWidth(50)
        comp_box = QtWidgets.QComboBox()

        button_icon = qta.icon("fa.folder", color="white")
        open_from_dir = QtWidgets.QPushButton()
        open_from_dir.setIcon(button_icon)

        comp_box.setFixedHeight(25)
        open_from_dir.setFixedWidth(25)
        open_from_dir.setFixedHeight(25)

        comp_hlayout.addWidget(comp_label)
        comp_hlayout.addWidget(comp_box)
        comp_hlayout.addWidget(open_from_dir)

        # Asset related input
        asset_hlayout = QtWidgets.QHBoxLayout()
        asset_label = QtWidgets.QLabel("Shot")
        asset_label.setFixedWidth(50)

        asset_box = QtWidgets.QComboBox()
        asset_box.setLineEdit(QtWidgets.QLineEdit())
        asset_box.setFixedHeight(25)

        refresh_icon = qta.icon("fa.refresh", color="white")
        refresh_btn = QtWidgets.QPushButton()
        refresh_btn.setIcon(refresh_icon)

        asset_box.setFixedHeight(25)
        refresh_btn.setFixedWidth(25)
        refresh_btn.setFixedHeight(25)

        asset_hlayout.addWidget(asset_label)
        asset_hlayout.addWidget(asset_box)
        asset_hlayout.addWidget(refresh_btn)

        # Options
        options = QtWidgets.QHBoxLayout()
        options.setAlignment(QtCore.Qt.AlignLeft)

        current_comp_check = QtWidgets.QCheckBox()
        current_comp_check.setChecked(True)
        current_comp_label = QtWidgets.QLabel("Use current comp")

        options.addWidget(current_comp_label)
        options.addWidget(current_comp_check)

        accept_btn = QtWidgets.QPushButton("Switch")

        layout.addLayout(options)
        layout.addLayout(comp_hlayout)
        layout.addLayout(asset_hlayout)
        layout.addWidget(accept_btn)

        self._open_from_dir = open_from_dir
        self._comps = comp_box
        self._assets = asset_box
        self._use_current = current_comp_check
        self._accept_btn = accept_btn
        self._refresh_btn = refresh_btn

        self.setWindowTitle("Fusion Switch Shot")
        self.setLayout(layout)

        self.resize(260, 140)
        self.setMinimumWidth(260)
        self.setFixedHeight(140)

        self.connections()

        # Update ui to correct state
        self._on_use_current_comp()
        self._refresh()