Skip to content

Commit

Permalink
feat: reload rubber band when live preview is toggled
Browse files Browse the repository at this point in the history
  • Loading branch information
merydian committed Nov 12, 2024
1 parent 4dbf6dd commit e5ab355
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
25 changes: 24 additions & 1 deletion ORStools/gui/ORStoolsDialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,9 @@ def __init__(self, iface: QgisInterface, parent=None) -> None:
lambda: self.color_duplicate_items(self.routing_fromline_list)
)

# connect live preview button to reload rubber band
self.toggle_preview.toggled.connect(self._toggle_preview)

self.annotation_canvas = self._iface.mapCanvas()
self.moving = None
self.moved_idxs = 0
Expand Down Expand Up @@ -785,7 +788,6 @@ def create_rubber_band(self):
feature = next(route_layer.getFeatures())
self.rubber_band.addGeometry(feature.geometry(), route_layer)
self.rubber_band.show()
print("debug1")
else:
self._clear_annotations()
self._on_clear_listwidget_click()
Expand Down Expand Up @@ -885,3 +887,24 @@ def color_duplicate_items(self, list_widget):
for index in indices:
item = list_widget.item(index)
item.setBackground(QColor("lightsalmon"))

def _toggle_preview(self):
state = self.toggle_preview.isChecked()
try:
self.create_rubber_band()
except ApiError as e:
json_start_index = e.message.find("{")
json_end_index = e.message.rfind("}") + 1
json_str = e.message[json_start_index:json_end_index]
error_dict = json.loads(json_str)
error_code = error_dict["error"]["code"]
print(error_code == 2010)
if error_code == 2010:
QMessageBox.warning(
self,
"Please use a different point",
"""Could not find routable point within a radius of 350.0 meters of specified coordinate. Use a different point closer to a road.""",
)
self.toggle_preview.setChecked(not state)
else:
raise e
3 changes: 0 additions & 3 deletions ORStools/utils/maptools.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@ def canvasDoubleClickEvent(self, e):
"""Ends line drawing and deletes rubber band and markers from map canvas."""
# noinspection PyUnresolvedReferences
self.doubleClicked.emit()
self.canvas.scene().removeItem(self.rubberBand)
del self.rubberBand
# self.canvas.scene().removeItem(self.rubberBand)

doubleClicked = pyqtSignal()

Expand Down

0 comments on commit e5ab355

Please sign in to comment.