diff --git a/timeseriesviewer/mapvisualization.py b/timeseriesviewer/mapvisualization.py index 90b43664d04129508a5cfb0866ec9933eac0a3c3..972e65ef449e538877bbacac0457446e0dccb8c8 100644 --- a/timeseriesviewer/mapvisualization.py +++ b/timeseriesviewer/mapvisualization.py @@ -604,7 +604,7 @@ class DatumView(QObject): from timeseriesviewer.ui.widgets import TimeSeriesDatumViewUI self.ui = TimeSeriesDatumViewUI(parent=parent) self.ui.create() - + self.showLoading(False) self.L = self.ui.layout() self.wOffset = self.L.count()-1 self.minHeight = self.ui.height() @@ -623,6 +623,7 @@ class DatumView(QObject): self.MVC = mapViewCollection self.DVC = timeSeriesDateViewCollection self.mapCanvases = dict() + self.mRenderState = dict() def setColumnInfo(self): @@ -685,8 +686,34 @@ class DatumView(QObject): mapView.registerMapCanvas(self.Sensor, mapCanvas) # register MapCanvas on STV level self.STV.registerMapCanvas(mapCanvas) + mapCanvas.blockSignals(False) + mapCanvas.renderComplete.connect(lambda : self.onRenderingChange(False)) + mapCanvas.renderStarting.connect(lambda : self.onRenderingChange(True)) + + def showLoading(self, b): + if b: + self.ui.progressBar.setRange(0,0) + self.ui.progressBar.setValue(-1) + else: + self.ui.progressBar.setRange(0,1) + self.ui.progressBar.setValue(0) + + def onRenderingChange(self, b): + mc = self.sender() + #assert isinstance(mc, QgsMapCanvas) + self.mRenderState[mc] = b + self.showLoading(any(self.mRenderState.values())) + def onRendering(self, *args): + renderFlags = [m.renderFlag() for m in self.mapCanvases.values()] + drawFlags = [m.isDrawing() for m in self.mapCanvases.values()] + print((renderFlags, drawFlags)) + isLoading = any(renderFlags) + + self.showLoading(isLoading) + + s = "" def registerMapCanvas(self, mapView, mapCanvas): from timeseriesviewer.mapcanvas import MapCanvas @@ -703,6 +730,7 @@ class DatumView(QObject): mapCanvas.sigShowProfiles.connect(mapView.sigShowProfiles.emit) mapCanvas.sigChangeDVRequest.connect(self.onMapCanvasRequest) + def onMapCanvasRequest(self, mapCanvas, key): if key == 'hide_date': diff --git a/timeseriesviewer/timeseries.py b/timeseriesviewer/timeseries.py index b40664aeb7dafb82a5eda2f3a3ce755c830e81e9..f45d4b45201e7abb2418e29b392ca387322452a2 100644 --- a/timeseriesviewer/timeseries.py +++ b/timeseriesviewer/timeseries.py @@ -97,18 +97,17 @@ class SensorInstrument(QObject): #find wavelength wl, wlu = parseWavelengthFromDataSet(ds) + self.wavelengthUnits = wlu if wl is None: self.wavelengths = None - self.wavelengthUnits = None else: self.wavelengths = np.asarray(wl) - self.wavelengthUnits = wlu + + self._id = '{}b{}m'.format(self.nb, self.px_size_x) if wl is not None: - self._id += ';'.join([str(w) for w in self.wavelengths])+wlu + self._id += ';'.join([str(w) for w in self.wavelengths])+str(self.wavelengthUnits) - if wlu is None: - wlu = '' if sensor_name is None: sensor_name = '{}bands@{}m'.format(self.nb, self.px_size_x) @@ -921,7 +920,12 @@ def parseWavelength(lyr): return wl, wlu if __name__ == '__main__': + q = QApplication([]) + p = QProgressBar() + p.setRange(0,0) + p.show() + q.exec_() print convertMetricUnit(100, 'cm', 'm') print convertMetricUnit(1, 'm', 'um') \ No newline at end of file diff --git a/timeseriesviewer/ui/timeseriesdatumview.ui b/timeseriesviewer/ui/timeseriesdatumview.ui index c4b0f96e1dbc5d132e8189cdd08e91c1a992398f..cd22df6e734876a957519f279015acd393669426 100644 --- a/timeseriesviewer/ui/timeseriesdatumview.ui +++ b/timeseriesviewer/ui/timeseriesdatumview.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>166</width> + <width>280</width> <height>377</height> </rect> </property> @@ -50,9 +50,51 @@ </widget> </item> <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> + <widget class="QProgressBar" name="progressBar"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize"> + <size> + <width>16777215</width> + <height>10</height> + </size> + </property> + <property name="font"> + <font> + <stylestrategy>PreferDefault</stylestrategy> + </font> + </property> + <property name="styleSheet"> + <string notr="true">QProgressBar::border{ +margin:5px; +} +QProgressBar::chunk:horizontal { +background:green; +margin: 0.5px; /* space */ +width: 10px; +}</string> + </property> + <property name="maximum"> + <number>0</number> + </property> + <property name="value"> + <number>-1</number> + </property> + <property name="textVisible"> + <bool>false</bool> + </property> + <property name="invertedAppearance"> + <bool>false</bool> + </property> + <property name="textDirection"> + <enum>QProgressBar::BottomToTop</enum> + </property> + <property name="format"> + <string notr="true"/> </property> </widget> </item> diff --git a/timeseriesviewer/ui/widgets.py b/timeseriesviewer/ui/widgets.py index 54cf03b3d8010c5b17985ee0d009a9a670ecb957..5fe72de461a079bf9e7928acacf0ff8d93819857 100644 --- a/timeseriesviewer/ui/widgets.py +++ b/timeseriesviewer/ui/widgets.py @@ -241,10 +241,10 @@ class TimeSeriesDatumViewUI(QFrame, loadUi('timeseriesdatumview.ui')): s = s + w.size() if isinstance(self.layout(), QVBoxLayout): - s = QSize(self.line.width() + m.left() + m.right(), + s = QSize(self.progressBar.width() + m.left() + m.right(), s.height() + m.top() + m.bottom()) else: - s = QSize(self.line.heigth() + m.top() + m.bottom(), + s = QSize(self.progressBar.heigth() + m.top() + m.bottom(), s.width() + m.left() + m.right()) return s diff --git a/timeseriesviewer/utils.py b/timeseriesviewer/utils.py index e5813802174698715418d1542718607605a3a073..3dc64b18ddb1c67521ca2d85639d836b2b342ece 100644 --- a/timeseriesviewer/utils.py +++ b/timeseriesviewer/utils.py @@ -503,7 +503,7 @@ def nicePredecessor(l): loadUi = lambda p : loadUIFormClass(jp(DIR_UI, p)) - +loadIcon = lambda p: jp(DIR_UI, *['icons',p]) #dictionary to store form classes and avoid multiple calls to read <myui>.ui FORM_CLASSES = dict()