def createGroupByMenu(self): """ Create a new instance of the group by menu. :rtype: QtWidgets.QMenu """ menu = QtWidgets.QMenu("Group By", self) groupOrder = self._groupOrder groupColumn = self._groupColumn action = studioqt.SeparatorAction("Group By", menu) menu.addAction(action) action = menu.addAction("None") action.setCheckable(True) callback = partial(self.setGroupColumn, None) action.triggered.connect(callback) groupByLabels = self.groupLabels() currentGroupCollumn = self.groupColumn() if currentGroupCollumn is None: action.setChecked(True) for column in range(self.columnCount()): label = self.labelFromColumn(column) if groupByLabels and label not in groupByLabels: continue action = menu.addAction(label) action.setCheckable(True) if currentGroupCollumn == column: action.setChecked(True) callback = partial(self.setGroupColumn, column, groupOrder) action.triggered.connect(callback) action = studioqt.SeparatorAction("Group Order", menu) menu.addAction(action) action = menu.addAction("Ascending") action.setCheckable(True) action.setChecked(groupOrder == QtCore.Qt.AscendingOrder) callback = partial(self.setGroupColumn, groupColumn, QtCore.Qt.AscendingOrder) action.triggered.connect(callback) action = menu.addAction("Descending") action.setCheckable(True) action.setChecked(groupOrder == QtCore.Qt.DescendingOrder) callback = partial(self.setGroupColumn, groupColumn, QtCore.Qt.DescendingOrder) action.triggered.connect(callback) return menu
def show(self, point=None): """ Show the menu options. :type point: QtGui.QPoint or None """ self.clear() sortby = self.dataset().sortBy() if sortby: currentField = self.dataset().sortBy()[0].split(":")[0] currentOrder = "dsc" if "dsc" in self.dataset().sortBy()[0] else "asc" else: currentField = "" currentOrder = "" action = studioqt.SeparatorAction("Sort By", self) self.addAction(action) fields = self.dataset().SortFields for field in fields: action = self.addAction(field.title()) action.setCheckable(True) if currentField == field: action.setChecked(True) else: action.setChecked(False) callback = partial(self.setSortBy, field, currentOrder) action.triggered.connect(callback) action = studioqt.SeparatorAction("Sort Order", self) self.addAction(action) action = self.addAction("Ascending") action.setCheckable(True) action.setChecked(currentOrder == "asc") callback = partial(self.setSortBy, currentField, "asc") action.triggered.connect(callback) action = self.addAction("Descending") action.setCheckable(True) action.setChecked(currentOrder == "dsc") callback = partial(self.setSortBy, currentField, "dsc") action.triggered.connect(callback) if not point: point = QtGui.QCursor.pos() self.exec_(point)
def createSortByMenu(self): """ Create a new instance of the sort by menu. :rtype: QtWidgets.QMenu """ menu = QtWidgets.QMenu("Sort By", self) sortOrder = self._sortOrder sortColumn = self._sortColumn sortLabel = self.labelFromColumn(sortColumn) action = studioqt.SeparatorAction("Sort By", menu) menu.addAction(action) sortByLabels = self.sortLabels() for label in sortByLabels: action = menu.addAction(label) action.setCheckable(True) if sortLabel == label: action.setChecked(True) else: action.setChecked(False) callback = partial(self.setSortColumn, label, sortOrder) action.triggered.connect(callback) action = studioqt.SeparatorAction("Sort Order", menu) menu.addAction(action) action = menu.addAction("Ascending") action.setCheckable(True) action.setChecked(sortOrder == QtCore.Qt.AscendingOrder) callback = partial(self.setSortColumn, sortColumn, QtCore.Qt.AscendingOrder) action.triggered.connect(callback) action = menu.addAction("Descending") action.setCheckable(True) action.setChecked(sortOrder == QtCore.Qt.DescendingOrder) callback = partial(self.setSortColumn, sortColumn, QtCore.Qt.DescendingOrder) action.triggered.connect(callback) return menu
def createSortByMenu(self): """ Create a new instance of the sort by menu. :rtype: QtWidgets.QMenu """ menu = QtWidgets.QMenu("Sort By", self) sortOrder = self.sortOrder() sortColumn = self.sortColumn() action = studioqt.SeparatorAction("Sort By", menu) menu.addAction(action) for column in range(self.columnCount()): label = self.labelFromColumn(column) action = menu.addAction(label) action.setCheckable(True) if column == sortColumn: action.setChecked(True) else: action.setChecked(False) callback = partial(self.sortByColumn, column, sortOrder) action.triggered.connect(callback) action = studioqt.SeparatorAction("Sort Order", menu) menu.addAction(action) action = menu.addAction("Ascending") action.setCheckable(True) action.setChecked(sortOrder == QtCore.Qt.AscendingOrder) callback = partial(self.sortByColumn, sortColumn, QtCore.Qt.AscendingOrder) action.triggered.connect(callback) action = menu.addAction("Descending") action.setCheckable(True) action.setChecked(sortOrder == QtCore.Qt.DescendingOrder) callback = partial(self.sortByColumn, sortColumn, QtCore.Qt.DescendingOrder) action.triggered.connect(callback) return menu
def show(self, point=None): """ Show the menu options. :type point: QtGui.QPoint or None """ self.clear() field = self._options.get('field') facets = self.dataset().distinct(field) action = studioqt.SeparatorAction("Show " + field.title(), self) self.addAction(action) for facet in facets: name = facet.get('name') title = name.replace('.', '').title() action = self.addAction(title) action.setCheckable(True) checked = self.settings().get(name, True) action.setChecked(checked) callback = partial(self._actionChecked, name, not checked) action.triggered.connect(callback) if not point: point = QtGui.QCursor.pos() self.exec_(point)
def createActions(self): """ Crate the actions to be shown in the menu. :rtype: None """ # Create the menu actions for setting the accent color action = studioqt.SeparatorAction("Accent", self) self.addAction(action) themes = self._themes if not themes: themes = themePresets() for theme in themes: if theme.accentColor(): action = ThemeAction(theme, self) self.addAction(action) if self.ENABLE_CUSTOM_ACTION: action = QtWidgets.QAction("Custom", self) action.triggered.connect(self.theme().browseAccentColor) color = self.theme().accentColor().toString() icon = studiolibrary.resource().icon(ThemesMenu.THEME_ICON, color=color) action.setIcon(icon) self.addAction(action) # Create the menu actions for setting the background color action = studioqt.SeparatorAction("Background", self) self.addAction(action) for theme in themes: if not theme.accentColor() and theme.backgroundColor(): action = ThemeAction(theme, self) self.addAction(action) if self.ENABLE_CUSTOM_ACTION: action = QtWidgets.QAction("Custom", self) action.triggered.connect(self._theme.browseBackgroundColor) color = self._theme.backgroundColor().toString() icon = studiolibrary.resource().icon(ThemesMenu.THEME_ICON, color=color) action.setIcon(icon) self.addAction(action) self.triggered.connect(self._triggered)
def createItemSettingsMenu(self): menu = QtWidgets.QMenu("Item View", self) action = studioqt.SeparatorAction("View Settings", menu) menu.addAction(action) action = studioqt.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 = studioqt.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 = studioqt.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 = studioqt.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