summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2018-05-17 19:34:53 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2018-05-17 19:34:53 +0200
commit4bb39eaad8dcff57c297aaf9542113d2eaed9067 (patch)
tree7327f811812c651923b312960a7abb589f93f90d
parentaf27aa93c6dfae8aeb38b97b5f10c23a80816b29 (diff)
Make tabs closable. Load file list and master file state back into file list widget.
-rw-r--r--src/audioextractor.cc1
-rw-r--r--src/filelist.cc20
-rw-r--r--src/filelist.h5
-rw-r--r--src/instrumentwidget.cc4
-rw-r--r--src/mainwindow.cc7
-rw-r--r--src/mainwindow.h2
-rw-r--r--src/projectserialiser.cc2
7 files changed, 36 insertions, 5 deletions
diff --git a/src/audioextractor.cc b/src/audioextractor.cc
index 962c267..2132cba 100644
--- a/src/audioextractor.cc
+++ b/src/audioextractor.cc
@@ -49,6 +49,7 @@ AudioExtractor::AudioExtractor(Instrument& instrument, Selections &selections,
, instrument(instrument)
, selections(selections)
{
+ audiofiles = instrument.getFileList();
}
void AudioExtractor::exportSelections()
diff --git a/src/filelist.cc b/src/filelist.cc
index 0f9b1cf..4df69c3 100644
--- a/src/filelist.cc
+++ b/src/filelist.cc
@@ -30,9 +30,13 @@
#include <QFileInfo>
#include <QMenu>
+#include <iostream>
+
#include "itemeditor.h"
+#include "project.h"
-FileList::FileList()
+FileList::FileList(Instrument& instrument)
+ : instrument(instrument)
{
setContextMenuPolicy(Qt::CustomContextMenu);
@@ -43,6 +47,20 @@ FileList::FileList()
this, SLOT(selectionChanged(QListWidgetItem*)));
createMenus();
+
+ // Load files into list:
+ auto master_file = instrument.getMasterFile();
+ auto files = instrument.getFileList();
+ for(auto file : files)
+ {
+ auto item = new QListWidgetItem();
+ //item->setIcon(QPixmap(":icons/instrument.png"));
+ setItemFile(item, file.first);
+ setItemName(item, file.second);
+ std::cout << file.first.toStdString() << " ?= " << master_file.toStdString() << std::endl;
+ setItemMaster(item, file.first == master_file);
+ addItem(item);
+ }
}
void FileList::addFiles()
diff --git a/src/filelist.h b/src/filelist.h
index 01cf684..e336bc1 100644
--- a/src/filelist.h
+++ b/src/filelist.h
@@ -31,12 +31,14 @@
#include <QAction>
#include <QMenu>
+class Instrument;
+
class FileList
: public QListWidget
{
Q_OBJECT
public:
- FileList();
+ FileList(Instrument& instrument);
QString path;
@@ -75,4 +77,5 @@ private:
QAction* removeAllAction;
QListWidgetItem* activeItem;
+ Instrument& instrument;
};
diff --git a/src/instrumentwidget.cc b/src/instrumentwidget.cc
index 1fcc1cf..641f690 100644
--- a/src/instrumentwidget.cc
+++ b/src/instrumentwidget.cc
@@ -134,7 +134,7 @@ InstrumentWidget::InstrumentWidget(Settings& settings, Instrument& instrument)
lv->addWidget(sb_playsamples);
- QDockWidget* dockWidget = new QDockWidget(tr("Dock Widget"), this);
+ QDockWidget* dockWidget = new QDockWidget(tr("Process"), this);
dockWidget->setAllowedAreas(Qt::RightDockWidgetArea);
dockWidget->setFeatures(QDockWidget::NoDockWidgetFeatures);
@@ -191,7 +191,7 @@ QWidget* InstrumentWidget::createFilesTab()
loadbtn->setText(tr("Add files..."));
l->addWidget(loadbtn);
- filelist = new FileList();
+ filelist = new FileList(instrument);
connect(filelist, SIGNAL(masterFileChanged(QString)),
this, SLOT(loadFile(QString)));
connect(loadbtn, SIGNAL(clicked()), filelist, SLOT(addFiles()));
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index e7d099d..b9cf800 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -49,6 +49,8 @@ MainWindow::MainWindow(Settings& settings)
tab_widget = new QTabWidget();
tab_widget->setTabsClosable(true);
tab_widget->setMovable(true);
+ connect(tab_widget, SIGNAL(tabCloseRequested(int)),
+ this, SLOT(closeTab(int)));
setCentralWidget(tab_widget);
@@ -277,3 +279,8 @@ void MainWindow::projectChanged()
project_dirty = true;
updateWindowTitle();
}
+
+void MainWindow::closeTab(int tab)
+{
+ tab_widget->removeTab(tab);
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index ad9e2ed..c5fcc9a 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -54,6 +54,8 @@ public slots:
void saveProjectAs();
void projectChanged();
+ void closeTab(int tab);
+
protected:
void closeEvent(QCloseEvent*);
diff --git a/src/projectserialiser.cc b/src/projectserialiser.cc
index 56fa58e..44f9ff7 100644
--- a/src/projectserialiser.cc
+++ b/src/projectserialiser.cc
@@ -186,7 +186,7 @@ bool ProjectSerialiser::deserialise(const QString& data, Project& project)
auto files = instrument("file_list").children("file");
for(auto& file : files)
{
- if(file["master"] == "true")
+ if(file["master"] == "1")
{
master_file = file.text();
}