summaryrefslogtreecommitdiff
path: root/src/mainwindow.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainwindow.cc')
-rw-r--r--src/mainwindow.cc72
1 files changed, 62 insertions, 10 deletions
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index 8091d2e..4084df1 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -41,11 +41,15 @@
#include "settings.h"
#include "projectdialog.h"
+#include "renderdialog.h"
+#include "channeldialog.h"
#include "instrumentdialog.h"
#include "projectserialiser.h"
#include "instrumentwidget.h"
#include "channelswidget.h"
+#include "imageeditor.h"
+
#define MAXVAL 10000000L
MainWindow::MainWindow(Settings& settings)
@@ -82,6 +86,16 @@ MainWindow::MainWindow(Settings& settings)
fileMenu->addAction(act_quit);
connect(act_quit, SIGNAL(triggered()), this, SLOT(close()));
+ QMenu* projectMenu = menuBar()->addMenu(tr("&Project"));
+ QAction* act_render = new QAction(tr("&Render..."), this);
+ projectMenu->addAction(act_render);
+ connect(act_render, SIGNAL(triggered()), this, SLOT(render()));
+
+ QMenu* testMenu = menuBar()->addMenu(tr("Test"));
+ QAction* act_test = new QAction(tr("Test"), this);
+ testMenu->addAction(act_test);
+ connect(act_test, SIGNAL(triggered()), this, SLOT(test()));
+
instruments_dock = new QDockWidget(tr("Instruments:"), this);
instruments_dock->setObjectName("instruments_dock");
instruments_dock->setAllowedAreas(Qt::LeftDockWidgetArea);
@@ -134,13 +148,13 @@ MainWindow::MainWindow(Settings& settings)
channel_list = new QListWidget();
connect(channel_list, SIGNAL(itemDoubleClicked(QListWidgetItem*)),
this, SLOT(channelDoubleClicked(QListWidgetItem*)));
- channel_list->addItems({"AmbL", "AmbR", "Kdrum_back", "Kdrum_front",
- "Hihat", "OHL", "OHR", "Ride","Snare_bottom",
- "Snare_top", "Tom1", "Tom2", "Tom3"});
- for(int i = 0; i < channel_list->count(); ++i)
- {
- channel_list->item(i)->setIcon(QPixmap(":icons/channel.png"));
- }
+// channel_list->addItems({"AmbL", "AmbR", "Kdrum_back", "Kdrum_front",
+// "Hihat", "OHL", "OHR", "Ride","Snare_bottom",
+// "Snare_top", "Tom1", "Tom2", "Tom3"});
+// for(int i = 0; i < channel_list->count(); ++i)
+// {
+// channel_list->item(i)->setIcon(QPixmap(":icons/channel.png"));
+// }
l->addWidget(tools);
l->addWidget(channel_list);
@@ -259,10 +273,17 @@ void MainWindow::instrumentDoubleClicked(QListWidgetItem *item)
void MainWindow::addChannel()
{
+ auto id = project.createChannel();
+ auto& channel = project.getChannel(id);
+
+ ChannelDialog dlg(this, channel);
+ dlg.show();
+ dlg.exec();
+
auto item = new QListWidgetItem();
item->setIcon(QPixmap(":icons/channel.png"));
- item->setText("New Channel");
- //item->setData(Qt::UserRole, id);
+ item->setData(Qt::UserRole, id);
+ item->setText(channel.getChannelName());
channel_list->addItem(item);
}
@@ -271,6 +292,8 @@ void MainWindow::removeChannel()
auto items = channel_list->selectedItems();
for(auto item : items)
{
+ auto id = item->data(Qt::UserRole).toInt();
+ project.deleteChannel(id);
delete item;
}
}
@@ -283,7 +306,6 @@ void MainWindow::channelDoubleClicked(QListWidgetItem *item)
tr("Channels"));
// Make new tab active
tab_widget->setCurrentIndex(tab_widget->count() - 1);
-
}
void MainWindow::updateWindowTitle()
@@ -350,6 +372,11 @@ void MainWindow::loadProject()
return;
}
+ loadProject(filename);
+}
+
+void MainWindow::loadProject(QString filename)
+{
QFile file(filename);
if(!file.open(QIODevice::ReadOnly))
{
@@ -379,6 +406,18 @@ void MainWindow::loadProject()
instrument_list->addItem(item);
}
+ channel_list->clear();
+ auto channel_ids = project.getChannelList();
+ for(auto id : channel_ids)
+ {
+ auto& channel = project.getChannel(id);
+ auto item = new QListWidgetItem();
+ item->setIcon(QPixmap(":icons/channel.png"));
+ item->setText(channel.getChannelName());
+ item->setData(Qt::UserRole, id);
+ channel_list->addItem(item);
+ }
+
statusBar()->showMessage(tr("Loaded"));
}
@@ -436,3 +475,16 @@ void MainWindow::closeTab(int tab)
{
tab_widget->removeTab(tab);
}
+
+void MainWindow::test()
+{
+ ImageEditor* e = new ImageEditor(nullptr);
+ e->setImage("/mnt/atuin/misc/stuff/deva/CrocellKit/crocellkit01.png");
+ e->show();
+}
+
+void MainWindow::render()
+{
+ RenderDialog renderDialog(this, project);
+ renderDialog.exec();
+}