Files
decode-gui/session_summary.md
Daniel Dybing 9f15ad3348
Some checks failed
Build Binaries / build-linux (push) Successful in 1m36s
Build Binaries / build-windows (push) Has been cancelled
Add build workflow and requirements
2026-01-13 16:35:58 +01:00

2.6 KiB

Session Summary: VHS Decode GUI Development

This session focused on creating a graphical user interface (GUI) wrapper for the vhs-decode command-line application.

Key Accomplishments:

  1. CLI Argument Investigation: Explored the vhs-decode command-line interface to understand its various arguments, including input/output files, video systems (NTSC, PAL), tape formats, tape speeds, and advanced settings like frequency and threads.
  2. Technology Choice: Opted for Python with tkinter (using ttk for improved aesthetics) for the GUI development, balancing cross-platform compatibility with ease of development.
  3. Virtual Environment Setup: Guided the user to create and activate a Python virtual environment (.venv) to manage dependencies.
  4. Basic GUI Implementation: Developed the initial GUI structure including:
    • Input and output file/directory selection with browse buttons.
    • Core settings for Video System, Tape Format, Tape Speed, and RF Frequency (with CXADC option).
    • Advanced settings for Threads, Start Frame, Length, Overwrite, Chroma Trap, and Debugging.
    • "Start Decode Now" and "Stop Decode" buttons.
    • An output log area to display the command-line application's output.
  5. Video System Refinement: Modified the "Video System" dropdown to remove the "Default" option, ensuring users explicitly select a system (PAL, NTSC, PAL-M, NTSC-J) and setting "PAL" as the initial default.
  6. Queue System Integration: Implemented a job queuing mechanism, inspired by tools like Handbrake:
    • Added an "Add to Queue" button to capture current settings as a job.
    • Introduced a ttk.Notebook widget at the bottom, separating the output log into a "Log" tab and adding a new "Queue" tab.
    • The "Queue" tab features a ttk.Treeview to display queued jobs with their status (Pending, Running, Completed, Failed), input/output files, video system, and tape format.
    • Added "Start Queue", "Remove Selected", and "Clear Queue" controls for queue management.
    • Developed the logic to process queued jobs sequentially, updating their status in the UI and logging output to the "Log" tab.
  7. Enhanced File Dialogs (Linux): Integrated zenity to provide a more functional and native-looking file and directory selection experience on Linux systems, allowing users to create new folders within the dialog. The application gracefully falls back to tkinter.filedialog on Windows (which uses native Windows dialogs) or if zenity is not available on Linux.

The resulting vhs_decode_gui.py script provides a user-friendly interface for interacting with the vhs-decode CLI application.