Esempio n. 1
0
    def __init__(self, parent=None):
        super(_RenderGlobalsEditor, self).__init__(parent)
        self.setWindowTitle(api.Session["AVALON_LABEL"] + " Render Globals")
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)

        pools = QtWidgets.QComboBox()
        groups = QtWidgets.QComboBox()

        button = QtWidgets.QPushButton("Refresh")

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(QtWidgets.QLabel("Current Pool"))
        layout.addWidget(pools)
        layout.addWidget(QtWidgets.QLabel("Current Group"))
        layout.addWidget(groups)
        layout.addWidget(QtWidgets.QLabel(""))
        layout.addWidget(button)

        self.pools = pools
        self.groups = groups
        self.render_globals = None

        self.resize(300, 100)
        self.setMinimumWidth(200)

        self.refresh()

        button.clicked.connect(self.refresh)
        pools.currentIndexChanged.connect(self.on_pool_changed)
        groups.currentIndexChanged.connect(self.on_group_changed)
Esempio n. 2
0
    def add_data(self, header, data):
        """Add information which needs to be displayed"""

        if header in self.data_table:
            print("Cannot add similar header, please use `update` in stead")
            return

        data_widget = QtWidgets.QWidget()
        data_widget.setFixedHeight(self._tile_height)

        layout = QtWidgets.QVBoxLayout()

        title = QtWidgets.QLabel(header.upper())
        title.setStyleSheet(style.overview_tile_title)

        formlayout = QtWidgets.QFormLayout()
        for label, value in data.items():
            value_label = QtWidgets.QLabel(value)
            formlayout.addRow("%s :" % label, value_label)

        layout.addWidget(title)
        layout.addLayout(formlayout)
        layout.addStretch()

        data_widget.setLayout(layout)

        self.data_table[header] = {"widget": data_widget, "data": data}

        position = self.layout.count() + 1

        self.layout.insertWidget(position, data_widget)
Esempio n. 3
0
    def __init__(self, instances=None, parent=None):
        QtWidgets.QDialog.__init__(self, parent)

        self.setWindowTitle("Update Sequence Range")
        self.setModal(True)
        self.setFixedWidth(150)
        self.setFixedHeight(100)

        self._instances = instances

        layout = QtWidgets.QVBoxLayout()

        start_hlayout = QtWidgets.QHBoxLayout()
        start_label = QtWidgets.QLabel("Start")
        start_label.setFixedWidth(30)

        start_stylesheet = "QAbstractQSpinBox:up-button {subcontrol-origin: border}"
        start_value = QtWidgets.QSpinBox()
        start_value.setAlignment(QtCore.Qt.AlignRight)
        start_value.setStyleSheet(start_stylesheet)

        start_hlayout.addWidget(start_label)
        start_hlayout.addWidget(start_value)

        end_hlayout = QtWidgets.QHBoxLayout()
        end_label = QtWidgets.QLabel("End")
        end_label.setFixedWidth(30)

        end_stylesheet = "QAbstractSpinBox:down-button {subcontrol-origin: bottom}"
        end_value = QtWidgets.QSpinBox()
        end_value.setAlignment(QtCore.Qt.AlignRight)
        end_value.setStyleSheet(end_stylesheet)

        end_hlayout.addWidget(end_label)
        end_hlayout.addWidget(end_value)

        accept_btn = QtWidgets.QPushButton("Accept")

        layout.addLayout(start_hlayout)
        layout.addLayout(end_hlayout)
        layout.addWidget(accept_btn)

        self.start_value = start_value
        self.end_value = end_value
        self.accept = accept_btn

        self.setLayout(layout)

        self.make_connections()

        self._on_init()
Esempio n. 4
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. 5
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent=parent)

        layout = QtWidgets.QVBoxLayout()

        text = QtWidgets.QLabel("Under development!")
        tab_widget = QtWidgets.QTabWidget()

        button_hlayout = QtWidgets.QHBoxLayout()
        button_hlayout.addStretch()

        # Generic update button
        update_button = QtWidgets.QPushButton("Update")
        update_button.setMinimumWidth(120)
        update_button.setStyleSheet(style.flat_button)

        button_hlayout.addWidget(update_button)

        # Create basic layout
        layout.addWidget(text)
        layout.addWidget(tab_widget)
        layout.addLayout(button_hlayout)

        self.setLayout(layout)

        self.tab_widget = tab_widget
        self.update_button = update_button

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

        # look manager layout
        layout = QtWidgets.QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(10)

        # Looks from database
        title = QtWidgets.QLabel("Looks")
        title.setAlignment(QtCore.Qt.AlignCenter)
        title.setStyleSheet("font-weight: bold; font-size: 12px")
        title.setAlignment(QtCore.Qt.AlignCenter)

        model = models.LookModel()

        # Proxy for dynamic sorting
        proxy = QtCore.QSortFilterProxyModel()
        proxy.setSourceModel(model)

        view = views.View()
        view.setModel(proxy)
        view.setMinimumHeight(180)
        view.setToolTip("Use right mouse button menu for direct actions")
        view.customContextMenuRequested.connect(self.right_mouse_menu)
        view.sortByColumn(0, QtCore.Qt.AscendingOrder)

        layout.addWidget(title)
        layout.addWidget(view)

        self.view = view
        self.model = model
Esempio n. 7
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        layout = QtWidgets.QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(10)

        title = QtWidgets.QLabel("Rigs:")
        title.setAlignment(QtCore.Qt.AlignLeft)
        title.setStyleSheet("font-weight: bold; font-size: 12px")

        model = models.AssetModel()
        view = views.View()
        view.setModel(model)
        view.setSortingEnabled(False)
        view.setHeaderHidden(True)
        view.setMinimumHeight(180)
        view.setIndentation(10)

        layout.addWidget(title)
        layout.addWidget(view)

        selection_model = view.selectionModel()
        selection_model.selectionChanged.connect(self.selection_changed)

        self.view = view
        self.model = model
        self._selection_model = selection_model

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

        layout = QtWidgets.QHBoxLayout()

        context = QtWidgets.QLabel()
        context.setMinimumWidth(50)
        context.setStyleSheet("QLabel {font-weight: bold}")

        set_context_icon = qta.icon("fa.arrow-right",
                                    color=style.colors.default)
        set_context_button = QtWidgets.QPushButton()
        set_context_button.setIcon(set_context_icon)
        set_context_button.setFixedWidth(28)

        layout.addWidget(context)
        layout.addWidget(set_context_button)

        self.setLayout(layout)

        self.set_context_btn = set_context_button
        self.context_label = context

        self.connections()

        self._set_context_label()
Esempio n. 9
0
    def _create_label(self, text):
        """Lazy function to create a label"""

        title = QtWidgets.QLabel(text)
        title.setAlignment(QtCore.Qt.AlignCenter)
        title.setStyleSheet("font-weight: bold; font-size: 12px")

        return title
Esempio n. 10
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. 11
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        layout = QtWidgets.QVBoxLayout()

        title = QtWidgets.QLabel("Assets")
        title.setAlignment(QtCore.Qt.AlignCenter)
        title.setStyleSheet("font-weight: bold; font-size: 12px")

        model = models.AssetModel()
        view = views.View()
        view.setModel(model)
        view.customContextMenuRequested.connect(self.right_mouse_menu)
        view.setSortingEnabled(False)
        view.setHeaderHidden(False)
        view.setIndentation(10)

        asset_all = QtWidgets.QPushButton("All Loaded")
        asset_sel = QtWidgets.QPushButton("From Selection")
        asset_all.setCheckable(True)
        asset_sel.setCheckable(True)

        asset_group = QtWidgets.QButtonGroup(self)
        asset_group.addButton(asset_all)
        asset_group.addButton(asset_sel)

        lister_layout = QtWidgets.QHBoxLayout()
        lister_layout.addWidget(asset_all)
        lister_layout.addWidget(asset_sel)

        layout.addWidget(title)
        layout.addLayout(lister_layout)
        layout.addWidget(view)

        # Build connections
        asset_all.clicked.connect(self.on_all_loaded)
        asset_sel.clicked.connect(self.on_selection)

        selection_model = view.selectionModel()
        selection_model.selectionChanged.connect(self.selection_changed)

        self.view = view
        self.model = model

        self.setLayout(layout)

        self.log = logging.getLogger(__name__)
Esempio n. 12
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        layout = QtWidgets.QVBoxLayout()

        title = QtWidgets.QLabel("Assets")
        title.setAlignment(QtCore.Qt.AlignCenter)
        title.setStyleSheet("font-weight: bold; font-size: 12px")

        model = models.AssetModel()
        view = views.View()
        view.setModel(model)
        view.customContextMenuRequested.connect(self.right_mouse_menu)
        view.setSortingEnabled(False)
        view.setHeaderHidden(True)
        view.setIndentation(10)

        from_all_asset_btn = QtWidgets.QPushButton("Get All Assets")
        from_selection_btn = QtWidgets.QPushButton("Get Assets From Selection")

        layout.addWidget(title)
        layout.addWidget(from_all_asset_btn)
        layout.addWidget(from_selection_btn)
        layout.addWidget(view)

        # Build connections
        from_selection_btn.clicked.connect(self.get_selected_assets)
        from_all_asset_btn.clicked.connect(self.get_all_assets)

        selection_model = view.selectionModel()
        selection_model.selectionChanged.connect(self.selection_changed)

        self.view = view
        self.model = model

        self.setLayout(layout)

        self.log = logging.getLogger(__name__)
Esempio n. 13
0
    def __init__(self, parent=None, *args, **kwargs):
        super(Popup, self).__init__(parent=parent, *args, **kwargs)
        self.setContentsMargins(0, 0, 0, 0)

        # Layout
        layout = QtWidgets.QHBoxLayout(self)
        layout.setContentsMargins(10, 5, 10, 10)

        # Increase spacing slightly for readability
        layout.setSpacing(10)

        message = QtWidgets.QLabel("")
        message.setStyleSheet("""
        QLabel {
            font-size: 12px;
        }
        """)
        button = QtWidgets.QPushButton("Show")
        button.setSizePolicy(QtWidgets.QSizePolicy.Maximum,
                             QtWidgets.QSizePolicy.Maximum)
        button.setStyleSheet("""QPushButton { background-color: #BB0000 }""")

        layout.addWidget(message)
        layout.addWidget(button)

        # Default size
        self.resize(400, 40)

        self.widgets = {
            "message": message,
            "button": button,
        }

        # Signals
        button.clicked.connect(self._on_clicked)

        # Set default title
        self.setWindowTitle("Popup")
Esempio n. 14
0
    def _create_mapper(self, section, sources, targets):

        section_box = QtWidgets.QGroupBox(section.title())
        section_box.setObjectName(section)

        layout = QtWidgets.QVBoxLayout()
        for source in sources:

            picker_hlayout = QtWidgets.QHBoxLayout()
            source_label = QtWidgets.QLabel(source)

            # Create lookup
            target_picker = SearchComboBox(placeholder="None")
            target_picker.populate(targets)

            picker_hlayout.addWidget(source_label)
            picker_hlayout.addWidget(target_picker)

            layout.addLayout(picker_hlayout)
            self.mapping_data[source] = target_picker

        section_box.setLayout(layout)

        return section_box
Esempio n. 15
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent=parent)

        layout = QtWidgets.QVBoxLayout()

        # controls
        top_layout = QtWidgets.QHBoxLayout()
        label = QtWidgets.QLabel("Tasks")

        add_button = QtWidgets.QPushButton("+")
        add_button.setFixedWidth(28)
        remove_button = QtWidgets.QPushButton("-")
        remove_button.setFixedWidth(28)

        top_layout.addWidget(label)
        top_layout.addStretch()
        top_layout.addWidget(add_button)
        top_layout.addWidget(remove_button)

        tree_view = QtWidgets.QTreeView()
        tree_model = TreeModel()
        tree_view.setModel(tree_model)

        layout.addLayout(top_layout)
        layout.addWidget(tree_view)

        self.setLayout(layout)

        self.add_button = add_button
        self.remove_button = remove_button

        self.tree_model = tree_model

        self._add_dialog = AddTaskIconDialog()

        self.connect_signals()
Esempio n. 16
0
    def __init__(self, parent=None, *args, **kwargs):
        super(Popup, self).__init__(parent=parent, *args, **kwargs)
        self.setContentsMargins(0, 0, 0, 0)

        # Layout
        layout = QtWidgets.QHBoxLayout(self)
        layout.setContentsMargins(10, 5, 10, 10)
        message = QtWidgets.QLabel("")
        message.setStyleSheet("""
        QLabel {
            font-size: 12px;
        }
        """)
        show = QtWidgets.QPushButton("Show")
        show.setSizePolicy(QtWidgets.QSizePolicy.Maximum,
                           QtWidgets.QSizePolicy.Maximum)
        show.setStyleSheet("""QPushButton { background-color: #BB0000 }""")

        layout.addWidget(message)
        layout.addWidget(show)

        # Size
        self.resize(400, 40)
        geometry = self.calculate_window_geometry()
        self.setGeometry(geometry)

        self.widgets = {
            "message": message,
            "show": show,
        }

        # Signals
        show.clicked.connect(self._on_show_clicked)

        # Set default title
        self.setWindowTitle("Popup")
Esempio n. 17
0
 def make_group(self, widget, label):
     group = QtWidgets.QHBoxLayout()
     label = QtWidgets.QLabel(label)
     group.addWidget(label)
     group.addWidget(widget)
     return group
Esempio n. 18
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. 19
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. 20
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. 21
0
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)

        self.setWindowTitle("Project Manager")
        self.resize(1200, 800)

        self.projects = {}

        layout = QtWidgets.QVBoxLayout()

        # Main control
        ctrl_button_w = 30
        ctrl_button_h = 30

        # Calculate icon size
        icon_size = QtCore.QSize(ctrl_button_w - 4, ctrl_button_h - 4)

        main_control_layout = QtWidgets.QHBoxLayout()

        database_label = QtWidgets.QLabel()

        # Main buttons - create
        create_button = QtWidgets.QPushButton()
        create_icon = qta.icon("fa.plus-square", color=style.colors.light)

        create_button.setIconSize(icon_size)

        create_button.setFixedWidth(ctrl_button_w)
        create_button.setFixedHeight(ctrl_button_h)

        create_button.setIcon(create_icon)
        create_button.setStyleSheet(cbstyle.flat_button)

        # Main buttons - refresh
        refresh_button = QtWidgets.QPushButton()
        refresh_icon = qta.icon("fa.refresh", color=style.colors.light)

        refresh_button.setIconSize(icon_size)

        refresh_button.setFixedWidth(ctrl_button_w)
        refresh_button.setFixedHeight(ctrl_button_h)

        refresh_button.setIcon(refresh_icon)
        refresh_button.setStyleSheet(cbstyle.flat_button)

        # Project switch control
        projects_label = QtWidgets.QLabel("Project:")
        projects = QtWidgets.QComboBox()
        projects.insertItem(0, "<None>")

        # Add buttons to the main control layout
        main_control_layout.addWidget(create_button)
        main_control_layout.addStretch()
        main_control_layout.addWidget(database_label)
        main_control_layout.addWidget(projects_label)
        main_control_layout.addWidget(projects)
        main_control_layout.addWidget(refresh_button)

        # Splitter for tabwidget and preview / details widget
        split_widget = QtWidgets.QSplitter()

        # Widgets will be stored in a StackedWidget
        stacked_widget = QtWidgets.QStackedWidget()

        # Control widgets which make the tool
        manager_widget = ManageProjectWidget(parent=self)

        # Sub manager widgets
        overview = OverviewWidget()
        manager_widget.add_widget(overview)

        stacked_widget.insertWidget(manager_widget.order, manager_widget)

        # Navigation panel widget
        navigation_panel = Navigation()

        # Add buttons to navigation panel
        navigation_panel.add_button(manager_widget.label, manager_widget.order)

        # Add widgets to the SplitWidget
        split_widget.addWidget(navigation_panel)
        split_widget.addWidget(stacked_widget)
        split_widget.setHandleWidth(4)
        split_widget.setSizes([100, 700])

        layout.addLayout(main_control_layout)
        layout.addWidget(split_widget)

        self.setLayout(layout)

        # To connect widget store in self attribute
        self._navigation_panel = navigation_panel
        self._stacked_widget = stacked_widget

        self._database_label = database_label
        self._create_button = create_button
        self._projects = projects
        self._refresh_button = refresh_button

        self._overview = overview

        self.connect_signals()

        self.refresh()

        manager_widget.setFocus(True)
Esempio n. 22
0
    def __init__(self, parent=None):
        super(Project_name_getUI, self).__init__(parent)

        self.platform = platform.system()
        self.new_index = 0
        # get projects from ftrack
        self.session = ftrack_api.Session()
        self.projects_from_ft = self.session.query(
            'Project where status is active')
        self.disks_from_ft = self.session.query('Disk')
        self.schemas_from_ft = self.session.query('ProjectSchema')
        self.projects = self._get_projects_ftrack()

        # define window geometry
        self.setWindowTitle('Set project attributes')
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
        self.resize(550, 340)
        self.setStyleSheet(style.load_stylesheet())

        # define disk combobox  widget
        self.disks = self._get_all_disks()
        self.disk_combobox_label = QtWidgets.QLabel('Destination storage:')
        self.disk_combobox = QtWidgets.QComboBox()

        # define schema combobox  widget
        self.schemas = self._get_all_schemas()
        self.schema_combobox_label = QtWidgets.QLabel('Project schema:')
        self.schema_combobox = QtWidgets.QComboBox()

        # define fps widget
        self.fps_label = QtWidgets.QLabel('Fps:')
        self.fps_label.setAlignment(QtCore.Qt.AlignRight
                                    | QtCore.Qt.AlignVCenter)
        self.fps = QtWidgets.QLineEdit()

        # define project dir widget
        self.project_dir_label = QtWidgets.QLabel('Project dir:')
        self.project_dir_label.setAlignment(QtCore.Qt.AlignRight
                                            | QtCore.Qt.AlignVCenter)
        self.project_dir = QtWidgets.QLineEdit()

        self.project_path_label = QtWidgets.QLabel(
            'Project_path (if not then created):')
        self.project_path_label.setAlignment(QtCore.Qt.AlignHCenter
                                             | QtCore.Qt.AlignVCenter)
        project_path_font = QtGui.QFont("Helvetica [Cronyx]", 12,
                                        QtGui.QFont.Bold)
        self.project_path = QtWidgets.QLabel()
        self.project_path.setObjectName('nom_plan_label')
        self.project_path.setStyleSheet(
            'QtWidgets.QLabel#nom_plan_label {color: red}')
        self.project_path.setAlignment(QtCore.Qt.AlignHCenter
                                       | QtCore.Qt.AlignVCenter)
        self.project_path.setFont(project_path_font)

        # define handles widget
        self.handles_label = QtWidgets.QLabel('Handles:')
        self.handles_label.setAlignment(QtCore.Qt.AlignRight
                                        | QtCore.Qt.AlignVCenter)
        self.handles = QtWidgets.QLineEdit()

        # define resolution widget
        self.resolution_w_label = QtWidgets.QLabel('W:')
        self.resolution_w = QtWidgets.QLineEdit()
        self.resolution_h_label = QtWidgets.QLabel('H:')
        self.resolution_h = QtWidgets.QLineEdit()

        devider = QtWidgets.QFrame()
        # devider.Shape(QFrame.HLine)
        devider.setFrameShape(QtWidgets.QFrame.HLine)
        devider.setFrameShadow(QtWidgets.QFrame.Sunken)

        self.generate_lines()

        # define push buttons
        self.set_pushbutton = QtWidgets.QPushButton('Set project')
        self.cancel_pushbutton = QtWidgets.QPushButton('Cancel')

        # definition of layouts
        ############################################
        action_layout = QtWidgets.QHBoxLayout()
        action_layout.addWidget(self.set_pushbutton)
        action_layout.addWidget(self.cancel_pushbutton)

        # schema property
        schema_layout = QtWidgets.QGridLayout()
        schema_layout.addWidget(self.schema_combobox, 0, 1)
        schema_layout.addWidget(self.schema_combobox_label, 0, 0)

        # storage property
        storage_layout = QtWidgets.QGridLayout()
        storage_layout.addWidget(self.disk_combobox, 0, 1)
        storage_layout.addWidget(self.disk_combobox_label, 0, 0)

        # fps property
        fps_layout = QtWidgets.QGridLayout()
        fps_layout.addWidget(self.fps, 1, 1)
        fps_layout.addWidget(self.fps_label, 1, 0)

        # project dir property
        project_dir_layout = QtWidgets.QGridLayout()
        project_dir_layout.addWidget(self.project_dir, 1, 1)
        project_dir_layout.addWidget(self.project_dir_label, 1, 0)

        # project path property
        project_path_layout = QtWidgets.QGridLayout()
        spacer_1_item = QtWidgets.QSpacerItem(10, 10)
        project_path_layout.addItem(spacer_1_item, 0, 1)
        project_path_layout.addWidget(self.project_path_label, 1, 1)
        project_path_layout.addWidget(self.project_path, 2, 1)
        spacer_2_item = QtWidgets.QSpacerItem(20, 20)
        project_path_layout.addItem(spacer_2_item, 3, 1)

        # handles property
        handles_layout = QtWidgets.QGridLayout()
        handles_layout.addWidget(self.handles, 1, 1)
        handles_layout.addWidget(self.handles_label, 1, 0)

        # resolution property
        resolution_layout = QtWidgets.QGridLayout()
        resolution_layout.addWidget(self.resolution_w_label, 1, 1)
        resolution_layout.addWidget(self.resolution_w, 2, 1)
        resolution_layout.addWidget(self.resolution_h_label, 1, 2)
        resolution_layout.addWidget(self.resolution_h, 2, 2)

        # form project property layout
        p_layout = QtWidgets.QGridLayout()
        p_layout.addLayout(storage_layout, 1, 0)
        p_layout.addLayout(schema_layout, 2, 0)
        p_layout.addLayout(project_dir_layout, 3, 0)
        p_layout.addLayout(fps_layout, 4, 0)
        p_layout.addLayout(handles_layout, 5, 0)
        p_layout.addLayout(resolution_layout, 6, 0)
        p_layout.addWidget(devider, 7, 0)
        spacer_item = QtWidgets.QSpacerItem(150, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        p_layout.addItem(spacer_item, 8, 0)

        # form with list to one layout with project property
        list_layout = QtWidgets.QGridLayout()
        list_layout.addLayout(p_layout, 1, 0)
        list_layout.addWidget(self.listWidget, 1, 1)

        root_layout = QtWidgets.QVBoxLayout()
        root_layout.addLayout(project_path_layout)
        root_layout.addWidget(devider)
        root_layout.addLayout(list_layout)
        root_layout.addLayout(action_layout)

        self.setLayout(root_layout)
Esempio n. 23
0
    def __init__(self, parent=None):
        QtWidgets.QDialog.__init__(self, parent)

        self.resize(640, 360)
        project = api.Session["AVALON_PROJECT"]
        self.setWindowTitle("Context Manager 1.0 - {}".format(project))
        self.setObjectName("contextManager")

        splitter = QtWidgets.QSplitter(self)
        main_layout = QtWidgets.QVBoxLayout()
        column_layout = QtWidgets.QHBoxLayout()

        accept_btn = QtWidgets.QPushButton("Accept")

        # Asset picker
        assets = AssetWidget()

        # Task picker
        tasks_widgets = QtWidgets.QWidget()
        tasks_widgets.setContentsMargins(0, 0, 0, 0)
        tasks_layout = QtWidgets.QVBoxLayout(tasks_widgets)
        task_view = QtWidgets.QTreeView()
        task_view.setIndentation(0)
        task_model = TasksModel()
        task_view.setModel(task_model)
        tasks_layout.addWidget(task_view)
        tasks_layout.addWidget(accept_btn)
        task_view.setColumnHidden(1, True)

        # region results
        result_widget = QtWidgets.QGroupBox("Current Context")
        result_layout = QtWidgets.QVBoxLayout()
        result_widget.setLayout(result_layout)

        project_label = QtWidgets.QLabel("Project: {}".format(project))
        asset_label = QtWidgets.QLabel()
        task_label = QtWidgets.QLabel()

        result_layout.addWidget(project_label)
        result_layout.addWidget(asset_label)
        result_layout.addWidget(task_label)
        result_layout.addStretch()
        # endregion results

        context_widget = QtWidgets.QWidget()
        column_layout.addWidget(assets)
        column_layout.addWidget(tasks_widgets)
        context_widget.setLayout(column_layout)

        splitter.addWidget(context_widget)
        splitter.addWidget(result_widget)
        splitter.setSizes([1, 0])

        main_layout.addWidget(splitter)

        # Enable for other functions
        self._last_selected_task = None
        self._task_view = task_view
        self._task_model = task_model
        self._assets = assets

        self._context_asset = asset_label
        self._context_task = task_label

        assets.selection_changed.connect(self.on_asset_changed)
        accept_btn.clicked.connect(self.on_accept_clicked)
        assets.refresh()

        self.select_asset(api.Session["AVALON_ASSET"])
        self.select_task(api.Session["AVALON_TASK"])

        self.setLayout(main_layout)

        # Enforce current context to be up-to-date
        self.refresh_context_view()
Esempio n. 24
0
    def __init__(self, parent=None):
        super(FocusComparing, self).__init__(parent=parent)

        widget = pindict.to_pindict({
            "overallDiff": {
                "main": QtWidgets.QGroupBox("Compare Features"),
                "name": {
                    "main": QtWidgets.QWidget(),
                    "icon": QtWidgets.QLabel(),
                    "label": QtWidgets.QLabel("Hierarchy"),
                    "status": QtWidgets.QLabel("--"),
                },
                "id": {
                    "main": QtWidgets.QWidget(),
                    "icon": QtWidgets.QLabel(),
                    "label": QtWidgets.QLabel("Avalon Id"),
                    "status": QtWidgets.QLabel("--"),
                },
                "mesh": {
                    "main": QtWidgets.QWidget(),
                    "icon": QtWidgets.QLabel(),
                    "label": QtWidgets.QLabel("Mesh"),
                    "status": QtWidgets.QLabel("--"),
                },
                "uv": {
                    "main": QtWidgets.QWidget(),
                    "icon": QtWidgets.QLabel(),
                    "label": QtWidgets.QLabel("UV"),
                    "status": QtWidgets.QLabel("--"),
                },
            },
            "featureMenu": {
                "main": QtWidgets.QWidget(),
                "label": QtWidgets.QLabel("Focus On"),
                "list": QtWidgets.QComboBox(),
            },
            "focus": {
                "view": QtWidgets.QTreeView(),
                "model": models.FocusModel(),
                "pathDelegate": delegates.PathTextDelegate(),
            }
        })

        with widget.pin("overallDiff") as diff:
            layout = QtWidgets.QVBoxLayout(diff["main"])

            for key in ["name", "id", "mesh", "uv"]:
                with widget.pin("overallDiff." + key) as feature:
                    lay = QtWidgets.QHBoxLayout(feature["main"])
                    lay.addWidget(feature["label"])
                    lay.addSpacing(8)
                    lay.addWidget(feature["icon"])
                    lay.addSpacing(12)
                    lay.addWidget(feature["status"], stretch=True)

                    feature["label"].setFixedWidth(60)
                    feature["label"].setAlignment(QtCore.Qt.AlignRight)

                    icon = delegates.FEATURE_ICONS[key]
                    pixmap = lib.icon(icon, models.COLOR_DARK).pixmap(16, 16)
                    feature["icon"].setPixmap(pixmap)

                layout.addWidget(feature["main"])
                layout.addSpacing(-16)
            layout.addSpacing(16)
            layout.setContentsMargins(0, 0, 0, 0)

        with widget.pin("featureMenu") as menu:
            layout = QtWidgets.QHBoxLayout(menu["main"])
            layout.addWidget(menu["label"])
            layout.addWidget(menu["list"])
            layout.addStretch()

        layout = QtWidgets.QVBoxLayout(self)
        layout.addSpacing(-16)
        layout.addWidget(widget["overallDiff"]["main"])
        layout.addSpacing(-8)
        layout.addWidget(widget["featureMenu"]["main"])
        layout.addSpacing(-8)
        layout.addWidget(widget["focus"]["view"])

        # Init
        with widget.pin("featureMenu") as menu:
            menu["list"].addItem(" Hierarchy", "longName")
            menu["list"].addItem(" Avalon Id", "avalonId")
            menu["list"].addItem(" Full Path", "fullPath")
            menu["list"].addItem(" Mesh", "points")
            menu["list"].addItem(" UV", "uvmap")

        with widget.pin("focus") as focus:
            focus["view"].setModel(focus["model"])
            focus["view"].setItemDelegateForColumn(1, focus["pathDelegate"])
            focus["view"].setHeaderHidden(True)
            focus["view"].setUniformRowHeights(True)
            focus["view"].setAlternatingRowColors(False)
            focus["view"].setIndentation(6)
            focus["view"].setStyleSheet("""
                QTreeView::item{
                    padding: 2px 1px;
                    border: 0px;
                }
            """)
            focus["view"].setSelectionMode(focus["view"].NoSelection)
            height = focus["view"].sizeHintForRow(0) * 2 + 4  # MagicNum
            focus["view"].setFixedHeight(height)
            focus["view"].setColumnWidth(0, 28)

        self.widget = widget
        self._focusing = False

        # Connect
        with widget.pin("featureMenu") as menu:
            menu["list"].currentIndexChanged.connect(self.on_feature_changed)
        self.focus_enabled.connect(self.on_focus_enabled)
Esempio n. 25
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. 26
0
    def create_tab(self):
        widget = pindict.to_pindict({
            "main":
            QtWidgets.QWidget(),
            "top": {
                "main": QtWidgets.QWidget(),
                "label": QtWidgets.QLabel("Table Name:"),
                "line": QtWidgets.QLineEdit(),
            },
            "ctrl": {
                "tabs": {
                    "main": QtWidgets.QTabWidget(),
                    "focus": views.FocusComparing(),
                    "select": {
                        "main": QtWidgets.QWidget(),
                        "selectorA": views.SelectorWidget(side=views.SIDE_A),
                        "selectorB": views.SelectorWidget(side=views.SIDE_B),
                    },
                },
            },
            "table": {
                "tabs": {
                    "main": QtWidgets.QTabWidget(),
                    "comparer": views.ComparingTable(),
                },
            },
            "statusLine":
            widgets.StatusLineWidget(main_logger, self),
        })

        with widget.pin("top") as top:
            layout = QtWidgets.QHBoxLayout(top["main"])
            layout.addWidget(top["label"])
            layout.addWidget(top["line"])

        with widget.pin("ctrl.tabs.select") as selectors:
            layout = QtWidgets.QHBoxLayout(selectors["main"])
            layout.addWidget(selectors["selectorA"])
            layout.addSpacing(-12)
            layout.addWidget(selectors["selectorB"])
            layout.setContentsMargins(2, 2, 2, 2)

        with widget.pin("ctrl.tabs") as ctrl:
            icon_1 = lib.icon("hand-o-right", "white")
            icon_2 = lib.icon("bullseye", "#BEBEBE")
            ctrl["main"].addTab(ctrl["select"]["main"], icon_1, "Select")
            ctrl["main"].addTab(ctrl["focus"], icon_2, "Focus")
            ctrl["main"].setTabPosition(QtWidgets.QTabWidget.West)

        with widget.pin("table.tabs") as table:
            icon = lib.icon("adjust", "#BEBEBE")
            table["main"].addTab(table["comparer"], icon, "Compare")
            table["main"].setTabPosition(QtWidgets.QTabWidget.West)

        layout = QtWidgets.QVBoxLayout(widget["main"])
        layout.addWidget(widget["top"]["main"])
        layout.addWidget(widget["ctrl"]["tabs"]["main"])
        layout.addWidget(widget["table"]["tabs"]["main"], stretch=True)
        layout.addWidget(widget["statusLine"])
        layout.setContentsMargins(4, 4, 4, 4)

        tab = self.page["tab"]

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

        self.page["tables"].append(widget)

        # Connect
        with widget.pin("table.tabs") as table:
            with widget.pin("ctrl.tabs.select") as selectors:
                selectors["selectorA"].connect_comparer(table["comparer"])
                selectors["selectorB"].connect_comparer(table["comparer"])

            with widget.pin("ctrl.tabs") as ctrl:
                table["comparer"].picked.connect(ctrl["focus"].on_picked)
                ctrl["main"].currentChanged.connect(
                    ctrl["focus"].focus_enabled)
                ctrl["main"].currentChanged.connect(
                    table["comparer"].focus_enabled)

            with widget.pin("top") as top:
                top["line"].textChanged.connect(
                    lambda text: tab.setTabText(index, text))
    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. 28
0
    def __init__(self, parent=None):
        super(DatabaseSelectorWidget, self).__init__(parent=parent)

        panel = {
            "silo": QtWidgets.QWidget(),
            "asset": QtWidgets.QWidget(),
            "subset": QtWidgets.QWidget(),
            "version": QtWidgets.QWidget(),
        }

        label = {
            "silo": QtWidgets.QLabel("Silo"),
            "asset": QtWidgets.QLabel("Asset"),
            "subset": QtWidgets.QLabel("Subset"),
            "version": QtWidgets.QLabel("Version"),
        }

        widget = {
            "silo": QtWidgets.QComboBox(),
            "asset": QtWidgets.QComboBox(),
            "subset": QtWidgets.QComboBox(),
            "version": QtWidgets.QComboBox(),
        }

        model = {
            "silo": models.DatabaseDocumentModel(level="silo"),
            "asset": models.DatabaseDocumentModel(level="asset"),
            "subset": models.DatabaseDocumentModel(level="subset"),
            "version": models.DatabaseDocumentModel(level="version"),
        }

        view = {
            "silo": QtWidgets.QListView(),
            "asset": QtWidgets.QListView(),
            "subset": QtWidgets.QListView(),
            "version": QtWidgets.QListView(),
        }

        widget["silo"].setModel(model["silo"])
        widget["asset"].setModel(model["asset"])
        widget["subset"].setModel(model["subset"])
        widget["version"].setModel(model["version"])

        widget["silo"].setView(view["silo"])
        widget["asset"].setView(view["asset"])
        widget["subset"].setView(view["subset"])
        widget["version"].setView(view["version"])

        def build_panel(level):
            label[level].setFixedWidth(60)
            label[level].setAlignment(QtCore.Qt.AlignVCenter |
                                      QtCore.Qt.AlignRight)
            layout = QtWidgets.QHBoxLayout(panel[level])
            layout.addWidget(label[level])
            layout.addWidget(widget[level])
        build_panel("silo")
        build_panel("asset")
        build_panel("subset")
        build_panel("version")

        layout = QtWidgets.QVBoxLayout(self)
        layout.addWidget(panel["silo"])
        layout.addSpacing(-16)
        layout.addWidget(panel["asset"])
        layout.addSpacing(-16)
        layout.addWidget(panel["subset"])
        layout.addSpacing(-16)
        layout.addWidget(panel["version"])

        # Connect

        def connect_index_changed(level, callback):
            widget[level].currentIndexChanged.connect(callback)
        connect_index_changed("silo", self.on_silo_changed)
        connect_index_changed("asset", self.on_asset_changed)
        connect_index_changed("subset", self.on_subset_changed)
        connect_index_changed("version", self.on_version_changed)

        # Init

        self.widget = widget
        self.model = model
        self.view = view

        silo = api.Session.get("AVALON_SILO")
        if silo:
            init_index = self.widget["silo"].findText(silo)
            self.widget["silo"].setCurrentIndex(init_index)

        asset = api.Session.get("AVALON_ASSET")
        if silo and asset:
            init_index = self.widget["asset"].findText(asset)
            self.widget["asset"].setCurrentIndex(init_index)
Esempio n. 29
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)
Esempio n. 30
0
    def setup_ui(self):
        """Build the UI"""

        main_layout = QtWidgets.QHBoxLayout()
        splitter = QtWidgets.QSplitter()

        # Container overview
        container_widget = QtWidgets.QWidget()
        container_title = self._create_label("Assets")
        container_layout = QtWidgets.QVBoxLayout()

        container_model = models.ContainerModel()
        container_view = views.View()
        container_view.setModel(container_model)
        container_view.setContextMenuPolicy(QtCore.Qt.NoContextMenu)

        from_selection_btn = QtWidgets.QPushButton("Get Looks From Selection")
        from_all_asset_btn = QtWidgets.QPushButton("Get Looks From All Assets")

        container_layout.addWidget(container_title)
        container_layout.addWidget(from_selection_btn)
        container_layout.addWidget(from_all_asset_btn)
        container_layout.addWidget(container_view)

        # Add container view
        container_widget.setLayout(container_layout)
        splitter.addWidget(container_widget)

        # look manager layout
        look_views_widget = QtWidgets.QWidget()
        look_views_layout = QtWidgets.QVBoxLayout()
        look_views_layout.setSpacing(10)

        # Looks from database
        documents_title = self._create_label("Available looks")
        documents_title.setAlignment(QtCore.Qt.AlignCenter)
        document_model = models.FlatModel()
        document_view = views.View()
        document_view.setToolTip("Use right mouse button menu for direct actions")
        document_view.setModel(document_model)
        document_view.setMinimumHeight(230)

        look_views_layout.addWidget(documents_title)
        look_views_layout.addWidget(document_view)

        # Turn off queue at start, show this widget
        queue_off_message = QtWidgets.QLabel(
            "Queue is empty, add items to the queue to active it")
        queue_off_message.setAlignment(QtCore.Qt.AlignCenter)
        queue_off_message.setStyleSheet("font-size: 12px;")

        # Queue view
        queue_title = self._create_label("Queue")
        queue_title.setAlignment(QtCore.Qt.AlignCenter)
        queue_model = models.LookQueueModel()
        queue_view = views.View()
        queue_view.setModel(queue_model)

        queue_widgets = QtWidgets.QStackedWidget()
        queue_widgets.addWidget(queue_off_message)
        queue_widgets.addWidget(queue_view)

        look_views_layout.addWidget(queue_title)
        look_views_layout.addWidget(queue_widgets)

        # Method buttons
        method_buttons_layout = QtWidgets.QHBoxLayout()
        assign_to_selected_btn = QtWidgets.QPushButton("Process Selected Queue")
        assign_to_all_btn = QtWidgets.QPushButton("Process Queued Looks")
        remove_unused_btn = QtWidgets.QPushButton("Remove Unused Looks")
        method_buttons_layout.addWidget(assign_to_selected_btn)
        method_buttons_layout.addWidget(assign_to_all_btn)
        method_buttons_layout.addWidget(remove_unused_btn)

        load_save_buttons_layout = QtWidgets.QHBoxLayout()
        load_queue_btn = QtWidgets.QPushButton("Load Queue from File")
        save_queue_btn = QtWidgets.QPushButton("Save Queue to File")
        load_save_buttons_layout.addWidget(load_queue_btn)
        load_save_buttons_layout.addWidget(save_queue_btn)

        look_views_layout.addLayout(method_buttons_layout)
        look_views_layout.addLayout(load_save_buttons_layout)
        look_views_widget.setLayout(look_views_layout)
        splitter.addWidget(look_views_widget)

        main_layout.addWidget(splitter)

        container_view.setColumnWidth(0, 200)  # subset
        document_view.setColumnWidth(0, 200)
        queue_view.setColumnWidth(0, 200)

        self.from_selection_btn = from_selection_btn
        self.from_all_asset_btn = from_all_asset_btn

        self.assign_to_selected_btn = assign_to_selected_btn
        self.assign_to_all_btn = assign_to_all_btn
        self.remove_unused_btn = remove_unused_btn

        self.container_model = container_model
        self.container_view = container_view

        self.document_model = document_model
        self.document_view = document_view

        self.queue_widgets = queue_widgets
        self.queue_model = queue_model
        self.queue_view = queue_view

        self.save_queue = save_queue_btn
        self.load_queue = load_queue_btn

        self.setLayout(main_layout)