pymodaq 4.4.7__py3-none-any.whl → 5.0.1__py3-none-any.whl

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 (415) hide show
  1. pymodaq/__init__.py +57 -91
  2. pymodaq/control_modules/daq_move.py +64 -46
  3. pymodaq/control_modules/daq_move_ui.py +34 -12
  4. pymodaq/control_modules/daq_viewer.py +55 -30
  5. pymodaq/control_modules/daq_viewer_ui.py +6 -6
  6. pymodaq/control_modules/mocks.py +1 -1
  7. pymodaq/control_modules/move_utility_classes.py +51 -43
  8. pymodaq/control_modules/utils.py +43 -20
  9. pymodaq/control_modules/viewer_utility_classes.py +54 -18
  10. pymodaq/daq_utils/daq_utils.py +6 -0
  11. pymodaq/dashboard.py +639 -323
  12. pymodaq/examples/function_plotter.py +13 -12
  13. pymodaq/examples/tcp_client.py +1 -1
  14. pymodaq/extensions/__init__.py +1 -1
  15. pymodaq/extensions/bayesian/bayesian_optimisation.py +44 -32
  16. pymodaq/extensions/bayesian/utils.py +10 -10
  17. pymodaq/extensions/console.py +7 -6
  18. pymodaq/extensions/daq_logger/__init__.py +1 -0
  19. pymodaq/extensions/{daq_logger.py → daq_logger/daq_logger.py} +30 -30
  20. pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger.py +16 -15
  21. pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger_models.py +2 -0
  22. pymodaq/{utils/h5modules → extensions/daq_logger}/h5logging.py +7 -8
  23. pymodaq/extensions/daq_scan.py +42 -34
  24. pymodaq/extensions/daq_scan_ui.py +18 -18
  25. pymodaq/extensions/h5browser.py +2 -3
  26. pymodaq/extensions/pid/__init__.py +4 -2
  27. pymodaq/extensions/pid/daq_move_PID.py +3 -3
  28. pymodaq/extensions/pid/pid_controller.py +59 -50
  29. pymodaq/extensions/pid/utils.py +10 -5
  30. pymodaq/extensions/utils.py +33 -3
  31. pymodaq/post_treatment/load_and_plot.py +10 -7
  32. pymodaq/resources/preset_default.xml +1 -1
  33. pymodaq/updater.py +107 -0
  34. pymodaq/utils/array_manipulation.py +4 -384
  35. pymodaq/utils/calibration_camera.py +12 -9
  36. pymodaq/utils/chrono_timer.py +11 -10
  37. pymodaq/utils/config.py +3 -458
  38. pymodaq/utils/daq_utils.py +9 -715
  39. pymodaq/utils/data.py +17 -2959
  40. pymodaq/utils/enums.py +4 -74
  41. pymodaq/utils/exceptions.py +0 -4
  42. pymodaq/utils/gui_utils/__init__.py +8 -8
  43. pymodaq/utils/gui_utils/loader_utils.py +26 -1
  44. pymodaq/utils/gui_utils/utils.py +8 -162
  45. pymodaq/utils/gui_utils/widgets/lcd.py +6 -109
  46. pymodaq/utils/h5modules/__init__.py +0 -4
  47. pymodaq/utils/h5modules/module_saving.py +9 -8
  48. pymodaq/utils/leco/__init__.py +2 -2
  49. pymodaq/utils/leco/daq_move_LECODirector.py +3 -6
  50. pymodaq/utils/leco/daq_xDviewer_LECODirector.py +5 -5
  51. pymodaq/utils/leco/director_utils.py +2 -2
  52. pymodaq/utils/leco/leco_director.py +3 -3
  53. pymodaq/utils/leco/pymodaq_listener.py +4 -3
  54. pymodaq/utils/leco/utils.py +11 -9
  55. pymodaq/utils/logger.py +4 -76
  56. pymodaq/utils/managers/batchscan_manager.py +16 -19
  57. pymodaq/utils/managers/modules_manager.py +30 -17
  58. pymodaq/utils/managers/overshoot_manager.py +48 -6
  59. pymodaq/utils/managers/preset_manager.py +39 -59
  60. pymodaq/utils/managers/preset_manager_utils.py +28 -22
  61. pymodaq/utils/managers/remote_manager.py +12 -10
  62. pymodaq/utils/math_utils.py +4 -582
  63. pymodaq/utils/messenger.py +4 -64
  64. pymodaq/utils/parameter/__init__.py +6 -9
  65. pymodaq/utils/parameter/utils.py +4 -328
  66. pymodaq/utils/scanner/scan_config.py +1 -1
  67. pymodaq/utils/scanner/scan_factory.py +16 -12
  68. pymodaq/utils/{plotting → scanner}/scan_selector.py +19 -20
  69. pymodaq/utils/scanner/scanner.py +10 -8
  70. pymodaq/utils/scanner/scanners/_1d_scanners.py +8 -5
  71. pymodaq/utils/scanner/scanners/_2d_scanners.py +5 -5
  72. pymodaq/utils/scanner/scanners/sequential.py +8 -8
  73. pymodaq/utils/scanner/scanners/tabular.py +9 -9
  74. pymodaq/utils/scanner/utils.py +6 -4
  75. pymodaq/utils/svg/svg_viewer2D.py +3 -4
  76. pymodaq/utils/tcp_ip/mysocket.py +4 -110
  77. pymodaq/utils/tcp_ip/serializer.py +4 -801
  78. pymodaq/utils/tcp_ip/tcp_server_client.py +15 -13
  79. pymodaq-5.0.1.dist-info/METADATA +242 -0
  80. pymodaq-5.0.1.dist-info/RECORD +122 -0
  81. {pymodaq-4.4.7.dist-info → pymodaq-5.0.1.dist-info}/WHEEL +1 -1
  82. {pymodaq-4.4.7.dist-info → pymodaq-5.0.1.dist-info}/entry_points.txt +1 -0
  83. pymodaq/examples/custom_app.py +0 -258
  84. pymodaq/examples/custom_viewer.py +0 -112
  85. pymodaq/examples/parameter_ex.py +0 -138
  86. pymodaq/examples/preset_MockCamera.xml +0 -1
  87. pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.py +0 -142
  88. pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.ui +0 -232
  89. pymodaq/post_treatment/daq_measurement/daq_measurement_main.py +0 -391
  90. pymodaq/post_treatment/daq_measurement/process_from_QtDesigner_DAQ_Measurement_GUI.bat +0 -2
  91. pymodaq/post_treatment/process_to_scalar.py +0 -263
  92. pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
  93. pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
  94. pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
  95. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
  96. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
  97. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
  98. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
  99. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
  100. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
  101. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
  102. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
  103. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
  104. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
  105. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
  106. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
  107. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
  108. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
  109. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
  110. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
  111. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
  112. pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
  113. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
  114. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
  115. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
  116. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
  117. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
  118. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
  119. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
  120. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
  121. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
  122. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
  123. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
  124. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
  125. pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
  126. pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
  127. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
  128. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
  129. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
  130. pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
  131. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
  132. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
  133. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
  134. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
  135. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
  136. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
  137. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
  138. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
  139. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
  140. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
  141. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
  142. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
  143. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
  144. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
  145. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
  146. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
  147. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
  148. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
  149. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
  150. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
  151. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
  152. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
  153. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
  154. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
  155. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
  156. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
  157. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
  158. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
  159. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
  160. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
  161. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
  162. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
  163. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
  164. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
  165. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
  166. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
  167. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
  168. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
  169. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
  170. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
  171. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
  172. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
  173. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
  174. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
  175. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
  176. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
  177. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
  178. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
  179. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
  180. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
  181. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
  182. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
  183. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
  184. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
  185. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
  186. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
  187. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
  188. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
  189. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
  190. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
  191. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
  192. pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
  193. pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
  194. pymodaq/resources/QtDesigner_Ressources/Icon_Library/algo.png +0 -0
  195. pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
  196. pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
  197. pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
  198. pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
  199. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
  200. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
  201. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
  202. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
  203. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
  204. pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
  205. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
  206. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
  207. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
  208. pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
  209. pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
  210. pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
  211. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
  212. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
  213. pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
  214. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
  215. pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
  216. pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
  217. pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
  218. pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
  219. pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
  220. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
  221. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
  222. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
  223. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
  224. pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
  225. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
  226. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
  227. pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
  228. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
  229. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
  230. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
  231. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
  232. pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
  233. pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
  234. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
  235. pymodaq/resources/QtDesigner_Ressources/Icon_Library/input.png +0 -0
  236. pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
  237. pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
  238. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
  239. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
  240. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
  241. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
  242. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
  243. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
  244. pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
  245. pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
  246. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
  247. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
  248. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
  249. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
  250. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
  251. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
  252. pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
  253. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
  254. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
  255. pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
  256. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
  257. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
  258. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
  259. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
  260. pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
  261. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
  262. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
  263. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
  264. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
  265. pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
  266. pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
  267. pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
  268. pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
  269. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
  270. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
  271. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
  272. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
  273. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
  274. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
  275. pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
  276. pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
  277. pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
  278. pymodaq/resources/QtDesigner_Ressources/Icon_Library/random.png +0 -0
  279. pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
  280. pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
  281. pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
  282. pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
  283. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
  284. pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
  285. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
  286. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
  287. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
  288. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
  289. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
  290. pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
  291. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
  292. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
  293. pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
  294. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
  295. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
  296. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
  297. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
  298. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
  299. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
  300. pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
  301. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
  302. pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
  303. pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
  304. pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
  305. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
  306. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
  307. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
  308. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
  309. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
  310. pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
  311. pymodaq/resources/QtDesigner_Ressources/Icon_Library/target.png +0 -0
  312. pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
  313. pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
  314. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
  315. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
  316. pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
  317. pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
  318. pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
  319. pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
  320. pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
  321. pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
  322. pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
  323. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
  324. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
  325. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
  326. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -2
  327. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -238
  328. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -127453
  329. pymodaq/resources/QtDesigner_Ressources/__init__.py +0 -0
  330. pymodaq/resources/QtDesigner_Ressources/credit.rst +0 -7
  331. pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -142
  332. pymodaq/resources/VERSION +0 -2
  333. pymodaq/resources/config_template.toml +0 -96
  334. pymodaq/resources/triangulation_data.npy +0 -0
  335. pymodaq/utils/abstract/__init__.py +0 -48
  336. pymodaq/utils/db/__init__.py +0 -0
  337. pymodaq/utils/db/db_logger/__init__.py +0 -0
  338. pymodaq/utils/factory.py +0 -82
  339. pymodaq/utils/gui_utils/custom_app.py +0 -133
  340. pymodaq/utils/gui_utils/dock.py +0 -107
  341. pymodaq/utils/gui_utils/file_io.py +0 -94
  342. pymodaq/utils/gui_utils/layout.py +0 -34
  343. pymodaq/utils/gui_utils/list_picker.py +0 -38
  344. pymodaq/utils/gui_utils/widgets/__init__.py +0 -5
  345. pymodaq/utils/gui_utils/widgets/label.py +0 -24
  346. pymodaq/utils/gui_utils/widgets/push.py +0 -149
  347. pymodaq/utils/gui_utils/widgets/qled.py +0 -62
  348. pymodaq/utils/gui_utils/widgets/spinbox.py +0 -24
  349. pymodaq/utils/gui_utils/widgets/table.py +0 -263
  350. pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -188
  351. pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -110
  352. pymodaq/utils/h5modules/backends.py +0 -1022
  353. pymodaq/utils/h5modules/browsing.py +0 -627
  354. pymodaq/utils/h5modules/data_saving.py +0 -1107
  355. pymodaq/utils/h5modules/exporter.py +0 -119
  356. pymodaq/utils/h5modules/exporters/__init__.py +0 -0
  357. pymodaq/utils/h5modules/exporters/base.py +0 -111
  358. pymodaq/utils/h5modules/exporters/flimj.py +0 -63
  359. pymodaq/utils/h5modules/exporters/hyperspy.py +0 -143
  360. pymodaq/utils/h5modules/saving.py +0 -866
  361. pymodaq/utils/h5modules/utils.py +0 -115
  362. pymodaq/utils/managers/action_manager.py +0 -489
  363. pymodaq/utils/managers/parameter_manager.py +0 -279
  364. pymodaq/utils/managers/roi_manager.py +0 -740
  365. pymodaq/utils/parameter/ioxml.py +0 -545
  366. pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -38
  367. pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -31
  368. pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -126
  369. pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -143
  370. pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -265
  371. pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -44
  372. pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -150
  373. pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -18
  374. pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -175
  375. pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -166
  376. pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -135
  377. pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -149
  378. pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -142
  379. pymodaq/utils/plotting/__init__.py +0 -0
  380. pymodaq/utils/plotting/data_viewers/__init__.py +0 -10
  381. pymodaq/utils/plotting/data_viewers/base.py +0 -286
  382. pymodaq/utils/plotting/data_viewers/viewer.py +0 -275
  383. pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -298
  384. pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -826
  385. pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -231
  386. pymodaq/utils/plotting/data_viewers/viewer2D.py +0 -1118
  387. pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -146
  388. pymodaq/utils/plotting/data_viewers/viewerND.py +0 -800
  389. pymodaq/utils/plotting/gant_chart.py +0 -123
  390. pymodaq/utils/plotting/image_viewer.py +0 -97
  391. pymodaq/utils/plotting/items/__init__.py +0 -0
  392. pymodaq/utils/plotting/items/axis_scaled.py +0 -93
  393. pymodaq/utils/plotting/items/crosshair.py +0 -94
  394. pymodaq/utils/plotting/items/image.py +0 -388
  395. pymodaq/utils/plotting/navigator.py +0 -353
  396. pymodaq/utils/plotting/plotter/plotter.py +0 -94
  397. pymodaq/utils/plotting/plotter/plotters/__init__.py +0 -0
  398. pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +0 -134
  399. pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +0 -78
  400. pymodaq/utils/plotting/utils/__init__.py +0 -0
  401. pymodaq/utils/plotting/utils/axes_viewer.py +0 -88
  402. pymodaq/utils/plotting/utils/filter.py +0 -585
  403. pymodaq/utils/plotting/utils/lineout.py +0 -226
  404. pymodaq/utils/plotting/utils/plot_utils.py +0 -579
  405. pymodaq/utils/plotting/utils/signalND.py +0 -1347
  406. pymodaq/utils/plotting/widgets.py +0 -76
  407. pymodaq/utils/qvariant.py +0 -12
  408. pymodaq/utils/slicing.py +0 -63
  409. pymodaq/utils/units.py +0 -216
  410. pymodaq-4.4.7.dist-info/METADATA +0 -163
  411. pymodaq-4.4.7.dist-info/RECORD +0 -446
  412. /pymodaq/{post_treatment/daq_analysis → daq_utils}/__init__.py +0 -0
  413. /pymodaq/{utils/abstract/logger.py → extensions/daq_logger/abstract.py} +0 -0
  414. /pymodaq/{post_treatment/daq_measurement → extensions/daq_logger/db}/__init__.py +0 -0
  415. {pymodaq-4.4.7.dist-info → pymodaq-5.0.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,258 +0,0 @@
1
- from collections import OrderedDict
2
- import datetime
3
- import numpy as np
4
-
5
- from pymodaq.utils.logger import set_logger, get_module_name
6
- from pymodaq.utils.gui_utils.custom_app import CustomApp
7
- from pymodaq.utils.gui_utils.dock import DockArea, Dock
8
- from pymodaq.utils.gui_utils.file_io import select_file
9
- from pymodaq.utils.config import Config
10
-
11
- from qtpy import QtWidgets
12
- from qtpy.QtCore import Slot, QDate, QThread
13
-
14
- from pymodaq.utils import daq_utils as utils
15
- from pymodaq.utils.parameter import ioxml
16
- from pymodaq.control_modules.daq_viewer import DAQ_Viewer
17
- from pymodaq.utils.plotting.data_viewers.viewer0D import Viewer0D
18
-
19
- from pymodaq.utils.h5modules.browsing import H5Browser
20
- from pymodaq.utils.h5modules.saving import H5Saver
21
- from pymodaq.utils.h5modules.data_saving import DataToExportSaver
22
- from pymodaq.utils.data import DataToExport
23
-
24
-
25
- config = Config()
26
- logger = set_logger(get_module_name(__file__))
27
-
28
-
29
- class CustomAppExample(CustomApp):
30
-
31
- # list of dicts enabling the settings tree on the user interface
32
- params = [
33
- {'title': 'Main settings:', 'name': 'main_settings', 'type': 'group', 'children': [
34
- {'title': 'Save base path:', 'name': 'base_path', 'type': 'browsepath',
35
- 'value': config('data_saving', 'h5file', 'save_path')},
36
- {'title': 'File name:', 'name': 'target_filename', 'type': 'str', 'value': "", 'readonly': True},
37
- {'title': 'Date:', 'name': 'date', 'type': 'date', 'value': QDate.currentDate()},
38
- {'title': 'Do something, such as showing data:', 'name': 'do_something', 'type': 'bool', 'value': False},
39
- {'title': 'Something done:', 'name': 'something_done', 'type': 'led', 'value': False, 'readonly': True},
40
- {'title': 'Infos:', 'name': 'info', 'type': 'text', 'value': ""},
41
- {'title': 'push:', 'name': 'push', 'type': 'bool_push', 'value': False}
42
- ]},
43
- {'title': 'Other settings:', 'name': 'other_settings', 'type': 'group', 'children': [
44
- {'title': 'List of stuffs:', 'name': 'list_stuff', 'type': 'list', 'value': 'first',
45
- 'limits': ['first', 'second', 'third'], 'tip': 'choose a stuff from the list'},
46
- {'title': 'List of integers:', 'name': 'list_int', 'type': 'list', 'value': 0,
47
- 'limits': [0, 256, 512], 'tip': 'choose a stuff from this int list'},
48
- {'title': 'one integer:', 'name': 'an_integer', 'type': 'int', 'value': 500, },
49
- {'title': 'one float:', 'name': 'a_float', 'type': 'float', 'value': 2.7, },
50
- ]},
51
- ]
52
-
53
- def __init__(self, dockarea):
54
-
55
- super().__init__(dockarea)
56
-
57
- # init the object parameters
58
- self.raw_data: DataToExport = None
59
- self.setup_ui()
60
-
61
- def setup_actions(self):
62
- '''
63
- subclass method from ActionManager
64
- '''
65
- logger.debug('setting actions')
66
- self.add_action('quit', 'Quit', 'close2', "Quit program", toolbar=self.toolbar)
67
- self.add_action('grab', 'Grab', 'camera', "Grab from camera", checkable=True, toolbar=self.toolbar)
68
- self.add_action('load', 'Load', 'Open', "Load target file (.h5, .png, .jpg) or data from camera",
69
- checkable=False, toolbar=self.toolbar)
70
- self.add_action('save', 'Save', 'SaveAs', "Save current data", checkable=False, toolbar=self.toolbar)
71
- self.add_action('show', 'Show/hide', 'read2', "Show Hide DAQViewer", checkable=True, toolbar=self.toolbar)
72
-
73
- logger.debug('actions set')
74
-
75
- def setup_docks(self):
76
- '''
77
- subclass method from CustomApp
78
- '''
79
- logger.debug('setting docks')
80
- self.dock_settings = Dock('Settings', size=(350, 350))
81
- self.dockarea.addDock(self.dock_settings, 'left')
82
- self.dock_settings.addWidget(self.settings_tree, 10)
83
-
84
- self.dock_logger = Dock("Logger")
85
- self.logger_list = QtWidgets.QListWidget()
86
- self.logger_list.setMinimumWidth(300)
87
- self.dock_logger.addWidget(self.logger_list)
88
- self.dockarea.addDock(self.dock_logger, 'bottom', self.dock_settings)
89
-
90
- # create a dock containing a viewer object, could be 0D, 1D or 2D depending what kind of data one want to plot here a 0D
91
- dock_Viewer0D = Dock('Viewer dock', size=(350, 350))
92
- self.dockarea.addDock(dock_Viewer0D, 'right', self.dock_logger)
93
- target_widget = QtWidgets.QWidget()
94
- self.target_viewer = Viewer0D(target_widget)
95
- dock_Viewer0D.addWidget(target_widget)
96
-
97
- # create 2 docks to display the DAQ_Viewer (one for its settings, one for its viewer)
98
- self.dock_detector_settings = Dock("Detector Settings", size=(350, 350))
99
- self.dockarea.addDock(self.dock_detector_settings, 'right', self.dock_settings)
100
- self.dock_detector = Dock("Detector Viewer", size=(350, 350))
101
- self.dockarea.addDock(self.dock_detector, 'right', self.dock_detector_settings)
102
- # init one daq_viewer object named detector
103
-
104
- self.detector = DAQ_Viewer(self.dockarea, dock_settings=self.dock_detector_settings,
105
- dock_viewer=self.dock_detector, title="A detector")
106
- # set its type to 'Mock'
107
- self.detector.daq_type = 'DAQ0D'
108
- self.detector.detector = 'Mock'
109
- # init the detector and wait 1000ms for the completion
110
- self.detector.init_hardware()
111
- self.detector.settings.child('main_settings', 'wait_time').setValue(100)
112
- QtWidgets.QApplication.processEvents()
113
- QThread.msleep(1000)
114
-
115
- logger.debug('docks are set')
116
-
117
- def connect_things(self):
118
- '''
119
- subclass method from CustomApp
120
- '''
121
- logger.debug('connecting things')
122
- self.log_signal[str].connect(self.add_log) # connect together this custom signal with the add_log method
123
-
124
- self.detector.grab_done_signal.connect(self.data_done)
125
- self.connect_action('quit', self.quit_function)
126
- self.connect_action('load', self.load_file)
127
- self.connect_action('save', self.save_data)
128
-
129
- self.connect_action('grab', self.detector.grab)
130
- self.connect_action('show', self.show_detector)
131
- logger.debug('connecting done')
132
-
133
- def show_detector(self, status):
134
- self.dock_detector.setVisible(status)
135
- self.dock_detector_settings.setVisible(status)
136
-
137
- def setup_menu(self):
138
- '''
139
- subclass method from CustomApp
140
- '''
141
- logger.debug('settings menu')
142
- file_menu = self.mainwindow.menuBar().addMenu('File')
143
- self.affect_to('quit', file_menu)
144
- file_menu.addSeparator()
145
- self.affect_to('load', file_menu)
146
- self.affect_to('save', file_menu)
147
-
148
- self.affect_to('quit', file_menu)
149
-
150
- logger.debug('menu set')
151
-
152
- def value_changed(self, param):
153
- logger.debug(f'calling value_changed with param {param.name()}')
154
- if param.name() == 'do_something':
155
- if param.value():
156
- self.log_signal.emit('Do something')
157
- self.detector.grab_done_signal.connect(self.show_data)
158
- self.raw_data = [] # init the data to be finally saved
159
- self.settings.child('main_settings', 'something_done').setValue(True)
160
- else:
161
- self.log_signal.emit('Stop Doing something')
162
- self.detector.grab_done_signal.disconnect()
163
- self.settings.child('main_settings', 'something_done').setValue(False)
164
-
165
- logger.debug(f'Value change applied')
166
-
167
- def data_done(self, data):
168
- # print(data)
169
- pass
170
-
171
- def show_data(self, data: DataToExport):
172
- """
173
- do stuff with data from the detector if its grab_done_signal has been connected
174
- Parameters
175
- ----------
176
- data: DataToExport
177
- """
178
- self.raw_data = data
179
- data0D = data.get_data_from_dim('Data0D')
180
-
181
- self.target_viewer.show_data(data0D.data[0])
182
-
183
- def load_file(self):
184
- # init the data browser module
185
- widg = QtWidgets.QWidget()
186
- self.data_browser = H5Browser(widg)
187
- widg.show()
188
-
189
- def quit_function(self):
190
- # close all stuff that need to be
191
- self.detector.quit_fun()
192
- QtWidgets.QApplication.processEvents()
193
- self.mainwindow.close()
194
-
195
- def run_detector(self):
196
- self.detector.ui.grab_pb.click()
197
-
198
- def save_data(self):
199
- try:
200
- path = select_file(start_path=self.settings.child('main_settings', 'base_path').value(), save=True,
201
- ext='h5')
202
- if path is not None:
203
- # init the file object with an addhoc name given by the user
204
- h5saver = H5Saver(save_type='custom')
205
- h5saver.init_file(update_h5=True, addhoc_file_path=path)
206
- datasaver = DataToExportSaver(h5saver)
207
-
208
-
209
- # save all metadata
210
- settings_str = ioxml.parameter_to_xml_string(self.settings)
211
- settings_str = b'<All_settings>' + settings_str
212
- settings_str += ioxml.parameter_to_xml_string(self.detector.settings) + ioxml.parameter_to_xml_string(
213
- h5saver.settings) + b'</All_settings>'
214
-
215
- datasaver.add_data(h5saver.root(), self.raw_data, settings_as_xml=settings_str)
216
-
217
- h5saver.close_file()
218
-
219
- st = 'file {:s} has been saved'.format(str(path))
220
- self.add_log(st)
221
- self.settings.child('main_settings', 'info').setValue(st)
222
-
223
- except Exception as e:
224
- logger.exception(str(e))
225
-
226
- @Slot(str)
227
- def add_log(self, txt):
228
- """
229
- Add a log to the logger list from the given text log and the current time
230
-
231
- ================ ========= ======================
232
- **Parameters** **Type** **Description**
233
-
234
- *txt* string the log to be added
235
- ================ ========= ======================
236
-
237
- """
238
- now = datetime.datetime.now()
239
- new_item = QtWidgets.QListWidgetItem(str(now) + ": " + txt)
240
- self.logger_list.addItem(new_item)
241
- logger.info(txt)
242
-
243
-
244
- def main():
245
- import sys
246
- app = QtWidgets.QApplication(sys.argv)
247
- mainwindow = QtWidgets.QMainWindow()
248
- dockarea = DockArea()
249
- mainwindow.setCentralWidget(dockarea)
250
-
251
- prog = CustomAppExample(dockarea)
252
-
253
- mainwindow.show()
254
- sys.exit(app.exec_())
255
-
256
-
257
- if __name__ == '__main__':
258
- main()
@@ -1,112 +0,0 @@
1
- from pymodaq.utils.gui_utils.widgets.table import SpinBoxDelegate
2
- from pymodaq.utils.parameter.utils import get_widget_from_tree
3
- from pymodaq.utils.plotting.data_viewers.viewer2D import Viewer2D
4
- from pymodaq.utils import gui_utils as gutils
5
- from pyqtgraph.dockarea import Dock
6
- from pymodaq.utils.parameter import ParameterTree, Parameter
7
- from pymodaq.utils.parameter.pymodaq_ptypes.tableview import TableViewCustom
8
- from pymodaq.utils.scanner.scanners.tabular import TableModelTabular
9
- from qtpy.QtCore import QObject, Qt, Slot
10
- from qtpy import QtWidgets
11
-
12
-
13
- class ViewerPointList(QObject):
14
- def __init__(self, area):
15
- super().__init__()
16
- self.area = area
17
- self.viewer: Viewer2D = None
18
-
19
- self.set_viewer()
20
- self.set_point_list()
21
- self.viewer.sig_double_clicked.connect(self.double_click_action)
22
-
23
- @Slot(float, float)
24
- def double_click_action(self, posx, posy):
25
- xs, ys = self.viewer.view.unscale_axis(posx, posy)
26
- data_at = self.viewer.view.get_data_at('red', (xs, ys))
27
- if data_at is not None:
28
- self.table_model.add_data(self.table_view.currentIndex().row() + 1, [posx, posy, data_at])
29
-
30
- def show_data(self, data):
31
- self.viewer.show_data(data)
32
-
33
- def setXaxis(self, xaxis):
34
- self.viewer.x_axis = xaxis
35
-
36
- def setYaxis(self, yaxis):
37
- self.viewer.y_axis = yaxis
38
-
39
- def set_viewer(self):
40
- dock_viewer = Dock('Viewer2D')
41
- self.area.addDock(dock_viewer, 'right')
42
- widget = QtWidgets.QWidget()
43
- self.viewer = Viewer2D(widget)
44
- dock_viewer.addWidget(widget)
45
-
46
- def set_point_list(self):
47
- dock_list = Dock('List of points')
48
- self.area.addDock(dock_list, 'right')
49
- params = [{'title': 'Positions', 'name': 'tabular_table', 'type': 'table_view',
50
- 'delegate': SpinBoxDelegate, 'menu': True}, ]
51
- self.settings_tree = ParameterTree()
52
- self.settings = Parameter.create(name='settings', title='Settings', type='group', children=params)
53
- self.settings_tree.setParameters(self.settings, showTop=False)
54
- dock_list.addWidget(self.settings_tree)
55
-
56
- init_data = [[0., 0., 0.]]
57
- self.table_model = TableModelTabular(init_data, ['x', 'y', 'data'])
58
- self.table_view = get_widget_from_tree(self.settings_tree, TableViewCustom)[0]
59
- self.settings.child(('tabular_table')).setValue(self.table_model)
60
-
61
- self.table_view.horizontalHeader().ResizeMode(QtWidgets.QHeaderView.ResizeToContents)
62
- self.table_view.horizontalHeader().setStretchLastSection(True)
63
- self.table_view.setSelectionBehavior(QtWidgets.QTableView.SelectRows)
64
- self.table_view.setSelectionMode(QtWidgets.QTableView.SingleSelection)
65
- styledItemDelegate = QtWidgets.QStyledItemDelegate()
66
- styledItemDelegate.setItemEditorFactory(SpinBoxDelegate())
67
- self.table_view.setItemDelegate(styledItemDelegate)
68
-
69
- self.table_view.setDragEnabled(True)
70
- self.table_view.setDropIndicatorShown(True)
71
- self.table_view.setAcceptDrops(True)
72
- self.table_view.viewport().setAcceptDrops(True)
73
- self.table_view.setDefaultDropAction(Qt.MoveAction)
74
- self.table_view.setDragDropMode(QtWidgets.QTableView.InternalMove)
75
- self.table_view.setDragDropOverwriteMode(False)
76
-
77
- self.table_view.add_data_signal[int].connect(self.table_model.add_data)
78
- self.table_view.remove_row_signal[int].connect(self.table_model.remove_data)
79
- self.table_view.load_data_signal.connect(self.table_model.load_txt)
80
- self.table_view.save_data_signal.connect(self.table_model.save_txt)
81
-
82
-
83
- if __name__ == '__main__':
84
- from pymodaq.utils.gui_utils import DockArea
85
- from pymodaq.utils.data import Axis, DataFromPlugins
86
- import sys
87
- import numpy as np
88
-
89
- app = QtWidgets.QApplication(sys.argv)
90
- area = DockArea()
91
- win = QtWidgets.QMainWindow()
92
- win.setCentralWidget(area)
93
- viewer = ViewerPointList(area)
94
-
95
- Nx = 100
96
- Ny = 200
97
- x = (np.linspace(0, Nx - 1, Nx) + 100) / 2
98
- y = (np.linspace(0, Ny - 1, Ny) - 10) * 2
99
- from pymodaq.utils.math_utils import gauss2D
100
-
101
- data_red = 3 * gauss2D(x, np.mean(x), (np.max(x)-np.min(x)) / 5, y, np.mean(y), (np.max(y)-np.min(y)) / 5, 1)
102
- data_red += np.random.random(data_red.shape)
103
- data_to_plot = DataFromPlugins(name='mydata', distribution='uniform', data=[data_red],
104
- axes=[Axis('xaxis', units='xpxl', data=x, index=1),
105
- Axis('yaxis', units='ypxl', data=y, index=0), ])
106
-
107
- viewer.show_data(data_to_plot)
108
- viewer.setXaxis(Axis(data=x, label='This is x axis', units='au'))
109
- viewer.setYaxis(Axis(data=y, label='This is y axis', units='au'))
110
- win.show()
111
- app.processEvents()
112
- sys.exit(app.exec_())
@@ -1,138 +0,0 @@
1
- """
2
- S Weber 2020
3
- Examples of custome parameter types derived from pyqtgraph
4
- """
5
- import sys
6
-
7
- import pymodaq.utils.gui_utils.widgets.table
8
- from qtpy import QtWidgets, QtCore
9
- from pymodaq.utils.parameter import ParameterTree, Parameter
10
- from collections import OrderedDict
11
- from pymodaq.utils.managers.parameter_manager import ParameterManager
12
-
13
-
14
- class ParameterEx(ParameterManager):
15
- params = [
16
- {'title': 'Groups:', 'name': 'groups', 'type': 'group', 'children': [
17
- {'title': 'A visible group:', 'name': 'agroup', 'type': 'group', 'children': []},
18
- {'title': 'An hidden group:', 'name': 'bgroup', 'type': 'group', 'children': [], 'visible': False}, # this
19
- # visible option is not available in usual pyqtgraph group
20
- ]},
21
-
22
- {'title': 'Numbers:', 'name': 'numbers', 'type': 'group', 'children': [
23
- {'title': 'Standard float', 'name': 'afloat', 'type': 'float', 'value': 20., 'min': 1.,
24
- 'tip': 'displays this text as a tooltip'},
25
- {'title': 'Standard float with Si prefix', 'name': 'afloatprefix', 'type': 'float', 'value': 20.,
26
- 'tip': 'displays this text as a tooltip', 'siPrefix': True, 'suffix': 'V'},
27
- {'title': 'Linear Slide float', 'name': 'linearslidefloat', 'type': 'slide', 'value': 50, 'default': 50,
28
- 'min': 0,
29
- 'max': 123, 'subtype': 'linear'},
30
- {'title': 'Linear int Slide', 'name': 'linearslideint', 'type': 'slide', 'value': 50, 'default': 50, 'step':1,
31
- 'min': 0,
32
- 'max': 123, 'subtype': 'linear', 'int': True},
33
- {'title': 'Linear Slide with suffix', 'name': 'linearslidewithsuffixandsiPrefix', 'type': 'slide', 'value': 50, 'default': 50,
34
- 'min': 0,
35
- 'max': 1e6, 'subtype': 'linear','suffix':'V','siPrefix':True},
36
- {'title': 'Log Slide float', 'name': 'logslidefloat', 'type': 'slide', 'value': 50, 'default': 50,
37
- 'min': 1e-5,
38
- 'max': 1e5, 'subtype': 'log','suffix':'V','siPrefix':True},
39
- ]},
40
-
41
- {'title': 'Booleans:', 'name': 'booleans', 'type': 'group', 'children': [
42
- {'title': 'Standard bool', 'name': 'abool', 'type': 'bool', 'value': True},
43
- {'title': 'bool push', 'name': 'aboolpush', 'type': 'bool_push', 'value': True, 'label': 'action'},
44
- {'title': 'A led', 'name': 'aled', 'type': 'led', 'value': False, 'tip': 'a led you cannot toggle'},
45
- {'title': 'A led', 'name': 'anotherled', 'type': 'led_push', 'value': True, 'tip': 'a led you can toggle'},
46
- ]},
47
-
48
- {'title': 'DateTime:', 'name': 'datetimes', 'type': 'group', 'children': [
49
- {'title': 'Time:', 'name': 'atime', 'type': 'time', 'value': QtCore.QTime.currentTime()},
50
- {'title': 'Date:', 'name': 'adate', 'type': 'date', 'value': QtCore.QDate.currentDate(),
51
- 'format': 'dd/MM/yyyy'},
52
- {'title': 'DateTime:', 'name': 'adatetime', 'type': 'date_time',
53
- 'value': QtCore.QDateTime(QtCore.QDate.currentDate(), QtCore.QTime.currentTime()),
54
- 'format': 'MM/dd/yyyy hh:mm', 'tip': 'displays this text as a tooltip'},
55
- ]},
56
- {'title': 'An action', 'name': 'action', 'type': 'action'}, # action whose displayed text corresponds to title
57
-
58
- {'title': 'Lists:', 'name': 'lists', 'type': 'group', 'children': [
59
- {'title': 'Standard list:', 'name': 'alist', 'type': 'list',
60
- 'limits': ['a value', 'another one'], 'value': 'a value'},
61
- {'title': 'List with add:', 'name': 'anotherlist', 'type': 'list',
62
- 'limits': ['a value', 'another one'], 'value': 'a value',
63
- 'show_pb': True, 'tip': 'when using the "show_pb" option, displays a plus button to add elt to the list'},
64
- {'title': 'List defined from a dict:', 'name': 'dict_list', 'type': 'list',
65
- 'limits': {'xaxis': 0, 'yaxis': [0, 1, 2]},
66
- 'value': 'yaxis',
67
- 'tip': 'Such a parameter display text that are keys of a dict while'
68
- 'values could be any object'
69
- },
70
- ]},
71
- {'title': 'Browsing files:', 'name': 'browser', 'type': 'group', 'children': [
72
- {'title': 'Look for a file:', 'name': 'afile', 'type': 'browsepath', 'value': '', 'filetype': True,
73
- 'tip': 'If filetype is True select a file otherwise a directory'},
74
- {'title': 'Look for a dir:', 'name': 'adir', 'type': 'browsepath', 'value': '', 'filetype': False,
75
- 'tip': 'If filetype is True select a file otherwise a directory'},
76
-
77
- ]},
78
- {'title': 'Selectable items:', 'name': 'itemss', 'type': 'group', 'children': [
79
- {'title': 'Selectable items', 'name': 'items', 'type': 'itemselect',
80
- 'value': dict(all_items=['item1', 'item2', 'item3'], selected=['item2']),
81
- 'tip': 'Press Ctrl+click to select items in any order'},
82
- {'title': 'Selectable items', 'name': 'itemsbis', 'type': 'itemselect',
83
- 'value': dict(all_items=['item1', 'item2', 'item3'], selected=['item2']),
84
- 'tip': 'If show_pb is True, user can add items to the list', 'show_pb': True,},
85
- {'title': 'Removable items', 'name': 'itemsbisbis', 'type': 'itemselect',
86
- 'value': dict(all_items=['item1', 'item2', 'item3'], selected=['item2']),
87
- 'tip': 'If show_mb is True, user can remove selected items from the list', 'show_mb': True,},
88
- {'title': 'Checkable items', 'name': 'itemscheckable', 'type': 'itemselect',
89
- 'value': dict(all_items=['item1', 'item2', 'item3'], selected=['item2']),
90
- 'tip': 'If checkbox is True, user can select item by checking/unchecking items. Remove items is still used with standard selections',
91
- 'show_pb': True, 'checkbox': True, 'show_mb': True,},
92
- {'title': 'Dragable items', 'name': 'itemsdragablecheckable', 'type': 'itemselect',
93
- 'value': dict(all_items=['item1', 'item2', 'item3'], selected=['item2']),
94
- 'tip': 'If dragdrop is True, user can drag or drop items inside the list', 'checkbox': True, 'dragdrop': True},
95
- ]},
96
- {'title': 'Plain text:', 'name': 'texts', 'type': 'group', 'children': [
97
- {'title': 'Standard str', 'name': 'atte', 'type': 'str', 'value': 'this is a string you can edit'},
98
- {'title': 'Plain text', 'name': 'text', 'type': 'text', 'value': 'this is some text'},
99
- {'title': 'Plain text', 'name': 'textpb', 'type': 'text_pb', 'value': 'this is some text',
100
- 'tip': 'If text_pb type is used, user can add text to the parameter'},
101
- ]},
102
-
103
- {'title': 'Tables:', 'name': 'tables', 'type': 'group', 'children': [
104
- {'title': 'Table widget', 'name': 'tablewidget', 'type': 'table', 'value':
105
- OrderedDict(key1='data1', key2=24), 'header': ['keys', 'limits'], 'height': 100},
106
- {'title': 'Table view', 'name': 'tabular_table', 'type': 'table_view',
107
- 'delegate': pymodaq.utils.gui_utils.widgets.table.SpinBoxDelegate, 'menu': True,
108
- 'value': pymodaq.utils.gui_utils.widgets.table.TableModel([[0.1, 0.2, 0.3]], ['value1', 'value2', 'value3']),
109
- 'tip': 'The advantage of the Table model lies in its modularity.\n For concrete examples see the'
110
- 'TableModelTabular and the TableModelSequential custom models in the'
111
- ' pymodaq.utils.scanner module'},
112
- ]}, # The advantage of the Table model lies in its modularity for concrete examples see the
113
- # TableModelTabular and the TableModelSequential custom models in the pymodaq.utils.scanner module
114
- ]
115
-
116
- def __init__(self):
117
- super().__init__()
118
-
119
- def value_changed(self, param):
120
- """
121
- """
122
- print(f'The parameter {param.name()} changed its value to {param.value()}')
123
-
124
-
125
- def main():
126
- app = QtWidgets.QApplication(sys.argv)
127
- ptree = ParameterEx()
128
- ptree.settings_tree.show()
129
- ptree.settings.child('itemss', 'itemsbis').setValue(dict(all_items=['item1', 'item2', 'item3'],
130
- selected=['item3']))
131
-
132
- ptree.settings.child('itemss', 'itemsbis').setValue(dict(all_items=['item1', 'item2', 'item3'],
133
- selected=['item1', 'item3']))
134
- sys.exit(app.exec_())
135
-
136
-
137
- if __name__ == '__main__':
138
- main()
@@ -1 +0,0 @@
1
- <Preset type="group" title="Preset" visible="1" removable="0" readonly="0"><filename type="str" title="Filename:" visible="1" removable="0" readonly="0">preset_MockCamera</filename><use_pid type="bool" title="Use PID as actuator:" visible="1" removable="0" readonly="0">0</use_pid><pid_models type="list" title="PID models:" visible="0" removable="0" readonly="0" values="[]" limits="[]">str('')</pid_models><model_settings type="group" title="Model Settings:" visible="0" removable="0" readonly="0" /><Moves type="groupmove" title="Moves:" visible="1" removable="0" readonly="0" addList="['Mock', 'MockCamera', 'MockTau', 'TCPServer', 'PID']"><move00 type="group" title="Actuator 00" visible="1" removable="1" readonly="0"><name type="str" title="Name:" visible="1" removable="0" readonly="0">Xaxis</name><init type="bool" title="Init?:" visible="1" removable="0" readonly="0">1</init><params type="group" title="Settings:" visible="1" removable="0" readonly="0"><main_settings type="group" title="Main Settings:" visible="1" removable="0" readonly="0"><move_type type="str" title="Actuator type:" visible="1" removable="0" readonly="1">MockCamera</move_type><module_name type="str" title="Actuator name:" visible="1" removable="0" readonly="1">Xaxis</module_name><controller_ID type="int" title="Controller ID:" visible="1" removable="0" readonly="0">4524</controller_ID><refresh_timeout type="int" title="Refresh value (ms):" visible="1" removable="0" readonly="0">500</refresh_timeout><tcpip type="group" title="TCP/IP options:" visible="1" removable="0" readonly="0"><connect_server type="bool_push" title="Connect to server:" visible="1" removable="0" readonly="0">0</connect_server><tcp_connected type="led" title="Connected?:" visible="1" removable="0" readonly="0">0</tcp_connected><ip_address type="str" title="IP address:" visible="1" removable="0" readonly="0">10.47.0.39</ip_address><port type="int" title="Port:" visible="1" removable="0" readonly="0">6341</port></tcpip></main_settings><move_settings type="group" title="Actuator Settings:" visible="1" removable="0" readonly="0"><multiaxes type="group" title="MultiAxes:" visible="1" removable="0" readonly="0"><ismultiaxes type="bool" title="is Multiaxes:" visible="1" removable="0" readonly="0">1</ismultiaxes><multi_status type="list" title="Status:" visible="1" removable="0" readonly="0" values="['Master', 'Slave']" limits="['Master', 'Slave']" show_pb="1">str('Slave')</multi_status><axis type="list" title="Axis:" visible="1" removable="0" readonly="0" values="['X', 'Y', 'Theta']" limits="['X', 'Y', 'Theta']" show_pb="1">str('X')</axis></multiaxes><units type="str" title="Units:" visible="1" removable="0" readonly="1" /><epsilon type="float" title="Epsilon:" visible="1" removable="0" readonly="0">1.0</epsilon><timeout type="int" title="Timeout (s):" visible="1" removable="0" readonly="0">20</timeout><bounds type="group" title="Bounds:" visible="1" removable="0" readonly="0"><is_bounds type="bool" title="Set Bounds:" visible="1" removable="0" readonly="0">0</is_bounds><min_bound type="float" title="Min:" visible="1" removable="0" readonly="0">0.0</min_bound><max_bound type="float" title="Max:" visible="1" removable="0" readonly="0">1.0</max_bound></bounds><scaling type="group" title="Scaling:" visible="1" removable="0" readonly="0"><use_scaling type="bool" title="Use scaling:" visible="1" removable="0" readonly="0">0</use_scaling><scaling type="float" title="Scaling factor:" visible="1" removable="0" readonly="0">1.0</scaling><offset type="float" title="Offset factor:" visible="1" removable="0" readonly="0">0.0</offset></scaling></move_settings></params></move00><move01 type="group" title="Actuator 01" visible="1" removable="1" readonly="0"><name type="str" title="Name:" visible="1" removable="0" readonly="0">Yaxis</name><init type="bool" title="Init?:" visible="1" removable="0" readonly="0">1</init><params type="group" title="Settings:" visible="1" removable="0" readonly="0"><main_settings type="group" title="Main Settings:" visible="1" removable="0" readonly="0"><move_type type="str" title="Actuator type:" visible="1" removable="0" readonly="1">MockCamera</move_type><module_name type="str" title="Actuator name:" visible="1" removable="0" readonly="1">Yaxis</module_name><controller_ID type="int" title="Controller ID:" visible="1" removable="0" readonly="0">4524</controller_ID><refresh_timeout type="int" title="Refresh value (ms):" visible="1" removable="0" readonly="0">500</refresh_timeout><tcpip type="group" title="TCP/IP options:" visible="1" removable="0" readonly="0"><connect_server type="bool_push" title="Connect to server:" visible="1" removable="0" readonly="0">0</connect_server><tcp_connected type="led" title="Connected?:" visible="1" removable="0" readonly="0">0</tcp_connected><ip_address type="str" title="IP address:" visible="1" removable="0" readonly="0">10.47.0.39</ip_address><port type="int" title="Port:" visible="1" removable="0" readonly="0">6341</port></tcpip></main_settings><move_settings type="group" title="Actuator Settings:" visible="1" removable="0" readonly="0"><multiaxes type="group" title="MultiAxes:" visible="1" removable="0" readonly="0"><ismultiaxes type="bool" title="is Multiaxes:" visible="1" removable="0" readonly="0">1</ismultiaxes><multi_status type="list" title="Status:" visible="1" removable="0" readonly="0" values="['Master', 'Slave']" limits="['Master', 'Slave']" show_pb="1">str('Slave')</multi_status><axis type="list" title="Axis:" visible="1" removable="0" readonly="0" values="['X', 'Y', 'Theta']" limits="['X', 'Y', 'Theta']" show_pb="1">str('Y')</axis></multiaxes><units type="str" title="Units:" visible="1" removable="0" readonly="1" /><epsilon type="float" title="Epsilon:" visible="1" removable="0" readonly="0">1.0</epsilon><timeout type="int" title="Timeout (s):" visible="1" removable="0" readonly="0">20</timeout><bounds type="group" title="Bounds:" visible="1" removable="0" readonly="0"><is_bounds type="bool" title="Set Bounds:" visible="1" removable="0" readonly="0">0</is_bounds><min_bound type="float" title="Min:" visible="1" removable="0" readonly="0">0.0</min_bound><max_bound type="float" title="Max:" visible="1" removable="0" readonly="0">1.0</max_bound></bounds><scaling type="group" title="Scaling:" visible="1" removable="0" readonly="0"><use_scaling type="bool" title="Use scaling:" visible="1" removable="0" readonly="0">0</use_scaling><scaling type="float" title="Scaling factor:" visible="1" removable="0" readonly="0">1.0</scaling><offset type="float" title="Offset factor:" visible="1" removable="0" readonly="0">0.0</offset></scaling></move_settings></params></move01><move02 type="group" title="Actuator 02" visible="1" removable="1" readonly="0"><name type="str" title="Name:" visible="1" removable="0" readonly="0">Theta</name><init type="bool" title="Init?:" visible="1" removable="0" readonly="0">1</init><params type="group" title="Settings:" visible="1" removable="0" readonly="0"><main_settings type="group" title="Main Settings:" visible="1" removable="0" readonly="0"><move_type type="str" title="Actuator type:" visible="1" removable="0" readonly="1">MockCamera</move_type><module_name type="str" title="Actuator name:" visible="1" removable="0" readonly="1">Theta</module_name><controller_ID type="int" title="Controller ID:" visible="1" removable="0" readonly="0">4524</controller_ID><refresh_timeout type="int" title="Refresh value (ms):" visible="1" removable="0" readonly="0">500</refresh_timeout><tcpip type="group" title="TCP/IP options:" visible="1" removable="0" readonly="0"><connect_server type="bool_push" title="Connect to server:" visible="1" removable="0" readonly="0">0</connect_server><tcp_connected type="led" title="Connected?:" visible="1" removable="0" readonly="0">0</tcp_connected><ip_address type="str" title="IP address:" visible="1" removable="0" readonly="0">10.47.0.39</ip_address><port type="int" title="Port:" visible="1" removable="0" readonly="0">6341</port></tcpip></main_settings><move_settings type="group" title="Actuator Settings:" visible="1" removable="0" readonly="0"><multiaxes type="group" title="MultiAxes:" visible="1" removable="0" readonly="0"><ismultiaxes type="bool" title="is Multiaxes:" visible="1" removable="0" readonly="0">1</ismultiaxes><multi_status type="list" title="Status:" visible="1" removable="0" readonly="0" values="['Master', 'Slave']" limits="['Master', 'Slave']" show_pb="1">str('Slave')</multi_status><axis type="list" title="Axis:" visible="1" removable="0" readonly="0" values="['X', 'Y', 'Theta']" limits="['X', 'Y', 'Theta']" show_pb="1">str('Theta')</axis></multiaxes><units type="str" title="Units:" visible="1" removable="0" readonly="1" /><epsilon type="float" title="Epsilon:" visible="1" removable="0" readonly="0">1.0</epsilon><timeout type="int" title="Timeout (s):" visible="1" removable="0" readonly="0">20</timeout><bounds type="group" title="Bounds:" visible="1" removable="0" readonly="0"><is_bounds type="bool" title="Set Bounds:" visible="1" removable="0" readonly="0">0</is_bounds><min_bound type="float" title="Min:" visible="1" removable="0" readonly="0">0.0</min_bound><max_bound type="float" title="Max:" visible="1" removable="0" readonly="0">1.0</max_bound></bounds><scaling type="group" title="Scaling:" visible="1" removable="0" readonly="0"><use_scaling type="bool" title="Use scaling:" visible="1" removable="0" readonly="0">0</use_scaling><scaling type="float" title="Scaling factor:" visible="1" removable="0" readonly="0">1.0</scaling><offset type="float" title="Offset factor:" visible="1" removable="0" readonly="0">0.0</offset></scaling></move_settings></params></move02></Moves><Detectors type="groupdet" title="Detectors:" visible="1" removable="0" readonly="0" addList="['DAQ0D/Mock', 'DAQ0D/TCPServer', 'DAQ1D/Mock', 'DAQ1D/Mock_spectro', 'DAQ1D/TCPServer', 'DAQ2D/Mock', 'DAQ2D/MockCamera', 'DAQ2D/TCPServer', 'DAQND/Mock']"><det00 type="group" title="Det 00" visible="1" removable="1" readonly="0"><name type="str" title="Name:" visible="1" removable="0" readonly="0">Camera</name><init type="bool" title="Init?:" visible="1" removable="0" readonly="0">1</init><params type="group" title="Settings:" visible="1" removable="0" readonly="0"><main_settings type="group" title="Main Settings:" visible="1" removable="0" readonly="0"><DAQ_type type="list" title="DAQ type:" visible="1" removable="0" readonly="1" values="['DAQ0D', 'DAQ1D', 'DAQ2D', 'DAQND']" limits="['DAQ0D', 'DAQ1D', 'DAQ2D', 'DAQND']" show_pb="1">str('DAQ2D')</DAQ_type><detector_type type="str" title="Detector type:" visible="1" removable="0" readonly="1">MockCamera</detector_type><module_name type="str" title="Detector Name:" visible="1" removable="0" readonly="1">Camera</module_name><Nviewers type="int" title="Nviewers:" visible="1" removable="0" readonly="1">1</Nviewers><controller_ID type="int" title="Controller ID:" visible="1" removable="0" readonly="0">4524</controller_ID><show_data type="bool" title="Show data and process:" visible="1" removable="0" readonly="0">1</show_data><refresh_time type="float" title="Refresh time (ms):" visible="1" removable="0" readonly="0">50.0</refresh_time><Naverage type="int" title="Naverage" visible="1" removable="0" readonly="0">1</Naverage><show_averaging type="bool" title="Show averaging:" visible="1" removable="0" readonly="0">0</show_averaging><live_averaging type="bool" title="Live averaging:" visible="1" removable="0" readonly="0">0</live_averaging><N_live_averaging type="int" title="N Live aver.:" visible="0" removable="0" readonly="0">0</N_live_averaging><wait_time type="int" title="Wait time (ms):" visible="1" removable="0" readonly="0">0</wait_time><continuous_saving_opt type="bool" title="Continuous saving:" visible="1" removable="0" readonly="0">0</continuous_saving_opt><tcpip type="group" title="TCP/IP options:" visible="1" removable="0" readonly="0"><connect_server type="bool_push" title="Connect to server:" visible="1" removable="0" readonly="0">0</connect_server><tcp_connected type="led" title="Connected?:" visible="1" removable="0" readonly="0">0</tcp_connected><ip_address type="str" title="IP address:" visible="1" removable="0" readonly="0">10.47.0.39</ip_address><port type="int" title="Port:" visible="1" removable="0" readonly="0">6341</port></tcpip><overshoot type="group" title="Overshoot options:" visible="1" removable="0" readonly="0"><stop_overshoot type="bool" title="Overshoot:" visible="1" removable="0" readonly="0">0</stop_overshoot><overshoot_value type="float" title="Overshoot value:" visible="1" removable="0" readonly="0">0.0</overshoot_value></overshoot><axes type="group" title="Axis options:" visible="1" removable="0" readonly="0"><use_calib type="list" title="Use calibration?:" visible="1" removable="0" readonly="0" values="['None']" limits="['None']" show_pb="1">str('None')</use_calib><xaxis type="group" title="X axis:" visible="1" removable="0" readonly="0"><xlabel type="str" title="Label:" visible="1" removable="0" readonly="0">x axis</xlabel><xunits type="str" title="Units:" visible="1" removable="0" readonly="0">pxls</xunits><xoffset type="float" title="Offset:" visible="1" removable="0" readonly="0">0.0</xoffset><xscaling type="float" title="Scaling" visible="1" removable="0" readonly="0">1.0</xscaling></xaxis><yaxis type="group" title="Y axis:" visible="1" removable="0" readonly="0"><ylabel type="str" title="Label:" visible="1" removable="0" readonly="0">y axis</ylabel><yunits type="str" title="Units:" visible="1" removable="0" readonly="0">pxls</yunits><yoffset type="float" title="Offset:" visible="1" removable="0" readonly="0">0.0</yoffset><yscaling type="float" title="Scaling" visible="1" removable="0" readonly="0">1.0</yscaling></yaxis></axes></main_settings><detector_settings type="group" title="Detector Settings" visible="1" removable="0" readonly="0"><controller_status type="list" title="Controller Status:" visible="1" removable="0" readonly="0" values="['Master', 'Slave']" limits="['Master', 'Slave']" show_pb="1">str('Master')</controller_status><wait_time type="int" title="Wait time (ms)" visible="1" removable="0" readonly="0">50</wait_time><Nimagescolor type="int" title="Nimages colors:" visible="1" removable="0" readonly="0">1</Nimagescolor><Nimagespannel type="int" title="Nimages pannels:" visible="1" removable="0" readonly="0">1</Nimagespannel><use_roi_select type="bool" title="Use ROISelect" visible="1" removable="0" readonly="0">0</use_roi_select><threshold type="int" title="Threshold" visible="1" removable="0" readonly="0">1</threshold><current_values type="group" title="Values" visible="1" removable="0" readonly="0"><X type="float" title="X" visible="1" removable="0" readonly="0">0.0</X><Y type="float" title="Y" visible="1" removable="0" readonly="0">0.0</Y><Theta type="float" title="Theta" visible="1" removable="0" readonly="0">0.0</Theta></current_values><cam_settings type="group" title="Cam. Prop.:" visible="1" removable="0" readonly="0"><Nx type="int" title="Nx" visible="1" removable="0" readonly="0">100</Nx><Ny type="int" title="Ny" visible="1" removable="0" readonly="0">200</Ny><amp type="int" title="Amp" visible="1" removable="0" readonly="0">20</amp><x0 type="slide" title="x0" visible="1" removable="0" readonly="0">50</x0><y0 type="float" title="y0" visible="1" removable="0" readonly="0">100.0</y0><dx type="float" title="dx" visible="1" removable="0" readonly="0">20.0</dx><dy type="float" title="dy" visible="1" removable="0" readonly="0">40.0</dy><n type="int" title="n" visible="1" removable="0" readonly="0">1</n><amp_noise type="float" title="amp_noise" visible="1" removable="0" readonly="0">2.0</amp_noise></cam_settings></detector_settings></params></det00></Detectors></Preset>