1
1
from dataclasses import dataclass
2
- from typing import List
3
2
4
3
from qgis .core import QgsMapLayer , QgsProject , QgsVectorLayer
4
+ from qgis .utils import iface
5
5
6
6
7
7
# To be extended and moved
@@ -10,18 +10,21 @@ class LandUsePlan:
10
10
id : str
11
11
name : str
12
12
13
+
13
14
# To be replaced later
14
15
LAYER_PLAN_ID_MAP = {
15
16
"land_use_plan" : "id" ,
16
17
"land_use_area" : "plan_id" ,
17
18
"Osa-alue" : "plan_id" ,
18
19
}
19
20
21
+
20
22
def update_selected_plan (new_plan : LandUsePlan ):
21
23
"""Update the project layers based on the selected land use plan."""
22
- id = new_plan .id
24
+ plan_id = new_plan .id
23
25
for layer_name , field_name in LAYER_PLAN_ID_MAP .items ():
24
- set_filter_for_vector_layer (layer_name , field_name , id )
26
+ set_filter_for_vector_layer (layer_name , field_name , plan_id )
27
+
25
28
26
29
def set_filter_for_vector_layer (layer_name : str , field_name : str , field_value : str ):
27
30
# Get layer and perform checks
@@ -36,18 +39,20 @@ def set_filter_for_vector_layer(layer_name: str, field_name: str, field_value: s
36
39
query = f"{ field_name } = { field_value } "
37
40
if not layer .setSubsetString (query ):
38
41
# TODO: Convert to log msg?
39
- print (f"ERROR: Failed to filter layer { layer_name } with query { query } " )
42
+ iface .messageBar ().pushMessage ("Error" , f"Failed to filter layer { layer_name } with query { query } " , level = 3 )
43
+
40
44
41
45
def _check_layer_count (layers : list ) -> bool :
42
46
"""Check if any layers are returned."""
43
47
if not layers :
44
- print ( " ERROR: No layers found with the specified name." )
48
+ iface . messageBar (). pushMessage ( "Error" , " ERROR: No layers found with the specified name.", level = 3 )
45
49
return False
46
50
return True
47
51
52
+
48
53
def _check_vector_layer (layer : QgsMapLayer ) -> bool :
49
54
"""Check if the given layer is a vector layer."""
50
55
if not isinstance (layer , QgsVectorLayer ):
51
- print ( f"ERROR: Layer { layer .name ()} is not a vector layer: { type (layer )} " )
56
+ iface . messageBar (). pushMessage ( "Error" , f" Layer { layer .name ()} is not a vector layer: { type (layer )} ", level = 3 )
52
57
return False
53
58
return True
0 commit comments