From abb88d3df63092098a3caeabf7aac2947912fe97 Mon Sep 17 00:00:00 2001 From: Christoph Schmidt <christoph.,schmidt@tugraz.at> Date: Thu, 4 Jan 2024 15:04:35 +0100 Subject: [PATCH] Optimized imports. Updated to Version 1.0.0 --- pyproject.toml | 2 +- src/CaptDeviceControl/__init__.py | 5 ---- .../controller/BaseAD2CaptDevice.py | 13 +++------ .../HWConnectedDeviceInformation.py | 2 +- .../DeviceInformation/HWDeviceBase.py | 4 +-- .../DeviceInformation/HWDeviceInformation.py | 2 +- .../DeviceInformation/WaveFormsAPI.py | 1 - .../dataclasses/AnalogInChannelInfo.py | 3 +- .../controller/mp_AD2Capture/MPCaptDevice.py | 7 ++--- .../mp_AD2Capture/MPCaptDeviceControl.py | 6 ++-- .../model/AD2CaptDeviceModel.py | 4 +-- .../model/AD2CaptDeviceSignals.py | 1 + .../submodels/AD2CaptDeviceAnalogInModel.py | 3 ++ .../submodels/AD2CaptDeviceCapturingModel.py | 2 -- .../resources/icons-svg/cil-media-play.svg | 4 +-- .../icons-svg/single_color/cil-media-play.svg | 4 +-- .../resources/icons/icon_adc.svg | 28 +++++++++---------- .../view/AD2CaptDeviceView.py | 7 +---- .../view/Ui_AD2ControlWindow.py | 19 +++++-------- .../view/Ui_AD2ControlWindowNew.py | 20 ++++++------- src/CaptDeviceControl/view/Ui_title_area.py | 18 +++++------- .../view/widget/WidgetCapturingInformation.py | 1 - 22 files changed, 61 insertions(+), 95 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9eda6de..336fd1c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "captdevicecontrol" -version = "0.2.3" +version = "1.0.0" authors = [ { name="Christoph Schmidt", email="cschmidt.fs@gmail.com" }, ] diff --git a/src/CaptDeviceControl/__init__.py b/src/CaptDeviceControl/__init__.py index eb96e39..47b8d7d 100644 --- a/src/CaptDeviceControl/__init__.py +++ b/src/CaptDeviceControl/__init__.py @@ -4,8 +4,3 @@ Author(s): Christoph Schmidt <christoph.schmidt@tugraz.at> Created: 2023-10-19 12:35 Package Version: """ -import sys -from .CaptDeviceConfig import CaptDeviceConfig as Config -from .controller.BaseAD2CaptDevice import BaseAD2CaptDevice as Controller -from .model.AD2CaptDeviceModel import AD2CaptDeviceModel as Model -from .view.AD2CaptDeviceView import ControlWindow as View \ No newline at end of file diff --git a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py index 20575af..027ce0b 100644 --- a/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py +++ b/src/CaptDeviceControl/controller/BaseAD2CaptDevice.py @@ -1,21 +1,16 @@ import logging -import os -import sys import time from abc import abstractmethod from collections import deque +from multiprocessing import Queue, Value, Lock import cmp -from PySide6.QtCore import QObject, QThreadPool, Signal -from multiprocessing import Process, Queue, Value, Lock +from PySide6.QtCore import QThreadPool, Signal from numpy import ndarray -from rich.logging import RichHandler -from CaptDeviceControl.model.AD2CaptDeviceModel import AD2CaptDeviceModel, AD2CaptDeviceSignals -from CaptDeviceControl.model.AD2Constants import AD2Constants - -from CaptDeviceControl.controller.mp_AD2Capture.MPCaptDeviceControl import MPCaptDeviceControl from CaptDeviceControl.controller.mp_AD2Capture.MPCaptDevice import MPCaptDevice +from CaptDeviceControl.model.AD2CaptDeviceModel import AD2CaptDeviceModel +from CaptDeviceControl.model.AD2Constants import AD2Constants class BaseAD2CaptDevice(cmp.CProcessControl): diff --git a/src/CaptDeviceControl/controller/DeviceInformation/HWConnectedDeviceInformation.py b/src/CaptDeviceControl/controller/DeviceInformation/HWConnectedDeviceInformation.py index 3930094..30c300e 100644 --- a/src/CaptDeviceControl/controller/DeviceInformation/HWConnectedDeviceInformation.py +++ b/src/CaptDeviceControl/controller/DeviceInformation/HWConnectedDeviceInformation.py @@ -6,8 +6,8 @@ Package Version: """ from ctypes import CDLL -from controller.DeviceInformation.dataclasses.AnalogInChannelInfo import AnalogInChannels from controller.DeviceInformation.AnalogOutChannel import AnalogOutChannels +from controller.DeviceInformation.dataclasses.AnalogInChannelInfo import AnalogInChannels class HWConnectedDeviceInformation: diff --git a/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceBase.py b/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceBase.py index c1cfda7..058fd49 100644 --- a/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceBase.py +++ b/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceBase.py @@ -4,9 +4,7 @@ Author(s): Christoph Schmidt <christoph.schmidt@tugraz.at> Created: 2023-10-19 12:35 Package Version: """ -from ctypes import CDLL, c_int, create_string_buffer, c_int32, byref - -from constants.dwfconstants import enumfilterType, enumfilterUSB, enumfilterDemo +from ctypes import CDLL, c_int, create_string_buffer class HWDeviceBase: diff --git a/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceInformation.py b/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceInformation.py index 59d6799..1a9131a 100644 --- a/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceInformation.py +++ b/src/CaptDeviceControl/controller/DeviceInformation/HWDeviceInformation.py @@ -4,7 +4,7 @@ Author(s): Christoph Schmidt <christoph.schmidt@tugraz.at> Created: 2023-10-19 12:35 Package Version: """ -from ctypes import c_int, create_string_buffer, CDLL, byref +from ctypes import CDLL from controller.DeviceInformation.WaveFormsAPI import WFAPIDeviceEnumeration, WFAPIDeviceControl, WFAPIChannels from controller.DeviceInformation.dataclasses.AnalogInChannelInfo import AnalogInChannelInfo, AnalogInChannelRetriever diff --git a/src/CaptDeviceControl/controller/DeviceInformation/WaveFormsAPI.py b/src/CaptDeviceControl/controller/DeviceInformation/WaveFormsAPI.py index 02bb605..3f7b751 100644 --- a/src/CaptDeviceControl/controller/DeviceInformation/WaveFormsAPI.py +++ b/src/CaptDeviceControl/controller/DeviceInformation/WaveFormsAPI.py @@ -6,7 +6,6 @@ Package Version: """ import logging import sys -from abc import abstractmethod from ctypes import c_int, byref, c_double, CDLL, create_string_buffer, cdll, c_int32 from constants.dwfconstants import enumfilterType, enumfilterDemo, enumfilterUSB diff --git a/src/CaptDeviceControl/controller/DeviceInformation/dataclasses/AnalogInChannelInfo.py b/src/CaptDeviceControl/controller/DeviceInformation/dataclasses/AnalogInChannelInfo.py index 96d637b..4d8d8fc 100644 --- a/src/CaptDeviceControl/controller/DeviceInformation/dataclasses/AnalogInChannelInfo.py +++ b/src/CaptDeviceControl/controller/DeviceInformation/dataclasses/AnalogInChannelInfo.py @@ -4,10 +4,9 @@ Author(s): Christoph Schmidt <christoph.schmidt@tugraz.at> Created: 2023-10-19 12:35 Package Version: """ -from ctypes import CDLL, c_int, byref, c_double +from ctypes import CDLL, c_int from dataclasses import dataclass -from controller.DeviceInformation.HWDeviceBase import HWDeviceBase from controller.DeviceInformation.WaveFormsAPI import WFAPIChannels diff --git a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py index 8f51713..7eef40f 100644 --- a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py +++ b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDevice.py @@ -1,17 +1,16 @@ -import ctypes -import os +import sys import sys import time -from ctypes import c_int, c_int32, byref, create_string_buffer, cdll, c_double, c_byte, CDLL +from ctypes import c_int, c_int32, byref, create_string_buffer, cdll, c_double, c_byte from multiprocessing import Queue, Value import cmp import numpy as np from cmp.CProperty import CProperty +from CaptDeviceControl.model.AD2Constants import AD2Constants from constants.dwfconstants import enumfilterType, enumfilterDemo, enumfilterUSB, acqmodeRecord, DwfStateConfig, \ DwfStatePrefill, DwfStateArmed -from CaptDeviceControl.model.AD2Constants import AD2Constants class MPCaptDevice(cmp.CProcess, ): diff --git a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py index e845f1e..789f579 100644 --- a/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py +++ b/src/CaptDeviceControl/controller/mp_AD2Capture/MPCaptDeviceControl.py @@ -1,13 +1,11 @@ -import logging import os import cmp from PySide6.QtCore import Signal - -from CaptDeviceControl.model.AD2CaptDeviceModel import AD2CaptDeviceSignals, AD2CaptDeviceModel -from CaptDeviceControl.model.AD2Constants import AD2Constants from CaptDeviceControl.controller.mp_AD2Capture.MPCaptDevice import MPCaptDevice +from CaptDeviceControl.model.AD2CaptDeviceModel import AD2CaptDeviceModel +from CaptDeviceControl.model.AD2Constants import AD2Constants class MPCaptDeviceControl(cmp.CProcessControl): diff --git a/src/CaptDeviceControl/model/AD2CaptDeviceModel.py b/src/CaptDeviceControl/model/AD2CaptDeviceModel.py index 29fda1f..e8c0b56 100644 --- a/src/CaptDeviceControl/model/AD2CaptDeviceModel.py +++ b/src/CaptDeviceControl/model/AD2CaptDeviceModel.py @@ -1,9 +1,9 @@ -from ctypes import c_int, Array +from ctypes import Array from PySide6.QtCore import QObject, Signal -from CaptDeviceControl.model.AD2Constants import AD2Constants from CaptDeviceControl.CaptDeviceConfig import CaptDeviceConfig as Config +from CaptDeviceControl.model.AD2Constants import AD2Constants from CaptDeviceControl.model.submodels.AD2CaptDeviceAnalogInModel import AD2CaptDeviceAnalogInModel from CaptDeviceControl.model.submodels.AD2CaptDeviceCapturingModel import AD2CaptDeviceCapturingModel from CaptDeviceControl.model.submodels.AD2CaptDeviceInformationModel import AD2CaptDeviceInformationModel diff --git a/src/CaptDeviceControl/model/AD2CaptDeviceSignals.py b/src/CaptDeviceControl/model/AD2CaptDeviceSignals.py index bcc5e8f..5c63eaa 100644 --- a/src/CaptDeviceControl/model/AD2CaptDeviceSignals.py +++ b/src/CaptDeviceControl/model/AD2CaptDeviceSignals.py @@ -9,6 +9,7 @@ from PySide6.QtCore import QObject, Signal from CaptDeviceConfig import CaptDeviceConfig as Config from CaptDeviceControl.controller.DeviceInformation.HWDeviceInformation import HWDeviceInformation + class AD2CaptDeviceSignals(QObject): def __init__(self, parent=None): super().__init__(parent) diff --git a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceAnalogInModel.py b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceAnalogInModel.py index c22edf9..413d285 100644 --- a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceAnalogInModel.py +++ b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceAnalogInModel.py @@ -1,7 +1,10 @@ from ctypes import c_int, c_byte from PySide6.QtCore import QObject, Signal + from CaptDeviceControl.CaptDeviceConfig import CaptDeviceConfig + + class AD2CaptDeviceAnalogInSignals(QObject): def __init__(self, parent=None): super().__init__(parent) diff --git a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py index d3a1921..7258fea 100644 --- a/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py +++ b/src/CaptDeviceControl/model/submodels/AD2CaptDeviceCapturingModel.py @@ -1,5 +1,3 @@ -from ctypes import c_int, Array - from PySide6.QtCore import QObject, Signal from CaptDeviceConfig import CaptDeviceConfig diff --git a/src/CaptDeviceControl/resources/icons-svg/cil-media-play.svg b/src/CaptDeviceControl/resources/icons-svg/cil-media-play.svg index fc94f34..0cf80f8 100644 --- a/src/CaptDeviceControl/resources/icons-svg/cil-media-play.svg +++ b/src/CaptDeviceControl/resources/icons-svg/cil-media-play.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve"> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" + viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve"> <style type="text/css"> .st0{fill:none;stroke:#24D115;stroke-width:1.9944;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} </style> diff --git a/src/CaptDeviceControl/resources/icons-svg/single_color/cil-media-play.svg b/src/CaptDeviceControl/resources/icons-svg/single_color/cil-media-play.svg index ff659f1..30c98e9 100644 --- a/src/CaptDeviceControl/resources/icons-svg/single_color/cil-media-play.svg +++ b/src/CaptDeviceControl/resources/icons-svg/single_color/cil-media-play.svg @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 24.1.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve"> +<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" + viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve"> <style type="text/css"> .st0{fill:#FFFFFF;stroke:#E6E6E6;stroke-width:0.875;stroke-miterlimit:10;} </style> diff --git a/src/CaptDeviceControl/resources/icons/icon_adc.svg b/src/CaptDeviceControl/resources/icons/icon_adc.svg index c4a79cb..be80435 100644 --- a/src/CaptDeviceControl/resources/icons/icon_adc.svg +++ b/src/CaptDeviceControl/resources/icons/icon_adc.svg @@ -2,20 +2,20 @@ <!-- Generiert durch Microsoft Visio, SVG Export icon_adc.svg Page-4 --> <svg - width="1.49467in" - height="1.50392in" - viewBox="0 0 107.616 108.282" - xml:space="preserve" - color-interpolation-filters="sRGB" - class="st4" - version="1.1" - id="svg264" - sodipodi:docname="icon_adc.svg" - inkscape:version="1.2.2 (732a01da63, 2022-12-09)" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"><defs + width="1.49467in" + height="1.50392in" + viewBox="0 0 107.616 108.282" + xml:space="preserve" + color-interpolation-filters="sRGB" + class="st4" + version="1.1" + id="svg264" + sodipodi:docname="icon_adc.svg" + inkscape:version="1.2.2 (732a01da63, 2022-12-09)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" +><defs id="defs268" /><sodipodi:namedview id="namedview266" pagecolor="#ffffff" diff --git a/src/CaptDeviceControl/view/AD2CaptDeviceView.py b/src/CaptDeviceControl/view/AD2CaptDeviceView.py index d68ffb1..ccf032a 100644 --- a/src/CaptDeviceControl/view/AD2CaptDeviceView.py +++ b/src/CaptDeviceControl/view/AD2CaptDeviceView.py @@ -1,15 +1,11 @@ import logging import os -from collections import deque import numpy as np - +import pyqtgraph as pg from PySide6.QtCore import QTimer -from PySide6.QtGui import QStandardItemModel, QStandardItem from PySide6.QtWidgets import QMainWindow, QStatusBar from pyqtgraph.dockarea import DockArea, Dock - -import pyqtgraph as pg from rich.logging import RichHandler from CaptDeviceControl.controller.BaseAD2CaptDevice import BaseAD2CaptDevice @@ -17,7 +13,6 @@ from CaptDeviceControl.model.AD2CaptDeviceModel import AD2CaptDeviceModel from CaptDeviceControl.model.AD2Constants import AD2Constants from CaptDeviceControl.view.Ui_AD2ControlWindowNew import Ui_AD2ControlWindowNew from CaptDeviceControl.view.widget.WidgetCapturingInformation import WidgetCapturingInformation, WidgetDeviceInformation -from CaptDeviceControl.model.submodels.AD2CaptDeviceAnalogInModel import AD2CaptDeviceAnalogInModel class ControlWindow(QMainWindow): diff --git a/src/CaptDeviceControl/view/Ui_AD2ControlWindow.py b/src/CaptDeviceControl/view/Ui_AD2ControlWindow.py index eefbb03..9c4851c 100644 --- a/src/CaptDeviceControl/view/Ui_AD2ControlWindow.py +++ b/src/CaptDeviceControl/view/Ui_AD2ControlWindow.py @@ -8,20 +8,15 @@ ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, - QMetaObject, QObject, QPoint, QRect, - QSize, QTime, QUrl, Qt) -from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, - QFont, QFontDatabase, QGradient, QIcon, - QImage, QKeySequence, QLinearGradient, QPainter, - QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QApplication, QComboBox, QFrame, QGridLayout, - QGroupBox, QLCDNumber, QLabel, QLayout, - QMainWindow, QMenuBar, QPushButton, QSizePolicy, - QSpinBox, QStatusBar, QVBoxLayout, QWidget) +from PySide6.QtCore import (QCoreApplication, QMetaObject, QRect, + QSize) +from PySide6.QtWidgets import (QComboBox, QFrame, QGridLayout, + QGroupBox, QLCDNumber, QLabel, QLayout, + QMenuBar, QPushButton, QSizePolicy, + QSpinBox, QStatusBar, QVBoxLayout, QWidget) from fswidgets import PlayPushButton -import resources_rc + class Ui_AD2ControlWindow(object): def setupUi(self, AD2ControlWindow): diff --git a/src/CaptDeviceControl/view/Ui_AD2ControlWindowNew.py b/src/CaptDeviceControl/view/Ui_AD2ControlWindowNew.py index a8006dc..167caf0 100644 --- a/src/CaptDeviceControl/view/Ui_AD2ControlWindowNew.py +++ b/src/CaptDeviceControl/view/Ui_AD2ControlWindowNew.py @@ -8,18 +8,14 @@ ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, - QMetaObject, QObject, QPoint, QRect, - QSize, QTime, QUrl, Qt) -from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, - QFont, QFontDatabase, QGradient, QIcon, - QImage, QKeySequence, QLinearGradient, QPainter, - QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QApplication, QComboBox, QFormLayout, QFrame, - QGridLayout, QHBoxLayout, QLabel, QLayout, - QMainWindow, QMenuBar, QPushButton, QSizePolicy, - QSpinBox, QToolButton, QWidget) -import resources_rc +from PySide6.QtCore import (QCoreApplication, QMetaObject, QRect, + QSize, Qt) +from PySide6.QtGui import (QFont, QIcon) +from PySide6.QtWidgets import (QComboBox, QFormLayout, QFrame, + QGridLayout, QHBoxLayout, QLabel, QLayout, + QMenuBar, QPushButton, QSizePolicy, + QSpinBox, QToolButton, QWidget) + class Ui_AD2ControlWindowNew(object): def setupUi(self, AD2ControlWindowNew): diff --git a/src/CaptDeviceControl/view/Ui_title_area.py b/src/CaptDeviceControl/view/Ui_title_area.py index c80771d..768d693 100644 --- a/src/CaptDeviceControl/view/Ui_title_area.py +++ b/src/CaptDeviceControl/view/Ui_title_area.py @@ -8,17 +8,13 @@ ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, - QMetaObject, QObject, QPoint, QRect, - QSize, QTime, QUrl, Qt) -from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, - QFont, QFontDatabase, QGradient, QIcon, - QImage, QKeySequence, QLinearGradient, QPainter, - QPalette, QPixmap, QRadialGradient, QTransform) -from PySide6.QtWidgets import (QApplication, QFormLayout, QFrame, QGridLayout, - QHBoxLayout, QLabel, QLayout, QPushButton, - QSizePolicy, QToolButton, QWidget) -import resources_rc +from PySide6.QtCore import (QCoreApplication, QMetaObject, QSize, Qt) +from PySide6.QtGui import (QCursor, + QFont, QIcon) +from PySide6.QtWidgets import (QFormLayout, QFrame, QGridLayout, + QHBoxLayout, QLabel, QLayout, QPushButton, + QSizePolicy, QToolButton) + class Ui_Form(object): def setupUi(self, Form): diff --git a/src/CaptDeviceControl/view/widget/WidgetCapturingInformation.py b/src/CaptDeviceControl/view/widget/WidgetCapturingInformation.py index 775551e..9e088f2 100644 --- a/src/CaptDeviceControl/view/widget/WidgetCapturingInformation.py +++ b/src/CaptDeviceControl/view/widget/WidgetCapturingInformation.py @@ -1,4 +1,3 @@ -from PySide6 import QtWidgets from PySide6.QtWidgets import QWidget, QGridLayout, QGroupBox, QLabel from fswidgets.LEDIndicatorWidget import LEDIndicatorWidget -- GitLab