Files
decode-gui/session_summary.md

25 lines
2.6 KiB
Markdown
Raw Permalink Normal View History

2026-01-13 16:35:58 +01:00
# 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.