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()
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)
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)
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)
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()
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()
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()
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