run_gcats.py starts the Qt application. MainWindow owns the setup pages,
shared Config, and Gamepad. After setup, it opens SessionWindow in
fullscreen mode.
| Module | Responsibility |
|---|---|
app.py |
Main window, splash screen, navigation, and session launch |
config.py |
Session settings, presets, and JSON configuration |
gamepad.py |
Gamepad polling and reading pipeline |
mapping.py |
Dead-zone, coordinate mapping, and scale conversion |
stimuli.py |
Media discovery, classification, and ordering |
media.py |
Image, video, and audio players |
overlay.py |
Rating grid, cursor, labels, and summary bars |
runner.py |
Fullscreen trial state machine and timing |
logger.py |
Raw/resampled CSV and configuration output |
pages/ |
Setup page implementations |
GAP -> SUMMARY before -> STIMULUS -> SUMMARY after -> GAP -> DONE
Only the enabled summary state is shown. The session timer polls the gamepad
every 4 ms, while the continuous stream uses the configured output interval.