traverso-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Traverso-commit] traverso/src/traverso CMakeLists.txt dialogs/Ex...


From: Remon Sijrier
Subject: [Traverso-commit] traverso/src/traverso CMakeLists.txt dialogs/Ex...
Date: Thu, 22 May 2008 14:54:24 +0000

CVSROOT:        /sources/traverso
Module name:    traverso
Changes by:     Remon Sijrier <r_sijrier>       08/05/22 14:54:24

Modified files:
        src/traverso   : CMakeLists.txt 
        src/traverso/dialogs: ExportDialog.cpp ExportDialog.h 
        src/traverso/ui: ExportDialog.ui 
Added files:
        src/traverso/ui: ExportFormatOptionsWidget.ui 
        src/traverso/widgets: ExportFormatOptionsWidget.cpp 
                              ExportFormatOptionsWidget.h 

Log message:
        * extract format options from export dialog into it's own widget to be 
able to re-use for importing files when creating new project

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/CMakeLists.txt?cvsroot=traverso&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/ExportDialog.cpp?cvsroot=traverso&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/dialogs/ExportDialog.h?cvsroot=traverso&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ui/ExportDialog.ui?cvsroot=traverso&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/ui/ExportFormatOptionsWidget.ui?cvsroot=traverso&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/ExportFormatOptionsWidget.cpp?cvsroot=traverso&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/traverso/src/traverso/widgets/ExportFormatOptionsWidget.h?cvsroot=traverso&rev=1.1

Patches:
Index: CMakeLists.txt
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/CMakeLists.txt,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- CMakeLists.txt      13 May 2008 23:24:32 -0000      1.13
+++ CMakeLists.txt      22 May 2008 14:54:23 -0000      1.14
@@ -44,6 +44,7 @@
 dialogs/ProjectConverterDialog.cpp
 dialogs/ExportDialog.cpp
 dialogs/CDWritingDialog.cpp
+widgets/ExportFormatOptionsWidget.cpp
 widgets/InfoWidgets.cpp
 widgets/MessageWidget.cpp
 widgets/MeterWidget.cpp
@@ -55,6 +56,7 @@
 
 SET(TRAVERSO_UI_FILES
 ui/AudioSourcesManagerWidget.ui
+ui/ExportFormatOptionsWidget.ui
 ui/SpectralMeterConfigWidget.ui
 ui/QuickDriverConfigWidget.ui
 ui/DriverConfigPage.ui
@@ -103,6 +105,7 @@
 dialogs/project/ProjectManagerDialog.h
 dialogs/settings/SettingsDialog.h
 dialogs/settings/Pages.h
+widgets/ExportFormatOptionsWidget.h
 widgets/InfoWidgets.h
 widgets/ResourcesWidget.h
 widgets/MessageWidget.h

Index: dialogs/ExportDialog.cpp
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/dialogs/ExportDialog.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- dialogs/ExportDialog.cpp    25 Feb 2008 22:03:10 -0000      1.10
+++ dialogs/ExportDialog.cpp    22 May 2008 14:54:23 -0000      1.11
@@ -30,15 +30,11 @@
 #include <QDebug>
 
 #include "Export.h"
+#include "widgets/ExportFormatOptionsWidget.h"
 #include "Config.h"
 #include <AudioDevice.h>
 
 
-RELAYTOOL_WAVPACK;
-RELAYTOOL_FLAC;
-RELAYTOOL_MP3LAME;
-RELAYTOOL_VORBISENC;
-
 // Always put me below _all_ includes, this is needed
 // in case we run with memory leak detection enabled!
 #include "Debugger.h"
@@ -51,181 +47,24 @@
 {
         setupUi(this);
 
+        QBoxLayout* lay = qobject_cast<QBoxLayout*>(layout());
+        if (lay) {
+               m_formatOptionsWidget = new 
ExportFormatOptionsWidget(lay->widget());
+               lay->insertWidget(1, m_formatOptionsWidget);
+       }
+
        abortButton->hide();
        QIcon icon = 
QApplication::style()->standardIcon(QStyle::SP_DirClosedIcon);
        fileSelectButton->setIcon(icon);
        
        set_project(pm().get_project());
        
-       //bitdepthComboBox->addItem("8", 8);
-       bitdepthComboBox->addItem("16", 16);
-       bitdepthComboBox->addItem("24", 24);
-       bitdepthComboBox->addItem("32", 32);
-       bitdepthComboBox->addItem("32 (float)", 1);
-       
-       channelComboBox->addItem("Mono", 1);
-       channelComboBox->addItem("Stereo", 2);
-       
-       sampleRateComboBox->addItem("8.000 Hz", 8000);
-       sampleRateComboBox->addItem("11.025 Hz", 11025);
-       sampleRateComboBox->addItem("22.050 Hz", 22050);
-       sampleRateComboBox->addItem("44.100 Hz", 44100);
-       sampleRateComboBox->addItem("48.000 Hz", 48000);
-       sampleRateComboBox->addItem("88.200 Hz", 88200);
-       sampleRateComboBox->addItem("96.000 Hz", 96000);
-       
-       resampleQualityComboBox->addItem(tr("Best"), 0); // Best
-       resampleQualityComboBox->addItem(tr("High"), 1); // Medium
-       resampleQualityComboBox->addItem(tr("Medium"), 2); // Fastest
-       resampleQualityComboBox->addItem(tr("Fast"), 4); // Linear (Should we 
use ZERO_HOLD(3) instead?)
-       
-       audioTypeComboBox->addItem("WAV", "wav");
-       audioTypeComboBox->addItem("AIFF", "aiff");
-       if (libFLAC_is_present) {
-               audioTypeComboBox->addItem("FLAC", "flac");
-       }
-       if (libwavpack_is_present) {
-               audioTypeComboBox->addItem("WAVPACK", "wavpack");
-       }
-#if defined MP3_ENCODE_SUPPORT
-       if (libmp3lame_is_present) {
-               audioTypeComboBox->addItem("MP3", "mp3");
-       }
-#endif
-       if (libvorbisenc_is_present) {
-               audioTypeComboBox->addItem("OGG", "ogg");
-       }
-       
-       channelComboBox->setCurrentIndex(channelComboBox->findData(2));
-       
-       int rateIndex = 
sampleRateComboBox->findData(audiodevice().get_sample_rate());
-       sampleRateComboBox->setCurrentIndex(rateIndex >= 0 ? rateIndex : 3);
-       
-       connect(closeButton, SIGNAL(clicked()), this, SLOT(hide()));
-       connect(&pm(), SIGNAL(projectLoaded(Project*)), this, 
SLOT(set_project(Project*)));
-       connect(audioTypeComboBox, SIGNAL(currentIndexChanged(int)), this, 
SLOT(audio_type_changed(int)));
-       
-       QString option;
-       int index;
-       bool checked;
-       
-       // Mp3 Options Setup
-       mp3MethodComboBox->addItem("Constant Bitrate", "cbr");
-       mp3MethodComboBox->addItem("Average Bitrate", "abr");
-       mp3MethodComboBox->addItem("Variable Bitrate", "vbr-new");
-       
-       mp3MinBitrateComboBox->addItem("32 Kbps - recommended", "32");
-       mp3MinBitrateComboBox->addItem("64 Kbps", "64");
-       mp3MinBitrateComboBox->addItem("96 Kbps", "96");
-       mp3MinBitrateComboBox->addItem("128 Kbps", "128");
-       mp3MinBitrateComboBox->addItem("160 Kbps", "160");
-       mp3MinBitrateComboBox->addItem("192 Kbps", "192");
-       mp3MinBitrateComboBox->addItem("256 Kbps", "256");
-       mp3MinBitrateComboBox->addItem("320 Kbps", "320");
-       
-       mp3MaxBitrateComboBox->addItem("32 Kbps", "32");
-       mp3MaxBitrateComboBox->addItem("64 Kbps", "64");
-       mp3MaxBitrateComboBox->addItem("96 Kbps", "96");
-       mp3MaxBitrateComboBox->addItem("128 Kbps", "128");
-       mp3MaxBitrateComboBox->addItem("160 Kbps", "160");
-       mp3MaxBitrateComboBox->addItem("192 Kbps", "192");
-       mp3MaxBitrateComboBox->addItem("256 Kbps", "256");
-       mp3MaxBitrateComboBox->addItem("320 Kbps", "320");
-       
-       // First set to VBR, so that if we default to something else, it will 
trigger mp3_method_changed()
-       index = mp3MethodComboBox->findData("vbr-new");
-       mp3MethodComboBox->setCurrentIndex(index >=0 ? index : 0);
-       connect(mp3MethodComboBox, SIGNAL(currentIndexChanged(int)), this, 
SLOT(mp3_method_changed(int)));
-       
-       option = config().get_property("ExportDialog", "mp3MethodComboBox", 
"vbr-new").toString();
-       index = mp3MethodComboBox->findData(option);
-       mp3MethodComboBox->setCurrentIndex(index >=0 ? index : 0);
-       option = config().get_property("ExportDialog", "mp3MinBitrateComboBox", 
"32").toString();
-       index = mp3MinBitrateComboBox->findData(option);
-       mp3MinBitrateComboBox->setCurrentIndex(index >=0 ? index : 0);
-       option = config().get_property("ExportDialog", "mp3MaxBitrateComboBox", 
"192").toString();
-       index = mp3MaxBitrateComboBox->findData(option);
-       mp3MaxBitrateComboBox->setCurrentIndex(index >=0 ? index : 0);
-       
-       mp3OptionsGroupBox->hide();
-       
-       
-       // Ogg Options Setup
-       oggMethodComboBox->addItem("Constant Bitrate", "manual");
-       oggMethodComboBox->addItem("Variable Bitrate", "vbr");
-       
-       oggBitrateComboBox->addItem("45 Kbps", "45");
-       oggBitrateComboBox->addItem("64 Kbps", "64");
-       oggBitrateComboBox->addItem("96 Kbps", "96");
-       oggBitrateComboBox->addItem("112 Kbps", "112");
-       oggBitrateComboBox->addItem("128 Kbps", "128");
-       oggBitrateComboBox->addItem("160 Kbps", "160");
-       oggBitrateComboBox->addItem("192 Kbps", "192");
-       oggBitrateComboBox->addItem("224 Kbps", "224");
-       oggBitrateComboBox->addItem("256 Kbps", "256");
-       oggBitrateComboBox->addItem("320 Kbps", "320");
-       oggBitrateComboBox->addItem("400 Kbps", "400");
-       
-       // First set to VBR, so that if we default to something else, it will 
trigger ogg_method_changed()
-       index = oggMethodComboBox->findData("vbr");
-       oggMethodComboBox->setCurrentIndex(index >=0 ? index : 0);
-       connect(oggMethodComboBox, SIGNAL(currentIndexChanged(int)), this, 
SLOT(ogg_method_changed(int)));
-       
-       option = config().get_property("ExportDialog", "oggMethodComboBox", 
"vbr").toString();
-       index = oggMethodComboBox->findData(option);
-       oggMethodComboBox->setCurrentIndex(index >=0 ? index : 0);
-       ogg_method_changed(index >=0 ? index : 0);
-       option = config().get_property("ExportDialog", "oggBitrateComboBox", 
"160").toString();
-       index = oggBitrateComboBox->findData(option);
-       oggBitrateComboBox->setCurrentIndex(index >= 0 ? index : 0);
-       
-       oggOptionsGroupBox->hide();
-       
-       
-       // WavPack option
-       wacpackGroupBox->hide();
-       wavpackCompressionComboBox->addItem("Very high", "very_high");
-       wavpackCompressionComboBox->addItem("High", "high");
-       wavpackCompressionComboBox->addItem("Fast", "fast");
-       
-       option = config().get_property("ExportDialog", 
"wavpackCompressionComboBox", "very_high").toString();
-       index = wavpackCompressionComboBox->findData(option);
-       wavpackCompressionComboBox->setCurrentIndex(index >= 0 ? index : 0);
-       checked = config().get_property("ExportDialog", "skipWVXCheckBox", 
"false").toBool();
-       skipWVXCheckBox->setChecked(checked);
-
-       
-       option = config().get_property("ExportDialog", "audioTypeComboBox", 
"wav").toString();
-       index = audioTypeComboBox->findData(option);
-       audioTypeComboBox->setCurrentIndex(index >= 0 ? index : 0);
-       
-       checked = config().get_property("ExportDialog", "normalizeCheckBox", 
"false").toBool();
-       normalizeCheckBox->setChecked(checked);
-       
-       index = config().get_property("ExportDialog", 
"resampleQualityComboBox", "1").toInt();
-       index = resampleQualityComboBox->findData(index);
-       resampleQualityComboBox->setCurrentIndex(index >= 0 ? index : 1);
-       
-       option = config().get_property("ExportDialog", "bitdepthComboBox", 
"16").toString();
-       index = bitdepthComboBox->findData(option);
-       bitdepthComboBox->setCurrentIndex(index >= 0 ? index : 0);
-       setMaximumSize(400, 250);
+       setMaximumSize(400, 450);
 }
 
 
 ExportDialog::~ ExportDialog( )
 {
-       config().set_property("ExportDialog", "mp3MethodComboBox", 
mp3MethodComboBox->itemData(mp3MethodComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "mp3MinBitrateComboBox", 
mp3MinBitrateComboBox->itemData(mp3MinBitrateComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "mp3MaxBitrateComboBox", 
mp3MaxBitrateComboBox->itemData(mp3MaxBitrateComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "oggMethodComboBox", 
oggMethodComboBox->itemData(oggMethodComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "oggBitrateComboBox", 
oggBitrateComboBox->itemData(oggBitrateComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "wavpackCompressionComboBox", 
wavpackCompressionComboBox->itemData(wavpackCompressionComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "audioTypeComboBox", 
audioTypeComboBox->itemData(audioTypeComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "normalizeCheckBox", 
normalizeCheckBox->isChecked());
-       config().set_property("ExportDialog", "skipWVXCheckBox", 
skipWVXCheckBox->isChecked());
-       config().set_property("ExportDialog", "resampleQualityComboBox", 
resampleQualityComboBox->itemData(resampleQualityComboBox->currentIndex()).toString());
-       config().set_property("ExportDialog", "bitdepthComboBox", 
bitdepthComboBox->itemData(bitdepthComboBox->currentIndex()).toString());
 }
 
 
@@ -251,84 +90,6 @@
 }
 
 
-void ExportDialog::audio_type_changed(int index)
-{
-       QString newType = audioTypeComboBox->itemData(index).toString();
-       
-       if (newType == "mp3") {
-               oggOptionsGroupBox->hide();
-               wacpackGroupBox->hide();
-               mp3OptionsGroupBox->show();
-       }
-       else if (newType == "ogg") {
-               mp3OptionsGroupBox->hide();
-               wacpackGroupBox->hide();
-               oggOptionsGroupBox->show();
-       }
-       else if (newType == "wavpack") {
-               mp3OptionsGroupBox->hide();
-               oggOptionsGroupBox->hide();
-               wacpackGroupBox->show();
-       }
-       else {
-               mp3OptionsGroupBox->hide();
-               wacpackGroupBox->hide();
-               oggOptionsGroupBox->hide();
-       }
-       
-       if (newType == "mp3" || newType == "ogg" || newType == "flac") {
-               
bitdepthComboBox->setCurrentIndex(bitdepthComboBox->findData(16));
-               bitdepthComboBox->setDisabled(true);
-       }
-       else {
-               bitdepthComboBox->setEnabled(true);
-       }
-}
-
-
-void ExportDialog::mp3_method_changed(int index)
-{
-       QString method = mp3MethodComboBox->itemData(index).toString();
-       
-       if (method == "cbr") {
-               mp3MinBitrateComboBox->hide();
-               mp3MinBitrateLabel->hide();
-               mp3MaxBitrateLabel->setText(tr("Bitrate"));
-       }
-       else if (method == "abr") {
-               mp3MinBitrateComboBox->hide();
-               mp3MinBitrateLabel->hide();
-               mp3MaxBitrateLabel->setText(tr("Average Bitrate"));
-       }
-       else {
-//             VBR new or VBR old
-               mp3MinBitrateComboBox->show();
-               mp3MinBitrateLabel->show();
-               mp3MaxBitrateLabel->setText(tr("Maximum Bitrate"));
-       }
-}
-
-
-void ExportDialog::ogg_method_changed(int index)
-{
-       QString method = oggMethodComboBox->itemData(index).toString();
-       
-       if (method == "manual") {
-               oggQualitySlider->hide();
-               oggQualityLabel->hide();
-               oggBitrateComboBox->show();
-               oggBitrateLabel->show();
-       }
-       else {
-               // VBR
-               oggBitrateComboBox->hide();
-               oggBitrateLabel->hide();
-               oggQualitySlider->show();
-               oggQualityLabel->show();
-       }
-}
-
-
 void ExportDialog::on_startButton_clicked( )
 {
        if (!is_safe_to_export()) {
@@ -343,51 +104,7 @@
        // clear extraformats, it might be different now from previous runs!
        m_exportSpec->extraFormat.clear();
        
-       
-       QString audioType = 
audioTypeComboBox->itemData(audioTypeComboBox->currentIndex()).toString();
-       if (audioType == "wav") {
-               m_exportSpec->writerType = "sndfile";
-               m_exportSpec->extraFormat["filetype"] = "wav";
-       }
-       else if (audioType == "aiff") {
-               m_exportSpec->writerType = "sndfile";
-               m_exportSpec->extraFormat["filetype"] = "aiff";
-       }
-       else if (audioType == "flac") {
-               m_exportSpec->writerType = "flac";
-       }
-       else if (audioType == "wavpack") {
-               m_exportSpec->writerType = "wavpack";
-               m_exportSpec->extraFormat["quality"] = 
wavpackCompressionComboBox->itemData(wavpackCompressionComboBox->currentIndex()).toString();
-               m_exportSpec->extraFormat["skip_wvx"] = 
skipWVXCheckBox->isChecked() ? "true" : "false";
-       }
-       else if (audioType == "mp3") {
-               m_exportSpec->writerType = "lame";
-               m_exportSpec->extraFormat["method"] = 
mp3MethodComboBox->itemData(mp3MethodComboBox->currentIndex()).toString();
-               m_exportSpec->extraFormat["minBitrate"] = 
mp3MinBitrateComboBox->itemData(mp3MinBitrateComboBox->currentIndex()).toString();
-               m_exportSpec->extraFormat["maxBitrate"] = 
mp3MaxBitrateComboBox->itemData(mp3MaxBitrateComboBox->currentIndex()).toString();
-               m_exportSpec->extraFormat["quality"] = 
QString::number(mp3QualitySlider->value());
-       }
-       else if (audioType == "ogg") {
-               m_exportSpec->writerType = "vorbis";
-               m_exportSpec->extraFormat["mode"] = 
oggMethodComboBox->itemData(oggMethodComboBox->currentIndex()).toString();
-               if (m_exportSpec->extraFormat["mode"] == "manual") {
-                       m_exportSpec->extraFormat["bitrateNominal"] = 
oggBitrateComboBox->itemData(oggBitrateComboBox->currentIndex()).toString();
-                       m_exportSpec->extraFormat["bitrateUpper"] = 
oggBitrateComboBox->itemData(oggBitrateComboBox->currentIndex()).toString();
-               }
-               else {
-                       m_exportSpec->extraFormat["vbrQuality"] = 
QString::number(oggQualitySlider->value());
-               }
-       }
-       
-       m_exportSpec->data_width = 
bitdepthComboBox->itemData(bitdepthComboBox->currentIndex()).toInt();
-       m_exportSpec->channels = 
channelComboBox->itemData(channelComboBox->currentIndex()).toInt();
-       m_exportSpec->sample_rate = 
sampleRateComboBox->itemData(sampleRateComboBox->currentIndex()).toInt();
-       m_exportSpec->src_quality = 
resampleQualityComboBox->itemData(resampleQualityComboBox->currentIndex()).toInt();
-       
-       //TODO Make a ComboBox for this one too!
-       m_exportSpec->dither_type = GDitherTri;
-       
+       m_formatOptionsWidget->get_format_options(m_exportSpec);
        
        if (allSheetsButton->isChecked()) {
                 m_exportSpec->allSheets = true;
@@ -404,7 +121,6 @@
        name += fi.completeBaseName() + ".toc";
        m_exportSpec->tocFileName = name;
 
-       m_exportSpec->normalize = normalizeCheckBox->isChecked();
        m_exportSpec->isRecording = false;
        m_project->export_project(m_exportSpec);
        

Index: dialogs/ExportDialog.h
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/dialogs/ExportDialog.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- dialogs/ExportDialog.h      21 Jan 2008 16:25:16 -0000      1.3
+++ dialogs/ExportDialog.h      22 May 2008 14:54:23 -0000      1.4
@@ -26,6 +26,7 @@
 
 #include <QDialog>
 
+class ExportFormatOptionsWidget;
 class Project;
 class Sheet;
 struct ExportSpecification;
@@ -46,6 +47,7 @@
 private:
        Project* m_project;
        ExportSpecification*    m_exportSpec;
+       ExportFormatOptionsWidget* m_formatOptionsWidget;
 
        bool is_safe_to_export();
 
@@ -65,9 +67,6 @@
        void on_abortButton_clicked();
        void on_closeButton_clicked();
 
-       void audio_type_changed(int index);
-       void mp3_method_changed(int index);
-       void ogg_method_changed(int index);
        void reject();
 };
 

Index: ui/ExportDialog.ui
===================================================================
RCS file: /sources/traverso/traverso/src/traverso/ui/ExportDialog.ui,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- ui/ExportDialog.ui  21 Jan 2008 16:22:17 -0000      1.6
+++ ui/ExportDialog.ui  22 May 2008 14:54:23 -0000      1.7
@@ -5,14 +5,12 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>1032</width>
-    <height>642</height>
+    <width>453</width>
+    <height>258</height>
    </rect>
   </property>
   <property name="sizePolicy" >
-   <sizepolicy>
-    <hsizetype>4</hsizetype>
-    <vsizetype>4</vsizetype>
+   <sizepolicy vsizetype="Maximum" hsizetype="Maximum" >
     <horstretch>0</horstretch>
     <verstretch>1</verstretch>
    </sizepolicy>
@@ -21,18 +19,25 @@
    <string>Export</string>
   </property>
   <layout class="QVBoxLayout" >
-   <property name="margin" >
+   <property name="spacing" >
     <number>9</number>
    </property>
-   <property name="spacing" >
+   <property name="leftMargin" >
+    <number>9</number>
+   </property>
+   <property name="topMargin" >
+    <number>9</number>
+   </property>
+   <property name="rightMargin" >
+    <number>9</number>
+   </property>
+   <property name="bottomMargin" >
     <number>9</number>
    </property>
    <item>
     <widget class="QGroupBox" name="generalOptionsGroupBox" >
      <property name="sizePolicy" >
-      <sizepolicy>
-       <hsizetype>5</hsizetype>
-       <vsizetype>4</vsizetype>
+      <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
@@ -47,20 +52,38 @@
       <string>General Options</string>
      </property>
      <layout class="QVBoxLayout" >
-      <property name="margin" >
-       <number>9</number>
-      </property>
       <property name="spacing" >
        <number>6</number>
       </property>
+      <property name="leftMargin" >
+       <number>9</number>
+      </property>
+      <property name="topMargin" >
+       <number>9</number>
+      </property>
+      <property name="rightMargin" >
+       <number>9</number>
+      </property>
+      <property name="bottomMargin" >
+       <number>9</number>
+      </property>
       <item>
        <layout class="QHBoxLayout" >
-        <property name="margin" >
-         <number>0</number>
-        </property>
         <property name="spacing" >
          <number>6</number>
         </property>
+        <property name="leftMargin" >
+         <number>0</number>
+        </property>
+        <property name="topMargin" >
+         <number>0</number>
+        </property>
+        <property name="rightMargin" >
+         <number>0</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>0</number>
+        </property>
         <item>
          <widget class="QRadioButton" name="currentSheetButton" >
           <property name="text" >
@@ -95,12 +118,21 @@
       </item>
       <item>
        <layout class="QHBoxLayout" >
-        <property name="margin" >
-         <number>0</number>
-        </property>
         <property name="spacing" >
          <number>6</number>
         </property>
+        <property name="leftMargin" >
+         <number>0</number>
+        </property>
+        <property name="topMargin" >
+         <number>0</number>
+        </property>
+        <property name="rightMargin" >
+         <number>0</number>
+        </property>
+        <property name="bottomMargin" >
+         <number>0</number>
+        </property>
         <item>
          <widget class="QLabel" name="label" >
           <property name="text" >
@@ -114,9 +146,7 @@
         <item>
          <widget class="QLineEdit" name="exportDirName" >
           <property name="sizePolicy" >
-           <sizepolicy>
-            <hsizetype>7</hsizetype>
-            <vsizetype>0</vsizetype>
+           <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
             <horstretch>5</horstretch>
             <verstretch>0</verstretch>
            </sizepolicy>
@@ -136,689 +166,48 @@
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="exportSpecificationsGroupBox" >
-     <property name="sizePolicy" >
-      <sizepolicy>
-       <hsizetype>5</hsizetype>
-       <vsizetype>4</vsizetype>
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title" >
-      <string>Format Options</string>
-     </property>
-     <layout class="QVBoxLayout" >
-      <property name="margin" >
-       <number>9</number>
-      </property>
-      <property name="spacing" >
-       <number>9</number>
-      </property>
-      <item>
-       <widget class="QGroupBox" name="groupBox_2" >
-        <property name="title" >
-         <string>Encoding</string>
-        </property>
-        <layout class="QVBoxLayout" >
-         <property name="margin" >
-          <number>9</number>
-         </property>
-         <property name="spacing" >
-          <number>12</number>
-         </property>
-         <item>
-          <layout class="QHBoxLayout" >
-           <property name="margin" >
-            <number>0</number>
-           </property>
-           <property name="spacing" >
-            <number>18</number>
-           </property>
-           <item>
-            <layout class="QVBoxLayout" >
-             <property name="margin" >
-              <number>0</number>
-             </property>
-             <property name="spacing" >
-              <number>6</number>
-             </property>
-             <item>
-              <widget class="QLabel" name="label_2" >
-               <property name="text" >
-                <string>File Type</string>
-               </property>
-               <property name="alignment" >
-                <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-               </property>
-              </widget>
-             </item>
-             <item>
-              <widget class="QLabel" name="label_4" >
-               <property name="text" >
-                <string>Channels</string>
-               </property>
-               <property name="alignment" >
-                <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-               </property>
-              </widget>
-             </item>
-            </layout>
-           </item>
-           <item>
-            <layout class="QVBoxLayout" >
-             <property name="margin" >
-              <number>0</number>
-             </property>
-             <property name="spacing" >
-              <number>6</number>
-             </property>
-             <item>
-              <widget class="QComboBox" name="audioTypeComboBox" >
-               <property name="sizePolicy" >
-                <sizepolicy>
-                 <hsizetype>5</hsizetype>
-                 <vsizetype>0</vsizetype>
-                 <horstretch>4</horstretch>
-                 <verstretch>0</verstretch>
-                </sizepolicy>
-               </property>
-              </widget>
-             </item>
-             <item>
-              <widget class="QComboBox" name="channelComboBox" />
-             </item>
-            </layout>
-           </item>
-           <item>
-            <layout class="QVBoxLayout" >
-             <property name="margin" >
-              <number>0</number>
-             </property>
-             <property name="spacing" >
-              <number>6</number>
-             </property>
-             <item>
-              <widget class="QCheckBox" name="normalizeCheckBox" >
-               <property name="sizePolicy" >
-                <sizepolicy>
-                 <hsizetype>5</hsizetype>
-                 <vsizetype>0</vsizetype>
-                 <horstretch>0</horstretch>
-                 <verstretch>0</verstretch>
-                </sizepolicy>
-               </property>
-               <property name="text" >
-                <string>Normalize Audio</string>
-               </property>
-              </widget>
-             </item>
-             <item>
-              <layout class="QHBoxLayout" >
-               <property name="margin" >
-                <number>0</number>
-               </property>
-               <property name="spacing" >
-                <number>6</number>
-               </property>
-               <item>
-                <widget class="QLabel" name="label_3" >
-                 <property name="sizePolicy" >
-                  <sizepolicy>
-                   <hsizetype>5</hsizetype>
-                   <vsizetype>5</vsizetype>
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
-                 </property>
-                 <property name="text" >
-                  <string>Bitdepth</string>
-                 </property>
-                 <property name="alignment" >
-                  <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-                 </property>
-                </widget>
-               </item>
-               <item>
-                <widget class="QComboBox" name="bitdepthComboBox" />
-               </item>
-              </layout>
-             </item>
-            </layout>
-           </item>
-           <item>
-            <spacer>
-             <property name="orientation" >
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" >
-              <size>
-               <width>0</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" >
-           <property name="margin" >
-            <number>0</number>
-           </property>
-           <property name="spacing" >
-            <number>6</number>
-           </property>
-           <item>
-            <widget class="QGroupBox" name="wacpackGroupBox" >
+    <widget class="QGroupBox" name="ExportStateGroupBox" >
              <property name="sizePolicy" >
-              <sizepolicy>
-               <hsizetype>5</hsizetype>
-               <vsizetype>4</vsizetype>
+      <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
                <horstretch>0</horstretch>
                <verstretch>0</verstretch>
               </sizepolicy>
              </property>
              <property name="title" >
-              <string>WavPack options (lossless compression)</string>
+      <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="label_17" >
-                  <property name="text" >
-                   <string>Compression type</string>
-                  </property>
-                 </widget>
-                </item>
-                <item>
-                 <widget class="QComboBox" name="wavpackCompressionComboBox" />
-                </item>
-               </layout>
-              </item>
-              <item>
-               <widget class="QCheckBox" name="skipWVXCheckBox" >
-                <property name="toolTip" >
-                 <string>&lt;html>&lt;head>&lt;meta name="qrichtext" 
content="1" />&lt;style type="text/css">
-p, li { white-space: pre-wrap; }
-&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; 
font-weight:400; font-style:normal; text-decoration:none;">
-&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; 
margin-right:0px; -qt-block-indent:0; text-indent:0px;">This option reduces the 
storage of some floating-point data files by up to about 10% by eliminating 
some information that has virtually no effect on the audio data. &lt;/p>
-&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; 
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>
-&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; 
margin-right:0px; -qt-block-indent:0; text-indent:0px;">While this does 
technically make the compression lossy, it retains all the advantages of 
floating point data (&amp;gt;600 dB of dynamic range, no clipping, and 25 bits 
of resolution). &lt;/p>
-&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; 
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>
-&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; 
margin-right:0px; -qt-block-indent:0; text-indent:0px;">This also affects large 
integer compression by limiting the resolution to 24 
bits.&lt;/p>&lt;/body>&lt;/html></string>
-                </property>
-                <property name="text" >
-                 <string>Skip WVX for extra compression 
(semi-lossless)</string>
-                </property>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-           <item>
-            <widget class="QGroupBox" name="oggOptionsGroupBox" >
-             <property name="sizePolicy" >
-              <sizepolicy>
-               <hsizetype>5</hsizetype>
-               <vsizetype>4</vsizetype>
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="title" >
-              <string>Ogg Options</string>
-             </property>
-             <layout class="QGridLayout" >
-              <property name="margin" >
+      <property name="leftMargin" >
                <number>9</number>
               </property>
-              <property name="spacing" >
-               <number>9</number>
-              </property>
-              <item row="2" column="0" >
-               <widget class="QLabel" name="oggBitrateLabel" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>5</hsizetype>
-                  <vsizetype>5</vsizetype>
-                  <horstretch>4</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="text" >
-                 <string>Bitrate</string>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="1" >
-               <widget class="QComboBox" name="oggBitrateComboBox" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>0</vsizetype>
-                  <horstretch>5</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1" >
-               <widget class="QSlider" name="oggQualitySlider" >
-                <property name="layoutDirection" >
-                 <enum>Qt::LeftToRight</enum>
-                </property>
-                <property name="autoFillBackground" >
-                 <bool>false</bool>
-                </property>
-                <property name="minimum" >
-                 <number>0</number>
-                </property>
-                <property name="maximum" >
-                 <number>10</number>
-                </property>
-                <property name="pageStep" >
-                 <number>1</number>
-                </property>
-                <property name="value" >
-                 <number>7</number>
-                </property>
-                <property name="tracking" >
-                 <bool>true</bool>
-                </property>
-                <property name="orientation" >
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="invertedAppearance" >
-                 <bool>false</bool>
-                </property>
-                <property name="invertedControls" >
-                 <bool>false</bool>
-                </property>
-                <property name="tickPosition" >
-                 <enum>QSlider::TicksAbove</enum>
-                </property>
-                <property name="tickInterval" >
-                 <number>1</number>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1" >
-               <widget class="QComboBox" name="oggMethodComboBox" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>0</vsizetype>
-                  <horstretch>5</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0" >
-               <widget class="QLabel" name="oggQualityLabel" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>5</hsizetype>
-                  <vsizetype>5</vsizetype>
-                  <horstretch>4</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="text" >
-                 <string>Quality (Smallest &lt;-> Best)</string>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="0" >
-               <widget class="QLabel" name="label_18" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>5</hsizetype>
-                  <vsizetype>5</vsizetype>
-                  <horstretch>4</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="text" >
-                 <string>Encoding Method</string>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-                </property>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-           <item>
-            <widget class="QGroupBox" name="mp3OptionsGroupBox" >
-             <property name="sizePolicy" >
-              <sizepolicy>
-               <hsizetype>5</hsizetype>
-               <vsizetype>4</vsizetype>
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="title" >
-              <string>MP3 Options</string>
-             </property>
-             <layout class="QGridLayout" >
-              <property name="margin" >
+      <property name="topMargin" >
                <number>9</number>
               </property>
-              <property name="spacing" >
+      <property name="rightMargin" >
                <number>9</number>
               </property>
-              <item row="0" column="0" >
-               <widget class="QLabel" name="label_15" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>5</hsizetype>
-                  <vsizetype>5</vsizetype>
-                  <horstretch>4</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="text" >
-                 <string>Encoding Method</string>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-                </property>
-               </widget>
-              </item>
-              <item row="3" column="0" >
-               <widget class="QLabel" name="mp3MaxBitrateLabel" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>5</hsizetype>
-                  <vsizetype>5</vsizetype>
-                  <horstretch>4</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="text" >
-                 <string>Maximum Bitrate</string>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="0" >
-               <widget class="QLabel" name="mp3MinBitrateLabel" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>5</hsizetype>
-                  <vsizetype>5</vsizetype>
-                  <horstretch>4</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="text" >
-                 <string>Minimum Bitrate</string>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0" >
-               <widget class="QLabel" name="label_16" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>5</hsizetype>
-                  <vsizetype>5</vsizetype>
-                  <horstretch>4</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <property name="text" >
-                 <string>Quality (Fastest &lt;-> Best)</string>
-                </property>
-                <property name="alignment" >
-                 <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
-                </property>
-               </widget>
-              </item>
-              <item row="3" column="1" >
-               <widget class="QComboBox" name="mp3MaxBitrateComboBox" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>0</vsizetype>
-                  <horstretch>5</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-               </widget>
-              </item>
-              <item row="2" column="1" >
-               <widget class="QComboBox" name="mp3MinBitrateComboBox" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>0</vsizetype>
-                  <horstretch>5</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="1" >
-               <widget class="QComboBox" name="mp3MethodComboBox" >
-                <property name="sizePolicy" >
-                 <sizepolicy>
-                  <hsizetype>7</hsizetype>
-                  <vsizetype>0</vsizetype>
-                  <horstretch>5</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="1" >
-               <widget class="QSlider" name="mp3QualitySlider" >
-                <property name="layoutDirection" >
-                 <enum>Qt::LeftToRight</enum>
-                </property>
-                <property name="autoFillBackground" >
-                 <bool>false</bool>
-                </property>
-                <property name="minimum" >
-                 <number>1</number>
-                </property>
-                <property name="maximum" >
+      <property name="bottomMargin" >
                  <number>9</number>
                 </property>
-                <property name="pageStep" >
-                 <number>1</number>
-                </property>
-                <property name="value" >
-                 <number>3</number>
-                </property>
-                <property name="tracking" >
-                 <bool>true</bool>
-                </property>
-                <property name="orientation" >
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="invertedAppearance" >
-                 <bool>true</bool>
-                </property>
-                <property name="invertedControls" >
-                 <bool>false</bool>
-                </property>
-                <property name="tickPosition" >
-                 <enum>QSlider::TicksAbove</enum>
-                </property>
-                <property name="tickInterval" >
-                 <number>1</number>
-                </property>
-               </widget>
-              </item>
-             </layout>
-            </widget>
-           </item>
-          </layout>
-         </item>
-        </layout>
-       </widget>
-      </item>
       <item>
-       <widget class="QGroupBox" name="groupBox" >
-        <property name="sizePolicy" >
-         <sizepolicy>
-          <hsizetype>5</hsizetype>
-          <vsizetype>5</vsizetype>
-          <horstretch>0</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
-        </property>
-        <property name="title" >
-         <string>Sample Rate</string>
-        </property>
         <layout class="QHBoxLayout" >
-         <property name="margin" >
-          <number>9</number>
-         </property>
          <property name="spacing" >
-          <number>12</number>
+         <number>6</number>
          </property>
-         <item>
-          <layout class="QHBoxLayout" >
-           <property name="margin" >
+        <property name="leftMargin" >
             <number>0</number>
            </property>
-           <property name="spacing" >
-            <number>12</number>
-           </property>
-           <item>
-            <widget class="QLabel" name="label_7" >
-             <property name="sizePolicy" >
-              <sizepolicy>
-               <hsizetype>4</hsizetype>
-               <vsizetype>5</vsizetype>
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="text" >
-              <string>Sample Rate</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QComboBox" name="sampleRateComboBox" >
-             <property name="sizePolicy" >
-              <sizepolicy>
-               <hsizetype>5</hsizetype>
-               <vsizetype>0</vsizetype>
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="sizeAdjustPolicy" >
-              <enum>QComboBox::AdjustToContents</enum>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QLabel" name="label_8" >
-             <property name="sizePolicy" >
-              <sizepolicy>
-               <hsizetype>4</hsizetype>
-               <vsizetype>5</vsizetype>
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-             <property name="text" >
-              <string>Conversion quality</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QComboBox" name="resampleQualityComboBox" >
-             <property name="sizePolicy" >
-              <sizepolicy>
-               <hsizetype>5</hsizetype>
-               <vsizetype>0</vsizetype>
-               <horstretch>0</horstretch>
-               <verstretch>0</verstretch>
-              </sizepolicy>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer>
-             <property name="orientation" >
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" >
-              <size>
-               <width>0</width>
-               <height>40</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-          </layout>
-         </item>
-        </layout>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="ExportStateGroupBox" >
-     <property name="sizePolicy" >
-      <sizepolicy>
-       <hsizetype>5</hsizetype>
-       <vsizetype>4</vsizetype>
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <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 name="topMargin" >
+         <number>0</number>
       </property>
-      <item>
-       <layout class="QHBoxLayout" >
-        <property name="margin" >
+        <property name="rightMargin" >
          <number>0</number>
         </property>
-        <property name="spacing" >
-         <number>6</number>
+        <property name="bottomMargin" >
+         <number>0</number>
         </property>
         <item>
          <widget class="QLabel" name="currentProcessingSheetName" >
@@ -857,12 +246,21 @@
    </item>
    <item>
     <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
      <property name="spacing" >
       <number>6</number>
      </property>
+     <property name="leftMargin" >
+      <number>0</number>
+     </property>
+     <property name="topMargin" >
+      <number>0</number>
+     </property>
+     <property name="rightMargin" >
+      <number>0</number>
+     </property>
+     <property name="bottomMargin" >
+      <number>0</number>
+     </property>
      <item>
       <spacer>
        <property name="orientation" >

Index: ui/ExportFormatOptionsWidget.ui
===================================================================
RCS file: ui/ExportFormatOptionsWidget.ui
diff -N ui/ExportFormatOptionsWidget.ui
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ ui/ExportFormatOptionsWidget.ui     22 May 2008 14:54:24 -0000      1.1
@@ -0,0 +1,773 @@
+<ui version="4.0" >
+ <class>ExportFormatOptionsWidget</class>
+ <widget class="QWidget" name="ExportFormatOptionsWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>866</width>
+    <height>414</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>Export Format Options</string>
+  </property>
+  <layout class="QVBoxLayout" >
+   <property name="leftMargin" >
+    <number>0</number>
+   </property>
+   <property name="topMargin" >
+    <number>0</number>
+   </property>
+   <property name="rightMargin" >
+    <number>0</number>
+   </property>
+   <property name="bottomMargin" >
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QGroupBox" name="exportSpecificationsGroupBox" >
+     <property name="sizePolicy" >
+      <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Format Options</string>
+     </property>
+     <layout class="QVBoxLayout" >
+      <property name="spacing" >
+       <number>9</number>
+      </property>
+      <property name="leftMargin" >
+       <number>9</number>
+      </property>
+      <property name="topMargin" >
+       <number>9</number>
+      </property>
+      <property name="rightMargin" >
+       <number>9</number>
+      </property>
+      <property name="bottomMargin" >
+       <number>9</number>
+      </property>
+      <item>
+       <widget class="QGroupBox" name="groupBox_2" >
+        <property name="title" >
+         <string>Encoding</string>
+        </property>
+        <layout class="QVBoxLayout" >
+         <property name="spacing" >
+          <number>12</number>
+         </property>
+         <property name="leftMargin" >
+          <number>9</number>
+         </property>
+         <property name="topMargin" >
+          <number>9</number>
+         </property>
+         <property name="rightMargin" >
+          <number>9</number>
+         </property>
+         <property name="bottomMargin" >
+          <number>9</number>
+         </property>
+         <item>
+          <layout class="QHBoxLayout" >
+           <property name="spacing" >
+            <number>18</number>
+           </property>
+           <property name="leftMargin" >
+            <number>0</number>
+           </property>
+           <property name="topMargin" >
+            <number>0</number>
+           </property>
+           <property name="rightMargin" >
+            <number>0</number>
+           </property>
+           <property name="bottomMargin" >
+            <number>0</number>
+           </property>
+           <item>
+            <layout class="QVBoxLayout" >
+             <property name="spacing" >
+              <number>6</number>
+             </property>
+             <property name="leftMargin" >
+              <number>0</number>
+             </property>
+             <property name="topMargin" >
+              <number>0</number>
+             </property>
+             <property name="rightMargin" >
+              <number>0</number>
+             </property>
+             <property name="bottomMargin" >
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QLabel" name="label_2" >
+               <property name="text" >
+                <string>File Type</string>
+               </property>
+               <property name="alignment" >
+                <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QLabel" name="label_4" >
+               <property name="text" >
+                <string>Channels</string>
+               </property>
+               <property name="alignment" >
+                <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+               </property>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item>
+            <layout class="QVBoxLayout" >
+             <property name="spacing" >
+              <number>6</number>
+             </property>
+             <property name="leftMargin" >
+              <number>0</number>
+             </property>
+             <property name="topMargin" >
+              <number>0</number>
+             </property>
+             <property name="rightMargin" >
+              <number>0</number>
+             </property>
+             <property name="bottomMargin" >
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QComboBox" name="audioTypeComboBox" >
+               <property name="sizePolicy" >
+                <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+                 <horstretch>4</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <widget class="QComboBox" name="channelComboBox" />
+             </item>
+            </layout>
+           </item>
+           <item>
+            <layout class="QVBoxLayout" >
+             <property name="spacing" >
+              <number>6</number>
+             </property>
+             <property name="leftMargin" >
+              <number>0</number>
+             </property>
+             <property name="topMargin" >
+              <number>0</number>
+             </property>
+             <property name="rightMargin" >
+              <number>0</number>
+             </property>
+             <property name="bottomMargin" >
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QCheckBox" name="normalizeCheckBox" >
+               <property name="sizePolicy" >
+                <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+                 <horstretch>0</horstretch>
+                 <verstretch>0</verstretch>
+                </sizepolicy>
+               </property>
+               <property name="text" >
+                <string>Normalize Audio</string>
+               </property>
+              </widget>
+             </item>
+             <item>
+              <layout class="QHBoxLayout" >
+               <property name="spacing" >
+                <number>6</number>
+               </property>
+               <property name="leftMargin" >
+                <number>0</number>
+               </property>
+               <property name="topMargin" >
+                <number>0</number>
+               </property>
+               <property name="rightMargin" >
+                <number>0</number>
+               </property>
+               <property name="bottomMargin" >
+                <number>0</number>
+               </property>
+               <item>
+                <widget class="QLabel" name="label_3" >
+                 <property name="sizePolicy" >
+                  <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                   <horstretch>0</horstretch>
+                   <verstretch>0</verstretch>
+                  </sizepolicy>
+                 </property>
+                 <property name="text" >
+                  <string>Bitdepth</string>
+                 </property>
+                 <property name="alignment" >
+                  <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+                 </property>
+                </widget>
+               </item>
+               <item>
+                <widget class="QComboBox" name="bitdepthComboBox" />
+               </item>
+              </layout>
+             </item>
+            </layout>
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" >
+              <size>
+               <width>0</width>
+               <height>20</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+         <item>
+          <layout class="QHBoxLayout" >
+           <property name="spacing" >
+            <number>6</number>
+           </property>
+           <property name="leftMargin" >
+            <number>0</number>
+           </property>
+           <property name="topMargin" >
+            <number>0</number>
+           </property>
+           <property name="rightMargin" >
+            <number>0</number>
+           </property>
+           <property name="bottomMargin" >
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QGroupBox" name="wacpackGroupBox" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="title" >
+              <string>WavPack options (lossless compression)</string>
+             </property>
+             <layout class="QVBoxLayout" >
+              <property name="spacing" >
+               <number>6</number>
+              </property>
+              <property name="leftMargin" >
+               <number>9</number>
+              </property>
+              <property name="topMargin" >
+               <number>9</number>
+              </property>
+              <property name="rightMargin" >
+               <number>9</number>
+              </property>
+              <property name="bottomMargin" >
+               <number>9</number>
+              </property>
+              <item>
+               <layout class="QHBoxLayout" >
+                <property name="spacing" >
+                 <number>6</number>
+                </property>
+                <property name="leftMargin" >
+                 <number>0</number>
+                </property>
+                <property name="topMargin" >
+                 <number>0</number>
+                </property>
+                <property name="rightMargin" >
+                 <number>0</number>
+                </property>
+                <property name="bottomMargin" >
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QLabel" name="label_17" >
+                  <property name="text" >
+                   <string>Compression type</string>
+                  </property>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QComboBox" name="wavpackCompressionComboBox" />
+                </item>
+               </layout>
+              </item>
+              <item>
+               <widget class="QCheckBox" name="skipWVXCheckBox" >
+                <property name="toolTip" >
+                 <string>&lt;html>&lt;head>&lt;meta name="qrichtext" 
content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; 
font-weight:400; font-style:normal; text-decoration:none;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; 
margin-right:0px; -qt-block-indent:0; text-indent:0px;">This option reduces the 
storage of some floating-point data files by up to about 10% by eliminating 
some information that has virtually no effect on the audio data. &lt;/p>
+&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; 
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; 
margin-right:0px; -qt-block-indent:0; text-indent:0px;">While this does 
technically make the compression lossy, it retains all the advantages of 
floating point data (&amp;gt;600 dB of dynamic range, no clipping, and 25 bits 
of resolution). &lt;/p>
+&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; 
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; 
margin-right:0px; -qt-block-indent:0; text-indent:0px;">This also affects large 
integer compression by limiting the resolution to 24 
bits.&lt;/p>&lt;/body>&lt;/html></string>
+                </property>
+                <property name="text" >
+                 <string>Skip WVX for extra compression 
(semi-lossless)</string>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+           <item>
+            <widget class="QGroupBox" name="oggOptionsGroupBox" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="title" >
+              <string>Ogg Options</string>
+             </property>
+             <layout class="QGridLayout" >
+              <property name="leftMargin" >
+               <number>9</number>
+              </property>
+              <property name="topMargin" >
+               <number>9</number>
+              </property>
+              <property name="rightMargin" >
+               <number>9</number>
+              </property>
+              <property name="bottomMargin" >
+               <number>9</number>
+              </property>
+              <property name="horizontalSpacing" >
+               <number>9</number>
+              </property>
+              <property name="verticalSpacing" >
+               <number>9</number>
+              </property>
+              <item row="2" column="0" >
+               <widget class="QLabel" name="oggBitrateLabel" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                  <horstretch>4</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text" >
+                 <string>Bitrate</string>
+                </property>
+                <property name="alignment" >
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="1" >
+               <widget class="QComboBox" name="oggBitrateComboBox" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="1" >
+               <widget class="QSlider" name="oggQualitySlider" >
+                <property name="layoutDirection" >
+                 <enum>Qt::LeftToRight</enum>
+                </property>
+                <property name="autoFillBackground" >
+                 <bool>false</bool>
+                </property>
+                <property name="minimum" >
+                 <number>0</number>
+                </property>
+                <property name="maximum" >
+                 <number>10</number>
+                </property>
+                <property name="pageStep" >
+                 <number>1</number>
+                </property>
+                <property name="value" >
+                 <number>7</number>
+                </property>
+                <property name="tracking" >
+                 <bool>true</bool>
+                </property>
+                <property name="orientation" >
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="invertedAppearance" >
+                 <bool>false</bool>
+                </property>
+                <property name="invertedControls" >
+                 <bool>false</bool>
+                </property>
+                <property name="tickPosition" >
+                 <enum>QSlider::TicksAbove</enum>
+                </property>
+                <property name="tickInterval" >
+                 <number>1</number>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="1" >
+               <widget class="QComboBox" name="oggMethodComboBox" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0" >
+               <widget class="QLabel" name="oggQualityLabel" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                  <horstretch>4</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text" >
+                 <string>Quality (Smallest &lt;-> Best)</string>
+                </property>
+                <property name="alignment" >
+                 <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="0" >
+               <widget class="QLabel" name="label_18" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                  <horstretch>4</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text" >
+                 <string>Encoding Method</string>
+                </property>
+                <property name="alignment" >
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+           <item>
+            <widget class="QGroupBox" name="mp3OptionsGroupBox" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Maximum" hsizetype="Preferred" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="title" >
+              <string>MP3 Options</string>
+             </property>
+             <layout class="QGridLayout" >
+              <property name="leftMargin" >
+               <number>9</number>
+              </property>
+              <property name="topMargin" >
+               <number>9</number>
+              </property>
+              <property name="rightMargin" >
+               <number>9</number>
+              </property>
+              <property name="bottomMargin" >
+               <number>9</number>
+              </property>
+              <property name="horizontalSpacing" >
+               <number>9</number>
+              </property>
+              <property name="verticalSpacing" >
+               <number>9</number>
+              </property>
+              <item row="0" column="0" >
+               <widget class="QLabel" name="label_15" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                  <horstretch>4</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text" >
+                 <string>Encoding Method</string>
+                </property>
+                <property name="alignment" >
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="3" column="0" >
+               <widget class="QLabel" name="mp3MaxBitrateLabel" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                  <horstretch>4</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text" >
+                 <string>Maximum Bitrate</string>
+                </property>
+                <property name="alignment" >
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="0" >
+               <widget class="QLabel" name="mp3MinBitrateLabel" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                  <horstretch>4</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text" >
+                 <string>Minimum Bitrate</string>
+                </property>
+                <property name="alignment" >
+                 <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="0" >
+               <widget class="QLabel" name="label_16" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+                  <horstretch>4</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+                <property name="text" >
+                 <string>Quality (Fastest &lt;-> Best)</string>
+                </property>
+                <property name="alignment" >
+                 <set>Qt::AlignBottom|Qt::AlignRight|Qt::AlignTrailing</set>
+                </property>
+               </widget>
+              </item>
+              <item row="3" column="1" >
+               <widget class="QComboBox" name="mp3MaxBitrateComboBox" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+               </widget>
+              </item>
+              <item row="2" column="1" >
+               <widget class="QComboBox" name="mp3MinBitrateComboBox" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+               </widget>
+              </item>
+              <item row="0" column="1" >
+               <widget class="QComboBox" name="mp3MethodComboBox" >
+                <property name="sizePolicy" >
+                 <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
+                  <horstretch>5</horstretch>
+                  <verstretch>0</verstretch>
+                 </sizepolicy>
+                </property>
+               </widget>
+              </item>
+              <item row="1" column="1" >
+               <widget class="QSlider" name="mp3QualitySlider" >
+                <property name="layoutDirection" >
+                 <enum>Qt::LeftToRight</enum>
+                </property>
+                <property name="autoFillBackground" >
+                 <bool>false</bool>
+                </property>
+                <property name="minimum" >
+                 <number>1</number>
+                </property>
+                <property name="maximum" >
+                 <number>9</number>
+                </property>
+                <property name="pageStep" >
+                 <number>1</number>
+                </property>
+                <property name="value" >
+                 <number>3</number>
+                </property>
+                <property name="tracking" >
+                 <bool>true</bool>
+                </property>
+                <property name="orientation" >
+                 <enum>Qt::Horizontal</enum>
+                </property>
+                <property name="invertedAppearance" >
+                 <bool>true</bool>
+                </property>
+                <property name="invertedControls" >
+                 <bool>false</bool>
+                </property>
+                <property name="tickPosition" >
+                 <enum>QSlider::TicksAbove</enum>
+                </property>
+                <property name="tickInterval" >
+                 <number>1</number>
+                </property>
+               </widget>
+              </item>
+             </layout>
+            </widget>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="groupBox" >
+        <property name="sizePolicy" >
+         <sizepolicy vsizetype="Preferred" hsizetype="Preferred" >
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="title" >
+         <string>Sample Rate</string>
+        </property>
+        <layout class="QHBoxLayout" >
+         <property name="spacing" >
+          <number>12</number>
+         </property>
+         <property name="leftMargin" >
+          <number>9</number>
+         </property>
+         <property name="topMargin" >
+          <number>9</number>
+         </property>
+         <property name="rightMargin" >
+          <number>9</number>
+         </property>
+         <property name="bottomMargin" >
+          <number>9</number>
+         </property>
+         <item>
+          <layout class="QHBoxLayout" >
+           <property name="spacing" >
+            <number>12</number>
+           </property>
+           <property name="leftMargin" >
+            <number>0</number>
+           </property>
+           <property name="topMargin" >
+            <number>0</number>
+           </property>
+           <property name="rightMargin" >
+            <number>0</number>
+           </property>
+           <property name="bottomMargin" >
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QLabel" name="label_7" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="text" >
+              <string>Sample Rate</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="sampleRateComboBox" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="sizeAdjustPolicy" >
+              <enum>QComboBox::AdjustToContents</enum>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QLabel" name="label_8" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Preferred" hsizetype="Maximum" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+             <property name="text" >
+              <string>Conversion quality</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QComboBox" name="resampleQualityComboBox" >
+             <property name="sizePolicy" >
+              <sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+              </sizepolicy>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <spacer>
+             <property name="orientation" >
+              <enum>Qt::Horizontal</enum>
+             </property>
+             <property name="sizeHint" >
+              <size>
+               <width>0</width>
+               <height>40</height>
+              </size>
+             </property>
+            </spacer>
+           </item>
+          </layout>
+         </item>
+        </layout>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

Index: widgets/ExportFormatOptionsWidget.cpp
===================================================================
RCS file: widgets/ExportFormatOptionsWidget.cpp
diff -N widgets/ExportFormatOptionsWidget.cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ widgets/ExportFormatOptionsWidget.cpp       22 May 2008 14:54:24 -0000      
1.1
@@ -0,0 +1,341 @@
+/**
+    Copyright (C) 2005-2007 Remon Sijrier 
+ 
+    This file is part of Traverso
+ 
+    Traverso is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+ 
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
+
+*/
+
+#include "ExportFormatOptionsWidget.h"
+#include "ui_ExportFormatOptionsWidget.h"
+
+#include "AudioDevice.h"
+#include "Config.h"
+#include "Export.h"
+
+RELAYTOOL_WAVPACK;
+RELAYTOOL_FLAC;
+RELAYTOOL_MP3LAME;
+RELAYTOOL_VORBISENC;
+
+// Always put me below _all_ includes, this is needed
+// in case we run with memory leak detection enabled!
+#include "Debugger.h"
+
+
+ExportFormatOptionsWidget::ExportFormatOptionsWidget( QWidget * parent )
+       : QWidget(parent)
+{
+        setupUi(this);
+
+       //bitdepthComboBox->addItem("8", 8);
+       bitdepthComboBox->addItem("16", 16);
+       bitdepthComboBox->addItem("24", 24);
+       bitdepthComboBox->addItem("32", 32);
+       bitdepthComboBox->addItem("32 (float)", 1);
+       
+       channelComboBox->addItem("Mono", 1);
+       channelComboBox->addItem("Stereo", 2);
+       
+       sampleRateComboBox->addItem("8.000 Hz", 8000);
+       sampleRateComboBox->addItem("11.025 Hz", 11025);
+       sampleRateComboBox->addItem("22.050 Hz", 22050);
+       sampleRateComboBox->addItem("44.100 Hz", 44100);
+       sampleRateComboBox->addItem("48.000 Hz", 48000);
+       sampleRateComboBox->addItem("88.200 Hz", 88200);
+       sampleRateComboBox->addItem("96.000 Hz", 96000);
+       
+       resampleQualityComboBox->addItem(tr("Best"), 0); // Best
+       resampleQualityComboBox->addItem(tr("High"), 1); // Medium
+       resampleQualityComboBox->addItem(tr("Medium"), 2); // Fastest
+       resampleQualityComboBox->addItem(tr("Fast"), 4); // Linear (Should we 
use ZERO_HOLD(3) instead?)
+       
+       audioTypeComboBox->addItem("WAV", "wav");
+       audioTypeComboBox->addItem("AIFF", "aiff");
+       if (libFLAC_is_present) {
+               audioTypeComboBox->addItem("FLAC", "flac");
+       }
+       if (libwavpack_is_present) {
+               audioTypeComboBox->addItem("WAVPACK", "wavpack");
+       }
+#if defined MP3_ENCODE_SUPPORT
+       if (libmp3lame_is_present) {
+               audioTypeComboBox->addItem("MP3", "mp3");
+       }
+#endif
+       if (libvorbisenc_is_present) {
+               audioTypeComboBox->addItem("OGG", "ogg");
+       }
+       
+       channelComboBox->setCurrentIndex(channelComboBox->findData(2));
+       
+       int rateIndex = 
sampleRateComboBox->findData(audiodevice().get_sample_rate());
+       sampleRateComboBox->setCurrentIndex(rateIndex >= 0 ? rateIndex : 3);
+       
+       connect(audioTypeComboBox, SIGNAL(currentIndexChanged(int)), this, 
SLOT(audio_type_changed(int)));
+       
+       QString option;
+       int index;
+       bool checked;
+       
+       // Mp3 Options Setup
+       mp3MethodComboBox->addItem("Constant Bitrate", "cbr");
+       mp3MethodComboBox->addItem("Average Bitrate", "abr");
+       mp3MethodComboBox->addItem("Variable Bitrate", "vbr-new");
+       
+       mp3MinBitrateComboBox->addItem("32 Kbps - recommended", "32");
+       mp3MinBitrateComboBox->addItem("64 Kbps", "64");
+       mp3MinBitrateComboBox->addItem("96 Kbps", "96");
+       mp3MinBitrateComboBox->addItem("128 Kbps", "128");
+       mp3MinBitrateComboBox->addItem("160 Kbps", "160");
+       mp3MinBitrateComboBox->addItem("192 Kbps", "192");
+       mp3MinBitrateComboBox->addItem("256 Kbps", "256");
+       mp3MinBitrateComboBox->addItem("320 Kbps", "320");
+       
+       mp3MaxBitrateComboBox->addItem("32 Kbps", "32");
+       mp3MaxBitrateComboBox->addItem("64 Kbps", "64");
+       mp3MaxBitrateComboBox->addItem("96 Kbps", "96");
+       mp3MaxBitrateComboBox->addItem("128 Kbps", "128");
+       mp3MaxBitrateComboBox->addItem("160 Kbps", "160");
+       mp3MaxBitrateComboBox->addItem("192 Kbps", "192");
+       mp3MaxBitrateComboBox->addItem("256 Kbps", "256");
+       mp3MaxBitrateComboBox->addItem("320 Kbps", "320");
+       
+       // First set to VBR, so that if we default to something else, it will 
trigger mp3_method_changed()
+       index = mp3MethodComboBox->findData("vbr-new");
+       mp3MethodComboBox->setCurrentIndex(index >=0 ? index : 0);
+       connect(mp3MethodComboBox, SIGNAL(currentIndexChanged(int)), this, 
SLOT(mp3_method_changed(int)));
+       
+       option = config().get_property("ExportFormatOptionsWidget", 
"mp3MethodComboBox", "vbr-new").toString();
+       index = mp3MethodComboBox->findData(option);
+       mp3MethodComboBox->setCurrentIndex(index >=0 ? index : 0);
+       option = config().get_property("ExportFormatOptionsWidget", 
"mp3MinBitrateComboBox", "32").toString();
+       index = mp3MinBitrateComboBox->findData(option);
+       mp3MinBitrateComboBox->setCurrentIndex(index >=0 ? index : 0);
+       option = config().get_property("ExportFormatOptionsWidget", 
"mp3MaxBitrateComboBox", "192").toString();
+       index = mp3MaxBitrateComboBox->findData(option);
+       mp3MaxBitrateComboBox->setCurrentIndex(index >=0 ? index : 0);
+       
+       mp3OptionsGroupBox->hide();
+       
+       
+       // Ogg Options Setup
+       oggMethodComboBox->addItem("Constant Bitrate", "manual");
+       oggMethodComboBox->addItem("Variable Bitrate", "vbr");
+       
+       oggBitrateComboBox->addItem("45 Kbps", "45");
+       oggBitrateComboBox->addItem("64 Kbps", "64");
+       oggBitrateComboBox->addItem("96 Kbps", "96");
+       oggBitrateComboBox->addItem("112 Kbps", "112");
+       oggBitrateComboBox->addItem("128 Kbps", "128");
+       oggBitrateComboBox->addItem("160 Kbps", "160");
+       oggBitrateComboBox->addItem("192 Kbps", "192");
+       oggBitrateComboBox->addItem("224 Kbps", "224");
+       oggBitrateComboBox->addItem("256 Kbps", "256");
+       oggBitrateComboBox->addItem("320 Kbps", "320");
+       oggBitrateComboBox->addItem("400 Kbps", "400");
+       
+       // First set to VBR, so that if we default to something else, it will 
trigger ogg_method_changed()
+       index = oggMethodComboBox->findData("vbr");
+       oggMethodComboBox->setCurrentIndex(index >=0 ? index : 0);
+       connect(oggMethodComboBox, SIGNAL(currentIndexChanged(int)), this, 
SLOT(ogg_method_changed(int)));
+       
+       option = config().get_property("ExportFormatOptionsWidget", 
"oggMethodComboBox", "vbr").toString();
+       index = oggMethodComboBox->findData(option);
+       oggMethodComboBox->setCurrentIndex(index >=0 ? index : 0);
+       ogg_method_changed(index >=0 ? index : 0);
+       option = config().get_property("ExportFormatOptionsWidget", 
"oggBitrateComboBox", "160").toString();
+       index = oggBitrateComboBox->findData(option);
+       oggBitrateComboBox->setCurrentIndex(index >= 0 ? index : 0);
+       
+       oggOptionsGroupBox->hide();
+       
+       
+       // WavPack option
+       wacpackGroupBox->hide();
+       wavpackCompressionComboBox->addItem("Very high", "very_high");
+       wavpackCompressionComboBox->addItem("High", "high");
+       wavpackCompressionComboBox->addItem("Fast", "fast");
+       
+       option = config().get_property("ExportFormatOptionsWidget", 
"wavpackCompressionComboBox", "very_high").toString();
+       index = wavpackCompressionComboBox->findData(option);
+       wavpackCompressionComboBox->setCurrentIndex(index >= 0 ? index : 0);
+       checked = config().get_property("ExportFormatOptionsWidget", 
"skipWVXCheckBox", "false").toBool();
+       skipWVXCheckBox->setChecked(checked);
+
+       
+       option = config().get_property("ExportFormatOptionsWidget", 
"audioTypeComboBox", "wav").toString();
+       index = audioTypeComboBox->findData(option);
+       audioTypeComboBox->setCurrentIndex(index >= 0 ? index : 0);
+       
+       checked = config().get_property("ExportFormatOptionsWidget", 
"normalizeCheckBox", "false").toBool();
+       normalizeCheckBox->setChecked(checked);
+       
+       index = config().get_property("ExportFormatOptionsWidget", 
"resampleQualityComboBox", "1").toInt();
+       index = resampleQualityComboBox->findData(index);
+       resampleQualityComboBox->setCurrentIndex(index >= 0 ? index : 1);
+       
+       option = config().get_property("ExportFormatOptionsWidget", 
"bitdepthComboBox", "16").toString();
+       index = bitdepthComboBox->findData(option);
+       bitdepthComboBox->setCurrentIndex(index >= 0 ? index : 0);
+       setMaximumSize(400, 250);
+}
+
+
+ExportFormatOptionsWidget::~ ExportFormatOptionsWidget( )
+{
+       config().set_property("ExportDialog", "mp3MethodComboBox", 
mp3MethodComboBox->itemData(mp3MethodComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "mp3MinBitrateComboBox", 
mp3MinBitrateComboBox->itemData(mp3MinBitrateComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "mp3MaxBitrateComboBox", 
mp3MaxBitrateComboBox->itemData(mp3MaxBitrateComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "oggMethodComboBox", 
oggMethodComboBox->itemData(oggMethodComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "oggBitrateComboBox", 
oggBitrateComboBox->itemData(oggBitrateComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "wavpackCompressionComboBox", 
wavpackCompressionComboBox->itemData(wavpackCompressionComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "audioTypeComboBox", 
audioTypeComboBox->itemData(audioTypeComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "normalizeCheckBox", 
normalizeCheckBox->isChecked());
+       config().set_property("ExportDialog", "skipWVXCheckBox", 
skipWVXCheckBox->isChecked());
+       config().set_property("ExportDialog", "resampleQualityComboBox", 
resampleQualityComboBox->itemData(resampleQualityComboBox->currentIndex()).toString());
+       config().set_property("ExportDialog", "bitdepthComboBox", 
bitdepthComboBox->itemData(bitdepthComboBox->currentIndex()).toString());
+}
+
+
+void ExportFormatOptionsWidget::audio_type_changed(int index)
+{
+       QString newType = audioTypeComboBox->itemData(index).toString();
+       
+       if (newType == "mp3") {
+               oggOptionsGroupBox->hide();
+               wacpackGroupBox->hide();
+               mp3OptionsGroupBox->show();
+       }
+       else if (newType == "ogg") {
+               mp3OptionsGroupBox->hide();
+               wacpackGroupBox->hide();
+               oggOptionsGroupBox->show();
+       }
+       else if (newType == "wavpack") {
+               mp3OptionsGroupBox->hide();
+               oggOptionsGroupBox->hide();
+               wacpackGroupBox->show();
+       }
+       else {
+               mp3OptionsGroupBox->hide();
+               wacpackGroupBox->hide();
+               oggOptionsGroupBox->hide();
+       }
+       
+       if (newType == "mp3" || newType == "ogg" || newType == "flac") {
+               
bitdepthComboBox->setCurrentIndex(bitdepthComboBox->findData(16));
+               bitdepthComboBox->setDisabled(true);
+       }
+       else {
+               bitdepthComboBox->setEnabled(true);
+       }
+}
+
+
+void ExportFormatOptionsWidget::mp3_method_changed(int index)
+{
+       QString method = mp3MethodComboBox->itemData(index).toString();
+       
+       if (method == "cbr") {
+               mp3MinBitrateComboBox->hide();
+               mp3MinBitrateLabel->hide();
+               mp3MaxBitrateLabel->setText(tr("Bitrate"));
+       }
+       else if (method == "abr") {
+               mp3MinBitrateComboBox->hide();
+               mp3MinBitrateLabel->hide();
+               mp3MaxBitrateLabel->setText(tr("Average Bitrate"));
+       }
+       else {
+//             VBR new or VBR old
+               mp3MinBitrateComboBox->show();
+               mp3MinBitrateLabel->show();
+               mp3MaxBitrateLabel->setText(tr("Maximum Bitrate"));
+       }
+}
+
+
+void ExportFormatOptionsWidget::ogg_method_changed(int index)
+{
+       QString method = oggMethodComboBox->itemData(index).toString();
+       
+       if (method == "manual") {
+               oggQualitySlider->hide();
+               oggQualityLabel->hide();
+               oggBitrateComboBox->show();
+               oggBitrateLabel->show();
+       }
+       else {
+               // VBR
+               oggBitrateComboBox->hide();
+               oggBitrateLabel->hide();
+               oggQualitySlider->show();
+               oggQualityLabel->show();
+       }
+}
+
+void ExportFormatOptionsWidget::get_format_options(ExportSpecification * spec)
+{
+       QString audioType = 
audioTypeComboBox->itemData(audioTypeComboBox->currentIndex()).toString();
+       if (audioType == "wav") {
+               spec->writerType = "sndfile";
+               spec->extraFormat["filetype"] = "wav";
+       }
+       else if (audioType == "aiff") {
+               spec->writerType = "sndfile";
+               spec->extraFormat["filetype"] = "aiff";
+       }
+       else if (audioType == "flac") {
+               spec->writerType = "flac";
+       }
+       else if (audioType == "wavpack") {
+               spec->writerType = "wavpack";
+               spec->extraFormat["quality"] = 
wavpackCompressionComboBox->itemData(wavpackCompressionComboBox->currentIndex()).toString();
+               spec->extraFormat["skip_wvx"] = skipWVXCheckBox->isChecked() ? 
"true" : "false";
+       }
+       else if (audioType == "mp3") {
+               spec->writerType = "lame";
+               spec->extraFormat["method"] = 
mp3MethodComboBox->itemData(mp3MethodComboBox->currentIndex()).toString();
+               spec->extraFormat["minBitrate"] = 
mp3MinBitrateComboBox->itemData(mp3MinBitrateComboBox->currentIndex()).toString();
+               spec->extraFormat["maxBitrate"] = 
mp3MaxBitrateComboBox->itemData(mp3MaxBitrateComboBox->currentIndex()).toString();
+               spec->extraFormat["quality"] = 
QString::number(mp3QualitySlider->value());
+       }
+       else if (audioType == "ogg") {
+               spec->writerType = "vorbis";
+               spec->extraFormat["mode"] = 
oggMethodComboBox->itemData(oggMethodComboBox->currentIndex()).toString();
+               if (spec->extraFormat["mode"] == "manual") {
+                       spec->extraFormat["bitrateNominal"] = 
oggBitrateComboBox->itemData(oggBitrateComboBox->currentIndex()).toString();
+                       spec->extraFormat["bitrateUpper"] = 
oggBitrateComboBox->itemData(oggBitrateComboBox->currentIndex()).toString();
+               }
+               else {
+                       spec->extraFormat["vbrQuality"] = 
QString::number(oggQualitySlider->value());
+               }
+       }
+       
+       spec->data_width = 
bitdepthComboBox->itemData(bitdepthComboBox->currentIndex()).toInt();
+       spec->channels = 
channelComboBox->itemData(channelComboBox->currentIndex()).toInt();
+       spec->sample_rate = 
sampleRateComboBox->itemData(sampleRateComboBox->currentIndex()).toInt();
+       spec->src_quality = 
resampleQualityComboBox->itemData(resampleQualityComboBox->currentIndex()).toInt();
+
+
+       spec->normalize = normalizeCheckBox->isChecked();
+       
+       //TODO Make a ComboBox for this one too!
+       spec->dither_type = GDitherTri;
+
+
+}

Index: widgets/ExportFormatOptionsWidget.h
===================================================================
RCS file: widgets/ExportFormatOptionsWidget.h
diff -N widgets/ExportFormatOptionsWidget.h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ widgets/ExportFormatOptionsWidget.h 22 May 2008 14:54:24 -0000      1.1
@@ -0,0 +1,55 @@
+/*
+    Copyright (C) 2008 Remon Sijrier 
+ 
+    This file is part of Traverso
+ 
+    Traverso is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+ 
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
+ 
+*/
+
+#ifndef EXPORT_FORMAT_OPTIONS_WIDGET_H
+#define EXPORT_FORMAT_OPTIONS_WIDGET_H
+
+#include "ui_ExportFormatOptionsWidget.h"
+
+#include <QWidget>
+
+class Project;
+class Sheet;
+struct ExportSpecification;
+
+class ExportFormatOptionsWidget : public QWidget, protected 
Ui::ExportFormatOptionsWidget
+{
+       Q_OBJECT
+
+public:
+       ExportFormatOptionsWidget(QWidget* parent = 0);
+       ~ExportFormatOptionsWidget();
+       
+       void get_format_options(ExportSpecification* spec);
+
+
+private slots:
+       void audio_type_changed(int index);
+       void mp3_method_changed(int index);
+       void ogg_method_changed(int index);
+};
+
+#endif
+
+//eof
+
+
+ 




reply via email to

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