123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #include "classoptions.h"
- #include "ui_classoptions.h"
- #include <QListWidget>
- #include <QPushButton>
- #include <QDebug>
- #include <QMessageBox>
- // 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<QListWidgetItem*> 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;
- }
|