Ticket #1322: menu-widget.patch

File menu-widget.patch, 3.4 KB (added by jason, 14 years ago)

Extremely rough cut of initial functionality for interactive widgets in the notebook.

  • new file sage/server/notebook/widgets/all.py

    # HG changeset patch
    # User Jason Grout <jason-sage@creativetrax.com>
    # Date 1196490833 21600
    # Node ID 0e2d666acea18f6a9291332850b56ce086cf079f
    # Parent  cad57dea1832909011c4e8c34de6cb708b7c7dcb
    [mq]: widgets
    
    diff -r cad57dea1832 -r 0e2d666acea1 sage/server/notebook/widgets/all.py
    - +  
     1from menu import *
  • new file sage/server/notebook/widgets/menu.py

    diff -r cad57dea1832 -r 0e2d666acea1 sage/server/notebook/widgets/menu.py
    - +  
     1r"""
     2Menu Control
     3
     4Implement an interactive menu in the Sage notebook.
     5"""
     6
     7from sage.structure.sage_object import SageObject
     8class menu(SageObject):
     9    """
     10    Create an HTML select box menu in the Sage notebook.
     11    """
     12    def __init__(self, variable, options, next_update=True):
     13        """
     14        A select box menu which sets the variable.  When an item is
     15        selected in the menu, the variable is set to the item.
     16       
     17        INPUT:
     18            variable -- variable to control
     19            options -- list of options for the menu.
     20
     21        EXAMPLE:
     22            sage: menu('f', [sin,cos,tan]).show()
     23           
     24            A select box menu appears in the notebook.  Select a value for f.
     25
     26            sage: plot(f(x), 0, 2*pi).show()
     27           
     28            The graph of f(x) is plotted.
     29
     30        """
     31#        from sage.server.notebook.widgets import cell
     32#        from sage.server.support import EMBEDDED_MODE
     33        self._variable = variable
     34        self._next_update = next_update
     35        self._options = options
     36
     37    def show(self):
     38        from sage.server.support import EMBEDDED_MODE
     39        if EMBEDDED_MODE:
     40            change_function="""async_request(worksheet_command('eval'), generic_callback, 'newcell=0&id=-1&input=%s%%3d'+this.options[this.selectedIndex].value)"""%self._variable
     41            html = """%s=<select name="" onchange="%s">"""%(self._variable, change_function)
     42            for i in xrange(len(self._options)):
     43                html += "<option value='%s'>%s</option>"%(repr(self._options[i]), repr(self._options[i]))
     44            html += "</select>"
     45            print("<html>"+html+"</html>")
     46
     47#    def value(self):
     48#        return self._options[self._current_index]
     49
     50#    def __call__(self):
     51#        return self.value()
     52       
  • setup.py

    diff -r cad57dea1832 -r 0e2d666acea1 setup.py
    a b setup(name = 'sage', 
    11731173                     'sage.server.server1',
    11741174                     'sage.server.notebook',
    11751175                     'sage.server.notebook.compress',
     1176                     'sage.server.notebook.widgets',
    11761177                     'sage.server.wiki',
    11771178                     'sage.server.trac',
    11781179                     
  • setupnb.py

    diff -r cad57dea1832 -r 0e2d666acea1 setupnb.py
    a b setup(name = 'sage', 
    894894                     'sage.server.server1',
    895895                     'sage.server.notebook',
    896896                     'sage.server.notebook.compress',
     897                     'sage.server.notebook.widgets',
    897898                     'sage.server.wiki',
    898899                     'sage.server.trac',
    899900