def buildWidgets(self, hints):
        """Creates most of the UI widgets"""
        label = QtGui.QLabel(" (PyMock)", self)
        label.setProperty('smallFont', True)
        label.setProperty('boldFont', True)
        p = label.palette()
        p.setColor(QtGui.QPalette.WindowText, QtGui.QColor(255, 200, 0))
        p.setColor(QtGui.QPalette.Text, QtGui.QColor(255, 200, 0))
        label.setPalette(p)
        self.layout().addWidget(label)

        self.layout().addWidget(QtGui.QLabel("mock://"))
        self.__showEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__showEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__shotEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__shotEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__assetEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__assetEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__versionEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__versionEdit)

        self.connect(self.__showEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__shotEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__assetEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__versionEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
    def buildWidgets(self, hints):
        """
        This will construct the UI for the render widget for the asset 
        management system.
        """
        label = QtGui.QLabel(" (PyMock)", self)
        label.setProperty('smallFont', True)
        label.setProperty('boldFont', True)
        p = label.palette()
        p.setColor(QtGui.QPalette.WindowText, QtGui.QColor(255, 200, 0))
        p.setColor(QtGui.QPalette.Text, QtGui.QColor(255, 200, 0))
        label.setPalette(p)
        self.layout().addWidget(label)

        assetIdWidget = QtGui.QWidget(self)
        assetIdHBox = QtGui.QHBoxLayout(assetIdWidget)
        assetIdLabel = QtGui.QLabel("Output Asset:", assetIdWidget)
        assetIdLabel.setEnabled(False)
        assetIdHBox.addWidget(assetIdLabel, 0)
        self.__assetIdLabel = QtGui.QLineEdit("", assetIdWidget)
        self.__assetIdLabel.setReadOnly(True)
        assetIdHBox.addWidget(self.__assetIdLabel, 0)
        self.layout().addWidget(assetIdWidget)

        self.updateWidgets()
Esempio n. 3
0
 def drawDecoration(self, painter, option, rect, pixmap):
     if self.__drawViewBadge:
         painter.fillRect(rect, QtGui.QBrush(QtGui.QColor(93,93,187)))
         painter.save()
         painter.setPen(QtGui.QPen(QtGui.QColor(80,80,160)))
         painter.drawRect(rect)
         painter.restore()
         self.__drawViewBadge = False
     if pixmap:
         painter.drawPixmap(rect.left()+1,
             rect.top()+(rect.height()-pixmap.height())/2, pixmap)
Esempio n. 4
0
    def buildWidgets(self, hints):
        """Creates most of the UI widgets"""
        label = QtGui.QLabel(" (PyMock)", self)
        label.setProperty('smallFont', True)
        label.setProperty('boldFont', True)
        p = label.palette()
        p.setColor(QtGui.QPalette.WindowText, QtGui.QColor(255, 200, 0))
        p.setColor(QtGui.QPalette.Text, QtGui.QColor(255, 200, 0))
        label.setPalette(p)
        self.layout().addWidget(label)

        self.__protocolLabel = QtGui.QLabel("mock://")
        self.layout().addWidget(self.__protocolLabel)

        self.__showEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__showEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__shotEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__shotEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__assetEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__assetEdit)

        self.layout().addWidget(QtGui.QLabel("/"))
        self.__versionEdit = QT4FormWidgets.InputWidgets.InputLineEdit(self)
        self.layout().addWidget(self.__versionEdit)

        self.connect(self.__showEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__shotEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__assetEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)
        self.connect(self.__versionEdit, QtCore.SIGNAL("lostFocus"),
                     self.__lostFocus)

        # Add a context menu to the protocol label
        self.__protocolLabel.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.connect(
            self.__protocolLabel,
            QtCore.SIGNAL('customContextMenuRequested(const QPoint&)'),
            self.onContextMenu)

        self.__popupMenu = QtGui.QMenu(self)
        self.__popupMenu.addAction("Swap protocol", self.onSwapProtocol)
Esempio n. 5
0
    def paintEvent(self, event):
        """
        Overrides the base paint event so we can overlay our circle.
        """
        QtGui.QLabel.paintEvent(self, event)

        if self.__xPoint > 0 and self.__yPoint > 0:
            paint = QtGui.QPainter()
            paint.begin(self)
            paint.setRenderHint(QtGui.QPainter.Antialiasing)

            paint.setPen(QtGui.QColor(0, 255, 0))
            paint.setBrush(QtGui.QColor(0, 255, 0))
            center = QtCore.QPoint(self.__xPoint, self.__yPoint)
            paint.drawEllipse(center, 5, 5)

            paint.end()
    def create(self):
        widget = QtGui.QWidget()
        widget_a = QtGui.QWidget()
        widget_b = QtGui.QWidget()
        palette = widget.palette()
        palette.setColor(widget.backgroundRole(),
                         QtGui.QColor(0.14 * 255, 0.14 * 255, 0.14 * 255))
        widget.setPalette(palette)

        layout = QtGui.QVBoxLayout(widget)
        layout.setSpacing(5)
        layout.setContentsMargins(0, 0, 0, 0)
        layout_a = QtGui.QVBoxLayout(widget_a)
        layout_b = QtGui.QVBoxLayout(widget_b)
        layout_a.setContentsMargins(10, 10, 10, 10)
        layout_b.setContentsMargins(10, 10, 10, 10)
        widget_line = QtGui.QFrame()
        widget_line.setFrameShape(QtGui.QFrame.HLine)
        widget_line.setFrameShadow(QtGui.QFrame.Sunken)
        layout.addWidget(widget_a)
        layout.addWidget(widget_line)
        layout.addWidget(widget_b)

        self.pre_shot_image = kImageWidget()
        pre_shot_image_path = os.path.join(_iconsDir, "no-image.svg")
        pixmap = QtGui.QPixmap(pre_shot_image_path)
        self.pre_shot_image.setPixmap(pixmap)

        self.post_shot_image = kImageWidget()
        post_shot_image_path = os.path.join(_iconsDir, "no-image.svg")
        pixmap = QtGui.QPixmap(post_shot_image_path)
        self.post_shot_image.setPixmap(pixmap)

        self.pre_shot_label = QtGui.QLabel()
        self.pre_shot_label.setFont(
            QtGui.QFont("Rome times", 6, QtGui.QFont.Bold))
        self.pre_shot_label.setText(
            "<font color='white'>Pre Shot : None</font>")
        self.pre_shot_label.setAlignment(QtCore.Qt.AlignLeft)
        self.pre_shot_label.setGeometry(5, 5, 300, 100)
        self.pre_shot_label.setParent(self.pre_shot_image)
        self.post_shot_label = QtGui.QLabel()
        self.post_shot_label.setFont(
            QtGui.QFont("Rome times", 6, QtGui.QFont.Bold))
        self.post_shot_label.setText(
            "<font color='white'>Post Shot : None</font>")
        self.post_shot_label.setAlignment(QtCore.Qt.AlignLeft)
        self.post_shot_label.setGeometry(5, 5, 300, 100)
        self.post_shot_label.setParent(self.post_shot_image)

        layout_a.addWidget(self.pre_shot_image)
        layout_b.addWidget(self.post_shot_image)

        return widget
    def __init__(self, parent):
        QtGui.QWidget.__init__(self, parent)
        QtGui.QVBoxLayout(self)

        self._pre_shot_name = None
        self._post_shot_name = None
        self._pre_shot_frame = None
        self._post_shot_frame = None
        self._pre_shot_frame_range = None
        self._post_shot_frame_range = None

        # add title
        commonLabel = kTitleLabel()
        commonLabel.setIcon(os.path.join(_iconsDir, "settings-work-tool.png"))
        commonLabel.button.clicked.connect(
            lambda arg=None, args=None: self.buttonScript())
        commonLabel.setHeight(40)
        commonLabel.setMinimumWidth(330)
        palette = QtGui.QPalette()
        palette.setColor(QtGui.QPalette.Background,
                         QtGui.QColor(0.5 * 255, 0.5 * 255, 0.6 * 255))
        palette.setColor(QtGui.QPalette.WindowText,
                         QtGui.QColor(0.0, 0.0, 0.0))
        commonLabel.setAutoFillBackground(True)
        commonLabel.setText("Lighting Shot Color Reference")
        commonLabel.setPalette(palette)
        commonLabel.setAlignment(QtCore.Qt.AlignCenter)
        commonLabel.setFont(QtGui.QFont("Rome times", 10, QtGui.QFont.Bold))

        self.layout().setContentsMargins(0, 0, 0, 0)
        self.layout().setSpacing(0)
        self.layout().addWidget(commonLabel)
        main_widget = self.create()
        scroll = QtGui.QScrollArea()
        scroll.setWidget(main_widget)
        scroll.setWidgetResizable(True)
        self.layout().addWidget(scroll)

        SettingWidget.init(self)
Esempio n. 8
0
        def lightListWidgetMousePressEvent(event):
            """
            Handle mouse events
            """
            # Set up context menu (right-click)
            if event.button() == QtCore.Qt.RightButton:
                item = lightListWidget.itemAt(event.pos())
                if not item:
                    return

                scriptItem = item.getItemData()
                item.setHiliteColor(QtGui.QColor(32,32,32))
                lightListWidget.update(lightListWidget.indexFromItem(item))

                menu = QtGui.QMenu(None)

                # Render options
                UI4.Util.RenderMenu.AddRenderItemsToMenu(
                        menu, scriptItem.getRenderNode(), None)
                menu.addSeparator()

                # Add 'Delete' action
                def delete():
                    # Delete selected light pass items
                    for item in lightListWidget.selectedItems():
                        item.getItemData().delete()


                menu.addAction('Delete', delete)
                menu.addSeparator()

                # Add 'View From Render Node' action
                def viewNode():
                    NodegraphAPI.SetNodeViewed(
                            scriptItem.getRenderNode(), True, exclusive=True)
                action = menu.addAction('View From Render Node', viewNode)
                action.setIcon(UI4.Util.IconManager.GetIcon(
                        'Icons/AttributeEditor/blue_snapback.png'))

                # Show menu
                pos = event.pos()
                pos = lightListWidget.mapToGlobal(QtCore.QPoint(
                         pos.x(), pos.y() + lightListWidget.header().height()))
                try:
                    menu.exec_(pos)
                finally:
                    item.setHiliteColor(None)
                    lightListWidget.update(lightListWidget.indexFromItem(item))
                    event.accept()
                    self.updateLightList()
Esempio n. 9
0
    def __refresh(self):
        if self.__building:
            return

        if str(self.__scopePopup.currentText()).startswith('Upstream'):
            self.__shadingNetworkMaterialsPopup.show()
        else:
            self.__shadingNetworkMaterialsPopup.hide()

        sm = Widgets.ScrollAreaMemory.ScrollAreaMemory(self.__tree)

        selectedItems = set(x.getItemData()['key'] \
                for x in self.__tree.selectedItems())
        closedItems = set()
        for i in xrange(self.__tree.topLevelItemCount()):
            item = self.__tree.topLevelItem(i)
            if not item.isExpanded():
                closedItems.add(item.getItemData()['key'])

        self.__tree.clear()

        with self.__tree.getUpdateSuppressor():
            for node in self.__getScopedNodes():
                item = QT4Widgets.SortableTreeWidgetItem(
                    self.__tree, node.getName())
                item.setIcon(self.COLUMN_SOURCE_NAME,
                             UI4.Util.IconManager.GetIcon('Icons/node16.png'))

                key = hash(node)

                item.setItemData({'name': node.getName(), 'key': key})

                if key in selectedItems:
                    item.setSelected(True)

                self.__buildNodeChildren(item, selectedItems)
                item.setExpanded(key not in closedItems)

                item.setText(
                    self.COLUMN_PUBLIC_NAME,
                    node.getParameter('publicInterface.namePrefix').getValue(
                        0))
                item.setText(
                    self.COLUMN_PUBLIC_PAGE,
                    node.getParameter('publicInterface.pagePrefix').getValue(
                        0))

                item.setHiliteColor(QtGui.QColor(52, 64, 64))
            self.__filterUpdate()
Esempio n. 10
0
 def treeWidgetMousePressEvent(event):
     """
     Handle mouse events
     """
     # Set up context menu (right-click)
     if event.button() == QtCore.Qt.RightButton:
         item = treeWidget.itemAt(event.pos())
         if not item:
             return
         
         scriptItem = item.getItemData()                
         item.setHiliteColor(QtGui.QColor(32,32,32))
         treeWidget.update(treeWidget.indexFromItem(item))
         
         menu = QtGui.QMenu(None)
         
         # Add 'Delete' action
         menu.addAction('Delete', scriptItem.delete)
         menu.addSeparator()
         
         # Add 'View From ShadowBranch Node' action
         def viewNode():
             NodegraphAPI.SetNodeViewed(
                 scriptItem.getShadowBranchNode(), True, exclusive=True)
         action = menu.addAction('View From ShadowBranch Node',viewNode)
         action.setIcon(UI4.Util.IconManager.GetIcon(
                 'Icons/AttributeEditor/blue_snapback.png'))                
         
         # Show menu
         pos = event.pos()
         pos = treeWidget.mapToGlobal(QtCore.QPoint(
                         pos.x(), pos.y()))
         
         try:
             menu.exec_(pos)
         finally:
             item.setHiliteColor(None)
             treeWidget.update(treeWidget.indexFromItem(item))
             event.accept()
Esempio n. 11
0
    def __listMousePressEvent(self, event):
        item = self.tree.itemAt(event.pos())
        if not item:
            return
        pos = event.pos()
        pos = self.tree.mapToGlobal(
            QtCore.QPoint(pos.x(),
                          pos.y() + self.tree.header().height()))
        self.__lastTreePos = event.pos()
        self.__lastPos = pos
        if event.button() == QtCore.Qt.LeftButton:
            local_pos = event.pos()
            global_pos = pos
            if self.__popupVersions(item, local_pos, global_pos):
                event.accept()
        else:
            if event.button() == QtCore.Qt.RightButton:
                if item.isSelected():
                    items = self.tree.selectedItems()
                else:
                    items = [item]
                for item in items:
                    dark = QtGui.QColor(32, 32, 32)
                    item.setHiliteColor(dark)
                    self.tree.update(self.tree.indexFromItem(item))

                menu = QtWidgets.QMenu(None)
                types = set((i.getItemData()['type'] for i in items))
                if len(types) > 1:
                    menu.addAction(RemoveItemsAction(menu, self.node, items))
                else:
                    itemType = tuple(types)[0]
                    if itemType == 'output':
                        if str(item.text(NAME_COLUMN)) == 'default':
                            a = menu.addAction(
                                '(Default Output Cannot Be Removed)')
                            a.setEnabled(False)
                        else:
                            menu.addAction(
                                RemoveItemsAction(menu, self.node, items))
                    else:
                        if itemType == 'assetTree':
                            assetItem = item.getItemData()['assetItem']
                            if assetItem.isIgnorable():
                                menu.addAction(
                                    ToggleIgnoreItemsAction(
                                        menu, self.node, items,
                                        not assetItem.isIgnored()))
                            if assetItem.isDeletable():
                                try:
                                    menu.addAction(
                                        RemoveItemsAction(
                                            menu, self.node, items))
                                except Exception as exception:
                                    log.exception(
                                        'Error adding action to context menu: %s'
                                        % str(exception))

                            if assetItem.canDuplicate():
                                try:
                                    menu.addAction(
                                        DuplicateItemAction(
                                            menu, self.node, items))
                                except:
                                    import traceback
                                    traceback.print_exc()

                            if len(items) == 1:
                                assetItem.addToContextMenu(menu, self.node)
                menu.exec_(pos)
                for item in items:
                    item.setHiliteColor(None)
                    self.tree.update(self.tree.indexFromItem(item))

                event.accept()
        return