diff options
Diffstat (limited to 'src/mainwindow.cc')
-rw-r--r-- | src/mainwindow.cc | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/src/mainwindow.cc b/src/mainwindow.cc index 61ea9bb..92a91e7 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -37,9 +37,11 @@ #include <QFileDialog> #include <QToolBar> #include <QToolButton> +#include <QMessageBox> #include "settings.h" #include "projectdialog.h" +#include "instrumentdialog.h" #include "projectserialiser.h" #include "instrumentwidget.h" @@ -94,8 +96,12 @@ MainWindow::MainWindow(Settings& settings) auto rem = new QToolButton(); rem->setIcon(QPixmap(":icons/remove_instrument.png")); connect(rem, SIGNAL(clicked()), this, SLOT(removeInstrument())); + auto edt = new QToolButton(); + edt->setIcon(QPixmap(":icons/edit_instrument.png")); + connect(edt, SIGNAL(clicked()), this, SLOT(editInstrument())); tools->addWidget(add); tools->addWidget(rem); + tools->addWidget(edt); instrument_list = new QListWidget(); connect(instrument_list, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(instrumentDoubleClicked(QListWidgetItem*))); @@ -158,7 +164,10 @@ void MainWindow::addInstrument() { auto id = project.createInstrument(); auto& instrument = project.getInstrument(id); - instrument.setInstrumentName(tr("New instrument")); + + InstrumentDialog dlg(this, instrument); + dlg.show(); + dlg.exec(); auto item = new QListWidgetItem(); item->setIcon(QPixmap(":icons/instrument.png")); @@ -167,13 +176,51 @@ void MainWindow::addInstrument() instrument_list->addItem(item); } +void MainWindow::editInstrument() +{ + auto items = instrument_list->selectedItems(); + for(auto item : items) + { + auto id = item->data(Qt::UserRole).toInt(); + + auto& instrument = project.getInstrument(id); + + InstrumentDialog dlg(this, instrument); + dlg.show(); + dlg.exec(); + + item->setText(instrument.getInstrumentName()); + + // Also update tab name if open + for(int i = 0; i < tab_widget->count(); ++i) + { + if(tab_widget->widget(i)->property("id").toInt() == id) + { + tab_widget->setTabText(i, instrument.getInstrumentName()); + } + } + } +} + void MainWindow::removeInstrument() { + int ret = + QMessageBox::question(this, tr("Delete Instrument"), + tr("Are you sure you want to delete the selected " + "instrument?"), + QMessageBox::Yes | QMessageBox::No | + QMessageBox::Cancel); + if(ret != QMessageBox::Yes) + { + return; + } + auto items = instrument_list->selectedItems(); for(auto item : items) { auto id = item->data(Qt::UserRole).toInt(); + // Also close tab if open. for(int i = 0; i < tab_widget->count(); ++i) { if(tab_widget->widget(i)->property("id").toInt() == id) |