Skip to content

Commit

Permalink
Merge pull request #292 from kartoza/widgetfactory-single-buffer-point
Browse files Browse the repository at this point in the history
Widgetfactory single buffer point
  • Loading branch information
hennie-k committed Sep 20, 2024
2 parents 0d58ca8 + df8821c commit 4a03d11
Showing 1 changed file with 24 additions and 9 deletions.
33 changes: 24 additions & 9 deletions geest/gui/widgets/geest_widget_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def create_widgets(layer_data: dict, parent=None):
"type": "spinbox",
"min": 0,
"max": 10000,
"default": layer_data.get("Default Single Buffer Distances", 0),
"default": layer_data.get("Default Single Buffer Distance", 0),
"tooltip": "Enter buffer distance."
},
"Use Create Grid": {
Expand Down Expand Up @@ -200,26 +200,41 @@ def create_specific_widget(mapping: dict, layer_data: dict):
"""
widget_type = mapping["type"]

#-- guard against GIGO
def safe_float(value, default):
try:
return float(value) if value != '' else default
except (ValueError, TypeError):
return default

# -- guard against GIGO
def safe_int(value, default):
try:
return int(float(value)) if value != '' else default
except (ValueError, TypeError):
return default

if widget_type == "doublespinbox":
widget = QDoubleSpinBox()
widget.setMinimum(mapping.get("min", 0.0))
widget.setMaximum(mapping.get("max", 100.0))
widget.setDecimals(mapping.get("decimals", 1))
widget.setValue(mapping.get("default", 0.0))
widget.setMinimum(safe_float(mapping.get("min"), 0.0))
widget.setMaximum(safe_float(mapping.get("max"), 100.0))
widget.setDecimals(safe_int(mapping.get("decimals"), 1))
widget.setValue(safe_float(mapping.get("default"), 0.0))
widget.setToolTip(mapping.get("tooltip", ""))
return widget

elif widget_type == "spinbox":
widget = QSpinBox()
widget.setMinimum(mapping.get("min", 0))
widget.setMaximum(mapping.get("max", 10000))
widget.setValue(mapping.get("default", 0))
widget.setMinimum(safe_int(mapping.get("min"), 0))
widget.setMaximum(safe_int(mapping.get("max"), 10000))
widget.setValue(safe_int(mapping.get("default"), 0))
widget.setToolTip(mapping.get("tooltip", ""))
return widget

elif widget_type == "lineedit":
widget = QLineEdit()
widget.setText(mapping.get("default", ""))
default_value = mapping.get("default", "")
widget.setText(str(default_value))
widget.setToolTip(mapping.get("tooltip", ""))
return widget

Expand Down

0 comments on commit 4a03d11

Please sign in to comment.