Anpassung an den Wrappern für sn_plan41

This commit is contained in:
2026-01-08 17:13:51 +01:00
parent f88b5da51f
commit b805f78f02
26 changed files with 401 additions and 125 deletions

View File

@@ -6,6 +6,17 @@ Basis-Dockwidget für alle LNO-Module.
from sn_basis.functions.qt_wrapper import QDockWidget, QTabWidget
from sn_basis.functions.message_wrapper import warning, error
from sn_basis.functions.qt_wrapper import (
QDockWidget,
QTabWidget,
Qt,
DockWidgetMovable,
DockWidgetFloatable,
DockWidgetClosable,
DockAreaLeft,
DockAreaRight,
)
class BaseDockWidget(QDockWidget):
@@ -23,6 +34,19 @@ class BaseDockWidget(QDockWidget):
def __init__(self, parent=None, subtitle=""):
super().__init__(parent)
# -----------------------------------------------------
# Dock-Konfiguration (WICHTIG)
# -----------------------------------------------------
self.setFeatures(
DockWidgetMovable
| DockWidgetFloatable
| DockWidgetClosable
)
self.setAllowedAreas(
DockAreaLeft
| DockAreaRight
)
# -----------------------------------------------------
# Titel setzen

View File

@@ -5,7 +5,7 @@ Verwaltet das Anzeigen und Ersetzen von DockWidgets.
Stellt sicher, dass immer nur ein sn_basis-Dock gleichzeitig sichtbar ist.
"""
from typing import Any
from typing import Any, Optional
from sn_basis.functions import (
add_dock_widget,
@@ -14,6 +14,9 @@ from sn_basis.functions import (
warning,
error,
)
from sn_basis.functions.qt_wrapper import (
DockAreaRight,
)
class DockManager:
@@ -24,22 +27,34 @@ class DockManager:
dock_prefix = "sn_dock_"
@classmethod
def show(cls, dock_widget: Any, area=None) -> None:
def show(cls, dock_widget: Any, area: Optional[Any] = None) -> None:
"""
Zeigt ein DockWidget an und entfernt vorher alle anderen
sn_basis-Docks (erkennbar am Prefix 'sn_dock_').
"""
# -----------------------------------------------------
# Default-Dock-Area (wrapper-konform)
# -----------------------------------------------------
if area is None:
area = DockAreaRight
if dock_widget is None:
error("Dock konnte nicht angezeigt werden", "Dock-Widget ist None.")
return
try:
# -------------------------------------------------
# Sicherstellen, dass das Dock einen Namen hat
# -------------------------------------------------
if not dock_widget.objectName():
dock_widget.setObjectName(f"{cls.dock_prefix}{id(dock_widget)}")
dock_widget.setObjectName(
f"{cls.dock_prefix}{id(dock_widget)}"
)
# -------------------------------------------------
# Vorhandene Plugin-Docks entfernen
# -------------------------------------------------
try:
for widget in find_dock_widgets():
if (
@@ -54,7 +69,9 @@ class DockManager:
str(e),
)
# -------------------------------------------------
# Neues Dock anzeigen
# -------------------------------------------------
try:
add_dock_widget(area, dock_widget)
dock_widget.show()
@@ -66,4 +83,3 @@ class DockManager:
except Exception as e:
error("DockManager-Fehler", str(e))

View File

@@ -47,7 +47,8 @@ class Navigation:
test_action = QAction("TEST ACTION", main_window)
self.menu.addAction(test_action)
self.toolbar.addAction(test_action)
self.plugin_group = QActionGroup(main_window)
self.plugin_group.setExclusive(True)
# -----------------------------------------------------

View File

@@ -8,7 +8,7 @@ from sn_basis.functions.qt_wrapper import QDockWidget, QTabWidget
from sn_basis.functions.message_wrapper import warning, error
class BaseDockWidget(QDockWidget):
class SettingsTab(QDockWidget):
"""
Basis-Dockwidget für alle LNO-Module.