From e80c1708df0f6d2340280fa6eeafb6714ccbeff0 Mon Sep 17 00:00:00 2001
From: "benjamin.jakimow" <benjamin.jakimow@geo.hu-berlin.de>
Date: Fri, 18 May 2018 11:19:37 +0200
Subject: [PATCH] spectrallibraries.py: added
 setAddCurrentSpectraToSpeclibMode(), fromMapCanvas(mapCanvas, position) can
 read data from invisible mapcanvases

---
 timeseriesviewer/spectrallibraries.py | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/timeseriesviewer/spectrallibraries.py b/timeseriesviewer/spectrallibraries.py
index 397009ba..611af5f3 100644
--- a/timeseriesviewer/spectrallibraries.py
+++ b/timeseriesviewer/spectrallibraries.py
@@ -330,8 +330,13 @@ class SpectralProfile(QObject):
         """
         assert isinstance(mapCanvas, QgsMapCanvas)
 
-        layers = [l for l in mapCanvas.layers() if isinstance(l, QgsRasterLayer)]
-        sources = [l.source() for l in layers]
+        from timeseriesviewer.mapcanvas import MapCanvas
+        if isinstance(mapCanvas, MapCanvas):
+            sources = mapCanvas.layerModel().rasterLayerInfos()
+            sources = [s.mSrc for s in sources]
+        else:
+            layers = [l for l in mapCanvas.layers() if isinstance(l, QgsRasterLayer)]
+            sources = [l.source() for l in layers]
         return SpectralProfile.fromRasterSources(sources, position)
 
     @staticmethod
@@ -971,6 +976,8 @@ class SpectralLibraryPanel(QgsDockWidget):
         self.SLW = SpectralLibraryWidget(self)
         self.setWidget(self.SLW)
 
+    def setAddCurrentSpectraToSpeclibMode(self, b: bool):
+        self.SLW.setAddCurrentSpectraToSpeclibMode(b)
 
 class SpectralLibraryVectorLayer(QgsVectorLayer):
 
@@ -1526,7 +1533,8 @@ class SpectralLibraryTableViewModel(QAbstractTableModel):
 
         if role == Qt.DisplayRole:
             if columnName == self.cIndex:
-                value = self.mSpecLib.index(profile)+1
+                #value = self.mSpecLib.index(profile)+1
+                pass
             elif columnName == self.cName:
                 value = profile.name()
             elif columnName == self.cSrc:
@@ -1860,6 +1868,9 @@ class SpectralLibraryWidget(QFrame, loadUI('spectrallibrarywidget.ui')):
             self.mModel.insertProfiles([p.clone() for p in speclib])
             #self.mSpeclib.addProfiles([copy.copy(p) for p in speclib])
 
+    def setAddCurrentSpectraToSpeclibMode(self, b:bool):
+        self.cbAddCurrentSpectraToSpeclib.setChecked(b)
+
     def addCurrentSpectraToSpeclib(self, *args):
         self.mModel.insertProfiles([p.clone() for p in self.mCurrentSpectra])
         #self.mSpeclib.addProfiles([p.clone() for p in self.mCurrentSpectra])
-- 
GitLab