traverso-commit
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]