diff --git a/planet_explorer/gui/pe_basemaps_widget.py b/planet_explorer/gui/pe_basemaps_widget.py
index a8104e24..1db63b80 100644
--- a/planet_explorer/gui/pe_basemaps_widget.py
+++ b/planet_explorer/gui/pe_basemaps_widget.py
@@ -464,7 +464,7 @@ def next_order_method_page_clicked(self):
def find_quads_clicked(self):
self.labelWarningQuads.setText("")
selected = self.mosaicsList.selected_mosaics()
- if not self.aoi_filter.leAOI.text():
+ if not self.aoi_filter.leAOI.toPlainText():
self.labelWarningQuads.setText("⚠️ No area of interest (AOI) defined")
return
geom = self.aoi_filter.aoi_as_4326_geom()
diff --git a/planet_explorer/gui/pe_dailyimages_widget.py b/planet_explorer/gui/pe_dailyimages_widget.py
index f6b25502..c9b34ad3 100644
--- a/planet_explorer/gui/pe_dailyimages_widget.py
+++ b/planet_explorer/gui/pe_dailyimages_widget.py
@@ -239,7 +239,7 @@ def perform_search(self, clicked=True):
send_analytics_for_search(self._sources)
- if not self._aoi_filter.leAOI.text():
+ if not self._aoi_filter.leAOI.toPlainText():
id_filters = filters_from_request(self._filters, "id")
if len(id_filters) == 0:
self.lblWarning.setHidden(False)
@@ -351,8 +351,8 @@ def order_checked(self):
return
tool_resources = {}
- if self._aoi_filter.leAOI.text():
- tool_resources["aoi"] = self._aoi_filter.leAOI.text()
+ if self._aoi_filter.leAOI.toPlainText():
+ tool_resources["aoi"] = self._aoi_filter.leAOI.toPlainText()
else:
tool_resources["aoi"] = None
diff --git a/planet_explorer/gui/pe_filters.py b/planet_explorer/gui/pe_filters.py
index ec217870..da7328f2 100644
--- a/planet_explorer/gui/pe_filters.py
+++ b/planet_explorer/gui/pe_filters.py
@@ -323,8 +323,8 @@ def __init__(
# This may later be a nullptr, if no active tool when queried
self._cur_maptool = None
- self.leAOI.textChanged["QString"].connect(self.filters_changed)
- self.leAOI.textEdited["QString"].connect(self.validate_edited_aoi)
+ self.leAOI.textChanged.connect(self.filters_changed)
+ self.leAOI.textChanged.connect(self.validate_edited_aoi)
self._setup_tool_buttons()
@@ -335,15 +335,17 @@ def __init__(
self.p_client = PlanetClient.getInstance()
def reset_aoi_box(self):
+ self.leAOI.blockSignals(True)
self.leAOI.setText("")
+ self.leAOI.blockSignals(False)
if self._aoi_box:
self._aoi_box.reset(QgsWkbTypes.PolygonGeometry)
def filters(self):
filters = []
- if self.leAOI.text():
+ if self.leAOI.toPlainText():
try:
- qgsgeom = qgsgeometry_from_geojson(self.leAOI.text())
+ qgsgeom = qgsgeometry_from_geojson(self.leAOI.toPlainText())
if not qgsgeom.isEmpty():
geom_json = json.loads(qgsgeom.asJson())
filters.append(geom_filter(geom_json))
@@ -360,24 +362,26 @@ def filters(self):
def filters_as_json(self):
filters = []
- if self.leAOI.text():
- filters.append(self.leAOI.text())
+ if self.leAOI.toPlainText():
+ filters.append(self.leAOI.toPlainText())
return filters
def set_from_request(self, request):
self.emitFiltersChanged = False
filters = filters_from_request(request, "geometry")
+ self.leAOI.blockSignals(True)
if filters:
geom = filters[0]["config"]
txt = json.dumps(geom)
self.leAOI.setText(txt)
else:
self.leAOI.setText("")
+ self.leAOI.blockSignals(False)
self.emitFiltersChanged = True
- @pyqtSlot("QString")
- def filters_changed(self, value):
+ @pyqtSlot()
+ def filters_changed(self, value=None):
if self.emitFiltersChanged:
self.filtersChanged.emit()
@@ -645,7 +649,9 @@ def aoi_from_layer(self, layers):
# Sets the features to the canvas
geom_json = multipart_polygon.asJson(precision=6)
self._aoi_box.setToGeometry(multipart_polygon)
+ self.leAOI.blockSignals(True)
self.leAOI.setText(geom_json)
+ self.leAOI.blockSignals(False)
log.debug("AOI set to layer")
@@ -707,7 +713,9 @@ def aoi_bb_from_layer(self, layers):
self._aoi_box.setToGeometry(geom_bb)
+ self.leAOI.blockSignals(True)
self.leAOI.setText(geom_json)
+ self.leAOI.blockSignals(False)
log.debug("AOI set to layer")
@@ -760,7 +768,9 @@ def aoi_from_current_extent(self):
self._aoi_box.setToGeometry(QgsGeometry.fromRect(canvas.extent()))
+ self.leAOI.blockSignals(True)
self.leAOI.setText(extent_json)
+ self.leAOI.blockSignals(False)
log.debug("AOI set to canvas extent")
@@ -796,7 +806,9 @@ def aoi_from_active_layer_extent(self):
geom_extent = QgsGeometry.fromRect(transform_extent)
extent_json = geom_extent.asJson(precision=6)
+ self.leAOI.blockSignals(True)
self.leAOI.setText(extent_json)
+ self.leAOI.blockSignals(False)
log.debug("AOI set to active layer extent")
@@ -828,7 +840,9 @@ def aoi_from_full_extent(self):
extent_json = geom_extent.asJson(precision=6)
self._aoi_box.setToGeometry(QgsGeometry.fromRect(canvas_extent))
+ self.leAOI.blockSignals(True)
self.leAOI.setText(extent_json)
+ self.leAOI.blockSignals(False)
log.debug("AOI set to full data extent")
@@ -882,7 +896,9 @@ def set_draw_aoi(self, aoi):
aoi_json = aoi.asJson(precision=6)
if aoi_json:
+ self.leAOI.blockSignals(True)
self.leAOI.setText(aoi_json)
+ self.leAOI.blockSignals(False)
self._show_message("AOI set to drawn figure")
self.zoom_to_aoi()
@@ -952,7 +968,9 @@ def aoi_from_multiple_polygons(self):
# Sets the features to the canvas
geom_json = multipart_polygon.asJson(precision=6)
self._aoi_box.setToGeometry(multipart_polygon)
+ self.leAOI.blockSignals(True)
self.leAOI.setText(geom_json)
+ self.leAOI.blockSignals(False)
log.debug("AOI set to layer")
@@ -996,7 +1014,9 @@ def aoi_from_bound(self):
geom_bbox = QgsGeometry.fromRect(transform_bbox)
bbox_json = geom_bbox.asJson(precision=6)
+ self.leAOI.blockSignals(True)
self.leAOI.setText(bbox_json)
+ self.leAOI.blockSignals(False)
bbox_canvas = trans_canvas.transformBoundingBox(transform_bbox)
self._aoi_box.setToGeometry(QgsGeometry.fromRect(bbox_canvas))
@@ -1033,11 +1053,11 @@ def aoi_as_4326_geom(self):
@pyqtSlot()
def zoom_to_aoi(self):
- if not self.leAOI.text():
+ if not self.leAOI.toPlainText():
log.debug("No AOI defined, skipping zoom to AOI")
return
- geom: QgsGeometry = qgsgeometry_from_geojson(self.leAOI.text())
+ geom: QgsGeometry = qgsgeometry_from_geojson(self.leAOI.toPlainText())
if geom.isEmpty():
self._show_message(
"AOI GeoJSON geometry invalid", level=Qgis.Warning, duration=10
@@ -1048,18 +1068,18 @@ def zoom_to_aoi(self):
self.show_aoi()
- zoom_canvas_to_aoi(self.leAOI.text())
+ zoom_canvas_to_aoi(self.leAOI.toPlainText())
self.zoomToAOIRequested.emit()
@pyqtSlot()
def copy_aoi_to_clipboard(self):
- if not self.leAOI.text():
+ if not self.leAOI.toPlainText():
log.debug("No AOI defined, skipping zoom to AOI")
return
try:
- json_obj = json.loads(self.leAOI.text())
+ json_obj = json.loads(self.leAOI.toPlainText())
except ValueError:
return
@@ -1072,7 +1092,7 @@ def copy_aoi_to_clipboard(self):
@pyqtSlot()
def validate_edited_aoi(self):
- json_txt = self.leAOI.text()
+ json_txt = self.leAOI.toPlainText()
if not json_txt:
self.reset_aoi_box()
self.show_aoi_area_size()
diff --git a/planet_explorer/tests/test_daily_imagery.py b/planet_explorer/tests/test_daily_imagery.py
index dbf8c636..72550916 100644
--- a/planet_explorer/tests/test_daily_imagery.py
+++ b/planet_explorer/tests/test_daily_imagery.py
@@ -521,7 +521,7 @@ def test_aoi_from_layer(name, layer_dir, expected_coordinates):
# Determines the extent
aoi_filter.aoi_from_layer([layer])
- extent = aoi_filter.leAOI.text()
+ extent = aoi_filter.leAOI.toPlainText()
extent_json = json.loads(extent)
geom_type = extent_json.get("type")
coords = extent_json.get("coordinates")
@@ -569,7 +569,7 @@ def test_aoi_bb_from_layer(layer_dir, expected_coordinates):
# Determines the extent
aoi_filter.aoi_bb_from_layer([layer])
- extent = aoi_filter.leAOI.text()
+ extent = aoi_filter.leAOI.toPlainText()
extent_json = json.loads(extent)
geom_type = extent_json.get("type")
coords = extent_json.get("coordinates")
@@ -753,7 +753,7 @@ def test_aoi_from_multiple_polygons(qtbot, pe_qgis_iface, layer_dir, expected_co
# Determines the extent
aoi_filter.aoi_from_multiple_polygons()
- extent = aoi_filter.leAOI.text()
+ extent = aoi_filter.leAOI.toPlainText()
extent_json = json.loads(extent)
geom_type = extent_json.get("type")
coords = extent_json.get("coordinates")
@@ -808,7 +808,7 @@ def test_bb_aoi_from_multiple_polygons(qtbot, pe_qgis_iface, layer_dir, expected
# Determines the extent
aoi_filter.aoi_from_bound()
- extent = aoi_filter.leAOI.text()
+ extent = aoi_filter.leAOI.toPlainText()
extent_json = json.loads(extent)
geom_type = extent_json.get("type")
coords = extent_json.get("coordinates")
diff --git a/planet_explorer/tests/test_orders.py b/planet_explorer/tests/test_orders.py
index 38515ff7..4f28a8c0 100644
--- a/planet_explorer/tests/test_orders.py
+++ b/planet_explorer/tests/test_orders.py
@@ -42,8 +42,8 @@ def get_order_dialog(qtbot, daily_images_widget):
images = daily_images_widget.searchResultsWidget.selected_images()
tool_resources = {}
- if daily_images_widget._aoi_filter.leAOI.text(): # noqa
- tool_resources["aoi"] = daily_images_widget._aoi_filter.leAOI.text() # noqa
+ if daily_images_widget._aoi_filter.leAOI.toPlainText(): # noqa
+ tool_resources["aoi"] = daily_images_widget._aoi_filter.leAOI.toPlainText() # noqa
else:
tool_resources["aoi"] = None
diff --git a/planet_explorer/tests/test_saved_search.py b/planet_explorer/tests/test_saved_search.py
index dd02df28..f37a8d5e 100644
--- a/planet_explorer/tests/test_saved_search.py
+++ b/planet_explorer/tests/test_saved_search.py
@@ -35,7 +35,7 @@ def _dlg_interact():
# make sure the proper AOI from the saved search is loaded by checking the filter
qgis_debug_wait(qtbot, qgis_debug_enabled)
- assert daily_images_widget._aoi_filter.leAOI.text() == sample_aoi
+ assert daily_images_widget._aoi_filter.leAOI.toPlainText() == sample_aoi
def test_create(qtbot, logged_in_explorer_dock_widget, qgis_debug_enabled, sample_aoi):
diff --git a/planet_explorer/ui/pe_aoi_filter_base.ui b/planet_explorer/ui/pe_aoi_filter_base.ui
index f5c62538..669773a5 100644
--- a/planet_explorer/ui/pe_aoi_filter_base.ui
+++ b/planet_explorer/ui/pe_aoi_filter_base.ui
@@ -198,7 +198,13 @@
0
-
-
+
+
+
+ 16777215
+ 30
+
+
GeoJSON feature required:
- only polygon type supported
@@ -206,12 +212,12 @@
- limited to 500 vertices
+
+ Qt::ScrollBarAlwaysOff
+
Active coordinates (GeoJSON)
-
- true
-
-