[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Traverso-commit] traverso src/commands/AudioClipExternalProcessi...
From: |
Remon Sijrier |
Subject: |
[Traverso-commit] traverso src/commands/AudioClipExternalProcessi... |
Date: |
Thu, 10 May 2007 20:02:37 +0000 |
CVSROOT: /sources/traverso
Module name: traverso
Changes by: Remon Sijrier <r_sijrier> 07/05/10 20:02:36
Modified files:
src/commands : AudioClipExternalProcessing.cpp Import.cpp
src/core : AudioClip.cpp DiskIO.cpp Export.h
MonoReader.cpp Project.cpp ReadSource.cpp
ReadSource.h ResourcesManager.cpp
ResourcesManager.h Song.cpp
src/traverso : BusMonitor.cpp ExportWidget.cpp ExportWidget.h
traverso.qrc
src/traverso/dialogs: MarkerDialog.cpp
src/traverso/songcanvas: AudioClipView.cpp ClipsViewPort.cpp
TimeLineView.cpp
src/traverso/ui: ExportWidget.ui
Added files:
resources/images/icons/16x16: reload.png
Log message:
* CD Burn dialog added
* some work on resources management
* various small cleanups/fixes
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/resources/images/icons/16x16/reload.png?cvsroot=traverso&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/AudioClipExternalProcessing.cpp?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/commands/Import.cpp?cvsroot=traverso&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/AudioClip.cpp?cvsroot=traverso&r1=1.87&r2=1.88
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/DiskIO.cpp?cvsroot=traverso&r1=1.35&r2=1.36
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Export.h?cvsroot=traverso&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/MonoReader.cpp?cvsroot=traverso&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Project.cpp?cvsroot=traverso&r1=1.39&r2=1.40
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ReadSource.cpp?cvsroot=traverso&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ReadSource.h?cvsroot=traverso&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ResourcesManager.cpp?cvsroot=traverso&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/ResourcesManager.h?cvsroot=traverso&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/traverso/src/core/Song.cpp?cvsroot=traverso&r1=1.91&r2=1.92
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/BusMonitor.cpp?cvsroot=traverso&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ExportWidget.cpp?cvsroot=traverso&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ExportWidget.h?cvsroot=traverso&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/traverso.qrc?cvsroot=traverso&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/MarkerDialog.cpp?cvsroot=traverso&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/AudioClipView.cpp?cvsroot=traverso&r1=1.62&r2=1.63
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/ClipsViewPort.cpp?cvsroot=traverso&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/songcanvas/TimeLineView.cpp?cvsroot=traverso&r1=1.33&r2=1.34
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ui/ExportWidget.ui?cvsroot=traverso&r1=1.6&r2=1.7
Patches:
Index: src/commands/AudioClipExternalProcessing.cpp
===================================================================
RCS file:
/sources/traverso/traverso/src/commands/AudioClipExternalProcessing.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- src/commands/AudioClipExternalProcessing.cpp 18 Apr 2007 12:52:53
-0000 1.3
+++ src/commands/AudioClipExternalProcessing.cpp 10 May 2007 20:02:36
-0000 1.4
@@ -125,7 +125,7 @@
// Clips live at project level, we have to set its Song, Track
and ReadSource explicitely!!
m_resultingclip->set_song(m_clip->get_song());
m_resultingclip->set_track(m_clip->get_track());
- m_resultingclip->set_audio_source(source);
+ resources_manager()->set_source_for_clip(m_resultingclip,
source);
m_resultingclip->set_track_start_frame(m_clip->get_track_start_frame());
// FIXME!!!!!!!!!!!!!!!!!!!!
m_resultingclip->init_gain_envelope();
Index: src/commands/Import.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/commands/Import.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/commands/Import.cpp 2 May 2007 05:58:20 -0000 1.21
+++ src/commands/Import.cpp 10 May 2007 20:02:36 -0000 1.22
@@ -130,7 +130,7 @@
{
Q_ASSERT(m_track);
m_clip = resources_manager()->new_audio_clip(m_name);
- m_clip->set_audio_source(m_source);
+ resources_manager()->set_source_for_clip(m_clip, m_source);
m_clip->set_song(m_track->get_song());
m_clip->set_track(m_track);
// FIXME!!!!!!!!!!!!!!!!!!!!
Index: src/core/AudioClip.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/AudioClip.cpp,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -b -r1.87 -r1.88
--- src/core/AudioClip.cpp 5 May 2007 20:43:58 -0000 1.87
+++ src/core/AudioClip.cpp 10 May 2007 20:02:36 -0000 1.88
@@ -563,6 +563,12 @@
init_gain_envelope();
+ ReadSource* rs;
+ rs =
resources_manager()->create_recording_source(m_exportSpec->exportdir,
m_exportSpec->name, channelcount, m_song->get_id());
+ rs->set_id(newsourceid);
+ resources_manager()->set_source_for_clip(this, rs);
+
+
connect(m_song, SIGNAL(transferStopped()), this,
SLOT(finish_recording()));
return 1;
@@ -682,38 +688,20 @@
if (writeSources.isEmpty()) {
+ Q_ASSERT(m_readSource);
delete m_exportSpec;
- int channelCount = (m_track->capture_left_channel() &&
m_track->capture_right_channel()) ? 2 : 1;
- ReadSource* rs;
- bool wasRecording = true;
- rs = resources_manager()->create_new_readsource(
- dir,
- name,
- channelCount,
- channelCount,
- m_song->get_id(),
- audiodevice().get_bit_depth(),
- audiodevice().get_sample_rate(),
- wasRecording );
-
- if (rs) {
- // Re-use the writesources id for this readsource, so
the filename
- // and the readsources id match!
- rs->set_id(id);
- // Reset the lenght, so the set_audio_sources() call
will get the
- // lenght from the ReadSource, so we're 100% sure the
correct lenght
- // will be used!
- m_length = 0;
- set_audio_source(rs);
+ printf("finish: id %lld\n", get_id());
+ if (m_readSource->set_file(m_readSource->get_filename()) < 0) {
+ PERROR("Setting file for ReadSource failed after
finishing recording");
+ }
+
+// m_length = 0;
m_song->get_diskio()->register_read_source(
m_readSource );
m_recordingStatus = NO_RECORDING;
+
emit recordingFinished();
- } else {
- info().critical(tr("No ReadSource returned from
resources manager after recording, removing clip from Track!"));
- Command::process_command(m_track->remove_clip(this,
false));
- }
}
}
Index: src/core/DiskIO.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/DiskIO.cpp,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- src/core/DiskIO.cpp 2 May 2007 23:31:55 -0000 1.35
+++ src/core/DiskIO.cpp 10 May 2007 20:02:36 -0000 1.36
@@ -348,7 +348,7 @@
m_readSources.append(source);
- foreach(MonoReader* prs, source->get_private_sources()) {
+ foreach(MonoReader* prs, source->get_mono_readers()) {
prs->prepare_buffer();
m_monoReaders.append(prs);
}
@@ -385,7 +385,7 @@
m_readSources.removeAll(source);
- foreach(MonoReader* prs, source->get_private_sources()) {
+ foreach(MonoReader* prs, source->get_mono_readers()) {
m_monoReaders.removeAll(prs);
}
}
Index: src/core/Export.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/Export.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/core/Export.h 9 May 2007 20:11:47 -0000 1.7
+++ src/core/Export.h 10 May 2007 20:02:36 -0000 1.8
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: Export.h,v 1.7 2007/05/09 20:11:47 n_doebelin Exp $
+$Id: Export.h,v 1.8 2007/05/10 20:02:36 r_sijrier Exp $
*/
#ifndef EXPORT_H
@@ -76,6 +76,7 @@
QString exportdir;
QString basename;
QString name;
+ QString tocFileName;
bool writeToc;
bool normalize;
int renderpass;
Index: src/core/MonoReader.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/MonoReader.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/core/MonoReader.cpp 30 Apr 2007 18:15:39 -0000 1.4
+++ src/core/MonoReader.cpp 10 May 2007 20:02:36 -0000 1.5
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: MonoReader.cpp,v 1.4 2007/04/30 18:15:39 r_sijrier Exp $
+$Id: MonoReader.cpp,v 1.5 2007/05/10 20:02:36 r_sijrier Exp $
*/
@@ -375,6 +375,7 @@
{
Q_ASSERT(!m_clip);
m_clip = clip;
+ printf("mono reader clip id %lld\n", m_clip->get_id());
}
Peak* MonoReader::get_peak( )
@@ -386,6 +387,8 @@
{
PENTER;
+ Q_ASSERT(m_clip);
+
float size = config().get_property("Hardware", "PreBufferSize",
1.0).toDouble();
if (m_isCompressedFile) {
Index: src/core/Project.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Project.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- src/core/Project.cpp 9 May 2007 20:11:47 -0000 1.39
+++ src/core/Project.cpp 10 May 2007 20:02:36 -0000 1.40
@@ -468,6 +468,7 @@
PMESG("Starting export for song %lld", song->get_id());
emit exportStartedForSong(song);
spec->resumeTransport = false;
+ spec->resumeTransportFrame = song->get_transport_frame();
if (spec->normalize) {
spec->peakvalue = 0.0;
@@ -488,8 +489,10 @@
.arg(coefficient_to_dbstring(spec->peakvalue)));
}
+ if (!spec->breakout) {
info().information(tr("calculated norm factor:
%1").arg(coefficient_to_dbstring(spec->normvalue)));
}
+ }
spec->renderpass = ExportSpecification::WRITE_TO_HARDDISK;
@@ -528,6 +531,8 @@
name += spec->basename + ".toc";
}
+ spec->tocFileName = name;
+
QFile file(name);
if (file.open(QFile::WriteOnly)) {
Index: src/core/ReadSource.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ReadSource.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- src/core/ReadSource.cpp 5 May 2007 20:43:58 -0000 1.28
+++ src/core/ReadSource.cpp 10 May 2007 20:02:36 -0000 1.29
@@ -47,6 +47,7 @@
, m_refcount(0)
, m_unrefcount(0)
, m_error(0)
+ , m_clip(0)
{
Project* project = pm().get_project();
@@ -67,6 +68,7 @@
, m_refcount(0)
, m_unrefcount(0)
, m_error(0)
+ , m_clip(0)
{
SNDFILE* sf;
SF_INFO sfinfo;
@@ -87,6 +89,7 @@
, m_refcount(0)
, m_unrefcount(0)
, m_error(0)
+ , m_clip(0)
{
m_channelCount = channelCount;
m_fileCount = fileCount;
@@ -99,6 +102,7 @@
, m_refcount(0)
, m_unrefcount(0)
, m_error(0)
+ , m_clip(0)
{
m_channelCount = 0;
m_fileCount = 0;
@@ -229,6 +233,9 @@
void ReadSource::set_audio_clip( AudioClip * clip )
{
+ PENTER;
+ Q_ASSERT(clip);
+ m_clip = clip;
foreach(MonoReader* source, m_sources) {
source->set_audio_clip(clip);
}
@@ -252,8 +259,12 @@
m_shortName = m_name.left(m_name.length() - 20);
}
-int ReadSource::reset_filename(const QString & filename)
+int ReadSource::set_file(const QString & filename)
{
+ PENTER;
+
+ Q_ASSERT(m_clip);
+
m_error = 0;
int splitpoint = filename.lastIndexOf("/") + 1;
@@ -269,6 +280,8 @@
return -1;
}
+ set_audio_clip(m_clip);
+
return 1;
}
Index: src/core/ReadSource.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/ReadSource.h,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- src/core/ReadSource.h 5 May 2007 20:43:58 -0000 1.21
+++ src/core/ReadSource.h 10 May 2007 20:02:36 -0000 1.22
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: ReadSource.h,v 1.21 2007/05/05 20:43:58 r_sijrier Exp $
+$Id: ReadSource.h,v 1.22 2007/05/10 20:02:36 r_sijrier Exp $
*/
#ifndef READSOURCE_H
@@ -55,7 +55,7 @@
int get_ref_count() const {return m_refcount;}
int get_unref_count() const {return m_unrefcount;}
int get_error() const {return m_error;}
- int reset_filename(const QString& filename);
+ int set_file(const QString& filename);
void set_active(bool active);
void set_was_recording(bool wasRecording);
@@ -63,9 +63,10 @@
Peak* get_peak(int channel);
nframes_t get_nframes() const;
- QList<MonoReader*> get_private_sources() const {return m_sources;}
+ QList<MonoReader*> get_mono_readers() const {return m_sources;}
private:
+ AudioClip* m_clip;
QList<MonoReader*> m_sources;
int m_refcount;
int m_unrefcount;
Index: src/core/ResourcesManager.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/ResourcesManager.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- src/core/ResourcesManager.cpp 5 May 2007 20:51:56 -0000 1.12
+++ src/core/ResourcesManager.cpp 10 May 2007 20:02:36 -0000 1.13
@@ -25,6 +25,7 @@
#include "Information.h"
#include "AudioClip.h"
#include "Utils.h"
+#include "AudioDevice.h"
// Always put me below _all_ includes, this is needed
// in case we run with memory leak detection enabled!
@@ -187,40 +188,22 @@
}
-ReadSource* ResourcesManager::create_new_readsource(
+ReadSource* ResourcesManager::create_recording_source(
const QString& dir,
const QString& name,
int channelCount,
- int fileCount,
- int songId,
- int bitDepth,
- int rate,
- bool wasRecording)
+ int songId)
{
PENTER;
- ReadSource* source = new ReadSource(dir, name, channelCount, fileCount);
- source->set_was_recording(wasRecording);
- m_sources.insert(source->get_id(), source);
+ ReadSource* source = new ReadSource(dir, name, channelCount,
channelCount);
- if ( bitDepth ) {
- source->set_original_bit_depth( bitDepth );
- } else {
- source->set_original_bit_depth( 16 );
- }
-
- if ( songId ) {
- source->set_created_by_song( songId );
- } else {
- source->set_created_by_song( -1 );
- }
+ source->set_was_recording(true);
+ source->set_original_bit_depth(audiodevice().get_bit_depth());
+ source->set_created_by_song(songId);
+ source->ref();
- source = get_readsource(source->get_id());
- if (source->get_error() < 0) {
- m_sources.remove(source->get_id());
- delete source;
- return 0;
- }
+ m_sources.insert(source->get_id(), source);
return source;
}
@@ -420,5 +403,9 @@
return m_gettedClips.contains(id) && ! m_removedClips.contains(id);
}
-//eof
+
+void ResourcesManager::set_source_for_clip(AudioClip * clip, ReadSource *
source)
+{
+ clip->set_audio_source(source);
+}
Index: src/core/ResourcesManager.h
===================================================================
RCS file: /sources/traverso/traverso/src/core/ResourcesManager.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/core/ResourcesManager.h 5 May 2007 20:43:58 -0000 1.7
+++ src/core/ResourcesManager.h 10 May 2007 20:02:36 -0000 1.8
@@ -44,14 +44,10 @@
int set_state( const QDomNode& node );
QDomNode get_state(QDomDocument doc);
- ReadSource* create_new_readsource(const QString& dir,
+ ReadSource* create_recording_source(const QString& dir,
const QString& name,
int channelCount,
- int fileCount,
- int songId,
- int bitDepth,
- int rate=0,
- bool wasRecording=false);
+ int songId);
ReadSource* create_new_readsource(const QString& dir, const QString&
name);
ReadSource* get_silent_readsource();
@@ -63,6 +59,7 @@
void set_clip_removed(AudioClip* clip);
void set_clip_added(AudioClip* clip);
+ void set_source_for_clip(AudioClip* clip, ReadSource* source);
bool is_clip_in_use(qint64) const;
Index: src/core/Song.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/core/Song.cpp,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -b -r1.91 -r1.92
--- src/core/Song.cpp 9 May 2007 20:36:37 -0000 1.91
+++ src/core/Song.cpp 10 May 2007 20:02:36 -0000 1.92
@@ -313,8 +313,6 @@
{
PENTER;
- spec->resumeTransportFrame = transportFrame;
-
if (transport) {
spec->resumeTransport = true;
stopTransport = true;
Index: src/traverso/BusMonitor.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/BusMonitor.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/traverso/BusMonitor.cpp 8 May 2007 16:44:31 -0000 1.10
+++ src/traverso/BusMonitor.cpp 10 May 2007 20:02:36 -0000 1.11
@@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Id: BusMonitor.cpp,v 1.10 2007/05/08 16:44:31 r_sijrier Exp $
+$Id: BusMonitor.cpp,v 1.11 2007/05/10 20:02:36 r_sijrier Exp $
*/
#include <libtraverso.h>
@@ -54,12 +54,18 @@
QSize BusMonitor::sizeHint() const
{
- return QSize( (inMeters.size() + outMeters.size()) * 50, 140);
+ int width = 0;
+ foreach(QWidget* widget, outMeters) {
+ if (! widget->isHidden()) {
+ width += widget->width();
+ }
+ }
+ return QSize(width, 140);
}
QSize BusMonitor::minimumSizeHint() const
{
- return QSize((inMeters.size() + outMeters.size()) * 20, 50);
+ return QSize(50, 50);
}
void BusMonitor::create_vu_meters( )
Index: src/traverso/ExportWidget.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/ExportWidget.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- src/traverso/ExportWidget.cpp 8 May 2007 17:06:00 -0000 1.14
+++ src/traverso/ExportWidget.cpp 10 May 2007 20:02:36 -0000 1.15
@@ -25,9 +25,8 @@
#include "libtraversocore.h"
#include <QFileDialog>
-#include <QAbstractItemModel>
-#include <QStringListModel>
#include <QByteArray>
+#include <QMessageBox>
#include "Export.h"
#include <AudioDevice.h>
@@ -40,13 +39,12 @@
ExportWidget::ExportWidget( QWidget * parent )
: QDialog(parent)
- , spec(0)
+ , m_burnprocess(0)
+ , m_exportSpec(0)
{
setupUi(this);
- m_layout = new QHBoxLayout(this);
- m_layout->setMargin(0);
- setLayout(m_layout);
+ stopButton->hide();
set_project(pm().get_project());
@@ -102,17 +100,43 @@
connect(buttonBox, SIGNAL(accepted()), this,
SLOT(on_exportStartButton_clicked()));
connect(buttonBox, SIGNAL(rejected()), this,
SLOT(on_cancelButton_clicked()));
+ connect(closeButton, SIGNAL(clicked()), this, SLOT(hide()));
connect(&pm(), SIGNAL(projectLoaded(Project*)), this,
SLOT(set_project(Project*)));
+
+
+
+ // CD Burning stuff....
+
+ m_burnprocess = new QProcess(this);
+ m_burnprocess->setProcessChannelMode(QProcess::MergedChannels);
+ QStringList env = QProcess::systemEnvironment();
+ env << "LC_ALL=C";
+ m_burnprocess->setEnvironment(env);
+ m_writingState = NO_STATE;
+
+ refreshButton->setIcon(QIcon(find_pixmap(":/refresh-16")));
+
+ connect(m_burnprocess, SIGNAL(readyReadStandardOutput()), this,
SLOT(read_standard_output()));
+ connect(m_burnprocess, SIGNAL(started()), this,
SLOT(cdrdao_process_started()));
+ connect(m_burnprocess, SIGNAL(finished(int, QProcess::ExitStatus)),
+ this, SLOT(cdrdao_process_finished(int, QProcess::ExitStatus)));
+ connect(startButton, SIGNAL(clicked()), this,
SLOT(start_burn_process()));
+ connect(stopButton, SIGNAL(clicked()), this, SLOT(stop_burn_process()));
+ connect(refreshButton, SIGNAL(clicked()), this, SLOT(query_devices()));
+
+ query_devices();
}
ExportWidget::~ ExportWidget( )
{}
-void ExportWidget::on_exportStartButton_clicked( )
+
+bool ExportWidget::is_save_to_export()
{
+ PENTER;
if (m_project->is_recording()) {
info().warning(tr("Export during recording is not supported!"));
- return;
+ return false;
}
QDir exportDir;
@@ -121,116 +145,115 @@
if (!dirName.isEmpty() && !exportDir.exists(dirName)) {
if (!exportDir.mkpath(dirName)) {
info().warning(tr("Unable to create export directory!
Please check permissions for this directory: %1").arg(dirName));
- return;
+ return false;
}
}
+ return true;
+}
+
+void ExportWidget::on_exportStartButton_clicked( )
+{
+ if (!is_save_to_export()) {
+ return;
+ }
+
+ cdburningWidget->setEnabled(false);
show_progress_view();
switch (audioTypeComboBox->currentIndex()) {
case 0:
- spec->format = SF_FORMAT_WAV;
- spec->extension = ".wav";
+ m_exportSpec->format = SF_FORMAT_WAV;
+ m_exportSpec->extension = ".wav";
break;
case 1:
- spec->format = SF_FORMAT_AIFF;
- spec->extension = ".aiff";
+ m_exportSpec->format = SF_FORMAT_AIFF;
+ m_exportSpec->extension = ".aiff";
break;
case 2:
- spec->format = SF_FORMAT_FLAC;
- spec->extension = ".flac";
- break;
- case 3:
- spec->format = SF_FORMAT_WAV;
- spec->extension = ".wav";
+ m_exportSpec->format = SF_FORMAT_FLAC;
+ m_exportSpec->extension = ".flac";
break;
}
- // check if CD-format is required
- if (audioTypeComboBox->currentIndex() == 3) {
-
- spec->data_width = 16;
- spec->format |= SF_FORMAT_PCM_16;
- spec->channels = 2;
- spec->sample_rate = 44100;
- spec->writeToc = true;
-
- } else {
-
switch (bitdepthComboBox->currentIndex()) {
//case 0:
- // spec->data_width = 8;
- // spec->format |= SF_FORMAT_PCM_U8;
+ // m_exportSpec->data_width = 8;
+ // m_exportSpec->format |= SF_FORMAT_PCM_U8;
// break;
case 0:
- spec->data_width = 16;
- spec->format |= SF_FORMAT_PCM_16;
+ m_exportSpec->data_width = 16;
+ m_exportSpec->format |= SF_FORMAT_PCM_16;
break;
case 1:
- spec->data_width = 24;
- spec->format |= SF_FORMAT_PCM_24;
+ m_exportSpec->data_width = 24;
+ m_exportSpec->format |= SF_FORMAT_PCM_24;
break;
case 2:
- spec->data_width = 32;
- spec->format |= SF_FORMAT_PCM_32;
+ m_exportSpec->data_width = 32;
+ m_exportSpec->format |= SF_FORMAT_PCM_32;
break;
case 3:
- spec->data_width = 1; // 1 means float
- spec->format |= SF_FORMAT_FLOAT;
+ m_exportSpec->data_width = 1; // 1 means float
+ m_exportSpec->format |= SF_FORMAT_FLOAT;
break;
}
switch (channelComboBox->currentIndex()) {
case 0:
- spec->channels = 2;
+ m_exportSpec->channels = 2;
break;
case 1:
- spec->channels = 1;
+ m_exportSpec->channels = 1;
break;
}
switch (sampleRateComboBox->currentIndex()) {
case 0:
- spec->sample_rate = 8000;
+ m_exportSpec->sample_rate = 8000;
break;
case 1:
- spec->sample_rate = 11025;
+ m_exportSpec->sample_rate = 11025;
break;
case 2:
- spec->sample_rate = 22050;
+ m_exportSpec->sample_rate = 22050;
break;
case 3:
- spec->sample_rate = 44100;
+ m_exportSpec->sample_rate = 44100;
break;
case 4:
- spec->sample_rate = 48000;
+ m_exportSpec->sample_rate = 48000;
break;
case 5:
- spec->sample_rate = 88200;
+ m_exportSpec->sample_rate = 88200;
break;
case 6:
- spec->sample_rate = 96000;
+ m_exportSpec->sample_rate = 96000;
break;
}
- }
//TODO Make a ComboBox for this one too!
- spec->dither_type = GDitherTri;
+ m_exportSpec->dither_type = GDitherTri;
//TODO Make a ComboBox for this one too!
- spec->src_quality = SRC_SINC_MEDIUM_QUALITY; // SRC_SINC_BEST_QUALITY
SRC_SINC_FASTEST SRC_ZERO_ORDER_HOLD SRC_LINEAR
+ m_exportSpec->src_quality = SRC_SINC_MEDIUM_QUALITY; //
SRC_SINC_BEST_QUALITY SRC_SINC_FASTEST SRC_ZERO_ORDER_HOLD SRC_LINEAR
if (allSongsButton->isChecked()) {
- spec->allSongs = true;
+ m_exportSpec->allSongs = true;
} else {
- spec->allSongs = false;
+ m_exportSpec->allSongs = false;
}
- spec->normalize = normalizeCheckBox->isChecked();
- spec->isRecording = false;
- m_project->export_project(spec);
+ QString name = m_exportSpec->exportdir + "/";
+ QFileInfo fi(m_exportSpec->name);
+ name += fi.completeBaseName() + ".toc";
+ m_exportSpec->tocFileName = name;
+
+ m_exportSpec->normalize = normalizeCheckBox->isChecked();
+ m_exportSpec->isRecording = false;
+ m_project->export_project(m_exportSpec);
}
@@ -243,8 +266,8 @@
void ExportWidget::on_exportStopButton_clicked( )
{
show_settings_view();
- spec->stop = true;
- spec->breakout = true;
+ m_exportSpec->stop = true;
+ m_exportSpec->breakout = true;
}
@@ -255,7 +278,7 @@
return;
}
- QString dirName = QFileDialog::getExistingDirectory(this,
tr("Choose/create an export directory"), spec->exportdir);
+ QString dirName = QFileDialog::getExistingDirectory(this,
tr("Choose/create an export directory"), m_exportSpec->exportdir);
if (!dirName.isEmpty())
exportDirName->setText(dirName);
@@ -293,11 +316,9 @@
songProgressBar->setValue(0);
overalProgressBar->setValue(0);
- if (!spec->stop) {
- hide();
- }
-
show_settings_view();
+
+ cdburningWidget->setEnabled(true);
}
void ExportWidget::set_exporting_song( Song * song )
@@ -312,20 +333,12 @@
void ExportWidget::show_progress_view( )
{
buttonBox->setEnabled(false);
- optionsWidget->hide();
- progressWidget->show();
- m_layout->removeWidget(optionsWidget);
- m_layout->addWidget(progressWidget);
- resize(370, 150);
+ stackedWidget->setCurrentIndex(1);
}
void ExportWidget::show_settings_view( )
{
- m_layout->removeWidget(progressWidget);
- m_layout->addWidget(optionsWidget);
- optionsWidget->show();
- progressWidget->hide();
- resize(370, 300);
+ stackedWidget->setCurrentIndex(0);
buttonBox->setEnabled(true);
}
@@ -335,19 +348,19 @@
if (! m_project) {
info().information(tr("No project loaded, to export a project,
load it first!"));
setEnabled(false);
- if (spec) {
- delete spec;
- spec = 0;
+ if (m_exportSpec) {
+ delete m_exportSpec;
+ m_exportSpec = 0;
}
} else {
setEnabled(true);
- if (spec) {
- delete spec;
- spec = 0;
- }
- spec = new ExportSpecification;
- spec->exportdir = m_project->get_root_dir() + "/Export/";
- exportDirName->setText(spec->exportdir);
+ if (m_exportSpec) {
+ delete m_exportSpec;
+ m_exportSpec = 0;
+ }
+ m_exportSpec = new ExportSpecification;
+ m_exportSpec->exportdir = m_project->get_root_dir() +
"/Export/";
+ exportDirName->setText(m_exportSpec->exportdir);
connect(m_project, SIGNAL(songExportProgressChanged(int)),
this, SLOT(update_song_progress(int)));
connect(m_project, SIGNAL(overallExportProgressChanged(int)),
this, SLOT(update_overall_progress(int)));
@@ -356,5 +369,306 @@
}
}
-//eof
+
+
+/****************************************************************/
+/* CD EXPORT */
+/****************************************************************/
+
+
+void ExportWidget::query_devices()
+{
+ if ( ! (m_burnprocess->state() == QProcess::NotRunning) ) {
+ printf("query_devices: burnprocess still running!\n");
+ return;
+ }
+ cdDeviceComboBox->clear();
+ printf("quering devices...\n");
+ m_writingState = QUERY_DEVICE;
+ QStringList args;
+ args << "drive-info";
+ m_burnprocess->start("cdrdao", args);
+}
+
+void ExportWidget::unlock_device()
+{
+ if ( ! (m_burnprocess->state() == QProcess::NotRunning) ) {
+ return;
+ }
+
+ m_writingState = UNLOCK_DEVICE;
+ int index = cdDeviceComboBox->currentIndex();
+ if (index == -1) {
+ return;
+ }
+
+ QString device = cdDeviceComboBox->itemData(index).toString();
+
+ QStringList args;
+ args << "unlock" << "--device" << device;
+ m_burnprocess->start("cdrdao", args);
+}
+
+
+void ExportWidget::stop_burn_process()
+{
+ PENTER;
+
+ update_cdburn_status(tr("Aborting CD Burn process ..."),
NORMAL_MESSAGE);
+
+ m_burnprocess->terminate();
+
+ m_writingState = ABORT_BURN;
+ stopButton->setEnabled(false);
+}
+
+
+void ExportWidget::start_burn_process()
+{
+ PENTER;
+
+ if(!is_save_to_export()) {
+ return;
+ }
+
+ cd_render();
+}
+
+
+void ExportWidget::cdrdao_process_started()
+{
+ PENTER;
+
+ if (m_writingState == BURNING) {
+ return;
+ update_cdburn_status(tr("Starting burn process...."),
NORMAL_MESSAGE);
+ progressBar->setMaximum(0);
+ }
+
+}
+
+void ExportWidget::cdrdao_process_finished(int exitcode, QProcess::ExitStatus
exitstatus)
+{
+ if (m_writingState == ABORT_BURN) {
+ update_cdburn_status(tr("CD Burn process stopped on user
request."), NORMAL_MESSAGE);
+ startButton->show();
+ stopButton->hide();
+ stopButton->setEnabled(true);
+ unlock_device();
+ m_writingState = NO_STATE;
+ return;
+ }
+
+ if (exitstatus == QProcess::CrashExit) {
+ update_cdburn_status(tr("CD Burn process failed!"),
ERROR_MESSAGE);
+ unlock_device();
+ return;
+ }
+
+ if (m_writingState == BURNING) {
+ update_cdburn_status(tr("CD Writing process finished!"),
NORMAL_MESSAGE);
+ startButton->show();
+ stopButton->hide();
+ }
+
+ progressBar->setMaximum(100);
+ progressBar->setValue(0);
+
+ m_writingState = NO_STATE;
+ exportWidget->setEnabled(true);
+}
+
+void ExportWidget::cd_render()
+{
+ PENTER;
+
+ exportWidget->setEnabled(false);
+
+ update_cdburn_status(tr("Rendering Song(s)"), NORMAL_MESSAGE);
+
+ m_exportSpec->extension = ".wav";
+ m_exportSpec->data_width = 16;
+ m_exportSpec->format = SF_FORMAT_WAV;
+ m_exportSpec->format |= SF_FORMAT_PCM_16;
+ m_exportSpec->channels = 2;
+ m_exportSpec->sample_rate = 44100;
+ m_exportSpec->writeToc = true;
+ m_exportSpec->dither_type = GDitherTri;
+ m_exportSpec->src_quality = SRC_SINC_MEDIUM_QUALITY; //
SRC_SINC_BEST_QUALITY SRC_SINC_FASTEST SRC_ZERO_ORDER_HOLD SRC_LINEAR
+ if (cdAllSongsButton->isChecked()) {
+ m_exportSpec->allSongs = true;
+ } else {
+ m_exportSpec->allSongs = false;
+ }
+ QString name = m_exportSpec->exportdir + "/";
+ QFileInfo fi(m_exportSpec->name);
+ name += fi.completeBaseName() + ".toc";
+ m_exportSpec->tocFileName = name;
+
+ m_exportSpec->normalize = cdNormalizeCheckBox->isChecked();
+ m_exportSpec->isRecording = false;
+
+ connect(m_project, SIGNAL(overallExportProgressChanged(int)), this,
SLOT(cd_export_progress(int)));
+ connect(m_project, SIGNAL(exportFinished()), this,
SLOT(cd_export_finished()));
+ m_project->export_project(m_exportSpec);
+}
+
+void ExportWidget::write_to_cd()
+{
+ PENTER;
+ if ( ! (m_burnprocess->state() == QProcess::NotRunning) ) {
+ m_writingState = NO_STATE;
+ info().critical(tr("Burn process is still running, cannot start
it twice!!"));
+ return;
+ }
+
+ m_writingState = BURNING;
+
+ startButton->hide();
+ stopButton->show();
+
+ progressBar->setValue(0);
+
+ int index = cdDeviceComboBox->currentIndex();
+ if (index == -1) {
+ QMessageBox::information( 0, tr("No Burn Device"),
+ tr("No burn Device available!"),
+ QMessageBox::Ok);
+ return;
+ }
+
+ QString device = cdDeviceComboBox->itemData(index).toString();
+
+ QStringList arguments;
+ arguments << "write" << "--device" << device << "-n" << "--eject";
+ if (speedComboBox->currentIndex() != 0) {
+ arguments << "--speed" << speedComboBox->currentText();
+ }
+ if (simulateCheckBox->isChecked()) {
+ arguments <<"--simulate";
+ }
+
+ arguments << m_exportSpec->tocFileName;
+ m_burnprocess->start("cdrdao", arguments);
+}
+
+void ExportWidget::cd_export_finished()
+{
+ PENTER;
+ disconnect(m_project, SIGNAL(overallExportProgressChanged(int)), this,
SLOT(cd_export_progress(int)));
+ disconnect(m_project, SIGNAL(exportFinished()), this,
SLOT(cd_export_finished()));
+
+ if (cdDiskExportOnlyCheckBox->isChecked()) {
+ update_cdburn_status(tr("Export to disk finished!"),
NORMAL_MESSAGE);
+ exportWidget->setEnabled(true);
+ return;
+ }
+
+ write_to_cd();
+}
+
+void ExportWidget::cd_export_progress(int progress)
+{
+ progressBar->setValue(progress);
+}
+
+void ExportWidget::update_cdburn_status(const QString& message, int type)
+{
+ if (type == NORMAL_MESSAGE) {
+ QPalette palette;
+ palette.setColor(QPalette::WindowText, QColor(Qt::black));
+ cdExportInformationLabel->setPalette(palette);
+ cdExportInformationLabel->setText(message);
+ }
+
+ if (type == ERROR_MESSAGE) {
+ QPalette palette;
+ palette.setColor(QPalette::WindowText, QColor(Qt::red));
+ cdExportInformationLabel->setPalette(palette);
+ cdExportInformationLabel->setText(message);
+ }
+}
+
+void ExportWidget::read_standard_output()
+{
+ Q_ASSERT(m_burnprocess);
+
+ if (m_writingState == QUERY_DEVICE) {
+ char buf[1024];
+ while(m_burnprocess->readLine(buf, sizeof(buf)) != -1) {
+ QString stdout = buf;
+ if (stdout.contains("/dev/")) {
+ QString deviceName;
+ QStringList strlist =
stdout.split(QRegExp("\\s+"));
+ for (int i=1; i<strlist.size(); ++i) {
+ QString token = strlist.at(i);
+ if (!token.contains("Rev:")) {
+ deviceName += token + " ";
+ } else {
+ break;
+ }
+ }
+ QString device = strlist.at(0);
+ device = device.remove(":");
+ cdDeviceComboBox->addItem(deviceName, device);
+ }
+ }
+ return;
+ }
+
+
+ QString stdout = m_burnprocess->readAllStandardOutput();
+ printf("CD Writing: %s\n", QS_C(stdout));
+
+
+ if (stdout.contains("Disk seems to be written")) {
+ QMessageBox::information( 0, tr("Disc not empty"),
+ tr("Please, insert an empty disc and
hit enter"),
+ QMessageBox::Ok);
+ m_burnprocess->write("enter");
+ return;
+ }
+
+ if (stdout.contains("Inserted disk is not empty and not appendable.")) {
+ QMessageBox::information( 0, tr("Disc not empty"),
+ tr("Inserted disk is not empty, and
cannot append data to it!"),
+ QMessageBox::Ok);
+ return;
+ }
+
+
+ if (stdout.contains("Unit not ready")) {
+ update_cdburn_status(tr("Waiting for CD Writer... (no disk
inserted?)"), NORMAL_MESSAGE);
+ return;
+ }
+
+
+ if (stdout.contains("%") && stdout.contains("(") &&
stdout.contains(")")) {
+ QStringList strlist = stdout.split(" ");
+ if (strlist.size() > 7) {
+ int written = strlist.at(1).toInt();
+ int total = strlist.at(3).toInt();
+ if (total == 0) {
+ progressBar->setValue(0);
+ } else {
+ if (progressBar->maximum() == 0) {
+ progressBar->setMaximum(100);
+ }
+ int progress = (100 * written) / total;
+ progressBar->setValue(progress);
+ }
+ }
+ return;
+ }
+
+ if (stdout.contains("Writing track")) {
+ QStringList strlist = stdout.split(" ");
+ if (strlist.size() > 3) {
+ QString text = strlist.at(0) + " " + strlist.at(1) + "
" + strlist.at(2);
+ update_cdburn_status(text, NORMAL_MESSAGE);
+ }
+ return;
+ }
+
+}
Index: src/traverso/ExportWidget.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/ExportWidget.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- src/traverso/ExportWidget.h 8 May 2007 01:15:59 -0000 1.5
+++ src/traverso/ExportWidget.h 10 May 2007 20:02:36 -0000 1.6
@@ -25,7 +25,7 @@
#include "ui_ExportWidget.h"
#include <QDialog>
-#include <QHBoxLayout>
+#include <QProcess>
class Project;
class Song;
@@ -41,12 +41,30 @@
private:
Project* m_project;
- ExportSpecification* spec;
- QHBoxLayout* m_layout;
+ QProcess* m_burnprocess;
+ ExportSpecification* m_exportSpec;
void show_progress_view();
void show_settings_view();
+ bool is_save_to_export();
+ void cd_render();
+ void write_to_cd();
+
+ void update_cdburn_status(const QString& message, int type);
+
+ enum {
+ NO_STATE,
+ BURNING,
+ ABORT_BURN,
+ QUERY_DEVICE,
+ UNLOCK_DEVICE,
+ NORMAL_MESSAGE,
+ ERROR_MESSAGE
+ };
+
+ int m_writingState;
+
private slots:
void set_project(Project* project);
void update_song_progress(int progress);
@@ -62,6 +80,15 @@
void on_currentSongButton_clicked();
void on_cancelButton_clicked();
+ void start_burn_process();
+ void stop_burn_process();
+ void read_standard_output();
+ void cdrdao_process_started();
+ void cdrdao_process_finished(int exitcode, QProcess::ExitStatus
exitstatus);
+ void cd_export_finished();
+ void cd_export_progress(int progress);
+ void unlock_device();
+ void query_devices();
};
#endif
Index: src/traverso/traverso.qrc
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/traverso.qrc,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- src/traverso/traverso.qrc 25 Apr 2007 13:45:18 -0000 1.17
+++ src/traverso/traverso.qrc 10 May 2007 20:02:36 -0000 1.18
@@ -39,6 +39,7 @@
<file
alias="undo-16">../../resources/images/icons/16x16/undo.png</file>
<file
alias="redo-16">../../resources/images/icons/16x16/redo.png</file>
<file
alias="redled-16">../../resources/images/icons/16x16/redled.png</file>
+ <file
alias="refresh-16">../../resources/images/icons/16x16/reload.png</file>
<file
alias="redledinactive-16">../../resources/images/icons/16x16/redledinactive.png</file>
<file
alias="songmanager-16">../../resources/images/icons/16x16/contents.png</file>
<file alias="traverso_nl">../../traverso_nl.qm</file>
Index: src/traverso/dialogs/MarkerDialog.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/dialogs/MarkerDialog.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/traverso/dialogs/MarkerDialog.cpp 6 May 2007 00:02:38 -0000
1.7
+++ src/traverso/dialogs/MarkerDialog.cpp 10 May 2007 20:02:36 -0000
1.8
@@ -315,7 +315,7 @@
QTreeWidgetItem *it = markersTreeWidget->topLevelItem(i);
Marker *m = get_marker(it->data(0, Qt::UserRole).toLongLong());
m->set_description(str);
- it->setText(1, str);
+ it->setText(2, str);
}
}
Index: src/traverso/songcanvas/AudioClipView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/AudioClipView.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- src/traverso/songcanvas/AudioClipView.cpp 8 May 2007 22:13:40 -0000
1.62
+++ src/traverso/songcanvas/AudioClipView.cpp 10 May 2007 20:02:36 -0000
1.63
@@ -780,11 +780,11 @@
return ie().failure();
}
- if (rs->reset_filename(filename) < 0) {
+ if (rs->set_file(filename) < 0) {
return ie().failure();
}
- m_clip->set_audio_source(rs);
+ resources_manager()->set_source_for_clip(m_clip, rs);
info().information(tr("Succesfully set AudioClip file to
%1").arg(filename));
Index: src/traverso/songcanvas/ClipsViewPort.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/ClipsViewPort.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- src/traverso/songcanvas/ClipsViewPort.cpp 5 May 2007 20:40:35 -0000
1.16
+++ src/traverso/songcanvas/ClipsViewPort.cpp 10 May 2007 20:02:36 -0000
1.17
@@ -162,7 +162,7 @@
ReadSource* source = resources_manager()->get_readsource(id);
if (source) {
clip =
resources_manager()->new_audio_clip(source->get_short_name());
- clip->set_audio_source(source);
+ resources_manager()->set_source_for_clip(clip, source);
clip->set_song(importTrack->get_song());
clip->set_track(importTrack);
clip->set_track_start_frame(startpos);
Index: src/traverso/songcanvas/TimeLineView.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/songcanvas/TimeLineView.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -b -r1.33 -r1.34
--- src/traverso/songcanvas/TimeLineView.cpp 9 May 2007 22:35:29 -0000
1.33
+++ src/traverso/songcanvas/TimeLineView.cpp 10 May 2007 20:02:36 -0000
1.34
@@ -283,8 +283,8 @@
// Draw minor ticks
for (int i = 0; i < (lastFrame-firstFrame+major) / minor; i++ ) {
- int x = (int)(((int)(firstFrame/major))*major + i *
minor)/m_sv->scalefactor;
- painter->drawLine(x - xstartoffset, height - 5, x -
xstartoffset, height - 1);
+ int x = (int)(((int)(firstFrame/major))*major + i *
minor)/m_sv->scalefactor - xstartoffset;
+ painter->drawLine(x, height - 5, x, height - 1);
}
// Draw major ticks
Index: src/traverso/ui/ExportWidget.ui
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/ui/ExportWidget.ui,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/traverso/ui/ExportWidget.ui 3 May 2007 18:28:56 -0000 1.6
+++ src/traverso/ui/ExportWidget.ui 10 May 2007 20:02:36 -0000 1.7
@@ -5,33 +5,24 @@
<rect>
<x>0</x>
<y>0</y>
- <width>529</width>
- <height>557</height>
+ <width>410</width>
+ <height>419</height>
</rect>
</property>
- <property name="windowTitle" >
- <string>Export to harddisk</string>
- </property>
- <widget class="QWidget" native="1" name="progressWidget" >
- <property name="geometry" >
- <rect>
- <x>9</x>
- <y>382</y>
- <width>511</width>
- <height>166</height>
- </rect>
- </property>
- <layout class="QHBoxLayout" >
- <property name="margin" >
- <number>9</number>
+ <property name="minimumSize" >
+ <size>
+ <width>410</width>
+ <height>0</height>
+ </size>
</property>
- <property name="spacing" >
- <number>6</number>
+ <property name="maximumSize" >
+ <size>
+ <width>440</width>
+ <height>440</height>
+ </size>
</property>
- <item>
- <widget class="QGroupBox" name="ExportStateGroupBox" >
- <property name="title" >
- <string>Export status</string>
+ <property name="windowTitle" >
+ <string>Export</string>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
@@ -41,122 +32,39 @@
<number>6</number>
</property>
<item>
- <layout class="QVBoxLayout" >
- <property name="margin" >
- <number>0</number>
+ <widget class="QTabWidget" name="tabWidget" >
+ <property name="enabled" >
+ <bool>true</bool>
</property>
- <property name="spacing" >
- <number>6</number>
+ <property name="currentIndex" >
+ <number>1</number>
</property>
- <item>
+ <widget class="QWidget" name="exportWidget" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <attribute name="title" >
+ <string>Export to Harddisk</string>
+ </attribute>
<layout class="QHBoxLayout" >
<property name="margin" >
- <number>0</number>
+ <number>9</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
- <widget class="QLabel" name="currentProcessingSongName" >
- <property name="text" >
- <string>-</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QProgressBar" name="songProgressBar" >
- <property name="value" >
+ <widget class="QStackedWidget" name="stackedWidget" >
+ <property name="currentIndex" >
<number>0</number>
</property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_5" >
- <property name="text" >
- <string>Overall Progress</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="overalProgressBar" >
- <property name="value" >
- <number>0</number>
- </property>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
+ <widget class="QWidget" name="page" >
<layout class="QVBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
- <number>6</number>
- </property>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="exportStopButton" >
- <property name="text" >
- <string>Stop</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" native="1" name="optionsWidget" >
- <property name="geometry" >
- <rect>
- <x>9</x>
- <y>9</y>
- <width>289</width>
- <height>369</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" >
- <property name="margin" >
- <number>9</number>
- </property>
- <property name="spacing" >
- <number>6</number>
+ <number>12</number>
</property>
<item>
<widget class="QGroupBox" name="generalOptionsGroupBox" >
@@ -381,6 +289,433 @@
</item>
</layout>
</widget>
+ <widget class="QWidget" name="page_2" >
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="ExportStateGroupBox" >
+ <property name="title" >
+ <string>Export status</string>
+ </property>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="currentProcessingSongName" >
+ <property name="text" >
+ <string>-</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="songProgressBar" >
+ <property name="value" >
+ <number>0</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5" >
+ <property name="text" >
+ <string>Overall Progress</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="overalProgressBar" >
+ <property name="value" >
+ <number>0</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="exportStopButton" >
+ <property name="text" >
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeType" >
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>61</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="cdburningWidget" >
+ <attribute name="title" >
+ <string>Burn to CD</string>
+ </attribute>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2" >
+ <property name="title" >
+ <string>Options</string>
+ </property>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_7" >
+ <property name="text" >
+ <string>Song(s) to render</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="cdCurrentSongButton" >
+ <property name="text" >
+ <string>Current</string>
+ </property>
+ <property name="checked" >
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="cdAllSongsButton" >
+ <property name="text" >
+ <string>All</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="cdNormalizeCheckBox" >
+ <property name="text" >
+ <string>Calculate and apply normalization</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="cdDiskExportOnlyCheckBox" >
+ <property name="text" >
+ <string>Export to disk only</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="simulateCheckBox" >
+ <property name="text" >
+ <string>Simulate</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox" >
+ <property name="title" >
+ <string>Burning Device</string>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QComboBox" name="cdDeviceComboBox" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>5</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_9" >
+ <property name="text" >
+ <string>Speed</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="speedComboBox" >
+ <item>
+ <property name="text" >
+ <string>auto</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>1x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>2x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>4x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>8x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>12x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>16x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>20x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>24x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>28x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>32x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>36x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>40x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>44x</string>
+ </property>
+ </item>
+ <item>
+ <property name="text" >
+ <string>48x</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="refreshButton" >
+ <property name="text" >
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3" >
+ <property name="title" >
+ <string>Status</string>
+ </property>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>9</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="cdExportInformationLabel" >
+ <property name="text" >
+ <string>Information</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar" >
+ <property name="value" >
+ <number>0</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>16</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="startButton" >
+ <property name="text" >
+ <string>Start</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="stopButton" >
+ <property name="text" >
+ <string>Stop</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="closeButton" >
+ <property name="text" >
+ <string>Close</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
</widget>
<resources/>
<connections/>
Index: resources/images/icons/16x16/reload.png
===================================================================
RCS file: resources/images/icons/16x16/reload.png
diff -N resources/images/icons/16x16/reload.png
Binary files /dev/null and /tmp/cvsWtM84k differ
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Traverso-commit] traverso src/commands/AudioClipExternalProcessi...,
Remon Sijrier <=