diff --git a/eotimeseriesviewer/mapvisualization.py b/eotimeseriesviewer/mapvisualization.py index ca1cf4418d6b49e5521fd8ba60c3b822303eba36..1c3cf34792c124034bff1a8ec3acda845b8603cb 100644 --- a/eotimeseriesviewer/mapvisualization.py +++ b/eotimeseriesviewer/mapvisualization.py @@ -195,6 +195,8 @@ class MapView(QFrame): self.mIsVisible = True self.setTitle(name) self.tbInfoExpression: QLineEdit + self.mDefaultInfoExpressionToolTip:str = self.tbInfoExpression.toolTip() + self.tbInfoExpression.textChanged.connect(self.onMapInfoExpressionChanged) self.btnShowInfoExpression.setDefaultAction(self.optionShowInfoExpression) self.optionShowInfoExpression.toggled.connect(self.tbInfoExpression.setEnabled) @@ -219,6 +221,16 @@ class MapView(QFrame): fixMenuButtons(self) + def setInfoExpressionError(self, error: str): + + if error in ['', None]: + self.tbInfoExpression.setStyleSheet('') + self.tbInfoExpression.setToolTip(self.mDefaultInfoExpressionToolTip) + else: + + self.tbInfoExpression.setStyleSheet('QLineEdit#tbInfoExpression{color:red; border: 2px solid red;}') + self.tbInfoExpression.setToolTip(f'{error}') + def onMapInfoExpressionChanged(self, text: str): self.sigCanvasAppearanceChanged.emit() @@ -2155,7 +2167,7 @@ class MapWidget(QFrame): tf = mapView.mapTextFormat() infoItemVisible: bool = mapView.optionShowInfoExpression.isChecked() - + errorText = '' for canvas in self.mCanvases[mapView]: assert isinstance(canvas, MapCanvas) @@ -2168,6 +2180,7 @@ class MapWidget(QFrame): infoItem.setVisible(infoItemVisible) expr = QgsExpression(mapView.mapInfoExpression()) + infoItem.setInfoText(None) if isinstance(expr, QgsExpression) and expr.expression() != '': # context = QgsExpressionContext([QgsExpressionContextScope(canvas.expressionContextScope())]) context: QgsExpressionContext = QgsExpressionContext() @@ -2182,13 +2195,17 @@ class MapWidget(QFrame): # print(infoText) infoItem.setInfoText(str(infoText)) else: - # print(expr.evalErrorString(), file=sys.stderr) - infoItem.setInfoText('') + if errorText == '': + errorText = expr2.evalErrorString() + else: + if errorText == '': + errorText = expr.parserErrorString() - canvas.addToRefreshPipeLine(MapCanvas.Command.UpdateMapItems) + canvas.addToRefreshPipeLine(MapCanvas.Command.UpdateMapItems) if canvas.canvasColor() != bg: canvas.addToRefreshPipeLine(mapView.mapBackgroundColor()) + mapView.setInfoExpressionError(errorText) class MapViewDock(QgsDockWidget): sigMapViewAdded = pyqtSignal(MapView) diff --git a/eotimeseriesviewer/ui/mapviewdock.ui b/eotimeseriesviewer/ui/mapviewdock.ui index 0bae4ab89dbeab217df1fc05bf6733145372a673..0ef287eda01e1d96651e6c77cdf6ac2ba7351883 100644 --- a/eotimeseriesviewer/ui/mapviewdock.ui +++ b/eotimeseriesviewer/ui/mapviewdock.ui @@ -226,7 +226,7 @@ QToolBox::tab:selected { /* italicize selected tabs */ - 0 + 1 100 diff --git a/eotimeseriesviewer/ui/mapwidget.ui b/eotimeseriesviewer/ui/mapwidget.ui index e22faae3f0bb6e1beed091c46427843dd3eea7d0..3f3089c5879604316bffab627c7a08bc9f3a99db 100644 --- a/eotimeseriesviewer/ui/mapwidget.ui +++ b/eotimeseriesviewer/ui/mapwidget.ui @@ -83,11 +83,17 @@ 100 + + + - QFrame::StyledPanel + QFrame::NoFrame - QFrame::Raised + QFrame::Plain + + + 0