changeset 456:035d62c4cddf

* Permit viewing (though not editing) colour 3d plot layer data in the spreadsheet data viewer dialog * Add somewhat simplistic RDF export for layers * Fix display of peak frequencies in spectrum layer * Fix (I hope) sizing of plugin parameter dialog
author Chris Cannam
date Tue, 02 Dec 2008 17:17:25 +0000
parents 747a58d45d56
children e75f15c9ea11
files layer/Colour3DPlotLayer.cpp layer/SpectrumLayer.cpp view/Pane.cpp view/View.cpp widgets/FileFinder.cpp widgets/PluginParameterDialog.cpp widgets/PluginParameterDialog.h widgets/PropertyBox.cpp
diffstat 8 files changed, 70 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/layer/Colour3DPlotLayer.cpp	Mon Dec 01 16:45:17 2008 +0000
+++ b/layer/Colour3DPlotLayer.cpp	Tue Dec 02 17:17:25 2008 +0000
@@ -553,12 +553,20 @@
     if (symin < 0) symin = 0;
     if (symax > sh) symax = sh;
 
+    float binHeight = float(v->height()) / (symax - symin);
+
+    paint.save();
+
+    QFont tf = paint.font();
+    if (paint.fontMetrics().height() >= binHeight) {
+        tf.setPixelSize(binHeight > 4 ? binHeight - 2 : 2);
+        paint.setFont(tf);
+    }
+
     int count = v->height() / paint.fontMetrics().height();
     int step = (symax - symin) / count;
     if (step == 0) step = 1;
 
-    float binHeight = float(v->height()) / (symax - symin);
-
     for (size_t i = symin; i < symax; ++i) {
 
         size_t idx = i;
@@ -578,6 +586,8 @@
 
 	paint.drawText(cw + 5, ty, text);
     }
+
+    paint.restore();
 }
 
 void
--- a/layer/SpectrumLayer.cpp	Mon Dec 01 16:45:17 2008 +0000
+++ b/layer/SpectrumLayer.cpp	Tue Dec 02 17:17:25 2008 +0000
@@ -682,6 +682,8 @@
 
         // draw peak lines
 
+//        std::cerr << "Showing peaks..." << std::endl;
+
         size_t col = v->getCentreFrame() / fft->getResolution();
 
         paint.save();
@@ -832,9 +834,11 @@
                      QString indent, QString extraAttributes) const
 {
     QString s = QString("windowSize=\"%1\" "
-                        "windowHopLevel=\"%2\"")
+                        "windowHopLevel=\"%2\" "
+                        "showPeaks=\"%3\" ")
         .arg(m_windowSize)
-        .arg(m_windowHopLevel);
+        .arg(m_windowHopLevel)
+        .arg(m_showPeaks ? "true" : "false");
 
     SliceLayer::toXml(stream, indent, extraAttributes + " " + s);
 }
@@ -851,6 +855,9 @@
 
     size_t windowHopLevel = attributes.value("windowHopLevel").toUInt(&ok);
     if (ok) setWindowHopLevel(windowHopLevel);
+
+    bool showPeaks = (attributes.value("showPeaks").trimmed() == "true");
+    setShowPeaks(showPeaks);
 }
 
     
--- a/view/Pane.cpp	Mon Dec 01 16:45:17 2008 +0000
+++ b/view/Pane.cpp	Tue Dec 02 17:17:25 2008 +0000
@@ -82,6 +82,9 @@
     setAcceptDrops(true);
     
     updateHeadsUpDisplay();
+
+
+    std::cerr << "Pane::Pane(" << this << ") returning" << std::endl;
 }
 
 void
--- a/view/View.cpp	Mon Dec 01 16:45:17 2008 +0000
+++ b/view/View.cpp	Tue Dec 02 17:17:25 2008 +0000
@@ -61,11 +61,12 @@
     m_manager(0),
     m_propertyContainer(new ViewPropertyContainer(this))
 {
+    std::cerr << "View::View(" << this << ")" << std::endl;
 }
 
 View::~View()
 {
-//    std::cerr << "View::~View(" << this << ")" << std::endl;
+    std::cerr << "View::~View(" << this << ")" << std::endl;
 
     m_deleting = true;
     delete m_propertyContainer;
--- a/widgets/FileFinder.cpp	Mon Dec 01 16:45:17 2008 +0000
+++ b/widgets/FileFinder.cpp	Tue Dec 02 17:17:25 2008 +0000
@@ -18,6 +18,7 @@
 #include "data/fileio/AudioFileReaderFactory.h"
 #include "data/fileio/DataFileReaderFactory.h"
 #include "rdf/RDFImporter.h"
+#include "rdf/RDFExporter.h"
 
 #include <QFileInfo>
 #include <QMessageBox>
@@ -63,7 +64,7 @@
     case SessionFile:
         settingsKey = "sessionpath";
         title = tr("Select a session file");
-        filter = tr("Sonic Visualiser session files (*.sv)\nAll files (*.*)");
+        filter = tr("Sonic Visualiser session files (*.sv)\nRDF files (%1)\nAll files (*.*)").arg(RDFImporter::getKnownExtensions());
         break;
 
     case AudioFile:
@@ -75,17 +76,22 @@
 
     case LayerFile:
         settingsKey = "layerpath";
-        filter = tr("All supported files (%1 %2)\nSonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nRDF files (%3)\nMIDI files (*.mid)\nText files (*.txt)\nAll files (*.*)").arg(DataFileReaderFactory::getKnownExtensions()).arg(RDFImporter::getKnownExtensions()).arg(RDFImporter::getKnownExtensions());
+        filter = tr("All supported files (%1 %2)\nSonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nRDF files (%2)\nMIDI files (*.mid)\nText files (*.txt)\nAll files (*.*)")
+            .arg(DataFileReaderFactory::getKnownExtensions())
+            .arg(RDFImporter::getKnownExtensions());
         break;
 
     case LayerFileNoMidi:
         settingsKey = "layerpath";
-        filter = tr("All supported files (%1 %2)\nSonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nRDF files (%3)\nText files (*.txt)\nAll files (*.*)").arg(DataFileReaderFactory::getKnownExtensions()).arg(RDFImporter::getKnownExtensions()).arg(RDFImporter::getKnownExtensions());
+        filter = tr("All supported files (%1 %2)\nSonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nSpace-separated .lab files (*.lab)\nRDF files (%2)\nText files (*.txt)\nAll files (*.*)")
+            .arg(DataFileReaderFactory::getKnownExtensions())
+            .arg(RDFImporter::getKnownExtensions());
         break;
 
     case SessionOrAudioFile:
         settingsKey = "lastpath";
-        filter = tr("All supported files (*.sv %1)\nSonic Visualiser session files (*.sv)\nAudio files (%1)\nAll files (*.*)")
+        filter = tr("All supported files (*.sv %1)\nSonic Visualiser session files (*.sv)\nRDF files (%1)\nAudio files (%2)\nAll files (*.*)")
+            .arg(RDFImporter::getKnownExtensions())
             .arg(AudioFileReaderFactory::getKnownExtensions());
         break;
 
@@ -105,7 +111,7 @@
 
     case AnyFile:
         settingsKey = "lastpath";
-        filter = tr("All supported files (*.sv %1 %2 %3)\nSonic Visualiser session files (*.sv)\nAudio files (%1)\nLayer files (%2)\nAll files (*.*)")
+        filter = tr("All supported files (*.sv %1 %2 %3)\nSonic Visualiser session files (*.sv)\nAudio files (%1)\nLayer files (%2)\nRDF files (%3)\nAll files (*.*)")
             .arg(AudioFileReaderFactory::getKnownExtensions())
             .arg(DataFileReaderFactory::getKnownExtensions())
             .arg(RDFImporter::getKnownExtensions());
@@ -211,13 +217,13 @@
     case LayerFile:
         settingsKey = "savelayerpath";
         title = tr("Select a file to export to");
-        filter = tr("Sonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nMIDI files (*.mid)\nText files (*.txt)\nAll files (*.*)");
+        filter = tr("Sonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nRDF/Turtle files (%1)\nMIDI files (*.mid)\nText files (*.txt)\nAll files (*.*)").arg(RDFExporter::getSupportedExtensions());
         break;
 
     case LayerFileNoMidi:
         settingsKey = "savelayerpath";
         title = tr("Select a file to export to");
-        filter = tr("Sonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nText files (*.txt)\nAll files (*.*)");
+        filter = tr("Sonic Visualiser Layer XML files (*.svl)\nComma-separated data files (*.csv)\nRDF/Turtle files (%1)\nText files (*.txt)\nAll files (*.*)").arg(RDFExporter::getSupportedExtensions());
         break;
 
     case SessionOrAudioFile:
@@ -299,6 +305,8 @@
                 expectedExtension = "csv";
             } else if (selectedFilter.contains(".mid")) {
                 expectedExtension = "mid";
+            } else if (selectedFilter.contains(".ttl")) {
+                expectedExtension = "ttl";
             }
             std::cerr << "expected extension = " << expectedExtension.toStdString() << std::endl;
             if (expectedExtension != "") {
--- a/widgets/PluginParameterDialog.cpp	Mon Dec 01 16:45:17 2008 +0000
+++ b/widgets/PluginParameterDialog.cpp	Tue Dec 02 17:17:25 2008 +0000
@@ -239,7 +239,7 @@
     m_advancedVisible = settings.value("advancedvisible", false).toBool();
     settings.endGroup();
     
-    m_advanced->setVisible(false);
+    m_advanced->hide();
 
     hbox->addWidget(m_advancedButton);
     m_advancedButton->hide();
@@ -257,6 +257,14 @@
 {
 }
 
+int
+PluginParameterDialog::exec()
+{
+    show();
+    setAdvancedVisible(m_advancedVisible);
+    return QDialog::exec();
+}
+
 
 void
 PluginParameterDialog::setOutputLabel(QString text,
@@ -584,28 +592,32 @@
 void
 PluginParameterDialog::setAdvancedVisible(bool visible)
 {
-    m_advanced->setVisible(visible);
+//    m_advanced->setVisible(visible);
 
     if (visible) {
         m_advancedButton->setText(tr("Advanced <<"));
         m_advancedButton->setChecked(true);
+        m_advanced->show();
     } else {
+        m_advanced->hide();
         m_advancedButton->setText(tr("Advanced >>"));
         m_advancedButton->setChecked(false);
     }
 
+    std::cerr << "resize to " << sizeHint().width() << " x " << sizeHint().height() << std::endl;
+
+//    setMinimumHeight(sizeHint().height());
+    adjustSize();
+
+//    (sizeHint());
+
+    m_advancedVisible = visible;
+
     QSettings settings;
     settings.beginGroup("PluginParameterDialog");
     settings.setValue("advancedvisible", visible);
     settings.endGroup();
 
-//    std::cerr << "resize to " << sizeHint().width() << " x " << sizeHint().height() << std::endl;
-
-    setMinimumHeight(sizeHint().height());
-    adjustSize();
-
-    m_advancedVisible = visible;
-
 //    if (visible) setMaximumHeight(sizeHint().height());
 //    adjustSize();
 }
--- a/widgets/PluginParameterDialog.h	Mon Dec 01 16:45:17 2008 +0000
+++ b/widgets/PluginParameterDialog.h	Tue Dec 02 17:17:25 2008 +0000
@@ -74,6 +74,8 @@
     void getProcessingParameters(size_t &stepSize, size_t &blockSize,
                                  WindowType &windowType) const;
 
+    int exec();
+
 signals:
     void pluginConfigurationChanged(QString);
     void inputModelChanged(QString);
--- a/widgets/PropertyBox.cpp	Mon Dec 01 16:45:17 2008 +0000
+++ b/widgets/PropertyBox.cpp	Tue Dec 02 17:17:25 2008 +0000
@@ -51,7 +51,7 @@
 #include <iostream>
 #include <cmath>
 
-#define DEBUG_PROPERTY_BOX 1
+//#define DEBUG_PROPERTY_BOX 1
 
 PropertyBox::PropertyBox(PropertyContainer *container) :
     m_container(container),
@@ -60,7 +60,7 @@
 {
 #ifdef DEBUG_PROPERTY_BOX
     std::cerr << "PropertyBox[" << this << "(\"" <<
-	container->getPropertyContainerName().toStdString() << "\")]::PropertyBox" << std::endl;
+	container->getPropertyContainerName().toStdString() << "\" at " << container << ")]::PropertyBox" << std::endl;
 #endif
 
     m_mainBox = new QVBoxLayout;
@@ -561,6 +561,10 @@
     std::cerr << "PropertyBox[" << this << "]: unitDatabaseChanged" << std::endl;
     blockSignals(true);
 
+//    std::cerr << "my container is " << m_container << std::endl;
+//    std::cerr << "my container's name is... " << std::endl;
+//    std::cerr << m_container->objectName().toStdString() << std::endl;
+
     PropertyContainer::PropertyList properties = m_container->getProperties();
     for (size_t i = 0; i < properties.size(); ++i) {
         if (m_container->getPropertyType(properties[i]) ==