Start button shows inline ELF dropdown; pick ELF to launch SM directly

This commit is contained in:
KarnerF committed 2026-08-31 19:42:09 +02:00
1 parent 3102960e4e
commit 77e7ee8fca
1 file changed
+5 -2
+5 -2
View File
@@ -1056,15 +1056,16 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
H("<div class='chip' id='sm-ver-chip'>v <b>%s</b></div>", sm_ver);
else
H("<div class='chip' id='sm-ver-chip' style='display:none;'>v</div>");
H("<button id='sm-ctrl-btn' class='sm-ctrl %s' data-action='%s' onclick='smCtrl()'>%s</button>",
H("<button id='sm-ctrl-btn' class='sm-ctrl %s' data-action='%s' onclick='%s'>%s</button>",
sm_running ? "stop" : "start",
sm_running ? "stop" : "start",
sm_running ? "smCtrl()" : "smCtrlPick()",
sm_running ? "Stop" : "Start");
/* ELF selector next to Start button, hidden when SM is running */
if(!sm_running){
SMPrefs _ep; read_prefs(&_ep);
char elfs[SM_MAX_ELFS][SM_EPATH]; int ec=sm_find_elfs(elfs);
H("<select id='topbar-elf-sel' onchange='saveElfSel(this.value)' style='max-width:220px;font-size:.75rem;'>");
H("<select id='topbar-elf-sel' onchange='startWithElf(this.value)' style='display:none;max-width:220px;font-size:.75rem;'>");
H("<option value=''>– %s –</option>",L(LS_SELECT_ELF));
for(int ei=0;ei<ec;ei++){
const char *fn=strrchr(elfs[ei],'/'); fn=fn?fn+1:elfs[ei];
@@ -1754,6 +1755,8 @@ static void fn(struct mg_connection *c, int ev, void *ev_data) {
"function saveElfSel(v){fetch('/api/prefs/save',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'preferred_elf='+encodeURIComponent(v)});"
"var s1=document.getElementById('pref-elf-sel');if(s1)s1.value=v;"
"var s2=document.getElementById('topbar-elf-sel');if(s2)s2.value=v;}"
"function smCtrlPick(){var sel=document.getElementById('topbar-elf-sel');if(sel){sel.style.display='';return;}smCtrl();}"
"function startWithElf(v){if(!v)return;var sel=document.getElementById('topbar-elf-sel');if(sel)sel.style.display='none';saveElfSel(v);launchElf(document.getElementById('sm-ctrl-btn'),v);}"
"function saveHttpPort(v){var n=parseInt(v);if(n>1024&&n<65535)fetch('/api/prefs/save',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'http_port='+n});}"
"function saveIconFront(v){fetch('/api/prefs/save',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},body:'icon_always_front='+(v?1:0)});}"
"function onAS(willOn){"