pymodaq 4.4.5__tar.gz → 4.4.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pymodaq might be problematic. Click here for more details.
- {pymodaq-4.4.5 → pymodaq-4.4.7}/.gitignore +1 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/PKG-INFO +2 -3
- {pymodaq-4.4.5 → pymodaq-4.4.7}/pyproject.toml +2 -2
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/daq_move.py +27 -8
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/move_utility_classes.py +10 -1
- pymodaq-4.4.7/src/pymodaq/examples/qt_less_standalone_module.py +128 -0
- pymodaq-4.4.7/src/pymodaq/resources/VERSION +2 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/setup_plugin.py +1 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/data.py +8 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/daq_move_LECODirector.py +20 -10
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/daq_xDviewer_LECODirector.py +11 -6
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/pymodaq_listener.py +6 -6
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/utils.py +25 -1
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/remote_manager.py +1 -1
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/tcp_ip/serializer.py +73 -40
- pymodaq-4.4.5/src/pymodaq/resources/VERSION +0 -2
- {pymodaq-4.4.5 → pymodaq-4.4.7}/LICENSE +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/README.rst +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/daq_move_ui.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/daq_viewer.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/daq_viewer_ui.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/mocks.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/control_modules/viewer_utility_classes.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/dashboard.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.aliases +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvlps +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvproj +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_1Dgaussian.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_2Dgaussian.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_cmd.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_float.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_int.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_data.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_int.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_scalar.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_string.vi +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/client_state.ctl +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/Labview_TCP_Client/cmd_types.ctl +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/custom_app.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/custom_viewer.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/function_plotter.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/nonlinearscanner.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/parameter_ex.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/preset_MockCamera.xml +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/examples/tcp_client.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/bayesian/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/bayesian/bayesian_optimisation.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/bayesian/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/console.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/daq_logger.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/daq_scan.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/daq_scan_ui.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/h5browser.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/pid/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/pid/actuator_controller.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/pid/daq_move_PID.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/pid/pid_controller.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/pid/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/extensions/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/icon.ico +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/daq_analysis/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/daq_measurement/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.ui +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_main.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/daq_measurement/process_from_QtDesigner_DAQ_Measurement_GUI.bat +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/load_and_plot.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/post_treatment/process_to_scalar.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/algo.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/input.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/random.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/target.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/credit.rst +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/config_template.toml +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/preset_default.xml +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/resources/triangulation_data.npy +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/splash.png +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/abstract/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/abstract/logger.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/array_manipulation.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/calibration_camera.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/chrono_timer.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/config.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/conftests.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/daq_utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/db/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/db/db_logger/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/db/db_logger/db_logger.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/db/db_logger/db_logger_models.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/enums.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/exceptions.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/factory.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/custom_app.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/dock.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/file_io.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/layout.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/list_picker.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/loader_utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/label.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/lcd.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/push.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/qled.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/spinbox.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/table.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/backends.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/browsing.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/data_saving.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/exporter.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/exporters/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/exporters/base.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/exporters/flimj.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/exporters/hyperspy.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/h5logging.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/module_saving.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/saving.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/h5modules/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/desktop.ini +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/director_utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/leco/leco_director.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/logger.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/action_manager.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/batchscan_manager.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/modules_manager.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/overshoot_manager.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/parameter_manager.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/preset_manager.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/preset_manager_utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/managers/roi_manager.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/math_utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/messenger.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/ioxml.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/parameter/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/base.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/viewer.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/viewer2D.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/data_viewers/viewerND.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/gant_chart.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/image_viewer.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/items/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/items/axis_scaled.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/items/crosshair.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/items/image.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/navigator.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/plotter/plotter.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/plotter/plotters/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/scan_selector.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/utils/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/utils/axes_viewer.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/utils/filter.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/utils/lineout.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/utils/plot_utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/utils/signalND.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/plotting/widgets.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/qvariant.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scan_config.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scan_factory.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scanner.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scanners/_1d_scanners.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scanners/_2d_scanners.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scanners/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scanners/sequential.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/scanners/tabular.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/scanner/utils.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/slicing.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/svg/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/svg/svg_renderer.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/svg/svg_view.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/svg/svg_viewer2D.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/tcp_ip/__init__.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/tcp_ip/mysocket.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/tcp_ip/tcp_server_client.py +0 -0
- {pymodaq-4.4.5 → pymodaq-4.4.7}/src/pymodaq/utils/units.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pymodaq
|
|
3
|
-
Version: 4.4.
|
|
3
|
+
Version: 4.4.7
|
|
4
4
|
Summary: Modular Data Acquisition with Python
|
|
5
5
|
Project-URL: Homepage, http://pymodaq.cnrs.fr
|
|
6
6
|
Project-URL: Source, https://github.com/PyMoDAQ/PyMoDAQ
|
|
@@ -27,7 +27,6 @@ License: The MIT License (MIT)
|
|
|
27
27
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
28
28
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
29
29
|
THE SOFTWARE.
|
|
30
|
-
License-File: LICENSE
|
|
31
30
|
Classifier: Development Status :: 5 - Production/Stable
|
|
32
31
|
Classifier: Environment :: Other Environment
|
|
33
32
|
Classifier: Intended Audience :: Science/Research
|
|
@@ -51,7 +50,7 @@ Requires-Dist: multipledispatch
|
|
|
51
50
|
Requires-Dist: numpy<2.0.0
|
|
52
51
|
Requires-Dist: packaging
|
|
53
52
|
Requires-Dist: pint
|
|
54
|
-
Requires-Dist: pyleco; python_version >= '3.8'
|
|
53
|
+
Requires-Dist: pyleco>0.3; python_version >= '3.8'
|
|
55
54
|
Requires-Dist: pymodaq-plugin-manager>=0.0.17
|
|
56
55
|
Requires-Dist: pymodaq-plugins-mock<5.0.0
|
|
57
56
|
Requires-Dist: pyqtgraph>=0.12
|
|
@@ -51,8 +51,8 @@ dependencies = [
|
|
|
51
51
|
"toml",
|
|
52
52
|
"qtconsole",
|
|
53
53
|
"tables<3.9", # issue with some version of required package blosc2>=2.2.8
|
|
54
|
-
"pyleco; python_version>=\"3.8\"",
|
|
55
|
-
"bayesian-optimization<2.0.0"
|
|
54
|
+
"pyleco>0.3; python_version>=\"3.8\"",
|
|
55
|
+
"bayesian-optimization<2.0.0",
|
|
56
56
|
]
|
|
57
57
|
|
|
58
58
|
[project.scripts]
|
|
@@ -595,14 +595,33 @@ class DAQ_Move(ParameterControlModule):
|
|
|
595
595
|
def units(self, unit: str):
|
|
596
596
|
self.settings.child('move_settings', 'units').setValue(unit)
|
|
597
597
|
if self.ui is not None and config('actuator', 'display_units'):
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
598
|
+
self.ui.set_unit_as_suffix(self.get_unit_to_display(unit))
|
|
599
|
+
|
|
600
|
+
@staticmethod
|
|
601
|
+
def get_unit_to_display(unit: str) -> str:
|
|
602
|
+
""" Get the unit to be displayed in the UI
|
|
603
|
+
|
|
604
|
+
If the controller units are in mm the displayed unit will be m
|
|
605
|
+
because m is the base unit, then the user could ask for mm, km, µm...
|
|
606
|
+
only issue is when the usual displayed unit is not the base one, then add cases below
|
|
607
|
+
|
|
608
|
+
Parameters
|
|
609
|
+
----------
|
|
610
|
+
unit: str
|
|
611
|
+
|
|
612
|
+
Returns
|
|
613
|
+
-------
|
|
614
|
+
str: the unit to be displayed on the ui
|
|
615
|
+
"""
|
|
616
|
+
if ('°' in unit or 'degree' in unit) and not '°C' in unit:
|
|
617
|
+
# special cas as pint base unit for angles are radians
|
|
618
|
+
return '°'
|
|
619
|
+
elif 'W' in unit or 'watt' in unit:
|
|
620
|
+
return 'W'
|
|
621
|
+
elif '°C' in unit or 'Celsius' in unit:
|
|
622
|
+
return '°C'
|
|
623
|
+
else:
|
|
624
|
+
return str(Q_(1, unit).to_base_units().units)
|
|
606
625
|
|
|
607
626
|
def update_settings(self):
|
|
608
627
|
|
|
@@ -25,6 +25,7 @@ from pymodaq.utils.enums import BaseEnum, enum_checker
|
|
|
25
25
|
from pymodaq.utils.tcp_ip.mysocket import Socket
|
|
26
26
|
from pymodaq.utils.tcp_ip.serializer import DeSerializer, Serializer
|
|
27
27
|
from pymodaq import Unit
|
|
28
|
+
from pint.errors import OffsetUnitCalculusError
|
|
28
29
|
|
|
29
30
|
if TYPE_CHECKING:
|
|
30
31
|
from pymodaq.control_modules.daq_move import DAQ_Move_Hardware
|
|
@@ -437,7 +438,8 @@ class DAQ_Move_base(QObject):
|
|
|
437
438
|
QtWidgets.QApplication.processEvents()
|
|
438
439
|
self.axis_unit = self.axis_unit
|
|
439
440
|
self.settings.child('epsilon').setValue(self.epsilon)
|
|
440
|
-
|
|
441
|
+
if self.controller is not None:
|
|
442
|
+
self._current_value = self.get_actuator_value()
|
|
441
443
|
|
|
442
444
|
@property
|
|
443
445
|
def axis_names(self) -> Union[List, Dict]:
|
|
@@ -728,6 +730,13 @@ class DAQ_Move_base(QObject):
|
|
|
728
730
|
epsilon_calculated = abs(self._current_value.value() - self._target_value.value())
|
|
729
731
|
logger.warning(f'Unit issue when calculating epsilon, units are not compatible between'
|
|
730
732
|
f'target and current values')
|
|
733
|
+
except OffsetUnitCalculusError as e:
|
|
734
|
+
if '°C' in self.axis_unit or 'celcius' in self.axis_unit.lower():
|
|
735
|
+
epsilon_calculated = (
|
|
736
|
+
self._current_value.to_base_units() -
|
|
737
|
+
self._target_value.to_base_units()).abs().value()
|
|
738
|
+
else:
|
|
739
|
+
raise e
|
|
731
740
|
|
|
732
741
|
return (epsilon_calculated < self.epsilon) and self.user_condition_to_reach_target()
|
|
733
742
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Example how to create an actuator or detector module, which does not require Qt, nor any GUI functionality.
|
|
3
|
+
|
|
4
|
+
You can connect to this qtless module with a PyMoDAQ LECODirector module (the detector or actuator version, both are preinstalled),
|
|
5
|
+
as if it were any pymodaq module.
|
|
6
|
+
|
|
7
|
+
This example works best with an Actuator Director Module as it has fake movements, but does not return any detector value.
|
|
8
|
+
In this example, the name is "qt_less" (defined in the final if clause), which you have to give as the "actor" argument to the Director module.
|
|
9
|
+
|
|
10
|
+
Add any code in the methods defined below, for example instrument access and execute the file.
|
|
11
|
+
For remote control, you need to start a Coordinator, as described for remote control via LECO.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
import logging
|
|
15
|
+
from time import sleep
|
|
16
|
+
from typing import List, Union
|
|
17
|
+
|
|
18
|
+
from pyleco.utils.listener import Listener
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class QtLessModule:
|
|
22
|
+
"""Some module doing things without Qt.
|
|
23
|
+
|
|
24
|
+
You can run an instance of this class anywhere in your LECO network.
|
|
25
|
+
Then you can control this instance with a PyMoDAQ LECODirectorModule (in mock modules) as if it were a PyMoDAQ module.
|
|
26
|
+
|
|
27
|
+
Just add any logic you wish to the methods below.
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
def __init__(self, name: str, host: str = "localhost", **kwargs) -> None:
|
|
31
|
+
super().__init__()
|
|
32
|
+
self.listener = Listener(name=name, host=host, timeout=1, **kwargs)
|
|
33
|
+
self._fake_position = 0
|
|
34
|
+
self.start_listen()
|
|
35
|
+
self._stored = []
|
|
36
|
+
|
|
37
|
+
def start_listen(self) -> None:
|
|
38
|
+
"""Start to listen on incoming commands."""
|
|
39
|
+
self.listener.start_listen()
|
|
40
|
+
self.communicator = self.listener.get_communicator()
|
|
41
|
+
self.register_rpc_methods()
|
|
42
|
+
|
|
43
|
+
def register_rpc_methods(self) -> None:
|
|
44
|
+
"""Make the following methods available via LECO."""
|
|
45
|
+
register_rpc_method = self.communicator.register_rpc_method
|
|
46
|
+
register_rpc_method(self.set_info)
|
|
47
|
+
register_rpc_method(self.send_data)
|
|
48
|
+
register_rpc_method(self.move_abs)
|
|
49
|
+
register_rpc_method(self.move_rel)
|
|
50
|
+
register_rpc_method(self.move_home)
|
|
51
|
+
register_rpc_method(self.get_actuator_value)
|
|
52
|
+
register_rpc_method(self.stop_motion)
|
|
53
|
+
register_rpc_method(self.set_remote_name)
|
|
54
|
+
|
|
55
|
+
def stop_listen(self) -> None:
|
|
56
|
+
"""Stop to listen on incoming commands."""
|
|
57
|
+
self.listener.stop_listen()
|
|
58
|
+
|
|
59
|
+
# smethods for being remote controlled
|
|
60
|
+
# these methods are executed and cannot talk to the controlling module directly.
|
|
61
|
+
# if you need to send a response (for example with a value) you have to store the information and
|
|
62
|
+
# send it after these methods have been executed.
|
|
63
|
+
def set_remote_name(self, name: str) -> None:
|
|
64
|
+
"""Define what the name of the remote for answers is."""
|
|
65
|
+
self.remote_name = name
|
|
66
|
+
|
|
67
|
+
# generic commands
|
|
68
|
+
def set_info(self, path: List[str], param_dict_str: str) -> None:
|
|
69
|
+
print("set_info", path, param_dict_str)
|
|
70
|
+
|
|
71
|
+
# detector commands
|
|
72
|
+
def send_data(self, grabber_type: str = "") -> None:
|
|
73
|
+
print("send_data")
|
|
74
|
+
|
|
75
|
+
# actuator commands
|
|
76
|
+
def move_abs(self, position: Union[float, str]) -> None:
|
|
77
|
+
print("move_abs", position)
|
|
78
|
+
self._fake_position = float(position)
|
|
79
|
+
|
|
80
|
+
def move_rel(self, position: Union[float, str]) -> None:
|
|
81
|
+
print("move_rel", position)
|
|
82
|
+
self._fake_position += float(position)
|
|
83
|
+
|
|
84
|
+
def move_home(self) -> None:
|
|
85
|
+
self._fake_position = 0
|
|
86
|
+
print("move_home")
|
|
87
|
+
|
|
88
|
+
def get_actuator_value(self) -> None:
|
|
89
|
+
"""Request that the actuator value is sent later on."""
|
|
90
|
+
# according to DAQ_Move, this supersedes "check_position"
|
|
91
|
+
print("get_actuator_value")
|
|
92
|
+
# send the actuator position after this method has finished execution.
|
|
93
|
+
# this method sends the result to the controlling control module.
|
|
94
|
+
self.send_later(
|
|
95
|
+
receiver=self.remote_name,
|
|
96
|
+
method="set_position",
|
|
97
|
+
position=self._fake_position,
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
def stop_motion(self,) -> None:
|
|
101
|
+
# not implemented in DAQ_Move!
|
|
102
|
+
print("stop_motion")
|
|
103
|
+
|
|
104
|
+
# end of methods for being remote controlled
|
|
105
|
+
|
|
106
|
+
def send_later(self, receiver, method, **kwargs):
|
|
107
|
+
"""Store information to send it later."""
|
|
108
|
+
self._stored.append((receiver, method, kwargs))
|
|
109
|
+
|
|
110
|
+
def send_stored(self):
|
|
111
|
+
"""Send messages stored for later sending."""
|
|
112
|
+
while self._stored:
|
|
113
|
+
receiver, method, kwargs = self._stored.pop()
|
|
114
|
+
self.communicator.ask_rpc(receiver=receiver, method=method, **kwargs)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
if __name__ == "__main__":
|
|
118
|
+
print("listening endlessly as 'qt_less'")
|
|
119
|
+
log = logging.getLogger()
|
|
120
|
+
log.addHandler(logging.StreamHandler())
|
|
121
|
+
# log.setLevel(logging.DEBUG)
|
|
122
|
+
m = QtLessModule("qt_less")
|
|
123
|
+
try:
|
|
124
|
+
while True:
|
|
125
|
+
sleep(0.1)
|
|
126
|
+
m.send_stored()
|
|
127
|
+
except KeyboardInterrupt:
|
|
128
|
+
m.stop_listen()
|
|
@@ -23,6 +23,7 @@ def setup(path: Path):
|
|
|
23
23
|
name=PLUGIN_NAME,
|
|
24
24
|
description=config['plugin-info']['description'],
|
|
25
25
|
long_description=long_description,
|
|
26
|
+
long_description_content_type='text/x-rst',
|
|
26
27
|
license=config['plugin-info']['license'],
|
|
27
28
|
url=config['plugin-info']['package-url'],
|
|
28
29
|
author=config['plugin-info']['author'],
|
|
@@ -98,6 +98,7 @@ class DataUnitError(Exception):
|
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
class DwaType(BaseEnum):
|
|
101
|
+
"""Different types of `DataWithAxes`."""
|
|
101
102
|
DataWithAxes = 0
|
|
102
103
|
DataRaw = 1
|
|
103
104
|
DataActuator = 2
|
|
@@ -648,6 +649,13 @@ class DataBase(DataLowLevel):
|
|
|
648
649
|
""" Change immediately the units to whatever else. Use this with care!"""
|
|
649
650
|
self._units = units
|
|
650
651
|
|
|
652
|
+
def to_base_units(self):
|
|
653
|
+
dwa = self.deepcopy()
|
|
654
|
+
data_quantities = [quantity.to_base_units() for quantity in self.quantities]
|
|
655
|
+
dwa.data = [quantity.magnitude for quantity in data_quantities]
|
|
656
|
+
dwa.force_units(str(data_quantities[0].units))
|
|
657
|
+
return dwa
|
|
658
|
+
|
|
651
659
|
def units_as(self, units: str, inplace=True) -> 'DataBase':
|
|
652
660
|
""" Set the object units to the new one (if possible)
|
|
653
661
|
|
|
@@ -55,11 +55,14 @@ class DAQ_Move_LECODirector(LECODirector, DAQ_Move_base):
|
|
|
55
55
|
params_state=params_state, **kwargs)
|
|
56
56
|
self.register_rpc_methods((
|
|
57
57
|
self.set_info,
|
|
58
|
+
))
|
|
59
|
+
for method in (
|
|
58
60
|
self.set_position,
|
|
59
61
|
self.set_move_done,
|
|
60
62
|
self.set_x_axis,
|
|
61
63
|
self.set_y_axis,
|
|
62
|
-
)
|
|
64
|
+
):
|
|
65
|
+
self.listener.register_binary_rpc_method(method, accept_binary_input=True)
|
|
63
66
|
|
|
64
67
|
# copied, I think it is good:
|
|
65
68
|
self.settings.child('bounds').hide()
|
|
@@ -143,22 +146,29 @@ class DAQ_Move_LECODirector(LECODirector, DAQ_Move_base):
|
|
|
143
146
|
self.controller.stop_motion()
|
|
144
147
|
|
|
145
148
|
# Methods accessible via remote calls
|
|
146
|
-
def _set_position_value(
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
149
|
+
def _set_position_value(
|
|
150
|
+
self, position: Union[str, float, None], additional_payload=None
|
|
151
|
+
) -> DataActuator:
|
|
152
|
+
if position:
|
|
153
|
+
if isinstance(position, str):
|
|
154
|
+
deserializer = DeSerializer.from_b64_string(position)
|
|
155
|
+
pos = deserializer.dwa_deserialization()
|
|
156
|
+
else:
|
|
157
|
+
pos = DataActuator(data=position)
|
|
158
|
+
elif additional_payload is not None:
|
|
159
|
+
pos = DeSerializer(additional_payload[0]).dwa_deserialization()
|
|
150
160
|
else:
|
|
151
|
-
|
|
161
|
+
raise ValueError("No position given")
|
|
152
162
|
pos = self.get_position_with_scaling(pos) # type: ignore
|
|
153
163
|
self._current_value = pos
|
|
154
164
|
return pos
|
|
155
165
|
|
|
156
|
-
def set_position(self, position: Union[str, float]) -> None:
|
|
157
|
-
pos = self._set_position_value(position=position)
|
|
166
|
+
def set_position(self, position: Union[str, float, None], additional_payload=None) -> None:
|
|
167
|
+
pos = self._set_position_value(position=position, additional_payload=additional_payload)
|
|
158
168
|
self.emit_status(ThreadCommand('get_actuator_value', [pos]))
|
|
159
169
|
|
|
160
|
-
def set_move_done(self, position: Union[str, float]) -> None:
|
|
161
|
-
pos = self._set_position_value(position=position)
|
|
170
|
+
def set_move_done(self, position: Union[str, float, None], additional_payload=None) -> None:
|
|
171
|
+
pos = self._set_position_value(position=position, additional_payload=additional_payload)
|
|
162
172
|
self.emit_status(ThreadCommand('move_done', [pos]))
|
|
163
173
|
|
|
164
174
|
def set_x_axis(self, data, label: str = "", units: str = "") -> None:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
from typing import Union
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from typing import Optional, Union
|
|
3
3
|
|
|
4
4
|
from easydict import EasyDict as edict
|
|
5
5
|
|
|
@@ -37,8 +37,11 @@ class DAQ_xDViewer_LECODirector(LECODirector, DAQ_Viewer_base):
|
|
|
37
37
|
self.register_rpc_methods((
|
|
38
38
|
self.set_x_axis,
|
|
39
39
|
self.set_y_axis,
|
|
40
|
-
self.set_data,
|
|
41
40
|
))
|
|
41
|
+
for method in (
|
|
42
|
+
self.set_data,
|
|
43
|
+
):
|
|
44
|
+
self.listener.register_binary_rpc_method(method, accept_binary_input=True)
|
|
42
45
|
|
|
43
46
|
self.client_type = "GRABBER"
|
|
44
47
|
self.x_axis = None
|
|
@@ -150,7 +153,7 @@ class DAQ_xDViewer_LECODirector(LECODirector, DAQ_Viewer_base):
|
|
|
150
153
|
self.y_axis = dict(data=data, label=label, units=units)
|
|
151
154
|
self.emit_y_axis()
|
|
152
155
|
|
|
153
|
-
def set_data(self, data: Union[list, str]) -> None:
|
|
156
|
+
def set_data(self, data: Union[list, str, None], additional_payload: Optional[list[bytes]]=None) -> None:
|
|
154
157
|
"""
|
|
155
158
|
Set the grabbed data signal.
|
|
156
159
|
|
|
@@ -160,10 +163,12 @@ class DAQ_xDViewer_LECODirector(LECODirector, DAQ_Viewer_base):
|
|
|
160
163
|
"""
|
|
161
164
|
if isinstance(data, str):
|
|
162
165
|
deserializer = DeSerializer.from_b64_string(data)
|
|
163
|
-
|
|
164
|
-
|
|
166
|
+
elif additional_payload is not None:
|
|
167
|
+
deserializer = DeSerializer(additional_payload[0])
|
|
165
168
|
else:
|
|
166
169
|
raise NotImplementedError("Not implemented to set a list of values.")
|
|
170
|
+
dte = deserializer.dte_deserialization()
|
|
171
|
+
self.dte_signal.emit(dte)
|
|
167
172
|
|
|
168
173
|
|
|
169
174
|
if __name__ == '__main__':
|
|
@@ -17,7 +17,7 @@ from qtpy.QtCore import QObject, Signal # type: ignore
|
|
|
17
17
|
from pymodaq.utils.daq_utils import ThreadCommand
|
|
18
18
|
from pymodaq.utils.parameter import ioxml
|
|
19
19
|
from pymodaq.utils.tcp_ip.serializer import DataWithAxes, SERIALIZABLE, DeSerializer
|
|
20
|
-
from pymodaq.utils.leco.utils import
|
|
20
|
+
from pymodaq.utils.leco.utils import binary_serialization_to_kwargs
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class LECOClientCommands(StrEnum):
|
|
@@ -220,7 +220,7 @@ class ActorListener(PymodaqListener):
|
|
|
220
220
|
self.communicator.ask_rpc(
|
|
221
221
|
receiver=self.remote_name,
|
|
222
222
|
method="set_data",
|
|
223
|
-
|
|
223
|
+
**binary_serialization_to_kwargs(value),
|
|
224
224
|
)
|
|
225
225
|
|
|
226
226
|
elif command.command == 'send_info':
|
|
@@ -236,14 +236,14 @@ class ActorListener(PymodaqListener):
|
|
|
236
236
|
value = command.attribute[0] # type: ignore
|
|
237
237
|
self.communicator.ask_rpc(receiver=self.remote_name,
|
|
238
238
|
method="set_position",
|
|
239
|
-
|
|
239
|
+
**binary_serialization_to_kwargs(value, data_key="position"),
|
|
240
240
|
)
|
|
241
241
|
|
|
242
242
|
elif command.command == LECOMoveCommands.MOVE_DONE:
|
|
243
243
|
value = command.attribute[0] # type: ignore
|
|
244
244
|
self.communicator.ask_rpc(receiver=self.remote_name,
|
|
245
245
|
method="set_move_done",
|
|
246
|
-
|
|
246
|
+
**binary_serialization_to_kwargs(value, data_key="position"),
|
|
247
247
|
)
|
|
248
248
|
|
|
249
249
|
elif command.command == 'x_axis':
|
|
@@ -251,7 +251,7 @@ class ActorListener(PymodaqListener):
|
|
|
251
251
|
if isinstance(value, SERIALIZABLE):
|
|
252
252
|
self.communicator.ask_rpc(receiver=self.remote_name,
|
|
253
253
|
method="set_x_axis",
|
|
254
|
-
|
|
254
|
+
**binary_serialization_to_kwargs(value),
|
|
255
255
|
)
|
|
256
256
|
elif isinstance(value, dict):
|
|
257
257
|
self.communicator.ask_rpc(receiver=self.remote_name, method="set_x_axis", **value)
|
|
@@ -263,7 +263,7 @@ class ActorListener(PymodaqListener):
|
|
|
263
263
|
if isinstance(value, SERIALIZABLE):
|
|
264
264
|
self.communicator.ask_rpc(receiver=self.remote_name,
|
|
265
265
|
method="set_y_axis",
|
|
266
|
-
|
|
266
|
+
**binary_serialization_to_kwargs(value),
|
|
267
267
|
)
|
|
268
268
|
elif isinstance(value, dict):
|
|
269
269
|
self.communicator.ask_rpc(receiver=self.remote_name, method="set_y_axis", **value)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
1
2
|
import subprocess
|
|
2
3
|
import sys
|
|
3
|
-
from typing import Any, Union, get_args
|
|
4
|
+
from typing import Any, Optional, Union, get_args
|
|
4
5
|
|
|
5
6
|
# import also the DeSerializer for easier imports in dependents
|
|
6
7
|
from pymodaq.utils.tcp_ip.serializer import SERIALIZABLE, Serializer, DeSerializer # type: ignore # noqa
|
|
@@ -23,6 +24,29 @@ def serialize_object(pymodaq_object: Union[SERIALIZABLE, Any]) -> Union[str, Any
|
|
|
23
24
|
"JSON serializable, nor via PyMoDAQ.")
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
def binary_serialization(
|
|
28
|
+
pymodaq_object: Union[SERIALIZABLE, Any],
|
|
29
|
+
) -> tuple[Optional[Any], Optional[list[bytes]]]:
|
|
30
|
+
"""Serialize (binary) a pymodaq object, if it is not JSON compatible."""
|
|
31
|
+
if isinstance(pymodaq_object, get_args(JSON_TYPES)):
|
|
32
|
+
return pymodaq_object, None
|
|
33
|
+
elif isinstance(pymodaq_object, get_args(SERIALIZABLE)):
|
|
34
|
+
return None, [Serializer(pymodaq_object).to_bytes()]
|
|
35
|
+
else:
|
|
36
|
+
raise ValueError(
|
|
37
|
+
f"{pymodaq_object} of type '{type(pymodaq_object).__name__}' is neither "
|
|
38
|
+
"JSON serializable, nor via PyMoDAQ."
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def binary_serialization_to_kwargs(
|
|
43
|
+
pymodaq_object: Union[SERIALIZABLE, Any], data_key: str = "data"
|
|
44
|
+
) -> dict[str, Any]:
|
|
45
|
+
"""Create a dictionary of data parameters and of additional payload to send."""
|
|
46
|
+
d, b = binary_serialization(pymodaq_object=pymodaq_object)
|
|
47
|
+
return {data_key: d, "additional_payload": b}
|
|
48
|
+
|
|
49
|
+
|
|
26
50
|
def run_coordinator():
|
|
27
51
|
command = [sys.executable, '-m', 'pyleco.coordinators.coordinator']
|
|
28
52
|
subprocess.Popen(command)
|
|
@@ -17,7 +17,7 @@ logger = set_logger(get_module_name(__file__))
|
|
|
17
17
|
remote_path = pymodaq.utils.config.get_set_remote_path()
|
|
18
18
|
remote_types = ['ShortCut', 'Joystick']
|
|
19
19
|
|
|
20
|
-
actuator_actions = ['
|
|
20
|
+
actuator_actions = ['move_rel', 'move_rel_p', 'move_rel_m']
|
|
21
21
|
detector_actions = ['snap', 'grab', 'stop']
|
|
22
22
|
remote_types = ['Keyboard', 'Joystick']
|
|
23
23
|
try:
|