diff options
Diffstat (limited to 'src/mainwindow.cc')
-rw-r--r-- | src/mainwindow.cc | 72 |
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(); +} |