pymodaq 4.1.4__tar.gz → 4.2.0__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.

Files changed (441) hide show
  1. {pymodaq-4.1.4 → pymodaq-4.2.0}/.gitignore +5 -0
  2. {pymodaq-4.1.4 → pymodaq-4.2.0}/PKG-INFO +4 -2
  3. {pymodaq-4.1.4 → pymodaq-4.2.0}/pyproject.toml +4 -2
  4. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/__init__.py +41 -4
  5. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/daq_move.py +33 -74
  6. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/daq_viewer.py +73 -98
  7. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/daq_viewer_ui.py +2 -1
  8. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/move_utility_classes.py +17 -7
  9. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/utils.py +153 -5
  10. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/viewer_utility_classes.py +31 -20
  11. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/dashboard.py +23 -5
  12. pymodaq-4.2.0/src/pymodaq/examples/tcp_client.py +97 -0
  13. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/__init__.py +4 -0
  14. pymodaq-4.2.0/src/pymodaq/extensions/bayesian/__init__.py +2 -0
  15. pymodaq-4.2.0/src/pymodaq/extensions/bayesian/bayesian_optimisation.py +673 -0
  16. pymodaq-4.2.0/src/pymodaq/extensions/bayesian/utils.py +403 -0
  17. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/daq_scan.py +4 -4
  18. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/daq_scan_ui.py +2 -1
  19. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/pid/pid_controller.py +12 -7
  20. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/pid/utils.py +9 -26
  21. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/utils.py +3 -0
  22. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/load_and_plot.py +42 -19
  23. pymodaq-4.2.0/src/pymodaq/resources/VERSION +1 -0
  24. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/config_template.toml +9 -24
  25. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/setup_plugin.py +1 -1
  26. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/config.py +103 -5
  27. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/daq_utils.py +37 -138
  28. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/data.py +614 -95
  29. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/enums.py +17 -1
  30. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/factory.py +2 -2
  31. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/custom_app.py +5 -2
  32. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/dock.py +33 -4
  33. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/file_io.py +3 -2
  34. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/utils.py +14 -1
  35. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/backends.py +9 -1
  36. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/data_saving.py +254 -57
  37. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/saving.py +1 -0
  38. pymodaq-4.2.0/src/pymodaq/utils/leco/daq_move_LECODirector.py +172 -0
  39. pymodaq-4.2.0/src/pymodaq/utils/leco/daq_xDviewer_LECODirector.py +170 -0
  40. pymodaq-4.2.0/src/pymodaq/utils/leco/desktop.ini +2 -0
  41. pymodaq-4.2.0/src/pymodaq/utils/leco/director_utils.py +58 -0
  42. pymodaq-4.2.0/src/pymodaq/utils/leco/leco_director.py +88 -0
  43. pymodaq-4.2.0/src/pymodaq/utils/leco/pymodaq_listener.py +279 -0
  44. pymodaq-4.2.0/src/pymodaq/utils/leco/utils.py +41 -0
  45. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/action_manager.py +20 -6
  46. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/parameter_manager.py +6 -4
  47. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/roi_manager.py +64 -55
  48. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/math_utils.py +1 -1
  49. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/data_viewers/__init__.py +3 -1
  50. pymodaq-4.2.0/src/pymodaq/utils/plotting/data_viewers/base.py +286 -0
  51. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/data_viewers/viewer.py +29 -202
  52. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/data_viewers/viewer0D.py +94 -47
  53. pymodaq-4.2.0/src/pymodaq/utils/plotting/data_viewers/viewer1D.py +820 -0
  54. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +1 -1
  55. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/data_viewers/viewer2D.py +271 -181
  56. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/data_viewers/viewerND.py +26 -22
  57. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/items/crosshair.py +3 -3
  58. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/items/image.py +2 -1
  59. pymodaq-4.2.0/src/pymodaq/utils/plotting/plotter/plotter.py +94 -0
  60. pymodaq-4.2.0/src/pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +134 -0
  61. pymodaq-4.2.0/src/pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +78 -0
  62. pymodaq-4.2.0/src/pymodaq/utils/plotting/utils/__init__.py +0 -0
  63. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/utils/axes_viewer.py +1 -1
  64. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/utils/filter.py +194 -147
  65. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/utils/lineout.py +13 -11
  66. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/utils/plot_utils.py +89 -12
  67. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/__init__.py +0 -3
  68. pymodaq-4.2.0/src/pymodaq/utils/scanner/scan_config.py +16 -0
  69. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/scan_factory.py +10 -36
  70. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/scanner.py +3 -2
  71. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/scanners/_1d_scanners.py +7 -5
  72. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/scanners/_2d_scanners.py +36 -49
  73. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/scanners/sequential.py +10 -4
  74. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/scanners/tabular.py +10 -5
  75. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/slicing.py +1 -1
  76. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/tcp_ip/serializer.py +38 -5
  77. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/tcp_ip/tcp_server_client.py +25 -17
  78. pymodaq-4.1.4/src/pymodaq/resources/VERSION +0 -1
  79. pymodaq-4.1.4/src/pymodaq/resources/config_scan_template.toml +0 -42
  80. pymodaq-4.1.4/src/pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -653
  81. pymodaq-4.1.4/src/pymodaq/utils/scanner/scan_config.py +0 -24
  82. {pymodaq-4.1.4 → pymodaq-4.2.0}/LICENSE +0 -0
  83. {pymodaq-4.1.4 → pymodaq-4.2.0}/README.rst +0 -0
  84. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/__init__.py +0 -0
  85. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/daq_move_ui.py +0 -0
  86. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/control_modules/mocks.py +0 -0
  87. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.aliases +0 -0
  88. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvlps +0 -0
  89. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.lvproj +0 -0
  90. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Client.vi +0 -0
  91. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_1Dgaussian.vi +0 -0
  92. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_Server_2Dgaussian.vi +0 -0
  93. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_cmd.vi +0 -0
  94. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_float.vi +0 -0
  95. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_read_int.vi +0 -0
  96. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_data.vi +0 -0
  97. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_int.vi +0 -0
  98. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_scalar.vi +0 -0
  99. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/DAQ_TCP_send_string.vi +0 -0
  100. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/client_state.ctl +0 -0
  101. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/Labview_TCP_Client/cmd_types.ctl +0 -0
  102. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/__init__.py +0 -0
  103. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/custom_app.py +0 -0
  104. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/custom_viewer.py +0 -0
  105. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/function_plotter.py +0 -0
  106. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/nonlinearscanner.py +0 -0
  107. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/parameter_ex.py +0 -0
  108. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/examples/preset_MockCamera.xml +0 -0
  109. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/console.py +0 -0
  110. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/daq_logger.py +0 -0
  111. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/h5browser.py +0 -0
  112. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/pid/__init__.py +0 -0
  113. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/extensions/pid/daq_move_PID.py +0 -0
  114. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/icon.ico +0 -0
  115. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/__init__.py +0 -0
  116. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/daq_analysis/__init__.py +0 -0
  117. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/daq_measurement/__init__.py +0 -0
  118. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.py +0 -0
  119. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.ui +0 -0
  120. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/daq_measurement/daq_measurement_main.py +0 -0
  121. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/daq_measurement/process_from_QtDesigner_DAQ_Measurement_GUI.bat +0 -0
  122. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/post_treatment/process_to_scalar.py +0 -0
  123. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
  124. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
  125. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
  126. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
  127. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
  128. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
  129. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
  130. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
  131. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
  132. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
  133. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
  134. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
  135. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
  136. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
  137. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
  138. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
  139. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
  140. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
  141. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
  142. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
  143. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
  144. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
  145. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
  146. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
  147. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
  148. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
  149. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
  150. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
  151. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
  152. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
  153. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
  154. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
  155. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
  156. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
  157. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
  158. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
  159. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
  160. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
  161. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
  162. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
  163. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
  164. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
  165. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
  166. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
  167. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
  168. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
  169. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
  170. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
  171. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
  172. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
  173. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
  174. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
  175. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
  176. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
  177. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
  178. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
  179. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
  180. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
  181. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
  182. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
  183. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
  184. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
  185. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
  186. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
  187. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
  188. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
  189. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
  190. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
  191. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
  192. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
  193. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
  194. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
  195. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
  196. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
  197. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
  198. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
  199. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
  200. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
  201. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
  202. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
  203. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
  204. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
  205. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
  206. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
  207. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
  208. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
  209. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
  210. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
  211. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
  212. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
  213. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
  214. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
  215. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
  216. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
  217. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
  218. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
  219. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
  220. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
  221. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
  222. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
  223. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
  224. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
  225. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
  226. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
  227. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
  228. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
  229. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
  230. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
  231. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
  232. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
  233. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
  234. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
  235. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
  236. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
  237. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
  238. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
  239. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
  240. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
  241. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
  242. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
  243. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
  244. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
  245. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
  246. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
  247. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
  248. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
  249. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
  250. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
  251. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
  252. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
  253. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
  254. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
  255. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
  256. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
  257. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
  258. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
  259. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
  260. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
  261. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
  262. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
  263. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
  264. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
  265. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
  266. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
  267. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
  268. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
  269. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
  270. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
  271. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
  272. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
  273. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
  274. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
  275. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
  276. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
  277. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
  278. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
  279. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
  280. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
  281. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
  282. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
  283. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
  284. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
  285. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
  286. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
  287. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
  288. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
  289. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
  290. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
  291. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
  292. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
  293. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
  294. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
  295. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
  296. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
  297. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
  298. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
  299. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
  300. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
  301. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
  302. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
  303. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
  304. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
  305. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
  306. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
  307. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
  308. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
  309. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
  310. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
  311. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
  312. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
  313. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
  314. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
  315. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
  316. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
  317. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
  318. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
  319. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
  320. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
  321. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
  322. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
  323. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
  324. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
  325. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
  326. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
  327. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
  328. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
  329. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
  330. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
  331. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
  332. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
  333. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
  334. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
  335. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
  336. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
  337. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
  338. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
  339. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
  340. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
  341. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
  342. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
  343. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
  344. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
  345. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
  346. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
  347. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
  348. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
  349. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
  350. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
  351. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
  352. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
  353. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -0
  354. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -0
  355. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -0
  356. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/__init__.py +0 -0
  357. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -0
  358. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/__init__.py +0 -0
  359. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/preset_default.xml +0 -0
  360. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/resources/triangulation_data.npy +0 -0
  361. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/splash.png +0 -0
  362. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/__init__.py +0 -0
  363. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/abstract/__init__.py +0 -0
  364. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/abstract/logger.py +0 -0
  365. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/array_manipulation.py +0 -0
  366. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/calibration_camera.py +0 -0
  367. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/chrono_timer.py +0 -0
  368. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/conftests.py +0 -0
  369. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/db/__init__.py +0 -0
  370. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/db/db_logger/__init__.py +0 -0
  371. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/db/db_logger/db_logger.py +0 -0
  372. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/db/db_logger/db_logger_models.py +0 -0
  373. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/exceptions.py +0 -0
  374. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/__init__.py +0 -0
  375. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/layout.py +0 -0
  376. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/list_picker.py +0 -0
  377. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/__init__.py +0 -0
  378. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/label.py +0 -0
  379. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/lcd.py +0 -0
  380. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/push.py +0 -0
  381. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/qled.py +0 -0
  382. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/spinbox.py +0 -0
  383. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/table.py +0 -0
  384. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -0
  385. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -0
  386. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/__init__.py +0 -0
  387. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/browsing.py +0 -0
  388. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/exporter.py +0 -0
  389. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/exporters/__init__.py +0 -0
  390. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/exporters/base.py +0 -0
  391. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/exporters/flimj.py +0 -0
  392. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/exporters/hyperspy.py +0 -0
  393. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/h5logging.py +0 -0
  394. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/module_saving.py +0 -0
  395. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/h5modules/utils.py +0 -0
  396. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/logger.py +0 -0
  397. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/__init__.py +0 -0
  398. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/batchscan_manager.py +0 -0
  399. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/modules_manager.py +0 -0
  400. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/overshoot_manager.py +0 -0
  401. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/preset_manager.py +0 -0
  402. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/preset_manager_utils.py +0 -0
  403. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/managers/remote_manager.py +0 -0
  404. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/messenger.py +0 -0
  405. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/__init__.py +0 -0
  406. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/ioxml.py +0 -0
  407. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -0
  408. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -0
  409. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -0
  410. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -0
  411. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -0
  412. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -0
  413. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -0
  414. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -0
  415. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -0
  416. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -0
  417. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -0
  418. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -0
  419. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -0
  420. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/parameter/utils.py +0 -0
  421. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/__init__.py +0 -0
  422. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -0
  423. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/gant_chart.py +0 -0
  424. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/image_viewer.py +0 -0
  425. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/items/__init__.py +0 -0
  426. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/items/axis_scaled.py +0 -0
  427. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/navigator.py +0 -0
  428. {pymodaq-4.1.4/src/pymodaq/utils/plotting/utils → pymodaq-4.2.0/src/pymodaq/utils/plotting/plotter/plotters}/__init__.py +0 -0
  429. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/scan_selector.py +0 -0
  430. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/utils/signalND.py +0 -0
  431. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/plotting/widgets.py +0 -0
  432. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/qvariant.py +0 -0
  433. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/scanners/__init__.py +0 -0
  434. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/scanner/utils.py +0 -0
  435. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/svg/__init__.py +0 -0
  436. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/svg/svg_renderer.py +0 -0
  437. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/svg/svg_view.py +0 -0
  438. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/svg/svg_viewer2D.py +0 -0
  439. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/tcp_ip/__init__.py +0 -0
  440. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/tcp_ip/mysocket.py +0 -0
  441. {pymodaq-4.1.4 → pymodaq-4.2.0}/src/pymodaq/utils/units.py +0 -0
@@ -104,6 +104,9 @@ venv.bak/
104
104
  .spyderproject
105
105
  .spyproject
106
106
 
107
+ # VS code project settings
108
+ .vscode/*
109
+
107
110
  # Rope project settings
108
111
  .ropeproject
109
112
 
@@ -119,6 +122,8 @@ venv.bak/
119
122
 
120
123
  .tox
121
124
  *.h5
125
+ !data.h5
126
+
122
127
  *yacctab.py
123
128
  *lextab.py
124
129
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pymodaq
3
- Version: 4.1.4
3
+ Version: 4.2.0
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
@@ -44,15 +44,17 @@ Classifier: Topic :: Scientific/Engineering :: Visualization
44
44
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
45
45
  Classifier: Topic :: Software Development :: User Interfaces
46
46
  Requires-Python: >=3.7
47
+ Requires-Dist: bayesian-optimization
47
48
  Requires-Dist: easydict
48
49
  Requires-Dist: importlib-metadata; python_version < '3.8'
49
50
  Requires-Dist: multipledispatch
50
51
  Requires-Dist: numpy<2.0.0
51
52
  Requires-Dist: packaging
52
53
  Requires-Dist: pint
54
+ Requires-Dist: pyleco; python_version >= '3.8'
53
55
  Requires-Dist: pymodaq-plugin-manager>=0.0.17
54
56
  Requires-Dist: pymodaq-plugins-mock
55
- Requires-Dist: pyqtgraph<=0.13.3
57
+ Requires-Dist: pyqtgraph>=0.12
56
58
  Requires-Dist: python-dateutil
57
59
  Requires-Dist: qdarkstyle
58
60
  Requires-Dist: qtconsole
@@ -36,12 +36,12 @@ dependencies = [
36
36
  "easydict",
37
37
  "importlib_metadata; python_version<\"3.8\"",
38
38
  "multipledispatch",
39
- "numpy < 2.0.0", # should be tested once numpy 2.0.0 major will be released
39
+ "numpy < 2.0.0",
40
40
  "packaging",
41
41
  "pint",
42
42
  "pymodaq_plugin_manager>=0.0.17",
43
43
  "pymodaq_plugins_mock",
44
- "pyqtgraph<=0.13.3",
44
+ "pyqtgraph>=0.12",
45
45
  "python-dateutil",
46
46
  "qdarkstyle",
47
47
  "qtpy",
@@ -51,6 +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"
54
56
  ]
55
57
 
56
58
  [project.scripts]
@@ -39,9 +39,10 @@ try:
39
39
  # in a try statement for compilation on readthedocs server but if this fail, you cannot use the code
40
40
  from pymodaq.utils.plotting import data_viewers # imported here as to avoid circular imports later on
41
41
  from pymodaq.utils.daq_utils import copy_preset, setLocale, set_qt_backend
42
-
42
+ from pymodaq.utils.daq_utils import get_instrument_plugins
43
43
  from pymodaq.utils.config import Config
44
-
44
+ from pymodaq.utils.scanner.utils import register_scanners
45
+ from pymodaq.utils.plotting.plotter.plotter import register_plotter, PlotterFactory
45
46
 
46
47
  # issue on windows when using .NET code within multithreads, this below allows it but requires the
47
48
  # pywin32 (pythoncom) package
@@ -66,8 +67,8 @@ try:
66
67
  logger.info('')
67
68
  logger.info('************************')
68
69
  logger.info(f"Setting Qt backend to: {config['qtbackend']['backend']} ...")
69
- logger.info('************************')
70
70
  set_qt_backend()
71
+ logger.info('************************')
71
72
  logger.info('')
72
73
  logger.info('')
73
74
  logger.info('************************')
@@ -83,8 +84,44 @@ try:
83
84
  Q_ = ureg.Quantity
84
85
  logger.info('')
85
86
  logger.info('')
86
- logger.info('************************')
87
+ logger.info('*************************************************************************')
87
88
  logger.info(f"Getting the list of instrument plugins...")
89
+ logger.info('')
90
+ get_instrument_plugins()
91
+ logger.info('*************************************************************************')
92
+
93
+ if config('network', 'leco-server', 'run_coordinator_at_startup'):
94
+ try:
95
+ from pymodaq.utils.leco.utils import start_coordinator
96
+ logger.info('')
97
+ logger.info('')
98
+ logger.info(f'********************************')
99
+ logger.info(f"Starting the LECO Coordinator...")
100
+ start_coordinator()
101
+ logger.info(f"Done")
102
+ except ImportError as e:
103
+ logger.warning(f'Issue while importing the pyleco package: {str(e)}')
104
+ except Exception as e:
105
+ logger.warning(f'Issue while starting the pyleco coordinator: {str(e)}')
106
+ finally:
107
+ logger.info('************************')
108
+ logger.info('')
109
+ logger.info('')
110
+
111
+ logger.info('')
112
+ logger.info('')
113
+ logger.info('************************')
114
+ logger.info(f"Registering Scanners...")
115
+ register_scanners()
116
+ logger.info(f"Done")
117
+ logger.info('************************')
118
+
119
+ logger.info('')
120
+ logger.info('')
121
+ logger.info('************************')
122
+ logger.info(f"Registering plotters...")
123
+ register_plotter()
124
+ logger.info(f"Done")
88
125
  logger.info('************************')
89
126
 
90
127
  except Exception as e:
@@ -10,8 +10,9 @@ from __future__ import annotations
10
10
  import numbers
11
11
  from importlib import import_module
12
12
  from numbers import Number
13
+ from random import randint
13
14
  import sys
14
- from typing import List, Tuple, Union
15
+ from typing import List, Tuple, Union, Optional, Type
15
16
  import numpy as np
16
17
 
17
18
  from qtpy.QtCore import QObject, Signal, QThread, Slot, Qt, QTimer
@@ -20,15 +21,12 @@ from qtpy import QtWidgets
20
21
  from easydict import EasyDict as edict
21
22
 
22
23
  from pymodaq.utils.logger import set_logger, get_module_name
23
- from pymodaq.control_modules.utils import ControlModule
24
- from pymodaq.utils.parameter import ioxml
24
+ from pymodaq.control_modules.utils import ParameterControlModule
25
25
  from pymodaq.control_modules.daq_move_ui import DAQ_Move_UI, ThreadCommand
26
- from pymodaq.utils.managers.parameter_manager import ParameterManager, Parameter
27
26
  from pymodaq.control_modules.move_utility_classes import MoveCommand, DAQ_Move_base
28
- from pymodaq.utils.tcp_ip.tcp_server_client import TCPClient
29
27
  from pymodaq.control_modules.move_utility_classes import params as daq_move_params
30
28
  from pymodaq.utils import daq_utils as utils
31
- from pymodaq.utils.parameter import utils as putils
29
+ from pymodaq.utils.parameter import Parameter, utils as putils
32
30
  from pymodaq.utils.gui_utils import get_splash_sc
33
31
  from pymodaq.utils import config as config_mod
34
32
  from pymodaq.utils.exceptions import ActuatorError
@@ -37,9 +35,11 @@ from pymodaq.utils.h5modules import module_saving
37
35
  from pymodaq.utils.data import DataRaw, DataToExport, DataFromPlugins, DataActuator
38
36
  from pymodaq.utils.h5modules.backends import Node
39
37
 
38
+ from pymodaq.utils.leco.pymodaq_listener import MoveActorListener, LECOMoveCommands
39
+
40
40
 
41
41
  local_path = config_mod.get_set_local_dir()
42
- sys.path.append(local_path)
42
+ sys.path.append(str(local_path))
43
43
  logger = set_logger(get_module_name(__file__))
44
44
  config = config_mod.Config()
45
45
 
@@ -52,7 +52,7 @@ if len(ACTUATOR_TYPES) == 0:
52
52
  STATUS_WAIT_TIME = 1000
53
53
 
54
54
 
55
- class DAQ_Move(ParameterManager, ControlModule):
55
+ class DAQ_Move(ParameterControlModule):
56
56
  """ Main PyMoDAQ class to drive actuators
57
57
 
58
58
  Qt object and generic UI to drive actuators.
@@ -75,12 +75,13 @@ class DAQ_Move(ParameterManager, ControlModule):
75
75
 
76
76
  move_done_signal = Signal(DataActuator)
77
77
  current_value_signal = Signal(DataActuator)
78
- _update_settings_signal = Signal(edict)
79
78
  bounds_signal = Signal(bool)
80
79
 
81
80
  params = daq_move_params
82
81
 
83
- def __init__(self, parent=None, title="DAQ Move"):
82
+ listener_class = MoveActorListener
83
+
84
+ def __init__(self, parent=None, title="DAQ Move", **kwargs):
84
85
  """
85
86
 
86
87
  Parameters
@@ -95,15 +96,13 @@ class DAQ_Move(ParameterManager, ControlModule):
95
96
  self.logger = set_logger(f'{logger.name}.{title}')
96
97
  self.logger.info(f'Initializing DAQ_Move: {title}')
97
98
 
98
- QObject.__init__(self)
99
- ParameterManager.__init__(self, action_list= ('save', 'update'))
100
- ControlModule.__init__(self)
99
+ super().__init__(action_list=('save', 'update'), **kwargs)
101
100
 
102
101
  self.parent = parent
103
102
  if parent is not None:
104
103
  self.ui = DAQ_Move_UI(parent, title)
105
104
  else:
106
- self.ui: DAQ_Move_UI = None
105
+ self.ui: Optional[DAQ_Move_UI] = None
107
106
 
108
107
  if self.ui is not None:
109
108
  self.ui.actuators = ACTUATOR_TYPES
@@ -172,7 +171,7 @@ class DAQ_Move(ParameterManager, ControlModule):
172
171
  elif cmd.command == 'rel_value':
173
172
  self._relative_value = cmd.attribute
174
173
 
175
- def append_data(self, dte: DataToExport = None, where: Union[Node, str] = None):
174
+ def append_data(self, dte: Optional[DataToExport] = None, where: Union[Node, str, None] = None):
176
175
  """Appends current DataToExport to an ActuatorEnlargeableSaver
177
176
 
178
177
  Parameters
@@ -374,32 +373,14 @@ class DAQ_Move(ParameterManager, ControlModule):
374
373
  """bool: status of the actuator's status (done or not)"""
375
374
  return self._move_done_bool
376
375
 
377
- def value_changed(self, param):
376
+ def value_changed(self, param: Parameter):
378
377
  """ Apply changes of value in the settings"""
379
- if param.name() == 'connect_server':
380
- if param.value():
381
- self.connect_tcp_ip()
382
- else:
383
- self._command_tcpip.emit(ThreadCommand('quit', ))
384
-
385
- elif param.name() == 'ip_address' or param.name == 'port':
386
- self._command_tcpip.emit(
387
- ThreadCommand('update_connection', dict(ipaddress=self.settings.child('main_settings', 'tcpip',
388
- 'ip_address').value(),
389
- port=self.settings.child('main_settings', 'tcpip',
390
- 'port').value())))
391
- elif param.name() == 'refresh_timeout':
392
- self._refresh_timer.setInterval(param.value())
378
+ super().value_changed(param=param)
393
379
 
394
- elif param.name() == 'plugin_config':
395
- self.show_config(self.plugin_config)
380
+ if param.name() == 'refresh_timeout':
381
+ self._refresh_timer.setInterval(param.value())
396
382
 
397
- path = self.settings.childPath(param)
398
- if path is not None:
399
- if 'main_settings' not in path:
400
- self._update_settings_signal.emit(edict(path=path, param=param, change='value'))
401
- if self.settings.child('main_settings', 'tcpip', 'tcp_connected').value():
402
- self._command_tcpip.emit(ThreadCommand('send_info', dict(path=path, param=param)))
383
+ self._update_settings(param=param)
403
384
 
404
385
  def param_deleted(self, param):
405
386
  """ Apply deletion of settings """
@@ -470,6 +451,8 @@ class DAQ_Move(ParameterManager, ControlModule):
470
451
  self.current_value_signal.emit(self._current_value)
471
452
  if self.settings['main_settings', 'tcpip', 'tcp_connected'] and self._send_to_tcpip:
472
453
  self._command_tcpip.emit(ThreadCommand('position_is', status.attribute))
454
+ if self.settings['main_settings', 'leco', 'leco_connected'] and self._send_to_tcpip:
455
+ self._command_tcpip.emit(ThreadCommand(LECOMoveCommands.POSITION, status.attribute))
473
456
 
474
457
  elif status.command == "move_done":
475
458
  data_act: DataActuator = status.attribute[0]
@@ -482,6 +465,8 @@ class DAQ_Move(ParameterManager, ControlModule):
482
465
  self.move_done_signal.emit(data_act)
483
466
  if self.settings.child('main_settings', 'tcpip', 'tcp_connected').value() and self._send_to_tcpip:
484
467
  self._command_tcpip.emit(ThreadCommand('move_done', status.attribute))
468
+ if self.settings.child('main_settings', 'leco', 'leco_connected').value() and self._send_to_tcpip:
469
+ self._command_tcpip.emit(ThreadCommand(LECOMoveCommands.MOVE_DONE, status.attribute))
485
470
 
486
471
  elif status.command == 'outofbounds':
487
472
  self.bounds_signal.emit(True)
@@ -586,23 +571,13 @@ class DAQ_Move(ParameterManager, ControlModule):
586
571
  self.logger.exception(str(e))
587
572
 
588
573
  def connect_tcp_ip(self):
589
- if self.settings.child('main_settings', 'tcpip', 'connect_server').value():
590
- self._tcpclient_thread = QThread()
591
-
592
- tcpclient = TCPClient(self.settings.child('main_settings', 'tcpip', 'ip_address').value(),
593
- self.settings.child('main_settings', 'tcpip', 'port').value(),
594
- self.settings.child('move_settings'), client_type="ACTUATOR")
595
- tcpclient.moveToThread(self._tcpclient_thread)
596
- self._tcpclient_thread.tcpclient = tcpclient
597
- tcpclient.cmd_signal.connect(self.process_tcpip_cmds)
598
-
599
- self._command_tcpip[ThreadCommand].connect(tcpclient.queue_command)
600
- self._tcpclient_thread.started.connect(tcpclient.init_connection)
601
-
602
- self._tcpclient_thread.start()
574
+ super().connect_tcp_ip(params_state=self.settings.child('move_settings'),
575
+ client_type="ACTUATOR")
603
576
 
604
577
  @Slot(ThreadCommand)
605
- def process_tcpip_cmds(self, status):
578
+ def process_tcpip_cmds(self, status: ThreadCommand) -> None:
579
+ if super().process_tcpip_cmds(status=status) is None:
580
+ return
606
581
  if 'move_abs' in status.command:
607
582
  self.move_abs(status.attribute[0], send_to_tcpip=True)
608
583
 
@@ -621,22 +596,6 @@ class DAQ_Move(ParameterManager, ControlModule):
621
596
  self._send_to_tcpip = True
622
597
  self.command_hardware.emit(ThreadCommand('get_actuator_value', ))
623
598
 
624
- elif status.command == 'connected':
625
- self.settings.child('main_settings', 'tcpip', 'tcp_connected').setValue(True)
626
-
627
- elif status.command == 'disconnected':
628
- self.settings.child('main_settings', 'tcpip', 'tcp_connected').setValue(False)
629
-
630
- elif status.command == 'Update_Status':
631
- self.thread_status(status)
632
-
633
- elif status.command == 'set_info':
634
- param_dict = ioxml.XML_string_to_parameter(status.attribute[1])[0]
635
- param_tmp = Parameter.create(**param_dict)
636
- param = self.settings.child('move_settings', *status.attribute[0][1:])
637
-
638
- param.restoreState(param_tmp.saveState())
639
-
640
599
 
641
600
  class DAQ_Move_Hardware(QObject):
642
601
  """
@@ -658,10 +617,10 @@ class DAQ_Move_Hardware(QObject):
658
617
  super().__init__()
659
618
  self.logger = set_logger(f'{logger.name}.{title}.actuator')
660
619
  self._title = title
661
- self.hardware: DAQ_Move_base = None
620
+ self.hardware: Optional[DAQ_Move_base] = None
662
621
  self.actuator_type = actuator_type
663
622
  self.current_position: DataActuator = position
664
- self._target_value: DataActuator = None
623
+ self._target_value: Optional[DataActuator] = None
665
624
  self.hardware_adress = None
666
625
  self.axis_address = None
667
626
  self.motion_stoped = False
@@ -702,7 +661,7 @@ class DAQ_Move_Hardware(QObject):
702
661
  =============== =================================== ==========================================================================================================================
703
662
  **Parameters** **Type** **Description**
704
663
 
705
- *params_state* ordered dictionnary list The parameter state of the hardware class composed by a list representing the tree to keep a temporary save of the tree
664
+ *params_state* ordered dictionary list The parameter state of the hardware class composed by a list representing the tree to keep a temporary save of the tree
706
665
 
707
666
  *controller* one or many instance of DAQ_Move The controller id of the hardware
708
667
 
@@ -878,12 +837,12 @@ class DAQ_Move_Hardware(QObject):
878
837
  @Slot(edict)
879
838
  def update_settings(self, settings_parameter_dict):
880
839
  """
881
- Update settings of hardware with dictionnary parameters in case of "Move_Settings" path, else update attribute with dictionnary parameters.
840
+ Update settings of hardware with dictionary parameters in case of "Move_Settings" path, else update attribute with dictionnary parameters.
882
841
 
883
842
  ========================= =========== ======================================================
884
843
  **Parameters** **Type** **Description**
885
844
 
886
- *settings_parameter_dict* dictionnary Dictionnary containing the path and linked parameter
845
+ *settings_parameter_dict* dictionary Dictionary containing the path and linked parameter
887
846
  ========================= =========== ======================================================
888
847
 
889
848
  See Also