From e32b8b0f5c65aff58d32354180cd33944d9b3c03 Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jancsika@yahoo.com> Date: Wed, 22 Apr 2015 02:25:13 -0400 Subject: [PATCH] added output devices to prefs dialog --- pd/nw/dialog_prefs.html | 118 +++++++++++++++++++++++++++++- pd/nw/locales/en/translation.json | 4 +- 2 files changed, 117 insertions(+), 5 deletions(-) diff --git a/pd/nw/dialog_prefs.html b/pd/nw/dialog_prefs.html index 02e3d83c5..03f72022d 100644 --- a/pd/nw/dialog_prefs.html +++ b/pd/nw/dialog_prefs.html @@ -1,7 +1,7 @@ <!DOCTYPE html> <html> <head> - <link rel="stylesheet" type="text/css" href="dialog_prefs.css"> + <link rel="stylesheet" type="text/css" href="dialog_iemgui.css"> </head> <body> <div class="container noselect"> @@ -26,15 +26,22 @@ <select id="audio_api" onchange="change_api(this.value);"> </select> <br/> - <label data-i18n="[title]prefs.audio.sr"> + <label data-i18n="[title]prefs.audio.sr_tt"> <span data-i18n="prefs.audio.sr"></span> <input type="text" id="rate" name="rate"> </label> <br/> - <label data-i18n="[title]prefs.audio.advance"> + <label data-i18n="[title]prefs.audio.advance_tt"> <span data-i18n="prefs.audio.advance"></span> <input type="text" id="advance" name="advance"> </label> + <br/> + <div id="callback_container" class="hidden"> + <label data-i18n="[title]prefs.audio.callback_tt"> + <span data-i18n="prefs.audio.callback"></span> + <input type="checkbox" id="callback" name="callback"> + </label> + </div> <select id="blocksize" onchange="attr_change(this);"> <option value="64">64</option> @@ -44,7 +51,59 @@ <option value="1024">1024</option> <option value="2048">2048</option> </select> - Audio stuff + <br/> + <select id="in1"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="inchan1" name="inchan1"> + </label> + <br/> + <select id="in2"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="inchan2" name="inchan2"> + </label> + <br/> + <select id="in3"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="inchan3" name="inchan3"> + </label> + <br/> + <select id="in4"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="inchan4" name="inchan4"> + </label> + <br/> + + <select id="out1"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="outchan1" name="outchan1"> + </label> + <br/> + <select id="out2"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="outchan2" name="outchan2"> + </label> + <br/> + <select id="out3"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="outchan3" name="outchan3"> + </label> + <br/> + <select id="out4"></select> + <label data-i18n="[title]prefs.audio.channels_tt"> + <span data-i18n="prefs.audio.channels"></span> + <input type="text" id="outchan4" name="outchan4"> + </label> + <br/> + + + </fieldset> <fieldset id="midi"> @@ -363,9 +422,31 @@ pdgui.gui_post("guistub is " + gfxstub); api_select.value = current_api; } +function populate_devs(type, attrs) { + var devs = get_attr(type === 'in' ? 'sys-indevs' : 'sys-outdevs', attrs); + var i, j, opt, elem; + pdgui.gui_post("devs are " + devs); + pdgui.gui_post("type is " + type + 1); + for (i = 1; i < 5; i++) { + elem = document.getElementById(type + i); + // if the user changed the API, we need to + // remove the old devs + while (elem.firstChild) { + elem.removeChild(elem.firstChild); + } + for (j = 0; j < devs.length; j++) { + opt = document.createElement('option'); + opt.value = j; + opt.textContent = devs[j]; + elem.appendChild(opt); + } + } +} + function audio_prefs_callback(attrs) { pd_audio_attrs = attrs; var api_select = document.getElementById('audio_api'); + var callback, i, j, elem, devs, opt; pdgui.gui_post("audio attrs are " + attrs); pdgui.gui_post("attrs length " + attrs.length); // We can get this callback multiple times while the dialog @@ -381,6 +462,35 @@ pdgui.gui_post("guistub is " + gfxstub); document.getElementById('blocksize').value = get_attr('blocksize', attrs); document.getElementById('advance').value = get_attr('advance', attrs); + var callback = get_attr('cancallback', attrs); + //show the checkbox if the API allows + if (callback !== -1) { + document.getElementById('callback_container') + .classList.remove('hidden'); + document.getElementById('callback').checked = !!callback; + } + + populate_devs('in', attrs); + populate_devs('out', attrs); +/* + devs = get_attr('sys-indevs', attrs); + pdgui.gui_post("devs are " + devs); + for (i = 1; i < 5; i++) { + elem = document.getElementById('in' + i); + // if the user changed the API, we need to + // remove the old devs + while (elem.firstChild) { + elem.removeChild(elem.firstChild); + } + for (j = 0; j < devs.length; j++) { + opt = document.createElement('option'); + opt.value = j; + opt.textContent = devs[j]; + elem.appendChild(opt); + } + } +*/ + } function midi_prefs_callback(attrs) { diff --git a/pd/nw/locales/en/translation.json b/pd/nw/locales/en/translation.json index 30c807ad2..f3e8646b8 100644 --- a/pd/nw/locales/en/translation.json +++ b/pd/nw/locales/en/translation.json @@ -292,7 +292,9 @@ "sr": "sample rate", "sr_tt": "number of samples per second", "advance": "delay", - "advance_tt": "delay" + "advance_tt": "delay", + "channels": "channels", + "channels_tt": "number of channels for this device" }, "ok": "ok", "ok_tt": "Update the audio properties and close the dialog", -- GitLab