changeset 947:e53a87a5efb2

Allow layers to be loaded without models if their layer class explicitly says it's OK (otherwise default template won't load, as it has an empty waveform layer)
author Chris Cannam
date Mon, 20 Apr 2015 10:10:26 +0100
parents 78c152e4db95
children e3c7da3d896e 4b5efd76a55c 2633a1d73e39
files layer/Layer.h layer/TimeRulerLayer.h layer/WaveformLayer.h
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/layer/Layer.h	Mon Apr 20 09:12:17 2015 +0100
+++ b/layer/Layer.h	Mon Apr 20 10:10:26 2015 +0100
@@ -62,7 +62,7 @@
     Model *getModel() {
 	return const_cast<Model *>(const_cast<const Layer *>(this)->getModel());
     }
-
+    
     /**
      * Return a zoom constraint object defining the supported zoom
      * levels for this layer.  If this returns zero, the layer will
@@ -518,6 +518,13 @@
      */
     virtual RangeMapper *getNewVerticalZoomRangeMapper() const { return 0; }
 
+    /**
+     * Return true if this layer type can function without a model
+     * being set. If false (the default), the layer will not be loaded
+     * from a session if its model cannot be found.
+     */
+    virtual bool canExistWithoutModel() const { return false; }
+
 public slots:
     void showLayer(View *, bool show);
 
--- a/layer/TimeRulerLayer.h	Mon Apr 20 09:12:17 2015 +0100
+++ b/layer/TimeRulerLayer.h	Mon Apr 20 10:10:26 2015 +0100
@@ -60,6 +60,8 @@
 
     void setProperties(const QXmlAttributes &attributes);
 
+    virtual bool canExistWithoutModel() const { return true; }
+
 protected:
     Model *m_model;
     LabelHeight m_labelHeight;
--- a/layer/WaveformLayer.h	Mon Apr 20 09:12:17 2015 +0100
+++ b/layer/WaveformLayer.h	Mon Apr 20 10:10:26 2015 +0100
@@ -202,6 +202,8 @@
     virtual int getCurrentVerticalZoomStep() const;
     virtual void setVerticalZoomStep(int);
 
+    virtual bool canExistWithoutModel() const { return true; }
+
 protected:
     int dBscale(double sample, int m) const;