def showMenu(self): """Show the menu using the actions from the data.""" menu = QtWidgets.QMenu(self) actions = self.data().get("actions", []) for action in actions: name = action.get("name", "No name found") enabled = action.get("enabled", True) callback = action.get("callback") func = functools.partial(self._actionCallback, callback) action = menu.addAction(name) action.setEnabled(enabled) action.triggered.connect(func) point = QtGui.QCursor.pos() point.setX(point.x() + 3) point.setY(point.y() + 3) # Reset the action results self._actionResult = None menu.exec_(point) if self._actionResult is not None: self.setValue(self._actionResult)
def createHideColumnMenu(self): """ Create the hide column menu. :rtype: QtWidgets.QMenu """ menu = QtWidgets.QMenu("Show/Hide Column", self) action = menu.addAction("Show All") action.triggered.connect(self.showAllColumns) action = menu.addAction("Hide All") action.triggered.connect(self.hideAllColumns) menu.addSeparator() for column in range(self.columnCount()): label = self.labelFromColumn(column) isHidden = self.isColumnHidden(column) action = menu.addAction(label) action.setCheckable(True) action.setChecked(not isHidden) callback = partial(self.setColumnHidden, column, not isHidden) action.triggered.connect(callback) return menu
def showMenu(self): """ Show the edit menu at the current cursor position. :rtype: QtWidgets.QAction """ menu = QtWidgets.QMenu(self) self.item().contextEditMenu(menu) point = QtGui.QCursor.pos() point.setX(point.x() + 3) point.setY(point.y() + 3) return menu.exec_(point)
def createSettingsMenu(self): """ Create and return the settings menu for the widget. :rtype: QtWidgets.QMenu """ menu = QtWidgets.QMenu("Item View", self) menu.addSeparator() action = QtWidgets.QAction("Show labels", menu) action.setCheckable(True) action.setChecked(self.isItemTextVisible()) action.triggered[bool].connect(self.setItemTextVisible) menu.addAction(action) menu.addSeparator() copyTextMenu = self.treeWidget().createCopyTextMenu() menu.addMenu(copyTextMenu) menu.addSeparator() action = SliderAction("Size", menu) action.slider().setMinimum(10) action.slider().setMaximum(200) action.slider().setValue(self.zoomAmount()) action.slider().valueChanged.connect(self.setZoomAmount) menu.addAction(action) action = SliderAction("Border", menu) action.slider().setMinimum(0) action.slider().setMaximum(20) action.slider().setValue(self.padding()) action.slider().valueChanged.connect(self.setPadding) menu.addAction(action) # action = SliderAction("Spacing", menu) action.slider().setMinimum(self.DEFAULT_MIN_SPACING) action.slider().setMaximum(self.DEFAULT_MAX_SPACING) action.slider().setValue(self.spacing()) action.slider().valueChanged.connect(self.setSpacing) menu.addAction(action) return menu
def showContextMenu(self): """ Create and show the context menu for the search widget. :rtype QtWidgets.QAction """ menu = QtWidgets.QMenu(self) subMenu = self.createStandardContextMenu() subMenu.setTitle("Edit") menu.addMenu(subMenu) subMenu = self.createSpaceOperatorMenu(menu) menu.addMenu(subMenu) point = QtGui.QCursor.pos() action = menu.exec_(point) return action
def createHeaderMenu(self, column): """ Creates a new header menu. :rtype: QtWidgets.QMenu """ menu = QtWidgets.QMenu(self) label = self.labelFromColumn(column) action = menu.addAction("Hide '{0}'".format(label)) callback = partial(self.setColumnHidden, column, True) action.triggered.connect(callback) menu.addSeparator() action = menu.addAction('Resize to Contents') callback = partial(self.resizeColumnToContents, column) action.triggered.connect(callback) return menu
def createCopyTextMenu(self): """ Create a menu to copy the selected items data to the clipboard. :rtype: QtWidgets.QMenu """ menu = QtWidgets.QMenu("Copy Text", self) if self.selectedItems(): for column in range(self.columnCount()): label = self.labelFromColumn(column) action = menu.addAction(label) callback = partial(self.copyText, column) action.triggered.connect(callback) else: action = menu.addAction("No items selected") action.setEnabled(False) return menu
def example2(): """ Example: import studiolibrary.widgets.colorpicker reload(studiolibrary.widgets.colorpicker) studiolibrary.widgets.colorpicker.example2() """ menu = QtWidgets.QMenu() colors = [ "rgb(230, 60, 60)", "rgb(255, 90, 40)", "rgb(255, 125, 100)", "rgb(250, 200, 0)", "rgb(80, 200, 140)", "rgb(50, 180, 240)", "rgb(110, 110, 240)", ] action = ColorPickerAction(menu) action.picker().setColors(colors) menu.addAction(action) colors = [ "rgb(20, 20, 20)", "rgb(20, 30, 40)", "rgb(40, 40, 40)", "rgb(40, 50, 60)", "rgb(60, 60, 60)", "rgb(60, 70, 80)", "rgb(240, 240, 240)", ] action = ColorPickerAction(menu) action.picker().setColors(colors) menu.addAction(action) menu.addSeparator() menu.exec_()
def createSettingsMenu(self): menu = QtWidgets.QMenu("Item View", self) action = SeparatorAction("View Settings", menu) menu.addAction(action) action = SliderAction("Size", menu) action.slider().setMinimum(10) action.slider().setMaximum(200) action.slider().setValue(self.zoomAmount()) action.slider().valueChanged.connect(self.setZoomAmount) menu.addAction(action) action = SliderAction("Border", menu) action.slider().setMinimum(0) action.slider().setMaximum(20) action.slider().setValue(self.padding()) action.slider().valueChanged.connect(self.setPadding) menu.addAction(action) # action = SliderAction("Spacing", menu) action.slider().setMinimum(self.DEFAULT_MIN_SPACING) action.slider().setMaximum(self.DEFAULT_MAX_SPACING) action.slider().setValue(self.spacing()) action.slider().valueChanged.connect(self.setSpacing) menu.addAction(action) action = SeparatorAction("Label Options", menu) menu.addAction(action) for option in LabelDisplayOption.values(): action = QtWidgets.QAction(option.title(), menu) action.setCheckable(True) action.setChecked(option == self.labelDisplayOption()) callback = functools.partial(self.setLabelDisplayOption, option) action.triggered.connect(callback) menu.addAction(action) return menu
def createItemSettingsMenu(self): menu = QtWidgets.QMenu("Item View", self) action = SeparatorAction("View Settings", menu) menu.addAction(action) action = SliderAction("Size", menu) action.slider().setMinimum(10) action.slider().setMaximum(200) action.slider().setValue(self.zoomAmount()) action.slider().valueChanged.connect(self.setZoomAmount) menu.addAction(action) action = SliderAction("Border", menu) action.slider().setMinimum(0) action.slider().setMaximum(20) action.slider().setValue(self.padding()) action.slider().valueChanged.connect(self.setPadding) menu.addAction(action) # action = SliderAction("Spacing", menu) action.slider().setMinimum(self.DEFAULT_MIN_SPACING) action.slider().setMaximum(self.DEFAULT_MAX_SPACING) action.slider().setValue(self.spacing()) action.slider().valueChanged.connect(self.setSpacing) menu.addAction(action) action = SeparatorAction("Item Options", menu) menu.addAction(action) action = QtWidgets.QAction("Show labels", menu) action.setCheckable(True) action.setChecked(self.isItemTextVisible()) action.triggered[bool].connect(self.setItemTextVisible) menu.addAction(action) return menu
def createItemsMenu(self, items=None): """ Create the item menu for given item. :rtype: QtWidgets.QMenu """ item = items or self.selectedItem() menu = QtWidgets.QMenu(self) if item: try: item.contextMenu(menu) except Exception as error: logger.exception(error) else: action = QtWidgets.QAction(menu) action.setText("No Item selected") action.setDisabled(True) menu.addAction(action) return menu
def createSpaceOperatorMenu(self, parent=None): """ Return the menu for changing the space operator. :type parent: QGui.QMenu :rtype: QGui.QMenu """ menu = QtWidgets.QMenu(parent) menu.setTitle("Space Operator") # Create the space operator for the OR operator action = QtWidgets.QAction(menu) action.setText("OR") action.setCheckable(True) callback = partial(self.setSpaceOperator, "or") action.triggered.connect(callback) if self.spaceOperator() == "or": action.setChecked(True) menu.addAction(action) # Create the space operator for the AND operator action = QtWidgets.QAction(menu) action.setText("AND") action.setCheckable(True) callback = partial(self.setSpaceOperator, "and") action.triggered.connect(callback) if self.spaceOperator() == "and": action.setChecked(True) menu.addAction(action) return menu