From 1ea80ab2230d76ad5cc77a835e744c0f2c1a3a1c Mon Sep 17 00:00:00 2001
From: "benjamin.jakimow@geo.hu-berlin.de" <q8DTkxUg-BB>
Date: Thu, 16 Feb 2017 09:54:08 +0100
Subject: [PATCH] sensor name changes are now propagated to the temporal
 profile settings table

---
 timeseriesviewer/profilevisualization.py | 55 ++++++++++++++++--------
 1 file changed, 36 insertions(+), 19 deletions(-)

diff --git a/timeseriesviewer/profilevisualization.py b/timeseriesviewer/profilevisualization.py
index 232f426e..d51578ab 100644
--- a/timeseriesviewer/profilevisualization.py
+++ b/timeseriesviewer/profilevisualization.py
@@ -371,12 +371,12 @@ class PlotSettingsWidgetDelegate(QStyledItemDelegate):
             w = QgsFieldExpressionWidget(parent)
             sv = self.tableView.model().data(index, Qt.UserRole)
             w.setLayer(sv.memLyr)
-            w.setExpressionDialogTitle('Values sensor {}'.format(sv.sensor.sensorName))
-            w.setToolTip('Set values shown for sensor {}'.format(sv.sensor.sensorName))
+            w.setExpressionDialogTitle('Values sensor {}'.format(sv.sensor.name()))
+            w.setToolTip('Set values shown for sensor {}'.format(sv.sensor.name()))
             w.fieldChanged.connect(lambda : self.commitExpression(w, w.expression()))
         elif cname == 'style':
             sv = self.tableView.model().data(index, Qt.UserRole)
-            sn = sv.sensor.sensorName
+            sn = sv.sensor.name()
             w = QgsColorButton(parent, 'Point color {}'.format(sn))
             w.setColor(QColor(index.data()))
             w.colorChanged.connect(lambda: self.commitData.emit(w))
@@ -493,7 +493,7 @@ class PixelCollection(QObject):
             assert isinstance(tsd, TimeSeriesDatum)
             if tsd.sensor not in self.sensorPxLayers.keys():
                 #create new temp layer
-                mem = QgsVectorLayer('point', 'Pixels_sensor_'+tsd.sensor.sensorName, 'memory')
+                mem = QgsVectorLayer('point', 'Pixels_sensor_'+tsd.sensor.name(), 'memory')
 
                 self.sensorPxLayers[tsd.sensor] = mem
                 assert mem.startEditing()
@@ -701,6 +701,7 @@ class PlotSettingsModel(QAbstractTableModel):
         print('TESTSLOT')
         s = ""
 
+
     def signaler(self, idxUL, idxLR):
         if idxUL.isValid():
             sensorView = self.getSensorFromIndex(idxUL)
@@ -715,6 +716,7 @@ class PlotSettingsModel(QAbstractTableModel):
     def addSensor(self, sensor):
         assert isinstance(sensor, SensorInstrument)
         assert sensor in self.pxCollection.sensorPxLayers.keys()
+
         sensorSettings = SensorPlotSettings(sensor, self.pxCollection.sensorPxLayers[sensor])
 
         i = len(self.items)
@@ -725,7 +727,12 @@ class PlotSettingsModel(QAbstractTableModel):
         #self.sort(self.sortColumnIndex, self.sortOrder)
 
         self.sigSensorAdded.emit(sensorSettings)
+        sensor.sigNameChanged.connect(self.onSensorNameChanged)
+
+    def onSensorNameChanged(self, name):
+        self.beginResetModel()
 
+        self.endResetModel()
 
     def sort(self, col, order):
         if self.rowCount() == 0:
@@ -738,7 +745,7 @@ class PlotSettingsModel(QAbstractTableModel):
         #self.beginMoveRows(idxSrc,
 
         if colName == 'sensor':
-            self.items.sort(key = lambda sv:sv.sensor.sensorName, reverse=r)
+            self.items.sort(key = lambda sv:sv.sensor.name(), reverse=r)
         elif colName == 'nb':
             self.items.sort(key=lambda sv: sv.sensor.nb, reverse=r)
         elif colName == 'y-value':
@@ -784,7 +791,7 @@ class PlotSettingsModel(QAbstractTableModel):
         #print(('data', columnName, role))
         if role == Qt.DisplayRole:
             if columnName == 'sensor':
-                value = sw.sensor.sensorName
+                value = sw.sensor.name()
             elif columnName == 'nb':
                 value = str(sw.sensor.nb)
             elif columnName == 'y-value':
@@ -836,7 +843,7 @@ class PlotSettingsModel(QAbstractTableModel):
             if columnName == 'sensor':
                 flags = flags | Qt.ItemIsUserCheckable
 
-            if columnName in ['y-value']: #allow check state
+            if columnName in ['y-value','style']: #allow check state
                 flags = flags | Qt.ItemIsEditable
             return flags
             #return item.qt_flags(index.column())
@@ -978,6 +985,7 @@ class SpectralTemporalVisualization(QObject):
 
         #self.plotSettingsModel.sigVisiblityChanged.connect(self.refresh)
         self.plotSettingsModel.rowsInserted.connect(self.onRowsInserted)
+        #self.plotSettingsModel.modelReset.connect(self.updatePersistantWidgets)
         self.TV.setModel(self.plotSettingsModel)
         self.delegate = PlotSettingsWidgetDelegate(self.TV)
         self.TV.setItemDelegateForColumn(2, self.delegate)
@@ -990,17 +998,26 @@ class SpectralTemporalVisualization(QObject):
         self.ui.pixelLoader.sigLoadingStarted.connect(self.clear)
         self.ui.pixelLoader.sigLoadingFinished.connect(lambda : self.plot2D.enableAutoRange('x', False))
 
-
-        """
-        def setPersistentWidgets(self, index, start, end):
-            self.VIEW.openPersistentEditor(self.createIndex(index.row(), 2))
-            self.VIEW.openPersistentEditor(self.createIndex(index.row(), 3))
-        """
         # self.VIEW.setItemDelegateForColumn(3, PointStyleDelegate(self.VIEW))
         self.plotData2D = dict()
         self.plotData3D = dict()
         self.setData()
 
+    def updatePersistantWidgets(self):
+        model = self.TV.model()
+        if model:
+            colExpression = model.columnames.index('y-value')
+            colStyle = model.columnames.index('style')
+            for row in range(model.rowCount()):
+                idxExpr = model.createIndex(row, colExpression)
+                idxStyle = model.createIndex(row, colStyle)
+                #self.TV.closePersistentEditor(idxExpr)
+                #self.TV.closePersistentEditor(idxStyle)
+                self.TV.openPersistentEditor(idxExpr)
+                self.TV.openPersistentEditor(idxStyle)
+
+                #self.TV.openPersistentEditor(model.createIndex(start, colStyle))
+            s = ""
 
 
     def onRowsInserted(self, parent, start, end):
@@ -1011,8 +1028,8 @@ class SpectralTemporalVisualization(QObject):
             while start <= end:
                 idxExpr = model.createIndex(start, colExpression)
                 idxStyle = model.createIndex(start, colStyle)
-                self.TV.openPersistentEditor(idxExpr)
-                self.TV.openPersistentEditor(idxStyle)
+                #self.TV.openPersistentEditor(idxExpr)
+                #self.TV.openPersistentEditor(idxStyle)
                 start += 1
                 #self.TV.openPersistentEditor(model.createIndex(start, colStyle))
             s = ""
@@ -1074,12 +1091,12 @@ class SpectralTemporalVisualization(QObject):
         assert isinstance(sensorView, SensorPlotSettings)
 
         if sensorView.sensor not in self.plotData2D.keys():
-            plotDataItem = SensorPoints(name=sensorView.sensor.sensorName, pen=None, symbol='o', symbolPen=None)
-            plotDataItem = pg.ScatterPlotItem(name=sensorView.sensor.sensorName, pen= {'color': 'w', 'width': 2},brush=QColor('green'), symbol='o')
+            plotDataItem = SensorPoints(name=sensorView.sensor.name(), pen=None, symbol='o', symbolPen=None)
+            plotDataItem = pg.ScatterPlotItem(name=sensorView.sensor.name(), pen= {'color': 'w', 'width': 2},brush=QColor('green'), symbol='o')
             #self.plot2D.addItem(plotDataItem)
 
 
-            plotDataItem = self.plot2D.plot(name=sensorView.sensor.sensorName, pen=None, symbol='o', symbolPen=None)
+            plotDataItem = self.plot2D.plot(name=sensorView.sensor.name(), pen=None, symbol='o', symbolPen=None)
             #plotDataItem.curve.setClickable(True)
             plotDataItem.sigPointsClicked.connect(self.onObservationClicked)
 
@@ -1090,7 +1107,7 @@ class SpectralTemporalVisualization(QObject):
             self.setVisibility2D(sensorView)
 
         plotDataItem = self.plotData2D[sensorView.sensor]
-        plotDataItem.setToolTip('Values {}'.format(sensorView.sensor.sensorName))
+        plotDataItem.setToolTip('Values {}'.format(sensorView.sensor.name()))
 
 
         #https://github.com/pyqtgraph/pyqtgraph/blob/5195d9dd6308caee87e043e859e7e553b9887453/examples/customPlot.py
-- 
GitLab