From bb8e2b6be1c05fc41132724d1f48a285f104418c Mon Sep 17 00:00:00 2001 From: deva Date: Mon, 30 Nov 2009 14:57:04 +0000 Subject: Add multiple files. --- dgedit/Makefile.am | 2 ++ dgedit/filelist.cc | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ dgedit/filelist.h | 51 ++++++++++++++++++++++++++++++++++++++++++ dgedit/mainwindow.cc | 35 +++++------------------------ dgedit/mainwindow.h | 7 +++--- 5 files changed, 124 insertions(+), 33 deletions(-) create mode 100644 dgedit/filelist.cc create mode 100644 dgedit/filelist.h (limited to 'dgedit') 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 +#include + +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 + +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 #include #include -#include #include #include #include #include -#include #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 #include -#include #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__*/ -- cgit v1.2.3