Skip to content

feat: maintain and display a list of recently opened recordings#12

Open
mikelgg93 wants to merge 23 commits intomainfrom
mgg/recent_recs
Open

feat: maintain and display a list of recently opened recordings#12
mikelgg93 wants to merge 23 commits intomainfrom
mgg/recent_recs

Conversation

@mikelgg93
Copy link
Copy Markdown
Member

PR - PoC Recent Recordings List on Splash Screen

This PR introduces a "Recently opened" section to the splash screen. It provides a sortable, interactive table of recent recordings, allowing users to quickly resume work without navigating the file system.

Motivation

Currently, users must manually locate and drag-and-drop or browse for a recording every time they open the application.

Use cases:

  • Quick Resume: Jump back into the last analyzed recording with a single click.
  • Project Context: Easily switch between different wearers or sessions from the same day.
  • Validation: Quickly verify if a specific recording path has already been processed or viewed.

Proposed Solution

The splash UI now includes a QTableWidget that pulls metadata from the user settings.

  • Persistence: The last 10 unique recording paths are stored in settings.json.
  • Metadata: Displays Recording Name, Wearer, Date, and Absolute Path.
  • Interaction: Clicking any cell in a row triggers the load() sequence for that recording.
  • Validation: The list automatically filters out paths that no longer exist on the local disk upon launch.
Screenshot 2026-03-09 at 14 21 59

Key Changes

app.py
Modified load() to extract metadata (wearer name, start time) from the NeonRecording object.
Implemented logic to prepend the latest recording to the "recent" list and prune the list to 10 entries.
Triggers UI updates on the splash screen after a successful load.

ui/main_window.py
Added update_recent_recordings() to populate the table dynamically.
Implemented _on_recent_cell_clicked to handle the loading trigger.
Added UI polish: custom row heights, "Pointing Hand" cursor on hover, and blue-tinted primary links for recording names.

settings.py
Added _recent_recordings to the internal settings schema to ensure the list persists across application restarts.

splash.ui
Restructured the layout to accommodate the new table.
Added a QTableWidget (recent_table) with custom CSS for a dark-themed, modern look that matches the Neon Player branding.

@mikelgg93 mikelgg93 changed the title Mgg/recent recs Recent Recordings Splash Screen Mar 13, 2026
@ctrltz ctrltz changed the title Recent Recordings Splash Screen feat(splash): show a list of recently opened recordings Apr 10, 2026
@ctrltz ctrltz changed the title feat(splash): show a list of recently opened recordings feat: maintain and display a list of recently opened recordings Apr 10, 2026
@ctrltz ctrltz requested a review from domstoppable April 15, 2026 13:02
@ctrltz
Copy link
Copy Markdown
Contributor

ctrltz commented Apr 15, 2026

A couple of updates compared to the above description:

  • Added 'last opened' column, use it for sorting by default
  • Loading/saving recent recordings from $HOME/Pupil Labs/Neon Player/history.json
  • Recent recordings were moved to a separate view, the second screenshot shows the default display when the list of recently opened recordings is empty
image image Screenshot from 2026-04-15 15-05-43

@ctrltz ctrltz requested a review from marc-tonsen April 15, 2026 17:00
Comment thread src/pupil_labs/neon_player/ui/main_window.py Outdated
Comment thread src/pupil_labs/neon_player/ui/main_window.py Outdated
Comment thread src/pupil_labs/neon_player/ui/main_window.py Outdated
Comment thread src/pupil_labs/neon_player/ui/main_window.py Outdated
Comment thread src/pupil_labs/neon_player/ui/main_window.py Outdated
Comment thread src/pupil_labs/neon_player/ui/main_window.py
Comment thread src/pupil_labs/neon_player/history.py Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants