Beispiel #1
0
class DomainColorSelector(QtGui.QWidget):

    domain_color_changed = QtCore.pyqtSignal(str, uib.DomainValue, uib.RgbColor,
                                             name='DomainColorChanged')


    def __init__(self, parent=None):
        """
        Create a DomainColorSelector that allows the user to set the colors
        associated to domain values

        Args:
            - dom_colors (dict <dvalue>:<color>): mapping between a given
                domain value and its associated color

        """
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_DomainColorSelector()
        self.ui.setupUi(self)

        self.parent = parent
        
        self.ui.tableWidget.itemDoubleClicked.connect(self.edit_item_color)

    def edit_item_color(self,item):
        sdval = self.ui.tableWidget.verticalHeaderItem(item.row()).text()
        prev_col = item.backgroundColor()
        title = 'Select color for "%s"' %sdval
        flags = QtGui.QColorDialog.ShowAlphaChannel
        new_col = QtGui.QColorDialog.getColor(prev_col, self, title, flags)
        if new_col.isValid() and new_col != prev_col:
            item.setBackgroundColor(new_col)
            dval = self.sdval_to_val[sdval]
            self.domain_color_changed.emit(self.axis_name, dval,
                                           uib.qcolor_to_mpl_rgb(new_col))

    @QtCore.pyqtSlot(str, dict)
    def set_domain_colors(self, axis_name, dom_colors):
        self.axis_name = axis_name

        self.ui.tableWidget.clear()
        self.ui.tableWidget.setColumnCount(1)
        self.ui.tableWidget.setRowCount(len(dom_colors))
        item = QtGui.QTableWidgetItem()
        item.setText('Color')
        self.ui.tableWidget.setHorizontalHeaderItem(0, item)
        self.sdval_to_val = {} #mapping between displayed text and actual dom val
        for i, dval in enumerate(sorted(dom_colors.keys())):
            col = dom_colors[dval]
            item = QtGui.QTableWidgetItem()
            item.setText(str(dval))
            self.ui.tableWidget.setVerticalHeaderItem(i, item)
            self.sdval_to_val[item.text()] = dval

            item = QtGui.QTableWidgetItem()
            item.setBackgroundColor(QtGui.QColor(col))
            item.setFlags(QtCore.Qt.ItemIsEnabled)
            self.ui.tableWidget.setItem(i, 0, item)
Beispiel #2
0
    def __init__(self, parent=None):
        """
        Create a DomainColorSelector that allows the user to set the colors
        associated to domain values

        Args:
            - dom_colors (dict <dvalue>:<color>): mapping between a given
                domain value and its associated color

        """
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_DomainColorSelector()
        self.ui.setupUi(self)

        self.parent = parent
        
        self.ui.tableWidget.itemDoubleClicked.connect(self.edit_item_color)