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.
- pymodaq/__init__.py +57 -91
- pymodaq/control_modules/daq_move.py +64 -46
- pymodaq/control_modules/daq_move_ui.py +34 -12
- pymodaq/control_modules/daq_viewer.py +55 -30
- pymodaq/control_modules/daq_viewer_ui.py +6 -6
- pymodaq/control_modules/mocks.py +1 -1
- pymodaq/control_modules/move_utility_classes.py +51 -43
- pymodaq/control_modules/utils.py +43 -20
- pymodaq/control_modules/viewer_utility_classes.py +54 -18
- pymodaq/daq_utils/daq_utils.py +6 -0
- pymodaq/dashboard.py +639 -323
- pymodaq/examples/function_plotter.py +13 -12
- pymodaq/examples/tcp_client.py +1 -1
- pymodaq/extensions/__init__.py +1 -1
- pymodaq/extensions/bayesian/bayesian_optimisation.py +44 -32
- pymodaq/extensions/bayesian/utils.py +10 -10
- pymodaq/extensions/console.py +7 -6
- pymodaq/extensions/daq_logger/__init__.py +1 -0
- pymodaq/extensions/{daq_logger.py → daq_logger/daq_logger.py} +30 -30
- pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger.py +16 -15
- pymodaq/{utils/db/db_logger → extensions/daq_logger/db}/db_logger_models.py +2 -0
- pymodaq/{utils/h5modules → extensions/daq_logger}/h5logging.py +7 -8
- pymodaq/extensions/daq_scan.py +42 -34
- pymodaq/extensions/daq_scan_ui.py +18 -18
- pymodaq/extensions/h5browser.py +2 -3
- pymodaq/extensions/pid/__init__.py +4 -2
- pymodaq/extensions/pid/daq_move_PID.py +3 -3
- pymodaq/extensions/pid/pid_controller.py +59 -50
- pymodaq/extensions/pid/utils.py +10 -5
- pymodaq/extensions/utils.py +33 -3
- pymodaq/post_treatment/load_and_plot.py +10 -7
- pymodaq/resources/preset_default.xml +1 -1
- pymodaq/updater.py +107 -0
- pymodaq/utils/array_manipulation.py +4 -384
- pymodaq/utils/calibration_camera.py +12 -9
- pymodaq/utils/chrono_timer.py +11 -10
- pymodaq/utils/config.py +3 -458
- pymodaq/utils/daq_utils.py +9 -715
- pymodaq/utils/data.py +17 -2959
- pymodaq/utils/enums.py +4 -74
- pymodaq/utils/exceptions.py +0 -4
- pymodaq/utils/gui_utils/__init__.py +8 -8
- pymodaq/utils/gui_utils/loader_utils.py +26 -1
- pymodaq/utils/gui_utils/utils.py +8 -162
- pymodaq/utils/gui_utils/widgets/lcd.py +6 -109
- pymodaq/utils/h5modules/__init__.py +0 -4
- pymodaq/utils/h5modules/module_saving.py +9 -8
- pymodaq/utils/leco/__init__.py +2 -2
- pymodaq/utils/leco/daq_move_LECODirector.py +3 -6
- pymodaq/utils/leco/daq_xDviewer_LECODirector.py +5 -5
- pymodaq/utils/leco/director_utils.py +2 -2
- pymodaq/utils/leco/leco_director.py +3 -3
- pymodaq/utils/leco/pymodaq_listener.py +4 -3
- pymodaq/utils/leco/utils.py +11 -9
- pymodaq/utils/logger.py +4 -76
- pymodaq/utils/managers/batchscan_manager.py +16 -19
- pymodaq/utils/managers/modules_manager.py +30 -17
- pymodaq/utils/managers/overshoot_manager.py +48 -6
- pymodaq/utils/managers/preset_manager.py +39 -59
- pymodaq/utils/managers/preset_manager_utils.py +28 -22
- pymodaq/utils/managers/remote_manager.py +12 -10
- pymodaq/utils/math_utils.py +4 -582
- pymodaq/utils/messenger.py +4 -64
- pymodaq/utils/parameter/__init__.py +6 -9
- pymodaq/utils/parameter/utils.py +4 -328
- pymodaq/utils/scanner/scan_config.py +1 -1
- pymodaq/utils/scanner/scan_factory.py +16 -12
- pymodaq/utils/{plotting → scanner}/scan_selector.py +19 -20
- pymodaq/utils/scanner/scanner.py +10 -8
- pymodaq/utils/scanner/scanners/_1d_scanners.py +8 -5
- pymodaq/utils/scanner/scanners/_2d_scanners.py +5 -5
- pymodaq/utils/scanner/scanners/sequential.py +8 -8
- pymodaq/utils/scanner/scanners/tabular.py +9 -9
- pymodaq/utils/scanner/utils.py +6 -4
- pymodaq/utils/svg/svg_viewer2D.py +3 -4
- pymodaq/utils/tcp_ip/mysocket.py +4 -110
- pymodaq/utils/tcp_ip/serializer.py +4 -801
- pymodaq/utils/tcp_ip/tcp_server_client.py +15 -13
- pymodaq-5.0.1.dist-info/METADATA +242 -0
- pymodaq-5.0.1.dist-info/RECORD +122 -0
- {pymodaq-4.4.7.dist-info → pymodaq-5.0.1.dist-info}/WHEEL +1 -1
- {pymodaq-4.4.7.dist-info → pymodaq-5.0.1.dist-info}/entry_points.txt +1 -0
- pymodaq/examples/custom_app.py +0 -258
- pymodaq/examples/custom_viewer.py +0 -112
- pymodaq/examples/parameter_ex.py +0 -138
- pymodaq/examples/preset_MockCamera.xml +0 -1
- pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.py +0 -142
- pymodaq/post_treatment/daq_measurement/daq_measurement_GUI.ui +0 -232
- pymodaq/post_treatment/daq_measurement/daq_measurement_main.py +0 -391
- pymodaq/post_treatment/daq_measurement/process_from_QtDesigner_DAQ_Measurement_GUI.bat +0 -2
- pymodaq/post_treatment/process_to_scalar.py +0 -263
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/1d.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/2d.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/3d.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Add_Step.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Approve_All.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Browse_Dir_Path.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Calculator.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnGroup.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnNum.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnText.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnTime.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ChnWave.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Close3.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/CollapseAll_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ColorPicker.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Contract.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Create.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/DeleteLayer.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditOpen.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditRedo.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/EditUndo.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Ellipse.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/EllipseFilled.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ErrorMessage.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Error_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Exit.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Expand.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ExpandAll_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/FFT.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/HLM.ico +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Help_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Histogram.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/LUT_LookUpTable.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/MagnifyingGlass_24.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Marker.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Math.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/MeasurementStudio_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Move.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveDown.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/MoveUp.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Multiply.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewFile.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/NewLayer.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_File.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/New_Folder.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_1D.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_2D.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_File_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Open_sim.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Options.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Oscilloscope_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Pass.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/RGB.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rectangle.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/RectangleFilled.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Redo.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Refresh_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Region.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Rendezvous.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/SELECT.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAll_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/SaveAs_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_24.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Save_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Search.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/SelectPolygon.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Select_24.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Settings.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snap&Save.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Snapshot2_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Spreadsheet.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Statistics2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Status.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Subtract.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Vision.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Volts.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Wait2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_1_1.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_in.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_out.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/Zoom_to_Selection.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/abort.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/advanced2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/algo.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/autoscale.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/b_icon.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/back.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/bg_icon.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/camera_snap.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/cartesian.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/clear_ROI.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/close2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/cluster2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/color.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/color2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/continuous.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/data.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/delay.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/download.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/download2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/error2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ethernet.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/exit2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/fan.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/filter2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/g_icon.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/gear2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_1.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/go_to_2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/grab.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/graph.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/greenLight2_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/green_light.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/grey_icon.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/greyscale.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/help1_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/home2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/information2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/ini.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/input.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/integrator.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/joystick.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_green_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_red_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/light_yellow_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/limiter.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/load_ROI.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/meshPlot.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/meter_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_contour.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/move_straight_line.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/movie.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/multi_point.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/multiplexer.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/new.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/openArrow.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/openTree.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/oscilloscope3.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/overlay.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass2_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/pass_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/pause.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/permute.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/phase.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/play.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/polar.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/pole_zero.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerMeter.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/powerSwitch_16.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/print2_32.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/properties.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/r_icon.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/radiocontrolbutton.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/random.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/read2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/red_light.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/remove.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/reset.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/rgb_icon.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/robot.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/rotation2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/run2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/run_all.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/saturation.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/saveTree.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/save_ROI.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_horizontally.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/scale_vertically.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/search2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/select2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_all2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/select_none.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/sequence2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/snap.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/sort_ascend.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/spectrumAnalyzer.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/start.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/status_cancelled.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop3.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/stop_all.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/sum.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/surfacePlot.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/target.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/tree.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/updateTree.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility2.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/utility_small.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/vector.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/verify.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/video.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/wait.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/waterfallPlot.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/watershed.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/yellow_light.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/zip_file.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomAuto.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/Icon_Library/zoomReset.png +0 -0
- pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.bat +0 -2
- pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources.qrc +0 -238
- pymodaq/resources/QtDesigner_Ressources/QtDesigner_ressources_rc.py +0 -127453
- pymodaq/resources/QtDesigner_Ressources/__init__.py +0 -0
- pymodaq/resources/QtDesigner_Ressources/credit.rst +0 -7
- pymodaq/resources/QtDesigner_Ressources/icons.svg +0 -142
- pymodaq/resources/VERSION +0 -2
- pymodaq/resources/config_template.toml +0 -96
- pymodaq/resources/triangulation_data.npy +0 -0
- pymodaq/utils/abstract/__init__.py +0 -48
- pymodaq/utils/db/__init__.py +0 -0
- pymodaq/utils/db/db_logger/__init__.py +0 -0
- pymodaq/utils/factory.py +0 -82
- pymodaq/utils/gui_utils/custom_app.py +0 -133
- pymodaq/utils/gui_utils/dock.py +0 -107
- pymodaq/utils/gui_utils/file_io.py +0 -94
- pymodaq/utils/gui_utils/layout.py +0 -34
- pymodaq/utils/gui_utils/list_picker.py +0 -38
- pymodaq/utils/gui_utils/widgets/__init__.py +0 -5
- pymodaq/utils/gui_utils/widgets/label.py +0 -24
- pymodaq/utils/gui_utils/widgets/push.py +0 -149
- pymodaq/utils/gui_utils/widgets/qled.py +0 -62
- pymodaq/utils/gui_utils/widgets/spinbox.py +0 -24
- pymodaq/utils/gui_utils/widgets/table.py +0 -263
- pymodaq/utils/gui_utils/widgets/tree_layout.py +0 -188
- pymodaq/utils/gui_utils/widgets/tree_toml.py +0 -110
- pymodaq/utils/h5modules/backends.py +0 -1022
- pymodaq/utils/h5modules/browsing.py +0 -627
- pymodaq/utils/h5modules/data_saving.py +0 -1107
- pymodaq/utils/h5modules/exporter.py +0 -119
- pymodaq/utils/h5modules/exporters/__init__.py +0 -0
- pymodaq/utils/h5modules/exporters/base.py +0 -111
- pymodaq/utils/h5modules/exporters/flimj.py +0 -63
- pymodaq/utils/h5modules/exporters/hyperspy.py +0 -143
- pymodaq/utils/h5modules/saving.py +0 -866
- pymodaq/utils/h5modules/utils.py +0 -115
- pymodaq/utils/managers/action_manager.py +0 -489
- pymodaq/utils/managers/parameter_manager.py +0 -279
- pymodaq/utils/managers/roi_manager.py +0 -740
- pymodaq/utils/parameter/ioxml.py +0 -545
- pymodaq/utils/parameter/pymodaq_ptypes/__init__.py +0 -38
- pymodaq/utils/parameter/pymodaq_ptypes/bool.py +0 -31
- pymodaq/utils/parameter/pymodaq_ptypes/date.py +0 -126
- pymodaq/utils/parameter/pymodaq_ptypes/filedir.py +0 -143
- pymodaq/utils/parameter/pymodaq_ptypes/itemselect.py +0 -265
- pymodaq/utils/parameter/pymodaq_ptypes/led.py +0 -44
- pymodaq/utils/parameter/pymodaq_ptypes/list.py +0 -150
- pymodaq/utils/parameter/pymodaq_ptypes/numeric.py +0 -18
- pymodaq/utils/parameter/pymodaq_ptypes/pixmap.py +0 -175
- pymodaq/utils/parameter/pymodaq_ptypes/slide.py +0 -166
- pymodaq/utils/parameter/pymodaq_ptypes/table.py +0 -135
- pymodaq/utils/parameter/pymodaq_ptypes/tableview.py +0 -149
- pymodaq/utils/parameter/pymodaq_ptypes/text.py +0 -142
- pymodaq/utils/plotting/__init__.py +0 -0
- pymodaq/utils/plotting/data_viewers/__init__.py +0 -10
- pymodaq/utils/plotting/data_viewers/base.py +0 -286
- pymodaq/utils/plotting/data_viewers/viewer.py +0 -275
- pymodaq/utils/plotting/data_viewers/viewer0D.py +0 -298
- pymodaq/utils/plotting/data_viewers/viewer1D.py +0 -826
- pymodaq/utils/plotting/data_viewers/viewer1Dbasic.py +0 -231
- pymodaq/utils/plotting/data_viewers/viewer2D.py +0 -1118
- pymodaq/utils/plotting/data_viewers/viewer2D_basic.py +0 -146
- pymodaq/utils/plotting/data_viewers/viewerND.py +0 -800
- pymodaq/utils/plotting/gant_chart.py +0 -123
- pymodaq/utils/plotting/image_viewer.py +0 -97
- pymodaq/utils/plotting/items/__init__.py +0 -0
- pymodaq/utils/plotting/items/axis_scaled.py +0 -93
- pymodaq/utils/plotting/items/crosshair.py +0 -94
- pymodaq/utils/plotting/items/image.py +0 -388
- pymodaq/utils/plotting/navigator.py +0 -353
- pymodaq/utils/plotting/plotter/plotter.py +0 -94
- pymodaq/utils/plotting/plotter/plotters/__init__.py +0 -0
- pymodaq/utils/plotting/plotter/plotters/matplotlib_plotters.py +0 -134
- pymodaq/utils/plotting/plotter/plotters/qt_plotters.py +0 -78
- pymodaq/utils/plotting/utils/__init__.py +0 -0
- pymodaq/utils/plotting/utils/axes_viewer.py +0 -88
- pymodaq/utils/plotting/utils/filter.py +0 -585
- pymodaq/utils/plotting/utils/lineout.py +0 -226
- pymodaq/utils/plotting/utils/plot_utils.py +0 -579
- pymodaq/utils/plotting/utils/signalND.py +0 -1347
- pymodaq/utils/plotting/widgets.py +0 -76
- pymodaq/utils/qvariant.py +0 -12
- pymodaq/utils/slicing.py +0 -63
- pymodaq/utils/units.py +0 -216
- pymodaq-4.4.7.dist-info/METADATA +0 -163
- pymodaq-4.4.7.dist-info/RECORD +0 -446
- /pymodaq/{post_treatment/daq_analysis → daq_utils}/__init__.py +0 -0
- /pymodaq/{utils/abstract/logger.py → extensions/daq_logger/abstract.py} +0 -0
- /pymodaq/{post_treatment/daq_measurement → extensions/daq_logger/db}/__init__.py +0 -0
- {pymodaq-4.4.7.dist-info → pymodaq-5.0.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
from qtpy import QtWidgets, QtGui, QtCore
|
|
2
|
-
from pyqtgraph.parametertree.parameterTypes.list import ListParameter, ListParameterItem
|
|
3
|
-
from pyqtgraph.parametertree.Parameter import ParameterItem
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class Combo_pb(QtWidgets.QWidget):
|
|
7
|
-
|
|
8
|
-
def __init__(self, items=[]):
|
|
9
|
-
super(Combo_pb, self).__init__()
|
|
10
|
-
self.items = items
|
|
11
|
-
self.initUI()
|
|
12
|
-
self.count = self.combo.count
|
|
13
|
-
|
|
14
|
-
def initUI(self):
|
|
15
|
-
"""
|
|
16
|
-
Init the User Interface.
|
|
17
|
-
"""
|
|
18
|
-
self.hor_layout = QtWidgets.QHBoxLayout()
|
|
19
|
-
self.combo = QtWidgets.QComboBox()
|
|
20
|
-
self.combo.addItems(self.items)
|
|
21
|
-
self.add_pb = QtWidgets.QPushButton()
|
|
22
|
-
self.add_pb.setText("")
|
|
23
|
-
icon3 = QtGui.QIcon()
|
|
24
|
-
icon3.addPixmap(QtGui.QPixmap(":/icons/Icon_Library/Add2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
|
25
|
-
self.add_pb.setIcon(icon3)
|
|
26
|
-
self.hor_layout.addWidget(self.combo)
|
|
27
|
-
self.hor_layout.addWidget(self.add_pb)
|
|
28
|
-
self.hor_layout.setSpacing(0)
|
|
29
|
-
self.hor_layout.setContentsMargins(0, 0, 0, 0)
|
|
30
|
-
self.add_pb.setMaximumWidth(25)
|
|
31
|
-
self.setLayout(self.hor_layout)
|
|
32
|
-
self.currentText = self.combo.currentText
|
|
33
|
-
self.setCurrentIndex = self.combo.setCurrentIndex
|
|
34
|
-
self.clear = self.combo.clear
|
|
35
|
-
self.addItem = self.combo.addItem
|
|
36
|
-
self.findText = self.combo.findText
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class ListParameterItem(ListParameterItem):
|
|
40
|
-
"""
|
|
41
|
-
WidgetParameterItem subclass providing comboBox that lets the user select from a list of options.
|
|
42
|
-
|
|
43
|
-
"""
|
|
44
|
-
|
|
45
|
-
def __init__(self, param, depth):
|
|
46
|
-
super().__init__(param, depth)
|
|
47
|
-
|
|
48
|
-
def makeWidget(self):
|
|
49
|
-
"""
|
|
50
|
-
Make a widget from self parameter options, connected to the buttonClicked function.
|
|
51
|
-
|
|
52
|
-
Returns
|
|
53
|
-
-------
|
|
54
|
-
w:widget
|
|
55
|
-
the initialized widget
|
|
56
|
-
|
|
57
|
-
See Also
|
|
58
|
-
--------
|
|
59
|
-
buttonClicked, limitsChanged,
|
|
60
|
-
"""
|
|
61
|
-
opts = self.param.opts
|
|
62
|
-
t = opts['type']
|
|
63
|
-
w = Combo_pb()
|
|
64
|
-
w.add_pb.clicked.connect(self.buttonClicked)
|
|
65
|
-
w.setMaximumHeight(20) # # set to match height of spin box and line edit
|
|
66
|
-
if 'show_pb' in opts:
|
|
67
|
-
w.add_pb.setVisible(opts['show_pb'])
|
|
68
|
-
else:
|
|
69
|
-
w.add_pb.setVisible(False)
|
|
70
|
-
w.sigChanged = w.combo.currentIndexChanged
|
|
71
|
-
w.value = self.value
|
|
72
|
-
w.setValue = self.setValue
|
|
73
|
-
self.widget = w # # needs to be set before limits are changed
|
|
74
|
-
self.limitsChanged(self.param, self.param.opts['limits'])
|
|
75
|
-
if len(self.forward) > 0:
|
|
76
|
-
self.setValue(self.param.value())
|
|
77
|
-
return w
|
|
78
|
-
|
|
79
|
-
def buttonClicked(self):
|
|
80
|
-
"""
|
|
81
|
-
|
|
|
82
|
-
| Append the self limits attributes an added parameter with string value.
|
|
83
|
-
| Update parameter and call the limitschanged method to map the added parameter.
|
|
84
|
-
|
|
85
|
-
See Also
|
|
86
|
-
--------
|
|
87
|
-
limitsChanged,
|
|
88
|
-
"""
|
|
89
|
-
if isinstance(self.param.opts['limits'], list):
|
|
90
|
-
text, ok = QtWidgets.QInputDialog.getText(None, "Enter a value to add to the parameter",
|
|
91
|
-
"String value:", QtWidgets.QLineEdit.Normal)
|
|
92
|
-
if ok and not (text == ""):
|
|
93
|
-
self.param.opts['limits'].append(text)
|
|
94
|
-
self.limitsChanged(self.param, self.param.opts['limits'])
|
|
95
|
-
self.param.setValue(text)
|
|
96
|
-
elif isinstance(self.param.opts['limits'], dict):
|
|
97
|
-
text, ok = QtWidgets.QInputDialog.getText(None, "Enter a text to add to the parameter",
|
|
98
|
-
"String value:", QtWidgets.QLineEdit.Normal)
|
|
99
|
-
if ok and not (text == ""):
|
|
100
|
-
|
|
101
|
-
value, ok = QtWidgets.QInputDialog.getInt(None, "Enter an integer value to add to the parameter",
|
|
102
|
-
"integer value:", QtWidgets.QLineEdit.Normal)
|
|
103
|
-
if ok:
|
|
104
|
-
self.param.opts['limits'].update({text: value})
|
|
105
|
-
self.limitsChanged(self.param, self.param.opts['limits'])
|
|
106
|
-
self.param.setValue(text)
|
|
107
|
-
|
|
108
|
-
def optsChanged(self, param, opts):
|
|
109
|
-
"""
|
|
110
|
-
Called when any options are changed that are not name, value, default, or limits.
|
|
111
|
-
|
|
112
|
-
=============== ================================== =======================================
|
|
113
|
-
**Parameters** **Type** **Description**
|
|
114
|
-
*param* instance of pyqtgraph parameter The parameter to be checked
|
|
115
|
-
*opts* string list The option dictionnary to be checked
|
|
116
|
-
=============== ================================== =======================================
|
|
117
|
-
|
|
118
|
-
See Also
|
|
119
|
-
--------
|
|
120
|
-
optsChanged
|
|
121
|
-
"""
|
|
122
|
-
super().optsChanged(param, opts)
|
|
123
|
-
if 'show_pb' in opts:
|
|
124
|
-
self.widget.add_pb.setVisible(opts['show_pb'])
|
|
125
|
-
if 'enabled' in opts:
|
|
126
|
-
self.widget.setEnabled(opts['enabled'])
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
class ListParameter(ListParameter):
|
|
130
|
-
"""
|
|
131
|
-
=============== =======================================
|
|
132
|
-
**Attributes** **Type**
|
|
133
|
-
*itemClass* instance of ListParameterItem_custom
|
|
134
|
-
*sigActivated* instance of pyqt Signal
|
|
135
|
-
=============== =======================================
|
|
136
|
-
"""
|
|
137
|
-
itemClass = ListParameterItem
|
|
138
|
-
sigActivated = QtCore.Signal(object)
|
|
139
|
-
|
|
140
|
-
def __init__(self, **opts):
|
|
141
|
-
super().__init__(**opts)
|
|
142
|
-
|
|
143
|
-
def activate(self):
|
|
144
|
-
"""
|
|
145
|
-
Emit the Activated signal.
|
|
146
|
-
"""
|
|
147
|
-
self.sigActivated.emit(self)
|
|
148
|
-
self.emitStateChanged('activated', None)
|
|
149
|
-
|
|
150
|
-
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from pyqtgraph.parametertree.parameterTypes.basetypes import SimpleParameter
|
|
2
|
-
from pyqtgraph.parametertree.parameterTypes.numeric import NumericParameterItem
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class NumericParameter(SimpleParameter):
|
|
6
|
-
itemClass = NumericParameterItem
|
|
7
|
-
|
|
8
|
-
def __init__(self, **opts):
|
|
9
|
-
super().__init__(**opts)
|
|
10
|
-
|
|
11
|
-
def setLimits(self, limits):
|
|
12
|
-
curVal = self.value()
|
|
13
|
-
if curVal > limits[1]:
|
|
14
|
-
self.setValue(limits[1])
|
|
15
|
-
elif curVal < limits[0]:
|
|
16
|
-
self.setValue(limits[0])
|
|
17
|
-
super().setLimits(limits)
|
|
18
|
-
return limits
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import numpy as np
|
|
2
|
-
from qtpy import QtWidgets, QtGui
|
|
3
|
-
from qtpy.QtCore import QByteArray, QObject
|
|
4
|
-
from pyqtgraph.parametertree.parameterTypes.basetypes import WidgetParameterItem, SimpleParameter
|
|
5
|
-
from qtpy import QtWidgets, QtGui
|
|
6
|
-
from qtpy.QtCore import QByteArray
|
|
7
|
-
from pyqtgraph.parametertree.parameterTypes.basetypes import WidgetParameterItem
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class PixmapCheckData:
|
|
11
|
-
def __init__(self, data: np.ndarray, path: str = '', checked: bool = False, info: str = ''):
|
|
12
|
-
if data is not None:
|
|
13
|
-
data = data / np.max(data) * 255
|
|
14
|
-
data = data.astype(np.uint8)
|
|
15
|
-
self.data = data[:, :]
|
|
16
|
-
else:
|
|
17
|
-
self.data = []
|
|
18
|
-
self.path = path
|
|
19
|
-
self.checked = checked
|
|
20
|
-
self.info = info
|
|
21
|
-
|
|
22
|
-
def __eq__(self, other):
|
|
23
|
-
if other is None:
|
|
24
|
-
return False
|
|
25
|
-
else:
|
|
26
|
-
status = np.all(np.isclose(self.data, other.data))
|
|
27
|
-
status = status and self.checked == other.checked
|
|
28
|
-
status = status and self.path == other.path
|
|
29
|
-
return status
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class PixmapCheckWidget(QtWidgets.QWidget):
|
|
33
|
-
""" value of this parameter is a PixmapCheckData
|
|
34
|
-
|
|
35
|
-
See Also
|
|
36
|
-
--------
|
|
37
|
-
PixmapCheckedData
|
|
38
|
-
"""
|
|
39
|
-
|
|
40
|
-
def __init__(self):
|
|
41
|
-
|
|
42
|
-
super().__init__()
|
|
43
|
-
self._data: PixmapCheckData = None
|
|
44
|
-
self.checkbox: QtWidgets.QCheckBox = None
|
|
45
|
-
self.label: QtWidgets.QLabel = None
|
|
46
|
-
self.info_label: QtWidgets.QLabel = None
|
|
47
|
-
self.initUI()
|
|
48
|
-
|
|
49
|
-
def initUI(self):
|
|
50
|
-
"""
|
|
51
|
-
Init the User Interface.
|
|
52
|
-
"""
|
|
53
|
-
self.setLayout(QtWidgets.QHBoxLayout())
|
|
54
|
-
self.layout().setContentsMargins(0, 0, 0, 0)
|
|
55
|
-
self.label = QtWidgets.QLabel()
|
|
56
|
-
self.label.setMaximumWidth(100)
|
|
57
|
-
self.label.setMinimumHeight(50)
|
|
58
|
-
self.label.setMaximumHeight(50)
|
|
59
|
-
self.layout().addWidget(self.label)
|
|
60
|
-
|
|
61
|
-
ver_widget = QtWidgets.QWidget()
|
|
62
|
-
ver_widget.setLayout(QtWidgets.QVBoxLayout())
|
|
63
|
-
self.checkbox = QtWidgets.QCheckBox('Show/Hide')
|
|
64
|
-
self.info_label = QtWidgets.QLabel()
|
|
65
|
-
# self.info.setReadOnly(True)
|
|
66
|
-
self.checkbox.setChecked(False)
|
|
67
|
-
ver_widget.layout().addWidget(self.info_label)
|
|
68
|
-
ver_widget.layout().addWidget(self.checkbox)
|
|
69
|
-
ver_widget.layout().setSpacing(0)
|
|
70
|
-
ver_widget.layout().setContentsMargins(0, 0, 0, 0)
|
|
71
|
-
self.layout().addWidget(ver_widget)
|
|
72
|
-
|
|
73
|
-
def setValue(self, data: PixmapCheckData):
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
im = QtGui.QImage(data.data, *data.data.shape, QtGui.QImage.Format_Indexed8)
|
|
77
|
-
a = QtGui.QPixmap.fromImage(im)
|
|
78
|
-
|
|
79
|
-
self.label.setPixmap(a)
|
|
80
|
-
self.checkbox.setChecked(data.checked)
|
|
81
|
-
self.info_label.setText(data.info)
|
|
82
|
-
self._data = data
|
|
83
|
-
|
|
84
|
-
def value(self):
|
|
85
|
-
return PixmapCheckData(data=self._data.data if self._data is not None else None,
|
|
86
|
-
checked=self.checkbox.isChecked(),
|
|
87
|
-
info=self._data.info if self._data is not None else '',
|
|
88
|
-
path=self._data.path if self._data is not None else '')
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
class PixmapParameterItem(WidgetParameterItem):
|
|
92
|
-
"""Registered parameter type which displays a QPixmap in a QLabel"""
|
|
93
|
-
|
|
94
|
-
def makeWidget(self):
|
|
95
|
-
w = QtWidgets.QLabel()
|
|
96
|
-
w.sigChanged = None
|
|
97
|
-
w.value = w.pixmap
|
|
98
|
-
w.setValue = w.setPixmap
|
|
99
|
-
return w
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
class PixmapCheckParameterItem(WidgetParameterItem):
|
|
103
|
-
"""Registered parameter type which displays a PixmapCheckWidget custom widget"""
|
|
104
|
-
|
|
105
|
-
def makeWidget(self):
|
|
106
|
-
w = PixmapCheckWidget()
|
|
107
|
-
w.sigChanged = w.checkbox.clicked
|
|
108
|
-
w.value = w.value
|
|
109
|
-
w.setValue = w.setValue
|
|
110
|
-
self.hideWidget = False
|
|
111
|
-
return w
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
class PixmapCheckParameter(SimpleParameter):
|
|
115
|
-
itemClass = PixmapCheckParameterItem
|
|
116
|
-
|
|
117
|
-
def __init__(self, **kwargs):
|
|
118
|
-
super().__init__(**kwargs)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
class PixmapParameter(SimpleParameter):
|
|
122
|
-
itemClass = PixmapParameterItem
|
|
123
|
-
|
|
124
|
-
def __init__(self, **kwargs):
|
|
125
|
-
super().__init__(**kwargs)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
def main_widget():
|
|
129
|
-
import sys
|
|
130
|
-
app = QtWidgets.QApplication(sys.argv)
|
|
131
|
-
prog = PixmapCheckWidget()
|
|
132
|
-
prog.show()
|
|
133
|
-
data = np.arange(128 * 256).reshape((256, 128))
|
|
134
|
-
data = data / np.max(data) * 255
|
|
135
|
-
data = data.astype(np.uint8)
|
|
136
|
-
prog.setValue(PixmapCheckData(data=data,
|
|
137
|
-
checked=True,
|
|
138
|
-
info='this is an info'))
|
|
139
|
-
|
|
140
|
-
def print_toggled(status):
|
|
141
|
-
print(f"toggled: {status}")
|
|
142
|
-
|
|
143
|
-
prog.checkbox.toggled.connect(print_toggled)
|
|
144
|
-
|
|
145
|
-
sys.exit(app.exec_())
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
def main_parameter():
|
|
149
|
-
from pymodaq.utils.managers.parameter_manager import ParameterManager
|
|
150
|
-
data = np.arange(128 * 256).reshape((256, 128))
|
|
151
|
-
data = data / np.max(data) * 255
|
|
152
|
-
data = data.astype(np.uint8)
|
|
153
|
-
|
|
154
|
-
class PixmapParameter(ParameterManager):
|
|
155
|
-
params = {'title': 'Overlays', 'name': 'overlays', 'type': 'group', 'children': [
|
|
156
|
-
{'name': f'Overlay{0:03.0f}', 'type': 'pixmap_check',
|
|
157
|
-
'value': PixmapCheckData(data=data, checked=False,
|
|
158
|
-
info=f'This is an info')},
|
|
159
|
-
{'name': 'other', 'type': 'bool_push', 'value': True},
|
|
160
|
-
{'name': 'otherp', 'type': 'led_push', 'value': True},
|
|
161
|
-
]},
|
|
162
|
-
|
|
163
|
-
def value_changed(self, param):
|
|
164
|
-
print(f'Value changed for {param}: {param.value()}')
|
|
165
|
-
|
|
166
|
-
import sys
|
|
167
|
-
app = QtWidgets.QApplication(sys.argv)
|
|
168
|
-
prog = PixmapParameter()
|
|
169
|
-
prog.settings_tree.show()
|
|
170
|
-
|
|
171
|
-
sys.exit(app.exec_())
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if __name__ == '__main__':
|
|
175
|
-
main_parameter()
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
from qtpy import QtWidgets, QtCore
|
|
2
|
-
from pyqtgraph.widgets.SpinBox import SpinBox
|
|
3
|
-
from pyqtgraph.parametertree.parameterTypes.basetypes import WidgetParameterItem, SimpleParameter
|
|
4
|
-
from pymodaq.utils.parameter.utils import scroll_log, scroll_linear
|
|
5
|
-
import numpy as np
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class SliderSpinBox(QtWidgets.QWidget):
|
|
9
|
-
|
|
10
|
-
def __init__(self, *args, subtype='lin', **kwargs):
|
|
11
|
-
|
|
12
|
-
super().__init__()
|
|
13
|
-
self.subtype = subtype
|
|
14
|
-
self.initUI(*args, **kwargs)
|
|
15
|
-
|
|
16
|
-
self.valueChanged = self.spinbox.valueChanged # (value) for compatibility with QSpinBox
|
|
17
|
-
self.sigValueChanged = self.spinbox.sigValueChanged # (self)
|
|
18
|
-
self.sigValueChanging = self.spinbox.sigValueChanging # (self, value) sent immediately; no delay.
|
|
19
|
-
self.sigChanged = self.spinbox.sigValueChanged
|
|
20
|
-
|
|
21
|
-
@property
|
|
22
|
-
def opts(self):
|
|
23
|
-
return self.spinbox.opts
|
|
24
|
-
|
|
25
|
-
@opts.setter
|
|
26
|
-
def opts(self, **opts):
|
|
27
|
-
self.setOpts(**opts)
|
|
28
|
-
|
|
29
|
-
def setOpts(self, **opts):
|
|
30
|
-
self.spinbox.setOpts(**opts)
|
|
31
|
-
if 'visible' in opts:
|
|
32
|
-
self.slider.setVisible(opts['visible'])
|
|
33
|
-
|
|
34
|
-
def insert_widget(self ,widget, row=0):
|
|
35
|
-
self.vlayout.insertWidget(row, widget)
|
|
36
|
-
|
|
37
|
-
def initUI(self, *args, **kwargs):
|
|
38
|
-
"""
|
|
39
|
-
Init the User Interface.
|
|
40
|
-
"""
|
|
41
|
-
self.vlayout = QtWidgets.QVBoxLayout()
|
|
42
|
-
self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
|
|
43
|
-
self.slider.setMinimumWidth(50)
|
|
44
|
-
self.slider.setMinimum(0)
|
|
45
|
-
self.slider.setMaximum(100)
|
|
46
|
-
if 'value' in kwargs:
|
|
47
|
-
value = kwargs.pop('value')
|
|
48
|
-
else:
|
|
49
|
-
if 'bounds' in kwargs:
|
|
50
|
-
value = kwargs['bounds'][0]
|
|
51
|
-
else:
|
|
52
|
-
value = 1
|
|
53
|
-
if value is None:
|
|
54
|
-
value = 0
|
|
55
|
-
self.spinbox = SpinBox(parent=None, value=value, **kwargs)
|
|
56
|
-
|
|
57
|
-
self.vlayout.addWidget(self.slider)
|
|
58
|
-
self.vlayout.addWidget(self.spinbox)
|
|
59
|
-
self.vlayout.setSpacing(0)
|
|
60
|
-
self.vlayout.setContentsMargins(0, 0, 0, 0)
|
|
61
|
-
self.setLayout(self.vlayout)
|
|
62
|
-
|
|
63
|
-
self.slider.valueChanged.connect(self.update_spinbox)
|
|
64
|
-
self.spinbox.valueChanged.connect(self.update_slide)
|
|
65
|
-
self.spinbox.valueChanged.emit(value) #Initializing slider from value
|
|
66
|
-
|
|
67
|
-
def get_bounds(self,):
|
|
68
|
-
""" Convert bounds from opts into list of floats
|
|
69
|
-
|
|
70
|
-
Returns:
|
|
71
|
-
list of floats
|
|
72
|
-
"""
|
|
73
|
-
return [float(bound) for bound in self.opts['bounds']]
|
|
74
|
-
|
|
75
|
-
def update_spinbox(self, val):
|
|
76
|
-
"""
|
|
77
|
-
val is a percentage [0-100] used in order to set the spinbox value between its min and max
|
|
78
|
-
"""
|
|
79
|
-
min_val,max_val = self.get_bounds()
|
|
80
|
-
if self.subtype == 'log':
|
|
81
|
-
val_out = scroll_log(val, min_val, max_val)
|
|
82
|
-
else:
|
|
83
|
-
val_out = scroll_linear(val, min_val, max_val)
|
|
84
|
-
try:
|
|
85
|
-
self.slider.valueChanged.disconnect(self.update_spinbox)
|
|
86
|
-
self.spinbox.valueChanged.disconnect(self.update_slide)
|
|
87
|
-
except Exception:
|
|
88
|
-
pass
|
|
89
|
-
self.spinbox.setValue(val_out)
|
|
90
|
-
|
|
91
|
-
self.slider.valueChanged.connect(self.update_spinbox)
|
|
92
|
-
self.spinbox.valueChanged.connect(self.update_slide)
|
|
93
|
-
|
|
94
|
-
def update_slide(self, val):
|
|
95
|
-
"""
|
|
96
|
-
val is the spinbox value between its min and max
|
|
97
|
-
"""
|
|
98
|
-
min_val,max_val = self.get_bounds()
|
|
99
|
-
try:
|
|
100
|
-
self.slider.valueChanged.disconnect(self.update_spinbox)
|
|
101
|
-
self.spinbox.valueChanged.disconnect(self.update_slide)
|
|
102
|
-
except Exception:
|
|
103
|
-
pass
|
|
104
|
-
if self.subtype == 'linear':
|
|
105
|
-
value = int((val - min_val) / (max_val - min_val) * 100)
|
|
106
|
-
else:
|
|
107
|
-
value = int((np.log10(val) - np.log10(min_val)) / (np.log10(max_val) - np.log10(min_val)) * 100)
|
|
108
|
-
self.slider.setValue(value)
|
|
109
|
-
self.slider.valueChanged.connect(self.update_spinbox)
|
|
110
|
-
self.spinbox.valueChanged.connect(self.update_slide)
|
|
111
|
-
|
|
112
|
-
def setValue(self, val):
|
|
113
|
-
self.spinbox.setValue(val)
|
|
114
|
-
|
|
115
|
-
def value(self):
|
|
116
|
-
return self.spinbox.value()
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
class SliderParameterItem(WidgetParameterItem):
|
|
120
|
-
"""Registered parameter type which displays a QLineEdit"""
|
|
121
|
-
|
|
122
|
-
def makeWidget(self):
|
|
123
|
-
opts = self.param.opts
|
|
124
|
-
defs = {
|
|
125
|
-
'value': 0, 'min': None, 'max': None,
|
|
126
|
-
'dec': False,
|
|
127
|
-
'siPrefix': False, 'suffix': '', 'decimals': 12,
|
|
128
|
-
'int': False
|
|
129
|
-
}
|
|
130
|
-
#Update relevant opts
|
|
131
|
-
for k in defs:
|
|
132
|
-
if k in opts:
|
|
133
|
-
defs[k] = opts[k]
|
|
134
|
-
#Additional changes according to user syntax
|
|
135
|
-
if 'subtype' not in opts:
|
|
136
|
-
opts['subtype'] = 'linear'
|
|
137
|
-
defs['bounds'] = [0., float(self.param.value() or 1)] # max value set to default value when no max given or 1 if no default
|
|
138
|
-
if 'limits' not in opts:
|
|
139
|
-
if 'min' in opts:
|
|
140
|
-
defs['bounds'][0] = opts['min']
|
|
141
|
-
if 'max' in opts:
|
|
142
|
-
defs['bounds'][1] = opts['max']
|
|
143
|
-
else:
|
|
144
|
-
defs['bounds'] = opts['limits']
|
|
145
|
-
|
|
146
|
-
w = SliderSpinBox(subtype=opts['subtype'],**defs)
|
|
147
|
-
self.setSizeHint(1, QtCore.QSize(50, 50))
|
|
148
|
-
return w
|
|
149
|
-
|
|
150
|
-
def updateDisplayLabel(self, value=None):
|
|
151
|
-
# Reimplement display label to show the spinbox text with its suffix
|
|
152
|
-
if value is None:
|
|
153
|
-
value = self.widget.spinbox.text()
|
|
154
|
-
super().updateDisplayLabel(value)
|
|
155
|
-
|
|
156
|
-
def showEditor(self):
|
|
157
|
-
# Reimplement show Editor to specifically select the numbers
|
|
158
|
-
super().showEditor()
|
|
159
|
-
self.widget.spinbox.setFocus()
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
class SliderParameter(SimpleParameter):
|
|
163
|
-
itemClass = SliderParameterItem
|
|
164
|
-
|
|
165
|
-
def __init__(self, **kwargs):
|
|
166
|
-
super().__init__(**kwargs)
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
from qtpy import QtWidgets, QtCore
|
|
2
|
-
from collections import OrderedDict
|
|
3
|
-
from pyqtgraph.parametertree.parameterTypes.basetypes import WidgetParameterItem
|
|
4
|
-
from pyqtgraph.parametertree import Parameter
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class TableWidget(QtWidgets.QTableWidget):
|
|
8
|
-
"""
|
|
9
|
-
============== ===========================
|
|
10
|
-
*Attributes** **Type**
|
|
11
|
-
*valuechanged* instance of pyqt Signal
|
|
12
|
-
*QtWidgets* instance of QTableWidget
|
|
13
|
-
============== ===========================
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
valuechanged = QtCore.Signal(OrderedDict)
|
|
17
|
-
|
|
18
|
-
def __init__(self):
|
|
19
|
-
super().__init__()
|
|
20
|
-
|
|
21
|
-
def get_table_value(self):
|
|
22
|
-
"""
|
|
23
|
-
Get the contents of the self coursed table.
|
|
24
|
-
|
|
25
|
-
Returns
|
|
26
|
-
-------
|
|
27
|
-
data : ordered dictionnary
|
|
28
|
-
The getted values dictionnary.
|
|
29
|
-
"""
|
|
30
|
-
data = OrderedDict([])
|
|
31
|
-
for ind in range(self.rowCount()):
|
|
32
|
-
item0 = self.item(ind, 0)
|
|
33
|
-
item1 = self.item(ind, 1)
|
|
34
|
-
if item0 is not None and item1 is not None:
|
|
35
|
-
try:
|
|
36
|
-
data[item0.text()] = float(item1.text())
|
|
37
|
-
except Exception:
|
|
38
|
-
data[item0.text()] = item1.text()
|
|
39
|
-
return data
|
|
40
|
-
|
|
41
|
-
def set_table_value(self, data_dict):
|
|
42
|
-
"""
|
|
43
|
-
Set the data values dictionnary to the custom table.
|
|
44
|
-
|
|
45
|
-
=============== ====================== ================================================
|
|
46
|
-
**Parameters** **Type** **Description**
|
|
47
|
-
*data_dict* ordered dictionnary the contents to be stored in the custom table
|
|
48
|
-
=============== ====================== ================================================
|
|
49
|
-
"""
|
|
50
|
-
try:
|
|
51
|
-
self.setRowCount(len(data_dict))
|
|
52
|
-
self.setColumnCount(2)
|
|
53
|
-
for ind, (key, value) in enumerate(data_dict.items()):
|
|
54
|
-
item0 = QtWidgets.QTableWidgetItem(key)
|
|
55
|
-
item0.setFlags(item0.flags() ^ QtCore.Qt.ItemIsEditable)
|
|
56
|
-
if isinstance(value, float):
|
|
57
|
-
item1 = QtWidgets.QTableWidgetItem('{:.3e}'.format(value))
|
|
58
|
-
else:
|
|
59
|
-
item1 = QtWidgets.QTableWidgetItem(str(value))
|
|
60
|
-
item1.setFlags(item1.flags() ^ QtCore.Qt.ItemIsEditable)
|
|
61
|
-
self.setItem(ind, 0, item0)
|
|
62
|
-
self.setItem(ind, 1, item1)
|
|
63
|
-
# self.valuechanged.emit(data_dict)
|
|
64
|
-
|
|
65
|
-
except Exception as e:
|
|
66
|
-
pass
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
class TableParameterItem(WidgetParameterItem):
|
|
70
|
-
|
|
71
|
-
# def treeWidgetChanged(self):
|
|
72
|
-
# """
|
|
73
|
-
# Check for changement in the Widget tree.
|
|
74
|
-
# """
|
|
75
|
-
# # # TODO: fix so that superclass method can be called
|
|
76
|
-
# # # (WidgetParameter should just natively support this style)
|
|
77
|
-
# # WidgetParameterItem.treeWidgetChanged(self)
|
|
78
|
-
# self.treeWidget().setFirstItemColumnSpanned(self.subItem, True)
|
|
79
|
-
# self.treeWidget().setItemWidget(self.subItem, 0, self.widget)
|
|
80
|
-
#
|
|
81
|
-
# # for now, these are copied from ParameterItem.treeWidgetChanged
|
|
82
|
-
# self.setHidden(not self.param.opts.get('visible', True))
|
|
83
|
-
# self.setExpanded(self.param.opts.get('expanded', True))
|
|
84
|
-
|
|
85
|
-
def makeWidget(self):
|
|
86
|
-
"""
|
|
87
|
-
Make and initialize an instance of TableWidget.
|
|
88
|
-
|
|
89
|
-
Returns
|
|
90
|
-
-------
|
|
91
|
-
table : instance of TableWidget.
|
|
92
|
-
The initialized table.
|
|
93
|
-
|
|
94
|
-
See Also
|
|
95
|
-
--------
|
|
96
|
-
TableWidget
|
|
97
|
-
"""
|
|
98
|
-
self.asSubItem = True
|
|
99
|
-
self.hideWidget = False
|
|
100
|
-
opts = self.param.opts
|
|
101
|
-
w = TableWidget()
|
|
102
|
-
if 'tip' in opts:
|
|
103
|
-
w.setToolTip(opts['tip'])
|
|
104
|
-
w.setColumnCount(2)
|
|
105
|
-
if 'header' in opts:
|
|
106
|
-
w.setHorizontalHeaderLabels(self.param.opts['header'])
|
|
107
|
-
if 'height' not in opts:
|
|
108
|
-
opts['height'] = 200
|
|
109
|
-
w.setMaximumHeight(opts['height'])
|
|
110
|
-
w.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
|
|
111
|
-
# self.table.setReadOnly(self.param.opts.get('readonly', False))
|
|
112
|
-
w.value = w.get_table_value
|
|
113
|
-
w.setValue = w.set_table_value
|
|
114
|
-
w.sigChanged = w.itemChanged
|
|
115
|
-
return w
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
class TableParameter(Parameter):
|
|
119
|
-
"""
|
|
120
|
-
=============== =================================
|
|
121
|
-
**Attributes** **Type**
|
|
122
|
-
*itemClass* instance of TableParameterItem
|
|
123
|
-
*Parameter* instance of pyqtgraph parameter
|
|
124
|
-
=============== =================================
|
|
125
|
-
"""
|
|
126
|
-
itemClass = TableParameterItem
|
|
127
|
-
"""Editable string; displayed as large text box in the tree."""
|
|
128
|
-
|
|
129
|
-
# def __init(self):
|
|
130
|
-
# super(TableParameter,self).__init__()
|
|
131
|
-
|
|
132
|
-
def setValue(self, value):
|
|
133
|
-
self.opts['value'] = value
|
|
134
|
-
self.sigValueChanged.emit(self, value)
|
|
135
|
-
|