Beispiel #1
0
    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
Beispiel #2
0
    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)
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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