<html><head></head><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px"><div id="yui_3_16_0_ym19_1_1492627221131_9080"><span id="yui_3_16_0_ym19_1_1492627221131_9142">Also-- I'll go ahead and describe the external dialog interface.</span></div><div id="yui_3_16_0_ym19_1_1492627221131_9114"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9170"><span id="yui_3_16_0_ym19_1_1492627221131_9621">gui_vmess("gui_external_dialog", "ss", gfx_tag, class_name);</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9578"><span>gui_start_array();</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9579"><span>gui_s("type");</span></div><div dir="ltr"><span>gui_s("key");</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9555"><span>gui_i/s/f("value");</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9645"><span>...</span></div><div dir="ltr"><span>gui_end_array();</span></div><div dir="ltr"><span>gui_end_vmess();</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9646"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9679"><span id="yui_3_16_0_ym19_1_1492627221131_9678">This basically creates an array of "triples" that define the type of input, name of the input, and value. <br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9554"><span id="yui_3_16_0_ym19_1_1492627221131_9553">On the GUI side, each input is drawn in the same order as above.  When the "Ok" button is clicked, <br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9681"><span id="yui_3_16_0_ym19_1_1492627221131_9680">the values are sent back to Pd in the same order as above.</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9682"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9552"><span id="yui_3_16_0_ym19_1_1492627221131_9647">The basic input types are: "int", "float", "symbol", "toggle", and "color".<br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9551"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9514"><span id="yui_3_16_0_ym19_1_1492627221131_9513">There's one special input type called "enum" for creating dropdown lists:</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9512"><span id="yui_3_16_0_ym19_1_1492627221131_9648">gui_s("enum"); gui_s("style"); gui_s("Big");</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9413"><span id="yui_3_16_0_ym19_1_1492627221131_9683">gui_s("enum"); gui_s("style"); gui_s("Little");</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9421"><span id="yui_3_16_0_ym19_1_1492627221131_9664">gui_s("enum"); gui_s("style"); gui_s("Blank");</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9650"><span id="yui_3_16_0_ym19_1_1492627221131_9649">gui_s("enum_index"); gui_s("style"); gui_i(2);</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9663"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9685"><span id="yui_3_16_0_ym19_1_1492627221131_9684">So this would create a dropdown list with options "Big", "Little", and "Blank" <br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9662"><span id="yui_3_16_0_ym19_1_1492627221131_9661">displayed. Since the "enum_index" is 2, "Blank" would be the default selection.</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9660"><span id="yui_3_16_0_ym19_1_1492627221131_9659">When the "Ok" button is clicked, the index of the selected value is sent back <br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9651"><span id="yui_3_16_0_ym19_1_1492627221131_9686">to Pd. (Hence the name "enum").  It's clunky, but it gets the job done.</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9687"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9653"><span id="yui_3_16_0_ym19_1_1492627221131_9652">Anyway, this API reduces the ~800 lines of ad hoc code for each external dialog down <br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9658"><span id="yui_3_16_0_ym19_1_1492627221131_9657">to ~200 shared code for all external dialogs.</span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9656"><span><br></span></div><div dir="ltr" id="yui_3_16_0_ym19_1_1492627221131_9654"><span id="yui_3_16_0_ym19_1_1492627221131_9655">-Jonathan<br></span></div></div></body></html>