pymodaq 4.2.4__py3-none-any.whl → 5.0.0__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 (399) hide show
  1. pymodaq/__init__.py +30 -23
  2. pymodaq/control_modules/daq_move.py +27 -14
  3. pymodaq/control_modules/daq_move_ui.py +28 -12
  4. pymodaq/control_modules/daq_viewer.py +38 -28
  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 +19 -10
  8. pymodaq/control_modules/utils.py +18 -12
  9. pymodaq/control_modules/viewer_utility_classes.py +13 -4
  10. pymodaq/dashboard.py +164 -115
  11. pymodaq/examples/custom_app.py +13 -16
  12. pymodaq/examples/custom_viewer.py +6 -6
  13. pymodaq/examples/function_plotter.py +13 -12
  14. pymodaq/examples/parameter_ex.py +50 -25
  15. pymodaq/examples/tcp_client.py +1 -1
  16. pymodaq/extensions/__init__.py +1 -1
  17. pymodaq/extensions/bayesian/bayesian_optimisation.py +15 -12
  18. pymodaq/extensions/bayesian/utils.py +10 -10
  19. pymodaq/extensions/console.py +10 -13
  20. pymodaq/extensions/{daq_logger.py → daq_logger/daq_logger.py} +36 -56
  21. pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger.py +16 -15
  22. pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger_models.py +2 -0
  23. pymodaq/{utils/h5modules → extensions/daq_logger}/h5logging.py +7 -8
  24. pymodaq/extensions/daq_scan.py +153 -247
  25. pymodaq/extensions/daq_scan_ui.py +11 -9
  26. pymodaq/extensions/h5browser.py +8 -8
  27. pymodaq/extensions/pid/__init__.py +6 -3
  28. pymodaq/extensions/pid/daq_move_PID.py +4 -2
  29. pymodaq/extensions/pid/pid_controller.py +15 -12
  30. pymodaq/extensions/pid/utils.py +10 -5
  31. pymodaq/extensions/utils.py +5 -3
  32. pymodaq/post_treatment/load_and_plot.py +10 -7
  33. pymodaq/resources/preset_default.xml +1 -1
  34. pymodaq/utils/array_manipulation.py +4 -384
  35. pymodaq/utils/calibration_camera.py +12 -9
  36. pymodaq/utils/chrono_timer.py +7 -5
  37. pymodaq/utils/config.py +3 -450
  38. pymodaq/utils/daq_utils.py +6 -708
  39. pymodaq/utils/data.py +9 -2774
  40. pymodaq/utils/exceptions.py +0 -4
  41. pymodaq/utils/gui_utils/__init__.py +8 -8
  42. pymodaq/utils/gui_utils/loader_utils.py +38 -0
  43. pymodaq/utils/gui_utils/utils.py +6 -138
  44. pymodaq/utils/h5modules/__init__.py +0 -4
  45. pymodaq/utils/h5modules/module_saving.py +15 -8
  46. pymodaq/utils/leco/__init__.py +2 -2
  47. pymodaq/utils/leco/daq_move_LECODirector.py +2 -2
  48. pymodaq/utils/leco/daq_xDviewer_LECODirector.py +2 -2
  49. pymodaq/utils/leco/director_utils.py +2 -2
  50. pymodaq/utils/leco/leco_director.py +3 -3
  51. pymodaq/utils/leco/pymodaq_listener.py +2 -2
  52. pymodaq/utils/leco/utils.py +1 -1
  53. pymodaq/utils/logger.py +4 -76
  54. pymodaq/utils/managers/batchscan_manager.py +16 -19
  55. pymodaq/utils/managers/modules_manager.py +10 -7
  56. pymodaq/utils/managers/overshoot_manager.py +3 -5
  57. pymodaq/utils/managers/preset_manager.py +37 -15
  58. pymodaq/utils/managers/preset_manager_utils.py +11 -9
  59. pymodaq/utils/managers/remote_manager.py +12 -10
  60. pymodaq/utils/math_utils.py +4 -572
  61. pymodaq/utils/parameter/__init__.py +4 -11
  62. pymodaq/utils/parameter/utils.py +4 -299
  63. pymodaq/utils/scanner/scan_config.py +1 -1
  64. pymodaq/utils/scanner/scan_factory.py +16 -12
  65. pymodaq/utils/{plotting → scanner}/scan_selector.py +19 -20
  66. pymodaq/utils/scanner/scanner.py +10 -8
  67. pymodaq/utils/scanner/scanners/_1d_scanners.py +8 -5
  68. pymodaq/utils/scanner/scanners/_2d_scanners.py +5 -5
  69. pymodaq/utils/scanner/scanners/sequential.py +8 -8
  70. pymodaq/utils/scanner/scanners/tabular.py +9 -9
  71. pymodaq/utils/scanner/utils.py +6 -4
  72. pymodaq/utils/svg/svg_viewer2D.py +3 -4
  73. pymodaq/utils/tcp_ip/serializer.py +64 -16
  74. pymodaq/utils/tcp_ip/tcp_server_client.py +10 -8
  75. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/METADATA +5 -3
  76. pymodaq-5.0.0.dist-info/RECORD +123 -0
  77. pymodaq/post_treatment/process_to_scalar.py +0 -263
  78. pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
  79. pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
  80. pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
  81. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
  82. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
  83. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
  84. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
  85. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
  86. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
  87. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
  88. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
  89. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
  90. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
  91. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
  92. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
  93. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
  94. pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
  95. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
  96. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
  97. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
  98. pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
  99. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
  100. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
  101. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
  102. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
  103. pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
  104. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
  105. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
  106. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
  107. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
  108. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
  109. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
  110. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
  111. pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
  112. pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
  113. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
  114. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
  115. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
  116. pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
  117. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
  118. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
  119. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
  120. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
  121. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
  122. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
  123. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
  124. pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
  125. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
  126. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
  127. pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
  128. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
  129. pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
  130. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
  131. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
  132. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
  133. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
  134. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
  135. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
  136. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
  137. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
  138. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
  139. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
  140. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
  141. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
  142. pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
  143. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
  144. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
  145. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
  146. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
  147. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
  148. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
  149. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
  150. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
  151. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
  152. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
  153. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
  154. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
  155. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
  156. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
  157. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
  158. pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
  159. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
  160. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
  161. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
  162. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
  163. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
  164. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
  165. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
  166. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
  167. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
  168. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
  169. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
  170. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
  171. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
  172. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
  173. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
  174. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
  175. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
  176. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
  177. pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
  178. pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
  179. pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
  180. pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
  181. pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
  182. pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
  183. pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
  184. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
  185. pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
  186. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
  187. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
  188. pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
  189. pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
  190. pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
  191. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
  192. pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
  193. pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
  194. pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
  195. pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
  196. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
  197. pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
  198. pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
  199. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
  200. pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
  201. pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
  202. pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
  203. pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
  204. pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
  205. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
  206. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
  207. pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
  208. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
  209. pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
  210. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
  211. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
  212. pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
  213. pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
  214. pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
  215. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
  216. pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
  217. pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
  218. pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
  219. pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
  220. pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
  221. pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
  222. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
  223. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
  224. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
  225. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
  226. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
  227. pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
  228. pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
  229. pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
  230. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
  231. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
  232. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
  233. pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
  234. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
  235. pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
  236. pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
  237. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
  238. pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
  239. pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
  240. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
  241. pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
  242. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
  243. pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
  244. pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
  245. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
  246. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
  247. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
  248. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
  249. pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
  250. pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
  251. pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
  252. pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
  253. pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
  254. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
  255. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
  256. pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
  257. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
  258. pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
  259. pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
  260. pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
  261. pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
  262. pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
  263. pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
  264. pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
  265. pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
  266. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
  267. pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
  268. pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
  269. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
  270. pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
  271. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
  272. pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
  273. pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
  274. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
  275. pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
  276. pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
  277. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
  278. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
  279. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
  280. pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
  281. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
  282. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
  283. pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
  284. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
  285. pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
  286. pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
  287. pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
  288. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
  289. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
  290. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
  291. pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
  292. pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
  293. pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
  294. pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
  295. pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
  296. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
  297. pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
  298. pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
  299. pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
  300. pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
  301. pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
  302. pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
  303. pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
  304. pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
  305. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
  306. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
  307. pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
  308. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -2
  309. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -234
  310. pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -127150
  311. pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -142
  312. pymodaq/resources/VERSION +0 -1
  313. pymodaq/resources/config_template.toml +0 -94
  314. pymodaq/resources/triangulation_data.npy +0 -0
  315. pymodaq/utils/abstract/__init__.py +0 -48
  316. pymodaq/utils/db/__init__.py +0 -0
  317. pymodaq/utils/db/db_logger/__init__.py +0 -0
  318. pymodaq/utils/enums.py +0 -76
  319. pymodaq/utils/factory.py +0 -82
  320. pymodaq/utils/gui_utils/custom_app.py +0 -133
  321. pymodaq/utils/gui_utils/dock.py +0 -107
  322. pymodaq/utils/gui_utils/file_io.py +0 -93
  323. pymodaq/utils/gui_utils/layout.py +0 -34
  324. pymodaq/utils/gui_utils/list_picker.py +0 -38
  325. pymodaq/utils/gui_utils/widgets/__init__.py +0 -5
  326. pymodaq/utils/gui_utils/widgets/label.py +0 -24
  327. pymodaq/utils/gui_utils/widgets/lcd.py +0 -111
  328. pymodaq/utils/gui_utils/widgets/push.py +0 -149
  329. pymodaq/utils/gui_utils/widgets/qled.py +0 -62
  330. pymodaq/utils/gui_utils/widgets/spinbox.py +0 -24
  331. pymodaq/utils/gui_utils/widgets/table.py +0 -263
  332. pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -188
  333. pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -102
  334. pymodaq/utils/h5modules/backends.py +0 -1022
  335. pymodaq/utils/h5modules/browsing.py +0 -625
  336. pymodaq/utils/h5modules/data_saving.py +0 -1105
  337. pymodaq/utils/h5modules/exporter.py +0 -119
  338. pymodaq/utils/h5modules/exporters/__init__.py +0 -0
  339. pymodaq/utils/h5modules/exporters/base.py +0 -111
  340. pymodaq/utils/h5modules/exporters/flimj.py +0 -63
  341. pymodaq/utils/h5modules/exporters/hyperspy.py +0 -143
  342. pymodaq/utils/h5modules/saving.py +0 -866
  343. pymodaq/utils/h5modules/utils.py +0 -115
  344. pymodaq/utils/managers/action_manager.py +0 -489
  345. pymodaq/utils/managers/parameter_manager.py +0 -282
  346. pymodaq/utils/managers/roi_manager.py +0 -726
  347. pymodaq/utils/messenger.py +0 -66
  348. pymodaq/utils/parameter/ioxml.py +0 -542
  349. pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -38
  350. pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -31
  351. pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -126
  352. pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -143
  353. pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -265
  354. pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -44
  355. pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -150
  356. pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -18
  357. pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -175
  358. pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -145
  359. pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -135
  360. pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -149
  361. pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -142
  362. pymodaq/utils/plotting/__init__.py +0 -0
  363. pymodaq/utils/plotting/data_viewers/__init__.py +0 -10
  364. pymodaq/utils/plotting/data_viewers/base.py +0 -286
  365. pymodaq/utils/plotting/data_viewers/viewer.py +0 -274
  366. pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -298
  367. pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -826
  368. pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -231
  369. pymodaq/utils/plotting/data_viewers/viewer2D.py +0 -1118
  370. pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -146
  371. pymodaq/utils/plotting/data_viewers/viewerND.py +0 -800
  372. pymodaq/utils/plotting/gant_chart.py +0 -123
  373. pymodaq/utils/plotting/image_viewer.py +0 -97
  374. pymodaq/utils/plotting/items/__init__.py +0 -0
  375. pymodaq/utils/plotting/items/axis_scaled.py +0 -93
  376. pymodaq/utils/plotting/items/crosshair.py +0 -94
  377. pymodaq/utils/plotting/items/image.py +0 -388
  378. pymodaq/utils/plotting/navigator.py +0 -353
  379. pymodaq/utils/plotting/plotter/plotter.py +0 -94
  380. pymodaq/utils/plotting/plotter/plotters/__init__.py +0 -0
  381. pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +0 -134
  382. pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +0 -78
  383. pymodaq/utils/plotting/utils/__init__.py +0 -0
  384. pymodaq/utils/plotting/utils/axes_viewer.py +0 -88
  385. pymodaq/utils/plotting/utils/filter.py +0 -585
  386. pymodaq/utils/plotting/utils/lineout.py +0 -226
  387. pymodaq/utils/plotting/utils/plot_utils.py +0 -579
  388. pymodaq/utils/plotting/utils/signalND.py +0 -1347
  389. pymodaq/utils/plotting/widgets.py +0 -76
  390. pymodaq/utils/qvariant.py +0 -12
  391. pymodaq/utils/slicing.py +0 -63
  392. pymodaq/utils/units.py +0 -216
  393. pymodaq-4.2.4.dist-info/RECORD +0 -438
  394. /pymodaq/{post_treatment/daq_analysis → extensions/daq_logger}/__init__.py +0 -0
  395. /pymodaq/{utils/abstract/logger.py → extensions/daq_logger/abstract.py} +0 -0
  396. /pymodaq/{resources/QtDesigner_Ressources → extensions/daq_logger/db}/__init__.py +0 -0
  397. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/WHEEL +0 -0
  398. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/entry_points.txt +0 -0
  399. {pymodaq-4.2.4.dist-info → pymodaq-5.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,107 +0,0 @@
1
- import warnings
2
-
3
- from qtpy.QtCore import Signal, QObject
4
- from qtpy import QtGui, QtCore, QtWidgets
5
- from pyqtgraph.dockarea import Dock, DockArea, DockLabel
6
- from pyqtgraph.dockarea.DockArea import TempAreaWindow
7
- from pyqtgraph.widgets.VerticalLabel import VerticalLabel
8
-
9
-
10
- class Dock(Dock):
11
- dock_focused = Signal(str)
12
- def __init__(self, name, *args, fontSize='20px', **kwargs):
13
- kwargs['fontSize'] = fontSize
14
- super().__init__(name, *args, **kwargs)
15
-
16
- def removeWidgets(self):
17
- for widget in self.widgets:
18
- self.layout.removeWidget(widget)
19
- widget.close()
20
- self.widgets = []
21
-
22
- def setOrientation(self, o='auto', force=False):
23
- """
24
- Sets the orientation of the title bar for this Dock.
25
- Must be one of 'auto', 'horizontal', or 'vertical'.
26
- By default ('auto'), the orientation is determined
27
- based on the aspect ratio of the Dock.
28
- """
29
- if self.container() is not None: # patch here for when Dock is closed and when the QApplication
30
- # event loop is processed
31
- if o == 'auto' and self.autoOrient:
32
- if self.container().type() == 'tab':
33
- o = 'horizontal'
34
- elif self.width() > self.height() * 1.5:
35
- o = 'vertical'
36
- else:
37
- o = 'horizontal'
38
- if force or self.orientation != o:
39
- self.orientation = o
40
- self.label.setOrientation(o)
41
- self.updateStyle()
42
-
43
-
44
- class DockArea(DockArea, QObject):
45
- """
46
- Custom Dockarea class subclassing from the standard DockArea class and QObject so it can emit a signal when docks
47
- are moved around (one subclassed method: moveDock)
48
- See Also
49
- --------
50
- pyqtgraph.dockarea
51
- """
52
- dock_signal = Signal()
53
-
54
- def __init__(self, parent=None, temporary=False, home=None):
55
- super(DockArea, self).__init__(parent, temporary, home)
56
-
57
- def moveDock(self, dock, position, neighbor):
58
- """
59
- Move an existing Dock to a new location.
60
- """
61
- # Moving to the edge of a tabbed dock causes a drop outside the tab box
62
- if position in ['left', 'right', 'top',
63
- 'bottom'] and neighbor is not None and neighbor.container() is not None and neighbor.container().type() == 'tab':
64
- neighbor = neighbor.container()
65
- self.addDock(dock, position, neighbor)
66
- self.dock_signal.emit()
67
-
68
- def addTempArea(self):
69
- if self.home is None:
70
- area = DockArea(temporary=True, home=self)
71
- self.tempAreas.append(area)
72
- win = TempAreaWindow(area)
73
- area.win = win
74
- win.show()
75
- else:
76
- area = self.home.addTempArea()
77
- # print "added temp area", area, area.window()
78
- return area
79
-
80
-
81
- if __name__ == '__main__':
82
- import sys
83
- from pymodaq.utils.parameter import ParameterTree
84
- app = QtWidgets.QApplication(sys.argv)
85
- import qdarkstyle
86
- app.setStyleSheet(qdarkstyle.load_stylesheet(qdarkstyle.DarkPalette))
87
-
88
- labelv = DockLabel('mysuperlabel', fontSize='25px')
89
- docky = Dock('MysuperDockLogger', fontSize='30px')
90
- dockx = Dock('MysuperDockLoggerx', fontSize='30px')
91
- area = DockArea()
92
- area.addDock(docky)
93
- area.addDock(dockx)
94
- dockx.addWidget(ParameterTree())
95
- labelv.setAlignment(QtCore.Qt.AlignmentFlag.AlignTop | QtCore.Qt.AlignmentFlag.AlignHCenter)
96
- f = labelv.font()
97
- f.setPixelSize(25)
98
- labelv.setFont(f)
99
- docky.label.setFont(f)
100
- labelv.show()
101
- area.show()
102
- QtWidgets.QApplication.processEvents()
103
- print(f'labelv size hint: {labelv.sizeHint()}')
104
- print(f'labelv size: {labelv.size()}')
105
- print(f'labelv margins: {labelv.contentsMargins().top()}, {labelv.contentsMargins().bottom()}')
106
-
107
- sys.exit(app.exec())
@@ -1,93 +0,0 @@
1
- from pathlib import Path
2
-
3
- from pymodaq.utils.config import Config
4
- from qtpy import QtWidgets
5
-
6
- config = Config()
7
-
8
-
9
- def select_file_filter(start_path=config('data_saving', 'h5file', 'save_path'), save=True, ext=None, filter=None,
10
- force_save_extension=False):
11
- """Opens a selection file popup for loading or saving a file
12
-
13
- Parameters
14
- ----------
15
- start_path: str or Path
16
- The strating point in the file/folder system to open the popup from
17
- save: bool
18
- if True, ask you to enter a filename (with or without extension)
19
- ext: str
20
- the extension string, e.g. xml, h5, png ...
21
- filter: list of string
22
- list of possible extensions, mostly valid for loading
23
- force_save_extension: bool
24
- if True force the extension of the saved file to be set to ext
25
-
26
- Returns
27
- -------
28
- Path: the Path object of the file to save or load
29
- str: the selected filter
30
- """
31
- if ext is None:
32
- ext = '.h5'
33
-
34
- if filter is None:
35
- if not save:
36
- if not isinstance(ext, list):
37
- ext = [ext]
38
- filter = "Data files ("
39
- for ext_tmp in ext:
40
- filter += '*.' + ext_tmp + " "
41
- filter += ")"
42
-
43
- if start_path is not None:
44
- if not isinstance(start_path, str):
45
- start_path = str(start_path)
46
- if save:
47
- fname, selected_filter = QtWidgets.QFileDialog.getSaveFileName(None, 'Enter a file name', start_path,
48
- filter)
49
- else:
50
- fname, selected_filter = QtWidgets.QFileDialog.getOpenFileName(None, 'Select a file name', start_path, filter)
51
-
52
- if fname != '': # execute if the user didn't cancel the file selection
53
- fname = Path(fname)
54
- if save and force_save_extension:
55
- parent = fname.parent
56
- filename = fname.stem
57
- fname = parent.joinpath(filename + "." + ext) # forcing the right extension on the filename
58
- return fname, selected_filter
59
-
60
-
61
- def select_file(start_path=config('data_saving', 'h5file', 'save_path'), save=True, ext=None, filter=None,
62
- force_save_extension=False):
63
- """Opens a selection file popup for loading or saving a file
64
-
65
- Parameters
66
- ----------
67
- start_path: str or Path
68
- The strating point in the file/folder system to open the popup from
69
- save: bool
70
- if True, ask you to enter a filename (with or without extension)
71
- ext: str
72
- the extension string, e.g. xml, h5, png ...
73
- filter: string
74
- list of possible extensions, if you need several you can separate them by ;;
75
- for example: "Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"
76
- force_save_extension: bool
77
- if True force the extension of the saved file to be set to ext
78
-
79
- Returns
80
- -------
81
- Path: the Path object of the file to save or load
82
- """
83
- fname, selected_filter = select_file_filter(start_path, save, ext, filter,
84
- force_save_extension)
85
- return fname # fname is a Path object
86
-
87
-
88
- if __name__ == '__main__':
89
- import sys
90
- app = QtWidgets.QApplication(sys.argv)
91
- file = select_file(save=True, filter="Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)")
92
- print(file)
93
- sys.exit(app.exec_())
@@ -1,34 +0,0 @@
1
- import pickle
2
-
3
- from pymodaq.utils import config as config_mod
4
- from pymodaq.utils.gui_utils.file_io import select_file
5
-
6
-
7
- def load_layout_state(dockarea, file=None):
8
- """
9
- Load and restore a dockarea layout state from the select_file obtained pathname file.
10
- """
11
- if file is None:
12
- file = select_file(start_path=config_mod.get_set_layout_path(), save=False, ext='dock')
13
- if file is not None:
14
- with open(str(file), 'rb') as f:
15
- dockstate = pickle.load(f)
16
- dockarea.restoreState(dockstate)
17
- file = file.name
18
- return file
19
-
20
-
21
- def save_layout_state(dockarea, file=None):
22
- """
23
- Save the current layout state in the select_file obtained pathname file.
24
- Once done dump the pickle.
25
- """
26
-
27
- dockstate = dockarea.saveState()
28
- if 'float' in dockstate:
29
- dockstate['float'] = []
30
- if file is None:
31
- file = select_file(start_path=config_mod.get_set_layout_path(), save=True, ext='dock')
32
- if file is not None:
33
- with open(str(file), 'wb') as f:
34
- pickle.dump(dockstate, f, pickle.HIGHEST_PROTOCOL)
@@ -1,38 +0,0 @@
1
- from qtpy.QtCore import QObject
2
- from qtpy import QtWidgets
3
-
4
-
5
- class ListPicker(QObject):
6
-
7
- def __init__(self, list_str):
8
- super(ListPicker, self).__init__()
9
- self.list = list_str
10
-
11
- def pick_dialog(self):
12
- self.dialog = QtWidgets.QDialog()
13
- self.dialog.setMinimumWidth(500)
14
- vlayout = QtWidgets.QVBoxLayout()
15
-
16
- self.list_widget = QtWidgets.QListWidget()
17
- self.list_widget.addItems(self.list)
18
-
19
- vlayout.addWidget(self.list_widget, 10)
20
- self.dialog.setLayout(vlayout)
21
-
22
- buttonBox = QtWidgets.QDialogButtonBox()
23
- buttonBox.addButton('Apply', buttonBox.AcceptRole)
24
- buttonBox.accepted.connect(self.dialog.accept)
25
- buttonBox.addButton('Cancel', buttonBox.RejectRole)
26
- buttonBox.rejected.connect(self.dialog.reject)
27
-
28
- vlayout.addWidget(buttonBox)
29
- self.dialog.setWindowTitle('Select an entry in the list')
30
-
31
- res = self.dialog.show()
32
-
33
- pass
34
- if res == self.dialog.Accepted:
35
- # save managers parameters in a xml file
36
- return [self.list_widget.currentIndex(), self.list_widget.currentItem().text()]
37
- else:
38
- return [-1, ""]
@@ -1,5 +0,0 @@
1
- from .qled import QLED
2
- from .push import PushButtonIcon, EditPush, EditPushRel
3
- from .spinbox import QSpinBox_ro, SpinBox
4
- from .table import TableView, TableModel
5
- from .label import LabelWithFont
@@ -1,24 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- Created the 29/07/2022
4
-
5
- @author: Sebastien Weber
6
- """
7
-
8
- from qtpy import QtWidgets, QtCore, QtGui
9
-
10
-
11
- class LabelWithFont(QtWidgets.QLabel):
12
-
13
- def __init__(self, text: str = '', *args, font_name=None, font_size=None, isbold=False, isitalic=False, **kwargs):
14
- super().__init__(text, *args, **kwargs)
15
-
16
- font = QtGui.QFont()
17
- if font_name is not None:
18
- font.setFamily(font_name)
19
- if font_size is not None:
20
- font.setPointSize(font_size)
21
-
22
- font.setBold(isbold)
23
- font.setItalic(isitalic)
24
- self.setFont(font)
@@ -1,111 +0,0 @@
1
- from typing import List
2
-
3
- import numpy as np
4
-
5
- from qtpy import QtWidgets
6
- from qtpy.QtCore import QObject
7
- from pymodaq.utils.plotting.data_viewers.viewer0D import Viewer0D
8
- from pymodaq.utils.data import DataRaw
9
- import sys
10
-
11
-
12
- class LCD(QObject):
13
-
14
- def __init__(self, parent, **kwargs):
15
- super().__init__()
16
- self.Nvals = None
17
- self.labels = None
18
- self.parent = parent
19
- self.viewer0D = None
20
- self.digits = 3
21
- self.setupui(**kwargs)
22
-
23
- def setvalues(self, values: List[np.ndarray]):
24
- """
25
- display values on lcds
26
- Parameters
27
- ----------
28
- values: list of 0D ndarray
29
-
30
- Returns
31
- -------
32
-
33
- """
34
- while len(values) < self.Nvals:
35
- values.append(np.array([0.]))
36
- if len(values) > self.Nvals:
37
- values = values[:self.Nvals]
38
- vals = []
39
- for ind, val in enumerate(values):
40
- self.lcds[ind].display(val[0])
41
- vals.append(val)
42
- self.viewer0D.show_data(DataRaw(name='LCD', data=values))
43
-
44
- def setupui(self, **kwargs):
45
- if 'digits' in kwargs:
46
- self.digits = kwargs['digits']
47
- if 'Nvals' in kwargs:
48
- self.Nvals = kwargs['Nvals']
49
- else:
50
- self.Nvals = 1
51
- if 'labels' in kwargs:
52
- self.labels = kwargs['labels']
53
- else:
54
- self.labels = ['CH{:d}'.format(ind) for ind in range(self.Nvals)]
55
-
56
- while len(self.labels) < self.Nvals:
57
- self.labels.append('')
58
-
59
- vlayout = QtWidgets.QVBoxLayout()
60
- hsplitter = QtWidgets.QSplitter()
61
- vlayout.addWidget(hsplitter)
62
- self.parent.setLayout(vlayout)
63
- form = QtWidgets.QWidget()
64
- self.viewer0D = Viewer0D(form)
65
- self.viewer0D.labels = self.labels
66
-
67
- vlayout = QtWidgets.QVBoxLayout()
68
-
69
- lcd_layouts = []
70
- labels = []
71
- self.lcds = []
72
-
73
- for ind in range(self.Nvals):
74
- lcd_layouts.append(QtWidgets.QVBoxLayout())
75
- labels.append(QtWidgets.QLabel(self.labels[ind]))
76
- labels[-1].setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
77
- self.lcds.append(QtWidgets.QLCDNumber())
78
- self.lcds[-1].setDigitCount(self.digits)
79
- lcd_layouts[-1].addWidget(labels[-1])
80
- lcd_layouts[-1].addWidget(self.lcds[-1])
81
- vlayout.addLayout(lcd_layouts[-1])
82
-
83
- if ind != self.Nvals - 1:
84
- hFrame = QtWidgets.QFrame()
85
- hFrame.setFrameShape(QtWidgets.QFrame.HLine)
86
- vlayout.addWidget(hFrame)
87
-
88
- lcd_widget = QtWidgets.QWidget()
89
- lcd_widget.setLayout(vlayout)
90
- hsplitter.addWidget(lcd_widget)
91
- hsplitter.addWidget(form)
92
- self.parent.resize(800, 500)
93
- hsplitter.setSizes([400, 300])
94
-
95
-
96
- if __name__ == '__main__':
97
- from pymodaq.utils.math_utils import gauss1D
98
- import numpy as np
99
-
100
- x = np.linspace(0, 200, 201)
101
- y1 = gauss1D(x, 75, 25)
102
- y2 = gauss1D(x, 120, 50, 2)
103
- app = QtWidgets.QApplication(sys.argv)
104
- Form = QtWidgets.QWidget()
105
-
106
- prog = LCD(Form, Nvals=2)
107
- Form.show()
108
- for ind, data in enumerate(y1):
109
- prog.setvalues([data])
110
- QtWidgets.QApplication.processEvents()
111
- sys.exit(app.exec_())
@@ -1,149 +0,0 @@
1
- from pathlib import Path
2
-
3
- from qtpy import QtWidgets, QtCore, QtGui
4
- from qtpy.QtWidgets import QWidget
5
- from pymodaq.utils.gui_utils.widgets.spinbox import SpinBox
6
-
7
-
8
- EDIT_PUSH_TYPES = ['abs', 'rel']
9
-
10
-
11
- class PushButtonIcon(QtWidgets.QPushButton):
12
- def __init__(self, icon_name: str, text: str, checkable=False, tip="", menu=None):
13
- super().__init__(text)
14
- self._menu = menu
15
- if icon_name != '':
16
- icon = QtGui.QIcon()
17
- if Path(icon_name).is_file():
18
- icon.addPixmap(QtGui.QPixmap(icon_name), QtGui.QIcon.Normal,
19
- QtGui.QIcon.Off)
20
- else:
21
- icon.addPixmap(QtGui.QPixmap(f":/icons/Icon_Library/{icon_name}.png"), QtGui.QIcon.Normal,
22
- QtGui.QIcon.Off)
23
- self.setIcon(icon)
24
- self.setCheckable(checkable)
25
- self.setToolTip(tip)
26
-
27
- def contextMenuEvent(self, event):
28
- if self._menu is not None:
29
- self._menu.exec(event.globalPos())
30
-
31
-
32
- class EditPushInfo:
33
- def __init__(self, type:str, value: float):
34
- if type not in EDIT_PUSH_TYPES:
35
- raise ValueError(f'Possible types are {EDIT_PUSH_TYPES}')
36
- self.type = type
37
- self.value = value
38
-
39
-
40
- class EditPush(QtWidgets.QWidget):
41
- clicked = QtCore.Signal(EditPushInfo)
42
-
43
- def __init__(self, icon_name: str, ini_value=0.1, text=''):
44
- super().__init__()
45
- self._edit_push_type = 'abs'
46
- self.setLayout(QtWidgets.QHBoxLayout())
47
- self._edit = SpinBox(value=ini_value, dec=True, step=0.1, minStep=0.001)
48
- self._edit.setMinimumHeight(20)
49
- self._edit.setMaximumWidth(60)
50
- self._edit.setMinimumWidth(60)
51
- self.layout().addWidget(self._edit)
52
- self.set_pushs(icon_name, text)
53
-
54
- def set_pushs(self, icon_name, text):
55
- self._push = PushButtonIcon(icon_name, text)
56
- self._push.setMaximumWidth(40)
57
- self._push.clicked.connect(lambda: self.emit_clicked())
58
- self.layout().addWidget(self._push)
59
-
60
- def emit_clicked(self, coeff=1):
61
- """will emit a signal containing a float value calculated from the product of the coeff and the internal
62
- spinbox value.
63
-
64
- See Also
65
- --------
66
- EditPushRel
67
- """
68
- self.clicked.emit(EditPushInfo(type=self._edit_push_type, value=coeff * self._edit.value()))
69
-
70
-
71
- class EditPushRel(EditPush):
72
-
73
- def __init__(self, icon_name: str, text='', ini_value=0.15):
74
- super().__init__(icon_name, text=text, ini_value=ini_value)
75
- self._edit_push_type = 'rel'
76
-
77
- def set_pushs(self, icon_name, text):
78
- vlayout = QtWidgets.QVBoxLayout()
79
- self.layout().addLayout(vlayout)
80
-
81
- self._push_plus = PushButtonIcon(icon_name, f'+{text}')
82
- self._push_plus.setMaximumWidth(40)
83
- self._push_minus = PushButtonIcon(icon_name, f'-{text}')
84
- self._push_minus.setMaximumWidth(40)
85
-
86
- vlayout.addWidget(self._push_plus)
87
- vlayout.addWidget(self._push_minus)
88
-
89
- self._push_plus.clicked.connect(lambda: self.emit_clicked(1))
90
- self._push_minus.clicked.connect(lambda: self.emit_clicked(-1))
91
-
92
-
93
- class ActionMenu(QtWidgets.QAction):
94
- def __init__(self, *args, menu=None, **kwargs):
95
- super().__init__(*args, **kwargs)
96
- self._menu = menu
97
-
98
- def contextMenuEvent(self, event):
99
- if self._menu is not None:
100
- self._menu.exec(event.globalPos())
101
-
102
-
103
- def main(init_qt=True):
104
- import sys
105
-
106
- if init_qt: # used for the test suite
107
- app = QtWidgets.QApplication(sys.argv)
108
-
109
- widget = QtWidgets.QWidget()
110
- widget.setLayout(QtWidgets.QVBoxLayout())
111
- toolbar = QtWidgets.QToolBar()
112
- widget.layout().addWidget(toolbar)
113
-
114
- action = QtWidgets.QAction('blabla')
115
- toolbar.addAction(action)
116
-
117
- menu1 = QtWidgets.QMenu()
118
- menu1.addAction('Add new task')
119
- menu1.addAction('Edit current row')
120
- menu1.addAction('Remove selected rows')
121
- menu1.addSeparator()
122
- menu1.addAction('Affect Responsable')
123
- menu2 = QtWidgets.QMenu()
124
- menu2.addAction('Affect volunteers')
125
- menu2.addAction('Remove volunteers')
126
- menu2.addSeparator()
127
- menu2.addAction('Show localisation')
128
-
129
- icon = QtGui.QIcon()
130
- icon.addPixmap(QtGui.QPixmap(f":/icons/Icon_Library/{'run2'}.png"), QtGui.QIcon.Normal,
131
- QtGui.QIcon.Off)
132
- action2 = ActionMenu(icon, 'grab', menu=menu1)
133
-
134
- toolbar.addAction(action2)
135
- grab_pb = PushButtonIcon('run2', text='', checkable=True, menu=menu2)
136
- grab_pb.setFlat(True)
137
- toolbar.addWidget(grab_pb)
138
-
139
- otherpb = PushButtonIcon('run2', 'grab me')
140
- widget.layout().addWidget(otherpb)
141
-
142
- widget.show()
143
- if init_qt:
144
- sys.exit(app.exec_())
145
-
146
-
147
- if __name__ == '__main__':
148
- main()
149
-
@@ -1,62 +0,0 @@
1
- import os
2
- import numpy as np
3
- from qtpy import QtCore, QtGui, QtWidgets
4
- from qtpy.QtWidgets import QLabel
5
- from qtpy.QtCore import QObject, Signal
6
- from pymodaq.utils.gui_utils.utils import clickable
7
-
8
-
9
- class QLED(QLabel):
10
- value_changed = Signal(bool)
11
-
12
- def __init__(self, parent=None, scale=1, readonly=True):
13
- QLabel.__init__(self, parent)
14
- # self.setText("")
15
- self.red_icon = QtGui.QPixmap(":/icons/Icon_Library/red_light.png")
16
- self.green_icon = QtGui.QPixmap(":/icons/Icon_Library/greenLight2.png")
17
- self.setPixmap(self.red_icon)
18
- self.state = False
19
- self.clickable = not readonly
20
- # set the possibility to click and control the state of the LED otherwise it behaves as an indicator
21
- clickable(self).connect(
22
- self.LED_Clicked)
23
- # clickable is a function importing a filter class to deal with mouse down event as a signal see GUI_utils
24
- self.setText("empty")
25
- self.setMaximumWidth(self.height())
26
- if scale != 1:
27
- self.scale(scale)
28
- self.set_as_false()
29
-
30
- def scale(self, scale):
31
- self.green_icon = self.green_icon.scaled(scale * self.green_icon.width(),
32
- scale * self.green_icon.height())
33
- self.red_icon = self.red_icon.scaled(scale * self.red_icon.width(),
34
- scale * self.red_icon.height())
35
-
36
- def get_state(self):
37
- return self.state
38
-
39
- def set_as(self, state=True):
40
-
41
- if state:
42
- self.set_as_true()
43
- else:
44
- self.set_as_false()
45
- if state != self.state:
46
- self.value_changed.emit(state)
47
-
48
- def set_as_true(self):
49
- self.state = True
50
- self.setPixmap(self.green_icon)
51
-
52
- def set_as_false(self):
53
- self.state = False
54
- self.setPixmap(self.red_icon)
55
-
56
- def LED_Clicked(self):
57
- if self.clickable:
58
- if self.state:
59
- self.set_as_false()
60
- else:
61
- self.set_as_true()
62
- self.value_changed.emit(not self.state)
@@ -1,24 +0,0 @@
1
- from qtpy import QtWidgets, QtGui
2
- from pyqtgraph.widgets.SpinBox import SpinBox
3
-
4
-
5
- class SpinBox(SpinBox):
6
- """
7
- In case I want to add pyqtgraph spinbox functionalities
8
- """
9
- def __init__(self, *args, font_size=None, min_height=20, **kwargs):
10
- super().__init__(*args, **kwargs)
11
-
12
- if font_size is not None:
13
- font = QtGui.QFont()
14
- font.setPointSize(font_size)
15
- self.setFont(font)
16
- self.setMinimumHeight(min_height)
17
-
18
-
19
- class QSpinBox_ro(SpinBox):
20
- def __init__(self, *args, readonly=True, **kwargs):
21
- super().__init__(*args, **kwargs)
22
- self.setMaximum(100000)
23
- self.setReadOnly(readonly)
24
- self.setButtonSymbols(QtWidgets.QAbstractSpinBox.NoButtons)