summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dgedit/Makefile.am2
-rw-r--r--dgedit/filelist.cc62
-rw-r--r--dgedit/filelist.h51
-rw-r--r--dgedit/mainwindow.cc35
-rw-r--r--dgedit/mainwindow.h7
5 files changed, 124 insertions, 33 deletions
diff --git a/dgedit/Makefile.am b/dgedit/Makefile.am
index a16a0e9..77f95fe 100644
--- a/dgedit/Makefile.am
+++ b/dgedit/Makefile.am
@@ -9,12 +9,14 @@ dgedit_SOURCES = $(shell ../tools/MocList cc ) \
dgedit.cc \
audioextractor.cc \
canvas.cc \
+ filelist.cc \
mainwindow.cc \
samplesorter.cc
EXTRA_DIST = \
audioextractor.h \
canvas.h \
+ filelist.h \
mainwindow.h \
samplesorter.h
diff --git a/dgedit/filelist.cc b/dgedit/filelist.cc
new file mode 100644
index 0000000..52e6757
--- /dev/null
+++ b/dgedit/filelist.cc
@@ -0,0 +1,62 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * filelist.cc
+ *
+ * Mon Nov 30 15:35:52 CET 2009
+ * Copyright 2009 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of DrumGizmo.
+ *
+ * DrumGizmo is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * DrumGizmo is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with DrumGizmo; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#include "filelist.h"
+
+#include <QFileDialog>
+#include <QFileInfo>
+
+FileList::FileList()
+{
+ connect(this, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged()));
+}
+
+void FileList::addFiles()
+{
+ QStringList files = QFileDialog::getOpenFileNames(this, tr("Open file"),
+ "", tr("Audio Files (*.wav)"));
+ QStringList::Iterator i = files.begin();
+ while(i != files.end()) {
+ QString file = *i;
+ QFileInfo fi(file);
+ QString name = fi.baseName();
+
+ QListWidgetItem *item = new QListWidgetItem();
+ item->setText(file);
+ item->setData(Qt::UserRole, name);
+ addItem(item);
+
+ emit fileAdded(file, name);
+
+ i++;
+ }
+}
+
+void FileList::selectionChanged()
+{
+ QString filename = currentItem()->text();
+ emit masterFileChanged(filename);
+}
diff --git a/dgedit/filelist.h b/dgedit/filelist.h
new file mode 100644
index 0000000..b1b47a8
--- /dev/null
+++ b/dgedit/filelist.h
@@ -0,0 +1,51 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/***************************************************************************
+ * filelist.h
+ *
+ * Mon Nov 30 15:35:52 CET 2009
+ * Copyright 2009 Bent Bisballe Nyeng
+ * deva@aasimon.org
+ ****************************************************************************/
+
+/*
+ * This file is part of DrumGizmo.
+ *
+ * DrumGizmo is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * DrumGizmo is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with DrumGizmo; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+#ifndef __DRUMGIZMO_FILELIST_H__
+#define __DRUMGIZMO_FILELIST_H__
+
+#include <QListWidget>
+
+class FileList : public QListWidget {
+Q_OBJECT
+public:
+ FileList();
+
+signals:
+ void masterFileChanged(QString filename);
+ void fileAdded(QString file, QString name);
+ void fileRemoved(QString file, QString name);
+
+public slots:
+ void addFiles();
+
+private slots:
+ void selectionChanged();
+};
+
+
+
+#endif/*__DRUMGIZMO_FILELIST_H__*/
diff --git a/dgedit/mainwindow.cc b/dgedit/mainwindow.cc
index b46904a..390c436 100644
--- a/dgedit/mainwindow.cc
+++ b/dgedit/mainwindow.cc
@@ -32,12 +32,10 @@
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
-#include <QFileDialog>
#include <QStatusBar>
#include <QApplication>
#include <QDockWidget>
#include <QSettings>
-#include <QFileInfo>
#define MAXVAL 10000000L
#define SINGLESTEP MAXVAL/100000
@@ -108,8 +106,7 @@ MainWindow::MainWindow()
connect(exportsel, SIGNAL(clicked()), this, SLOT(doExport()));
QPushButton *loadbtn = new QPushButton();
- loadbtn->setText("Load");
- connect(loadbtn, SIGNAL(clicked()), this, SLOT(addFile()));
+ loadbtn->setText("Add files...");
btns->addWidget(autosel);
btns->addWidget(clearsel);
@@ -135,8 +132,10 @@ MainWindow::MainWindow()
configs->addWidget(exportp);
configs->addWidget(new QLabel("Files:"));
- filelist = new QListWidget();
- connect(filelist, SIGNAL(itemSelectionChanged()), this, SLOT(loadFile()));
+ filelist = new FileList();
+ connect(filelist, SIGNAL(masterFileChanged(QString)), this, SLOT(loadFile(QString)));
+ connect(loadbtn, SIGNAL(clicked()), filelist, SLOT(addFiles()));
+ connect(filelist, SIGNAL(fileAdded(QString, QString)), extractor, SLOT(addFile(QString, QString)));
configs->addWidget(filelist);
QDockWidget *dockWidget = new QDockWidget(tr("Dock Widget"), this);
@@ -216,10 +215,8 @@ void MainWindow::doExport()
extractor->exportSelections(sorter->selections());
}
-void MainWindow::loadFile()
+void MainWindow::loadFile(QString filename)
{
- QString filename = filelist->currentItem()->text();
-
setCursor(Qt::WaitCursor);
statusBar()->showMessage("Loading...");
qApp->processEvents();
@@ -229,23 +226,3 @@ void MainWindow::loadFile()
statusBar()->showMessage("Ready");
setCursor(Qt::ArrowCursor);
}
-
-void MainWindow::addFile()
-{
- QStringList files = QFileDialog::getOpenFileNames(this, tr("Open file"),
- "", tr("Audio Files (*.wav)"));
- QStringList::Iterator i = files.begin();
- while(i != files.end()) {
- QString file = *i;
- QFileInfo fi(file);
- QString name = fi.baseName();
-
- QListWidgetItem *item = new QListWidgetItem();
- item->setText(file);
- item->setData(Qt::UserRole, name);
- filelist->addItem(item);
-
- extractor->addFile(file, name);
- i++;
- }
-}
diff --git a/dgedit/mainwindow.h b/dgedit/mainwindow.h
index df40e3a..f6fff27 100644
--- a/dgedit/mainwindow.h
+++ b/dgedit/mainwindow.h
@@ -29,11 +29,11 @@
#include <QMainWindow>
#include <QScrollBar>
-#include <QListWidget>
#include "canvas.h"
#include "audioextractor.h"
#include "samplesorter.h"
+#include "filelist.h"
class MainWindow : public QMainWindow {
Q_OBJECT
@@ -46,8 +46,7 @@ public slots:
void setXOffset(int);
void setYOffset(int);
void doExport();
- void loadFile();
- void addFile();
+ void loadFile(QString filename);
protected:
void closeEvent(QCloseEvent*);
@@ -59,11 +58,11 @@ private:
SampleSorter *sorter;
Canvas *canvas;
AudioExtractor *extractor;
+ FileList *filelist;
QScrollBar *yoffset;
QScrollBar *yscale;
QScrollBar *xscale;
QScrollBar *xoffset;
- QListWidget *filelist;
};
#endif/*__DRUMGIZMO_MAINWINDOW_H__*/