Hi Sage Devel,

Have you ever wanted to make it so a particular Sage notebook cell
would automatically get re-evaluated every few seconds?   For example,
maybe you want to monitor some file somewhere, make a counter, watch a
stock price, etc.  Here's a little function that illustrates how to do
this to make a clock:

def clock(delay=1):
    import time; print time.asctime()
    sleep(delay)
    id = sage.server.notebook.interact.SAGE_CELL_ID
    html("<script>evaluate_cell(%s,0)</script>"%id)

The magic is in the last two lines.  The id line figures out the id of
the current cell.  The line after that calls a javascript function
that is the same javascript function called when you press shift-enter
or click eval on a cell.

You could even do

clock(5)

in one cell and clock(3) in another to get multiple clocks at the same time.

NOTE: the cursor will jump around a bit -- I haven't sorted that out,
and maybe will need to add something to the notebook javascript to fix
that.  The above requires no change to Sage.

Oh, here is a stock example, which is boring on the weekend:

def stock(symbol, delay=1):
    print finance.Stock(symbol)
    sleep(delay)
    id = sage.server.notebook.interact.SAGE_CELL_ID
    html("<script>evaluate_cell(%s,0)</script>"%id)

-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to