#include "classoptions.h" #include "ui_classoptions.h" #include #include #include #include // erstellt den DIalog // seq: Die Sequenz, welche momentan annotiert wird // parent: Das Eltern QWidget von Qt ClassOptions::ClassOptions( Sequenz *seq, QWidget *parent) : QDialog(parent), ui(new Ui::ClassOptions), seq( seq ) { ui->setupUi(this); setWindowTitle( "Klassen bearbeiten" ); QList< Sequenz::SegmentationClass > classes = seq->getClasses(); for( auto c = classes.begin(); c != classes.end(); c++ ) { QListWidgetItem *item = new QListWidgetItem( c->name ); item->setFlags(item->flags() | Qt::ItemIsEditable); items.append( { c->id, item } ); ui->classList->addItem(item); } } ClassOptions::~ClassOptions() { delete ui; } // Erstellt eine neue Klasse von Objekten void ClassOptions::on_newClass_clicked() { QListWidgetItem *item = new QListWidgetItem("New Class"); item->setFlags(item->flags() | Qt::ItemIsEditable); int id = seq->addClass(item->text()); if( id == -1 ) { delete item; QMessageBox messageBox; messageBox.critical(0,"Error","Es existiert bereits eine andere Klasse mit dem Namen '" + item->text() + "'."); messageBox.show(); return; } items.append( { id, item } ); ui->classList->addItem(item); } // Löscht eine Klasse von Objekten void ClassOptions::on_removeClass_clicked() { QList items = ui->classList->selectedItems(); foreach(QListWidgetItem *item, items){ if( seq->removeClass( getItemId( item ) ) ) ui->classList->removeItemWidget(item); else { QMessageBox messageBox; messageBox.critical(0,"Error","Die Klasse '" + item->text() + " konnte nicht gelöscht werden."); messageBox.show(); } } } // Erlaubt das Klicken auf Löschen void ClassOptions::on_classList_itemSelectionChanged() { ui->removeClass->setEnabled( ui->classList->selectedItems().size() > 0 ); } // Benennt die ausgewählte Klasse um void ClassOptions::on_classList_itemChanged(QListWidgetItem *item) { if( !seq->setClassName( getItemId( item ), item->text() ) ) { QMessageBox messageBox; messageBox.critical(0,"Error","Es existiert bereits eine andere Klasse mit dem Namen '" + item->text() + "'."); messageBox.show(); item->setText( seq->getClassName( getItemId( item ) ) ); } } // Beendet das Verwalten der Klassen void ClassOptions::on_fertig_clicked() { this->close(); } // Gibt den Index einer Klasse aus der Liste zurück int ClassOptions::getItemId( QListWidgetItem *item ) { for( auto i = items.begin(); i != items.end(); i++ ) { if( i->item == item ) return i->id; } return -1; }