2.6 KiB
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:
- CLI Argument Investigation: Explored the
vhs-decodecommand-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. - Technology Choice: Opted for Python with
tkinter(usingttkfor improved aesthetics) for the GUI development, balancing cross-platform compatibility with ease of development. - Virtual Environment Setup: Guided the user to create and activate a Python virtual environment (
.venv) to manage dependencies. - 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.
- 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.
- 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.Notebookwidget at the bottom, separating the output log into a "Log" tab and adding a new "Queue" tab. - The "Queue" tab features a
ttk.Treeviewto 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.
- Enhanced File Dialogs (Linux): Integrated
zenityto 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 totkinter.filedialogon Windows (which uses native Windows dialogs) or ifzenityis not available on Linux.
The resulting vhs_decode_gui.py script provides a user-friendly interface for interacting with the vhs-decode CLI application.