-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
122 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
# Widgets package initialization file | ||
from .indicator_index_score_widget import IndexScoreRadioButton | ||
from .dont_use_widget import DontUseRadioButton | ||
from .multi_buffer_distances import MultiBufferDistances | ||
from .multi_buffer_distances_widget import MultiBufferDistancesWidget |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
from qgis.PyQt.QtWidgets import ( | ||
QLabel, | ||
QGroupBox, | ||
QRadioButton, | ||
QVBoxLayout, | ||
QHBoxLayout, | ||
QLineEdit, | ||
QMessageBox, | ||
) | ||
from qgis.gui import QgsMapLayerComboBox | ||
|
||
from .base_indicator_widget import BaseIndicatorWidget | ||
from qgis.core import QgsMessageLog, Qgis, QgsMapLayerProxyModel | ||
|
||
|
||
class MultiBufferDistancesWidget(BaseIndicatorWidget): | ||
""" | ||
A specialized radio button with additional widgetQDoubleSpinBoxs for IndexScore. | ||
""" | ||
|
||
def add_internal_widgets(self) -> None: | ||
""" | ||
Adds internal widgets specific to self.set_internal_widgets_visible(self.isChecked()) - in this case there are none. | ||
""" | ||
self.main_layout = QVBoxLayout() | ||
|
||
# Point Layer Combobox - Filtered to point layers | ||
self.point_layer_label = QLabel("Point Layer") | ||
self.main_layout.addWidget(self.point_layer_label) | ||
|
||
self.layer_combo = QgsMapLayerComboBox() | ||
self.layer_combo.setFilters(QgsMapLayerProxyModel.PointLayer) | ||
self.main_layout.addWidget(self.layer_combo) | ||
# Travel Mode group | ||
self.travel_mode_group = QGroupBox("Travel Mode:") | ||
self.travel_mode_layout = QHBoxLayout() | ||
self.walking_radio = QRadioButton("Walking") | ||
self.driving_radio = QRadioButton("Driving") | ||
if self.attributes["Multi Buffer Travel Mode"] == "Walking": | ||
self.walking_radio.setChecked(True) | ||
else: | ||
self.driving_radio.setChecked(True) # Default selection | ||
self.travel_mode_layout.addWidget(self.walking_radio) | ||
self.travel_mode_layout.addWidget(self.driving_radio) | ||
self.travel_mode_group.setLayout(self.travel_mode_layout) | ||
|
||
# Measurement group | ||
self.measurement_group = QGroupBox("Measurement:") | ||
self.measurement_layout = QHBoxLayout() | ||
self.distance_radio = QRadioButton("Distance") | ||
self.time_radio = QRadioButton("Time") | ||
if self.attributes["Multi Buffer Travel Units"] == "Distance": | ||
self.distance_radio.setChecked(True) | ||
else: | ||
self.time_radio.setChecked(True) # Default selection | ||
self.measurement_layout.addWidget(self.distance_radio) | ||
self.measurement_layout.addWidget(self.time_radio) | ||
self.measurement_group.setLayout(self.measurement_layout) | ||
|
||
# Travel Increments input | ||
self.travel_increments_layout = QHBoxLayout() | ||
self.increments_label = QLabel("Travel Increments:") | ||
self.increments_input = QLineEdit("") | ||
self.travel_increments_layout.addWidget(self.increments_label) | ||
self.travel_increments_layout.addWidget(self.increments_input) | ||
if self.attributes["Multi Buffer Travel Increments"]: | ||
self.increments_input.setText( | ||
self.attributes["Multi Buffer Travel Distances"] | ||
) | ||
else: | ||
self.increments_input.setText( | ||
self.attributes["Defaiçt Multi Buffer Travel Distances"] | ||
) | ||
|
||
# Add all layouts to the main layout | ||
self.main_layout.addWidget(self.travel_mode_group) | ||
self.main_layout.addWidget(self.measurement_group) | ||
self.main_layout.addLayout(self.travel_increments_layout) | ||
self.layout.addLayout(self.main_layout) | ||
|
||
def get_data(self) -> dict: | ||
""" | ||
Return the data as a dictionary, updating attributes with current value. | ||
""" | ||
if not self.isChecked(): | ||
return None | ||
|
||
layer = self.layer_combo.currentLayer() | ||
if not layer: | ||
self.attributes["Multi Buffer Point Layer"] = None | ||
else: | ||
self.attributes["Multi Buffer Point Layer"] = layer | ||
if self.walking_radio.isChecked(): | ||
self.attributes["Multi Buffer Travel Mode"] = "Walking" | ||
else: | ||
self.attributes["Multi Buffer Travel Mode"] = "Driving" | ||
if self.distance_radio.isChecked(): | ||
self.attributes["Multi Buffer Travel Units"] = "Distance" | ||
else: | ||
self.attributes["Multi Buffer Travel Units"] = "Time" | ||
self.attributes["Multi Buffer Travel Distances"] = self.increments_input.text() | ||
return self.attributes | ||
|
||
def set_internal_widgets_enabled(self, enabled: bool) -> None: | ||
""" | ||
Enables or disables the internal widgets based on the state of the radio button. | ||
""" | ||
|
||
self.layer_combo.setEnabled(enabled) | ||
self.time_radio.setEnabled(enabled) | ||
self.distance_radio.setEnabled(enabled) | ||
self.walking_radio.setEnabled(enabled) | ||
self.driving_radio.setEnabled(enabled) | ||
self.increments_input.setEnabled(enabled) | ||
self.increments_label.setEnabled(enabled) | ||
self.point_layer_label.setEnabled(enabled) | ||
self.travel_mode_group.setEnabled(enabled) | ||
self.measurement_group.setEnabled(enabled) | ||
self.travel_increments_layout.setEnabled(enabled) |