Commit Graph

808 Commits

Author SHA1 Message Date
MinRK
7607bb6a5b Ensure handler patterns are str, not unicode
Python < 2.6.5 doesn't accept unicode keys in f(**kwargs), and
base_project_url will always be unicode, which will in turn
make the patterns unicode, and ultimately result in unicode
keys in kwargs to handler._execute(**kwargs) in tornado.
This enforces that base_project_url be ascii in that situation.

Note that the URLs these patterns check against are escaped,
and thus guaranteed to be ASCII: 'héllo' is really 'h%C3%A9llo'.

If you actually use u'héllo' in your regex, it will not match the URLs
you think it should.
2012-02-02 15:18:54 -08:00
Brian Granger
f387e52610 Proper error handling for nbformat versions in client code.
1. Users are warned when an older nbformat notebook is converted.
2. The notebook notifies the user when a notebook that is too new
   is attempted to load.

To test these things, create a simple notebook. Then change its
nbformat field by hand to 2 (to test 1) and then 4 (to test 2).
2012-02-01 15:46:14 -08:00
Brian Granger
1ffb5ff262 Making keyboard shortcut for showing line numbers consistent. 2012-02-01 14:43:58 -08:00
Brian Granger
f9ce3fa493 Fixing #1337. Tooltip stops TAB from being handled by others.
Pressing TAB to get the tooltip "range(TAB" was inserting a TAB.
To get rid of this we are now telling CodeMirror to ignore it
and also stopping the event from bubbling up the DOM.
2012-02-01 10:26:07 -08:00
Brian Granger
e5bc1eef59 Fixing Shift-Enter bug in text cells.
Hitting Shift-Enter on an already rendered text cell should simply
move past it. It was causing the cell to enter edit mode. This
is not fixed.
2012-02-01 09:57:23 -08:00
Brian Granger
4ae865a988 Fixing #1348 to allow Ctrl-M M to work w/o releasing Ctrl. 2012-02-01 09:50:56 -08:00
Brian Granger
e59f95376d Major refactoring of saving, notification.
* Refactored the save widget so that the notebook doesn't depend
  on it.  Now the notebook emits events and the save widget
  observes those events.
* Created a new event system for all IPython events (events.js).
  We should start to use this to allow our classes to be loosely
  coupled.
* Created a new notification widget that should be used for all
  notifications. Uses new event system.
* Removed the kernel status widget.
* All kernel status message use new event/notification system.
* The print notebook view works again.
2012-01-31 21:42:01 -08:00
Brian E. Granger
241e65b5c1 Merge pull request #1347 from Carreau/fixes-1243
Fix weird magic completion in notebook.  Closes #1243.
2012-01-30 15:22:03 -08:00
Brian E. Granger
96e5089d5d Merge pull request #1346 from astraw/alternate-url-fixups
fixups for alternate URL prefix stuff
2012-01-30 15:16:15 -08:00
Brian Granger
d7efc05572 Removing extra refresh in PlaintextCell. 2012-01-30 14:54:26 -08:00
Brian Granger
bdd17da81d Fixing minor bugs in nbformat and saving.
* json separator is not ',' to avoid adding extra space at EOL.
* vs used throughout nbformat.current.
* Cell collapse is properly loaded from notebook.
2012-01-30 14:20:54 -08:00
Thomas Kluyver
abd3989bb6 Specify UTF-8 encoding for saving notebook as script. 2012-01-30 21:48:05 +00:00
Thomas Kluyver
53b10b861c Save notebook as script using unicode file handle.
Closes gh-1345
2012-01-30 21:43:48 +00:00
Brian Granger
a00fc0165b Heading/plaintext cells now wired up to toolbar UI. 2012-01-30 12:08:36 -08:00
Brian Granger
2f88004a05 Updating JS part of plaintext cell handling. 2012-01-30 11:50:04 -08:00
Brian Granger
fd3d5edb66 Finishing first draft of RST and heading cells. 2012-01-30 11:50:03 -08:00
Brian Granger
f65adcf33e Adding new HeadingCell. 2012-01-30 11:50:03 -08:00
Brian Granger
47e4e1e2c4 A first go at RST cell support in the notebook. 2012-01-30 11:50:03 -08:00
Andrew Straw
ee9da32b05 use full URL when using alternate URL prefix 2012-01-30 07:19:33 +01:00
Andrew Straw
332fdf662c let websocket server be traited config option 2012-01-29 07:29:33 +01:00
Andrew Straw
bd7f1f941c allow setting base_project_url and base_kernel_url to non-default values 2012-01-29 07:29:33 +01:00
Andrew Straw
c706d6ed99 bugfix: use baseProjectUrl when re-writing URL in address bar 2012-01-29 07:29:33 +01:00
Andrew Straw
81a636dabf use Tornado's handler.static_url() in templates 2012-01-29 07:29:33 +01:00
Fernando Perez
5067e77292 Merge pull request #1334 from fawce/keycuts
Make Control-S (or Cmd-S on Apple) save the actual notebook instead of bringing up the useless 'save as html' dialog.  This doesn't disable the C-m-s keybinding, simply adds the far more familiar and common C-s.
2012-01-28 16:39:06 -08:00
Brian Granger
1ed9a21039 Adding "Cell" to cell related Edit actions. 2012-01-27 16:16:22 -08:00
Brian Granger
9b723324db Wired the rest of the toolbar buttons up to actions. 2012-01-27 13:54:37 -08:00
Brian Granger
428c82877f Further work on the toolbar UI.
* Cell type selection box is wired up and styled.
* New View menu that allows toolbar/header to be toggled.
2012-01-27 13:45:43 -08:00
Brian Granger
4c88c4686c First draft of toolbar.
We are adding a thin horizontal toolbar below the menubar. This
commit adds the basic UI elements. Still need to hook up the actions
and make this hidable.
2012-01-27 12:31:28 -08:00
fawce
a53def4a49 fixed missing return for keybinding 2012-01-27 14:49:39 -05:00
fawce
6120c07c4d added key handler for control-s to notebook, seems to work pretty well 2012-01-27 14:18:48 -05:00
Thomas Kluyver
717285060e Use explicit for loop to find section in testing. 2012-01-27 11:16:35 +00:00
Thomas Kluyver
4b51bacbb2 Don't raise errors from coverage post-processing. 2012-01-27 01:16:46 +00:00
Thomas Kluyver
93a8b9d215 Use separate option --with-xml-coverage to ask for coverage xml output. 2012-01-27 01:16:46 +00:00
Thomas Kluyver
24af9ac298 Use standard command for coverage. 2012-01-27 01:16:46 +00:00
Thomas Kluyver
e29d417931 Produce coverage xml reports from subprocess test runners. 2012-01-27 01:16:46 +00:00
Min RK
125dc8cb74 Merge pull request #1206 from minrk/fixConsole
The notebook js transforms ANSI-escaped text to HTML.  The transformed HTML was previously persisted to ipynb files, rather than the true output.  This has been fixed, and notebooks with ANSI-colored output will need to be re-run for colored output (tracebacks) to be displayed correctly after this change.
2012-01-26 17:14:29 -08:00
Fernando Perez
df7d91f30a Add linewrapping to text cells (new feature in CodeMirror). 2012-01-25 22:17:12 -08:00
Fernando Perez
ef1cc56996 Merge pull request #1327 from ellisonbg/updatecm2
Updating CodeMirror to the latest dev master. 

We had found a bug in CodeMirror that was forcing us to call refresh/focus/refresh on Firefox. This bug was fixed upstream. This PR pull in the latest CM with the bug fix and removes the extra refresh calls. All known CM bugs should be fixed, yeh!
2012-01-25 22:16:13 -08:00
Fernando Perez
219ba77482 Merge pull request #1326 from ellisonbg/removeace
Removing Ace edit capability.

We have fixed some of the problems with CodeMirror and feel that
the differences between Ace and CodeMirror are not great enough
to justify having both. We may reintroduce a full-window edit
mode using CodeMirror, but that will come separately.
2012-01-25 20:30:36 -08:00
Fernando Perez
1d5c57d6c9 Remove debug print statement left over from PR #1316. 2012-01-25 19:43:14 -08:00
Brian Granger
0bc0c560aa Removing extra refresh that is no longer needed because of CM fix. 2012-01-25 14:03:49 -08:00
Brian Granger
262d73f652 Updating CodeMirror to latest to incorporate bug fixes. 2012-01-25 13:46:48 -08:00
Brian Granger
c29e928054 Removing Ace edit capability.
We have fixed some of the problems with CodeMirror and feel that
the differences between Ace and CodeMirror are not great enough
to justify having both. We may reintroduce a full-window edit
mode using CodeMirror, but that will come separately.
2012-01-25 12:32:06 -08:00
Matthias BUSSONNIER
7e268d8ec8 execute_get_cell -> execute_cell
wrongly rename execute_cell leading to broken execute_all_cell
2012-01-25 15:15:52 +01:00
Matthias BUSSONNIER
8ad0cbe4c0 forgotten selected_cell -> get_selected_cell
somwhere in renaming `selected_cell` to `get_selected_cell` one
occurence has been forgoten in `codecell.js` this was mainly visible by
the fact that the 'show pager' button of the tooltip was non fonctionnal
anymore.
2012-01-25 14:47:15 +01:00
Thomas Kluyver
b01e9ea082 Pass subprocess test runners a suitable location for xunit output. 2012-01-24 21:23:58 +00:00
Brian E. Granger
d8e1b38507 Merge pull request #1303 from ellisonbg/updatecm
This updates CodeMirror and refactors a good bit of the notebook code related to it.

* Updated CodeMirror to the latest stable release.
* Fix numerous bugs related to the CM update.
* Refactored the Cell API and the notebook's cell handling methods.
* Generalized split/merge to work with all cell types.
* Generalized "Edit in Ace" to work with all cell types.
* Loading optimizations: pager starts out hidden, faster loads.
* Shading added to Markdown and HTML cells when they are being edited.
* This branch will require solid usability testing on Safari, FF and Chrome before merging.
* Fixed a number of CM related bugs.
2012-01-23 19:29:53 -08:00
Brian Granger
d3c3c9e712 Fixing auto-indent issues in CodeMirror config.
* Block-level indent/dedent works.
* Tab in docstrings works.
2012-01-23 19:27:18 -08:00
Brian Granger
5947849342 Fixing broken notebook saves. 2012-01-23 19:00:25 -08:00
Brian Granger
c94e6f34d7 Disallow empty notebook names. 2012-01-23 15:36:01 -08:00
MinRK
370078020f flush outgoing heartbeats
Prevents mismatch between heartbeat timer and actual heartbeat send/recv events.

Applied in notebook and parallel.
2012-01-23 13:42:00 -08:00
Brian Granger
244ed795d3 Adding refresh/focus/refresh back to edit to fix bug in FF. 2012-01-23 11:56:07 -08:00
Brian Granger
e6e7d41f5b Fixing bugs in CodeMirror refreshing. 2012-01-23 11:33:02 -08:00
Brian Granger
1e2e086508 Optimizing notebook loading. 2012-01-23 11:33:01 -08:00
Brian Granger
bf0353ae47 Start the pager out collapsed. 2012-01-23 11:33:01 -08:00
Brian Granger
a997e50782 Ace editor now works with Markdown and HTML cells with proper modes. 2012-01-23 11:33:01 -08:00
Brian Granger
68fe221a29 Lots of small notebook improvements.
* Merge/split works for all cell types.
* Notebook.select won't select an already selected cell.
* Bugs in markdown cell editing fixed.
* border-box-sizing used for Markdown cells to get correct css boxes.
* Shading/border added to Markdown cell editor.
2012-01-23 11:33:01 -08:00
Brian Granger
ecfdfad2bf Refactoring of the notebooks cell management.
* Cell insertion code completely rewritten. We now have two methods
  rather than 9: insert_cell_above, insert_cell_below.
* Renaming methods to be more consistent.
* Creating new methods to provide a uniform API.
* Minor bug fixes.
2012-01-23 11:33:01 -08:00
Brian Granger
ccd4de93c7 Updating cell logic.
* Added placeholder to the base Cell class.
* Removed the \u0000 char at the beginning of the TextCell
  placeholder that was there for a CodeMirror bug workaround.
* Other refactoring of Cell related Notebook methods.
2012-01-23 11:33:01 -08:00
Brian Granger
e1a8835dfa Work on the base Cell API.
* Added set_text/get_text in favor of get_code/set_code and
  get_source/set_source.
* Added methods to the base class (get_text, set_text, refresh,
  edit, render, toJSON, fromJSON).
2012-01-23 11:33:01 -08:00
Brian Granger
deb800daff Fixing bugs that have shown up since updating CM to 2.2. 2012-01-23 11:33:01 -08:00
Brian Granger
13ca0054f7 Updating to CodeMirror 2.2, latest stable release. 2012-01-23 11:33:01 -08:00
Brian Granger
1b8b716b48 Removing left over console.logs. 2012-01-19 09:47:05 -08:00
Brian Granger
e93d4a9308 Minor, but important fixes to cut/copy/paste.
When enabling paste, I was adding the click callback multiple
times causing paste to overwrite multiple cells. I also found
a bug that was doing paste above instead of paste below.
2012-01-19 09:47:05 -08:00
Brian Granger
43c82a2b80 Fixing minor typo in menubar.js. 2012-01-18 12:47:53 -08:00
Brian Granger
183e9ccfb1 Minor changes to Ace widget.
* Font size and family matches that of our CodeMirror editors.
* Help link to Ace keyboard shortcuts added to help.
2012-01-18 12:16:39 -08:00
Brian Granger
f04e31b80c Add Ace editing mode for code cells. 2012-01-18 10:31:59 -08:00
Brian Granger
d369606683 Cell splitting and merging is done! 2012-01-17 18:27:58 -08:00
Brian Granger
b42cafa15d More of the initial split cell capability. 2012-01-17 18:27:58 -08:00
Brian Granger
23b5fd856a Basic code cell splitting implemented. 2012-01-17 18:27:57 -08:00
Min RK
41149ba246 Merge pull request #1253 from ivanov/profile_auto_create
set auto_create flag for notebook apps

Fixes first use of bundled profiles when used with the notebook (e.g. ipython --profile=sympy).
2012-01-17 18:27:55 -08:00
Brian Granger
06cc810b80 Adding keyboard sortcuts for cut/copy/paste. 2012-01-17 18:27:52 -08:00
Brian Granger
ccc5aa04b2 Added cell level cut/copy/paste. 2012-01-17 18:27:51 -08:00
Brian Granger
0051dd3bda Fixing docstring in the notebook manager. 2012-01-17 18:27:51 -08:00
Brian Granger
eef6d192e4 Created new print view for notebook printing. 2012-01-17 18:27:50 -08:00
Brian Granger
76f500b3c3 Improving the save notification.
* Added last saved with time/date display.
* Reimplemented save widget status updates.
2012-01-17 18:27:50 -08:00
Brian Granger
2a7666639c Fixing bug in dialog closing, drafting print css. 2012-01-17 18:27:50 -08:00
Brian Granger
531cfee407 Remove Rename dialog from the DOM upon closing it. 2012-01-17 18:27:49 -08:00
Brian Granger
1f1132c5a4 More minor theme/styling changes. 2012-01-17 18:27:49 -08:00
Brian Granger
bf5ffad6f8 Minor style changes. Using better fonts, indenting menu items. 2012-01-17 18:27:49 -08:00
Brian Granger
10a76e8537 Solid first go at jquery-ui based menus. 2012-01-17 18:27:49 -08:00
Brian Granger
b3de72087c Minor fixes to the menu shortcuts. 2012-01-17 18:27:47 -08:00
Brian Granger
be8f252e78 Finishing work on "Make a Copy" functionality. 2012-01-17 18:27:47 -08:00
Brian Granger
8cd495c38f Beginning work on notebook duplication. 2012-01-17 18:27:46 -08:00
Brian Granger
52a2600c87 Improved notebook renaming.
There is not a rename dialog that is available in the File menu and
when you click on the notebook name.
2012-01-17 18:27:46 -08:00
Brian Granger
b010d14f58 Cleaning up menu code.
* QuickHelp button has been removed in favor of a Help menu item.
* Keyboard shortcuts are now in the menus.
* Numerous fixes to subtle aspects of the wijmenu implementation.
2012-01-17 18:27:46 -08:00
Brian Granger
33f5cea94b Implemented menu based UI using Wijmo. 2012-01-17 18:27:45 -08:00
Brian Granger
e4489da763 Initial work to add Wijmo based menu. 2012-01-17 18:27:45 -08:00
Paul Ivanov
9e475c3dc5 set auto_create flag for notebook apps 2012-01-10 16:52:07 -08:00
Matthias BUSSONNIER
096ba3fcc4 fix weird magic completion
should fix #1243

handle magic as a special case, but the completer should be moved in it's
own clase for 0.13
2012-01-08 16:39:11 +01:00
Min RK
e4beaf0a73 Merge pull request #1211 from minrk/localfiles
Files in notebook-dir are served by the nbserver as `files/<relativepath>`.
2012-01-06 02:00:14 -08:00
Min RK
7be995118d Merge pull request #1224 from minrk/dblclick
* edit text cells on double-click instead of single-click
* render text cells on unselect instead of focusout.
  Only renders when selecting another cell, and prevents rendering when 
  switching applications/windows/tabs.
2012-01-06 01:59:02 -08:00
MinRK
87877e9a7f explicit for-loop in cleanup_kernels
makes single-iteration clearer than while loop, as reviewed by @fperez.
2012-01-05 21:53:34 -08:00
MinRK
1385ef8ebb log heartbeat failure in notebook 2012-01-05 21:12:58 -08:00
MinRK
655bf1bacc prevent delayed heartbeat from starting on closed sessions 2012-01-05 20:05:32 -08:00
MinRK
2c8106bf42 trigger textcell render on unselect instead of focusout 2012-01-05 19:20:17 -08:00
MinRK
5cce816d2a edit text cells on double-click instead of single-click
Single-click to edit gets in the way of using interactive elements (e.g. non-flash videos),
and select/copy of the rendered HTML.  Switching to double-click makes the edit action more intentional.
2012-01-05 19:12:44 -08:00
MinRK
1d65883212 serve local files as files/foo 2012-01-03 11:40:15 -08:00
MinRK
ba5e2538b5 use absolute URLs for static files 2012-01-03 11:37:15 -08:00
MinRK
d67865c73c authenticate local file access
adds AuthenticatedFileHandler, which extends StaticFileHandler with
a simple authentication check before providing access to files local
to the notebook dir.
2012-01-03 11:30:00 -08:00
MinRK
831fb175f8 serve files in notebook-dir as local/foo 2012-01-03 11:30:00 -08:00
MinRK
7691f4f9fc store nonexistent prompt number as null 2011-12-24 10:59:17 -08:00
MinRK
220a5f0664 don't preserve fixConsole output in json 2011-12-24 10:45:47 -08:00
MinRK
15ca2aaa20 add first_beat delay to notebook heartbeats
Heartbeats start immediately, causing false heart failures on slow systems that can take a while to start kernel subprocesses.

Also adds a 'flush' to the heartbeat callback (just like in IPython.parallel), to protect against server load being detected as heart failures.
2011-12-22 22:45:44 -08:00
MinRK
13fc7e5c41 cleanup connection files on notebook shutdown
Kernels would not linger, but the KernelManagers are not garbage-collected on shutdown.
This means that connection files for kernels still running at notebook shutdown would not be removed.

Also disable the unnecessary (and actively unhelpful) SIGINT handler inherited from the original
copy/paste from the qt app.
2011-12-20 12:32:08 -08:00
Fernando Perez
572e1eb56f Add message about how to stop the notebook. 2011-12-18 21:55:05 -08:00
MinRK
602d2ec18a fix IOPub parent checking in notebook
prevented 'dead kernel' messages from arriving.
2011-12-18 18:21:47 -08:00
Bradley M. Froehle
930ba99b19 Show class init and call tooltips in notebook.
Closes #1094.
2011-12-18 12:36:38 -08:00
Fernando Perez
7c7a48e2ce Define flags in application that's going to use them. 2011-12-17 18:12:41 -08:00
Fernando Perez
b3d5732690 Fix typo in help string 2011-12-17 14:31:33 -08:00
Fernando Perez
fd485e23fc Add --script flag as shorthand for the script autosave notebook option. 2011-12-17 13:38:52 -08:00
Stefan van der Walt
6a8a66fa8b Correctly set read_only meta name for use in javascript. Note that this has a different meaning than in the Python code: not whether the read-only flag was specified upon launch, but whether the notebook is in read-only mode and input should be disabled. 2011-12-13 18:02:17 -08:00
Stefan van der Walt
4476c69984 Hide top login/logout buttons on login/logout pages. 2011-12-13 17:44:29 -08:00
Stefan van der Walt
52a2f081fe Split read-only logic into three functions: read_only, logged_in, and login_available. Move display logic from javascript into templates. 2011-12-13 17:22:13 -08:00
Stefan van der Walt
3bf57a7f5d Improve three-state read-only logic. 2011-12-13 16:15:20 -08:00
Stefan van der Walt
23ff0c2f88 On the login page, focus on the password field. 2011-12-13 16:13:34 -08:00
Stefan van der Walt
06d34fea72 Redirect to front page upon read-only logout. 2011-12-13 16:13:34 -08:00
Stefan van der Walt
ec89b7c98b Display login button in read-only mode. 2011-12-13 16:13:34 -08:00
Fernando Perez
b98a86f818 Merge pull request #1146 from minrk/savescript
Allow saving notebook.py next to notebook.ipynb.  This allows notebooks to be imported or %run via their .py companion file.
2011-12-12 22:38:45 -08:00
MinRK
dca65fa91d include error in 'Unexpected error' message. 2011-12-12 21:09:42 -08:00
MinRK
6947e47822 Merge PR #1132
Improve read-only style

closes #1132
2011-12-12 15:19:04 -08:00
MinRK
218a88a47b move drag_info show/hide to page.ready, to avoid flouc 2011-12-12 15:17:20 -08:00
Matthias BUSSONNIER
c6457428c8 notebook : update logo
Change Notebook logo to IP[y]:Notebook
    Make it clickable to return to the dashboard
    Thanks to @MinRK for the css.

    closes #607

    png logo is 48px high (2x display), for balance of
    browser display / zoomed appearance.
2011-12-12 15:03:38 -08:00
MinRK
a8425e5c62 Merge PR 1135
settings for tornado web application can now be specified via the
NotebookApp.webapp_settings configurable.  This principally allows
users/admins to serve custom templates, css, and javascript, without
having to modify IPython's shipped sources.

closes #1135
2011-12-12 14:17:07 -08:00
MinRK
88340d682c update iptest exclusions with recent changes 2011-12-12 11:47:51 -08:00
Matthias BUSSONNIER
16946ef7bb unhide on not read-only instead of inverse 2011-12-11 13:02:13 +01:00
Timo Paulssen
eb51077b26 look for mathjax in the custom static path if it's supplied. 2011-12-10 22:44:12 +01:00
Timo Paulssen
7fa16984cc this is how the configuration system is supposed to be used. 2011-12-10 18:49:41 +01:00
Timo Paulssen
ec0026bbf9 use IPythons config subsystem to allow overrides to the tornado web app. 2011-12-10 16:30:12 +01:00
Matthias BUSSONNIER
540f77f96a [notebook] read-only disable element
* remove the drag file to upload text
    * prevent drag binding to show upload form
2011-12-09 16:45:19 +01:00
Matthias BUSSONNIER
b0ad2c6f29 [notebook] read-only: disable name field 2011-12-09 12:36:11 +01:00
MinRK
d7970d29a5 skip codemirror key-event handling when read-only 2011-12-08 12:47:08 -08:00
Matthias BUSSONNIER
70fa9c8b2a totally remove pager when read only
closes #1126
2011-12-08 12:46:31 -08:00
MinRK
46cd0213a6 allow saving notebook.py next to notebook.ipynb
enable with:

    NotebookManager.save_script=True
2011-12-07 16:37:11 -08:00
Matthias BUSSONNIER
855fd6f923 notebook: code Readability. Add dismissing symbols
* As minrk suggested, changes list of char to string.split()
	* add also a few dismissing symbold like `,` `=` and `*` for
	  the completer
2011-12-07 08:03:37 +01:00
Matthias BUSSONNIER
44c959f88b notebook: fix, only one completion autopick 2011-12-07 08:03:37 +01:00
Matthias BUSSONNIER
c596d17eaf completer update code-miror on the fly
Following @fperez advice, change the completer apparence to avoid user confusion.

	- Append what the user type in the completer in code-miror, (Almost) as if
	  codemirror still have focus
	- distinguish between "fixed" completion  part, which was sent to the kernel
	  (now written in bold) and filtering one,handled only in JS,that the user
	  can errase without dismissing the completer

	I changed the action of <Space> to dismiss the completer with what have
	already been typed and inserting a space instead of "picking" the currently
	hilighted option

	<Escape> will still dissmiss the completer and remove everything the user as
	typed since the completer invocation

	Note that while the completer is shown, code-mirror does not show any
	blinking cursor
2011-12-07 08:03:37 +01:00
Matthias BUSSONNIER
1fbf5b18dd Apply pep8 to js 2011-12-07 08:03:37 +01:00
Matthias BUSSONNIER
933cf3606b usability and cross browser compat for completer
- dissmiss the completer, append what alredy type, **Plus** one caracter in
	  some cases

	  List of special caracter that are handle are in a given list `()[]./\-+`
	  for the moment. usefull for exaple when typing :
	  >>> np.s<tab>in(
	  and not having to type '(' twice.

	  they are handle separately has the [a-zA-Z] ones because otherwise they
	  will screw up the regexp, and are opt-in to avoid bugs with invisible
	  caracters send because some browser have 'keypress' event for meta keys

	  close #1080

		Note to this commit :
	  list of test for the completer across browser with --pylab=inline flag

	  #test direct one completion
	  plt.an<tab>       -> plt.annotate

	  #test filter,tab, only one completion
	  plt.a<tab>n<tab>  -> plt.annotate

	  # test partial common beggining
	  # test dismmised if user erase
	  plt.a<tab>nn<backspace><backspace>u<tab>                -> completer to `aut`
	  ........................................<tab><tab><tab> -> nothing should append
	  .......................................................<backspace><backspace<backspace> -> completer cancelled

	  #test dismiss if no more completion
	  plt.s<tab>c  -> completer 3 choices
	  ...........u -> dismissed whith what user have typed.  `plt.scu`

	  # test dismiss in no completion, special symbol
	  # opt-in list of caracters +-/\()[].
	  np<tab>.s          -> a 'dot' sould dismiss the completer and be appended
	  .........<tab>in(  -> np.sin(
	  np.s<tab>in[       -> np.sin[
2011-12-07 08:03:37 +01:00
MinRK
bf7f3336ae Split swallow_argv into standalone function in lib.kernel
adds frontend_flags/aliases traits to ConsoleApp derivatives for
use in this function.
2011-12-05 17:41:00 -08:00
Min RK
b6bb3c8c7a Merge pull request #1077 from minrk/nb
allow the notebook to run without MathJax

adds --no-mathjax flag for disabling mathjax, and moves the mathjax URL decision to the server from the browser.

closes #1071
2011-12-05 16:49:04 -08:00
MinRK
7774ddd0a5 Merge PR #1098: notebook config-panel style
Fixes some style consistency issues in config section of side panel.

closes #1098
2011-12-05 15:52:01 -08:00
MinRK
26416b6d2d make 'time before tooltip' style more consistent 2011-12-05 15:51:29 -08:00
MinRK
d6ac9f3ec3 add server/permission info in failed-mathjax dialog
It's now more clear that offline mathjax info is server-related.
2011-12-05 15:21:49 -08:00
MinRK
41b493f540 Cleanup some inappropriate javascript
prototype functions were actually called which should not happen, and
resulted in objects and their attributes being passed to their own methods
as arguments.
2011-12-04 14:20:48 -08:00
Matthias BUSSONNIER
e268dd0650 fix cancell->cancel typo in js
prevented closing tooltip

closes #1095
2011-12-04 13:52:13 -08:00
Matthias BUSSONNIER
057c304162 notebook: config section UI
Polish config section appearence in left pannel, elements alignement, time units...
2011-12-04 12:56:01 +01:00
MinRK
72fb49b7c7 adjust missing mathjax handling per review
* use jQuery syntax to construct dialog
* server determines where MathJax comes from via mathjax_url configurable (default local/CDN priority unchanged)
2011-12-01 15:59:27 -08:00
MinRK
36024bcf83 allow the notebook to run without MathJax
* add `--no-mathjax` flag for disabling mathjax in the notebook server
* A jQuery dialog with our 'no mathjax' message will appear if mathjax is unavailable, but the notebook will be fully functional after dismissal.
* Various calls to MathJax.Hub.typeset moved to Cell.typeset, which checks for MathJax existence and is a no-op without it.

closes #1071
2011-11-30 20:11:37 -08:00
MinRK
f18d172fdf don't swallow regular key events in read-only mode 2011-11-30 15:10:31 -08:00
Matthias BUSSONNIER
ca846ecd02 as you type Completer, propagate event by hand
Should fix completer behaviour on firefox...
2011-11-30 12:04:37 +01:00
Matthias BUSSONNIER
90b6f1b8d6 fix double tooltip
there was a possibility of 2 tooltip if clicking in two cell
	and one that it wasn't able to dismiss
2011-11-30 00:33:38 +01:00
Matthias BUSSONNIER
1b68c17acc tidy up code 2011-11-30 00:33:38 +01:00
Matthias BUSSONNIER
1fb62e259e tab pick if only one match left 2011-11-30 00:33:38 +01:00
Matthias BUSSONNIER
5e1bd70d36 tabs fast forward user tab 2011-11-29 20:59:37 +01:00
Matthias BUSSONNIER
27f2b2b876 Handle lower and uppercase 2011-11-29 17:54:27 +01:00
Matthias BUSSONNIER
5f70418dc5 protect shift extend on Uppercase 2011-11-29 17:54:27 +01:00
Matthias BUSSONNIER
06f63549e5 Base of an as you type conpleter.
when invoking the completer, instead of having to chose/dismiss, you can
	continue typing, it will filter the result "as you type" and dismiss itself
	if ther is no match left.

	As it is now, it's only works with lowercase letters, I need to find a workaroud
	for this.

	for example
	if you type :
	* P-y-<tab>-S-o-m-e-t-h-i-n-g
	* it will propose PySide, but will dismiss when 'o' is pressed and pasting Pyso with a lower case 's'
2011-11-29 17:54:27 +01:00
Fernando Perez
df502540cc Fix bug where "don't leave" dialog was appearing when not needed in nb.
Closes #1058
2011-11-28 13:01:23 -08:00
Fernando Perez
160ff3145c Match the max tooltip and bottom area sizes in the notebook.
This prevents the tooltip from going below the bottom of the page,
which makes it inaccessible by any mechanism and thus useless.
2011-11-27 19:49:00 -08:00
Stefan van der Walt
6ffc2ffd4b Clean up javascript based on js2-mode feedback. 2011-11-27 15:23:40 -08:00
Fernando Perez
983b3a7bc8 Fix inline backend logic and avoid tests if mpl not available. 2011-11-27 00:28:26 -08:00
Bussonnier Matthias
ea32220f8f fix firefox (windows) break line on empty prompt number 2011-11-25 15:07:34 -08:00
Thomas Kluyver
9ab78ba545 Merge branch 'flush' 2011-11-24 22:00:25 +00:00
Thomas Kluyver
6ae0797040 Notebook: don't change cell when selecting code using shift+up/down.
Closes gh-787; closes gh-1038 (rebased to prevent recursive merge).
2011-11-24 13:34:04 -08:00
Matthias BUSSONNIER
52d8a125dd fix 2 typos 2011-11-24 19:49:03 +01:00
Matthias BUSSONNIER
c2070df52d handle empty docstring 2011-11-24 19:46:55 +01:00
Matthias BUSSONNIER
7650f444ea tooltip height in % 2011-11-24 19:42:26 +01:00
Matthias BUSSONNIER
bc5aeebd11 handle null objectname on tooltip 2011-11-24 19:36:20 +01:00
Matthias BUSSONNIER
e380aba1e0 Change tooltip button to use jquery css 2011-11-24 07:57:42 +01:00
Matthias BUSSONNIER
73f252676f show tooltip if completer 'fail' afer n attempt
if completer get only one match back and the user press tab n time,
	it fallbacks on showing a tooltip

	n=2 , hard coded for know, and completer verbose on the command line
2011-11-24 07:57:42 +01:00
Matthias BUSSONNIER
7285968e18 improve tooltip
put "close" and "more..." button in upper right corner,
	rename "more..." to "open in pager", add expand button.

	tooltip don't have scroll bar an are 'small' until pressing "Expand"
	they then change their height and add scrollbars.
	Horizontal scrollbar behaviour seem to depend on the browser
	>>> plot(<tab> and then click on "expand" :
	Firefox : no horizontal scrollbar (wrap line ?)
	Chrome  : horizontal scrollbar

	beware that don't limitting tooltip height or width through css will sometime give
	tooltip that are too heigh and will overflow below the bottom of the screen

	animation are broken with max-height and/or min-height
2011-11-24 07:57:42 +01:00
Matthias BUSSONNIER
aa24495b5b add 'more...' and 'close' button to the pager
'more...' button execute 'foo?' **On the behalf of the current cell**
	which increase it's prompt number to the curent value, and give focus back
2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
01a0c126d4 Replace trigering tooltip for cross platform indep
For opening bracket '(' keyCode/keydown is not sufficient because it depends
	on keyboard layout so rely on charcode/keypress ...
2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
558c4cab8e fix timebeforetooltip span and css 2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
7600221d1c smart kwarg completion
change order of completion element so that the ones ending with '='
	will be at the beginning of the list. When you complete inside a
	fonction call, you then have kwargs first add configuration in the left
	pannel
2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
2637d3c0e4 Make the time before activating a tooltip configurable
add a section in the left pannel of the notebook to make the time before
	triggering a tooltip when pressign "(" configurable.  Negative values will
	disable the tooltip (comparaison at each keypress for now, but can be
	improved) The syle of the <input> field should be a little improve, why not
	a slider with jquerry
2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
6c86474bdb Improve tooltip tringgering,make it configurable
As until now, when pressing tab and a white space was preceding the cursor
	The completion was triggerd with the whole namespace in it. Now if a
	whitespace or an opening bracket is just befor the cursor it will try to
	display a tooltip. The logic to find what object_info_request is send have
	been sightly changed to try to match the expression just before the last
	unmached openig bracket before the cursor (without considering what is
	after the cursor).

	example (_|_ represent the cursor):
	>>> his_|_<tab> # completion
	>>> hist(_|_<tab> # tooltip on hist
	>>> hist(rand(20),bins=range(_|_ <tab> #tooltip on range
	>>> hist(rand(20),bins=range(10), _|_ <tab> # tooltip on hist (whitespace before cursor)
	>>> hist(rand(20),bins=range(10),_|_ <tab> # completion

	as we dont care of what is after the cursor:

	>>> hist(rand(5000), bins=50, _|_orientaion='horizontal') # and tab, equivalent to
	>>> hist(rand(5000), bins=50, _|_<tab> # onte the space again
	>>> hist(_|_rand(5000), bins=50, orientaion='horizontal') # and tab, equivalent to
	>>> hist(_|_

	the 4 give tooltip on hist

	note that you can get tooltip on things that aren't function by appending a
	'(' like

	>>> matplotlib(<tab>

	Which is kinda weird... so we might want to bound another shortcut for
	tooltip, but which matches without bracket...

	additionnaly I have added a "Config" pannel in the left pannel with a checkbox
	bind to wether or not activate this functionnality

	Note, (rebase and edited commit, might not work perfetly xwithout the following ones)
2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
45db8cce13 tooltip on <tab> 2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
3053ec9f9b Add Tootip to notebook.
When user press '(' and nothing for 1200ms, 'object_info_request' sent to
	the kernel. Then tooltip with 'definition' and beggining of 'docstring'
	 shown to the user if non empty response.

	Unlike Completion <select> , <div> is not focusable so event handled in main
	cell event handeling function

	Add some CSS3 that most browser with websocket should support.
2011-11-24 07:57:41 +01:00
Matthias BUSSONNIER
38cd955d8d update copyright to 2011/20xx-2011
Closes #1033 (rebased to prevent recursive merge). Closes #2.

	459  *.py files in :
	 39  empty files
	176  files without copyright
	 36  have copyright but don't cite the dev team
	208  have copyright and cite the dev team
	-----------------------------------------
	  0  not up to date (cite dev team but not right year)

	  FYI, list of files that don't have copyright (and are not empty..)

 [
 'IPython/config/profile/cluster/ipython_config.py',
 'IPython/config/profile/math/ipython_config.py',
 'IPython/config/profile/pylab/ipython_config.py',
 'IPython/config/profile/pysh/ipython_config.py',
 'IPython/config/profile/python3/ipython_config.py',
 'IPython/config/profile/sympy/ipython_config.py',
 'IPython/core/shadowns.py',
 'IPython/core/tests/refbug.py',
 'IPython/core/tests/simpleerr.py',
 'IPython/core/tests/tclass.py',
 'IPython/core/tests/test_application.py',
 'IPython/core/tests/test_autocall.py',
 'IPython/core/tests/test_completer.py',
 'IPython/core/tests/test_fakemodule.py',
 'IPython/core/tests/test_formatters.py',
 'IPython/core/tests/test_handlers.py',
 'IPython/core/tests/test_history.py',
 'IPython/core/tests/test_imports.py',
 'IPython/core/tests/test_iplib.py',
 'IPython/core/tests/test_logger.py',
 'IPython/core/tests/test_magic.py',
 'IPython/core/tests/test_plugin.py',
 'IPython/core/tests/test_prefilter.py',
 'IPython/core/tests/test_profile.py',
 'IPython/core/tests/test_run.py',
 'IPython/core/tests/test_splitinput.py',
 'IPython/deathrow/astyle.py',
 'IPython/deathrow/dtutils.py',
 'IPython/deathrow/Gnuplot2.py',
 'IPython/deathrow/GnuplotInteractive.py',
 'IPython/deathrow/GnuplotRuntime.py',
 'IPython/deathrow/gui/wx/ipshell_nonblocking.py',
 'IPython/deathrow/gui/wx/ipython_history.py',
 'IPython/deathrow/gui/wx/thread_ex.py',
 'IPython/deathrow/ibrowse.py',
 'IPython/deathrow/igrid.py',
 'IPython/deathrow/ipipe.py',
 'IPython/deathrow/ipy_defaults.py',
 'IPython/deathrow/ipy_kitcfg.py',
 'IPython/deathrow/ipy_legacy.py',
 'IPython/deathrow/ipy_p4.py',
 'IPython/deathrow/ipy_profile_none.py',
 'IPython/deathrow/ipy_profile_numpy.py',
 'IPython/deathrow/ipy_profile_scipy.py',
 'IPython/deathrow/ipy_profile_sh.py',
 'IPython/deathrow/ipy_traits_completer.py',
 'IPython/deathrow/ipy_vimserver.py',
 'IPython/deathrow/numeric_formats.py',
 'IPython/deathrow/oldfrontend/process/__init__.py',
 'IPython/deathrow/oldfrontend/wx/ipythonx.py',
 'IPython/deathrow/scitedirector.py',
 'IPython/deathrow/tests/test_prefilter.py',
 'IPython/deathrow/twshell.py',
 'IPython/extensions/__init__.py',
 'IPython/extensions/autoreload.py',
 'IPython/extensions/storemagic.py',
 'IPython/extensions/tests/test_autoreload.py',
 'IPython/external/__init__.py',
 'IPython/external/argparse/__init__.py',
 'IPython/external/decorator/__init__.py',
 'IPython/external/decorators/__init__.py',
 'IPython/external/decorators/_decorators.py',
 'IPython/external/decorators/_numpy_testing_noseclasses.py',
 'IPython/external/decorators/_numpy_testing_utils.py',
 'IPython/external/guid/__init__.py',
 'IPython/external/Itpl/__init__.py',
 'IPython/external/mglob/__init__.py',
 'IPython/external/mglob/_mglob.py',
 'IPython/external/path/__init__.py',
 'IPython/external/path/_path.py',
 'IPython/external/pexpect/__init__.py',
 'IPython/external/pyparsing/__init__.py',
 'IPython/external/qt.py',
 'IPython/external/qt_for_kernel.py',
 'IPython/external/simplegeneric/__init__.py',
 'IPython/external/simplegeneric/_simplegeneric.py',
 'IPython/frontend/html/notebook/__init__.py',
 'IPython/frontend/html/notebook/tests/test_kernelsession.py',
 'IPython/frontend/qt/base_frontend_mixin.py',
 'IPython/frontend/qt/console/ansi_code_processor.py',
 'IPython/frontend/qt/console/bracket_matcher.py',
 'IPython/frontend/qt/console/call_tip_widget.py',
 'IPython/frontend/qt/console/completion_lexer.py',
 'IPython/frontend/qt/console/completion_widget.py',
 'IPython/frontend/qt/console/console_widget.py',
 'IPython/frontend/qt/console/history_console_widget.py',
 'IPython/frontend/qt/console/ipython_widget.py',
 'IPython/frontend/qt/console/kill_ring.py',
 'IPython/frontend/qt/console/mainwindow.py',
 'IPython/frontend/qt/console/pygments_highlighter.py',
 'IPython/frontend/qt/console/qtconsoleapp.py',
 'IPython/frontend/qt/console/rich_ipython_widget.py',
 'IPython/frontend/qt/console/styles.py',
 'IPython/frontend/qt/console/tests/test_ansi_code_processor.py',
 'IPython/frontend/qt/console/tests/test_completion_lexer.py',
 'IPython/frontend/qt/console/tests/test_kill_ring.py',
 'IPython/frontend/qt/kernelmanager.py',
 'IPython/frontend/qt/rich_text.py',
 'IPython/frontend/qt/svg.py',
 'IPython/frontend/qt/util.py',
 'IPython/kernel/__init__.py',
 'IPython/lib/clipboard.py',
 'IPython/lib/display.py',
 'IPython/lib/irunner.py',
 'IPython/lib/security.py',
 'IPython/lib/tests/test_imports.py',
 'IPython/lib/tests/test_irunner.py',
 'IPython/lib/tests/test_irunner_pylab_magic.py',
 'IPython/lib/tests/test_security.py',
 'IPython/nbformat/v1/tests/nbexamples.py',
 'IPython/nbformat/v1/tests/test_json.py',
 'IPython/nbformat/v1/tests/test_nbbase.py',
 'IPython/nbformat/v2/tests/nbexamples.py',
 'IPython/nbformat/v2/tests/test_json.py',
 'IPython/nbformat/v2/tests/test_nbbase.py',
 'IPython/nbformat/v2/tests/test_nbpy.py',
 'IPython/quarantine/clearcmd.py',
 'IPython/quarantine/envpersist.py',
 'IPython/quarantine/ext_rescapture.py',
 'IPython/quarantine/ipy_app_completers.py',
 'IPython/quarantine/ipy_completers.py',
 'IPython/quarantine/ipy_editors.py',
 'IPython/quarantine/ipy_exportdb.py',
 'IPython/quarantine/ipy_extutil.py',
 'IPython/quarantine/ipy_fsops.py',
 'IPython/quarantine/ipy_gnuglobal.py',
 'IPython/quarantine/ipy_jot.py',
 'IPython/quarantine/ipy_lookfor.py',
 'IPython/quarantine/ipy_profile_doctest.py',
 'IPython/quarantine/ipy_pydb.py',
 'IPython/quarantine/ipy_rehashdir.py',
 'IPython/quarantine/ipy_render.py',
 'IPython/quarantine/ipy_server.py',
 'IPython/quarantine/ipy_signals.py',
 'IPython/quarantine/ipy_synchronize_with.py',
 'IPython/quarantine/ipy_system_conf.py',
 'IPython/quarantine/ipy_which.py',
 'IPython/quarantine/ipy_winpdb.py',
 'IPython/quarantine/ipy_workdir.py',
 'IPython/quarantine/jobctrl.py',
 'IPython/quarantine/ledit.py',
 'IPython/quarantine/win32clip.py',
 'IPython/testing/mkdoctests.py',
 'IPython/testing/plugin/dtexample.py',
 'IPython/testing/plugin/ipdoctest.py',
 'IPython/testing/plugin/iptest.py',
 'IPython/testing/plugin/setup.py',
 'IPython/testing/plugin/show_refs.py',
 'IPython/testing/plugin/simple.py',
 'IPython/testing/plugin/simplevars.py',
 'IPython/testing/plugin/test_ipdoctest.py',
 'IPython/testing/plugin/test_refs.py',
 'IPython/testing/skipdoctest.py',
 'IPython/testing/tests/test_decorators.py',
 'IPython/utils/autoattr.py',
 'IPython/utils/nested_context.py',
 'IPython/utils/pickleshare.py',
 'IPython/utils/py3compat.py',
 'IPython/utils/PyColorize.py',
 'IPython/utils/rlineimpl.py',
 'IPython/utils/strdispatch.py',
 'IPython/utils/tempdir.py',
 'IPython/utils/tests/test_imports.py',
 'IPython/utils/tests/test_wildcard.py',
 'IPython/utils/upgradedir.py',
 'IPython/zmq/completer.py',
 'IPython/zmq/displayhook.py',
 'IPython/zmq/entry_point.py',
 'IPython/zmq/frontend.py',
 'IPython/zmq/iostream.py',
 'IPython/zmq/ipkernel.py',
 'IPython/zmq/log.py',
 'IPython/zmq/parentpoller.py',
 'IPython/zmq/pykernel.py',
 'IPython/zmq/pylab/backend_inline.py',
 'IPython/zmq/zmqshell.py'
 ]
2011-11-23 18:02:27 -08:00
Matthias BUSSONNIER
645183e51d Intercept <esc> avoid closing websocket on Firefox
Closes #1031; closes #1032 (rebased and fixed tiny typo)
2011-11-23 17:58:21 -08:00
MinRK
8e2758c0ce don't assume ioloop.install is defined (pyzmq < 2.1.7) 2011-11-22 19:50:19 -08:00
MinRK
d94d6dbffa use pyzmq tools where appropriate
ZMQStream is the right object to use for event-driven handling of messages, but instead we chose to rewrite half of it in KernelManager.

This removes most of the duplicate code, in favor of using ZMQStream.

also use the pyzmq install() function for using pyzmq with tornado, instead of manually pasting its contents in notebook app.
2011-11-22 15:18:18 -08:00
MinRK
e54c05dd21 explicitly ignore iopub messages not associated with a cell in the notebook
An error would previously be raised whenever iopub traffic arrived that
did not originate with the notebook (e.g. pylab welcome, or qtconsole output).

This error was not in a block that would actually cause problems, so actual
functionality was not affected.
2011-11-21 11:20:58 -08:00
Fernando Perez
1e9cee6f10 Merge branch 'logout_button' of https://github.com/stefanv/ipython into stefanv-logout_button
Add a logout button to authenticated notebooks.  This has no impact on
regular (non-authenticated) notebooks.
2011-11-20 15:10:48 -08:00
Stefan van der Walt
9488b364fc Hide logout button on unauthenticated notebook. 2011-11-20 00:16:45 -08:00
MinRK
70de13a394 add Integer traitlet
Most int traits are now Integers

Integer differs from Long only in that small `long`s are cast to `int`, rather than
all `int`s being cast to `long`:

    Integer(4L) => 4
    Long(4) => 4L

closes gh-942, closes gh-996.

Rebased to avoid recursive merge for just one commit.
2011-11-19 22:17:54 -08:00
Fernando Perez
2a9ae4ee37 Fix failing doctests and post correct example of passwd() usage. 2011-11-18 20:20:57 -08:00
Stefan van der Walt
d031f2b359 Only show logout button if logged in. 2011-11-18 17:18:41 -08:00
Stefan van der Walt
0a41777a8d Add info, error and warning message boxes. 2011-11-18 17:12:52 -08:00
Stefan van der Walt
3b6c151b72 Add logout button. 2011-11-18 16:59:48 -08:00
Stefan van der Walt
c4b7ee1a75 Use template inheritance. 2011-11-18 13:17:36 -08:00
Stefan van der Walt
15520ba820 Notify user about invalid password. 2011-11-18 12:04:17 -08:00
Stefan van der Walt
b2972a7e98 Integrate hashed passwords into the notebook. 2011-11-18 10:53:09 -08:00
Pablo Winant
f2f715beb6 Latexify formulas contained in html text.
closes gh-994
2011-11-14 20:02:24 -08:00
Fernando Perez
1bb4c726c3 Merge pull request #955 from minrk/websocket
Websocket fixes:

1. alert client on failed and lost web socket connections

A long message is given if the connection fails within 1s, which assumes the connection did not succeed. Otherwise, it is a short 'connection closed unexpectedly'.

This also means that clients are notified on server termination (for better or worse).

2. remove superfluous ws-hostname parameter from notebook

This made the notebook server artificially and unnecessarily brittle against tunneling and explicit hostname resolution.  Now, the ws_url is defined based on the Origin of the request for the url, so it always matches the http[s] url.  This means that it will follow the same tunnel, and the hostname will be already resolved.  Resolving the hostname twice makes no sense at all unless the websockets are going to a different server than the http requests.

Implemented as a property, so it should still be easy to change for future cases where it might behave differently (e.g. websockets on a different host, or at a non-root url).
2011-11-10 19:31:27 -08:00
MinRK
a4b6d6bb9f don't use Origin header to determine ws_url 2011-11-10 19:01:44 -08:00
MinRK
7519ff3b41 split likely multiline strings when writing to/from JSON 2011-11-09 12:10:03 -08:00
Fernando Perez
8d739fb5a2 Fix CSS so word wrapping stays within output box. 2011-10-31 22:57:54 -07:00
Fernando Perez
a852c75dd7 Word-wrap output correctly in the notebook; prevents excessive scrolling.
Firefox seems to not honor it correctly, but Webkit browsers (Chrome,
rekonq, Safari) do.
2011-10-31 21:39:17 -07:00
MinRK
487d110557 use jQuery dialog instead of alert() 2011-10-31 19:07:25 -07:00
MinRK
b73d616279 alert client on failed and lost web socket connections
A long message is given if the connection fails within 1s.  Otherwise, it is a short 'connection closed unexpectedly'.

This also means that clients are notified on server termination.
2011-10-30 22:57:51 -07:00
MinRK
00c797e2b5 remove superfluous ws-hostname parameter from notebook
This made the notebook server artificially and unnecessarily brittle to tunneling, and non-local hostname resolution.  The ws_url is now defined based on the Origin of the request.  This allows tunneled hosts and ports to preserve connections, as the ws_url always matches the one in use by the client.

Implemented as a property, to facilitate future cases where it might behave differently.
2011-10-30 22:57:51 -07:00
Fernando Perez
6e19364cfd Update version check to work with tornado 2.1.0 or 2.1.1 2011-10-30 13:12:12 -07:00
Fernando Perez
e1a2eae156 Monkeypatch Tornado 2.1.1 so it works with Google Chrome 16.
We're just applying manually a fix from Tornado itself, see for
details:

https://github.com/facebook/tornado/issues/385
https://github.com/facebook/tornado/commit/84d7b458f956727c3b0d6710
2011-10-30 12:11:22 -07:00
MinRK
f2972ad5c4 add 'running' class to running code cells
Will allow special styling of code cells that are running via
`div.code_cell.running` in css.  Currently, no change is made.
2011-10-28 19:57:02 -07:00
MinRK
0e4afee63b set 'In [*]' to indicate pending code cell 2011-10-28 19:56:55 -07:00
Fernando Perez
83ddbf5987 Merge pull request #931 from minrk/readonly
The notebook now supports a `--read-only` flag, which allows users to view all notebooks being served but not to edit them or execute any code.  These actions are not allowed and the buttons, shortcuts, etc. are removed, but the requests will raise authentication errors if they manage to send the events anyway.  Save/print functions remain available.

This flag can be used in two modes:

1. When running an unauthenticated server, one can run a *second* read-only server in the same directory on a public IP address.  This will let users connect to the read-only view without having to worry about configuring passwords and certificates for the execution server.

2. When running a server configured with authentication (and hopefully an SSL certificate), starting it with `--read-only` allows unauthenticated users read-only access to notebooks. This means that the same server on a single port can be both used by authenticated users for execution and by the public for viewing the available notebooks.
2011-10-28 16:02:03 -07:00
Fernando Perez
7c04cc70fd Merge pull request #921 from minrk/traiterror
Show invalid config message on TraitErrors during initialization.

implemented via `@catch_config` decorator
    
Now, the event that was triggered by invalid app config (see `--log-level 5`) is triggered by bad config at any point during initialization.
    
This *will* catch TraitError-raising bugs in IPython itself, but only during initialization.

Also, deregister crash handler on use to avoid it being triggered recursively/repeatedly.
2011-10-28 15:34:37 -07:00
MinRK
1f7fd1db3f catch_config -> catch_config_error 2011-10-28 15:22:24 -07:00
MinRK
65a6cb3b1c move read_only flag to page-level
contents of LPanel are not drawn until after collapse

read_only is in a <meta> tag
2011-10-28 14:45:41 -07:00
Fernando Perez
6e1bbf8fc3 Start webbrowser in a thread. Prevents lockup with Chrome.
If a user has Chrome set as their default browser (system-wide or via
the `BROWSER` environment variable), opening the notebook hangs
because the chrome call doesn't return immediately.  This solves the
issue by opening the browser in a thread.

Note that there remains an issue where killing the notebook will kill
Chrome if the Chrome session was started by us.  I haven't found a way
to work around that despite attempts by making the webbrowser.open()
call in a subprocess.
2011-10-27 23:52:36 -07:00
MinRK
a3a0be08bb allow fully read-only mode if no password is set 2011-10-27 23:23:34 -07:00
MinRK
a18ddb9ec4 add missing loginwidget.js 2011-10-27 21:56:02 -07:00
MinRK
a6de5947de add read-only view for notebooks
When using a password, read-only mode allows unauthenticated users
read-only access to notebooks.  Editing, execution, etc. are not
allowed in read-only mode, but save/print functions are available.

No kernels are started until an authenticated user opens a notebook.
2011-10-25 22:14:09 -07:00
Brian Granger
a6c9123018 Adding space between paragraphs in rendered html in the notebook. 2011-10-25 18:28:39 -07:00
MinRK
9a7fda926d Allow notebook server to run in read-only mode
Kernels are never started, and all save/delete/execution handlers raise
403: Forbidden.

/cc @fperez
2011-10-24 21:33:05 -07:00
MinRK
268c5e778d Show invalid config message on TraitErrors during initialization
implemented via @catch_config decorator

Now, the event that was triggered by invalid app config (see `--log-level 5`) is triggered by bad config at any point during initialization.

This *will* catch TraitError bugs in IPython itself, but only during initialization.

closes gh-908
2011-10-22 11:35:20 -07:00
MinRK
dd8761ea1d Allow IPython to run without sqlite3
The History will always appear empty, so history magics, etc. don't do anything.  Readline history for a single session works fine.

Test suite should now pass without sqlite
2011-10-20 10:36:10 -07:00
MinRK
89f11475da dashboard page title -> IPython Dashboard 2011-10-18 23:26:53 -07:00
MinRK
76650e316d Restore kernel status to header 2011-10-18 23:26:20 -07:00
MinRK
48c344ecf5 fix --no-browser flag in notebook after rename 2011-10-18 22:12:09 -07:00
MinRK
30c45c517d fix Cell->Help header typo 2011-10-18 20:02:12 -07:00
Fernando Perez
38af53d027 Merge pull request #899 from minrk/nbwork
Internal notebook refactoring and cleanup, plus fixing a bug that prevented Tornado from authenticating users with password.
2011-10-18 18:58:25 -07:00
MinRK
9be2911296 style Sign In button with jQuery 2011-10-18 18:11:14 -07:00
Brian E. Granger
970742c267 Using self.request._cookies in WS handlers. 2011-10-18 18:11:14 -07:00
Brian E. Granger
9b945e7bc2 Added kill_kernel to notebook template. 2011-10-18 18:11:14 -07:00
MinRK
6c5f69e97a Moving status widget to Kernel section of L panel. 2011-10-18 18:11:08 -07:00
MinRK
139fe52832 Renaming user cookie to username to better match usage. 2011-10-18 18:10:22 -07:00
Brian E. Granger
fd06bd1610 Minor changes to the notebook handlers. 2011-10-18 17:55:27 -07:00
Brian E. Granger
d26a7e5fcc Removed save widget delay. 2011-10-18 17:55:27 -07:00
Brian E. Granger
5f3fd837a4 Renaming NBBrowserHandler->ProjectDashboardHandler. 2011-10-18 17:55:26 -07:00
Brian E. Granger
05729f7c0c Further cleanup and renaming of notebook. 2011-10-18 17:55:26 -07:00
Brian E. Granger
2318fe4ef5 Renaming things in the notebook.
* nbbrowser -> projectdashboard.
* Getting rid of underscores on .js filenames.
2011-10-18 17:55:26 -07:00
Brian E. Granger
ae37e2fe2c Simplifying logic on login page. 2011-10-18 17:55:26 -07:00
Brian E. Granger
1f699c8c23 Further work updating JS URL scheme to use data-base-project-url. 2011-10-18 17:55:26 -07:00
Brian E. Granger
cc3516be01 Updating notebook list to use data-base-project-url. 2011-10-18 17:55:26 -07:00
Brian E. Granger
1f06a280ca Updating JS URL scheme to use embedded data.
All ajax requests from JS now use the data-base-project-url
and data-base-kernel-url data attributes set on the body.
2011-10-18 17:55:25 -07:00
Brian E. Granger
36e15cb5c2 Adding data-project to the body data attribs. 2011-10-18 17:55:25 -07:00
Brian E. Granger
c900979a80 Misc changes to the notebook.
* IPythonNotebookApp->NotebookApp.
* Cleaned up html templates of unused stylesheets.
2011-10-18 17:55:25 -07:00
Brian E. Granger
7611a38721 Minor changes to handlers. 2011-10-18 17:55:25 -07:00
MinRK
4f26dae311 don't present meaningless username option in notebook
username isn't used for anything other than hash input
for authentication, so remove the field in the login form
and just use a uuid.
2011-10-18 17:55:25 -07:00
Brian E. Granger
66d5c9f8a6 Adding base_project_url and base_kernel_url as HTML data attribs.
* Also saving the notebook_id using that as well.
2011-10-18 17:55:25 -07:00
Fernando Perez
986f2e7223 Merge pull request #893 from minrk/clearoutput
Adding clear_output to kernel and HTML notebook.

This enables the clearing of output during the execution of a cell. It can be used for simple forms of animation in the notebook.
2011-10-18 17:55:13 -07:00
MinRK
033c9d9848 Add tooltips to the notebook via 'title' attr.
All buttons, show/hide clickable areas, etc. should have some tooltip describing
what they do.  There are jQuery plugins for enhanced tooltips, but this gets
the lightest version working.

closes #436
2011-10-18 17:43:29 -07:00
MinRK
24d37b6bcc add channel-selection to clear_output
example notebook updated accordingly
2011-10-17 19:27:50 -07:00
Brian Granger
10deb3b744 Adding clear_output to kernel and HTML notebook. 2011-10-17 16:19:58 -07:00
Fernando Perez
9fa9f0b15f Merge pull request #884 from fperez/nb-usability
Various Notebook usability fixes:

- add kernel restart dialog confirmation (it destroys the user session)
- add missing keybindings
- change language from 'terminal mode' to 'in-place execution' which is more descriptive
- adjust spacing/padding and colors slightly for readability and better use of space in small screens.
- add line numbering toggle to code cells.  Triggered with C-m-l.
- show keybindings in monospaced font.
- add QuickHelp button that is always visible and at the top.
- add missing keybindings for kernel interrupt/restart from the kbd.
2011-10-17 16:10:25 -07:00
Fernando Perez
55223d0414 Adjust title area sizes to improve alignment. 2011-10-17 16:07:40 -07:00