@renderiza said:
jiminy-billy-bob suggested Sketchup.write_default ... Is this the best option? Can someone post an easy to follow example on how to implement it?
For example, this is the way I store which render engine the user has selected in the list of the latest version of Layers Panel :
For instance, when he clicks on "Vray", I have a javascript function sending to ruby
window.location = 'skp:useRenderEngine@vray'
A callback receives it and store "vray" in the registry
<span class="syntaxdefault"></span><span class="syntaxkeyword">@</span><span class="syntaxdefault">dialog</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_action_callback</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"useRenderEngine"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">wdl</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> engine</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">write_default</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"jbb_layers_panel"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"render_engine"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> engine</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">end</span><span class="syntaxcomment">#callback </span><span class="syntaxdefault"></span>
Then when the user opens up again the Webdialog, a JS function is triggered when the document is ready, and asks ruby what is stored in the registry :
window.location = 'skp:getRenderEngine';
Ruby reads the registry and answers to JS :
<span class="syntaxdefault"></span><span class="syntaxkeyword">@</span><span class="syntaxdefault">dialog</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_action_callback</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"getRenderEngine"</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">wdl</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> action</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault"> engine </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">read_default</span><span class="syntaxkeyword">(</span><span class="syntaxstring">"jbb_layers_panel"</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">"render_engine"</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> useRenderEngine </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"useRenderEngine('#{engine}');"<br /></span><span class="syntaxdefault"> </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">dialog</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">execute_script</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">useRenderEngine</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">end</span><span class="syntaxcomment">#callback </span><span class="syntaxdefault"></span>
And JS uses this information ("vray") to display Vray's render buttons.
Hope this helps 