Ejemplo n.º 1
0
    def add_row(self, attr=None, condition_type=None, condition_value=None):
        model = self.cond_list.model()
        row = model.rowCount()
        model.insertRow(row)

        attr_combo = QComboBox(
            minimumContentsLength=12,
            sizeAdjustPolicy=QComboBox.AdjustToMinimumContentsLengthWithIcon)
        attr_combo.row = row
        for var in filter_visible(
                chain(self.data.domain.variables, self.data.domain.metas)):
            attr_combo.addItem(*gui.attributeItem(var))
        attr_combo.setCurrentIndex(attr or 0)
        self.cond_list.setCellWidget(row, 0, attr_combo)

        index = QPersistentModelIndex(model.index(row, 3))
        temp_button = QPushButton(
            '×',
            self,
            flat=True,
            styleSheet='* {font-size: 16pt; color: silver}'
            '*:hover {color: black}')
        temp_button.clicked.connect(lambda: self.remove_one(index.row()))
        self.cond_list.setCellWidget(row, 3, temp_button)

        self.remove_all_button.setDisabled(False)
        self.set_new_operators(attr_combo, attr is not None, condition_type,
                               condition_value)
        attr_combo.currentIndexChanged.connect(
            lambda _: self.set_new_operators(attr_combo, False))

        self.cond_list.resizeRowToContents(row)
Ejemplo n.º 2
0
 def set_new_operators(self,
                       attr_combo,
                       adding_all,
                       selected_index=None,
                       selected_values=None):
     old_combo = self.cond_list.cellWidget(attr_combo.row, 1)
     prev_text = old_combo.currentText() if old_combo else ""
     oper_combo = QComboBox()
     oper_combo.row = attr_combo.row
     oper_combo.attr_combo = attr_combo
     attr_name = attr_combo.currentText()
     if attr_name in self.AllTypes:
         oper_combo.addItems(self.operator_names[attr_name])
     else:
         var = self.data.domain[attr_name]
         oper_combo.addItems(self.operator_names[type(var)])
     if selected_index is None:
         selected_index = oper_combo.findText(prev_text)
         if selected_index == -1:
             selected_index = 0
     oper_combo.setCurrentIndex(selected_index)
     self.cond_list.setCellWidget(oper_combo.row, 1, oper_combo)
     self.set_new_values(oper_combo, adding_all, selected_values)
     oper_combo.currentIndexChanged.connect(
         lambda _: self.set_new_values(oper_combo, False))
Ejemplo n.º 3
0
    def add_row(self, attr=None, condition_type=None, condition_value=None):
        model = self.cond_list.model()
        row = model.rowCount()
        model.insertRow(row)

        attr_combo = QComboBox(
            minimumContentsLength=12,
            sizeAdjustPolicy=QComboBox.AdjustToMinimumContentsLengthWithIcon)
        attr_combo.row = row
        for var in self._visible_variables(self.data.domain):
            attr_combo.addItem(*gui.attributeItem(var))
        attr_combo.setCurrentIndex(attr or 0)
        self.cond_list.setCellWidget(row, 0, attr_combo)

        index = QPersistentModelIndex(model.index(row, 3))
        temp_button = QPushButton('×', self, flat=True,
                                  styleSheet='* {font-size: 16pt; color: silver}'
                                             '*:hover {color: black}')
        temp_button.clicked.connect(lambda: self.remove_one(index.row()))
        self.cond_list.setCellWidget(row, 3, temp_button)

        self.remove_all_button.setDisabled(False)
        self.set_new_operators(attr_combo, attr is not None,
                               condition_type, condition_value)
        attr_combo.currentIndexChanged.connect(
            lambda _: self.set_new_operators(attr_combo, False))

        self.cond_list.resizeRowToContents(row)
Ejemplo n.º 4
0
 def set_new_operators(self, attr_combo, adding_all,
                       selected_index=None, selected_values=None):
     oper_combo = QComboBox()
     oper_combo.row = attr_combo.row
     oper_combo.attr_combo = attr_combo
     var = self.data.domain[attr_combo.currentText()]
     oper_combo.addItems(self.operator_names[type(var)])
     oper_combo.setCurrentIndex(selected_index or 0)
     self.cond_list.setCellWidget(oper_combo.row, 1, oper_combo)
     self.set_new_values(oper_combo, adding_all, selected_values)
     oper_combo.currentIndexChanged.connect(
         lambda _: self.set_new_values(oper_combo, False))
Ejemplo n.º 5
0
 def set_new_operators(self, attr_combo, adding_all,
                       selected_index=None, selected_values=None):
     oper_combo = QComboBox()
     oper_combo.row = attr_combo.row
     oper_combo.attr_combo = attr_combo
     var = self.data.domain[attr_combo.currentText()]
     oper_combo.addItems(self.operator_names[type(var)])
     oper_combo.setCurrentIndex(selected_index or 0)
     self.cond_list.setCellWidget(oper_combo.row, 1, oper_combo)
     self.set_new_values(oper_combo, adding_all, selected_values)
     oper_combo.currentIndexChanged.connect(
         lambda _: self.set_new_values(oper_combo, False))
Ejemplo n.º 6
0
    def add_row(self, attr=None, condition_type=None, condition_value=None):
        model = self.cond_list.model()
        row = model.rowCount()
        model.insertRow(row)

        attr_combo = QComboBox(
            minimumContentsLength=12,
            sizeAdjustPolicy=QComboBox.AdjustToMinimumContentsLengthWithIcon)
        attr_combo.row = row
        for var in filter_visible(chain(self.data.domain.variables, self.data.domain.metas)):
            attr_combo.addItem(*gui.attributeItem(var))
        attr_combo.setCurrentIndex(attr or 0)
        self.cond_list.setCellWidget(row, 0, attr_combo)

        self.remove_all_button.setDisabled(False)
        self.set_new_operators(attr_combo, attr is not None,
                               condition_type, condition_value)
        attr_combo.currentIndexChanged.connect(
            lambda _: self.set_new_operators(attr_combo, False))

        self.cond_list.resizeRowToContents(row)
Ejemplo n.º 7
0
    def add_row(self, attr=None, condition_type=None, condition_value=None):
        model = self.cond_list.model()
        row = model.rowCount()
        model.insertRow(row)

        attr_combo = QComboBox(
            minimumContentsLength=12,
            sizeAdjustPolicy=QComboBox.AdjustToMinimumContentsLengthWithIcon)
        attr_combo.row = row
        for var in filter_visible(
                chain(self.data.domain.variables, self.data.domain.metas)):
            attr_combo.addItem(*gui.attributeItem(var))
        attr_combo.setCurrentIndex(attr or 0)
        self.cond_list.setCellWidget(row, 0, attr_combo)

        self.remove_all_button.setDisabled(False)
        self.set_new_operators(attr_combo, attr is not None, condition_type,
                               condition_value)
        attr_combo.currentIndexChanged.connect(
            lambda _: self.set_new_operators(attr_combo, False))

        self.cond_list.resizeRowToContents(row)