From 53baa1ddabd2ecb63ee522bb15a66d354a78a1ff Mon Sep 17 00:00:00 2001
From: "benjamin.jakimow" <benjamin.jakimow@geo.hu-berlin.de>
Date: Sat, 20 Feb 2016 17:14:41 +0100
Subject: [PATCH] minor changes

---
 sensecarbon_tsv.py | 70 +++++++++++++++++++++++++++-------------------
 1 file changed, 42 insertions(+), 28 deletions(-)

diff --git a/sensecarbon_tsv.py b/sensecarbon_tsv.py
index c8ada3cb..7a1bb8f0 100644
--- a/sensecarbon_tsv.py
+++ b/sensecarbon_tsv.py
@@ -28,7 +28,7 @@ from qgis.core import *
 
 from osgeo import gdal, ogr, osr, gdal_array
 
-
+DEBUG = True
 
 try:
     from qgis.gui import *
@@ -39,32 +39,44 @@ except:
     qgis_available = False
 
 import numpy as np
-import tsv_widgets
 import six
 import multiprocessing
+from PyQt4.QtCore import *
+from PyQt4.QtGui import *
+
 
+#abbreviations
+mkdir = lambda p: os.makedirs(p, exist_ok=True)
+jp = os.path.join
 
-#I don't know why but this is required to run this in QGIS
+def expand_python_path(path):
+    if path not in sys.path:
+        sys.path.append(path)
 
-path = os.path.abspath(os.path.join(sys.exec_prefix, '../../bin/pythonw.exe'))
+
+
+#I don't know why, but this is required to run this in QGIS
+path = os.path.abspath(jp(sys.exec_prefix, '../../bin/pythonw.exe'))
 if os.path.exists(path):
     multiprocessing.set_executable(path)
     sys.argv = [ None ]
 
-pluginDir = os.path.dirname(__file__)
-sys.path.append(pluginDir)
-sys.path.append(os.path.join(pluginDir, 'libs'))
-#sys.path.append(os.path.join(pluginDir, *['libs','qimage2ndarray']))
-sys.path.append(os.path.join(pluginDir, *['libs','qrangeslider-0.1.1']))
-sys.path.append(os.path.join(pluginDir, *['libs','pyqtgraph']))
+#ensure that required non-standard modules are available
+PLUGIN_DIR = os.path.dirname(__file__)
+LIB_DIR = jp(PLUGIN_DIR, 'libs')
+expand_python_path(PLUGIN_DIR)
+expand_python_path(LIB_DIR)
+try:
+    import pyqtgraph
+except:
+    expand_python_path(jp(LIB_DIR,'pyqtgraph'))
 
 import pyqtgraph as pg
 
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
-from sensecarbon_tsv_gui import SenseCarbon_TSVGui
+import tsv_widgets
+from sensecarbon_tsv_gui import *
+
 
-DEBUG = True
 
 regLandsatSceneID = re.compile(r"L[EMCT][1234578]{1}[12]\d{12}[a-zA-Z]{3}\d{2}")
 
@@ -85,6 +97,7 @@ def file_search(rootdir, wildcard, recursive=False, ignoreCase=False):
     return results
 
 
+
 class TimeSeriesTableModel(QAbstractTableModel):
     columnames = ['date','sensor','ns','nl','nb','image','mask']
 
@@ -239,13 +252,9 @@ LUT_SensorNames = {(6,30.,30.): 'L7 ETM+' \
 
 
 class BandView(object):
-
-
-
-
-    def __init__(self, TS):
+    def __init__(self, TS, recommended_bands=None):
         assert type(TS) is TimeSeries
-        self.bandMappings = collections.OrderedDict()
+        self.representation = collections.OrderedDict()
         self.TS = TS
         self.TS.sensorAdded.connect(self.initSensor)
 
@@ -253,21 +262,26 @@ class BandView(object):
 
         import copy
         for sensor in self.Sensors:
-            self.initSensor(copy.deepcopy(sensor))
+            self.initSensor(copy.deepcopy(sensor), recommended_bands=recommended_bands)
 
 
 
 
 
-    def initSensor(self, sensor):
+    def initSensor(self, sensor, recommended_bands=None):
         assert type(sensor) is SensorConfiguration
-        if sensor not in self.bandMappings.keys():
+        if sensor not in self.representation.keys():
             #self.bandMappings[sensor] = ((0, 0, 5000), (1, 0, 5000), (2, 0, 5000))
             #x = imagechipviewsettings_widget.ImageChipViewSettings(sensor)
             #x = tsv_widgets.BandViewSettings(sensor)
             x = tsv_widgets.ImageChipViewSettings(sensor)
+
+            if recommended_bands is not None:
+                assert min(recommended_bands) > 0
+                if max(recommended_bands) < sensor.nb:
+                    x.setBands(recommended_bands)
             x.create()
-            self.bandMappings[sensor] = x
+            self.representation[sensor] = x
 
 
     def getSensorStats(self, sensor, bands):
@@ -281,7 +295,7 @@ class BandView(object):
 
     def getWidget(self, sensor):
         assert type(sensor) is SensorConfiguration
-        return self.bandMappings[sensor]
+        return self.representation[sensor]
 
     def getBands(self, sensor):
         return self.getWidget(sensor).getBands()
@@ -1874,15 +1888,15 @@ class SenseCarbon_TSV:
 
 
     def ua_addBandView(self, band_recommendation = [3, 2, 1]):
-        self.BAND_VIEWS.append(BandView(self.TS))
+        self.BAND_VIEWS.append(BandView(self.TS, recommended_bands=band_recommendation))
         self.refreshBandViews()
 
 
     def refreshBandViews(self):
 
         if len(self.BAND_VIEWS) == 0 and len(self.TS) > 0:
-            self.ua_addBandView([3, 2, 1])
-            self.ua_addBandView([4, 5, 3])
+            self.ua_addBandView(band_recommendation=[3, 2, 1])
+            self.ua_addBandView(band_recommendation=[4, 5, 3])
 
 
         self.clearLayoutWidgets(self.BVP)
-- 
GitLab