diff transform/TransformFactory.cpp @ 16:cc98d496d52b

* Add command history class, and basic undo/redo menus. No actual commands to undo/redo yet. Selecting the placeholders sometimes seems to cause a crash, so this looks a little uncertain so far. * Add Rename Layer * Remove models from playback when their layers are removed (and ref counts hit zero) * Don't hang around waiting so much when there's work to be done in the audio buffer fill thread * Put more sensible names on layers generated from transforms * Add basic editing to time-value layer like existing editing in time-instants layer, and make both of them snap to the appropriate resolution during drag
author Chris Cannam
date Mon, 30 Jan 2006 17:51:56 +0000
parents d86891498eef
children 4563a72c1d8b
line wrap: on
line diff
--- a/transform/TransformFactory.cpp	Mon Jan 30 13:19:42 2006 +0000
+++ b/transform/TransformFactory.cpp	Mon Jan 30 17:51:56 2006 +0000
@@ -33,10 +33,20 @@
 TransformFactory::TransformList
 TransformFactory::getAllTransforms()
 {
+    if (m_transforms.empty()) populateTransforms();
+
     TransformList list;
-//!!!    list.push_back(BeatDetectTransform::getName());
-//    list.push_back(BeatDetectionFunctionTransform::getName());
+    for (TransformMap::const_iterator i = m_transforms.begin();
+	 i != m_transforms.end(); ++i) {
+	list.push_back(TransformDesc(i->first, i->second));
+    }
 
+    return list;
+}
+
+void
+TransformFactory::populateTransforms()
+{
     //!!!
     std::vector<QString> fexplugs =
 	FeatureExtractionPluginFactory::getAllPluginIdentifiers();
@@ -62,24 +72,31 @@
 		    plugin->getOutputDescriptors();
 
 		if (outputs.size() == 1) {
-		    list.push_back
-			(TransformDesc
-			 (QString("%1:%2").arg(pluginId).arg(outputs[0].name.c_str()),
-			  pluginDescription));
+		    m_transforms[QString("%1:%2")
+				 .arg(pluginId)
+				 .arg(outputs[0].name.c_str())]
+			= pluginDescription;
 		} else {
 		    for (size_t j = 0; j < outputs.size(); ++j) {
-			list.push_back
-			    (TransformDesc
-			     (QString("%1:%2").arg(pluginId).arg(outputs[j].name.c_str()),
-			      QString("%1: %2").arg(pluginDescription)
-			      .arg(outputs[j].description.c_str())));
+			m_transforms[QString("%1:%2")
+				     .arg(pluginId)
+				     .arg(outputs[j].name.c_str())]
+			    = QString("%1: %2")
+			    .arg(pluginDescription)
+			    .arg(outputs[j].description.c_str());
 		    }
 		}
 	    }
 	}
     }
-    
-    return list;
+}
+
+QString
+TransformFactory::getTransformDescription(TransformName name)
+{
+    if (m_transforms.find(name) != m_transforms.end()) {
+	return m_transforms[name];
+    } else return "";
 }
 
 Transform *
@@ -111,6 +128,7 @@
     }
 
     if (start && transform) transform->start();
+    transform->setObjectName(name);
     return transform;
 }