diff --git a/pd/nw/css/default.css b/pd/nw/css/default.css index caeb671e909726d140dfc25302e007664689c14a..17ba56b1e55a77349aec3c95f9bd642c80e931ba 100644 --- a/pd/nw/css/default.css +++ b/pd/nw/css/default.css @@ -497,16 +497,16 @@ div.y2 { } /* Main tab widget */ + +/* All the display, width, and height settings below are a house of cards. + I don't have the schooling to actually predict how all these CSS elements + work together to create the whole. I just fudged around until I found a + way to get the buttons anchored at the bottom of the dialog without + triggering scrollbars to appear. If someone knows a way to do it "right" + without becoming an order of magnitude more complex, do feel free... */ .prefs_tab_group { - /* I needed to get this div to expand with the inner div content so - that I could resize the prefs window to display the content without - a scrollbar. I just played stackexchange roulette until I found - something that worked. I have no idea why absolute positioning - solves my problem, nor do I have time to become a CSS wizard just - to get this single thing to work. */ display: table; width: 90%; -/* height: 90vh; */ } /* Configure the radio buttons to hide off-screen */ @@ -542,9 +542,9 @@ div.y2 { /* Checked tabs must be white with the bottom border removed */ .prefs_tab:checked + label { - background-color:white; + background-color: #f3f3f3; font-weight: bold; - border-bottom: 1px solid white; + border-bottom: 1px solid #f3f3f3; margin-bottom: -1px; } @@ -552,35 +552,25 @@ div.y2 { .prefs_tab_group > div { display: none; border-top: 1px solid black; -/* border-bottom: 1px solid black; */ - background-color: white; -/* padding: 10px 10px; */ padding: 0px; margin: 0px; height: 100%; -/* height: 95%; */ -/* margin-bottom: -20px; */ -/* overflow: auto; */ - -/* box-shadow: 0 0 20px #444; - -moz-box-shadow: 0 0 20px #444; - -webkit-box-shadow: 0 0 20px #444; -*/ -/* border-radius: 0 5px 5px 5px; - -moz-border-radius: 0 5px 5px 5px; - -webkit-border-radius: 0 5px 5px 5px; -*/ } /* This matches tabs displaying to their associated radio inputs */ .tab1:checked ~ .tab1, .tab2:checked ~ .tab2, .tab3:checked ~ .tab3 { display: table; padding: 8px; + line-height: 20px; width: 100%; -/* height: 100%; */ height: 78vh; } +.audio_dev_settings { + padding-bottom: 8px; + padding-top: 8px; +} + #prefs_buttons { display: table; height: 10vh; diff --git a/pd/nw/dialog_prefs.html b/pd/nw/dialog_prefs.html index d8bade24951275a03e5d5fc271f32c3193b0fdb2..324114bcd51864ea72039334398d3a65fb51d8a2 100644 --- a/pd/nw/dialog_prefs.html +++ b/pd/nw/dialog_prefs.html @@ -4,246 +4,247 @@ <link id="page_style" rel="stylesheet" type="text/css" href="css/default.css"> </head> <body class="dialog_body" id="prefs_body"> -<div class="container noselect prefs_container"> - <div class="prefs_tab_group"> - <input type="radio" - name="prefs_radio_group" - id="audio_tab_radio" - class="tab1 prefs_tab" - checked="checked" /> - <label for="audio_tab_radio" data-i18n="[title]prefs.heading.audio_tt"> - <span data-i18n="prefs.heading.audio"></span> - </label> - - <input type="radio" - name="prefs_radio_group" - id="midi_tab_radio" - class="tab2 prefs_tab"/> - <label for="midi_tab_radio" data-i18n="[title]prefs.heading.midi_tt"> - <span data-i18n="prefs.heading.midi"></span> - </label> - - <input type="radio" - name="prefs_radio_group" - id="gui_tab_radio" - class="tab3 prefs_tab"/> - <label for="gui_tab_radio" data-i18n="[title]prefs.heading.gui_tt"> - <span data-i18n="prefs.heading.gui"></span> - </label> - - <div class="tab1"> - <label data-i18n="[title]prefs.audio.api_tt"> - <span data-i18n="prefs.audio.api"></span> - <select id="audio_api" onchange="change_api(this);"> - </select> + <div class="container noselect prefs_container"> + <div class="prefs_tab_group"> + <input type="radio" + name="prefs_radio_group" + id="audio_tab_radio" + class="tab1 prefs_tab" + checked="checked" /> + <label for="audio_tab_radio" data-i18n="[title]prefs.heading.audio_tt"> + <span data-i18n="prefs.heading.audio"></span> </label> - <br/> - <label data-i18n="[title]prefs.audio.sr_tt"> - <span data-i18n="prefs.audio.sr"></span> - <input type="text" - id="rate" - name="rate" - onchange="attr_change(this);"> + + <input type="radio" + name="prefs_radio_group" + id="midi_tab_radio" + class="tab2 prefs_tab"/> + <label for="midi_tab_radio" data-i18n="[title]prefs.heading.midi_tt"> + <span data-i18n="prefs.heading.midi"></span> </label> - <br/> - <label data-i18n="[title]prefs.audio.advance_tt"> - <span data-i18n="prefs.audio.advance"></span> - <input type="text" - id="advance" - name="advance" - onchange="attr_change(this);"> + + <input type="radio" + name="prefs_radio_group" + id="gui_tab_radio" + class="tab3 prefs_tab"/> + <label for="gui_tab_radio" data-i18n="[title]prefs.heading.gui_tt"> + <span data-i18n="prefs.heading.gui"></span> </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"> + + <div class="tab1"> +<div> + <label data-i18n="[title]prefs.audio.api_tt"> + <span data-i18n="prefs.audio.api"></span> + <select id="audio_api" onchange="change_api(this);"> + </select> + </label> + + <label data-i18n="[title]prefs.audio.sr_tt"> + <span data-i18n="prefs.audio.sr"></span> + <input type="text" + id="rate" + name="rate" + onchange="attr_change(this);"> </label> +</div> +<div class="audio_dev_settings"> + <label data-i18n="[title]prefs.audio.blocksize_tt"> + <span data-i18n="prefs.audio.blocksize"></span> + <select id="blocksize" + onchange="attr_change(this);"> + <option value="64">64</option> + <option value="128">128</option> + <option value="256">256</option> + <option value="512">512</option> + <option value="1024">1024</option> + <option value="2048">2048</option> + </select> + </label> + <label data-i18n="[title]prefs.audio.advance_tt"> + <span data-i18n="prefs.audio.advance"></span> + <input type="text" + id="advance" + name="advance" + onchange="attr_change(this);"> + </label> +</div class="audio_dev_settings"> + <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> + <table> + <tr> + <td> + Input Devices + </td> + <td> + <span data-i18n="prefs.audio.channels"></span> + </td> + </tr> + <tr> + <td> + <select id="in1" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="inchans1" + name="inchans1" + onchange="dev_change(this);"> + </label> + </td> + </tr> + <tr> + <td> + <select id="in2" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="inchans2" + name="inchans2" + onchange="dev_change(this);"> + </label> + </td> + </tr> + <tr> + <td> + <select id="in3" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="inchans3" + name="inchans3" + onchange="dev_change(this);"> + </label> + </td> + </tr> + <tr> + <td> + <select id="in4" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="inchans4" + name="inchans4" + onchange="dev_change(this);"> + </label> + </td> + </tr> + <tr> + <td> + Output Devices + </td> + <td> + <span data-i18n="prefs.audio.channels"></span> + </td> + </tr> + <tr> + <td> + <select id="out1" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="outchans1" + name="outchans1" + onchange="dev_change(this);"> + </label> + </td> + </tr> + <tr> + <td> + <select id="out2" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="outchans2" + name="outchans2" + onchange="dev_change(this);"> + </label> + </td> + </tr> + <tr> + <td> + <select id="out3" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="outchans3" + name="outchans3" + onchange="dev_change(this);"> + </label> + </td> + </tr> + <tr> + <td> + <select id="out4" onchange="dev_change(this);"></select> + </td> + <td> + <label data-i18n="[title]prefs.audio.channels_tt"> + <input type="text" + id="outchans4" + name="outchans4" + onchange="dev_change(this);"> + </label> + </td> + </tr> + </table> </div> - <label data-i18n="[title]prefs.audio.blocksize_tt"> - <span data-i18n="prefs.audio.blocksize"></span> - <select id="blocksize" - onchange="attr_change(this);"> - <option value="64">64</option> - <option value="128">128</option> - <option value="256">256</option> - <option value="512">512</option> - <option value="1024">1024</option> - <option value="2048">2048</option> - </select> - </label> - <br/> - <table> - <tr> - <td> - Input Devices - </td> - <td> - <span data-i18n="prefs.audio.channels"></span> - </td> - </tr> - <tr> - <td> - <select id="in1" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="inchans1" - name="inchans1" - onchange="dev_change(this);"> - </label> - </td> - </tr> - <tr> - <td> - <select id="in2" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="inchans2" - name="inchans2" - onchange="dev_change(this);"> - </label> - </td> - </tr> - <tr> - <td> - <select id="in3" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="inchans3" - name="inchans3" - onchange="dev_change(this);"> - </label> - </td> - </tr> - <tr> - <td> - <select id="in4" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="inchans4" - name="inchans4" - onchange="dev_change(this);"> - </label> - </td> - </tr> - <tr> - <td> - Output Devices - </td> - <td> - <span data-i18n="prefs.audio.channels"></span> - </td> - </tr> - <tr> - <td> - <select id="out1" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="outchans1" - name="outchans1" - onchange="dev_change(this);"> - </label> - </td> - </tr> - <tr> - <td> - <select id="out2" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="outchans2" - name="outchans2" - onchange="dev_change(this);"> - </label> - </td> - </tr> - <tr> - <td> - <select id="out3" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="outchans3" - name="outchans3" - onchange="dev_change(this);"> - </label> - </td> - </tr> - <tr> - <td> - <select id="out4" onchange="dev_change(this);"></select> - </td> - <td> - <label data-i18n="[title]prefs.audio.channels_tt"> - <input type="text" - id="outchans4" - name="outchans4" - onchange="dev_change(this);"> - </label> - </td> - </tr> - </table> - </div> - <div class="tab2"> - <select id="midi_api" onchange="change_api(this);"> - </select> - <br/> - <select id="midi_in1" onchange="dev_change(this);"></select> - <br/> - <select id="midi_in2" onchange="dev_change(this);"></select> - <br/> - <select id="midi_in3" onchange="dev_change(this);"></select> - <br/> - <select id="midi_in4" onchange="dev_change(this);"></select> - <br/> - - <select id="midi_out1" onchange="dev_change(this);"></select> - <br/> - <select id="midi_out2" onchange="dev_change(this);"></select> - <br/> - <select id="midi_out3" onchange="dev_change(this);"></select> - <br/> - <select id="midi_out4" onchange="dev_change(this);"></select> - <br/> - </div> + <div class="tab2"> + <select id="midi_api" onchange="change_api(this);"> + </select> + <br/> + <select id="midi_in1" onchange="dev_change(this);"></select> + <br/> + <select id="midi_in2" onchange="dev_change(this);"></select> + <br/> + <select id="midi_in3" onchange="dev_change(this);"></select> + <br/> + <select id="midi_in4" onchange="dev_change(this);"></select> + <br/> + + <select id="midi_out1" onchange="dev_change(this);"></select> + <br/> + <select id="midi_out2" onchange="dev_change(this);"></select> + <br/> + <select id="midi_out3" onchange="dev_change(this);"></select> + <br/> + <select id="midi_out4" onchange="dev_change(this);"></select> + <br/> + </div> - <div class="tab3"> - <label data-i18n="[title]prefs.gui.presets.gui_preset_tt"> - <span data-i18n="prefs.gui.presets.gui_preset"></span> - </label> - <select id="gui_preset" onchange="gui_preset_change(this);"> - <option data-i18n="prefs.gui.presets.default" value="default"> - </option> - <option data-i18n="prefs.gui.presets.inverted" value="inverted"> - </option> - <option data-i18n="prefs.gui.presets.vanilla" value="vanilla"> - </option> - <option data-i18n="prefs.gui.presets.vanilla_inverted" value="vanilla_inverted"> - </option> - <option data-i18n="prefs.gui.presets.extended" value="extended"> - </option> - <option data-i18n="prefs.gui.presets.c64" value="c64"> - </option> - <option data-i18n="prefs.gui.presets.subdued" value="subdued"> - </option> - <option data-i18n="prefs.gui.presets.strongbad" value="strongbad"> - </option> - </select> + <div class="tab3"> + <label data-i18n="[title]prefs.gui.presets.gui_preset_tt"> + <span data-i18n="prefs.gui.presets.gui_preset"></span> + </label> + <select id="gui_preset" onchange="gui_preset_change(this);"> + <option data-i18n="prefs.gui.presets.default" value="default"> + </option> + <option data-i18n="prefs.gui.presets.inverted" value="inverted"> + </option> + <option data-i18n="prefs.gui.presets.vanilla" value="vanilla"> + </option> + <option data-i18n="prefs.gui.presets.vanilla_inverted" value="vanilla_inverted"> + </option> + <option data-i18n="prefs.gui.presets.extended" value="extended"> + </option> + <option data-i18n="prefs.gui.presets.c64" value="c64"> + </option> + <option data-i18n="prefs.gui.presets.subdued" value="subdued"> + </option> + <option data-i18n="prefs.gui.presets.strongbad" value="strongbad"> + </option> + </select> + </div> </div> - </div> <div class="submit_buttons prefs_buttons"> <button type="button" onClick="ok()" data-i18n="[title]prefs.ok_tt"> @@ -256,8 +257,7 @@ <span data-i18n="prefs.close"></span> </button> </div> - -</div> + </div> <script> "use strict"; var gui = require("nw.gui");