1
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2026-03-05 00:12:49 +01:00

fix(qt_ads): pythons stubs match structure of PySide6QtAds

This commit is contained in:
2025-11-19 15:46:55 +01:00
committed by Klaus Wakonig
parent 0119332bcf
commit a9039c5ee6
10 changed files with 93 additions and 87 deletions

View File

@@ -1,8 +1,7 @@
import os
import sys
import PySide6QtAds as QtAds
import bec_widgets.widgets.containers.qt_ads as QtAds
from bec_widgets.utils.bec_widget import BECWidget
from bec_widgets.utils.error_popups import SafeProperty, SafeSlot

View File

@@ -4,7 +4,6 @@ import os
from functools import partial
from typing import List, Literal
import PySide6QtAds as QtAds
import yaml
from bec_lib import config_helper
from bec_lib.bec_yaml_loader import yaml_load
@@ -12,7 +11,6 @@ from bec_lib.file_utils import DeviceConfigWriter
from bec_lib.logger import bec_logger
from bec_lib.plugin_helper import plugin_package_name, plugin_repo_path
from bec_qthemes import apply_theme
from PySide6QtAds import CDockManager, CDockWidget
from qtpy.QtCore import Qt, QThreadPool, QTimer
from qtpy.QtWidgets import (
QDialog,
@@ -28,6 +26,7 @@ from qtpy.QtWidgets import (
QWidget,
)
import bec_widgets.widgets.containers.qt_ads as QtAds
from bec_widgets import BECWidget
from bec_widgets.utils.error_popups import SafeSlot
from bec_widgets.utils.help_inspector.help_inspector import HelpInspector
@@ -158,7 +157,7 @@ class DeviceManagerView(BECWidget, QWidget):
self._root_layout = QVBoxLayout(self)
self._root_layout.setContentsMargins(0, 0, 0, 0)
self._root_layout.setSpacing(0)
self.dock_manager = CDockManager(self)
self.dock_manager = QtAds.CDockManager(self)
self.dock_manager.setStyleSheet("")
self._root_layout.addWidget(self.dock_manager)
@@ -237,9 +236,9 @@ class DeviceManagerView(BECWidget, QWidget):
self.dock_manager.addDockWidgetTabToArea(self.error_logs_dock, area)
for dock in self.dock_manager.dockWidgets():
dock.setFeature(CDockWidget.DockWidgetClosable, False)
dock.setFeature(CDockWidget.DockWidgetFloatable, False)
dock.setFeature(CDockWidget.DockWidgetMovable, False)
dock.setFeature(QtAds.CDockWidget.DockWidgetClosable, False)
dock.setFeature(QtAds.CDockWidget.DockWidgetFloatable, False)
dock.setFeature(QtAds.CDockWidget.DockWidgetMovable, False)
# Apply stretch after the layout is done
self.set_default_view([2, 8, 2], [7, 3])

View File

@@ -3,9 +3,7 @@ from __future__ import annotations
import os
from typing import Callable, Literal, Mapping, Sequence
import PySide6QtAds as QtAds
from bec_lib import bec_logger
from PySide6QtAds import CDockWidget
from qtpy.QtCore import QTimer, Signal
from qtpy.QtGui import QPixmap
from qtpy.QtWidgets import (
@@ -18,6 +16,7 @@ from qtpy.QtWidgets import (
QWidget,
)
import bec_widgets.widgets.containers.qt_ads as QtAds
from bec_widgets import BECWidget, SafeProperty, SafeSlot
from bec_widgets.cli.rpc.rpc_widget_handler import widget_handler
from bec_widgets.utils import BECDispatcher
@@ -66,6 +65,7 @@ from bec_widgets.widgets.containers.advanced_dock_area.toolbar_components.worksp
workspace_bundle,
)
from bec_widgets.widgets.containers.main_window.main_window import BECMainWindowNoRPC
from bec_widgets.widgets.containers.qt_ads import CDockWidget
from bec_widgets.widgets.control.device_control.positioner_box import PositionerBox, PositionerBox2D
from bec_widgets.widgets.control.scan_control import ScanControl
from bec_widgets.widgets.editors.web_console.web_console import WebConsole

View File

@@ -5,18 +5,17 @@ from dataclasses import dataclass
from typing import Any, Callable, Literal, Mapping, Sequence, cast
from bec_qthemes import material_icon
from PySide6QtAds import ads
from qtpy.QtCore import QByteArray, QSettings, Qt, QTimer
from qtpy.QtGui import QIcon
from qtpy.QtWidgets import QDialog, QVBoxLayout, QWidget
from shiboken6 import isValid
import bec_widgets.widgets.containers.ads as QtAds
import bec_widgets.widgets.containers.qt_ads as QtAds
from bec_widgets import BECWidget, SafeSlot
from bec_widgets.cli.rpc.rpc_widget_handler import widget_handler
from bec_widgets.utils.property_editor import PropertyEditor
from bec_widgets.utils.toolbars.actions import MaterialIconAction
from bec_widgets.widgets.containers.ads import (
from bec_widgets.widgets.containers.qt_ads import (
CDockAreaWidget,
CDockManager,
CDockSplitter,
@@ -70,7 +69,7 @@ class DockAreaWidget(BECWidget, QWidget):
tab_with: CDockWidget | None = None
relative_to: CDockWidget | None = None
title_visible: bool | None = None
title_buttons: Mapping[ads.TitleBarButton, bool] | None = None
title_buttons: Mapping[QtAds.ads.TitleBarButton, bool] | None = None
show_settings_action: bool | None = False
dock_preferences: Mapping[str, Any] | None = None
promote_central: bool = False
@@ -979,38 +978,38 @@ class DockAreaWidget(BECWidget, QWidget):
self._apply_splitter_tree(splitter, (), horizontal, vertical, overrides)
@staticmethod
def _title_bar_button_enum(name: str) -> ads.TitleBarButton | None:
def _title_bar_button_enum(name: str) -> QtAds.ads.TitleBarButton | None:
"""Translate a user-friendly button name into an ADS TitleBarButton enum."""
normalized = (name or "").lower().replace("-", "_").replace(" ", "_")
mapping: dict[str, ads.TitleBarButton] = {
"menu": ads.TitleBarButton.TitleBarButtonTabsMenu,
"tabs_menu": ads.TitleBarButton.TitleBarButtonTabsMenu,
"tabs": ads.TitleBarButton.TitleBarButtonTabsMenu,
"undock": ads.TitleBarButton.TitleBarButtonUndock,
"float": ads.TitleBarButton.TitleBarButtonUndock,
"detach": ads.TitleBarButton.TitleBarButtonUndock,
"close": ads.TitleBarButton.TitleBarButtonClose,
"auto_hide": ads.TitleBarButton.TitleBarButtonAutoHide,
"autohide": ads.TitleBarButton.TitleBarButtonAutoHide,
"minimize": ads.TitleBarButton.TitleBarButtonMinimize,
mapping: dict[str, QtAds.ads.TitleBarButton] = {
"menu": QtAds.ads.TitleBarButton.TitleBarButtonTabsMenu,
"tabs_menu": QtAds.ads.TitleBarButton.TitleBarButtonTabsMenu,
"tabs": QtAds.ads.TitleBarButton.TitleBarButtonTabsMenu,
"undock": QtAds.ads.TitleBarButton.TitleBarButtonUndock,
"float": QtAds.ads.TitleBarButton.TitleBarButtonUndock,
"detach": QtAds.ads.TitleBarButton.TitleBarButtonUndock,
"close": QtAds.ads.TitleBarButton.TitleBarButtonClose,
"auto_hide": QtAds.ads.TitleBarButton.TitleBarButtonAutoHide,
"autohide": QtAds.ads.TitleBarButton.TitleBarButtonAutoHide,
"minimize": QtAds.ads.TitleBarButton.TitleBarButtonMinimize,
}
return mapping.get(normalized)
def _normalize_title_buttons(
self,
spec: (
Mapping[str | ads.TitleBarButton, bool]
| Sequence[str | ads.TitleBarButton]
Mapping[str | QtAds.ads.TitleBarButton, bool]
| Sequence[str | QtAds.ads.TitleBarButton]
| str
| ads.TitleBarButton
| QtAds.ads.TitleBarButton
| None
),
) -> dict[ads.TitleBarButton, bool]:
) -> dict[QtAds.ads.TitleBarButton, bool]:
"""Normalize button visibility specifications into an enum mapping."""
if spec is None:
return {}
result: dict[ads.TitleBarButton, bool] = {}
result: dict[QtAds.ads.TitleBarButton, bool] = {}
if isinstance(spec, Mapping):
iterator = spec.items()
else:
@@ -1019,7 +1018,7 @@ class DockAreaWidget(BECWidget, QWidget):
iterator = ((name, False) for name in spec)
for name, visible in iterator:
if isinstance(name, ads.TitleBarButton):
if isinstance(name, QtAds.ads.TitleBarButton):
enum = name
else:
enum = self._title_bar_button_enum(str(name))

View File

@@ -20,10 +20,11 @@ from bec_lib import bec_logger
from bec_lib.client import BECClient
from bec_lib.plugin_helper import plugin_package_name, plugin_repo_path
from pydantic import BaseModel, Field
from PySide6QtAds import CDockWidget
from qtpy.QtCore import QByteArray, QDateTime, QSettings, Qt
from qtpy.QtGui import QPixmap
from bec_widgets.widgets.containers.qt_ads import CDockWidget
logger = bec_logger.logger
MODULE_PATH = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))

View File

@@ -7,61 +7,11 @@ import typing
from qtpy import QtCore, QtGui, QtWidgets
from qtpy.QtCore import Signal
from bec_widgets.widgets.containers.qt_ads import ads
from bec_widgets.widgets.containers.qt_ads.ads import *
# pylint: disable=unused-argument,invalid-name, missing-function-docstring, super-init-not-called
class SideBarLocation(enum.Enum):
SideBarTop = ...
SideBarLeft = ...
SideBarRight = ...
SideBarBottom = ...
SideBarNone = ...
class eBitwiseOperator(enum.Enum):
BitwiseAnd = ...
BitwiseOr = ...
class eIcon(enum.Enum):
TabCloseIcon = ...
AutoHideIcon = ...
DockAreaMenuIcon = ...
DockAreaUndockIcon = ...
DockAreaCloseIcon = ...
DockAreaMinimizeIcon = ...
IconCount = ...
class eDragState(enum.Enum):
DraggingInactive = ...
DraggingMousePressed = ...
DraggingTab = ...
DraggingFloatingWidget = ...
class TitleBarButton(enum.Enum):
TitleBarButtonTabsMenu = ...
TitleBarButtonUndock = ...
TitleBarButtonClose = ...
TitleBarButtonAutoHide = ...
TitleBarButtonMinimize = ...
class eTabIndex(enum.Enum):
TabDefaultInsertIndex = ...
TabInvalidIndex = ...
class DockWidgetArea(enum.Enum):
NoDockWidgetArea = ...
LeftDockWidgetArea = ...
RightDockWidgetArea = ...
TopDockWidgetArea = ...
BottomDockWidgetArea = ...
CenterDockWidgetArea = ...
LeftAutoHideArea = ...
RightAutoHideArea = ...
TopAutoHideArea = ...
BottomAutoHideArea = ...
InvalidDockWidgetArea = ...
OuterDockAreas = ...
AutoHideDockAreas = ...
AllDockAreas = ...
class CAutoHideDockContainer(QtWidgets.QFrame):
def __init__(
self,

View File

@@ -0,0 +1,58 @@
from __future__ import annotations
import enum
# pylint: disable=unused-argument,invalid-name, missing-function-docstring, super-init-not-called
class SideBarLocation(enum.Enum):
SideBarTop = ...
SideBarLeft = ...
SideBarRight = ...
SideBarBottom = ...
SideBarNone = ...
class eBitwiseOperator(enum.Enum):
BitwiseAnd = ...
BitwiseOr = ...
class eIcon(enum.Enum):
TabCloseIcon = ...
AutoHideIcon = ...
DockAreaMenuIcon = ...
DockAreaUndockIcon = ...
DockAreaCloseIcon = ...
DockAreaMinimizeIcon = ...
IconCount = ...
class eDragState(enum.Enum):
DraggingInactive = ...
DraggingMousePressed = ...
DraggingTab = ...
DraggingFloatingWidget = ...
class TitleBarButton(enum.Enum):
TitleBarButtonTabsMenu = ...
TitleBarButtonUndock = ...
TitleBarButtonClose = ...
TitleBarButtonAutoHide = ...
TitleBarButtonMinimize = ...
class eTabIndex(enum.Enum):
TabDefaultInsertIndex = ...
TabInvalidIndex = ...
class DockWidgetArea(enum.Enum):
NoDockWidgetArea = ...
LeftDockWidgetArea = ...
RightDockWidgetArea = ...
TopDockWidgetArea = ...
BottomDockWidgetArea = ...
CenterDockWidgetArea = ...
LeftAutoHideArea = ...
RightAutoHideArea = ...
TopAutoHideArea = ...
BottomAutoHideArea = ...
InvalidDockWidgetArea = ...
OuterDockAreas = ...
AutoHideDockAreas = ...
AllDockAreas = ...

View File

@@ -9,8 +9,8 @@ from bec_lib.macro_update_handler import has_executable_code
from qtpy.QtCore import QEvent, QTimer, Signal
from qtpy.QtWidgets import QFileDialog, QMessageBox, QToolButton, QWidget
from bec_widgets.widgets.containers.ads import CDockAreaWidget, CDockWidget
from bec_widgets.widgets.containers.advanced_dock_area.basic_dock_area import DockAreaWidget
from bec_widgets.widgets.containers.qt_ads import CDockAreaWidget, CDockWidget
from bec_widgets.widgets.editors.monaco.monaco_widget import MonacoWidget
logger = bec_logger.logger