summaryrefslogtreecommitdiff
path: root/src/mainwindow.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow.cc')
-rw-r--r--src/mainwindow.cc49
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)