squiggythings / WaveTracker

A free and open source music-making software for Windows. Uses wavetable synthesis and sampling to generate sounds.
https://wavetracker.org
MIT License
466 stars 14 forks source link

[Feature Request] Extend color themes to cover the rest of the UI #56

Open BlastBrothers opened 2 weeks ago

BlastBrothers commented 2 weeks ago

Is your feature request related to a problem? Please describe. Right now, only pattern colors can be changed, but given that the rest of the UI is custom, it seems natural to let the colors on that be customized as well. I'm a little ways into implementing this myself but I wanted to open the floor before dropping a PR.

Describe the solution you'd like The path of least resistance is to extend the existing color theme system and color definitions. That's what I'm working on now. I don't think there's a real need to track pattern themes and UI themes separately... but that is technically an option.

There's also a little bit of nuance r/e making repeated colors use the same color index to make theme editing easier. I'm just going to merge all the duplicates unless something jumps out as needing the ability to be specified differently.

squiggythings commented 6 days ago

I think this is a good idea. UX-wise I might add a similar 'category/header' system that the keybinding list has, to the color list. This way it's not one huge list of colors and someone who, say, just wants to change one or two things about the pattern editor can more easily find it and know what they are looking at. But I think it should be fine, and honestly is probably better to have the interface and pattern themes be stored under the same file than making them into two separate themes. Right off the bat I can see there being some issues in that some of the image-based buttons (like the toolbar buttons, wave presets, and checkboxes/sliders) won't automatically update to a new color theme because they are baked into the source image. It probably wouldn't be too hard to make built in drawing code for those parts and just source the icon from a hand drawn texture, but that is something that could be worked on later down the line.