Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Widgetfactory classify polygon #301

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
2681f73
Adds polygon_layer_with_field_selector type to widget factory
hennie-k Sep 20, 2024
f6e33c7
Adds polygon_layer_with_field_selector handling to geest_config_widget
hennie-k Sep 20, 2024
ccad89a
Fixes polygon_layer_with_field_selector handling in geest_config_widget
hennie-k Sep 20, 2024
c77bb11
Fixes polygon_layer_with_field_selector handling in geest_config_widg…
hennie-k Sep 20, 2024
ff7f6de
Adds missing closing bracket
hennie-k Sep 20, 2024
1714e44
Fixes foi selection insertion
hennie-k Sep 20, 2024
b137719
Fixes foi selection insertion
hennie-k Sep 20, 2024
a364e52
Removes unused function
hennie-k Sep 22, 2024
72e9fdf
Applies gigo guard
hennie-k Sep 22, 2024
d8a52d4
Temporarily removes disabling of widgets
hennie-k Sep 22, 2024
5031bc5
Adjusts layer and field combobox handling for the 'Classify polygons'…
hennie-k Sep 22, 2024
56fdff4
Resolves conflicts
hennie-k Sep 23, 2024
ea80849
Removes unused import
hennie-k Sep 23, 2024
133fa8d
Removes unused import, fills paragraph
hennie-k Sep 23, 2024
b8dbcb9
Removes unused imports, reformats block comment
hennie-k Sep 23, 2024
818ff29
Reformats line to be < 79 chars
hennie-k Sep 23, 2024
30c94d8
Implements widgetfactory-mulibuffer-point widget
hennie-k Sep 23, 2024
b872130
Merge branch 'main' into widgetfactory-mulibuffer-point
hennie-k Sep 23, 2024
fe537df
Adds classify_poly_into_classes_widget class
hennie-k Sep 23, 2024
2c0ac6b
Ensures radio button signal propagation and output dict modification
hennie-k Sep 23, 2024
96ed2f2
Reformats source
hennie-k Sep 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion geest/gui/tree_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
from geest.core.workflow_queue_manager import WorkflowQueueManager



class TreePanel(QWidget):
def __init__(self, parent=None, json_file=None):
super().__init__(parent)
Expand Down
70 changes: 70 additions & 0 deletions geest/gui/widgets/classify_poly_into_classes_widget.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
from qgis.PyQt.QtWidgets import QWidget, QVBoxLayout, QLabel, QComboBox
from qgis.PyQt.QtCore import pyqtSignal
from qgis.gui import QgsMapLayerComboBox
from qgis.core import QgsMapLayerProxyModel, QgsVectorLayer


class ClassifyPolyIntoClassesWidget(QWidget):
# Define a custom signal
selectionsChanged = pyqtSignal()

def __init__(self, parent=None):
super().__init__(parent)
self._layout = QVBoxLayout()
self.setLayout(self._layout)

# Set the widget type property
self.setProperty("widget_type", "classify_poly_into_classes")

# Layer selector
self.layer_label = QLabel("Select Polygon Layer:")
self._layout.addWidget(self.layer_label)
self.layer_selector = QgsMapLayerComboBox()
self.layer_selector.setFilters(QgsMapLayerProxyModel.PolygonLayer)
self._layout.addWidget(self.layer_selector)

# Field selector
self.field_label = QLabel("Select Field of Interest:")
self._layout.addWidget(self.field_label)
self.field_selector = QComboBox()
self._layout.addWidget(self.field_selector)

# Connect the layer changed signal
self.layer_selector.layerChanged.connect(self.update_fields)

# Connect the field changed signal to emit selectionsChanged
self.field_selector.currentTextChanged.connect(self.emit_selections_changed)

# Initial update
initial_layer = self.layer_selector.currentLayer()
if initial_layer:
self.update_fields(initial_layer)
else:
print("[ClassifyPolyIntoClassesWidget] No initial layer selected")

def update_fields(self, layer):
print(
f"[ClassifyPolyIntoClassesWidget] Updating fields for layer: {layer.name() if layer else 'None'}"
)
self.field_selector.clear()
if isinstance(layer, QgsVectorLayer):
fields = [field.name() for field in layer.fields()]
self.field_selector.addItems(fields)
print(f"[ClassifyPolyIntoClassesWidget] Fields added: {fields}")
else:
print("[ClassifyPolyIntoClassesWidget] Layer is not a vector layer")
# Emit signal since fields have been updated
self.selectionsChanged.emit()

def emit_selections_changed(self):
print("[ClassifyPolyIntoClassesWidget] Selections changed")
self.selectionsChanged.emit()

def get_selections(self):
return self.layer_selector.currentLayer(), self.field_selector.currentText()

def set_tooltip(self, tooltip):
self.setToolTip(tooltip)

def set_use_key(self, use_key):
self.setProperty("use_key", use_key)
Loading
Loading