From 5c6b03565e09a5624ae5e6a1036df611358528c7 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Fri, 26 May 2023 17:26:04 -0700 Subject: til_settings: drop settings->label from generated label Since these are ultimately intended for use in path construction, it's redundant to include the settings->label in the generated label. Instead what's really useful is just the subscript part: /module/compose/layers/layers[0]/drizzle/viscosity Becomes: /module/compose/layers/[0]/drizzle/viscosity which is far better. It may seem silly to have both the positional subscript *and* the module name, as in why not just have: /module/compose/layers/drizzle/viscosity But there's a need ot handle potential collisions like so: /module/compose/layers/[0]/drizzle/viscosity /module/compose/layers/[1]/stars /module/compose/layers/[2]/drizzle/viscosity So then maybe you think; ok, why have the module name? just use the positional subscript since that alone prevents the collisions. Result: /module/compose/layers/[0]/viscosity ... /module/compose/layers/[2]/viscosity Well, now we've lost useful context. The viscosity setting recurs on multiple modules, and we don't know just at a glance what we're working with anymore. Hence, why there's both. The module name in the path makes things substantially more self-explanatory. These paths will likely be what you're looking at as the labels of tracks in a multitrack sequencer like GNU Rocket. So this decision is likely affecting the UX at that level in the fullness of time. --- src/til_settings.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/til_settings.c b/src/til_settings.c index 7bd39c3..0a1a3d5 100644 --- a/src/til_settings.c +++ b/src/til_settings.c @@ -563,13 +563,13 @@ int til_settings_label_setting(const til_settings_t *settings, const til_setting */ for (unsigned i = 0; i < settings->num; i++) { if (settings->entries[i] == setting) { - size_t len = snprintf(NULL, 0, "%s[%u]", settings->label, i) + 1; + size_t len = snprintf(NULL, 0, "[%u]", i) + 1; label = calloc(1, len); if (!label) return -ENOMEM; - snprintf(label, len, "%s[%u]", settings->label, i); + snprintf(label, len, "[%u]", i); *res_label = label; return 0; -- cgit v1.2.1