Hi Christian,<br><br>You won&#39;t be able to do this from python.  In the ParaView GUI, the Qt event loop has control over the application flow, not python, so python threads do not work.  You&#39;ll need a Qt based solution.  Does your reader plugin include any Qt components?  It only takes a few lines of code to add a QTimer that will execute your python code.  Also, you can use QFileSystemWatcher to watch for new files, assuming the files are available on a locally mounted filesystem.<br>

<br>The QTimer can connect to a slot with this c++ code that will trigger a python function:<br><br>pqPVApplicationCore::instance()-&gt;pythonManager()-&gt;pythonShellDialog()-&gt;runString(&quot;myCallback()&quot;);<br>
<br>
<br>Pat<br><br><div class="gmail_quote">On Thu, Nov 10, 2011 at 9:46 AM, Christian Richter <span dir="ltr">&lt;<a href="mailto:christian.richter@ovgu.de">christian.richter@ovgu.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


  

    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Hello All,<br>
    <br>
    Because there is no Update Button available in Paraview I made a
    little Py-script to reload the filenames in FileSeriesReader for my
    own reader class (should work with other reader classes too).<br>
    <br>
    Now, everytime I hit the button, the new FileNameList is updatet,
    and the last available File is shown. (I love the PointSprite
    Plugin, if you need other representations change some lines).<br>
    <br>
    Now there is on wish left: how to run this script periodicaly every
    n seconds OR everytime thereis a new file in the solution directory.<br>
    I tried python Threading/Timer but they seems not to work in
    Paraview-Python Console.<br>
    Is there any possibility to trigger a python script from inside
    Paraview ?<br>
    <br>
    I&#39;m not a Python Coder, so maybe I did not try every method to make
    a loop which does not deadlock :-)<br>
    <br>
    Here is the script to update a files-series-reader:<br>
    <tt><code><br>
        from paraview.simple import *<br>
        import glob</code></tt>
    <p><tt>folder=&quot;post/*.liggghts&quot;</tt></p>
    <tt>
    </tt>
    <p><tt>def try_int(s):<br>
            &quot;Convert to integer if possible.&quot;<br>
            try: return int(s)<br>
            except: return s</tt></p>
    <tt>
    </tt>
    <p><tt>def natsort_key(s):<br>
            &quot;Used internally to get a tuple by which s is sorted.&quot;<br>
            import re<br>
            return map(try_int, re.findall(r&#39;(\d+|\D+)&#39;, s))</tt></p>
    <tt>
    </tt>
    <p><tt>def natcmp(a, b):<br>
            &quot;Natural string comparison, case sensitive.&quot;<br>
            return cmp(natsort_key(a), natsort_key(b))</tt></p>
    <tt>
    </tt>
    <p><tt>def natcasecmp(a, b):<br>
            &quot;Natural string comparison, ignores case.&quot;<br>
            return natcmp(a.lower(), b.lower())</tt></p>
    <tt>
    </tt>
    <p><tt># Find the source object<br>
        if (FindSource(&quot;liggghts_dump&quot;)==None): ##create<br>
            files = glob.glob(folder)<br>
            files.sort(natcasecmp)<br>
            xreader=liggghts_Reader(guiName=&quot;liggghts_dump&quot;)<br>
            xreader.FileNames=files<br>
            SetDisplayProperties(xreader, Representation=&quot;Point Sprite&quot;)<br>
            DataRepresentation1 = Show()<br>
            DataRepresentation1.PointSpriteDefaultsInitialized = 1<br>
            DataRepresentation1.Texture = []<br>
            DataRepresentation1.RadiusTransferFunctionEnabled = 1<br>
            DataRepresentation1.RadiusMode = &#39;Scalar&#39;<br>
            DataRepresentation1.Representation = &#39;Point Sprite&#39;<br>
            DataRepresentation1.RadiusArray = [None, &#39;radius&#39;]<br>
            DataRepresentation1.RadiusIsProportional = 1</tt></p>
    <tt>
    </tt>
    <p><tt>else:<br>
            files = glob.glob(folder)<br>
            files.sort(natcasecmp)<br>
            xreader.FileNames=files ##update<br>
            RenderView1 = GetRenderView()<br>
            AnimationScene1 = GetAnimationScene()<br>
            end=len(files)-1<br>
            RenderView1.ViewTime = end<br>
            AnimationScene1.AnimationTime = end<br>
            Render()</tt></p>
    Best wishes,<br><font color="#888888">
    Christian<br>
  </font></div>

<br>_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
<br></blockquote></div><br>