psychopy 2024.2.5__py3-none-any.whl → 2025.1.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 psychopy might be problematic. Click here for more details.
- psychopy/CHANGELOG.txt +4 -4
- psychopy/GIT_SHA +1 -1
- psychopy/LICENSE.txt +1 -1
- psychopy/VERSION +1 -1
- psychopy/__init__.py +10 -7
- psychopy/alerts/__init__.py +1 -1
- psychopy/alerts/_alerts.py +53 -17
- psychopy/alerts/_errorHandler.py +3 -4
- psychopy/alerts/alertsCatalogue/3210.yaml +27 -0
- psychopy/alerts/alertsCatalogue/3610.yaml +19 -0
- psychopy/alerts/alertsCatalogue/4130.yaml +19 -0
- psychopy/alerts/alertsCatalogue/alertCategories.yaml +8 -1
- psychopy/alerts/alertsCatalogue/alertmsg.py +1 -1
- psychopy/alerts/alerttools.py +0 -16
- psychopy/app/Resources/betasplash.png +0 -0
- psychopy/app/Resources/betasplash@2x.png +0 -0
- psychopy/app/Resources/classic/case.png +0 -0
- psychopy/app/Resources/classic/case@2x.png +0 -0
- psychopy/app/Resources/classic/fileaudio.png +0 -0
- psychopy/app/Resources/classic/fileaudio@2x.png +0 -0
- psychopy/app/Resources/classic/filecss.png +0 -0
- psychopy/app/Resources/classic/filecss@2x.png +0 -0
- psychopy/app/Resources/classic/filecsv.png +0 -0
- psychopy/app/Resources/classic/filecsv@2x.png +0 -0
- psychopy/app/Resources/classic/filedesign.png +0 -0
- psychopy/app/Resources/classic/filedesign@2x.png +0 -0
- psychopy/app/Resources/classic/filefont.png +0 -0
- psychopy/app/Resources/classic/filefont@2x.png +0 -0
- psychopy/app/Resources/classic/filegit.png +0 -0
- psychopy/app/Resources/classic/filegit@2x.png +0 -0
- psychopy/app/Resources/classic/filehtml.png +0 -0
- psychopy/app/Resources/classic/filehtml@2x.png +0 -0
- psychopy/app/Resources/classic/fileimage.png +0 -0
- psychopy/app/Resources/classic/fileimage@2x.png +0 -0
- psychopy/app/Resources/classic/fileinfo.png +0 -0
- psychopy/app/Resources/classic/fileinfo@2x.png +0 -0
- psychopy/app/Resources/classic/filejs.png +0 -0
- psychopy/app/Resources/classic/filejs@2x.png +0 -0
- psychopy/app/Resources/classic/filejson.png +0 -0
- psychopy/app/Resources/classic/filejson@2x.png +0 -0
- psychopy/app/Resources/classic/filepkg.png +0 -0
- psychopy/app/Resources/classic/filepkg@2x.png +0 -0
- psychopy/app/Resources/classic/filepsyexp.png +0 -0
- psychopy/app/Resources/classic/filepsyexp@2x.png +0 -0
- psychopy/app/Resources/classic/filepy.png +0 -0
- psychopy/app/Resources/classic/filepy@2x.png +0 -0
- psychopy/app/Resources/classic/filetxt.png +0 -0
- psychopy/app/Resources/classic/filetxt@2x.png +0 -0
- psychopy/app/Resources/classic/fileunknown.png +0 -0
- psychopy/app/Resources/classic/fileunknown@2x.png +0 -0
- psychopy/app/Resources/classic/filevideo.png +0 -0
- psychopy/app/Resources/classic/filevideo@2x.png +0 -0
- psychopy/app/Resources/classic/find.png +0 -0
- psychopy/app/Resources/classic/find@2x.png +0 -0
- psychopy/app/Resources/classic/loop.png +0 -0
- psychopy/app/Resources/classic/loop@2x.png +0 -0
- psychopy/app/Resources/classic/regex.png +0 -0
- psychopy/app/Resources/classic/regex@2x.png +0 -0
- psychopy/app/Resources/dark/case.png +0 -0
- psychopy/app/Resources/dark/case@2x.png +0 -0
- psychopy/app/Resources/dark/fileaudio.png +0 -0
- psychopy/app/Resources/dark/fileaudio@2x.png +0 -0
- psychopy/app/Resources/dark/filecss.png +0 -0
- psychopy/app/Resources/dark/filecss@2x.png +0 -0
- psychopy/app/Resources/dark/filecsv.png +0 -0
- psychopy/app/Resources/dark/filecsv@2x.png +0 -0
- psychopy/app/Resources/dark/filedesign.png +0 -0
- psychopy/app/Resources/dark/filedesign@2x.png +0 -0
- psychopy/app/Resources/dark/filefont.png +0 -0
- psychopy/app/Resources/dark/filefont@2x.png +0 -0
- psychopy/app/Resources/dark/filegit.png +0 -0
- psychopy/app/Resources/dark/filegit@2x.png +0 -0
- psychopy/app/Resources/dark/filehtml.png +0 -0
- psychopy/app/Resources/dark/filehtml@2x.png +0 -0
- psychopy/app/Resources/dark/fileimage.png +0 -0
- psychopy/app/Resources/dark/fileimage@2x.png +0 -0
- psychopy/app/Resources/dark/fileinfo.png +0 -0
- psychopy/app/Resources/dark/fileinfo@2x.png +0 -0
- psychopy/app/Resources/dark/filejs.png +0 -0
- psychopy/app/Resources/dark/filejs@2x.png +0 -0
- psychopy/app/Resources/dark/filejson.png +0 -0
- psychopy/app/Resources/dark/filejson@2x.png +0 -0
- psychopy/app/Resources/dark/filepkg.png +0 -0
- psychopy/app/Resources/dark/filepkg@2x.png +0 -0
- psychopy/app/Resources/dark/filepsyexp.png +0 -0
- psychopy/app/Resources/dark/filepsyexp@2x.png +0 -0
- psychopy/app/Resources/dark/filepy.png +0 -0
- psychopy/app/Resources/dark/filepy@2x.png +0 -0
- psychopy/app/Resources/dark/filetxt.png +0 -0
- psychopy/app/Resources/dark/filetxt@2x.png +0 -0
- psychopy/app/Resources/dark/fileunknown.png +0 -0
- psychopy/app/Resources/dark/fileunknown@2x.png +0 -0
- psychopy/app/Resources/dark/filevideo.png +0 -0
- psychopy/app/Resources/dark/filevideo@2x.png +0 -0
- psychopy/app/Resources/dark/find.png +0 -0
- psychopy/app/Resources/dark/find@2x.png +0 -0
- psychopy/app/Resources/dark/loop.png +0 -0
- psychopy/app/Resources/dark/loop@2x.png +0 -0
- psychopy/app/Resources/dark/regex.png +0 -0
- psychopy/app/Resources/dark/regex@2x.png +0 -0
- psychopy/app/Resources/light/case.png +0 -0
- psychopy/app/Resources/light/case@2x.png +0 -0
- psychopy/app/Resources/light/fileaudio.png +0 -0
- psychopy/app/Resources/light/fileaudio@2x.png +0 -0
- psychopy/app/Resources/light/filecss.png +0 -0
- psychopy/app/Resources/light/filecss@2x.png +0 -0
- psychopy/app/Resources/light/filecsv.png +0 -0
- psychopy/app/Resources/light/filecsv@2x.png +0 -0
- psychopy/app/Resources/light/filedesign.png +0 -0
- psychopy/app/Resources/light/filedesign@2x.png +0 -0
- psychopy/app/Resources/light/filefont.png +0 -0
- psychopy/app/Resources/light/filefont@2x.png +0 -0
- psychopy/app/Resources/light/filegit.png +0 -0
- psychopy/app/Resources/light/filegit@2x.png +0 -0
- psychopy/app/Resources/light/filehtml.png +0 -0
- psychopy/app/Resources/light/filehtml@2x.png +0 -0
- psychopy/app/Resources/light/fileimage.png +0 -0
- psychopy/app/Resources/light/fileimage@2x.png +0 -0
- psychopy/app/Resources/light/fileinfo.png +0 -0
- psychopy/app/Resources/light/fileinfo@2x.png +0 -0
- psychopy/app/Resources/light/filejs.png +0 -0
- psychopy/app/Resources/light/filejs@2x.png +0 -0
- psychopy/app/Resources/light/filejson.png +0 -0
- psychopy/app/Resources/light/filejson@2x.png +0 -0
- psychopy/app/Resources/light/filepkg.png +0 -0
- psychopy/app/Resources/light/filepkg@2x.png +0 -0
- psychopy/app/Resources/light/filepsyexp.png +0 -0
- psychopy/app/Resources/light/filepsyexp@2x.png +0 -0
- psychopy/app/Resources/light/filepy.png +0 -0
- psychopy/app/Resources/light/filepy@2x.png +0 -0
- psychopy/app/Resources/light/filetxt.png +0 -0
- psychopy/app/Resources/light/filetxt@2x.png +0 -0
- psychopy/app/Resources/light/fileunknown.png +0 -0
- psychopy/app/Resources/light/fileunknown@2x.png +0 -0
- psychopy/app/Resources/light/filevideo.png +0 -0
- psychopy/app/Resources/light/filevideo@2x.png +0 -0
- psychopy/app/Resources/light/find.png +0 -0
- psychopy/app/Resources/light/find@2x.png +0 -0
- psychopy/app/Resources/light/loop.png +0 -0
- psychopy/app/Resources/light/loop@2x.png +0 -0
- psychopy/app/Resources/light/regex.png +0 -0
- psychopy/app/Resources/light/regex@2x.png +0 -0
- psychopy/app/Resources/routine_templates/Basic.psyexp +0 -1
- psychopy/app/Resources/routine_templates/Misc.psyexp +0 -1
- psychopy/app/Resources/routine_templates/Online.psyexp +0 -2
- psychopy/app/Resources/routine_templates/Trials.psyexp +0 -1
- psychopy/app/Resources/splash.png +0 -0
- psychopy/app/Resources/splash@2x.png +0 -0
- psychopy/app/__init__.py +49 -8
- psychopy/app/__main__.py +3 -0
- psychopy/app/_psychopyApp.py +134 -125
- psychopy/app/builder/builder.py +42 -22
- psychopy/app/builder/dialogs/__init__.py +44 -11
- psychopy/app/builder/dialogs/dlgsCode.py +1 -1
- psychopy/app/builder/dialogs/dlgsConditions.py +1 -1
- psychopy/app/builder/dialogs/findDlg.py +106 -20
- psychopy/app/builder/dialogs/paramCtrls.py +42 -1
- psychopy/app/builder/validators.py +1 -1
- psychopy/app/coder/codeEditorBase.py +8 -8
- psychopy/app/coder/coder.py +32 -29
- psychopy/app/coder/fileBrowser.py +68 -22
- psychopy/app/coder/folding.py +1 -1
- psychopy/app/coder/psychoParser.py +1 -1
- psychopy/app/coder/repl.py +1 -1
- psychopy/app/coder/sourceTree.py +1 -1
- psychopy/app/connections/__init__.py +1 -1
- psychopy/app/connections/news.py +1 -1
- psychopy/app/connections/sendusage.py +1 -1
- psychopy/app/connections/updates.py +1 -1
- psychopy/app/console.py +1 -1
- psychopy/app/errorDlg.py +1 -1
- psychopy/app/frametracker.py +1 -1
- psychopy/app/idle.py +1 -1
- psychopy/app/jobs.py +5 -2
- psychopy/app/linuxconfig/__init__.py +1 -1
- psychopy/app/locale/ar_001/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ar_001/LC_MESSAGE/messages.po +4 -4
- psychopy/app/locale/cs_CZ/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/da_DK/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/de_DE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/de_DE/LC_MESSAGE/messages.po +3 -3
- psychopy/app/locale/el_GR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/en_NZ/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/en_US/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_CO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_CO/LC_MESSAGE/messages.po +4 -4
- psychopy/app/locale/es_ES/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_ES/LC_MESSAGE/messages.po +4 -4
- psychopy/app/locale/es_US/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/es_US/LC_MESSAGE/messages.po +4 -4
- psychopy/app/locale/et_EE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/et_EE/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/fa_IR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fa_IR/LC_MESSAGE/messages.po +1 -1
- psychopy/app/locale/fi_FI/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fr_FR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/fr_FR/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/he_IL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/he_IL/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/hi_IN/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/hi_IN/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/hu_HU/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/it_IT/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/it_IT/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/ja_JP/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ja_JP/LC_MESSAGE/messages.po +3421 -2396
- psychopy/app/locale/ko_KR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ms_MY/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ms_MY/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/nl_NL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/nn_NO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/pl_PL/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/pt_PT/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/pt_PT/LC_MESSAGE/messages.po +4 -4
- psychopy/app/locale/ro_RO/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/ru_RU/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/sv_SE/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/sv_SE/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/tr_TR/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/tr_TR/LC_MESSAGE/messages.po +2 -2
- psychopy/app/locale/zh_CN/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/zh_CN/LC_MESSAGE/messages.po +3 -3
- psychopy/app/locale/zh_TW/LC_MESSAGE/messages.mo +0 -0
- psychopy/app/locale/zh_TW/LC_MESSAGE/messages.po +2 -2
- psychopy/app/{builder/localizedStrings.py → localizedStrings.py} +173 -26
- psychopy/app/pavlovia_ui/__init__.py +1 -1
- psychopy/app/pavlovia_ui/_base.py +1 -1
- psychopy/app/pavlovia_ui/functions.py +1 -1
- psychopy/app/pavlovia_ui/menu.py +1 -1
- psychopy/app/pavlovia_ui/project.py +1 -1
- psychopy/app/pavlovia_ui/search.py +1 -1
- psychopy/app/pavlovia_ui/sync.py +1 -1
- psychopy/app/pavlovia_ui/user.py +1 -1
- psychopy/app/plugin_manager/dialog.py +34 -96
- psychopy/app/plugin_manager/packages.py +10 -14
- psychopy/app/plugin_manager/plugins.py +64 -4
- psychopy/app/preferencesDlg.py +12 -37
- psychopy/app/psychopyApp.py +130 -44
- psychopy/app/ribbon.py +1 -0
- psychopy/app/runner/runner.py +19 -7
- psychopy/app/runner/scriptProcess.py +11 -6
- psychopy/app/stdout/stdOutRich.py +9 -2
- psychopy/app/themes/fonts.py +1 -1
- psychopy/app/themes/icons.py +2 -38
- psychopy/app/ui/__init__.py +1 -1
- psychopy/app/utils.py +3 -3
- psychopy/assets/default.mp3 +0 -0
- psychopy/assets/fonts/NotoSans-Bold.ttf +0 -0
- psychopy/assets/fonts/NotoSans-BoldItalic.ttf +0 -0
- psychopy/assets/fonts/NotoSans-Italic.ttf +0 -0
- psychopy/assets/fonts/NotoSans-Regular.ttf +0 -0
- psychopy/assets/voicekeyThresholdStim.wav +0 -0
- psychopy/clock.py +4 -1
- psychopy/colors.py +12 -5
- psychopy/core.py +1 -1
- psychopy/data/base.py +1 -1
- psychopy/data/experiment.py +151 -46
- psychopy/data/routine.py +27 -1
- psychopy/data/staircase.py +2 -1
- psychopy/data/trial.py +62 -14
- psychopy/data/utils.py +2 -2
- psychopy/demos/builder/Design Templates/branchedExperiment/branchedExperiment.psyexp +333 -218
- psychopy/demos/builder/Design Templates/psychophysicsStaircase/psychophysicsStaircase.psyexp +261 -239
- psychopy/demos/builder/Design Templates/psychophysicsStairsInterleaved/psychophysicsStaircaseInterleaved.psyexp +319 -180
- psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks.psyexp +204 -116
- psychopy/demos/builder/Experiments/BART/assets/background.jpg +0 -0
- psychopy/demos/builder/Experiments/BART/assets/blueBalloon.png +0 -0
- psychopy/demos/builder/Experiments/BART/assets/greenBalloon.png +0 -0
- psychopy/demos/builder/Experiments/BART/assets/redBalloon.png +0 -0
- psychopy/demos/builder/Experiments/BART/bart.psyexp +779 -866
- psychopy/demos/builder/Experiments/BigFiveInventory/BFI.psyexp +242 -180
- psychopy/demos/builder/Experiments/GoNoGo/gng.psyexp +419 -406
- psychopy/demos/builder/Experiments/dragAndDrop/README.md +2 -37
- psychopy/demos/builder/Experiments/dragAndDrop/drag_and_drop.psyexp +460 -1204
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/blank_grid.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/make_shapes.psyexp +221 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/readme.md +4 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_1.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_10.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_2.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_3.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_4.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_5.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_6.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_7.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_8.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solution_9.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/solutions.xlsx +0 -0
- psychopy/demos/builder/Experiments/mentalRotation/MentalRotation.psyexp +583 -542
- psychopy/demos/builder/Experiments/navon/NavonTask.psyexp +458 -427
- psychopy/demos/builder/Experiments/sternberg/sternberg.psyexp +588 -550
- psychopy/demos/builder/Experiments/stroop/stroop.psyexp +303 -207
- psychopy/demos/builder/Experiments/stroopExtended/stroop.psyexp +390 -215
- psychopy/demos/builder/Experiments/stroopExtended/stroopReverse.psyexp +390 -215
- psychopy/demos/builder/Experiments/stroopVoice/stroopVoice.psyexp +357 -331
- psychopy/demos/builder/Feature Demos/buttonBox/buttonBoxDemo.psyexp +3 -2
- psychopy/demos/builder/Feature Demos/counterbalance/counterbalance.psyexp +287 -277
- psychopy/demos/builder/Feature Demos/gratings/gratings.psyexp +370 -320
- psychopy/demos/builder/Feature Demos/noise/noise.psyexp +452 -399
- psychopy/demos/builder/Feature Demos/panorama/panorama.psyexp +168 -133
- psychopy/demos/builder/Feature Demos/pilotMode/pilotMode.psyexp +4 -3
- psychopy/demos/builder/Feature Demos/progress/progressBar.psyexp +420 -392
- psychopy/demos/builder/Feature Demos/sliders/sliders.psyexp +917 -871
- psychopy/demos/builder/Feature Demos/visualValidator/readme.md +7 -0
- psychopy/demos/builder/Feature Demos/visualValidator/visualValidator.psyexp +200 -0
- psychopy/demos/builder/Hardware/EEG_parallel_component/EEG_triggers_parallel_comp.psyexp +25 -9
- psychopy/demos/builder/Hardware/EEG_serial_code/EEG_triggers_serial_code.psyexp +372 -361
- psychopy/demos/builder/Hardware/EEG_serial_component/EEG_triggers_serial_comp.psyexp +25 -9
- psychopy/demos/builder/Hardware/EGI_netstation/stroop.psyexp +320 -235
- psychopy/demos/builder/Hardware/Eyetracking_visual_search/visualSearch.psyexp +790 -651
- psychopy/demos/builder/Hardware/camera/camera.psyexp +326 -246
- psychopy/demos/builder/Hardware/eyetracking/eyetracking.psyexp +432 -327
- psychopy/demos/builder/Hardware/eyetracking_custom_cal/eyetracking_custom_cal.psyexp +440 -321
- psychopy/demos/builder/Hardware/fMRI/fMRI_demo.psyexp +190 -181
- psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo.psyexp +323 -312
- psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy.psyexp +360 -0
- psychopy/demos/builder/Hardware/lab_streaming_layer/lsl_triggers_demo_legacy_legacy.psyexp +312 -0
- psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy.psyexp +329 -273
- psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy.psyexp +360 -0
- psychopy/demos/builder/Hardware/lab_streaming_layer_legacy/lsl_triggers_demo_legacy_legacy_legacy.psyexp +312 -0
- psychopy/demos/builder/Hardware/microphone/microphone.psyexp +450 -404
- psychopy/demos/builder/Hardware/pump/pump.psyexp +593 -329
- psychopy/demos/builder/Helper Tools/achorVSalignment/FlowCircular-Regular.ttf +0 -0
- psychopy/demos/builder/Helper Tools/achorVSalignment/anchorAlignment.psyexp +336 -274
- psychopy/demos/builder/Helper Tools/clockFace/clockFace.psyexp +200 -149
- psychopy/demos/builder/Helper Tools/colors/colors.psyexp +300 -279
- psychopy/demos/builder/Helper Tools/drawPolygon/drawPolygon.psyexp +677 -564
- psychopy/demos/builder/Helper Tools/keyNameFinder/keyNameFinder.psyexp +214 -158
- psychopy/demos/builder/Helper Tools/spatialUnits/unitDemo.psyexp +195 -146
- psychopy/demos/coder/experiment control/runtimeInfo.py +1 -1
- psychopy/devices/__init__.py +1 -1
- psychopy/event.py +1 -1
- psychopy/exceptions.py +1 -1
- psychopy/experiment/__init__.py +1 -1
- psychopy/experiment/_experiment.py +30 -9
- psychopy/experiment/components/__init__.py +1 -6
- psychopy/experiment/components/_base.py +44 -19
- psychopy/experiment/components/aperture/__init__.py +1 -1
- psychopy/experiment/components/brush/__init__.py +2 -2
- psychopy/experiment/components/button/__init__.py +24 -28
- psychopy/experiment/components/camera/__init__.py +38 -39
- psychopy/experiment/components/code/__init__.py +1 -1
- psychopy/experiment/components/dots/__init__.py +1 -1
- psychopy/experiment/components/eyetracker_record/__init__.py +7 -3
- psychopy/experiment/components/form/__init__.py +3 -3
- psychopy/experiment/components/grating/__init__.py +1 -1
- psychopy/experiment/components/image/__init__.py +1 -1
- psychopy/experiment/components/joyButtons/__init__.py +2 -2
- psychopy/experiment/components/joyButtons/virtualJoyButtons.py +1 -1
- psychopy/experiment/components/joystick/__init__.py +3 -3
- psychopy/experiment/components/joystick/virtualJoystick.py +1 -1
- psychopy/experiment/components/keyboard/__init__.py +98 -122
- psychopy/experiment/components/microphone/__init__.py +54 -98
- psychopy/experiment/components/mouse/__init__.py +92 -93
- psychopy/experiment/components/movie/__init__.py +28 -50
- psychopy/experiment/components/parallelOut/__init__.py +3 -3
- psychopy/experiment/components/polygon/__init__.py +2 -3
- psychopy/experiment/components/roi/__init__.py +2 -2
- psychopy/experiment/components/routineSettings/__init__.py +2 -0
- psychopy/experiment/components/serialOut/__init__.py +7 -7
- psychopy/experiment/components/settings/__init__.py +317 -313
- psychopy/experiment/components/settings/eyetracking.py +108 -0
- psychopy/experiment/components/slider/__init__.py +5 -5
- psychopy/experiment/components/sound/__init__.py +168 -78
- psychopy/experiment/components/soundsensor/__init__.py +361 -0
- psychopy/experiment/components/soundsensor/classic/soundsensor.png +0 -0
- psychopy/experiment/components/soundsensor/classic/soundsensor@2x.png +0 -0
- psychopy/experiment/components/soundsensor/dark/soundsensor.png +0 -0
- psychopy/experiment/components/soundsensor/dark/soundsensor@2x.png +0 -0
- psychopy/experiment/components/soundsensor/light/soundsensor.png +0 -0
- psychopy/experiment/components/soundsensor/light/soundsensor@2x.png +0 -0
- psychopy/experiment/components/static/__init__.py +59 -33
- psychopy/experiment/components/text/__init__.py +2 -6
- psychopy/experiment/components/textbox/__init__.py +3 -7
- psychopy/experiment/components/unknown/__init__.py +2 -0
- psychopy/experiment/components/unknownPlugin/__init__.py +2 -0
- psychopy/experiment/exports.py +1 -1
- psychopy/experiment/flow.py +2 -2
- psychopy/experiment/localization.py +1 -1
- psychopy/experiment/loops.py +43 -10
- psychopy/experiment/params.py +6 -4
- psychopy/experiment/plugins.py +8 -1
- psychopy/experiment/py2js.py +1 -1
- psychopy/experiment/py2js_transpiler.py +1 -1
- psychopy/experiment/routines/__init__.py +1 -1
- psychopy/experiment/routines/_base.py +23 -24
- psychopy/experiment/routines/audioValidator/__init__.py +343 -0
- psychopy/experiment/routines/audioValidator/classic/audio_validator.png +0 -0
- psychopy/experiment/routines/audioValidator/classic/audio_validator@2x.png +0 -0
- psychopy/experiment/routines/audioValidator/dark/audio_validator.png +0 -0
- psychopy/experiment/routines/audioValidator/dark/audio_validator@2x.png +0 -0
- psychopy/experiment/routines/audioValidator/light/audio_validator.png +0 -0
- psychopy/experiment/routines/audioValidator/light/audio_validator@2x.png +0 -0
- psychopy/experiment/routines/eyetracker_calibrate/__init__.py +76 -17
- psychopy/experiment/routines/eyetracker_validate/__init__.py +1 -1
- psychopy/experiment/routines/unknown/__init__.py +2 -0
- psychopy/experiment/routines/{photodiodeValidator → visualValidator}/__init__.py +89 -120
- psychopy/experiment/routines/visualValidator/classic/visual_validator.png +0 -0
- psychopy/experiment/routines/visualValidator/classic/visual_validator@2x.png +0 -0
- psychopy/experiment/routines/visualValidator/dark/visual_validator.png +0 -0
- psychopy/experiment/routines/visualValidator/dark/visual_validator@2x.png +0 -0
- psychopy/experiment/routines/visualValidator/light/visual_validator.png +0 -0
- psychopy/experiment/routines/visualValidator/light/visual_validator@2x.png +0 -0
- psychopy/experiment/utils.py +1 -1
- psychopy/gui/__init__.py +1 -1
- psychopy/gui/qtgui.py +15 -6
- psychopy/gui/wxgui.py +1 -1
- psychopy/hardware/__init__.py +0 -1
- psychopy/hardware/base.py +147 -16
- psychopy/hardware/bbtk/__init__.py +10 -16
- psychopy/hardware/brainproducts.py +7 -13
- psychopy/hardware/button.py +21 -2
- psychopy/hardware/buttonbox/__init__.py +1 -1
- psychopy/hardware/camera/__init__.py +18 -5
- psychopy/hardware/cedrus.py +5 -16
- psychopy/hardware/crs/__init__.py +1 -1
- psychopy/hardware/crs/bits.py +36 -33
- psychopy/hardware/crs/colorcal.py +8 -11
- psychopy/hardware/crs/optical.py +7 -10
- psychopy/hardware/crs/shaders.py +18 -5
- psychopy/hardware/emotiv.py +1 -1
- psychopy/hardware/emulator.py +11 -5
- psychopy/hardware/exceptions.py +86 -0
- psychopy/hardware/forp.py +18 -23
- psychopy/hardware/gammasci.py +8 -3
- psychopy/hardware/iolab.py +8 -19
- psychopy/hardware/joystick/__init__.py +865 -266
- psychopy/hardware/joystick/_base.py +251 -0
- psychopy/hardware/joystick/backend_glfw.py +306 -0
- psychopy/hardware/joystick/backend_pyglet.py +309 -0
- psychopy/hardware/joystick/mappings.py +287 -0
- psychopy/hardware/keyboard.py +4 -2
- psychopy/hardware/labhackers.py +1 -1
- psychopy/hardware/labjacks.py +9 -13
- psychopy/hardware/{photodiode.py → lightsensor.py} +146 -203
- psychopy/hardware/listener.py +9 -8
- psychopy/hardware/manager.py +24 -35
- psychopy/hardware/microphone.py +535 -155
- psychopy/hardware/minolta.py +14 -4
- psychopy/hardware/mouse/__init__.py +1 -1
- psychopy/hardware/photometer/__init__.py +2 -2
- psychopy/hardware/pr.py +14 -4
- psychopy/hardware/qmix.py +18 -27
- psychopy/hardware/serialdevice.py +43 -12
- psychopy/hardware/soundsensor.py +473 -0
- psychopy/hardware/spatial/__init__.py +231 -0
- psychopy/hardware/speaker.py +298 -36
- psychopy/hardware/triggerbox/__init__.py +1 -1
- psychopy/hardware/triggerbox/base.py +1 -1
- psychopy/hardware/triggerbox/parallel.py +1 -1
- psychopy/info.py +1 -1
- psychopy/iohub/devices/eyetracker/__init__.py +10 -18
- psychopy/iohub/devices/eyetracker/calibration/procedure.py +15 -33
- psychopy/iohub/devices/eyetracker/hw/gazepoint/__init__.py +2 -2
- psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/__init__.py +1 -0
- psychopy/iohub/devices/eyetracker/hw/gazepoint/gp3/eyetracker.py +10 -0
- psychopy/iohub/devices/eyetracker/hw/pupil_labs/neon/__init__.py +1 -0
- psychopy/iohub/devices/mouse/linux2.py +2 -1
- psychopy/layout.py +1 -1
- psychopy/liaison.py +91 -39
- psychopy/locale_setup.py +11 -1
- psychopy/localization/__init__.py +1 -1
- psychopy/localization/_localization.py +1 -1
- psychopy/localization/messages.pot +2 -2
- psychopy/logging.py +14 -12
- psychopy/microphone.py +4 -3
- psychopy/misc.py +1 -1
- psychopy/monitors/MonitorCenter.py +3 -3
- psychopy/monitors/__init__.py +1 -1
- psychopy/monitors/calibData.py +1 -1
- psychopy/monitors/calibTools.py +3 -2
- psychopy/platform_specific/__init__.py +1 -1
- psychopy/platform_specific/darwin.py +1 -1
- psychopy/platform_specific/linux.py +1 -1
- psychopy/platform_specific/win32.py +1 -1
- psychopy/plugins/__init__.py +26 -17
- psychopy/plugins/util.py +65 -0
- psychopy/preferences/Darwin.spec +11 -3
- psychopy/preferences/FreeBSD.spec +11 -3
- psychopy/preferences/Linux.spec +11 -3
- psychopy/preferences/Windows.spec +11 -3
- psychopy/preferences/__init__.py +1 -1
- psychopy/preferences/baseNoArch.spec +11 -3
- psychopy/preferences/hints.py +78 -61
- psychopy/preferences/preferences.py +82 -13
- psychopy/projects/__init__.py +1 -1
- psychopy/projects/pavlovia.py +29 -13
- psychopy/scripts/psyexpCompile.py +1 -1
- psychopy/session.py +81 -8
- psychopy/sound/__init__.py +25 -10
- psychopy/sound/_base.py +134 -34
- psychopy/sound/audioclip.py +38 -15
- psychopy/sound/audiodevice.py +1 -1
- psychopy/sound/backend_ptb.py +53 -321
- psychopy/sound/backend_pygame.py +7 -3
- psychopy/sound/backend_pyo.py +53 -22
- psychopy/sound/backend_pysound.py +10 -27
- psychopy/sound/backend_sounddevice.py +33 -21
- psychopy/sound/exceptions.py +1 -1
- psychopy/sound/microphone.py +83 -5
- psychopy/sound/transcribe.py +3 -3
- psychopy/tests/data/test_basic_run.py +1 -0
- psychopy/tests/data/test_sounds/default_16000.wav +0 -0
- psychopy/tests/data/test_sounds/default_192000.wav +0 -0
- psychopy/tests/data/test_sounds/default_22050.wav +0 -0
- psychopy/tests/data/test_sounds/default_32000.wav +0 -0
- psychopy/tests/data/test_sounds/default_44100.wav +0 -0
- psychopy/tests/data/test_sounds/default_48000.wav +0 -0
- psychopy/tests/data/test_sounds/default_8000.wav +0 -0
- psychopy/tests/data/test_sounds/default_96000.wav +0 -0
- psychopy/tests/test_alerts/test_alerttools.py +2 -1
- psychopy/tests/test_app/test_command_line.py +65 -0
- psychopy/tests/test_data/test_TrialHandler2.py +18 -7
- psychopy/tests/test_demos/test_builder_demos.py +1 -1
- psychopy/tests/test_experiment/needs_wx/componsTemplate.txt +5238 -4188
- psychopy/tests/test_experiment/needs_wx/test_components.py +1 -1
- psychopy/tests/test_experiment/test_components/test_RoutineSettingsComponent.py +16 -0
- psychopy/tests/test_experiment/test_components/test_all_components.py +1 -1
- psychopy/tests/test_experiment/test_components/test_base_components.py +26 -17
- psychopy/tests/test_experiment/test_loops.py +12 -4
- psychopy/tests/test_experiment/test_params.py +17 -4
- psychopy/tests/test_experiment/test_routines/test_PhotodiodeValidationRoutine.py +2 -2
- psychopy/tests/test_hardware/test_photodiode.py +66 -0
- psychopy/tests/test_liaison/test_Liaison.py +4 -4
- psychopy/tests/test_misc/test_clock.py +2 -0
- psychopy/tests/test_misc/test_color.py +2 -0
- psychopy/tests/test_misc/test_event.py +1 -0
- psychopy/tests/test_plugins/__init__.py +0 -0
- psychopy/tests/test_plugins/test_plugin_stubs.py +125 -0
- psychopy/tests/test_sound/test_sound.py +111 -40
- psychopy/tests/test_tools/test_colorspacetools.py +24 -23
- psychopy/tests/test_tools/test_mathtools.py +9 -9
- psychopy/tests/test_tools/test_viewtools.py +101 -0
- psychopy/tests/test_validators/__init__.py +0 -0
- psychopy/tests/test_validators/test_voicekeyValidator.py +95 -0
- psychopy/tests/test_visual/test_all_stimuli.py +2 -2
- psychopy/tests/test_visual/test_basevisual.py +37 -7
- psychopy/tests/test_visual/test_button.py +2 -2
- psychopy/tests/test_visual/test_circle.py +10 -2
- psychopy/tests/test_visual/test_dots.py +1 -1
- psychopy/tests/test_visual/test_form.py +13 -13
- psychopy/tests/test_visual/test_gamma.py +3 -3
- psychopy/tests/test_visual/test_image.py +2 -2
- psychopy/tests/test_visual/test_progress.py +2 -2
- psychopy/tests/test_visual/test_roi.py +8 -2
- psychopy/tests/test_visual/test_shape.py +2 -2
- psychopy/tests/test_visual/test_slider.py +2 -2
- psychopy/tests/test_visual/test_target.py +2 -2
- psychopy/tests/test_visual/test_textbox.py +6 -8
- psychopy/tests/test_visual/test_winScalePos.py +6 -5
- psychopy/tests/test_visual/test_window.py +17 -0
- psychopy/tests/utils.py +51 -1
- psychopy/tools/__init__.py +1 -1
- psychopy/tools/arraytools.py +2 -2
- psychopy/tools/attributetools.py +52 -1
- psychopy/tools/audiotools.py +4 -1
- psychopy/tools/colorspacetools.py +6 -4
- psychopy/tools/coordinatetools.py +1 -1
- psychopy/tools/fileerrortools.py +21 -9
- psychopy/tools/filetools.py +2 -2
- psychopy/tools/fontmanager.py +47 -28
- psychopy/tools/gltools.py +2967 -559
- psychopy/tools/imagetools.py +1 -1
- psychopy/tools/mathtools.py +997 -127
- psychopy/tools/monitorunittools.py +7 -1
- psychopy/tools/movietools.py +1 -2
- psychopy/tools/pkgtools.py +157 -127
- psychopy/tools/plottools.py +1 -1
- psychopy/tools/rifttools.py +1 -1
- psychopy/tools/stereotools.py +1 -1
- psychopy/tools/stimulustools.py +172 -2
- psychopy/tools/stringtools.py +22 -2
- psychopy/tools/systemtools.py +1 -1
- psychopy/tools/typetools.py +1 -1
- psychopy/tools/unittools.py +1 -1
- psychopy/tools/versionchooser.py +3 -1
- psychopy/tools/viewtools.py +54 -70
- psychopy/tools/wizard.py +2 -2
- psychopy/validation/__init__.py +6 -0
- psychopy/validation/audio.py +74 -0
- psychopy/validation/visual.py +115 -0
- psychopy/visual/__init__.py +1 -4
- psychopy/visual/aperture.py +9 -6
- psychopy/visual/backends/__init__.py +1 -1
- psychopy/visual/backends/_base.py +1 -1
- psychopy/visual/backends/gamma.py +1 -1
- psychopy/visual/backends/glfwbackend.py +8 -12
- psychopy/visual/backends/pygamebackend.py +1 -1
- psychopy/visual/backends/pygletbackend.py +32 -11
- psychopy/visual/basevisual.py +93 -13
- psychopy/visual/brush.py +1 -1
- psychopy/visual/bufferimage.py +90 -10
- psychopy/visual/button.py +1 -1
- psychopy/visual/circle.py +12 -20
- psychopy/visual/custommouse.py +1 -1
- psychopy/visual/dot.py +80 -14
- psychopy/visual/elementarray.py +84 -10
- psychopy/visual/filters.py +1 -1
- psychopy/visual/form.py +43 -28
- psychopy/visual/grating.py +105 -25
- psychopy/visual/helpers.py +4 -2
- psychopy/visual/image.py +98 -20
- psychopy/visual/line.py +15 -25
- psychopy/visual/movie.py +1 -1
- psychopy/visual/movie2.py +4 -3
- psychopy/visual/movie3.py +4 -3
- psychopy/visual/movies/__init__.py +1 -1
- psychopy/visual/movies/frame.py +1 -1
- psychopy/visual/movies/metadata.py +1 -1
- psychopy/visual/movies/players/__init__.py +1 -1
- psychopy/visual/movies/players/_base.py +1 -1
- psychopy/visual/movies/players/ffpyplayer_player.py +2 -3
- psychopy/visual/nnlvs.py +9 -6
- psychopy/visual/noise.py +4 -16
- psychopy/visual/patch.py +4 -3
- psychopy/visual/pie.py +3 -14
- psychopy/visual/polygon.py +21 -28
- psychopy/visual/radial.py +4 -18
- psychopy/visual/ratingscale.py +4 -3
- psychopy/visual/rect.py +16 -25
- psychopy/visual/rift.py +8 -2
- psychopy/visual/secondorder.py +4 -16
- psychopy/visual/shaders.py +620 -286
- psychopy/visual/shape.py +281 -90
- psychopy/visual/simpleimage.py +1 -1
- psychopy/visual/slider.py +78 -25
- psychopy/visual/stim3d.py +5 -608
- psychopy/visual/text.py +13 -3
- psychopy/visual/textbox2/textbox2.py +188 -56
- psychopy/visual/vlcmoviestim.py +1 -1
- psychopy/visual/window.py +374 -201
- psychopy/web.py +1 -1
- {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/METADATA +13 -12
- {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/RECORD +647 -624
- {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/WHEEL +1 -1
- psychopy/.DS_Store +0 -0
- psychopy/__init__.py.orig +0 -65
- psychopy/app/.DS_Store +0 -0
- psychopy/app/Resources/.DS_Store +0 -0
- psychopy/app/Resources/classic/filecsv16.png +0 -0
- psychopy/app/Resources/classic/fileimage16.png +0 -0
- psychopy/app/Resources/classic/fileunknown16.png +0 -0
- psychopy/app/Resources/dark/filecsv16.png +0 -0
- psychopy/app/Resources/dark/filecsv16@2x.png +0 -0
- psychopy/app/Resources/dark/fileimage16.png +0 -0
- psychopy/app/Resources/dark/fileimage16@2x.png +0 -0
- psychopy/app/Resources/dark/fileunknown16.png +0 -0
- psychopy/app/Resources/dark/fileunknown16@2x.png +0 -0
- psychopy/app/Resources/fonts/OpenSans-Bold.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-BoldItalic.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-ExtraBold.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-Italic.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-Light.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-LightItalic.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-Regular.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-SemiBold.ttf +0 -0
- psychopy/app/Resources/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
- psychopy/app/Resources/light/filecsv16.png +0 -0
- psychopy/app/Resources/light/filecsv16@2x.png +0 -0
- psychopy/app/Resources/light/fileimage16.png +0 -0
- psychopy/app/Resources/light/fileimage16@2x.png +0 -0
- psychopy/app/Resources/light/fileunknown16.png +0 -0
- psychopy/app/Resources/light/fileunknown16@2x.png +0 -0
- psychopy/app/Resources/psychopySplash.png +0 -0
- psychopy/app/Resources/psychopySplash@2x.png +0 -0
- psychopy/app/builder/builder.py.orig +0 -3932
- psychopy/app/builder/dialogs/__init__.py.orig +0 -1679
- psychopy/app/builder/dialogs/paramCtrls.py.orig +0 -713
- psychopy/app/colorpicker/__init__.py.orig +0 -411
- psychopy/app/locale/ar_001/.DS_Store +0 -0
- psychopy/app/locale/ar_001/LC_MESSAGE/.DS_Store +0 -0
- psychopy/core.py.orig +0 -169
- psychopy/demos/builder/.DS_Store +0 -0
- psychopy/demos/builder/Design Templates/randomisedBlocks/randomisedBlocks_lastrun.py +0 -330
- psychopy/demos/builder/Experiments/.DS_Store +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/archived_conditions.xlsx +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/draw grid stim.py +0 -61
- psychopy/demos/builder/Experiments/dragAndDrop/shapeMaker.psyexp +0 -91
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_1.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_10.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_2.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_3.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_4.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_5.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_6.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_7.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_8.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/stimuli/grid_image_9.png +0 -0
- psychopy/demos/builder/Experiments/dragAndDrop/updated_conditions.xlsx +0 -0
- psychopy/demos/builder/Tools/.DS_Store +0 -0
- psychopy/demos/builder/Tools/gammaCalibration/.DS_Store +0 -0
- psychopy/demos/builder/Tools/gammaCalibration/data/.DS_Store +0 -0
- psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.csv +0 -38
- psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.log +0 -3418
- psychopy/demos/builder/Tools/gammaCalibration/data/_gamma_correction_visual_2022-05-18_14h18.29.439.psydat +0 -0
- psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.csv +0 -2
- psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.log +0 -15
- psychopy/demos/builder/Tools/gammaCalibration/data/x1_gamma_correction_visual_2022-05-17_13h59.42.928.psydat +0 -0
- psychopy/demos/builder/Tools/gammaCalibration/gamma_correction_visual_lastrun.py +0 -562
- psychopy/demos/coder/.DS_Store +0 -0
- psychopy/demos/coder/experiment control/info_gamma.pickle +0 -0
- psychopy/demos/coder/iohub/.iohpid +0 -1
- psychopy/demos/coder/iohub/eyetracking/.iohpid +0 -1
- psychopy/demos/coder/iohub/wintab/.DS_Store +0 -0
- psychopy/demos/coder/stimuli/.DS_Store +0 -0
- psychopy/experiment/_experiment.py.orig +0 -1032
- psychopy/experiment/components/.DS_Store +0 -0
- psychopy/experiment/components/_base.py.orig +0 -823
- psychopy/experiment/components/form/.DS_Store +0 -0
- psychopy/experiment/components/microphone/__init__.py.orig +0 -490
- psychopy/experiment/components/settings/__init__.py.orig +0 -1337
- psychopy/experiment/components/textbox/__init__.py.orig +0 -310
- psychopy/experiment/components/webcam/.DS_Store +0 -0
- psychopy/experiment/components/webcam/light/.DS_Store +0 -0
- psychopy/experiment/loops.py.orig +0 -829
- psychopy/experiment/params.py.orig +0 -408
- psychopy/experiment/routine.py.orig +0 -503
- psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator.png +0 -0
- psychopy/experiment/routines/photodiodeValidator/classic/photodiode_validator@2x.png +0 -0
- psychopy/experiment/routines/photodiodeValidator/dark/photodiode_validator.png +0 -0
- psychopy/experiment/routines/photodiodeValidator/dark/photodiode_validator@2x.png +0 -0
- psychopy/experiment/routines/photodiodeValidator/light/photodiode_validator.png +0 -0
- psychopy/experiment/routines/photodiodeValidator/light/photodiode_validator@2x.png +0 -0
- psychopy/hardware/.DS_Store +0 -0
- psychopy/hardware/brainproducts.py.orig +0 -680
- psychopy/hardware/iolab.py.orig +0 -238
- psychopy/iohub/datastore/__init__.py.orig +0 -443
- psychopy/iohub/datastore/util.py.orig +0 -692
- psychopy/iohub/devices/mouse/darwin.py.orig +0 -427
- psychopy/iohub/devices/mouse/linux2.py.orig +0 -198
- psychopy/preferences/.DS_Store +0 -0
- psychopy/projects/pavlovia.py.orig +0 -1295
- psychopy/tests/.DS_Store +0 -0
- psychopy/tests/data/.DS_Store +0 -0
- psychopy/tests/data/TestCircle_fill_local.png +0 -0
- psychopy/tests/data/aperture1_normHexbackground_local.png +0 -0
- psychopy/tests/data/aperture1_norm_local.png +0 -0
- psychopy/tests/data/aperture2_normHexbackground_local.png +0 -0
- psychopy/tests/data/beatandrcos_height_local.png +0 -0
- psychopy/tests/data/beatandrcos_normAddBlend_local.png +0 -0
- psychopy/tests/data/beatandrcos_normHexbackground_local.png +0 -0
- psychopy/tests/data/beatandrcos_norm_local.png +0 -0
- psychopy/tests/data/beatandrcos_stencil_local.png +0 -0
- psychopy/tests/data/blend_add_height_local.png +0 -0
- psychopy/tests/data/blend_add_normAddBlend_local.png +0 -0
- psychopy/tests/data/blend_add_normHexbackground_local.png +0 -0
- psychopy/tests/data/blend_add_normNoShade_local.png +0 -0
- psychopy/tests/data/blend_add_norm_local.png +0 -0
- psychopy/tests/data/blend_add_stencil_local.png +0 -0
- psychopy/tests/data/bufferimg_gabor_height_local.png +0 -0
- psychopy/tests/data/bufferimg_gabor_normAddBlend_local.png +0 -0
- psychopy/tests/data/bufferimg_gabor_normHexbackground_local.png +0 -0
- psychopy/tests/data/bufferimg_gabor_normNoShade_local.png +0 -0
- psychopy/tests/data/bufferimg_gabor_norm_local.png +0 -0
- psychopy/tests/data/bufferimg_gabor_stencil_local.png +0 -0
- psychopy/tests/data/circleHex_height_local.png +0 -0
- psychopy/tests/data/circleHex_normAddBlend_local.png +0 -0
- psychopy/tests/data/circleHex_normHexbackground_local.png +0 -0
- psychopy/tests/data/circleHex_normNoShade_local.png +0 -0
- psychopy/tests/data/circleHex_norm_local.png +0 -0
- psychopy/tests/data/circleHex_stencil_local.png +0 -0
- psychopy/tests/data/color_comparison_local.png +0 -0
- psychopy/tests/data/correctScript/.DS_Store +0 -0
- psychopy/tests/data/dots_height_local.png +0 -0
- psychopy/tests/data/dots_normAddBlend_local.png +0 -0
- psychopy/tests/data/dots_normHexbackground_local.png +0 -0
- psychopy/tests/data/dots_normNoShade_local.png +0 -0
- psychopy/tests/data/dots_norm_local.png +0 -0
- psychopy/tests/data/dots_stencil_local.png +0 -0
- psychopy/tests/data/elarray1_height_local.png +0 -0
- psychopy/tests/data/elarray1_normAddBlend_local.png +0 -0
- psychopy/tests/data/elarray1_normHexbackground_local.png +0 -0
- psychopy/tests/data/elarray1_norm_local.png +0 -0
- psychopy/tests/data/elarray1_stencil_local.png +0 -0
- psychopy/tests/data/envelopeandrcos_height_local.png +0 -0
- psychopy/tests/data/envelopeandrcos_normAddBlend_local.png +0 -0
- psychopy/tests/data/envelopeandrcos_normHexbackground_local.png +0 -0
- psychopy/tests/data/envelopeandrcos_norm_local.png +0 -0
- psychopy/tests/data/envelopeandrcos_stencil_local.png +0 -0
- psychopy/tests/data/envelopepowerandrcos_height_local.png +0 -0
- psychopy/tests/data/envelopepowerandrcos_normAddBlend_local.png +0 -0
- psychopy/tests/data/envelopepowerandrcos_normHexbackground_local.png +0 -0
- psychopy/tests/data/envelopepowerandrcos_norm_local.png +0 -0
- psychopy/tests/data/envelopepowerandrcos_stencil_local.png +0 -0
- psychopy/tests/data/gabor1_height_local.png +0 -0
- psychopy/tests/data/gabor1_normAddBlend_local.png +0 -0
- psychopy/tests/data/gabor1_normHexbackground_local.png +0 -0
- psychopy/tests/data/gabor1_normNoShade_local.png +0 -0
- psychopy/tests/data/gabor1_norm_local.png +0 -0
- psychopy/tests/data/gabor1_stencil_local.png +0 -0
- psychopy/tests/data/greyscale_normHexbackground_local.png +0 -0
- psychopy/tests/data/imageAndGauss_height_local.png +0 -0
- psychopy/tests/data/imageAndGauss_normAddBlend_local.png +0 -0
- psychopy/tests/data/imageAndGauss_normHexbackground_local.png +0 -0
- psychopy/tests/data/imageAndGauss_normNoShade_local.png +0 -0
- psychopy/tests/data/imageAndGauss_norm_local.png +0 -0
- psychopy/tests/data/imageAndGauss_stencil_local.png +0 -0
- psychopy/tests/data/movFrame1_stencil_local.png +0 -0
- psychopy/tests/data/noiseAndRcos_height_local.png +0 -0
- psychopy/tests/data/noiseAndRcos_normAddBlend_local.png +0 -0
- psychopy/tests/data/noiseAndRcos_normHexbackground_local.png +0 -0
- psychopy/tests/data/noiseAndRcos_normNoShade_local.png +0 -0
- psychopy/tests/data/noiseAndRcos_norm_local.png +0 -0
- psychopy/tests/data/noiseAndRcos_stencil_local.png +0 -0
- psychopy/tests/data/noiseFiltersAndRcos_height_local.png +0 -0
- psychopy/tests/data/noiseFiltersAndRcos_normAddBlend_local.png +0 -0
- psychopy/tests/data/noiseFiltersAndRcos_normHexbackground_local.png +0 -0
- psychopy/tests/data/noiseFiltersAndRcos_normNoShade_local.png +0 -0
- psychopy/tests/data/noiseFiltersAndRcos_norm_local.png +0 -0
- psychopy/tests/data/noiseFiltersAndRcos_stencil_local.png +0 -0
- psychopy/tests/data/numpyImage_height_local.png +0 -0
- psychopy/tests/data/numpyImage_normAddBlend_local.png +0 -0
- psychopy/tests/data/numpyImage_normHexbackground_local.png +0 -0
- psychopy/tests/data/numpyImage_normNoShade_local.png +0 -0
- psychopy/tests/data/numpyImage_norm_local.png +0 -0
- psychopy/tests/data/numpyImage_stencil_local.png +0 -0
- psychopy/tests/data/shape2_1_normAddBlend_local.png +0 -0
- psychopy/tests/data/shape2_1_normHexbackground_local.png +0 -0
- psychopy/tests/data/shape2_1_normNoShade_local.png +0 -0
- psychopy/tests/data/shape2_1_norm_local.png +0 -0
- psychopy/tests/data/shape2_1_stencil_local.png +0 -0
- psychopy/tests/data/text1_height_local.png +0 -0
- psychopy/tests/data/text1_normAddBlend_local.png +0 -0
- psychopy/tests/data/text1_normHexbackground_local.png +0 -0
- psychopy/tests/data/text1_norm_local.png +0 -0
- psychopy/tests/data/text1_stencil_local.png +0 -0
- psychopy/tests/data/wedge1_height_local.png +0 -0
- psychopy/tests/data/wedge1_normAddBlend_local.png +0 -0
- psychopy/tests/data/wedge1_normHexbackground_local.png +0 -0
- psychopy/tests/data/wedge1_normNoShade_local.png +0 -0
- psychopy/tests/data/wedge1_norm_local.png +0 -0
- psychopy/tests/data/wedge1_stencil_local.png +0 -0
- psychopy/tests/test_app/.DS_Store +0 -0
- psychopy/tests/test_app/test_builder/.DS_Store +0 -0
- psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.log +0 -177
- psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.psydat +0 -0
- psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1206.xlsx +0 -0
- psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.log +0 -168
- psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.psydat +0 -0
- psychopy/tests/test_app/test_builder/data/_2021_ 5_03_1324.xlsx +0 -0
- psychopy/tests/test_data/.DS_Store +0 -0
- psychopy/tests/test_hardware/test_CRS_BitsSharp.py +0 -67
- psychopy/tests/test_hardware/test_CRS_BitsSharp.py.orig +0 -68
- psychopy/tests/test_hardware/test_CRS_bitsShaders.py +0 -110
- psychopy/tests/test_visual/test_image.py.orig +0 -219
- psychopy/visual/basevisual.py.orig +0 -1723
- psychopy/visual/form.py.orig +0 -1181
- psychopy/visual/text.py.orig +0 -752
- psychopy/visual/textbox2/textbox2.py.orig +0 -1315
- psychopy/visual/windowwarp.py.orig +0 -463
- /psychopy/{app/cortex.log → alerts/alertsCatalogue/3600.yaml} +0 -0
- /psychopy/{app/Resources → assets}/fonts/Arvo-Bold.ttf +0 -0
- /psychopy/{app/Resources → assets}/fonts/Arvo-BoldItalic.ttf +0 -0
- /psychopy/{app/Resources → assets}/fonts/Arvo-Italic.ttf +0 -0
- /psychopy/{app/Resources → assets}/fonts/Arvo-Regular.ttf +0 -0
- /psychopy/{app/Resources → assets}/fonts/DejaVuSerif.ttf +0 -0
- /psychopy/{app/Resources → assets}/fonts/IndieFlower-Regular.ttf +0 -0
- /psychopy/{app/Resources → assets}/fonts/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
- /psychopy/{app/Resources → assets}/fonts/JetBrainsMono-VariableFont_wght.ttf +0 -0
- /psychopy/demos/builder/Experiments/{GoNoGo → goNoGo}/readme.md +0 -0
- {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/entry_points.txt +0 -0
- {psychopy-2024.2.5.dist-info → psychopy-2025.1.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,411 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""Classes for the color picker."""
|
|
3
|
-
|
|
4
|
-
# Part of the PsychoPy library
|
|
5
|
-
# Copyright (C) 2002-2018 Jonathan Peirce (C) 2019 Open Science Tools Ltd.
|
|
6
|
-
# Distributed under the terms of the GNU General Public License (GPL).
|
|
7
|
-
|
|
8
|
-
import wx
|
|
9
|
-
from .panels import ColorPresets, ColorPreview
|
|
10
|
-
from .pages import ColorPickerPageHSV, ColorPickerPageRGB
|
|
11
|
-
from psychopy.colors import Color
|
|
12
|
-
|
|
13
|
-
LAST_COLOR = Color((0, 0, 0, 1), space='rgba')
|
|
14
|
-
LAST_OUTPUT_SPACE = 0
|
|
15
|
-
|
|
16
|
-
from psychopy.localization import _translate
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class PsychoColorPicker(wx.Dialog):
|
|
20
|
-
"""Class for the color picker dialog.
|
|
21
|
-
|
|
22
|
-
This dialog is used to standardize color selection across platforms. It also
|
|
23
|
-
supports PsychoPy's RGB representation directly.
|
|
24
|
-
|
|
25
|
-
Parameters
|
|
26
|
-
----------
|
|
27
|
-
parent : object
|
|
28
|
-
Reference to a :class:`~wx.Frame` which owns this dialog.
|
|
29
|
-
|
|
30
|
-
"""
|
|
31
|
-
def __init__(self, parent):
|
|
32
|
-
<<<<<<< HEAD
|
|
33
|
-
wx.Dialog.__init__(
|
|
34
|
-
self,
|
|
35
|
-
parent,
|
|
36
|
-
id=wx.ID_ANY,
|
|
37
|
-
title=u"Color Picker",
|
|
38
|
-
pos=wx.DefaultPosition,
|
|
39
|
-
size=wx.Size(640, 480),
|
|
40
|
-
style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER)
|
|
41
|
-
|
|
42
|
-
self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
|
|
43
|
-
self.SetMinSize(wx.Size(600, 480))
|
|
44
|
-
|
|
45
|
-
# current output color, should be displayed in the preview
|
|
46
|
-
global LAST_COLOR
|
|
47
|
-
self._color = LAST_COLOR.copy()
|
|
48
|
-
|
|
49
|
-
# output spaces mapped to the `cboOutputSpace` object
|
|
50
|
-
self._spaces = {
|
|
51
|
-
0: 'rgba',
|
|
52
|
-
1: 'rgb',
|
|
53
|
-
2: 'rgba1',
|
|
54
|
-
3: 'rgb1',
|
|
55
|
-
4: 'rgba255',
|
|
56
|
-
5: 'rgb255',
|
|
57
|
-
6: 'hex',
|
|
58
|
-
7: 'hsva',
|
|
59
|
-
8: 'hsv'
|
|
60
|
-
}
|
|
61
|
-
# what to show in the output selection, maps to the spaces above
|
|
62
|
-
self._outputChoices = [
|
|
63
|
-
u'PsychoPy RGBA (rgba)',
|
|
64
|
-
u'PsychoPy RGB (rgb)',
|
|
65
|
-
u'Normalized RGBA (rgba1)',
|
|
66
|
-
u'Normalized RGB (rgb1)',
|
|
67
|
-
u'8-bit RGBA (rgba255)',
|
|
68
|
-
u'8-bit RGBA (rgb255)',
|
|
69
|
-
u'Hex/HTML (hex)',
|
|
70
|
-
u'Hue-Saturation-Value-Alpha (hsva)',
|
|
71
|
-
u'Hue-Saturation-Value (hsv)'
|
|
72
|
-
]
|
|
73
|
-
|
|
74
|
-
# initialize the window controls
|
|
75
|
-
self._setupUI()
|
|
76
|
-
=======
|
|
77
|
-
wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=_translate("Color Picker"), pos=wx.DefaultPosition,
|
|
78
|
-
style=wx.DEFAULT_DIALOG_STYLE)
|
|
79
|
-
# Set main params
|
|
80
|
-
self.color = Color((0,0,0,1), 'rgba')
|
|
81
|
-
self.sizer = wx.GridBagSizer()
|
|
82
|
-
# Add colourful top bar
|
|
83
|
-
self.preview = ColorPreview(color=self.color, parent=self)
|
|
84
|
-
self.sizer.Add(self.preview, pos=(0,0), span=wx.GBSpan(2,1), border=5, flag=wx.RIGHT | wx.EXPAND)
|
|
85
|
-
# Add notebook of controls
|
|
86
|
-
self.ctrls = aui.AuiNotebook(self, wx.ID_ANY, size=wx.Size(400, 400), agwStyle=0)
|
|
87
|
-
self.sizer.Add(self.ctrls, pos=(0,1), border=5, flag=wx.ALL)
|
|
88
|
-
self.ctrls.AddPage(ColorPage(self.ctrls, self, 'rgba'), 'RGB (-1 to 1)')
|
|
89
|
-
self.ctrls.AddPage(ColorPage(self.ctrls, self, 'rgba1'), 'RGB (0 to 1)')
|
|
90
|
-
self.ctrls.AddPage(ColorPage(self.ctrls, self, 'rgba255'), 'RGB (0 to 255)')
|
|
91
|
-
self.ctrls.AddPage(ColorPage(self.ctrls, self, 'hsva'), 'HSV')
|
|
92
|
-
self.ctrls.AddPage(ColorPage(self.ctrls, self, 'hex'), 'Hex')
|
|
93
|
-
# Add array of named colours
|
|
94
|
-
self.presets = ColorPresets(parent=self)
|
|
95
|
-
self.sizer.Add(self.presets, pos=(0,2), border=5, flag=wx.ALL)
|
|
96
|
-
# Add buttons
|
|
97
|
-
self.buttons = wx.BoxSizer(wx.HORIZONTAL)
|
|
98
|
-
self.closeButton = wx.Button(self, label=_translate("Close"))
|
|
99
|
-
self.closeButton.Bind(wx.EVT_BUTTON, self.Close)
|
|
100
|
-
self.buttons.Add(self.closeButton, border=5, flag=wx.ALL)
|
|
101
|
-
# Add insert buttons
|
|
102
|
-
# self.insertValueButton = wx.Button(self, label="Insert As Value")
|
|
103
|
-
# self.insertValueButton.Bind(wx.EVT_BUTTON, self.insertValue)
|
|
104
|
-
# self.buttons.Add(self.insertValueButton, border=5, flag=wx.ALL)
|
|
105
|
-
# self.insertObjectButton = wx.Button(self, label="Insert As Object")
|
|
106
|
-
# self.insertObjectButton.Bind(wx.EVT_BUTTON, self.insertObject)
|
|
107
|
-
# self.buttons.Add(self.insertObjectButton, border=5, flag=wx.ALL)
|
|
108
|
-
# Add copy buttons
|
|
109
|
-
self.copyValueButton = wx.Button(self, label=_translate("Copy As Value"))
|
|
110
|
-
self.copyValueButton.Bind(wx.EVT_BUTTON, self.copyValue)
|
|
111
|
-
self.buttons.Add(self.copyValueButton, border=5, flag=wx.ALL)
|
|
112
|
-
self.copyObjectButton = wx.Button(self, label=_translate("Copy As Object"))
|
|
113
|
-
self.copyObjectButton.Bind(wx.EVT_BUTTON, self.copyObject)
|
|
114
|
-
self.buttons.Add(self.copyObjectButton, border=5, flag=wx.ALL)
|
|
115
|
-
|
|
116
|
-
self.sizer.Add(self.buttons, pos=(1,1), span=wx.GBSpan(1,2), border=5, flag=wx.ALL | wx.ALIGN_RIGHT)
|
|
117
|
-
|
|
118
|
-
# Configure sizer
|
|
119
|
-
self.sizer.AddGrowableRow(0)
|
|
120
|
-
self.sizer.AddGrowableCol(1)
|
|
121
|
-
self.SetSizerAndFit(self.sizer)
|
|
122
|
-
self._applyAppTheme()
|
|
123
|
-
self._applyAppTheme(self.ctrls)
|
|
124
|
-
>>>>>>> hsogo/feature-localization
|
|
125
|
-
|
|
126
|
-
@property
|
|
127
|
-
def color(self):
|
|
128
|
-
"""Current color the user has specified. Should be reflected in the
|
|
129
|
-
preview area. Value has type :class:`psychopy.colors.Color`.
|
|
130
|
-
|
|
131
|
-
This is the primary setter for the dialog's color value. It will
|
|
132
|
-
automatically update all color space pages to reflect this color value.
|
|
133
|
-
Pages should absolutely not attempt to set other page's values directly
|
|
134
|
-
or risk blowing up the call stack.
|
|
135
|
-
|
|
136
|
-
"""
|
|
137
|
-
return self._color
|
|
138
|
-
|
|
139
|
-
@color.setter
|
|
140
|
-
def color(self, value):
|
|
141
|
-
if value is None:
|
|
142
|
-
value = Color('none', space='named')
|
|
143
|
-
|
|
144
|
-
global LAST_COLOR
|
|
145
|
-
self.pnlColorPreview.color = self._color = value
|
|
146
|
-
LAST_COLOR = self._color.copy()
|
|
147
|
-
self._updateColorSpacePage()
|
|
148
|
-
|
|
149
|
-
def _updateColorSpacePage(self):
|
|
150
|
-
"""Update the current colorspace page to reflect the current color being
|
|
151
|
-
specified by the dialog. Called only on the current page or when the
|
|
152
|
-
page has been changed. Pointless to update all pages at once.
|
|
153
|
-
|
|
154
|
-
"""
|
|
155
|
-
page = self.nbColorSpaces.GetCurrentPage()
|
|
156
|
-
|
|
157
|
-
if hasattr(page, 'updateChannels'):
|
|
158
|
-
page.updateChannels()
|
|
159
|
-
|
|
160
|
-
if hasattr(page, 'updateHex'):
|
|
161
|
-
page.updateHex()
|
|
162
|
-
|
|
163
|
-
def _addColorSpacePages(self):
|
|
164
|
-
"""Add pages for each supported color space.
|
|
165
|
-
|
|
166
|
-
In the future this will be modified to support plugging in additional
|
|
167
|
-
color spaces. Right now the pages are hard-coded in.
|
|
168
|
-
|
|
169
|
-
"""
|
|
170
|
-
self.pnlRGB = ColorPickerPageRGB(self.nbColorSpaces)
|
|
171
|
-
self.pnlHSV = ColorPickerPageHSV(self.nbColorSpaces)
|
|
172
|
-
|
|
173
|
-
self.nbColorSpaces.AddPage(self.pnlRGB, u"RGB", True)
|
|
174
|
-
self.nbColorSpaces.AddPage(self.pnlHSV, u"HSV/HSB", False)
|
|
175
|
-
|
|
176
|
-
def _setupUI(self):
|
|
177
|
-
"""Setup the UI for the color picker dialog box.
|
|
178
|
-
|
|
179
|
-
"""
|
|
180
|
-
szrMain = wx.BoxSizer(wx.VERTICAL)
|
|
181
|
-
|
|
182
|
-
# Color area panel. Shows the preview, colorspace pages and presets
|
|
183
|
-
# panels at the top portion of the dialog.
|
|
184
|
-
#
|
|
185
|
-
self.pnlColorArea = wx.Panel(
|
|
186
|
-
self,
|
|
187
|
-
wx.ID_ANY,
|
|
188
|
-
wx.DefaultPosition,
|
|
189
|
-
wx.DefaultSize,
|
|
190
|
-
wx.TAB_TRAVERSAL)
|
|
191
|
-
|
|
192
|
-
szrColorArea = wx.BoxSizer(wx.HORIZONTAL)
|
|
193
|
-
|
|
194
|
-
# color preview panel
|
|
195
|
-
self.pnlColorPreview = ColorPreview(
|
|
196
|
-
self.pnlColorArea, self._color)
|
|
197
|
-
self.pnlColorPreview.SetMinSize(wx.Size(100, -1))
|
|
198
|
-
self.pnlColorPreview.SetMaxSize(wx.Size(100, -1))
|
|
199
|
-
|
|
200
|
-
# color space notebook area
|
|
201
|
-
self.nbColorSpaces = wx.Notebook(
|
|
202
|
-
self.pnlColorArea,
|
|
203
|
-
wx.ID_ANY,
|
|
204
|
-
wx.DefaultPosition,
|
|
205
|
-
wx.DefaultSize,
|
|
206
|
-
0)
|
|
207
|
-
|
|
208
|
-
self._addColorSpacePages() # add the pages to the notebook
|
|
209
|
-
|
|
210
|
-
# preset panel
|
|
211
|
-
self.colorPresets = ColorPresets(self.pnlColorArea)
|
|
212
|
-
self.colorPresets.SetMinSize(wx.Size(140, -1))
|
|
213
|
-
self.colorPresets.SetMaxSize(wx.Size(140, -1))
|
|
214
|
-
|
|
215
|
-
szrColorArea.Add(self.pnlColorPreview, 0, wx.EXPAND | wx.ALL, 5)
|
|
216
|
-
szrColorArea.Add(
|
|
217
|
-
self.nbColorSpaces, 1, wx.EXPAND | wx.TOP | wx.BOTTOM, 5)
|
|
218
|
-
szrColorArea.Add(self.colorPresets, 0, wx.EXPAND | wx.ALL, 5)
|
|
219
|
-
|
|
220
|
-
self.pnlColorArea.SetSizer(szrColorArea)
|
|
221
|
-
self.pnlColorArea.Layout()
|
|
222
|
-
szrColorArea.Fit(self.pnlColorArea)
|
|
223
|
-
szrMain.Add(self.pnlColorArea, 1, wx.ALL| wx.EXPAND, 5)
|
|
224
|
-
|
|
225
|
-
# line to divide the color area from the dialog controls, looks neat
|
|
226
|
-
self.stlMain = wx.StaticLine(
|
|
227
|
-
self,
|
|
228
|
-
wx.ID_ANY,
|
|
229
|
-
wx.DefaultPosition,
|
|
230
|
-
wx.DefaultSize,
|
|
231
|
-
wx.LI_HORIZONTAL)
|
|
232
|
-
|
|
233
|
-
szrMain.Add(self.stlMain, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 10)
|
|
234
|
-
|
|
235
|
-
# Dialog controls area. Shows buttons for closing the dialog or copying
|
|
236
|
-
# colors. Also shows the output format to use when copying to the
|
|
237
|
-
# clipboard.
|
|
238
|
-
#
|
|
239
|
-
szrDlgButtonArea = wx.BoxSizer(wx.VERTICAL)
|
|
240
|
-
szrDlgCtrls = wx.FlexGridSizer(1, 5, 0, 5)
|
|
241
|
-
szrDlgCtrls.AddGrowableCol(1)
|
|
242
|
-
szrDlgCtrls.SetFlexibleDirection(wx.BOTH)
|
|
243
|
-
szrDlgCtrls.SetNonFlexibleGrowMode(wx.FLEX_GROWMODE_SPECIFIED)
|
|
244
|
-
|
|
245
|
-
self.lblResult = wx.StaticText(
|
|
246
|
-
self,
|
|
247
|
-
wx.ID_ANY,
|
|
248
|
-
u"Output Space:",
|
|
249
|
-
wx.DefaultPosition,
|
|
250
|
-
wx.DefaultSize,
|
|
251
|
-
0)
|
|
252
|
-
self.lblResult.Wrap(-1)
|
|
253
|
-
|
|
254
|
-
szrDlgCtrls.Add(
|
|
255
|
-
self.lblResult,
|
|
256
|
-
0,
|
|
257
|
-
wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL,
|
|
258
|
-
5)
|
|
259
|
-
|
|
260
|
-
self.cboOutputSpace = wx.Choice(
|
|
261
|
-
self,
|
|
262
|
-
wx.ID_ANY,
|
|
263
|
-
wx.DefaultPosition,
|
|
264
|
-
wx.DefaultSize,
|
|
265
|
-
choices=self._outputChoices)
|
|
266
|
-
self.cboOutputSpace.SetSelection(LAST_OUTPUT_SPACE)
|
|
267
|
-
|
|
268
|
-
szrDlgCtrls.Add(self.cboOutputSpace, 1, wx.ALIGN_CENTER_VERTICAL, 5)
|
|
269
|
-
|
|
270
|
-
self.cmdCopyObject = wx.Button(
|
|
271
|
-
self, wx.ID_ANY, u"Copy as &Object", wx.DefaultPosition,
|
|
272
|
-
wx.DefaultSize, 0)
|
|
273
|
-
self.cmdCopy = wx.Button(
|
|
274
|
-
self, wx.ID_ANY, u"Copy as &Value", wx.DefaultPosition,
|
|
275
|
-
wx.DefaultSize, 0)
|
|
276
|
-
self.cmdClose = wx.Button(
|
|
277
|
-
self, wx.ID_ANY, u"&Cancel", wx.DefaultPosition, wx.DefaultSize, 0)
|
|
278
|
-
|
|
279
|
-
self.cmdCopyObject.SetToolTip(
|
|
280
|
-
u"Copy as a `psychopy.colors.Color` object.")
|
|
281
|
-
self.cmdCopy.SetToolTip(
|
|
282
|
-
u"Copy as a value (tuple).")
|
|
283
|
-
|
|
284
|
-
szrDlgCtrls.Add(self.cmdCopyObject, 0, wx.EXPAND, 5)
|
|
285
|
-
szrDlgCtrls.Add(self.cmdCopy, 0, wx.EXPAND, 5)
|
|
286
|
-
szrDlgCtrls.Add(self.cmdClose, 0, wx.EXPAND, 5)
|
|
287
|
-
|
|
288
|
-
szrDlgButtonArea.Add(szrDlgCtrls, 1, wx.ALL | wx.EXPAND, 5)
|
|
289
|
-
|
|
290
|
-
szrMain.Add(szrDlgButtonArea, 0, wx.EXPAND | wx.ALL, 5)
|
|
291
|
-
|
|
292
|
-
self.SetSizer(szrMain)
|
|
293
|
-
self.Layout()
|
|
294
|
-
|
|
295
|
-
self.Centre(wx.BOTH)
|
|
296
|
-
|
|
297
|
-
# Connect Events
|
|
298
|
-
self.nbColorSpaces.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.onPageChanged)
|
|
299
|
-
self.cmdCopyObject.Bind(wx.EVT_BUTTON, self.onCopyObject)
|
|
300
|
-
self.cmdCopy.Bind(wx.EVT_BUTTON, self.onCopyValue)
|
|
301
|
-
self.cboOutputSpace.Bind(
|
|
302
|
-
wx.EVT_CHOICE, self.onOutputSpaceChanged)
|
|
303
|
-
self.cmdClose.Bind(wx.EVT_BUTTON, self.onClose)
|
|
304
|
-
|
|
305
|
-
def _copyToClipboard(self, text):
|
|
306
|
-
"""Copy text to the clipboard.
|
|
307
|
-
|
|
308
|
-
Shows an error dialog if the clipboard cannot be opened to inform the
|
|
309
|
-
user the values have not been copied.
|
|
310
|
-
|
|
311
|
-
Parameters
|
|
312
|
-
----------
|
|
313
|
-
text : str
|
|
314
|
-
Text to copy to the clipboard.
|
|
315
|
-
|
|
316
|
-
"""
|
|
317
|
-
# copy the value to the clipboard
|
|
318
|
-
if wx.TheClipboard.Open():
|
|
319
|
-
wx.TheClipboard.SetData(wx.TextDataObject(str(text)))
|
|
320
|
-
wx.TheClipboard.Close()
|
|
321
|
-
else:
|
|
322
|
-
# Raised if the clipboard fails to open, warns the user the value
|
|
323
|
-
# wasn't copied.
|
|
324
|
-
errDlg = wx.MessageDialog(
|
|
325
|
-
self,
|
|
326
|
-
'Failed to open the clipboard, output value not copied.',
|
|
327
|
-
'Clipboard Error',
|
|
328
|
-
wx.OK | wx.ICON_ERROR)
|
|
329
|
-
errDlg.ShowModal()
|
|
330
|
-
errDlg.Destroy()
|
|
331
|
-
|
|
332
|
-
def getOutputValue(self):
|
|
333
|
-
"""Get the string value using the specified output format.
|
|
334
|
-
|
|
335
|
-
Returns
|
|
336
|
-
-------
|
|
337
|
-
str
|
|
338
|
-
Color value using the current output format.
|
|
339
|
-
|
|
340
|
-
"""
|
|
341
|
-
outputSpace = self.cboOutputSpace.GetSelection()
|
|
342
|
-
dlgCol = self.GetTopLevelParent().color
|
|
343
|
-
if outputSpace == 0: # RGBA
|
|
344
|
-
colorOut = '({:.4f}, {:.4f}, {:.4f}, {:.4f})'.format(*dlgCol.rgba)
|
|
345
|
-
elif outputSpace == 1: # RGB
|
|
346
|
-
colorOut = '({:.4f}, {:.4f}, {:.4f})'.format(*dlgCol.rgb)
|
|
347
|
-
elif outputSpace == 2: # RGBA1
|
|
348
|
-
colorOut = '({:.4f}, {:.4f}, {:.4f}, {:.4f})'.format(*dlgCol.rgba1)
|
|
349
|
-
elif outputSpace == 3: # RGB1
|
|
350
|
-
colorOut = '({:.4f}, {:.4f}, {:.4f})'.format(*dlgCol.rgb1)
|
|
351
|
-
elif outputSpace == 4: # RGBA255
|
|
352
|
-
colorOut = '({:d}, {:d}, {:d}, {:d})'.format(
|
|
353
|
-
*[int(i) for i in dlgCol.rgba255])
|
|
354
|
-
elif outputSpace == 5: # RGB255
|
|
355
|
-
colorOut = '({:d}, {:d}, {:d})'.format(
|
|
356
|
-
*[int(i) for i in dlgCol.rgb255])
|
|
357
|
-
elif outputSpace == 6: # Hex
|
|
358
|
-
colorOut = "'{}'".format(dlgCol.hex)
|
|
359
|
-
elif outputSpace == 7: # HSVA
|
|
360
|
-
colorOut = '({:.4f}, {:.4f}, {:.4f}, {:.4f})'.format(*dlgCol.hsva)
|
|
361
|
-
elif outputSpace == 8: # HSV
|
|
362
|
-
colorOut = '({:.4f}, {:.4f}, {:.4f})'.format(*dlgCol.hsv)
|
|
363
|
-
else:
|
|
364
|
-
raise ValueError(
|
|
365
|
-
"Invalid output color space selection. Have you added any "
|
|
366
|
-
"more choices to `cboOutputSpace`?")
|
|
367
|
-
|
|
368
|
-
return colorOut
|
|
369
|
-
|
|
370
|
-
def onOutputSpaceChanged(self, event):
|
|
371
|
-
"""Set when the output space choicebox is changed."""
|
|
372
|
-
global LAST_OUTPUT_SPACE
|
|
373
|
-
LAST_OUTPUT_SPACE = event.GetSelection()
|
|
374
|
-
event.Skip()
|
|
375
|
-
|
|
376
|
-
def onPageChanged(self, event):
|
|
377
|
-
"""Called when the color space notebook is changed. Updates the current
|
|
378
|
-
page to show values appropriate for the current color specified by the
|
|
379
|
-
dialog.
|
|
380
|
-
|
|
381
|
-
"""
|
|
382
|
-
self._updateColorSpacePage()
|
|
383
|
-
event.Skip()
|
|
384
|
-
|
|
385
|
-
def onCopyObject(self, event):
|
|
386
|
-
"""Event to copy the color to the clipboard as a an object.
|
|
387
|
-
|
|
388
|
-
"""
|
|
389
|
-
outputSpace = self.cboOutputSpace.GetSelection()
|
|
390
|
-
toReturn = "colors.Color({}, space='{}')".format(
|
|
391
|
-
self.getOutputValue(), self._spaces[outputSpace])
|
|
392
|
-
self._copyToClipboard(toReturn)
|
|
393
|
-
self.Close()
|
|
394
|
-
event.Skip()
|
|
395
|
-
|
|
396
|
-
def onCopyValue(self, event):
|
|
397
|
-
"""Event to copy the color to the clipboard as a value.
|
|
398
|
-
|
|
399
|
-
"""
|
|
400
|
-
self._copyToClipboard(self.getOutputValue()) # copy out to clipboard
|
|
401
|
-
self.Close()
|
|
402
|
-
event.Skip()
|
|
403
|
-
|
|
404
|
-
def onClose(self, event):
|
|
405
|
-
"""Called when the cancel button is clicked."""
|
|
406
|
-
self.Close()
|
|
407
|
-
event.Skip()
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
if __name__ == "__main__":
|
|
411
|
-
pass
|
|
Binary file
|
|
Binary file
|
psychopy/core.py.orig
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
|
|
4
|
-
"""Basic functions, including timing, rush (imported), quit
|
|
5
|
-
"""
|
|
6
|
-
# Part of the PsychoPy library
|
|
7
|
-
# Copyright (C) 2002-2018 Jonathan Peirce (C) 2019-2021 Open Science Tools Ltd.
|
|
8
|
-
# Distributed under the terms of the GNU General Public License (GPL).
|
|
9
|
-
|
|
10
|
-
import sys
|
|
11
|
-
import threading
|
|
12
|
-
import subprocess
|
|
13
|
-
import shlex
|
|
14
|
-
import locale
|
|
15
|
-
|
|
16
|
-
# some things are imported just to be accessible within core's namespace
|
|
17
|
-
from psychopy.clock import (MonotonicClock, Clock, CountdownTimer,
|
|
18
|
-
wait, monotonicClock, getAbsTime,
|
|
19
|
-
StaticPeriod) # pylint: disable=W0611
|
|
20
|
-
|
|
21
|
-
# always safe to call rush, even if its not going to do anything for a
|
|
22
|
-
# particular OS
|
|
23
|
-
from psychopy.platform_specific import rush # pylint: disable=W0611
|
|
24
|
-
from psychopy import logging
|
|
25
|
-
<<<<<<< HEAD
|
|
26
|
-
from psychopy.constants import STARTED, NOT_STARTED, FINISHED
|
|
27
|
-
=======
|
|
28
|
-
from psychopy.constants import STARTED, NOT_STARTED, FINISHED, PY3
|
|
29
|
-
from psychopy.iohub.client import ioHubConnection
|
|
30
|
-
>>>>>>> c06fff3cf5e2f418f6db297fd47819041a00c07d
|
|
31
|
-
|
|
32
|
-
try:
|
|
33
|
-
import pyglet
|
|
34
|
-
havePyglet = True
|
|
35
|
-
# may not want to check, to preserve terminal window focus
|
|
36
|
-
checkPygletDuringWait = True
|
|
37
|
-
except ImportError:
|
|
38
|
-
havePyglet = False
|
|
39
|
-
checkPygletDuringWait = False
|
|
40
|
-
|
|
41
|
-
try:
|
|
42
|
-
import glfw
|
|
43
|
-
haveGLFW = True
|
|
44
|
-
except ImportError:
|
|
45
|
-
haveGLFW = False
|
|
46
|
-
|
|
47
|
-
runningThreads = [] # just for backwards compatibility?
|
|
48
|
-
openWindows = [] # visual.Window updates this, event.py and clock.py use it
|
|
49
|
-
|
|
50
|
-
# Set getTime in core to == the monotonicClock instance created in the
|
|
51
|
-
# clockModule.
|
|
52
|
-
# The logging module sets the defaultClock to == clock.monotonicClock,
|
|
53
|
-
# so by default the core.getTime() and logging.defaultClock.getTime()
|
|
54
|
-
# functions return the 'same' timebase.
|
|
55
|
-
#
|
|
56
|
-
# This way 'all' OSs have a core.getTime() timebase that starts at 0.0 when
|
|
57
|
-
# the experiment is launched, instead of it being this way on Windows only
|
|
58
|
-
# (which was also a descripancy between OS's when win32 was using time.clock).
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def getTime(applyZero = True):
|
|
62
|
-
"""Get the current time since psychopy.core was loaded.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
Version Notes: Note that prior to PsychoPy 1.77.00 the behaviour of
|
|
67
|
-
getTime() was platform dependent (on OSX and linux it was equivalent to
|
|
68
|
-
:func:`psychopy.core.getAbsTime`
|
|
69
|
-
whereas on windows it returned time since loading of the module, as now)
|
|
70
|
-
"""
|
|
71
|
-
return monotonicClock.getTime(applyZero)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
def quit():
|
|
75
|
-
"""Close everything and exit nicely (ending the experiment)
|
|
76
|
-
"""
|
|
77
|
-
# pygame.quit() # safe even if pygame was never initialised
|
|
78
|
-
logging.flush()
|
|
79
|
-
|
|
80
|
-
# properly shutdown ioHub server
|
|
81
|
-
if ioHubConnection.ACTIVE_CONNECTION:
|
|
82
|
-
ioHubConnection.ACTIVE_CONNECTION.quit()
|
|
83
|
-
|
|
84
|
-
for thisThread in threading.enumerate():
|
|
85
|
-
if hasattr(thisThread, 'stop') and hasattr(thisThread, 'running'):
|
|
86
|
-
# this is one of our event threads - kill it and wait for success
|
|
87
|
-
thisThread.stop()
|
|
88
|
-
while thisThread.running == 0:
|
|
89
|
-
pass # wait until it has properly finished polling
|
|
90
|
-
|
|
91
|
-
sys.exit(0) # quits the python session entirely
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
def shellCall(shellCmd, stdin='', stderr=False, env=None, encoding=None):
|
|
95
|
-
"""Call a single system command with arguments, return its stdout.
|
|
96
|
-
Returns stdout, stderr if stderr is True.
|
|
97
|
-
Handles simple pipes, passing stdin to shellCmd (pipes are untested
|
|
98
|
-
on windows) can accept string or list as the first argument
|
|
99
|
-
|
|
100
|
-
Parameters
|
|
101
|
-
----------
|
|
102
|
-
shellCmd : str, or iterable
|
|
103
|
-
The command to execute, and its respective arguments.
|
|
104
|
-
|
|
105
|
-
stdin : str, or None
|
|
106
|
-
Input to pass to the command.
|
|
107
|
-
|
|
108
|
-
stderr : bool
|
|
109
|
-
Whether to return the standard error output once execution is finished.
|
|
110
|
-
|
|
111
|
-
env : dict
|
|
112
|
-
The environment variables to set during execution.
|
|
113
|
-
|
|
114
|
-
encoding : str
|
|
115
|
-
The encoding to use for communication with the executed command.
|
|
116
|
-
This argument will be ignored on Python 2.7.
|
|
117
|
-
|
|
118
|
-
Notes
|
|
119
|
-
-----
|
|
120
|
-
We use ``subprocess.Popen`` to execute the command and establish
|
|
121
|
-
`stdin` and `stdout` pipes.
|
|
122
|
-
Python 2.7 always opens the pipes in text mode; however,
|
|
123
|
-
Python 3 defaults to binary mode, unless an encoding is specified.
|
|
124
|
-
To unify pipe communication across Python 2 and 3, we now provide an
|
|
125
|
-
`encoding` parameter, enforcing `utf-8` text mode by default.
|
|
126
|
-
This parameter is present from Python 3.6 onwards; using an older
|
|
127
|
-
Python 3 version will raise an exception. The parameter will be ignored
|
|
128
|
-
when running Python 2.7.
|
|
129
|
-
|
|
130
|
-
"""
|
|
131
|
-
if encoding is None:
|
|
132
|
-
encoding = locale.getpreferredencoding()
|
|
133
|
-
|
|
134
|
-
if type(shellCmd) == str:
|
|
135
|
-
# safely split into cmd+list-of-args, no pipes here
|
|
136
|
-
shellCmdList = shlex.split(shellCmd)
|
|
137
|
-
elif type(shellCmd) == bytes:
|
|
138
|
-
# safely split into cmd+list-of-args, no pipes here
|
|
139
|
-
shellCmdList = shlex.split(shellCmd.decode('utf-8'))
|
|
140
|
-
elif type(shellCmd) in (list, tuple): # handles whitespace in filenames
|
|
141
|
-
shellCmdList = shellCmd
|
|
142
|
-
else:
|
|
143
|
-
msg = 'shellCmd requires a string or iterable.'
|
|
144
|
-
raise TypeError(msg)
|
|
145
|
-
|
|
146
|
-
cmdObjects = []
|
|
147
|
-
for obj in shellCmdList:
|
|
148
|
-
if type(obj) != bytes:
|
|
149
|
-
cmdObjects.append(obj)
|
|
150
|
-
else:
|
|
151
|
-
cmdObjects.append(obj.decode('utf-8'))
|
|
152
|
-
|
|
153
|
-
# the `encoding` parameter results in unicode coming back
|
|
154
|
-
if sys.version_info.minor >= 6:
|
|
155
|
-
proc = subprocess.Popen(cmdObjects, stdin=subprocess.PIPE,
|
|
156
|
-
stdout=subprocess.PIPE,
|
|
157
|
-
stderr=subprocess.PIPE,
|
|
158
|
-
encoding=encoding, env=env)
|
|
159
|
-
else:
|
|
160
|
-
msg = 'shellCall() requires Python 2.7, or 3.6 and newer.'
|
|
161
|
-
raise RuntimeError(msg)
|
|
162
|
-
|
|
163
|
-
stdoutData, stderrData = proc.communicate(stdin)
|
|
164
|
-
|
|
165
|
-
del proc
|
|
166
|
-
if stderr:
|
|
167
|
-
return stdoutData.strip(), stderrData.strip()
|
|
168
|
-
else:
|
|
169
|
-
return stdoutData.strip()
|
psychopy/demos/builder/.DS_Store
DELETED
|
Binary file
|