Difference between revisions of "ICalico"

From IPRE Wiki
Jump to: navigation, search
(Widgets)
(Widgets)
Line 281: Line 281:
 
# RadioButtonsWidget
 
# RadioButtonsWidget
 
# SelectWidget
 
# SelectWidget
 +
# TabWidget
 
# TextWidget
 
# TextWidget
 
# TextareaWidget
 
# TextareaWidget

Revision as of 05:00, 30 April 2014

ICalico is a new method of interacting with Calico. In addition, a host of new functionality is available.

What is ICalico? It is a graphical user interface (GUI) to Calico through a web browser. Everything currently runs locally, so it isn't something on the world wide web, but rather a interface to write code using the browser as the GUI. You'll need ipython and Calico 3 or greater to use.

To get an idea of what ICalico is, see the sample notebooks here:

http://nbviewer.ipython.org/urls/bitbucket.org/ipre/calico/raw/master/notebooks/Index.ipynb

Installation

  1. Install IPython version 2.0.0 or greater
    • http://ipython.org/install.html - We suggest using the Anaconda installer for its ease of use
      • If you do not use Anaconda, you may have to build zmq from source
    • Make sure that ipython is in your path (type "ipython" at a console prompt)
      • Anaconda will do this for you. You may have to logout, close/open terminal window, or reboot after installing
      • On Windows, if you need to manually set your path, use something like: PATH=%PATH%;c:\Python27\Scripts
  2. Install Calico version 3.0.0 or greater
  3. Start IPython with Calico profile
    • icalico
  4. To Stop IPython Server
    • Make sure to save your notebook in browser (control+s)
    • Shutdown server in console window: control+break on Windows; control+c on Linux/Mac

A web page should open up which will allow you to enter scripts and Calico "magic" commands (see below).

Trouble shooting

If a webpage opens, you should be able to open a Notebook (either old or make a new one. On the new Notebook page, you should see:

  1. the purple Calico butterfly logo in the upper-left corner
  2. if you type calico in a cell and evaluate it (control+enter) it should respond back with the Calico version number, like <Calico version 3.0.0>

If a webpage does not open, some things to check:

  1. Is ipython on your path?
  2. Do you have a default web browser?
  3. On Linux and Mac, is mono on your path?

Other questions? Please ask on the calico-users mailing list.

NOTE: If you move the Calico folder, you should re-create a new Calico profile:

  1. cd Calico
  2. calico --create-profile

Getting Started

For an introduction to this manner of interacting with programs, please see:

http://nbviewer.ipython.org/urls/bitbucket.org/ipre/calico/raw/master/notebooks/Index.ipynb

Editing

Each cell in a notebook can be one of the following:

  • Code
  • Markdown
  • Raw text
  • Heading 1 through 6

You can change what type of data is in a cell by changing it in the menu selection.

Code

If the cell is marked Code, then you can enter commands (from Python by default). Press shift/control/alt Enter to evaluate.

Magics

You can also enter a "magic" command. These are proceeded by:

  • a single-percent sign for magic-line commands
  • two percent signs for magic-cell commands
  • three percent signs for magic sticky, notebook commands

The magic line commands are:

%connect_info show ICalico JSON connection information
%download url [file] download a URL to a file
%edit FILENAME edit a file in an external editor
%lang get information on current language
%lang LANG EXPRESSION evaluate the EXPRESSION in the given LANGUAGE
%magic get information on magic meta-commands
%nuget COMMAND ARGS... perform a NuGet command, such as install. See http://www.nuget.org/ for more details.
%qtconsole start a qtconsole
%run FILENAME run a file (language determined by extension)

The magic cell commands are:

%%dot [options] create a GraphViz dot diagram with contents of cell
%%file FILENAME create a filename with contents of cell
%%html treat the cell as HTML
%%javascript treat the cell as Javascript data
%%latex treat the cell as Latex
%%lang LANGUAGE change language for just this cell
%%svg treat the cell as SVG data
%%time time how long it takes to run this cell

The magic notebook commands are:

%%%lang LANGUAGE     - change language for rest of cells (or until another %%%lang command)

If the cell is marked as Markdown, then you can use Markdown syntax, including some LaTeX commands.

Documentation

Technically, ICalico is a "IPython kernel". However, of course ICalico can operate using any of a number of languages.

Editing Notebooks

You can drag and drop images onto a notebook when editing.

Starting with ICalico 3.0.1, the last statement in a Python cell is also an output result.

Magics

ICalico magics are "meta" commands: commands for the ICalico system, separate from any Calico language.

  • One preceding percent sign indicates a "magic line command" (applies to just the line)
  • Two preceding percent signs indicates a "magic cell command" (applies to just the cell)
  • Three preceding percent sign indicates a "magic notebook command" (applies from here to rest of notebook)

Any cell can have any number of magic commands, but they must all appear first, before any code.

%connect_info        - show ICalico JSON connection information
%download url [file] - download a URL to a file
%%dot [options]      - create a [http://www.graphviz.org/doc/info/lang.html GraphViz dot] 
                       diagram with contents of cell
%edit FILENAME       - edit a file in an external editor
%%file FILENAME      - create a filename with contents of cell
%%html               - treat the cell as HTML
%%javascript         - treat the cell as Javascript data
%lang                - get information on current language
%lang LANG EXPR      - execute EXPR in given LANG
%%lang LANGUAGE      - change language for just this cell
%%%lang LANGUAGE     - change language for rest of cells
%magic               - get information on magic meta-commands
%nuget COMMAND ARGS  - execute a nuget command
%qtconsole           - start a qtconsole
%run FILENAME        - run a file (language determined by extension)
%%svg                - treat the cell as SVG data
%%time               - time how long it takes to run this cell

Examples:

%%latex 

\begin{eqnarray}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0 
\end{eqnarray}

Display Functions

These are available from the Calico: calico object:

  • animate(item[, item]*) - redisplay one or more items with little jitter (for animating a display)
  • display(item[, item]*) - display one or more items to the notebook output area
    • display_html(item)
    • display_javascript(item)
    • display_json(item)
    • display_svg(item)
    • display_png(item)
    • display_jpeg(item)
    • display_latex(item)
    • display_pdf(item)

Examples:

for i in range(10):
    calico.animate(image)

calico.display_json(json_data)

Rich Media Objects

All of the rich media objects are available from the Calico: calico object.

  • Audio(URI)
  • HTML(string)
  • Javascript(string)
  • Latex(string)
  • Math(string)
  • Table()
  • Image(URI)
  • YouTubeVideo(id, width, height)
  • IFrame(src)
  • SVG(xml)
  • FileLink(filename)
  • FileLinks(directory)
  • VimeoVideo(id)

Examples:

calico.display(calico.HTML("<b>This is bold!</b>"))
calico.HTML('<iframe src=http://en.mobile.wikipedia.org/?useformat=mobile width=700 height=350></iframe>')
calico.Latex("""
\\begin{eqnarray}
\\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\
\\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\
\\nabla \\times \vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\
\\nabla \\cdot \\vec{\\mathbf{B}} & = 0 
\\end{eqnarray}    """)

Widgets

Widgets allow for creating interactive interfaces, when connected to an executing kernel. All of the widgets are available from the Calico: calico object.

  1. AccordionWidget
  2. BoundedFloatTextWidget
  3. BoundedIntTextWidget
  4. ButtonWidget
  5. CameraWidget
  6. CheckboxWidget
  7. ContainerWidget
  8. DropdownWidget
  9. FloatProgressWidget
  10. FloatSliderWidget
  11. FloatTextWidget
  12. HTMLWidget
  13. ImageWidget
  14. IntProgressWidget
  15. IntSliderWidget
  16. IntTextWidget
  17. LatexWidget
  18. PasswordWidget
  19. PopupWidget
  20. RadioButtonsWidget
  21. SelectWidget
  22. TabWidget
  23. TextWidget
  24. TextareaWidget
  25. ToggleButtonWidget
  26. ToggleButtonsWidget

Those above that are container widgets:

  • AccordionWidget
  • ContainerWidget
  • PopupWidget
  • TabWidget

All of these widgets have display() and animate() methods.

Widget().display()
w1 = calico.AccordionWidget(children=[calico.ButtonWidget()])
w2 = calico.BoundedFloatTextWidget(description="BoundedFloatTextWidget")
w3 = calico.BoundedIntTextWidget(description="BoundedIntTextWidget")
w4 = calico.ButtonWidget(description="ButtonWidget")
w5 = calico.CameraWidget() # broken
w6 = calico.CheckboxWidget("CheckboxWidget")
w7 = calico.ContainerWidget(children=[calico.ButtonWidget()])
w8 = calico.DropdownWidget("DropDownWidget") 
w9 = calico.FloatProgressWidget(description="FloatProgressWidget")
w10 = calico.FloatSliderWidget(description="FloatSliderWidget")
w11 = calico.FloatTextWidget(description="FloatTextWidget")
w12 = calico.HTMLWidget("<b>Hello World!</b>", "HTMLWidget")
w13 = calico.ImageWidget(format="svg", _b64value="iVBORw0KGgoAAAANSUhEUgAAAQYAAAF0CAYAAADB35f2AAAABmJLR0QA/wD/AP+gvaeTAAAYAElEQVR4nO3df3xcdZ3v8ffnTJJpaNlCERbayg/rUgXZXaSQzCSwqZd11ZUfulKwSavoPhYVcK+P9brch8ACKi7q3rt3AV103UqTFAz3rrAo7gpuupDMJLUVf/BLAfnVlB/S8qulnSRzPvePpgt6mjY/zpwzybyef/Bg0jnfz+dkJu/5njPnhwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6bG0G5gJ1vS2zWmYs+u8wO2nH8wX7027H8Sns9j8doXBH2TNb16RL+5Mu59qEaTdwExQP2fX37nbmrJU6O7P/2Ha/SAeXYXcCeZWNPN/Hjb/P2n3U00Ihglwt+PH/neOm/+DOzOtWWF3GDRIktzmpNtMdSEYJiIMLpA0Mvbo1HXF3AfSbAfT111sfr/clo89HA3Nv5hqQ1WGT74J6io2f0VufzX28MkG6S0zdZt0TW/bQZn6kTdnMuWDprJ8uZx5MeP2aPupfS/E3VsS1vS2zanPlh6QdIwkyfwfOnIDf5luV9WlLu0GZoqRXXM+X5ctrTbpUElHlqRPS/pc2n3ty9q+1iMtKLcEbm8Lg/BN5rZE0hKptECS3Kf2uRAEoVxSVyG3zaRfheaPBGHwq9D8Pg8z/atb+56McTViV58tfUp7QkHaaqN1V6TXTXVixjAJncXmPze3b4w9fFVBuLSjeXBzqk2N6e1tq3u6cWdzWM40ybxFUrOkI1Jq52lJAyYVwjAYXDxSX1y+fP1oSr38hpv6WhaWg/AXkuZJkpl/oj038LWU26o6zBgmIfvUG9cML958oaQ/lHSAwuAaSe1p9dPT2zZvuGH4XTI/c0ilP1UYLJB5Wu283hGS3ufS+ywINZQtvdDZn78jML9tVxj820db+19Jq7FyEF6tsVCQdN/CXXO+sa/n1ypmDJPU3Z8/zc3/c+yhB24tK1sKxaTq9xRyjSPm57rbuS4tNymbVO04uFQyqdfMv729fqTngmWbXk2qdnchd4pLAxp731sYvKO9tb83qfozCcEwBV2FXI+kcyTJpI0P54pNV5jCStZc259/WyD9hcxXS5pfyVoJesmkTpe+3pEv/ryShdxl3QPNBbk1S5JJt7bni++rZM2ZjGCYgu7+/FFu/pCkOZJk5ue35wa+FXed3t62uqFsaYWkCyXl4x6/yhTN/PqFu+Z8uxL7I7r68x0y75R2z1o8U37r6qYNj8VdZ7YgGKaou5C7yqXLxh4+M7Yj8uU4xu7tbavbnC2tDNw+6+bHxjHmDPKIS59bXMquiysgenrb5g1nSw9JWjT2o7/tyBf/Zxxjz1Yc4DRF5bk7rpE0NPbwcIXBtN9ovb1tdZ2F3OotDcP3m3RjDYaCJL3ZpBuHsqUHOwu51b29bdPeQT6SLX1Gr4XCMw2l7BemO+Zsx4xhGroKuZWSuqXd09N6t+PPayk8OpWxuvtalnsQXifpuDh7nAUesDC4aKo7CdcOnnJMUM48oLHNPpl/uCM3cGOcDc5GzBimoT1XvEnmA5JkUrZs/pXJjrFmw8mHdxWbOz0IfyhCYW+O8yD8j87+fFfn3adO+riMoJy5Rnv2BUkb25sH1sbe4SxEMEyDmTwsZy6W5Nr9n7O7i82nT2TZK1xBZyF3Uf1o3YNy6xCzt30y83arG32gq9h8cU/POZmJLNNZbG7T2LdHktzD4GIzVcWBHtWON2MMugq5b0n60NjD+xaVsifua8fZjYXcokDqNumPEmlw9rk7Uzfa8cFTfvTUeE/o6TknM7x480btPhhNktZ15IupHYw20zBjiMFI3eglkraPPXzbULZ0wXjP7Sw2n5mRfkooTMtp5dG6e7v782eN94SRxUMf1Wuh8GpZ+kwyrc0OzBhi0lXIXSJpz6m7W8uZ8tIPNW3Yuuff77jj3dlt81/6sswvEr/3uLikr46Usp8+f/n6XXt+uKa37aC6bOmXYye8yaXLV+WLVX3CW7VhxhCTBS8e9L8l/Wrs4SGZMLh8z7+tG2j63W0HvXiPzC8WoRAnk3RhQ7Z0z5oNJx++54cNDcOX7QkFSU+MlrJfTqe9mYs3aYw6C7mzTfrO2MPR0O1EcxuxIPy+XjvNF5XxeGj+njo3D6WfSaqXJJNWtOeLt6Tc24xDMMSsu5D7oUvvGHv4I0lLJC1IsaVa8oLcfyHbfT6EpLs78kX25UwBmxIxK7v9paQ930icLEIhSQe/LhTKtvu1wBQQDDFb3VK4z6W70u6j5rnWt7cUfpJ2GzMVwRCzzkLuXWb/tSmBlJjp1O6+lvek3cdMxT6GGI2d7/BdSQek3QskSTslndGRL/4w7UZmGmYMMVnb17LMg/B2VSgUzALNqV8gswkdDTyj7F63g2UW+9uxUdK/dvXnT4574NmOGUMMeu4+9dDhTHmTzN8Y57h1mUYtOfS9WnLYGZp/wNEKrE7uZb2083E9+tztevS572mkvCPOkompyzRqyWHv1ZJDX1u30Ef18s7H9ehz34173TaHbietbik8F9eAsx3BME1jF1W5K+5DnA+e+3s69djP68A542fN9tIW9f3yUm3d/lCcpStuwdylaj32qqTX7e6G+S//8Yrj7x+Oa8DZjE2JadqSLX0l7lCY33i0/vj4r+3zD0eS5mUX6vTjr9f8A2bOsVPzG4/W6cdfP/F1a4xt3U4bfvlAjoCcIIJhGrr78+e5FOt35aZArcd+XvWZie2qqAsaddqxX5wR+x5MgU5devXk1m3p1fGtm9snu4vNnGE5AQTDFK3ZcPLhbn593OMuWtCigw5406SW+Z3GI7X44FPjbiV2ixa0aH7j0ZNa5ncaj9Lig1tj68Hdrn39eRXYO4JhihrKmetUgaMajzpkaodATHW5JB11yH+b0nJHxrtuB9eP1n01zgFnI4JhCrr68x9wtz+rxNjzsountNyBjVNbLknzsov2/6S92N/+iCl4X3chd87+n1a7CIZJ6inkFqgCmxB7BMHUtqcDq4+5k/gFwdQu+JyZ4nL74tJ16zae9IbYB54lCIZJGnH7rKTDKjX+9l1bprTcK7uG9v+klFXZuh0WDjd8thIDzwYEwyTcWMgtcvNPVLLG0AtTuw3mlhcLMXcSvy0vTnHdpvg7mYCP3bTh5Ni3U2YDgmESAuly7bk/QYU8sfUu7RzZuv8nvs6ukW167Nf/XqGO4vP483dOet12jmzVY89XbN3mhCP1l+//abWHYJigm/vzS0z6SKXrlMOS+n55udwndo9c91CFh69SOSxVuLPpK4cl9T/8N5Nctysrum5u/uHugabfq1iBGYpgmKBR88skxb8XbC+ee/le9T186X7PFRgp71Dfw5fq6Zc2JNFWLJ596ceTWrdnXtpY6ZbqPAwu2//TagvnSkxATyG3YFjarN1n6yVm3pxFOn5hh45+wztVl3mt9Gh5px7feqceHFqnl3c9mWRLsdnfuj0w1KVXdm1OpBeXSpmG4cUrl216PpGCMwDBMAHdxeZPudv/Sqt+ENTrwOwiNTYcop3D2/RKabPCcCStdmK1e90Wq7FhQarr5uZ/tSo3kNprXG0Ihv1wl3UXcw9IekvavaCiftGeK76VW9jtxj6G/bipmDtNhEItWNpZyC9Pu4lqQTDsR1lalXYPSEbAa/1fCIZ9cJeZ9O60+0BCzN/pzua1RDDsU9dA84mSFqbdBxKzcOw1r3kEwz6Y25+k3QOSFYQBl5wXwbBP7sabpMaEEh8G4uvKcd1xx7uz2w56cbsSOtoRVaPcIB24Il/cmXYjaWLGMI4X5r/0VhEKtSgzEoTHpd1E2giG8Z2QdgNIiVvNv/YEwzjcvObfHDUrDGr+tScYxlfzb44aVvOvPcEwvmPTbgDpcPMlafeQNoJhfIek3QBSc2jaDaSNYNiLK1yBpPlp94HUHNjb21bT30gRDHtxzIZTDk67B6TrqYbh2G8mNJMQDHsRlDMEQ40zt5p+D9T0dGlco3U7vH7kmrTbQHqsbnTfF6UEAAAAAAAAAEwe12PYi7XF5qaM25Fp94H0eBg81dHaP5B2H2nh68q9CNw+7dIH0u4DKQrC70l6b9ptpIUDnPYu0VvRAdWGYAAQQTAAiCAYAEQQDAAiCAYAETPy68o1vW1zso075x+xs3Hr8uXrR9PuB5io3t62uqcbdx5S2tn40vnL1+9Ku5/xVH0wuMvWDTa93d3O1u47Qx0llQ4Jw0BD2ZJ3FXLPuvQLc7u9Trr1vJbCo2n3DOzRfU/rm8K60bPldqZJS4dUOkxhENRnS+oq5LZKekJu37dM+TsrmwZ/bCZPu2epyo987C42nx66fcmkCd9o1KXbLQgv6WgefGCqdbsKue9K+tOpLo9Z4Xsd+eKUD3DqGmg6TmFwtaSzJrqMS/cqCP96VfPgnVOtG5eqnDF039N6sAfht9z9zMkml0lnKAze01XIXbuolP0fbGogST0952RKizd/WaEu1iT/vkw6UWHwg85C7vas9OEV+eK2CrW5X1W387Gzr2WpgnBA5mdOY5iMpP8+lC19v6eQq+lr9yE53fe0Hjy8ePMdJn1K0/jQNemMYWlwbbH5rTG2NylVFQzd/fmjFIT3uHlc93Q4fVi684aNJx0Q03jAXt2w8aQDPFP+vqR3xjTkm83tP2/uz6dyj4uqCYa1P/39uW5+u8V/Tf+3zx1u+JZ7de9PwczlLps73PBPkpriHNekQ0fNv9Oz8aTEb2VQNcEQ7Jj7FVXu1mDndBfyf16hsVHjuou58yV9sELDn1AabvhShcYeV1UEQ2dfy1JJlf3DNb+STQrEraeQa5R0ZSVrmPSRroGm4ypZ47dVRTCY+ZWq/DckR8wdqb+owjVQY0rmH5e0uMJl6hQGFQ2f35Z6MKz96e/PneY3EBPmbuclUQe1I3Cr1CbEb3DpjJ7etnlJ1JKqIBiCHXPfqYQujGLSiWv7WrlkG2LRNdC02KWTkqhlUnYkW3p3ErWkKggGmbclWS7IjC5Psh5msXKmTQkePezSHyVVK/VgMGlRkvU84XqYxYJwYZLlkvxbST0Y3O2IJOuZW6IvJmaxhN+7SX6opR4Mkg5MuF5N38UY8XG3uA/G25/E6lVDMAAzkpknfTRtYn+vBAOACIIBQATBACCCYAAQQTAAiCAYAEQQDAAiCAYAEQQDgAiCAUAEwQAggmAAEEEwAIggGABEEAwAIggGABEEA4AIggFABMEAIIJgABBBMACIIBgARBAMACIIBgARBAOACIIBQATBACCCYAAQQTAAiCAYAEQQDAAiCAYAEQQDgAiCAUAEwQAggmAAEEEwAIggGABEEAwAIggGABEEA4AIggFABMEAIIJgABBBMACIIBgARBAMACIIBgARBAOACIIBQATBACCCYAAQQTAAiCAYAEQQDAAiCAYAEQQDgAiCAUAEwQAgohqCYSThersSrofZ65WE672cVKFqCIankyxm0lCS9TB7mXmi711JW5IqlHowuPRMogWTfzExS3kYJPaHKklmntiHWurBYG4/TrKelzP3JlkPs9pPEq0WBonVSz0YlCn/qyRPqNrTj7T0b0ioFma59nxho5LdNL0tqUKpB0NH8+BmSRuTqOXS7VeYwiRqYfYzk0u6NYlaLt3b3lJ4IolaUhUEw5gvJlBjpN7tSwnUQQ0JM+W/c6lU6TrmdnWla7xeVQRDR774HUmFihZx+8fzWgqPVrQGas7qpg2PBdI/VrjMYHu+8P8qXOM3VEUwSFLodoGkVys0/CPlutErKzQ2aly9dJWkRyo0/Kvm9rGxzZbEVE0wrG4p3CepQ/HviHxJ0vs/1LRha8zjApKkFfnittD8TO1+r8XJ5fah9pZCst9+qIqCQdq9SeHSxyWNxjTkC2b+gY588ecxjQfs1ercwIPmdqakbTENOWrmF3a0FP5vTONNSlUFgyStyhdvkPQuTf8X/JAFYVN7buCuyS5oyR+mjSrjmvy3V+0thbtdapL04DTLv+BB+J723MDXpjnOlFVdMEhSR774Qx+te5ukGzT52cMrMr+0oZQ9ub158OEptpDYMemoTia9OJXlVuWLj+xoGF4m80s1+U2LUZe+7qN1x69qHrxzKvXjUpdm8X1Zddo9T0v62LpC7u/L5h82t7MkvWWcp4eSBs3tNsuWvrly2abnp1PbpcenszxmAbcnp7roBcs2vSrpC+s2nnSDl7IfdfOztHsmMd4H8UNufptLN67ODUx3thELS7uByVg7eMoxGq07JiMtCs3nm/mvA/Oh0XLml6tbCs/FVaer2Hyu3G6OazzMPC6tXJUv3hTXeGv784fVZcrHhm6LJB1mYfBiWRpS3ehjq5s2PBZXnbjMqGBIyk19LQvLQchZmLUsCN84dlRuTarKfQxp+2Br/xaXONmqRrn0s1oOBYlg2JfYppGYcbrSbiBtBMM4stI3JW1Puw8kbnuYKf9z2k2kjWAYx4p8cZuk69LuA8ly8+s5SpZg2KeGUvYL4lJwtWQou2vO59NuohoQDPuwYvn67XL7iJK7kAzS43L7yIrl69l8FMGwXx0thR/I/LK0+0DFfa6jpfCDtJuoFhzHMEHdhdy1Ll2Udh+In0nXteeLF6fdRzVhxjBBK3PFTyqZK00hWX879tridZgxTFJ3IXeOS1+XdFDavWBaXjTpL9rzxVvSbqQaMWOYpPZ88ZYgCN9i5msU33UjkJxRM18Tui0lFMbHjGEabu7PLxkxv9CkdkmHpd0P9uk5SessCL86jdPxawbBEIOennMyI4s3n+Rup8r8OHN7o5sfJOkNko5JuJ2fSzaccM29czXI/ISEqz5m0la5veDmT9nui6bcXb958aYVK24pJ9zLjEUwVFBXIbdSUneSNcMwc9Tq1r4pX0sgTmv7Wo8MgnJi90IY096RL65LuOaswz4GABEEA4AIggFABMEAIIJgABBBMACIIBgARBAMACIIBgARBAOACIIBQATBACCCYAAQQTAAiCAYAEQQDAAiCAYAEQQDgAiCAUAEwQAggmAAEEEwAIggGABEEAwAIggGABEEA4AIggFABMEAIIJgABBBMACIIBgARBAMACIIBgARBAOACIIBQATBUEFuPpp4zaBcTrrmeCy0kaRruuRJ15yNCIbKei7her6rYTjpmuPKPnP4c5ISDSpL/nc+KxEMFRQG4ZaES/76gmWbEv+UHs+KFbeUJf06yZqhedK/81mJYKig8NUDnpS0M8GSDyVYa2LMH0yqlEulnfUjTyRVbzYjGCro/OXrd0n6QVL1TLo9qVoT5dJ3k6pl0l0XLNv0alL1ZjOCocLc7bbEigVhcrUmqD4MEuvJzW9NqtZsRzBUmM/b3iPp6YrXMb+jvXnw4UrXmazzWgqPKplZw7PD5cy3E6hTEwiGClv9Bz/bIfOrKlwmNLdLKlxjyoIwuESV/nbC7aqPtva/UtEaNYRgSMCiXXP+SdKPKjW+Sdd25Is/r9T407Wytf9+SddWsMSPd2RL36jg+DWHYEjA8uXrRxWE75c0FPvg5r3181/+TOzjxmxHw/BnTPqPCgz9rILwrGr6mnY2IBgS0tE8uNmk90vaGteYLv2sYaT+3BXH3z8c15iVcsGyTSPWMHyupJ/EOOy20PysjubBzTGOCREMiWrPFzfUuTVJun+6Y5l0a7aUbVlx2j2JHkA0HSuXbXo+nLujVdK/xDDcAy41rc4NDMYwFn6Lpd1ALfpmX8uB2Uz5b+T2CUmNk1z8Wbld1Z4vfM1sZp4X4C7rLuQ/LvNLJR0xqWWlkplfJ/OrOpoHX65QizWPYEjR2r7WI4PM6F/L7WxJC/fz9PvN7eb64Ya/X7F8/fYk+qu0nt62eaU5uz5pbudJOmE/T98i81vDct01q1v7nkyiv1pGMFQBd9m6Yu7kUDrF3A6X+WKXSoH5llAaqg+D3rHjAWat7nta3xTWjb4jkBaFbgtNyprbkAfhM6G0YVXzwIaZOkMCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAjPD/AQ1K3gi2HDStAAAAAElFTkSuQmCC")
w14 = calico.IntProgressWidget(description="IntProgressWidget")
w15 = calico.IntSliderWidget(description="IntSliderWidget")
w16 = calico.IntTextWidget(description="IntTextWidget")
w17 = calico.LatexWidget("$x = \\frac{1}{2}$", description="LatexWidget") 
w18 = calico.PasswordWidget(description="PasswordWidget") #broken
w19 = calico.PopupWidget(description="PopupWidget", children=[calico.ButtonWidget()])
w20 = calico.RadioButtonsWidget(description="RadioButtonsWidget")
w21 = calico.SelectWidget(description="SelectWidget")
w22 = calico.TabWidget(children=[calico.ButtonWidget("B1"), calico.ButtonWidget("B2")])
w23 = calico.TextWidget(description="TextWidget")
w24 = calico.TextareaWidget(description="TextareaWidget")
w25 = calico.ToggleButtonWidget(description="ToggleButtonWidget")
w26 = calico.ToggleButtonsWidget(description="ToggleButtonsWidget")


for i in range(1, 27):
    var = "w%s" % i
    calico.display(globals()[var])

Charts

In addition, there are Javascript-based widgets:

Examples:

from Widgets import Lines

lines = Lines(3) # three lines
for label, line in [["Money", [1, 2, 3]], 
                    ["Power", [5, 6, 7]],
                    ["Wealth", [2, 4, 5]]]:
    lines = Lines(lines, line, label)
calico.LineChart(lines, {"width": 800, "height": 300, "chartArea": {"width": 300}}).display()