projectM-visualizer / projectM-visualizer/frontend-sdl-cpp

[FEATURE] Add support for reading presets from ZIP files

Open
#118 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C++
Stars
116
Forks
64
PR merge metrics
No merged PRs in 30d

Description

Is Your Enhancement Related to a Problem?

On Windows, path length limits can lead to issues installing/extracting the "Cream of the Crop" preset pack, as some preset files have really long names. This mostly occurs if the install path is already deeply nested, e.g. in a user's home directory. It also prevents WIX from being able to create an MSI installer, as the path limit there is even less (260 for the full source or destination file path and file name).

Your Suggested Enhancement

Add support for opening and parsing ZIP files in the configured present path (either inside a configured directory or as a single file name) and running presets directly from within the ZIP file without unpacking.

Since the application already uses POCO, which has a ZIP implementation, this should be relatively easy to accomplish. It may require changes to libprojectM's playlist library though, as there's currently no way of notifying the application of preset switches if the playlist library is in-between. A new callback should be added so the application can handle the switch itself, just getting the playlist path/filename from the playlist library. For example, files in a ZIP could be prefixed with zip:// to distinguish them from physical files and thus making the application handle them differently.

Alternative Solutions

Edit all presets in the default pack and reduce their file name lengths to more sensible limits. Lots of work and not great in determining duplicates.

Additional Context

No response

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing how the configured preset path reaches the playlist library and how preset switches are reported to the application. Review the playlist library boundary and the existing POCO ZIP support. Done means presets can be read and run directly from a configured ZIP file, including switches between presets, without unpacking.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.