<br><br><div class="gmail_quote">2008/5/8 Aaron J. Seigo &lt;<a href="mailto:aseigo@kde.org">aseigo@kde.org</a>&gt;:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Thursday 08 May 2008, Richard Dale wrote:<br>
&gt; &nbsp; In appletscripting.h there is a method called<br>
&gt; showConfigurationInterface():<br>
&gt;<br>
&gt; &nbsp; /**<br>
&gt; &nbsp; &nbsp; &nbsp;* Show a configuration dialog.<br>
&gt; &nbsp; &nbsp; &nbsp;*/<br>
&gt; &nbsp; &nbsp; virtual void showConfigurationInterface();<br>
&gt;<br>
&gt; Note that the comment describes it as a &#39;dialog&#39;, and so the first question<br>
&gt; is why isn&#39;t it named &#39;showConfigurationDialog()&#39; - interface seems pretty<br>
&gt; meaningless to me.<br>
<br>
</div>because it&#39;s not guaranteed to be a dialog. right now the C++ API puts an<br>
assumption in there about a dialog, but it&#39;s actually not universal.<br>
<div class="Ih2E3d"><br>
&gt; Similarly the C++ equivalent is called<br>
&gt; createConfigureInterface() and would be better named<br>
&gt; createConfigurationDialog() in my opinion.<br>
<br>
</div>hm. actually, that was purposeful to leave it like that in the scripting API.<br>
<br>
showConfigurationInterface in Applet automatically creates a config based on<br>
ui files and configXML if that is available in the package, otherwise it<br>
calls showConfigurationInterface in the script, which is supposed to do the<br>
analog of showConfigurationInterface in Applet: decide how best to create and<br>
display a config interface for the given API.<br>
<br>
so given that pattern, i figured to keep the naming in line with Applet<br>
itself, rather than what plasmoids implement.<br>
<br>
there are two small flaws in the existing &quot;automatically generate a config<br>
dialog from config xml and a ui file&quot;:<br>
<br>
* KConfigSkeleton is completely unaware of KConfigGroup; it&#39;s KConfig centric<br>
and so fails us here. i will fix this in KDE 4.2<br>
<br>
* the dialog that gets created isn&#39;t connected to any slot to signal that the<br>
configuration has changed. having some way to signal such updates such that<br>
the loaded widget updates itself needs to be taken into consideration. i see<br>
you&#39;ve already noticed this, however ;)<br>
<div class="Ih2E3d"><br>
&gt; why doesn&#39;t the<br>
&gt; scripting api have a method that is called when the user presses ok or<br>
&gt; apply buttons?<br>
<br>
</div>nobody was using this yet, and i had other things to take cafe of. now that<br>
there are scripts circling the tank, it needs to be addressed.<br>
<br>
perhaps a SLOT in AppletScript that notifies of configuration changes?<br>
<div class="Ih2E3d"><br>
&gt; So after the above preamable we can call showConfigurationIterface(), and<br>
&gt; it does its stuff and creates a widget with the dialog. And then what? The<br>
&gt; method is a void, and I think it should return the created widget instead.<br>
<br>
</div>no, this is completely up to the scripting API. consider HTML/CSS for a really<br>
bizarro possibility: that stuff probably knows nothing about controls and<br>
code outside of html forms and javascript. building assumptions into the<br>
ScriptEngine API such as &quot;knows about Qt/KDE dialogs&quot; is going to fail us.<br>
<div class="Ih2E3d"><br>
&gt; Then the scripting api code can put the widget in the KConfigDialog:<br>
&gt;<br>
&gt; parent-&gt;addPage(widget, parent-&gt;windowTitle(), icon());<br>
&gt;<br>
&gt; When the slot configurationAccepted() is invoked the scripting api would<br>
&gt; then call back into the scripting code, which would get the config details<br>
&gt; from the dialog.<br>
<br>
</div>that&#39;s certainly a pattern that more powerful scripting APIs will likely<br>
follow.<a href="https://mail.kde.org/mailman/listinfo/panel-devel" target="_blank"></a></blockquote><div><br>Actually, I think I can just implement&nbsp; a&nbsp; createConfigurationInterface() method with a&nbsp; KConfigDialog argument for Ruby. <br>
<br>I thought the purpose of the ScriptEngine api was about &#39;enforcing simplicity&#39;, when actually you are trying to &#39;allow flexibility&#39;. Therefore, if the aim was the first one implementing a &#39;createConfigurationInterace()&#39; api for Ruby would have been &#39;cheating&#39;, on the other hand if the aim was &#39;being flexible&#39; aim would mean that it is perfectly acceptable.<br>
<br>So you can&#39;t just look at what the ScriptEngine code does, you have to know the intent behind the code too. Which I think I finally do.<br><br>-- Richard<br> </div></div><br>