diff framework/MainWindowBase.cpp @ 156:89737ffa4580

* Some fairly simplistic code to set up layer type properties based on RDF data about feature types (both when running transforms and when importing features from RDF files).
author Chris Cannam
date Thu, 12 Feb 2009 15:26:43 +0000
parents 6a24c797c157
children ae56bf90cdf9
line wrap: on
line diff
--- a/framework/MainWindowBase.cpp	Mon Feb 09 16:50:52 2009 +0000
+++ b/framework/MainWindowBase.cpp	Thu Feb 12 15:26:43 2009 +0000
@@ -1564,12 +1564,38 @@
                 if (layer->isLayerOpaque() ||
                     dynamic_cast<Colour3DPlotLayer *>(layer)) {
 
+                    // these always go in a new pane, with nothing
+                    // else going in the same pane
+
                     Pane *singleLayerPane = addPaneToStack();
                     if (m_timeRulerLayer) {
                         m_document->addLayerToView(singleLayerPane, m_timeRulerLayer);
                     }
                     m_document->addLayerToView(singleLayerPane, layer);
 
+                } else if (layer->getLayerColourSignificance() ==
+                           Layer::ColourHasMeaningfulValue) {
+
+                    // these can go in a pane with something else, but
+                    // only if none of the something elses also have
+                    // this quality
+
+                    bool needNewPane = false;
+                    for (int i = 0; i < pane->getLayerCount(); ++i) {
+                        Layer *otherLayer = pane->getLayer(i);
+                        if (otherLayer &&
+                            (otherLayer->getLayerColourSignificance() ==
+                             Layer::ColourHasMeaningfulValue)) {
+                            needNewPane = true;
+                            break;
+                        }
+                    }
+                    if (needNewPane) {
+                        pane = addPaneToStack();
+                    }
+
+                    m_document->addLayerToView(pane, layer);
+
                 } else {
 
                     if (pane->getLayerCount() > 4) {