from qgis.PyQt.QtWidgets import QAction, QMenu, QToolBar, QActionGroup class Navigation: def __init__(self, iface): self.iface = iface self.actions = [] # Menü und Toolbar einmalig anlegen self.menu = QMenu("LNO Sachsen", iface.mainWindow()) iface.mainWindow().menuBar().addMenu(self.menu) self.toolbar = QToolBar("LNO Sachsen") iface.addToolBar(self.toolbar) # Gruppe für exklusive Auswahl (nur ein Plugin aktiv) self.plugin_group = QActionGroup(iface.mainWindow()) self.plugin_group.setExclusive(True) def add_action(self, text, callback, tooltip="", priority=100): action = QAction(text, self.iface.mainWindow()) action.setToolTip(tooltip) action.setCheckable(True) # Button kann aktiv sein action.triggered.connect(callback) # Action in Gruppe aufnehmen self.plugin_group.addAction(action) # Action mit Priority speichern self.actions.append((priority, action)) return action def finalize_menu_and_toolbar(self): # Sortieren nach Priority self.actions.sort(key=lambda x: x[0]) # Menüeinträge self.menu.clear() for _, action in self.actions: self.menu.addAction(action) # Toolbar-Einträge self.toolbar.clear() for _, action in self.actions: self.toolbar.addAction(action) def set_active_plugin(self, active_action): # Alle zurücksetzen, dann aktives Plugin markieren for _, action in self.actions: action.setChecked(False) active_action.setChecked(True)