Repository navigation
Expand file tree
/
Copy pathplugin.py
More file actions
62 lines (55 loc) · 2.62 KB
/
Copy pathplugin.py
File metadata and controls
62 lines (55 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from pathlib import Path
from qgis.core import QgsApplication
from qgis.PyQt.QtCore import Qt, QSettings
from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtWidgets import QAction
from .ui.dock import AgentDock
class MapsukePlugin:
def __init__(self, iface, session_path=None):
self.iface = iface
self.session_path = session_path
self.dock = None
self.action = None
self.processing_provider = None
def initGui(self):
from .core.processing_provider import AgentProcessingProvider
if self.processing_provider is None:
provider = AgentProcessingProvider()
if QgsApplication.processingRegistry().addProvider(provider):
self.processing_provider = provider
icon = QIcon(str(Path(__file__).resolve().parent / "icon" / "icon.png"))
self.action = QAction(icon, "Mapsuke", self.iface.mainWindow())
self.action.triggered.connect(self.show)
self.iface.addPluginToMenu("Mapsuke", self.action)
self.iface.addToolBarIcon(self.action)
# Open on first enable, then follow whether the user left the dock open.
if QSettings().value("mapsuke/dock_open", True, type=bool):
self.show()
def show(self):
if self.dock is None:
self.dock = AgentDock(self.iface, self.session_path)
self.iface.addTabifiedDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.dock,
["LayerStyling", "ProcessingToolbox"], True)
self.dock.toggleViewAction().toggled.connect(self.remember_dock_open)
self.dock.show()
self.dock.raise_()
# The toggle signal needs a visible main window, which startup does not have yet.
self.remember_dock_open(True)
def remember_dock_open(self, visible):
QSettings().setValue("mapsuke/dock_open", visible)
def unload(self):
if self.processing_provider is not None:
QgsApplication.processingRegistry().removeProvider(self.processing_provider)
self.processing_provider = None
if self.dock is not None:
# Removing the dock hides it; that must not count as the user closing it.
self.dock.toggleViewAction().toggled.disconnect(self.remember_dock_open)
self.dock.shutdown()
self.iface.removeDockWidget(self.dock)
self.dock.deleteLater()
self.dock = None
if self.action is not None:
self.iface.removePluginMenu("Mapsuke", self.action)
self.iface.removeToolBarIcon(self.action)
self.action.deleteLater()
self.action = None