def _on_class_apply(self): ''' Apply class changes ''' learner = self._learner class_name_new = str(self._class_text.text()) class_label_new = self._class_sbox.value() class_name = self._current_class if not class_name is None: class_label = learner.class_labels[class_name] class_labels = learner.class_labels.values() class_labels.remove(class_label) class_names = learner.class_names.values() class_names.remove(class_name) if len(class_name_new) == 0: warning(self, "Invalid class name", info="The class name must not be empty!") elif (not class_name_new in class_names and not class_label_new in class_labels): del learner.class_names[class_label] del learner.class_labels[class_name] del learner.hexcolors[class_name] item = self._find_items_in_class_table( class_name, self.COLUMN_CLASS_NAME)[0] learner.class_names[class_label_new] = class_name_new learner.class_labels[class_name_new] = class_label_new class_color = self._class_color_btn.current_color learner.hexcolors[class_name_new] = \ qcolor_to_hex(class_color) item.setText(class_name_new) item2 = self._class_table.item(item.row(), self.COLUMN_CLASS_LABEL) item2.setText(str(class_label_new)) item2 = self._class_table.item(item.row(), self.COLUMN_CLASS_COLOR) item2.setBackground(QBrush(class_color)) col = get_qcolor_hicontrast(class_color) self._class_table.resizeRowsToContents() self._class_table.resizeColumnsToContents() self._class_table.scrollToItem(item) self._annotations.rename_class(class_name, class_name_new) self._current_class = class_name_new self._activate_objects_for_image(False) self._activate_objects_for_image(True) else: warning(self, "Class names and labels must be unique!", info="Class name '%s' or label '%s' already used." %\ (class_name_new, class_label_new))
def _on_class_apply(self): ''' Apply class changes ''' learner = self._learner class_name_new = str(self._class_text.text()) class_label_new = self._class_sbox.value() class_name = self._current_class if not class_name is None: class_label = learner.class_labels[class_name] class_labels = learner.class_labels.values() class_labels.remove(class_label) class_names = learner.class_names.values() class_names.remove(class_name) if len(class_name_new) == 0: warning(self, "Invalid class name", info="The class name must not be empty!") elif (not class_name_new in class_names and not class_label_new in class_labels): del learner.class_names[class_label] del learner.class_labels[class_name] del learner.hexcolors[class_name] item = self._find_items_in_class_table(class_name, self.COLUMN_CLASS_NAME)[0] learner.class_names[class_label_new] = class_name_new learner.class_labels[class_name_new] = class_label_new class_color = self._class_color_btn.current_color learner.hexcolors[class_name_new] = \ qcolor_to_hex(class_color) item.setText(class_name_new) item2 = self._class_table.item(item.row(), self.COLUMN_CLASS_LABEL) item2.setText(str(class_label_new)) item2 = self._class_table.item(item.row(), self.COLUMN_CLASS_COLOR) item2.setBackground(QBrush(class_color)) col = get_qcolor_hicontrast(class_color) self._class_table.resizeRowsToContents() self._class_table.resizeColumnsToContents() self._class_table.scrollToItem(item) self._annotations.rename_class(class_name, class_name_new) self._current_class = class_name_new self._activate_objects_for_image(False) self._activate_objects_for_image(True) else: warning(self, "Class names and labels must be unique!", info="Class name '%s' or label '%s' already used." %\ (class_name_new, class_label_new))
def _on_class_add(self): """Add a new class to definition""" learner = self._learner class_name_new = str(self._class_text.text()) class_label_new = self._class_sbox.value() class_labels = learner.class_labels.values() class_names = learner.class_names.values() if len(class_name_new) == 0: warning(self, "Invalid class name", info="The class name must not be empty!") elif (not class_name_new in class_names and not class_label_new in class_labels): self._current_class = class_name_new learner.class_names[class_label_new] = class_name_new learner.class_labels[class_name_new] = class_label_new class_color = self._class_color_btn.current_color learner.hexcolors[class_name_new] = \ qcolor_to_hex(class_color) row = self._class_table.rowCount() self._class_table.insertRow(row) self._class_table.setItem(row, self.COLUMN_CLASS_NAME, QTableWidgetItem(class_name_new)) self._class_table.setItem(row, self.COLUMN_CLASS_LABEL, QTableWidgetItem(str(class_label_new))) self._class_table.setItem(row, self.COLUMN_CLASS_COUNT, QTableWidgetItem('0')) item = QTableWidgetItem() item.setBackground(QBrush(class_color)) self._class_table.setItem(row, self.COLUMN_CLASS_COLOR, item) self._class_table.resizeRowsToContents() self._class_table.resizeColumnsToContents() self._class_table.setCurrentItem(item) ncl = len(learner.class_names) + 1 self._class_text.setText('class%d' % ncl) self._class_sbox.setValue(ncl) self._class_color_btn.set_color( QColor(AnnotationModule.DEFAULT_CLASS_COLS[(ncl - 1) % len( AnnotationModule.DEFAULT_CLASS_COLS)])) else: warning(self, "Class names and labels must be unique!", info="Class name '%s' or label '%s' already used." %\ (class_name_new, class_label_new))
def _on_class_add(self): """Add a new class to definition""" learner = self._learner class_name_new = str(self._class_text.text()) class_label_new = self._class_sbox.value() class_labels = learner.class_labels.values() class_names = learner.class_names.values() if len(class_name_new) == 0: warning(self, "Invalid class name", info="The class name must not be empty!") elif (not class_name_new in class_names and not class_label_new in class_labels): self._current_class = class_name_new learner.class_names[class_label_new] = class_name_new learner.class_labels[class_name_new] = class_label_new class_color = self._class_color_btn.current_color learner.hexcolors[class_name_new] = \ qcolor_to_hex(class_color) row = self._class_table.rowCount() self._class_table.insertRow(row) self._class_table.setItem(row, self.COLUMN_CLASS_NAME, QTableWidgetItem(class_name_new)) self._class_table.setItem(row, self.COLUMN_CLASS_LABEL, QTableWidgetItem(str(class_label_new))) self._class_table.setItem(row, self.COLUMN_CLASS_COUNT, QTableWidgetItem('0')) item = QTableWidgetItem() item.setBackground(QBrush(class_color)) self._class_table.setItem(row, self.COLUMN_CLASS_COLOR, item) self._class_table.resizeRowsToContents() self._class_table.resizeColumnsToContents() self._class_table.setCurrentItem(item) ncl = len(learner.class_names)+1 self._class_text.setText('class%d' % ncl) self._class_sbox.setValue(ncl) self._class_color_btn.set_color( QColor(AnnotationModule.DEFAULT_CLASS_COLS[(ncl -1) \ % len(AnnotationModule.DEFAULT_CLASS_COLS)])) else: warning(self, "Class names and labels must be unique!", info="Class name '%s' or label '%s' already used." %\ (class_name_new, class_label_new))
def _on_class_add(self): ''' Add a new class ''' learner = self._learner class_name_new = str(self._class_text.text()) class_label_new = self._class_sbox.value() class_labels = set(learner.lstClassLabels) class_names = set(learner.lstClassNames) if len(class_name_new) == 0: warning(self, "Invalid class name", info="The class name must not be empty!") elif (not class_name_new in class_names and not class_label_new in class_labels): self._current_class = class_name_new learner.dctClassNames[class_label_new] = class_name_new learner.dctClassLabels[class_name_new] = class_label_new class_color = self._class_color_btn.current_color learner.dctHexColors[class_name_new] = \ qcolor_to_hex(class_color) row = self._class_table.rowCount() self._class_table.insertRow(row) self._class_table.setItem(row, self.COLUMN_CLASS_NAME, QTableWidgetItem(class_name_new)) self._class_table.setItem(row, self.COLUMN_CLASS_LABEL, QTableWidgetItem(str(class_label_new))) self._class_table.setItem(row, self.COLUMN_CLASS_COUNT, QTableWidgetItem('0')) item = QTableWidgetItem() item.setBackground(QBrush(class_color)) self._class_table.setItem(row, self.COLUMN_CLASS_COLOR, item) self._class_table.resizeRowsToContents() self._class_table.resizeColumnsToContents() self._class_table.setCurrentItem(item) else: warning(self, "Class names and labels must be unique!", info="Class name '%s' or label '%s' already used." %\ (class_name_new, class_label_new))
def _on_class_changed(self, current, previous): if not current is None: item = self._class_table.item(current.row(), self.COLUMN_CLASS_NAME) class_name = str(item.text()) self._current_class = class_name hex_col = self._learner.hexcolors[class_name] col = get_qcolor_hicontrast(QColor(hex_col)) class_table = self._class_table css = "selection-background-color: %s; selection-color: %s;" % \ (hex_col, qcolor_to_hex(col)) class_table.scrollToItem(item) self._class_text.setText(class_name) class_label = self._learner.class_labels[class_name] self._class_sbox.setValue(class_label) self._class_color_btn.set_color(QColor(hex_col)) class_table.setStyleSheet(css) self._update_annotation_table() self._ann_table.setStyleSheet(css) else: self._current_class = None