On Sun, Apr 25, 2010 at 1:51 PM, Stefan Löffler <span dir="ltr">&lt;<a href="mailto:st.loeffler@gmail.com">st.loeffler@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi,<br>
<br>
Am 2010-04-25 11:24, schrieb Jonathan Kew:<br>
&gt; It&#39;s pretty neat that this works; however, I think we should expose a readFile() method to directly read the text of a file, rather than going through the &quot;open document, get text, close document&quot; sequence. That&#39;s pretty inefficient, and could become a significant overhead if you were loading a number of script libraries.<br>

&gt;<br>
<br>
I tend to disagree (partly). A general purpose readFile() is something<br>
that may come in handy some times, but also can do a lot of harm.</blockquote><div><br></div><div>Could you explain a bit more about your concern here?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
 In<br>
particular, I&#39;d prefer scripts to not use absolute paths as much as<br>
possible.</blockquote><div><br></div><div>True, in general - although if the script is building the path by starting from things like its own path, or the path of the document it&#39;s working with, and modifying the file name/extension, etc, then the fact that it&#39;s an absolute path is not important.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> In any case, it would probably be nice to have a runScript()<br>
function that does what one would expect of it (i.e., as Paul suggested,<br>
run a script identified by some name/label, rather than a TWScript<br>
object we currently have no way of obtaining a handle to).<br></blockquote><div><br></div><div>Yes, that might be nice. Though it raises questions of context: does the new script execute in its own separate context, or can it be run within the current script&#39;s context (allowing sharing of globals, etc)? I suppose that could only work if the scripts are in the same language....</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">To make a long story short, here&#39;s a list of things I&#39;d like to see in<br>
scripting (and for the most of them I even have an idea of how to code<br>
them ;)):<br>
1) Give scripts a way to obtain a handle to their TWScript obj (the<br>
pointer is in TWScriptAPI already, anyway)<br></blockquote><div><br></div><div>That&#39;s easy, I guess; what do you expect it to be used for?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2) Provide a per-script list/hash of &quot;globals&quot;, i.e. of QVariant<br>
objects; this would give us the possibility to pass data between<br>
successive invocations of the same script (need to think about data<br>
lifetime here; possibly need to find a way to clone objects)<br></blockquote><div><br></div><div>How about also having an application-wide collection of such globals, so that it&#39;s possible for a group of related scripts to share data?</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">3) Add the possibility to call functions defined in a script from C++<br>
<br>
4) Make it possible to connect C++ signals to script slots (it should<br>
already be working for QtScript; for the others we need some tricks -<br>
possibly create a dummy QtScript object to connect to which passes on<br>
the signals to the real script)<br></blockquote><div><br></div><div>Yes; I presume this would allow non-modal script-created windows to do more interesting things in response to controls. (You can do a few things already, by connecting signals in the UI widgets to slots within the application. But that&#39;s very limited, as it doesn&#39;t allow the script to intervene and customize things.)</div>
<div><br></div><div>I&#39;ve been wondering if we should in some way allow scripts to be &quot;attached&quot; to the windows they create in this situation. But perhaps that&#39;s not necessary. If the script object is deleted/replaced while the connected widgets are still around, the connections will break, but no real harm should follow - the user would just have to close and re-instantiate the window to get it working again.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">5) Introduce a new script type (&quot;multi&quot;, &quot;mixed&quot;, ... ideas welcome)<br>
that defines only functions. There is one special function (e.g. init())<br>
that gets called when the TWScript object is created. Its purpose is to<br>
register menu items, toolbar items, hooks, ... (whatever comes to mind).<br>
Each of them gets connected to a function provided by the script.<br></blockquote><div><br></div><div>ScriptType: library</div><div>Defines functions for use as hooks, callback slots, whatever....</div><div>No need for a magic init() function: the &quot;main program&quot; of the script is executed on load, and can do whatever setup is desired.</div>
<div>Or maybe we should have both initialize() and terminate() functions; the latter provides an opportunity for the script library to do last-minute things before the app shuts down, such as saving its globals to a .ini file, to be read by initialize() next time it is loaded.</div>
<div><br></div></div>