1
1
from __future__ import annotations
2
2
3
- from typing import Callable
3
+ from typing import TYPE_CHECKING , Callable
4
4
5
5
from qgis .core import QgsApplication
6
6
from qgis .PyQt .QtCore import QCoreApplication , Qt , QTranslator
15
15
from arho_feature_template .qgis_plugin_tools .tools .resources import plugin_name , resources_path
16
16
from arho_feature_template .utils .misc_utils import disconnect_signal , iface
17
17
18
+ if TYPE_CHECKING :
19
+ from qgis .gui import QgsDockWidget
20
+
18
21
19
22
class Plugin :
20
23
"""QGIS Plugin Implementation."""
@@ -120,33 +123,23 @@ def add_action(
120
123
return action
121
124
122
125
def initGui (self ) -> None : # noqa N802
126
+ # Plan manager
123
127
self .plan_manager = PlanManager ()
128
+ iface .mapCanvas ().mapToolSet .connect (self .plan_manager .plan_digitize_map_tool .deactivate )
124
129
125
- iface .addDockWidget (Qt .RightDockWidgetArea , self .plan_manager .new_feature_dock )
126
- self .plan_manager .new_feature_dock .setUserVisible (False )
127
-
128
- self .plan_manager .new_feature_dock .visibilityChanged .connect (self .new_feature_dock_visibility_changed )
129
-
130
+ # Docks
130
131
self .validation_dock = ValidationDock ()
131
132
iface .addDockWidget (Qt .RightDockWidgetArea , self .validation_dock )
132
- self .validation_dock .setUserVisible (False )
133
- self .validation_dock .visibilityChanged .connect (self .validation_dock_visibility_changed )
134
-
135
- iface .mapCanvas ().mapToolSet .connect (self .plan_manager .plan_digitize_map_tool .deactivate )
136
-
137
- # Regulation groups dock
133
+ iface .addDockWidget (Qt .RightDockWidgetArea , self .plan_manager .new_feature_dock )
138
134
iface .addDockWidget (Qt .RightDockWidgetArea , self .plan_manager .regulation_groups_dock )
139
- self .plan_manager .regulation_groups_dock .setUserVisible (False )
140
- self .plan_manager .regulation_groups_dock .visibilityChanged .connect (
141
- self .regulation_groups_dock_visibility_changed
142
- )
143
135
144
136
# Try initializing the plugin immediately in case the project is already open
145
137
self .plan_manager .initialize_from_project ()
146
138
147
139
# (Re)initialize whenever a project is opened
148
140
iface .projectRead .connect (self .plan_manager .initialize_from_project )
149
141
142
+ # Actions
150
143
self .new_land_use_plan_action = self .add_action (
151
144
text = "Luo kaava" ,
152
145
icon = QIcon (resources_path ("icons" , "toolbar" , "luo_kaava2.svg" )),
@@ -183,8 +176,7 @@ def initGui(self) -> None: # noqa N802
183
176
text = "Luo kaavakohde" ,
184
177
# icon=QgsApplication.getThemeIcon("mIconFieldGeometry.svg"),
185
178
icon = QIcon (resources_path ("icons" , "toolbar" , "luo_kaavakohde.svg" )),
186
- toggled_callback = self .toggle_new_feature_dock ,
187
- checkable = True ,
179
+ triggered_callback = lambda _ : self .toggle_dock_visibility (self .plan_manager .new_feature_dock ),
188
180
add_to_menu = True ,
189
181
add_to_toolbar = True ,
190
182
)
@@ -201,8 +193,7 @@ def initGui(self) -> None: # noqa N802
201
193
self .regulation_groups_dock_action = self .add_action (
202
194
text = "Hallitse kaavamääräysryhmiä" ,
203
195
icon = QgsApplication .getThemeIcon ("mActionOpenTable.svg" ),
204
- toggled_callback = self .toggle_regulation_groups_dock ,
205
- checkable = True ,
196
+ triggered_callback = lambda _ : self .toggle_dock_visibility (self .plan_manager .regulation_groups_dock ),
206
197
add_to_menu = True ,
207
198
add_to_toolbar = True ,
208
199
)
@@ -211,8 +202,7 @@ def initGui(self) -> None: # noqa N802
211
202
text = "Validointi" ,
212
203
# icon=QgsApplication.getThemeIcon("mActionEditNodesItem.svg"),
213
204
icon = QIcon (resources_path ("icons" , "toolbar" , "kaavan_validointi2.svg" )),
214
- toggled_callback = self .toggle_validation_dock ,
215
- checkable = True ,
205
+ triggered_callback = lambda _ : self .toggle_dock_visibility (self .validation_dock ),
216
206
add_to_menu = True ,
217
207
add_to_toolbar = True ,
218
208
)
@@ -249,6 +239,13 @@ def initGui(self) -> None: # noqa N802
249
239
lambda : self .identify_plan_features_action .setChecked (False )
250
240
)
251
241
242
+ def toggle_dock_visibility (self , dock_widget : QgsDockWidget ):
243
+ if dock_widget .isUserVisible ():
244
+ dock_widget .hide ()
245
+ else :
246
+ dock_widget .show ()
247
+ dock_widget .raise_ ()
248
+
252
249
def add_new_plan (self ):
253
250
self .plan_manager .add_new_plan ()
254
251
@@ -295,21 +292,3 @@ def unload(self) -> None:
295
292
296
293
# Handle logger
297
294
teardown_logger (Plugin .name )
298
-
299
- def new_feature_dock_visibility_changed (self , visible : bool ) -> None : # noqa: FBT001
300
- self .new_feature_dock_action .setChecked (visible )
301
-
302
- def toggle_new_feature_dock (self , show : bool ) -> None : # noqa: FBT001
303
- self .plan_manager .new_feature_dock .setUserVisible (show )
304
-
305
- def regulation_groups_dock_visibility_changed (self , visible : bool ) -> None : # noqa: FBT001
306
- self .regulation_groups_dock_action .setChecked (visible )
307
-
308
- def toggle_regulation_groups_dock (self , show : bool ) -> None : # noqa: FBT001
309
- self .plan_manager .regulation_groups_dock .setUserVisible (show )
310
-
311
- def validation_dock_visibility_changed (self , visible : bool ) -> None : # noqa: FBT001
312
- self .validation_dock_action .setChecked (visible )
313
-
314
- def toggle_validation_dock (self , show : bool ) -> None : # noqa: FBT001
315
- self .validation_dock .setUserVisible (show )
0 commit comments