From dfdd866fabc2a56b27f927808101b2a903d56698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Tue, 21 Jan 2025 17:22:33 +0100 Subject: [PATCH 1/5] towards v5 --- hatch_build.py | 10 ++ plugin_info.toml | 23 ---- pyproject.toml | 65 +++++++++++ setup.py | 63 ----------- src/pymodaq_plugins_moke/__init__.py | 9 +- .../daq_move_plugins/daq_move_Current.py | 2 +- .../daq_move_plugins/daq_move_CurrentMock.py | 2 +- .../daq_move_plugins/daq_move_LedDC4104.py | 2 +- .../plugins_0D/daq_0Dviewer_ReadCurrent.py | 4 +- .../plugins_1D/daq_1Dviewer_MokeMacro.py | 2 +- .../plugins_2D/daq_2Dviewer_MOKEGrabber.py | 4 +- .../daq_2Dviewer_MOKEMockGrabber.py | 4 +- .../daq_viewer_plugins/plugins_ND/__init__.py | 13 --- .../{ => extensions}/mokemicro.py | 101 +++++++++--------- .../hardware/led_control.py | 7 +- .../hardware/manual_actuation.py | 9 +- src/pymodaq_plugins_moke/hardware/mock.py | 2 +- .../hardware/steps_sequence.py | 14 ++- src/pymodaq_plugins_moke/resources/VERSION | 1 - src/pymodaq_plugins_moke/utils.py | 2 +- 20 files changed, 159 insertions(+), 180 deletions(-) create mode 100644 hatch_build.py delete mode 100644 plugin_info.toml create mode 100644 pyproject.toml delete mode 100644 setup.py delete mode 100644 src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_ND/__init__.py rename src/pymodaq_plugins_moke/{ => extensions}/mokemicro.py (83%) delete mode 100644 src/pymodaq_plugins_moke/resources/VERSION diff --git a/hatch_build.py b/hatch_build.py new file mode 100644 index 0000000..a0208ee --- /dev/null +++ b/hatch_build.py @@ -0,0 +1,10 @@ +from pathlib import Path +from hatchling.metadata.plugin.interface import MetadataHookInterface +from pymodaq_utils.resources.hatch_build_plugins import update_metadata_from_toml + +here = Path(__file__).absolute().parent + + +class PluginInfoTomlHook(MetadataHookInterface): + def update(self, metadata: dict) -> None: + update_metadata_from_toml(metadata, here) diff --git a/plugin_info.toml b/plugin_info.toml deleted file mode 100644 index c790c93..0000000 --- a/plugin_info.toml +++ /dev/null @@ -1,23 +0,0 @@ -## To modify by developper(s) of the plugin - -[plugin-info] -SHORT_PLUGIN_NAME = 'moke' - -package-url = 'https://github.com/PyMoDAQ/pymodaq_plugins_moke' #to modify -description = 'Kerr Magneto Optics experiments' - -author = 'Sebastien Weber' -author-email = 'sebastien.weber@cemes.fr' -license = 'MIT' - -[plugin-install] -#packages required for your plugin: -packages-required = ['pymodaq_plugins_daqmx', 'pymodaq_plugins_andor'] - -[features] # defines the plugin features contained into this plugin -instruments = true # true if plugin contains instrument classes (else false, notice the lowercase for toml files) -extensions = false # true if plugins contains dashboard extensions -pid_models = false # true if plugins contains pid models -h5exporters = false # true if plugin contains custom h5 file exporters -scanners = false # true if plugin contains custom scan layout (daq_scan extensions) - diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..7990b38 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,65 @@ +[features] # defines the plugin features contained into this plugin +instruments = true # true if plugin contains instrument classes (else false, notice the lowercase for toml files) +extensions = true # true if plugins contains dashboard extensions +models = false # true if plugins contains pid models +h5exporters = false # true if plugin contains custom h5 file exporters +scanners = false # true if plugin contains custom scan layout (daq_scan extensions) + +[urls] +package-url = 'https://github.com/PyMoDAQ/pymodaq_plugins_moke' + +[project] +name = "pymodaq_plugins_moke" +description = 'Kerr Magneto Optics experiments' +dependencies = [ + "pymodaq>=5.0.0", + 'pymodaq_plugins_daqmx', + 'pymodaq_plugins_andor' + #todo: list here all dependencies your package may have +] + +authors = [ + {name = "Weber Sebastien", email = "sebastien.weber@cemes.fr"}, + #todo: list here all authors of your plugin +] +maintainers = [ + {name = "Weber Sebastien", email = "sebastien.weber@cemes.fr"}, + #todo: list here all maintainers of your plugin +] + +# nottodo: leave everything below as is! + +dynamic = ["version", "urls", "entry-points"] +readme = "README.rst" +license = { file="LICENSE" } +requires-python = ">=3.8" + +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: MIT License", + "Natural Language :: English", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Scientific/Engineering :: Human Machine Interfaces", + "Topic :: Scientific/Engineering :: Visualization", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Software Development :: User Interfaces", +] + +[build-system] +requires = [ + "hatchling>=1.9.0", + "hatch-vcs", "toml", + "pymodaq_utils>=0.0.6", +] +build-backend = "hatchling.build" + +[tool.hatch.metadata.hooks.custom] + +[tool.hatch.version] +source = "vcs" + diff --git a/setup.py b/setup.py deleted file mode 100644 index ce25ea6..0000000 --- a/setup.py +++ /dev/null @@ -1,63 +0,0 @@ -from setuptools import setup, find_packages -import toml - -config = toml.load('./plugin_info.toml') -SHORT_PLUGIN_NAME = config['plugin-info']['SHORT_PLUGIN_NAME'] -PLUGIN_NAME = f"pymodaq_plugins_{SHORT_PLUGIN_NAME}" - - -from pathlib import Path - -with open(str(Path(__file__).parent.joinpath(f'src/{PLUGIN_NAME}/resources/VERSION')), 'r') as fvers: - version = fvers.read().strip() - - -with open('README.rst') as fd: - long_description = fd.read() - -setupOpts = dict( - name=PLUGIN_NAME, - description=config['plugin-info']['description'], - long_description=long_description, - license=config['plugin-info']['license'], - url=config['plugin-info']['package-url'], - author=config['plugin-info']['author'], - author_email=config['plugin-info']['author-email'], - classifiers=[ - "Programming Language :: Python :: 3", - "Development Status :: 5 - Production/Stable", - "Environment :: Other Environment", - "Intended Audience :: Science/Research", - "Topic :: Scientific/Engineering :: Human Machine Interfaces", - "Topic :: Scientific/Engineering :: Visualization", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Software Development :: User Interfaces", - ], ) - - -entrypoints = {} -if 'features' in config: - if config['features'].get('instruments', False): - entrypoints['pymodaq.instruments'] = f'{SHORT_PLUGIN_NAME} = {PLUGIN_NAME}' - if config['features'].get('extensions', False): - entrypoints['pymodaq.extensions'] = f'{SHORT_PLUGIN_NAME} = {PLUGIN_NAME}' - if config['features'].get('pid_models', False): - entrypoints['pymodaq.pid_models'] = f'{SHORT_PLUGIN_NAME} = {PLUGIN_NAME}' - if config['features'].get('h5exporters', False): - entrypoints['pymodaq.h5exporters'] = f'{SHORT_PLUGIN_NAME} = {PLUGIN_NAME}' - if config['features'].get('scanners', False): - entrypoints['pymodaq.scanners'] = f'{SHORT_PLUGIN_NAME} = {PLUGIN_NAME}' -else: - entrypoints['pymodaq.instruments'] = f'{SHORT_PLUGIN_NAME} = {PLUGIN_NAME}' - -setup( - version=version, - packages=find_packages(where='./src'), - package_dir={'': 'src'}, - include_package_data=True, - entry_points=entrypoints, - install_requires=['toml', ]+config['plugin-install']['packages-required'], - **setupOpts -) diff --git a/src/pymodaq_plugins_moke/__init__.py b/src/pymodaq_plugins_moke/__init__.py index ca051e5..6c04b33 100644 --- a/src/pymodaq_plugins_moke/__init__.py +++ b/src/pymodaq_plugins_moke/__init__.py @@ -2,7 +2,12 @@ from pymodaq.utils.logger import set_logger # to be imported by other modules. from .utils import Config +from pymodaq_utils.utils import get_version, PackageNotFoundError + config = Config() +try: + __version__ = get_version(__package__) +except PackageNotFoundError: + __version__ = '0.0.0dev' + -with open(str(Path(__file__).parent.joinpath('resources/VERSION')), 'r') as fvers: - __version__ = fvers.read().strip() diff --git a/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_Current.py b/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_Current.py index eb664ef..39f6961 100644 --- a/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_Current.py +++ b/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_Current.py @@ -1,5 +1,5 @@ from pymodaq.control_modules.move_utility_classes import DAQ_Move_base, comon_parameters_fun, main -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo # object used to send info back to the main thread +from pymodaq_utils.utils import ThreadCommand, getLineInfo # object used to send info back to the main thread from easydict import EasyDict as edict # type of dict import numpy as np from pymodaq_plugins_daqmx.hardware.national_instruments.daqmx import (DAQmx, ClockSettings, AIChannel, AOChannel) diff --git a/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_CurrentMock.py b/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_CurrentMock.py index bab62b5..5992d85 100644 --- a/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_CurrentMock.py +++ b/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_CurrentMock.py @@ -1,5 +1,5 @@ from pymodaq.control_modules.move_utility_classes import DAQ_Move_base, main, comon_parameters_fun # common set of parameters for all actuators -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo # object used to send info back to the main thread +from pymodaq_utils.utils import ThreadCommand, getLineInfo # object used to send info back to the main thread from easydict import EasyDict as edict # type of dict from pymodaq_plugins_moke.hardware.mock import MokeMockController diff --git a/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_LedDC4104.py b/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_LedDC4104.py index aed05ff..5654482 100644 --- a/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_LedDC4104.py +++ b/src/pymodaq_plugins_moke/daq_move_plugins/daq_move_LedDC4104.py @@ -1,5 +1,5 @@ from pymodaq.control_modules.move_utility_classes import DAQ_Move_base, comon_parameters_fun, main -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo # object used to send info back to the main thread +from pymodaq_utils.utils import ThreadCommand, getLineInfo # object used to send info back to the main thread from easydict import EasyDict as edict # type of dict import numpy as np from pymodaq_plugins_daqmx.hardware.national_instruments.daqmx import DAQmx, ClockSettings, ChangeDetectionSettings, \ diff --git a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py index b45af4a..ffeb1af 100644 --- a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py +++ b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py @@ -1,8 +1,8 @@ import numpy as np from easydict import EasyDict as edict -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo +from pymodaq_utils.utils import ThreadCommand, getLineInfo from pymodaq.utils.data import DataFromPlugins -from pymodaq.utils.logger import set_logger, get_module_name +from pymodaq_utils.logger import set_logger, get_module_name from pymodaq.control_modules.viewer_utility_classes import DAQ_Viewer_base, comon_parameters, main from pymodaq_plugins_daqmx.hardware.national_instruments.daqmx import DAQmx, ClockSettings, AIChannel from pymodaq_plugins_moke import config diff --git a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_1D/daq_1Dviewer_MokeMacro.py b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_1D/daq_1Dviewer_MokeMacro.py index 18e348c..b86e574 100644 --- a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_1D/daq_1Dviewer_MokeMacro.py +++ b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_1D/daq_1Dviewer_MokeMacro.py @@ -1,6 +1,6 @@ import numpy as np from easydict import EasyDict as edict -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo +from pymodaq_utils.utils import ThreadCommand, getLineInfo from pymodaq.utils.data import DataFromPlugins, Axis from pymodaq.control_modules.viewer_utility_classes import DAQ_Viewer_base, comon_parameters, main diff --git a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py index c22e08b..e7df046 100644 --- a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py +++ b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py @@ -1,7 +1,7 @@ from qtpy import QtWidgets, QtCore -from pymodaq.utils.daq_utils import ThreadCommand +from pymodaq_utils.utils import ThreadCommand from pymodaq.utils.data import DataFromPlugins -from pymodaq.utils.logger import set_logger, get_module_name +from pymodaq_utils.logger import set_logger, get_module_name from pymodaq_plugins_andor.daq_viewer_plugins.plugins_2D.daq_2Dviewer_AndorSCMOS import DAQ_2DViewer_AndorSCMOS, main from time import perf_counter diff --git a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEMockGrabber.py b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEMockGrabber.py index c50fff5..5f4c557 100644 --- a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEMockGrabber.py +++ b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEMockGrabber.py @@ -1,8 +1,8 @@ from pymodaq.control_modules.viewer_utility_classes import DAQ_Viewer_base, main from easydict import EasyDict as edict -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo +from pymodaq_utils.utils import ThreadCommand, getLineInfo from pymodaq.utils.data import DataFromPlugins, Axis -from pymodaq.utils.math_utils import my_moment + from pymodaq.control_modules.viewer_utility_classes import comon_parameters from pymodaq_plugins_moke.hardware.mock import MokeMockController diff --git a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_ND/__init__.py b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_ND/__init__.py deleted file mode 100644 index 0b08c89..0000000 --- a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_ND/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -import importlib -from pathlib import Path -from ... import set_logger -logger = set_logger('move_plugins', add_to_console=False) - -for path in Path(__file__).parent.iterdir(): - try: - if '__init__' not in str(path): - importlib.import_module('.' + path.stem, __package__) - except Exception as e: - logger.warning("{:} plugin couldn't be loaded due to some missing packages or errors: {:}".format(path.stem, str(e))) - pass - diff --git a/src/pymodaq_plugins_moke/mokemicro.py b/src/pymodaq_plugins_moke/extensions/mokemicro.py similarity index 83% rename from src/pymodaq_plugins_moke/mokemicro.py rename to src/pymodaq_plugins_moke/extensions/mokemicro.py index 56a92f4..23d3b63 100644 --- a/src/pymodaq_plugins_moke/mokemicro.py +++ b/src/pymodaq_plugins_moke/extensions/mokemicro.py @@ -1,38 +1,55 @@ import sys -from pymodaq.utils.gui_utils import DockArea -from pymodaq.dashboard import DashBoard + from qtpy import QtWidgets, QtCore from pathlib import Path -from pymodaq.utils.parameter import Parameter -from pymodaq.utils.gui_utils.custom_app import CustomApp -from pymodaq.utils.gui_utils.dock import Dock -from pymodaq.utils.gui_utils import layout -from pymodaq.utils import config as config_mod -from pymodaq.utils.daq_utils import ThreadCommand -from pymodaq.utils.logger import set_logger, get_module_name + +from pymodaq_utils.utils import ThreadCommand +from pymodaq_utils.logger import set_logger, get_module_name +from pymodaq_utils.config import Config, ConfigError + +from pymodaq_gui.parameter import Parameter +from pymodaq_gui.utils.dock import DockArea, Dock +from pymodaq_gui.utils import layout + +from pymodaq.dashboard import DashBoard +from pymodaq.extensions.utils import CustomExt from pymodaq_plugins_moke.hardware import LedControl, ManualActuation, StepsSequencer -from pymodaq.utils.messenger import messagebox -from pymodaq.utils.plotting.data_viewers.viewer1D import Viewer1D +from pymodaq_gui.messenger import messagebox +from pymodaq_gui.plotting.data_viewers.viewer1D import Viewer1D from pymodaq_plugins_moke import config +from pymodaq_plugins_moke.utils import Config as PluginConfig logger = set_logger(get_module_name(__file__)) +main_config = Config() +plugin_config = PluginConfig() + + +EXTENSION_NAME = 'MicroMOKE' # the name that will be displayed in the extension list in the +# dashboard +CLASS_NAME = 'MicroMOKE' # this should be the name of your class defined below + -class MicroMOKE(CustomApp): - def __init__(self, dockarea: DockArea, dashboard: DashBoard): - super().__init__(dockarea, dashboard) - self.led_control = LedControl(dockarea) +class MicroMOKE(CustomExt): - self.manual_actuation = ManualActuation(dockarea, + params = [] + + def __init__(self, parent: DockArea, dashboard): + super().__init__(parent, dashboard) + + self.led_control = LedControl(parent) + + self.manual_actuation = ManualActuation(parent, absolute_values=config('micro', 'actuation', 'absolute_current_values'), relative_value=config('micro', 'actuation', 'relative_value')) + self.detector = self.modules_manager.get_mod_from_name('Camera', mod='det') self.current_actuator = self.modules_manager.get_mod_from_name('Current', mod='act') - self.steps_sequencer = StepsSequencer(dockarea, self.current_actuator) + self.steps_sequencer = StepsSequencer(parent, self.current_actuator) self.led_actuator = self.modules_manager.get_mod_from_name('LedDriver', mod='act') self.scan_window = None @@ -232,40 +249,22 @@ def set_led_type(self, led_type=None): def main(): - from pymodaq.utils.daq_utils import get_set_preset_path - from pymodaq.utils.gui_utils import DockArea - from pathlib import Path - from pymodaq.dashboard import DashBoard - - app = QtWidgets.QApplication(sys.argv) - win = QtWidgets.QMainWindow() - area = DockArea() - win.setCentralWidget(area) - win.resize(1000, 500) - win.setWindowTitle('PyMoDAQ Dashboard') - - dashboard = DashBoard(area) - file = Path(get_set_preset_path()).joinpath("microMOKE.xml") - if not file.exists(): - file = Path(get_set_preset_path()).joinpath("MokeMicro_Mock.xml") - if file.exists(): - dashboard.set_preset_mode(file) - mm_area = DockArea() - mm_window = QtWidgets.QMainWindow() - mm_window.setCentralWidget(mm_area) - micromoke = MicroMOKE(mm_area, dashboard) - mm_window.show() - mm_window.setWindowTitle('MicroMOKE') - QtWidgets.QApplication.processEvents() - - - - else: - messagebox(severity='warning', title=f"Impossible to load the DAQ_Scan Module", - text=f"The default file specified in the configuration file does not exists!\n" - f"{file}\n") - - sys.exit(app.exec_()) + from pymodaq.utils.gui_utils.utils import mkQApp + from pymodaq.utils.gui_utils.loader_utils import load_dashboard_with_preset + from pymodaq.utils.messenger import messagebox + + app = mkQApp(EXTENSION_NAME) + try: + preset_file_name = plugin_config('presets', f'preset_for_{CLASS_NAME.lower()}') + load_dashboard_with_preset(preset_file_name, EXTENSION_NAME) + app.exec() + + except ConfigError as e: + messagebox(f'No entry with name f"preset_for_{CLASS_NAME.lower()}" has been configured' + f'in the plugin config file. The toml entry should be:\n' + f'[presets]' + f"preset_for_{CLASS_NAME.lower()} = {'a name for an existing preset'}" + ) if __name__ == '__main__': diff --git a/src/pymodaq_plugins_moke/hardware/led_control.py b/src/pymodaq_plugins_moke/hardware/led_control.py index 44043b0..58552ce 100644 --- a/src/pymodaq_plugins_moke/hardware/led_control.py +++ b/src/pymodaq_plugins_moke/hardware/led_control.py @@ -1,10 +1,9 @@ import sys - -from pymodaq.utils.gui_utils.dock import Dock, DockArea from qtpy import QtWidgets, QtCore, QtGui -from pymodaq.utils.parameter.pymodaq_ptypes import SliderSpinBox -from pymodaq.utils.gui_utils.widgets import QLED +from pymodaq_gui.utils.dock import Dock, DockArea +from pymodaq_gui.parameter.pymodaq_ptypes import SliderSpinBox +from pymodaq_gui.utils.widgets import QLED from collections import OrderedDict from pathlib import Path diff --git a/src/pymodaq_plugins_moke/hardware/manual_actuation.py b/src/pymodaq_plugins_moke/hardware/manual_actuation.py index cabef86..810b225 100644 --- a/src/pymodaq_plugins_moke/hardware/manual_actuation.py +++ b/src/pymodaq_plugins_moke/hardware/manual_actuation.py @@ -1,7 +1,10 @@ -from pymodaq.utils.gui_utils.custom_app import CustomApp -from pymodaq.utils.gui_utils.dock import Dock, DockArea from qtpy import QtWidgets, QtCore -from pymodaq.utils import gui_utils as gutils + +from pymodaq_gui.utils.custom_app import CustomApp +from pymodaq_gui.utils.dock import Dock, DockArea + + +from pymodaq_gui import utils as gutils from pymodaq.control_modules.move_utility_classes import MoveCommand from pymodaq_plugins_moke import config diff --git a/src/pymodaq_plugins_moke/hardware/mock.py b/src/pymodaq_plugins_moke/hardware/mock.py index 86083a1..c118309 100644 --- a/src/pymodaq_plugins_moke/hardware/mock.py +++ b/src/pymodaq_plugins_moke/hardware/mock.py @@ -1,5 +1,5 @@ import numpy as np -from pymodaq.daq_utils.daq_utils import gauss2D +from pymodaq_utils.math_utils import gauss2D from .koch import image_from_koch diff --git a/src/pymodaq_plugins_moke/hardware/steps_sequence.py b/src/pymodaq_plugins_moke/hardware/steps_sequence.py index e2c66b3..ae7dd85 100644 --- a/src/pymodaq_plugins_moke/hardware/steps_sequence.py +++ b/src/pymodaq_plugins_moke/hardware/steps_sequence.py @@ -1,21 +1,19 @@ from typing import List, TYPE_CHECKING import numpy as np -from pymodaq.utils.gui_utils.custom_app import CustomApp -from pymodaq.utils.gui_utils.dock import Dock, DockArea -from pymodaq.utils.managers.parameter_manager import ParameterManager, Parameter + +from pymodaq_gui.utils.dock import Dock, DockArea +from pymodaq_gui.managers.parameter_manager import ParameterManager, Parameter from qtpy import QtWidgets, QtCore, QtGui from qtpy.QtWidgets import QWidget -from pymodaq.utils import daq_utils as utils +from pymodaq_utils import utils as utils from pymodaq.utils.scanner.scanners._1d_scanners import Scan1DSparse -from pymodaq.utils.parameter import pymodaq_ptypes as ptypes -from pymodaq.utils.parameter import utils as putils -from pymodaq.utils.plotting.data_viewers.viewer1D import Viewer1D +from pymodaq_gui.plotting.data_viewers.viewer1D import Viewer1D from pymodaq.utils.data import DataActuator from pymodaq.control_modules.daq_move import DAQ_Move -from pymodaq.utils.messenger import dialog +from pymodaq_gui.messenger import dialog class StepsSequencer(ParameterManager, QtCore.QObject): diff --git a/src/pymodaq_plugins_moke/resources/VERSION b/src/pymodaq_plugins_moke/resources/VERSION deleted file mode 100644 index afaf360..0000000 --- a/src/pymodaq_plugins_moke/resources/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.0.0 \ No newline at end of file diff --git a/src/pymodaq_plugins_moke/utils.py b/src/pymodaq_plugins_moke/utils.py index 1f225ab..4981b95 100644 --- a/src/pymodaq_plugins_moke/utils.py +++ b/src/pymodaq_plugins_moke/utils.py @@ -6,7 +6,7 @@ """ from pathlib import Path -from pymodaq.utils.config import BaseConfig, USER +from pymodaq_utils.config import BaseConfig, USER class Config(BaseConfig): From 2770a15fce0dd1e833f6d44bfe48c4de375dde6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 31 Jan 2025 09:44:50 +0100 Subject: [PATCH 2/5] Update mokemicro.py --- .../extensions/mokemicro.py | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/src/pymodaq_plugins_moke/extensions/mokemicro.py b/src/pymodaq_plugins_moke/extensions/mokemicro.py index 23d3b63..17fcb6d 100644 --- a/src/pymodaq_plugins_moke/extensions/mokemicro.py +++ b/src/pymodaq_plugins_moke/extensions/mokemicro.py @@ -249,22 +249,14 @@ def set_led_type(self, led_type=None): def main(): - from pymodaq.utils.gui_utils.utils import mkQApp + from pymodaq_gui.utils.utils import mkQApp from pymodaq.utils.gui_utils.loader_utils import load_dashboard_with_preset - from pymodaq.utils.messenger import messagebox + from pymodaq_gui.messenger import messagebox app = mkQApp(EXTENSION_NAME) - try: - preset_file_name = plugin_config('presets', f'preset_for_{CLASS_NAME.lower()}') - load_dashboard_with_preset(preset_file_name, EXTENSION_NAME) - app.exec() - - except ConfigError as e: - messagebox(f'No entry with name f"preset_for_{CLASS_NAME.lower()}" has been configured' - f'in the plugin config file. The toml entry should be:\n' - f'[presets]' - f"preset_for_{CLASS_NAME.lower()} = {'a name for an existing preset'}" - ) + preset_file_name = plugin_config('presets', f'preset_for_{CLASS_NAME.lower()}') + load_dashboard_with_preset(preset_file_name, EXTENSION_NAME) + app.exec() if __name__ == '__main__': From 6acb8c08860229fe52cdcc3f3f18df35d36085b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 31 Jan 2025 14:42:41 +0100 Subject: [PATCH 3/5] implement pyproject --- pyproject.toml | 3 ++- tox.ini | 3 --- 2 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 tox.ini diff --git a/pyproject.toml b/pyproject.toml index 7990b38..1ef14ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,8 @@ description = 'Kerr Magneto Optics experiments' dependencies = [ "pymodaq>=5.0.0", 'pymodaq_plugins_daqmx', - 'pymodaq_plugins_andor' + 'pymodaq_plugins_andor', + 'pillow', #todo: list here all dependencies your package may have ] diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 0d50c11..0000000 --- a/tox.ini +++ /dev/null @@ -1,3 +0,0 @@ -[flake8] -exclude = .git,__pycache__,build,dist,pymodaq/QtDesigner_Ressources -ignore = E501, F401, F841, F811, F403 From d52c402b301716599c4a2c92e7ef253bdb15f086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 31 Jan 2025 14:42:49 +0100 Subject: [PATCH 4/5] using enum --- .../plugins_0D/daq_0Dviewer_ReadCurrent.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py index ffeb1af..1453a17 100644 --- a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py +++ b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_0D/daq_0Dviewer_ReadCurrent.py @@ -4,7 +4,7 @@ from pymodaq.utils.data import DataFromPlugins from pymodaq_utils.logger import set_logger, get_module_name from pymodaq.control_modules.viewer_utility_classes import DAQ_Viewer_base, comon_parameters, main -from pymodaq_plugins_daqmx.hardware.national_instruments.daqmx import DAQmx, ClockSettings, AIChannel +from pymodaq_plugins_daqmx.hardware.national_instruments.daqmx import DAQmx, ClockSettings, AIChannel, DAQ_NIDAQ_source from pymodaq_plugins_moke import config logger = set_logger(get_module_name(__file__)) @@ -21,7 +21,8 @@ class DAQ_0DViewer_ReadCurrent(DAQ_Viewer_base): params = comon_parameters+[ {'title': 'Resistance:', 'name': 'resistance', 'type': 'float', 'value': resistor, 'min': 0., 'suffix': 'Ohm'}, {'title': 'AI Channel:', 'name': 'ai_channel', 'type': 'list', - 'values': DAQmx.get_NIDAQ_channels(source_type='Analog_Input'), 'value': f'{device_ai}/{channel_ai}'}, + 'limits': DAQmx.get_NIDAQ_channels(source_type=DAQ_NIDAQ_source.Analog_Input.name), + 'value': f'{device_ai}/{channel_ai}'}, ] hardware_averaging = False live_mode_available = False From e081136e14ae77aee293942033c293155bc95dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Fri, 31 Jan 2025 16:28:15 +0100 Subject: [PATCH 5/5] update --- .../plugins_2D/daq_2Dviewer_MOKEGrabber.py | 3 +-- .../extensions/mokemicro.py | 17 ++++++++--------- .../resources/config_template.toml | 1 + 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py index e7df046..505fcca 100644 --- a/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py +++ b/src/pymodaq_plugins_moke/daq_viewer_plugins/plugins_2D/daq_2Dviewer_MOKEGrabber.py @@ -20,7 +20,6 @@ class DAQ_2DViewer_MOKEGrabber(DAQ_2DViewer_AndorSCMOS): params = DAQ_2DViewer_AndorSCMOS.params + \ [{'title': 'Do substraction:', 'name': 'do_sub', 'type': 'bool', 'value': False}] - def __init__(self, parent=None, params_state=None): super().__init__(parent, params_state) # initialize base class with commom attributes and methods @@ -179,4 +178,4 @@ def stop(self): if __name__ == '__main__': - main(init=False) \ No newline at end of file + main(__file__, init=False) diff --git a/src/pymodaq_plugins_moke/extensions/mokemicro.py b/src/pymodaq_plugins_moke/extensions/mokemicro.py index 17fcb6d..78d9614 100644 --- a/src/pymodaq_plugins_moke/extensions/mokemicro.py +++ b/src/pymodaq_plugins_moke/extensions/mokemicro.py @@ -8,19 +8,18 @@ from pymodaq_utils.logger import set_logger, get_module_name from pymodaq_utils.config import Config, ConfigError + from pymodaq_gui.parameter import Parameter from pymodaq_gui.utils.dock import DockArea, Dock from pymodaq_gui.utils import layout -from pymodaq.dashboard import DashBoard from pymodaq.extensions.utils import CustomExt from pymodaq_plugins_moke.hardware import LedControl, ManualActuation, StepsSequencer -from pymodaq_gui.messenger import messagebox from pymodaq_gui.plotting.data_viewers.viewer1D import Viewer1D -from pymodaq_plugins_moke import config + from pymodaq_plugins_moke.utils import Config as PluginConfig logger = set_logger(get_module_name(__file__)) @@ -44,8 +43,8 @@ def __init__(self, parent: DockArea, dashboard): self.led_control = LedControl(parent) self.manual_actuation = ManualActuation(parent, - absolute_values=config('micro', 'actuation', 'absolute_current_values'), - relative_value=config('micro', 'actuation', 'relative_value')) + absolute_values=plugin_config('micro', 'actuation', 'absolute_current_values'), + relative_value=plugin_config('micro', 'actuation', 'relative_value')) self.detector = self.modules_manager.get_mod_from_name('Camera', mod='det') self.current_actuator = self.modules_manager.get_mod_from_name('Current', mod='act') @@ -143,7 +142,8 @@ def setup_actions(self): self.get_action('do_scan').setEnabled(False) def show_config(self): - config_tree = config_mod.TreeFromToml(config=config) + from pymodaq_gui.utils.widgets.tree_toml import TreeFromToml + config_tree = TreeFromToml(plugin_config) config_tree.show_dialog() def connect_things(self): @@ -251,11 +251,10 @@ def set_led_type(self, led_type=None): def main(): from pymodaq_gui.utils.utils import mkQApp from pymodaq.utils.gui_utils.loader_utils import load_dashboard_with_preset - from pymodaq_gui.messenger import messagebox app = mkQApp(EXTENSION_NAME) - preset_file_name = plugin_config('presets', f'preset_for_{CLASS_NAME.lower()}') - load_dashboard_with_preset(preset_file_name, EXTENSION_NAME) + preset_file_name = plugin_config('micro', f'preset_for_{CLASS_NAME.lower()}') + dashboard, extension, win = load_dashboard_with_preset(preset_file_name, EXTENSION_NAME) app.exec() diff --git a/src/pymodaq_plugins_moke/resources/config_template.toml b/src/pymodaq_plugins_moke/resources/config_template.toml index 8b100ba..2f3043f 100644 --- a/src/pymodaq_plugins_moke/resources/config_template.toml +++ b/src/pymodaq_plugins_moke/resources/config_template.toml @@ -3,6 +3,7 @@ [micro] + preset_for_micromoke = "microMOKE" [micro.current] device_ao = 'cDAQ1Mod4'