[spyder] 05/09: Imported Upstream version 2.3.0~beta2+dfsg

Frédéric-Emmanuel Picca picca at moszumanska.debian.org
Thu Dec 26 21:16:02 UTC 2013


This is an automated email from the git hooks/post-receive script.

picca pushed a commit to branch experimental
in repository spyder.

commit 4c97fabe34b129e85d9ab1595cbe5043001cb45d
Author: Picca Frédéric-Emmanuel <picca at debian.org>
Date:   Thu Dec 26 19:34:25 2013 +0100

    Imported Upstream version 2.3.0~beta2+dfsg
---
 MANIFEST.in                                        |    2 +-
 PKG-INFO                                           |    4 +-
 README                                             |  133 --
 README.md                                          |  200 +++
 doc/installation.rst                               |    2 +-
 doc/variableexplorer.rst                           |    2 +-
 setup.py                                           |   49 +-
 spyderlib/__init__.py                              |    2 +-
 spyderlib/baseconfig.py                            |    2 +-
 spyderlib/config.py                                |    3 +
 spyderlib/images/console/loading.gif               |  Bin 0 -> 1737 bytes
 spyderlib/ipythonconfig.py                         |   17 +-
 spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo       |  Bin 85568 -> 85312 bytes
 spyderlib/locale/fr/LC_MESSAGES/spyderlib.po       | 1683 +++++++++++---------
 spyderlib/locale/spyderlib.pot                     | 1496 ++++++++---------
 spyderlib/plugins/console.py                       |    4 +-
 spyderlib/plugins/editor.py                        |   17 +-
 spyderlib/plugins/externalconsole.py               |  108 +-
 spyderlib/plugins/inspector.py                     |  138 +-
 spyderlib/plugins/ipythonconsole.py                |   51 +-
 spyderlib/spyder.py                                |  173 +-
 spyderlib/utils/dochelpers.py                      |   62 +-
 spyderlib/utils/encoding.py                        |   10 +-
 spyderlib/utils/inspector/js/copy_button.js        |    2 +-
 spyderlib/utils/inspector/sphinxify.py             |   10 +-
 spyderlib/utils/inspector/static/css/default.css   |  182 ++-
 .../templates/{warning.html => usage.html}         |   16 +-
 spyderlib/utils/inspector/templates/warning.html   |    2 +-
 spyderlib/utils/qthelpers.py                       |   10 +-
 spyderlib/widgets/calltip.py                       |  293 ++++
 spyderlib/widgets/dependencies.py                  |    1 -
 spyderlib/widgets/editor.py                        |   38 +-
 .../widgets/externalshell/namespacebrowser.py      |    6 +-
 spyderlib/widgets/externalshell/pythonshell.py     |    7 +-
 spyderlib/widgets/externalshell/sitecustomize.py   |    4 +-
 spyderlib/widgets/figureoptions.py                 |    3 +-
 spyderlib/widgets/internalshell.py                 |   12 +-
 spyderlib/widgets/ipython.py                       |  180 ++-
 spyderlib/widgets/mixins.py                        |  129 +-
 spyderlib/widgets/shell.py                         |    7 +-
 spyderlib/widgets/sourcecode/base.py               |   46 +-
 spyderlib/widgets/sourcecode/codeeditor.py         |    3 +-
 42 files changed, 3000 insertions(+), 2109 deletions(-)

diff --git a/MANIFEST.in b/MANIFEST.in
index 6e59a34..e8a1330 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -6,7 +6,7 @@ include scripts/*
 include img_src/*.ico
 include img_src/spyder.png
 include MANIFEST.in
-include README
+include README.md
 include LICENSE
 include CHANGELOG
 include bootstrap.py
diff --git a/PKG-INFO b/PKG-INFO
index f4f23b1..f930a7b 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: spyder
-Version: 2.3.0beta1
+Version: 2.3.0beta2
 Summary: Scientific PYthon Development EnviRonment
 Home-page: http://code.google.com/p/spyderlib
 Author: Pierre Raybaut
 Author-email: UNKNOWN
 License: MIT
-Download-URL: http://code.google.com/p/spyderlib/files/spyder-2.3.0beta1.zip
+Download-URL: http://code.google.com/p/spyderlib/files/spyder-2.3.0beta2.zip
 Description: Spyder is an interactive Python development environment providing 
         MATLAB-like features in a simple and light-weighted software.
         It also provides ready-to-use pure-Python widgets to your PyQt4 or 
diff --git a/README b/README
deleted file mode 100644
index 033a07c..0000000
--- a/README
+++ /dev/null
@@ -1,133 +0,0 @@
-Spyder - Scientific PYthon Development EnviRonment
-==================================================
-
-Copyright © 2009-2013 Pierre Raybaut
-Licensed under the terms of the MIT License
-(see spyderlib/__init__.py for details)
-
-
-    Overview
-
-        Spyder is a Python development environment with tons of features:
-            Editor
-                Multi-language editor with function/class browser, code analysis
-                (pyflakes and pylint are currently supported), horizontal/verti-
-                cal splitting, etc.
-            Documentation viewer
-                Automatically show documentation (if available, or source code
-                otherwise) for any class instantiation or function call made
-                in a Python shell (interactive/external console, see below)
-            Interactive console
-                Python shell with workspace support (variable explorer with GUI
-                based editors: dictionary editor, array editor, ...) and
-                matplotlib figures integration
-            External console (separate process)
-                Run Python scripts (interactive, debugging or normal mode) or
-                open a Python interpreter with variable explorer and documenta-
-                tion viewer support (a basic terminal window may also be opened
-                with the external console)
-            File/directories explorer
-            Find in files feature
-                Supporting regular expressions and mercurial repositories
-            History log
-
-        Spyder may also be used as a PyQt4 extension library (module 'spyderlib').
-        For example, the Python interactive shell widget used in Spyder may be
-        embedded in your own PyQt4 application.
-
-    Build dependencies
-
-        When installing Spyder from the .zip source package (using the 
-        command `python setup.py install`), the only requirements is:
-            Python 2.5+
-
-    Runtime dependencies
-    
-        Python 2.5+
-        PyQt4 4.4+ or PySide 1.1.1+ (PyQt4 is recommended)
-            
-        Recommended modules
-            rope v0.9.2+ (editor code completion, calltips and go-to-definition)
-            pyflakes v0.5.0+ (real-time code analysis)
-            sphinx v0.6+ (object inspector's rich text mode)
-            numpy (N-dimensional arrays)
-            scipy (signal/image processing)
-            matplotlib (2D/3D plotting)
-	    
-        Optional modules
-            IPython 0.13 (enhanced Python interpreter)
-                On Ubuntu you need to install ipython-qtconsole, on Fedora
-                ipython-gui and on Gentoo ipython with the qt4 USE flag.
-            pygments (syntax highlighting for MATLAB, batch and ini files)
-            pylint (powerful code analysis)
-            pep8 (style analysis)
-
-    Running from source
-      
-        It is possible to run Spyder directly from unpacked source folder 
-        using Spyder's bootstrap script:
-
-            `python bootstrap.py`
-
-        This is especially useful for beta-testing, troubleshooting 
-        and development of Spyder itself.
-
-    Installation
-    
-        This section explains how to install the latest *stable* release of 
-        Spyder. If you prefer testing the development version, please use 
-        the bootstrap script (see previous section).
-        
-        From the source package (see section 'Building dependencies'), you may 
-        install Spyder using the integrated setup.py script based on Python 
-        standard library `distutils` with the following command:
-
-            `python setup.py install`
-
-        Note that `distutils` does *not* uninstall previous versions of Python 
-        packages: it simply copies files on top of an existing installation. 
-        When using this command, it is thus highly recommended to uninstall 
-        manually any previous version of Spyder by removing the associated 
-        directories ('spyderlib' and 'spyderplugins' in your site-packages 
-        directory).
-
-        From the Python package index, you may simply install Spyder *and* 
-        upgrade an existing installation using `pip`:
-        http://pypi.python.org/pypi
-
-        But the easiest way to install the last stable release of Spyder is:
-            * on Windows:
-                * using an executable installer: http://spyderlib.googlecode.com
-                * or through Python(x,y): http://pythonxy.googlecode.com
-            * on Mac OSX:
-                * using our DMG installer: http://spyderlib.googlecode.com
-                * Using the Anaconda Python Distribution: https://store.continuum.io/cshop/anaconda/
-                * through MacPorts 
-            * on GNU/Linux, through your package manager
-        For more details on supported platforms, please go to http://spyderlib.googlecode.com.
-
-    Build Windows installers
-
-        From the source package, you may build Windows installers to distribute
-        Spyder on all supported platforms and versions of Python.
-        Spyder has a single code base supporting both Python 2 and Python 3 but
-        the Windows installer will target a specific version of Python because 
-        of the two external libraries included in the Windows installers 
-        ('pyflakes' and 'rope') which have specific versions for Python 3. 
-        Moreover, despite the fact that Spyder code base supports all Python 
-        architectures (32 and 64bit), the Windows installers will also target 
-        specific architectures because of a limitation of the way distutils 
-        works (see http://bugs.python.org/issue6792).
-
-        Example of Spyder binary installers for Windows:
-            * Python 2.7 and 32bit: spyder-2.3.0-win32-py2.7.exe
-            * Python 2.7 and 64bit: spyder-2.3.0-win-amd64-py2.7.exe
-            * Python 3.3 and 32bit: spyder-2.3.0-win32-py3.3.exe
-            * Python 3.3 and 64bit: spyder-2.3.0-win-amd64-py3.3.exe
-
-    More informations
-    
-        Downloads, bug reports and feature requests:
-            http://code.google.com/p/spyderlib/
-        Discussions:
-            http://groups.google.com/group/spyderlib
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a855f42
--- /dev/null
+++ b/README.md
@@ -0,0 +1,200 @@
+# Spyder - The Scientific PYthon Development EnviRonment
+
+Copyright © 2009-2013 Pierre Raybaut.
+Licensed under the terms of the MIT License
+(see `spyderlib/__init__.py` for details)
+
+
+## Overview
+
+Spyder is a Python development environment with tons of features:
+    
+* Editor
+    
+    Multi-language editor with function/class browser, code analysis
+    features (pyflakes and pylint are currently supported), code
+    completion, horizontal and vertical splitting, and goto definition.
+
+* Interactive console
+
+    Python or IPython consoles with workspace and debugging support to
+    instantly evaluate the code written in the Editor. It also comes
+    with Matplotlib figures integration. 
+
+* Documentation viewer
+
+    Show documentation for any class or function call made either in the
+    Editor or a Console.
+
+* Variable explorer
+
+    Explore variables created during the execution of a file. Editing
+    them is also possible with several GUI based editors, like a
+    dictionary and Numpy array ones.
+
+* Find in files feature
+
+    Supporting regular expressions and mercurial repositories
+
+* File/directories explorer
+
+* History log
+
+Spyder may also be used as a PyQt4/PySide extension library (module 
+`spyderlib`). For example, the Python interactive shell widget used in
+Spyder may be embedded in your own PyQt4/PySide application.
+
+
+## Installation
+    
+This section explains how to install the latest stable release of 
+Spyder. If you prefer testing the development version, please use 
+the `bootstrap` script (see next section).
+
+The easiest way to install Spyder is:
+            
+* On Windows:
+
+    - Using one of our executable installers, which can be found
+      [here](http://spyderlib.googlecode.com/downloads).
+    - Or using one of these scientific Python distributions:
+        1. [Python(x,y)](http://pythonxy.googlecode.com)
+        2. [WinPython](http://code.google.com/p/winpython/)
+        3. [Anaconda](http://continuum.io/downloads)
+
+* On Mac OSX:
+
+    - Using our DMG installer, which can be found
+      [here](http://spyderlib.googlecode.com/downloads).
+    - Using the [Anaconda Distribution](http://continuum.io/downloads).
+    - Through [MacPorts](http://www.macports.org/).
+            
+* On GNU/Linux
+
+    - Through your distribution package manager (i.e. `apt-get`, `yum`,
+    etc).
+    - Using the [Anaconda Distribution](http://continuum.io/downloads).
+    - Installing from source (see below).
+
+### Installing from source
+
+You can also install Spyder from its zip source package. For that you need to
+download and uncompress the file called `spyder-x.y.z.zip`, which can be
+found [here](http://spyderlib.googlecode.com/downloads). Then you need to
+use the integrated `setup.py` script that comes with it and which is based
+on the Python standard library `distutils` module, with the following command:
+
+    python setup.py install
+
+Note that `distutils` does *not* uninstall previous versions of Python 
+packages: it simply copies files on top of an existing installation. 
+When using this command, it is thus highly recommended to uninstall 
+manually any previous version of Spyder by removing the associated 
+directories ('spyderlib' and 'spyderplugins') from your site-packages 
+directory).
+
+From the [Python package index](http://pypi.python.org/pypi), you also
+may install Spyder *and* upgrade an existing installation using `pip`
+with this command
+
+    pip install --upgrade spyder
+
+For more details on supported platforms, please go to
+<http://pythonhosted.org/spyder/installation.html>.
+
+
+## Dependencies
+
+*Imnportant note*: Most if not all the dependencies listed below come
+with Python(x,y), WinPython and Anaconda, so you don't need to install
+them separately when installing one of these scientific Python
+distributions.
+
+### Build dependencies
+
+When installing Spyder from its source package (using the command
+`python setup.py install`), the only requirements is to have a Python version
+greater than 2.6.
+
+### Runtime dependencies
+
+* Python 2.6+
+
+* PyQt4 4.6+ or PySide 1.2.0+ (PyQt4 is recommended)
+            
+### Recommended modules
+
+* Rope v0.9.2+ (editor code completion, calltips and go-to-definition)
+
+* Pyflakes v0.5.0+ (real-time code analysis)
+
+* Sphinx v0.6+ (object inspector's rich text mode)
+
+* Numpy (N-dimensional arrays)
+
+* Scipy (signal/image processing)
+
+* Matplotlib (2D/3D plotting)
+
+* IPython 0.13 (enhanced Python interpreter)
+
+    In Ubuntu you need to install `ipython-qtconsole`, on Fedora
+    `ipython-gui` and on Gentoo `ipython` with the `qt4` USE flag.
+
+### Optional modules
+
+* Pygments (syntax highlighting for several file types).
+
+* Pylint (static code analysis).
+
+* Pep8 (style analysis).
+
+
+## Running from source
+
+It is possible to run Spyder directly (i.e. without installation)
+from the unpacked zip folder (see *Installing from source*) using
+Spyder's bootstrap script like this:
+
+    python bootstrap.py
+
+This is especially useful for beta-testing, troubleshooting 
+and development of Spyder itself.
+
+
+## Build Windows installers
+
+From the source package, you may build Windows installers to distribute
+Spyder on all supported platforms and versions of Python.
+
+Spyder has a single code base supporting both Python 2 and Python 3 but
+the Windows installer will target a specific version of Python because
+of the two external libraries included in the Windows installers
+('pyflakes' and 'rope') which have specific versions for Python 2 and 3.
+ 
+Moreover, despite the fact that Spyder code base supports all Python
+architectures (32 and 64bit), the Windows installers will also target
+specific architectures because of a limitation of the way `distutils`
+works (see <http://bugs.python.org/issue6792>).
+
+Example of Spyder binary installers for Windows:
+
+* Python 2.7 and 32bit: spyder-2.3.0-win32-py2.7.exe
+* Python 2.7 and 64bit: spyder-2.3.0-win-amd64-py2.7.exe
+* Python 3.3 and 32bit: spyder-2.3.0-win32-py3.3.exe
+* Python 3.3 and 64bit: spyder-2.3.0-win-amd64-py3.3.exe
+
+
+## More information
+
+* For code development please go to
+
+    <https://bitbucket.org/spyder-ide/spyderlib/>
+    
+* For bug reports and feature requests
+           
+    <http://code.google.com/p/spyderlib/issues>
+
+* For discussions and troubleshooting:
+
+    <http://groups.google.com/group/spyderlib>
diff --git a/doc/installation.rst b/doc/installation.rst
index cfaccc8..5b949e5 100644
--- a/doc/installation.rst
+++ b/doc/installation.rst
@@ -256,7 +256,7 @@ If you want to try the next Spyder version, you have to:
 
 #. Clone the Spyder source code repository with the command:
 
-   ``hg clone https://spyderlib.googlecode.com/hg/ spyder``
+   ``hg clone https://bitbucket.org/spyder-ide/spyderlib``
 
 #. To keep your repository up-to-date, run
 
diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst
index 5427545..2f335fd 100644
--- a/doc/variableexplorer.rst
+++ b/doc/variableexplorer.rst
@@ -41,7 +41,7 @@ Supported types
 ---------------
 
 The variable explorer can't show all types of objects. The ones currently
-supported are: integers, floats, lists, dictionaries, tuples, strings,
+supported are: integers, floats, complex, lists, dictionaries, tuples, strings,
 `NumPy` arrays, `datetime` dates and `PIL/Pillow` images.
 
 
diff --git a/setup.py b/setup.py
index f627db4..dcbe881 100644
--- a/setup.py
+++ b/setup.py
@@ -13,10 +13,6 @@ The Scientific PYthon Development EnviRonment
 
 from __future__ import print_function
 
-from distutils.core import setup
-from distutils.command.build import build
-from distutils.command.install_data import install_data
-
 import os
 import os.path as osp
 import subprocess
@@ -24,6 +20,23 @@ import sys
 import re
 import shutil
 
+from distutils.core import setup
+from distutils.command.build import build
+from distutils.command.install_data import install_data
+
+# This is necessary to prevent an error while installing Spyder with pip
+# See http://stackoverflow.com/a/18961843/438386
+with_setuptools = False
+if 'USE_SETUPTOOLS' in os.environ or 'pip' in __file__:
+    try:
+        from setuptools.command.install import install
+        with_setuptools = True
+    except:
+        with_setuptools = False
+
+if with_setuptools is False:
+    from distutils.command.install import install  # analysis:ignore
+
 
 def get_package_data(name, extlist):
     """Return data files for package *name* with extensions in *extlist*"""
@@ -45,6 +58,7 @@ def get_subpackages(name):
             splist.append(".".join(dirpath.split(os.sep)))
     return splist
 
+
 def get_data_files():
     """Return data_files in a platform dependent manner"""
     if sys.platform.startswith('linux'):
@@ -67,7 +81,6 @@ class MyInstallData(install_data):
             except:
                 print("ERROR: unable to update desktop database",
                       file=sys.stderr)
-
 CMDCLASS = {'install_data': MyInstallData}
 
 
@@ -86,11 +99,29 @@ try:
     from sphinx import setup_command
 
     class MyBuild(build):
-        def has_doc(self):
+        user_options = [('no-doc', None, "Don't build Spyder documentation")] \
+                       + build.user_options
+        def __init__(self, *args, **kwargs):
+            build.__init__(self, *args, **kwargs)
+            self.no_doc = False
+        def with_doc(self):
             setup_dir = os.path.dirname(os.path.abspath(__file__))
-            return os.path.isdir(os.path.join(setup_dir, 'doc'))
-        sub_commands = build.sub_commands + [('build_doc', has_doc)]
+            is_doc_dir = os.path.isdir(os.path.join(setup_dir, 'doc'))
+            install_obj = self.distribution.get_command_obj('install')
+            return (is_doc_dir and not self.no_doc and not install_obj.no_doc)
+        sub_commands = build.sub_commands + [('build_doc', with_doc)]
     CMDCLASS['build'] = MyBuild
+
+
+    class MyInstall(install):
+        user_options = [('no-doc', None, "Don't build Spyder documentation")] \
+                       + install.user_options
+        def __init__(self, *args, **kwargs):
+            install.__init__(self, *args, **kwargs)
+            self.no_doc = False
+    CMDCLASS['install'] = MyInstall
+
+
     class MyBuildDoc(setup_command.BuildDoc):
         def run(self):
             build = self.get_finalized_command('build')
@@ -165,7 +196,7 @@ def get_packages():
 # NOTE: the '[...]_win_post_install.py' script is installed even on non-Windows
 # platforms due to a bug in pip installation process (see Issue 1158)
 SCRIPTS = ['spyder', '%s_win_post_install.py' % NAME]
-EXTLIST = ['.mo', '.svg', '.png', '.css', '.html', '.js', '.chm']
+EXTLIST = ['.mo', '.svg', '.png', '.css', '.html', '.js', '.chm', '.gif']
 if os.name == 'nt':
     SCRIPTS += ['spyder.bat']
     EXTLIST += ['.ico']
diff --git a/spyderlib/__init__.py b/spyderlib/__init__.py
index bc7cdb5..d1ff089 100644
--- a/spyderlib/__init__.py
+++ b/spyderlib/__init__.py
@@ -27,7 +27,7 @@ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 OTHER DEALINGS IN THE SOFTWARE.
 """
 
-__version__ = '2.3.0beta1'
+__version__ = '2.3.0beta2'
 __license__ = __doc__
 __project_url__ = 'http://code.google.com/p/spyderlib'
 __forum_url__   = 'http://groups.google.com/group/spyderlib'
diff --git a/spyderlib/baseconfig.py b/spyderlib/baseconfig.py
index d4e70d5..e854fce 100644
--- a/spyderlib/baseconfig.py
+++ b/spyderlib/baseconfig.py
@@ -233,7 +233,7 @@ def get_supported_types():
     If you update this list, don't forget to update doc/variablexplorer.rst
     """
     from datetime import date
-    editable_types = [int, float, list, dict, tuple, date
+    editable_types = [int, float, complex, list, dict, tuple, date
                       ] + list(TEXT_TYPES) + list(INT_TYPES)
     try:
         from numpy import ndarray, matrix, generic
diff --git a/spyderlib/config.py b/spyderlib/config.py
index 4caa40a..5626d61 100644
--- a/spyderlib/config.py
+++ b/spyderlib/config.py
@@ -358,6 +358,9 @@ DEFAULTS = [
               'rich_text/font/italic': False,
               'rich_text/font/bold': False,
               'wrap': True,
+              'connect/editor': False,
+              'connect/python_console': False,
+              'connect/ipython_console': False,
               'math': True,
               'automatic_import': True,
               }),
diff --git a/spyderlib/images/console/loading.gif b/spyderlib/images/console/loading.gif
new file mode 100644
index 0000000..1560b64
Binary files /dev/null and b/spyderlib/images/console/loading.gif differ
diff --git a/spyderlib/ipythonconfig.py b/spyderlib/ipythonconfig.py
index 6b84ba7..66f8e2b 100644
--- a/spyderlib/ipythonconfig.py
+++ b/spyderlib/ipythonconfig.py
@@ -10,11 +10,14 @@ IPython configuration variables needed by Spyder
 
 from spyderlib.utils import programs
 
-#==============================================================================
-# Constants
-#==============================================================================
+
+def is_qtconsole_installed():
+    if programs.is_module_installed('IPython.qt'):
+        return True
+    elif programs.is_module_installed('IPython.frontend.qt'):
+        return True
+    else:
+        return False
+
 SUPPORTED_IPYTHON = '>=0.13'
-if programs.is_module_installed('IPython', '>=1.0'):
-    IPYTHON_QT_MODULE = 'IPython.qt'
-else:
-    IPYTHON_QT_MODULE = 'IPython.frontend.qt'
\ No newline at end of file
+IPYTHON_QT_INSTALLED = is_qtconsole_installed()
diff --git a/spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo b/spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo
index 7f564af..aa1c63b 100644
Binary files a/spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo and b/spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo differ
diff --git a/spyderlib/locale/fr/LC_MESSAGES/spyderlib.po b/spyderlib/locale/fr/LC_MESSAGES/spyderlib.po
index c86791f..11a5ec5 100644
--- a/spyderlib/locale/fr/LC_MESSAGES/spyderlib.po
+++ b/spyderlib/locale/fr/LC_MESSAGES/spyderlib.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: 2.1\n"
-"POT-Creation-Date: 2013-08-20 14:18+Paris, Madrid (heure dt)\n"
+"POT-Creation-Date: 2013-11-09 14:09+Paris, Madrid\n"
 "PO-Revision-Date: 2011-04-11 21:41+2\n"
 "Last-Translator: Pierre Raybaut\n"
 "Language-Team: Python\n"
@@ -105,7 +105,7 @@ msgstr "Chemin d'accès de répertoire incorrect"
 #: spyderlib\plugins\configdialog.py:431 spyderlib\plugins\configdialog.py:447
 #: spyderlib\plugins\runconfig.py:169 spyderlib\plugins\runconfig.py:229
 #: spyderlib\plugins\workingdirectory.py:294 spyderlib\widgets\explorer.py:536
-#: spyderlib\widgets\externalshell\pythonshell.py:604
+#: spyderlib\widgets\externalshell\pythonshell.py:611
 #: spyderlib\widgets\findinfiles.py:504 spyderlib\widgets\pathmanager.py:218
 #: spyderlib\widgets\projectexplorer.py:889
 msgid "Select directory"
@@ -123,11 +123,11 @@ msgstr "Sélectionner un fichier"
 msgid "All files (*)"
 msgstr "Tous les fichiers (*)"
 
-#: spyderlib\plugins\configdialog.py:543 spyderlib\widgets\formlayout.py:213
+#: spyderlib\plugins\configdialog.py:543 spyderlib\widgets\formlayout.py:214
 msgid "Bold"
 msgstr "Gras"
 
-#: spyderlib\plugins\configdialog.py:546 spyderlib\widgets\formlayout.py:208
+#: spyderlib\plugins\configdialog.py:546 spyderlib\widgets\formlayout.py:209
 msgid "Italic"
 msgstr "Italique"
 
@@ -147,9 +147,9 @@ msgstr "Police d'écriture"
 msgid "General"
 msgstr "Général"
 
-#: spyderlib\plugins\configdialog.py:657 spyderlib\plugins\editor.py:95
-#: spyderlib\plugins\externalconsole.py:84
-#: spyderlib\plugins\ipythonconsole.py:71
+#: spyderlib\plugins\configdialog.py:657 spyderlib\plugins\editor.py:96
+#: spyderlib\plugins\externalconsole.py:74
+#: spyderlib\plugins\ipythonconsole.py:70
 msgid "Interface"
 msgstr "Interface"
 
@@ -291,20 +291,20 @@ msgstr "Rétablir les valeurs par défaut"
 msgid "Internal console"
 msgstr "Console interne"
 
-#: spyderlib\plugins\console.py:125 spyderlib\plugins\ipythonconsole.py:510
-#: spyderlib\spyder.py:757
+#: spyderlib\plugins\console.py:125 spyderlib\spyder.py:810
+#: spyderlib\widgets\ipython.py:473
 msgid "&Quit"
 msgstr "&Quitter"
 
-#: spyderlib\plugins\console.py:126 spyderlib\spyder.py:758
+#: spyderlib\plugins\console.py:126 spyderlib\spyder.py:811
 msgid "Quit"
 msgstr "Quitter"
 
-#: spyderlib\plugins\console.py:129 spyderlib\plugins\externalconsole.py:1083
+#: spyderlib\plugins\console.py:129 spyderlib\plugins\externalconsole.py:1116
 msgid "&Run..."
 msgstr "Exécute&r..."
 
-#: spyderlib\plugins\console.py:130 spyderlib\plugins\externalconsole.py:1084
+#: spyderlib\plugins\console.py:130 spyderlib\plugins\externalconsole.py:1117
 msgid "Run a Python script"
 msgstr "Exécuter un script Python"
 
@@ -329,13 +329,13 @@ msgstr "Afficher le contenu de sys.path (lecture seule)"
 msgid "Buffer..."
 msgstr "Tampon..."
 
-#: spyderlib\plugins\console.py:145 spyderlib\plugins\externalconsole.py:104
+#: spyderlib\plugins\console.py:145 spyderlib\plugins\externalconsole.py:94
 #: spyderlib\plugins\history.py:38
 msgid "Set maximum line count"
 msgstr "Modifier le nombre maximum de lignes"
 
 #: spyderlib\plugins\console.py:148 spyderlib\plugins\explorer.py:60
-#: spyderlib\plugins\history.py:153 spyderlib\plugins\inspector.py:296
+#: spyderlib\plugins\history.py:153 spyderlib\plugins\inspector.py:349
 #: spyderlib\plugins\projectexplorer.py:58
 msgid "&Font..."
 msgstr "&Police..."
@@ -352,25 +352,25 @@ msgstr "Éditeur externe..."
 msgid "Set external editor executable path"
 msgstr "Modifier le chemin d'accès de l'éditeur externe"
 
-#: spyderlib\plugins\console.py:156 spyderlib\plugins\editor.py:133
-#: spyderlib\plugins\externalconsole.py:105 spyderlib\plugins\history.py:41
-#: spyderlib\plugins\history.py:156 spyderlib\plugins\inspector.py:96
-#: spyderlib\plugins\inspector.py:299
+#: spyderlib\plugins\console.py:156 spyderlib\plugins\editor.py:134
+#: spyderlib\plugins\externalconsole.py:95 spyderlib\plugins\history.py:41
+#: spyderlib\plugins\history.py:156 spyderlib\plugins\inspector.py:170
+#: spyderlib\plugins\inspector.py:352
 msgid "Wrap lines"
 msgstr "Retour à la ligne automatique"
 
-#: spyderlib\plugins\console.py:159 spyderlib\plugins\editor.py:163
-#: spyderlib\plugins\externalconsole.py:154
+#: spyderlib\plugins\console.py:159 spyderlib\plugins\editor.py:164
+#: spyderlib\plugins\externalconsole.py:144
 msgid "Balloon tips"
 msgstr "Info-bulles"
 
-#: spyderlib\plugins\console.py:163 spyderlib\plugins\editor.py:155
-#: spyderlib\plugins\externalconsole.py:146
+#: spyderlib\plugins\console.py:163 spyderlib\plugins\editor.py:156
+#: spyderlib\plugins\externalconsole.py:136
 msgid "Automatic code completion"
 msgstr "Complétion de code automatique"
 
-#: spyderlib\plugins\console.py:167 spyderlib\plugins\editor.py:161
-#: spyderlib\plugins\externalconsole.py:152
+#: spyderlib\plugins\console.py:167 spyderlib\plugins\editor.py:162
+#: spyderlib\plugins\externalconsole.py:142
 msgid "Enter key selects completion"
 msgstr "Entrée valide la complétion de code"
 
@@ -378,17 +378,17 @@ msgstr "Entrée valide la complétion de code"
 msgid "Internal console settings"
 msgstr "Options de la console interne"
 
-#: spyderlib\plugins\console.py:223 spyderlib\plugins\externalconsole.py:1257
+#: spyderlib\plugins\console.py:223 spyderlib\plugins\externalconsole.py:1288
 msgid "Run Python script"
 msgstr "Exécuter un script Python"
 
-#: spyderlib\plugins\console.py:224 spyderlib\plugins\externalconsole.py:268
-#: spyderlib\plugins\externalconsole.py:1258 spyderlib\widgets\explorer.py:635
+#: spyderlib\plugins\console.py:224 spyderlib\plugins\externalconsole.py:250
+#: spyderlib\plugins\externalconsole.py:1289 spyderlib\widgets\explorer.py:635
 msgid "Python scripts"
 msgstr "Scripts Python"
 
 #: spyderlib\plugins\console.py:269 spyderlib\plugins\explorer.py:111
-#: spyderlib\plugins\history.py:271 spyderlib\plugins\inspector.py:559
+#: spyderlib\plugins\history.py:271 spyderlib\plugins\inspector.py:643
 #: spyderlib\plugins\projectexplorer.py:120
 msgid "Select a new font"
 msgstr "Sélectionner une police d'écriture"
@@ -409,90 +409,90 @@ msgstr "Éditeur externe"
 msgid "External editor executable path:"
 msgstr "Chemin d'accès de l'exécutable :"
 
-#: spyderlib\plugins\editor.py:86 spyderlib\plugins\editor.py:512
-#: spyderlib\plugins\editor.py:1539 spyderlib\plugins\inspector.py:327
-#: spyderlib\widgets\editor.py:570
+#: spyderlib\plugins\editor.py:87 spyderlib\plugins\editor.py:505
+#: spyderlib\plugins\editor.py:1570 spyderlib\plugins\inspector.py:133
+#: spyderlib\plugins\inspector.py:380 spyderlib\widgets\editor.py:574
 #: spyderlib\widgets\sourcecode\codeeditor.py:270
-#: spyderlib\widgets\sourcecode\codeeditor.py:2564
+#: spyderlib\widgets\sourcecode\codeeditor.py:2558
 msgid "Editor"
 msgstr "Éditeur"
 
-#: spyderlib\plugins\editor.py:92
+#: spyderlib\plugins\editor.py:93
 msgid "Edit template for new modules"
 msgstr "Modifier le modèle (nouveaux modules)"
 
-#: spyderlib\plugins\editor.py:97
+#: spyderlib\plugins\editor.py:98
 msgid "Text and margin font style"
 msgstr "Police d'écriture du texte et de la marge"
 
-#: spyderlib\plugins\editor.py:100
+#: spyderlib\plugins\editor.py:101
 msgid "Sort files according to full path"
 msgstr "Classer les fichiers suivant leur chemin complet"
 
-#: spyderlib\plugins\editor.py:102
+#: spyderlib\plugins\editor.py:103
 msgid "Show tab bar"
 msgstr "Afficher la barre d'onglets"
 
-#: spyderlib\plugins\editor.py:109 spyderlib\plugins\editor.py:184
-#: spyderlib\plugins\externalconsole.py:100
-#: spyderlib\plugins\externalconsole.py:145 spyderlib\plugins\history.py:40
-#: spyderlib\plugins\inspector.py:95 spyderlib\plugins\ipythonconsole.py:106
+#: spyderlib\plugins\editor.py:110 spyderlib\plugins\editor.py:178
+#: spyderlib\plugins\externalconsole.py:90
+#: spyderlib\plugins\externalconsole.py:135 spyderlib\plugins\history.py:40
+#: spyderlib\plugins\inspector.py:169 spyderlib\plugins\ipythonconsole.py:108
 msgid "Source code"
 msgstr "Code source"
 
-#: spyderlib\plugins\editor.py:110
+#: spyderlib\plugins\editor.py:111
 msgid "Show line numbers"
 msgstr "Afficher les numéros de ligne"
 
-#: spyderlib\plugins\editor.py:111
+#: spyderlib\plugins\editor.py:112
 msgid "Show vertical line after"
 msgstr "Afficher une ligne verticale après"
 
-#: spyderlib\plugins\editor.py:112
+#: spyderlib\plugins\editor.py:113
 msgid "characters"
 msgstr "caractères"
 
-#: spyderlib\plugins\editor.py:120
+#: spyderlib\plugins\editor.py:121
 msgid "Highlight current line"
 msgstr "Surligner la ligne en cours d'édition"
 
-#: spyderlib\plugins\editor.py:122
+#: spyderlib\plugins\editor.py:123
 msgid "Highlight occurences after"
 msgstr "Surligner les occurences après"
 
-#: spyderlib\plugins\editor.py:136 spyderlib\plugins\history.py:49
-#: spyderlib\plugins\inspector.py:99
+#: spyderlib\plugins\editor.py:137 spyderlib\plugins\history.py:49
+#: spyderlib\plugins\inspector.py:173
 msgid "Syntax color scheme: "
 msgstr "Thème de coloration syntaxique : "
 
-#: spyderlib\plugins\editor.py:148 spyderlib\plugins\runconfig.py:304
+#: spyderlib\plugins\editor.py:149 spyderlib\plugins\runconfig.py:304
 #: spyderlib\plugins\runconfig.py:426 spyderlib\plugins\runconfig.py:431
-#: spyderlib\spyder.py:1710 spyderlib\widgets\explorer.py:230
+#: spyderlib\spyder.py:1795 spyderlib\widgets\explorer.py:230
 #: spyderlib\widgets\externalshell\baseshell.py:138
 msgid "Run"
 msgstr "Exécuter"
 
-#: spyderlib\plugins\editor.py:149
+#: spyderlib\plugins\editor.py:150
 msgid "Save all files before running script"
 msgstr "Enregistrer tous les fichiers avant l'exécution d'un script"
 
-#: spyderlib\plugins\editor.py:152 spyderlib\plugins\externalconsole.py:434
+#: spyderlib\plugins\editor.py:153 spyderlib\plugins\externalconsole.py:416
 msgid "Introspection"
 msgstr "Introspection"
 
-#: spyderlib\plugins\editor.py:157 spyderlib\plugins\externalconsole.py:148
+#: spyderlib\plugins\editor.py:158 spyderlib\plugins\externalconsole.py:138
 msgid "Case sensitive code completion"
 msgstr "Complétion de code sensible à la casse"
 
-#: spyderlib\plugins\editor.py:159 spyderlib\plugins\externalconsole.py:150
+#: spyderlib\plugins\editor.py:160 spyderlib\plugins\externalconsole.py:140
 msgid "Show single completion"
 msgstr "Afficher les listes de complétion avec un choix unique"
 
-#: spyderlib\plugins\editor.py:164
+#: spyderlib\plugins\editor.py:165
 msgid "Link to object definition"
 msgstr "Lien vers la définition d'un objet"
 
-#: spyderlib\plugins\editor.py:166
+#: spyderlib\plugins\editor.py:167
 msgid ""
 "If this option is enabled, clicking on an object\n"
 "name (left-click + Ctrl key) will go this object\n"
@@ -502,25 +502,7 @@ msgstr ""
 "d'un objet (click gauche + touche Ctrl) ira à la\n"
 "définition de cet objet (si celle-ci est trouvée)."
 
-#: spyderlib\plugins\editor.py:170 spyderlib\plugins\externalconsole.py:156
-#: spyderlib\plugins\ipythonconsole.py:89
-msgid "Automatic notification to object inspector"
-msgstr "Notification automatique à l'inspecteur d'objets"
-
-#: spyderlib\plugins\editor.py:172
-msgid ""
-"If this option is enabled, object inspector\n"
-"will automatically show informations on functions\n"
-"entered in editor (this is triggered when entering\n"
-"a left parenthesis after a valid function name)"
-msgstr ""
-"Si cette option est activée, l'inspecteur d'objet\n"
-"affichera automatiquement des informations\n"
-"sur les fonctions saisies dans l'éditeur\n"
-"(le mécanisme est déclenché par la saisie d'une\n"
-"parenthèse gauche après un nom valide de fonction)"
-
-#: spyderlib\plugins\editor.py:177
+#: spyderlib\plugins\editor.py:171
 msgid ""
 "<b>Warning:</b><br>The Python module <i>rope</i> is not installed on this "
 "computer: calltips, code completion and go-to-definition features won't be "
@@ -530,51 +512,51 @@ msgstr ""
 "sur cet ordinateur : les fonctionnalités telles que la complétion de code ou "
 "le lien vers la définition d'un objet ne sont donc pas accessibles."
 
-#: spyderlib\plugins\editor.py:185
+#: spyderlib\plugins\editor.py:179
 msgid "Automatic insertion of parentheses, braces and brackets"
 msgstr "Insertion automatique des parenthèses, crochets et accolades"
 
-#: spyderlib\plugins\editor.py:188
+#: spyderlib\plugins\editor.py:182
 msgid "Automatic insertion of closing quotes"
 msgstr "Insertion automatique de guillemets de clôture"
 
-#: spyderlib\plugins\editor.py:190
+#: spyderlib\plugins\editor.py:184
 msgid "Automatic insertion of colons after 'for', 'if', 'def', etc"
 msgstr "Insertion automatique de ':' après 'for', 'if', 'def', etc."
 
-#: spyderlib\plugins\editor.py:193
+#: spyderlib\plugins\editor.py:187
 msgid "Automatic indentation after 'else', 'elif', etc."
 msgstr "Indentation automatique après 'else', 'elif', etc."
 
-#: spyderlib\plugins\editor.py:195
+#: spyderlib\plugins\editor.py:189
 msgid "Indentation characters: "
 msgstr "Caractères d'indentation : "
 
-#: spyderlib\plugins\editor.py:196
+#: spyderlib\plugins\editor.py:190
 msgid "4 spaces"
 msgstr "4 espaces"
 
-#: spyderlib\plugins\editor.py:197
+#: spyderlib\plugins\editor.py:191
 msgid "2 spaces"
 msgstr "2 espaces"
 
-#: spyderlib\plugins\editor.py:198
+#: spyderlib\plugins\editor.py:192
 msgid "tab"
 msgstr "tabulation"
 
-#: spyderlib\plugins\editor.py:199
+#: spyderlib\plugins\editor.py:193
 msgid "Tab stop width:"
 msgstr "Largeur des tabulations :"
 
-#: spyderlib\plugins\editor.py:199
+#: spyderlib\plugins\editor.py:193
 msgid "pixels"
 msgstr "pixels"
 
-#: spyderlib\plugins\editor.py:201
+#: spyderlib\plugins\editor.py:195
 msgid "Tab always indent"
 msgstr "Toujours indenter avec la touche Tab"
 
-#: spyderlib\plugins\editor.py:203
+#: spyderlib\plugins\editor.py:197
 msgid ""
 "If enabled, pressing Tab will always indent,\n"
 "even when the cursor is not at the beginning\n"
@@ -588,21 +570,21 @@ msgstr ""
 "option est activée, la complétion de code reste \n"
 "accessible via le raccourci Ctrl+Espace)"
 
-#: spyderlib\plugins\editor.py:208
+#: spyderlib\plugins\editor.py:202
 msgid "Intelligent backspace"
 msgstr "Retour arrière (\"backspace\") intelligent"
 
-#: spyderlib\plugins\editor.py:210
+#: spyderlib\plugins\editor.py:204
 msgid "Automatically remove trailing spaces when saving files"
 msgstr ""
 "Supprimer automatiquement les espaces en fin de ligne lors de "
 "l'enregistrement"
 
-#: spyderlib\plugins\editor.py:214
+#: spyderlib\plugins\editor.py:208
 msgid "Analysis"
 msgstr "Analyse"
 
-#: spyderlib\plugins\editor.py:216
+#: spyderlib\plugins\editor.py:210
 msgid ""
 "<u>Note</u>: add <b>analysis:ignore</b> in a comment to ignore code/style "
 "analysis warnings. For more informations on style guide for Python code, "
@@ -613,12 +595,12 @@ msgstr ""
 "les recommandations officielles de style d'écriture avec le langage Python, "
 "veuillez visiter la page de la %s."
 
-#: spyderlib\plugins\editor.py:225
-#: spyderlib\widgets\sourcecode\codeeditor.py:1613
+#: spyderlib\plugins\editor.py:219
+#: spyderlib\widgets\sourcecode\codeeditor.py:1607
 msgid "Code analysis"
 msgstr "Analyse de code"
 
-#: spyderlib\plugins\editor.py:227
+#: spyderlib\plugins\editor.py:221
 msgid ""
 "If enabled, Python source code will be analyzed\n"
 "using pyflakes, lines containing errors or \n"
@@ -628,15 +610,15 @@ msgstr ""
 "avec des outils l'outil d'introspection de code pyflakes\n"
 "et les lignes contenant des erreurs seront indiquées"
 
-#: spyderlib\plugins\editor.py:232
+#: spyderlib\plugins\editor.py:226
 msgid "Code analysis requires pyflakes %s+"
 msgstr "L'analyse de code requiert pyflakes %s+"
 
-#: spyderlib\plugins\editor.py:234
+#: spyderlib\plugins\editor.py:228
 msgid "Style analysis"
 msgstr "Analyse de style"
 
-#: spyderlib\plugins\editor.py:236
+#: spyderlib\plugins\editor.py:230
 msgid ""
 "If enabled, Python source code will be analyzed\n"
 "using pep8, lines that are not following PEP8\n"
@@ -646,23 +628,23 @@ msgstr ""
 "avec l'outil d'introspection de code pep8 et les lignes ne suivant pas\n"
 "les recommandations officielles seront indiquées"
 
-#: spyderlib\plugins\editor.py:243
+#: spyderlib\plugins\editor.py:237
 msgid "Tasks (TODO, FIXME, XXX, HINT, TIP)"
 msgstr "Tâches (TODO, FIXME, XXX, HINT, TIP)"
 
-#: spyderlib\plugins\editor.py:246
+#: spyderlib\plugins\editor.py:240
 msgid "Perform analysis when saving file and every"
 msgstr "Analyser lors de l'enregistrement et toutes les"
 
-#: spyderlib\plugins\editor.py:250
+#: spyderlib\plugins\editor.py:244
 msgid "Perform analysis only when saving file"
 msgstr "Analyser uniquement lors de l'enregistrement"
 
-#: spyderlib\plugins\editor.py:296
+#: spyderlib\plugins\editor.py:289
 msgid "End-of-line characters"
 msgstr "Caractères de fin de ligne"
 
-#: spyderlib\plugins\editor.py:297
+#: spyderlib\plugins\editor.py:290
 msgid ""
 "When opening a text file containing mixed end-of-line characters (this may "
 "raise syntax errors in Python interpreter on Windows platforms), Spyder may "
@@ -673,388 +655,384 @@ msgstr ""
 "l'interpréteur Python sous Windows), Spyder peut réparer le fichier "
 "automatiquement."
 
-#: spyderlib\plugins\editor.py:303
+#: spyderlib\plugins\editor.py:296
 msgid "Fix automatically and show warning message box"
 msgstr "Réparer automatiquement et afficher un message d'avertissement"
 
-#: spyderlib\plugins\editor.py:314 spyderlib\plugins\externalconsole.py:432
-#: spyderlib\plugins\ipythonconsole.py:358
+#: spyderlib\plugins\editor.py:307 spyderlib\plugins\externalconsole.py:414
+#: spyderlib\plugins\ipythonconsole.py:361
 #: spyderlib\plugins\variableexplorer.py:41
 msgid "Display"
 msgstr "Affichage"
 
-#: spyderlib\plugins\editor.py:316
+#: spyderlib\plugins\editor.py:309
 msgid "Code Introspection/Analysis"
 msgstr "Introspection et analyse de code"
 
-#: spyderlib\plugins\editor.py:319 spyderlib\plugins\externalconsole.py:437
+#: spyderlib\plugins\editor.py:312 spyderlib\plugins\externalconsole.py:419
 msgid "Advanced settings"
 msgstr "Options avancées"
 
-#: spyderlib\plugins\editor.py:568 spyderlib\widgets\editortools.py:471
+#: spyderlib\plugins\editor.py:561 spyderlib\widgets\editortools.py:471
 msgid "Show/hide outline explorer"
 msgstr "Afficher/masquer l'explorateur de structure"
 
-#: spyderlib\plugins\editor.py:574
+#: spyderlib\plugins\editor.py:567
 msgid "Show/hide project explorer"
 msgstr "Afficher/masquer l'explorateur de projets"
 
-#: spyderlib\plugins\editor.py:582
+#: spyderlib\plugins\editor.py:576
 msgid "&New file..."
 msgstr "&Nouveau fichier..."
 
-#: spyderlib\plugins\editor.py:583
-msgid "Create a new Python script"
-msgstr "Créer un nouveau script Python"
+#: spyderlib\plugins\editor.py:577 spyderlib\plugins\workingdirectory.py:82
+#: spyderlib\widgets\explorer.py:613 spyderlib\widgets\explorer.py:620
+msgid "New file"
+msgstr "Nouveau fichier"
 
-#: spyderlib\plugins\editor.py:587
+#: spyderlib\plugins\editor.py:584
 msgid "&Open..."
 msgstr "&Ouvrir..."
 
-#: spyderlib\plugins\editor.py:588
-msgid "Open text file"
-msgstr "Ouvrir un fichier texte"
+#: spyderlib\plugins\editor.py:585 spyderlib\plugins\editor.py:1611
+#: spyderlib\plugins\workingdirectory.py:69
+msgid "Open file"
+msgstr "Ouvrir un fichier"
 
-#: spyderlib\plugins\editor.py:590
+#: spyderlib\plugins\editor.py:592
 msgid "&Revert"
 msgstr "&Réinitialiser"
 
-#: spyderlib\plugins\editor.py:591
+#: spyderlib\plugins\editor.py:593
 msgid "Revert file from disk"
 msgstr "Revenir à la version du fichier enregistrée sur le disque"
 
-#: spyderlib\plugins\editor.py:595
+#: spyderlib\plugins\editor.py:596
 msgid "&Save"
 msgstr "&Enregistrer"
 
-#: spyderlib\plugins\editor.py:596
-msgid "Save current file"
-msgstr "Enregistrer le fichier en cours d'édition"
+#: spyderlib\plugins\editor.py:597
+msgid "Save file"
+msgstr "Enregitrer un fichier"
 
-#: spyderlib\plugins\editor.py:600
+#: spyderlib\plugins\editor.py:604
 msgid "Sav&e all"
 msgstr "Enregistrer &tout"
 
-#: spyderlib\plugins\editor.py:601
-msgid "Save all opened files"
-msgstr "Enregistrer tous les fichiers ouverts"
-
 #: spyderlib\plugins\editor.py:605
+msgid "Save all files"
+msgstr "Enregistrer tous les fichiers"
+
+#: spyderlib\plugins\editor.py:612
 msgid "Save &as..."
 msgstr "Enregistrer &sous..."
 
-#: spyderlib\plugins\editor.py:606
+#: spyderlib\plugins\editor.py:613
 msgid "Save current file as..."
 msgstr "Enregistrer le fichier en cours d'édition sous un autre nom..."
 
-#: spyderlib\plugins\editor.py:608 spyderlib\plugins\editor.py:609
+#: spyderlib\plugins\editor.py:615 spyderlib\plugins\editor.py:616
 msgid "Print preview..."
 msgstr "Aperçu avant impression..."
 
-#: spyderlib\plugins\editor.py:610
+#: spyderlib\plugins\editor.py:617
 msgid "&Print..."
 msgstr "Im&primer..."
 
-#: spyderlib\plugins\editor.py:611
+#: spyderlib\plugins\editor.py:618
 msgid "Print current file..."
 msgstr "Imprimer le fichier en cours d'édition..."
 
-#: spyderlib\plugins\editor.py:615
+#: spyderlib\plugins\editor.py:622
 msgid "&Close"
 msgstr "&Fermer"
 
-#: spyderlib\plugins\editor.py:616
+#: spyderlib\plugins\editor.py:623
 msgid "Close current file"
 msgstr "Fermer le fichier en cours d'édition"
 
-#: spyderlib\plugins\editor.py:620
+#: spyderlib\plugins\editor.py:627
 msgid "C&lose all"
 msgstr "Fermer t&out"
 
-#: spyderlib\plugins\editor.py:621
+#: spyderlib\plugins\editor.py:628
 msgid "Close all opened files"
 msgstr "Fermer tous les fichiers ouverts"
 
-#: spyderlib\plugins\editor.py:627
+#: spyderlib\plugins\editor.py:635
 msgid "Set/Clear breakpoint"
 msgstr "Ajouter/supprimer un point d'arrêt"
 
-#: spyderlib\plugins\editor.py:634
+#: spyderlib\plugins\editor.py:642
 msgid "Set/Edit conditional breakpoint"
 msgstr "Ajouter/modifier un point d'arrêt conditionnel"
 
-#: spyderlib\plugins\editor.py:642
+#: spyderlib\plugins\editor.py:650
 msgid "Clear breakpoints in all files"
 msgstr "Supprimer les points d'arrêt dans tous les fichiers"
 
-#: spyderlib\plugins\editor.py:644
+#: spyderlib\plugins\editor.py:652
 msgid "Breakpoints"
 msgstr "Points d'arrêt"
 
-#: spyderlib\plugins\editor.py:650
+#: spyderlib\plugins\editor.py:656
+msgid "Debug with winpdb"
+msgstr "Déboguer avec winpdb"
+
+#: spyderlib\plugins\editor.py:663 spyderlib\spyder.py:609
 msgid "&Debug"
 msgstr "&Déboguer"
 
-#: spyderlib\plugins\editor.py:651
+#: spyderlib\plugins\editor.py:664
 msgid "Debug file"
 msgstr "Déboguer le script"
 
-#: spyderlib\plugins\editor.py:655
+#: spyderlib\plugins\editor.py:670
 msgid "Step"
 msgstr "Pas"
 
-#: spyderlib\plugins\editor.py:656
+#: spyderlib\plugins\editor.py:671
 msgid "Run current line"
 msgstr "Exécuter la ligne en cours"
 
-#: spyderlib\plugins\editor.py:660
+#: spyderlib\plugins\editor.py:678
 msgid "Continue"
 msgstr "Continuer"
 
-#: spyderlib\plugins\editor.py:661
-msgid ""
-"Continue execution until\n"
-"next breakpoint"
+#: spyderlib\plugins\editor.py:679
+msgid "Continue execution until next breakpoint"
 msgstr "Continuer l'exécution jusqu'au prochain point d'arrêt"
 
-#: spyderlib\plugins\editor.py:666
+#: spyderlib\plugins\editor.py:687
 msgid "Step Into"
 msgstr "Pas vers l'intérieur"
 
-#: spyderlib\plugins\editor.py:667
-msgid ""
-"Step into function, method\n"
-"or class of current line"
+#: spyderlib\plugins\editor.py:688
+msgid "Step into function or method of current line"
 msgstr ""
 "Avancer dans la fonction, méthode \n"
 "ou classe de la ligne en cours"
 
-#: spyderlib\plugins\editor.py:672
+#: spyderlib\plugins\editor.py:696
 msgid "Step Return"
 msgstr "Pas vers l'extérieur"
 
-#: spyderlib\plugins\editor.py:673
-msgid ""
-"Run until current function\n"
-"or method returns"
+#: spyderlib\plugins\editor.py:697
+msgid "Run until current function or method returns"
 msgstr "Exécuter jusqu'au retour de la fonction ou méthode"
 
-#: spyderlib\plugins\editor.py:678
+#: spyderlib\plugins\editor.py:705
 msgid "Exit"
 msgstr "Sortir"
 
-#: spyderlib\plugins\editor.py:679
+#: spyderlib\plugins\editor.py:706
 msgid "Exit Debug"
 msgstr "Quitter le débogage"
 
-#: spyderlib\plugins\editor.py:688
+#: spyderlib\plugins\editor.py:718
 msgid "Debugging control"
 msgstr "Contrôle du débogage"
 
-#: spyderlib\plugins\editor.py:692 spyderlib\plugins\editor.py:1191
-#: spyderlib\spyder.py:561
+#: spyderlib\plugins\editor.py:722 spyderlib\plugins\editor.py:1222
+#: spyderlib\spyder.py:604
 msgid "&Run"
 msgstr "E&xécution"
 
-#: spyderlib\plugins\editor.py:693
+#: spyderlib\plugins\editor.py:723
 msgid "Run file"
 msgstr "Exécuter le fichier"
 
-#: spyderlib\plugins\editor.py:698
+#: spyderlib\plugins\editor.py:730
 msgid "&Configure..."
 msgstr "&Configurer..."
 
-#: spyderlib\plugins\editor.py:699
-#: spyderlib\widgets\externalshell\pythonshell.py:290
+#: spyderlib\plugins\editor.py:731
+#: spyderlib\widgets\externalshell\pythonshell.py:294
 msgid "Run settings"
 msgstr "Options d'exécution"
 
-#: spyderlib\plugins\editor.py:705
+#: spyderlib\plugins\editor.py:740
 msgid "Re-run &last script"
 msgstr "Exécuter de nouveau le &dernier script"
 
-#: spyderlib\plugins\editor.py:706
+#: spyderlib\plugins\editor.py:741
 msgid "Run again last file"
 msgstr "Exécuter de nouveau le dernier fichier"
 
-#: spyderlib\plugins\editor.py:711
-#: spyderlib\widgets\sourcecode\codeeditor.py:2249
+#: spyderlib\plugins\editor.py:748
+#: spyderlib\widgets\sourcecode\codeeditor.py:2243
 msgid "Run &selection"
 msgstr "Exécuter la &sélection"
 
-#: spyderlib\plugins\editor.py:713
+#: spyderlib\plugins\editor.py:750
 msgid "Run selection"
 msgstr "Exécuter la sélection"
 
-#: spyderlib\plugins\editor.py:718
+#: spyderlib\plugins\editor.py:756
 msgid "Run cell"
 msgstr "Exécuter la cellule"
 
-#: spyderlib\plugins\editor.py:720
+#: spyderlib\plugins\editor.py:758
 msgid ""
-"Run current cell \n"
-"(see Editor documentation \n"
-"for more details on cells)"
-msgstr "Exécuter la cellule en cours d'édition\n(voir la documentation de l'Editeur, pour plus de détails sur les cellules)"
+"Run current cell (Ctrl+Enter)\n"
+"[Use #%% to create cells]"
+msgstr ""
+"Exécuter la cellule courante \n"
+"[Utiliser #%% pour délimiter les cellules]"
 
-#: spyderlib\plugins\editor.py:725
+#: spyderlib\plugins\editor.py:763
 msgid "Run cell and advance"
 msgstr "Exécuter la cellule et avancer"
 
-#: spyderlib\plugins\editor.py:728
-msgid ""
-"Run current cell and go to the next one\n"
-"(see Editor documentation \n"
-"for more details on cells)"
-msgstr "Exécuter la cellule en cours d'édition et aller à la suivante\n(voir la documentation de l'Editeur, pour plus de détails sur les cellules)"
+#: spyderlib\plugins\editor.py:766
+msgid "Run current cell and go to the next one (Shift+Enter)"
+msgstr ""
+"Exécuter la cellule en cours d'édition et aller à la suivante\n"
+"(voir la documentation de l'Editeur, pour plus de détails sur les cellules)"
 
-#: spyderlib\plugins\editor.py:735
+#: spyderlib\plugins\editor.py:772
 msgid "Show todo list"
 msgstr "Afficher la liste des tâches"
 
-#: spyderlib\plugins\editor.py:736
+#: spyderlib\plugins\editor.py:773
 msgid "Show TODO/FIXME/XXX/HINT/TIP comments list"
 msgstr "Afficher la liste des commentaires du type TODO/FIXME/XXX/HINT/TIP"
 
-#: spyderlib\plugins\editor.py:744
+#: spyderlib\plugins\editor.py:781
 msgid "Show warning/error list"
 msgstr "Afficher la liste des avertissements/erreurs"
 
-#: spyderlib\plugins\editor.py:745
+#: spyderlib\plugins\editor.py:782
 msgid "Show code analysis warnings/errors"
 msgstr ""
 "Afficher la liste des avertissements/erreurs provenant de l'analyse de code"
 
-#: spyderlib\plugins\editor.py:752
+#: spyderlib\plugins\editor.py:789
 msgid "Previous warning/error"
 msgstr "Avertissement suivant"
 
-#: spyderlib\plugins\editor.py:753
+#: spyderlib\plugins\editor.py:790
 msgid "Go to previous code analysis warning/error"
 msgstr "Afficher le message d'avertissement ou d'erreur suivant"
 
-#: spyderlib\plugins\editor.py:756
+#: spyderlib\plugins\editor.py:793
 msgid "Next warning/error"
 msgstr "Avertissement précédent"
 
-#: spyderlib\plugins\editor.py:757
+#: spyderlib\plugins\editor.py:794
 msgid "Go to next code analysis warning/error"
 msgstr "Afficher le message d'avertissement ou d'erreur précédent"
 
-#: spyderlib\plugins\editor.py:761
+#: spyderlib\plugins\editor.py:798
 msgid "Last edit location"
 msgstr "Dernière position d'édition"
 
-#: spyderlib\plugins\editor.py:762
+#: spyderlib\plugins\editor.py:799
 msgid "Go to last edit location"
 msgstr "Aller à la dernière position d'édition"
 
-#: spyderlib\plugins\editor.py:769
+#: spyderlib\plugins\editor.py:806
 msgid "Previous cursor position"
 msgstr "Position suivante du curseur"
 
-#: spyderlib\plugins\editor.py:770
+#: spyderlib\plugins\editor.py:807
 msgid "Go to previous cursor position"
 msgstr "Aller à la position précédente du curseur"
 
-#: spyderlib\plugins\editor.py:777
+#: spyderlib\plugins\editor.py:814
 msgid "Next cursor position"
 msgstr "Position suivante du curseur"
 
-#: spyderlib\plugins\editor.py:778
+#: spyderlib\plugins\editor.py:815
 msgid "Go to next cursor position"
 msgstr "Aller à la position suivante du curseur"
 
-#: spyderlib\plugins\editor.py:786
-#: spyderlib\widgets\sourcecode\codeeditor.py:2243
+#: spyderlib\plugins\editor.py:823
+#: spyderlib\widgets\sourcecode\codeeditor.py:2237
 msgid "Comment"
 msgstr "Commenter"
 
-#: spyderlib\plugins\editor.py:786
-#: spyderlib\widgets\sourcecode\codeeditor.py:2243
+#: spyderlib\plugins\editor.py:823
+#: spyderlib\widgets\sourcecode\codeeditor.py:2237
 msgid "Uncomment"
 msgstr "Décommenter"
 
-#: spyderlib\plugins\editor.py:787
+#: spyderlib\plugins\editor.py:824
 msgid "Comment current line or selection"
 msgstr "Commenter la sélection ou la ligne en cours d'édition"
 
-#: spyderlib\plugins\editor.py:791
+#: spyderlib\plugins\editor.py:828
 msgid "Add &block comment"
 msgstr "Ajouter un &bloc de commentaires"
 
-#: spyderlib\plugins\editor.py:792
+#: spyderlib\plugins\editor.py:829
 msgid "Add block comment around current line or selection"
 msgstr ""
 "Ajouter un bloc de commentaires autour de la sélection ou de la ligne en "
 "cours d'édition"
 
-#: spyderlib\plugins\editor.py:798
+#: spyderlib\plugins\editor.py:835
 msgid "R&emove block comment"
 msgstr "&Supprimer un bloc de commentaires"
 
-#: spyderlib\plugins\editor.py:799
+#: spyderlib\plugins\editor.py:836
 msgid "Remove comment block around current line or selection"
 msgstr ""
 "Supprimer le bloc de commentaires autour de la ligne en cours d'édition"
 
-#: spyderlib\plugins\editor.py:810
+#: spyderlib\plugins\editor.py:847
 msgid "Indent"
 msgstr "Indenter"
 
-#: spyderlib\plugins\editor.py:811
+#: spyderlib\plugins\editor.py:848
 msgid "Indent current line or selection"
 msgstr "Indenter la sélection ou la ligne en cours d'édition"
 
-#: spyderlib\plugins\editor.py:814
+#: spyderlib\plugins\editor.py:851
 msgid "Unindent"
 msgstr "Désindenter"
 
-#: spyderlib\plugins\editor.py:815
+#: spyderlib\plugins\editor.py:852
 msgid "Unindent current line or selection"
 msgstr "Désindenter la sélection ou la ligne en cours d'édition"
 
-#: spyderlib\plugins\editor.py:819
-msgid "Debug with winpdb"
-msgstr "Déboguer avec winpdb"
-
-#: spyderlib\plugins\editor.py:826
+#: spyderlib\plugins\editor.py:857
 msgid "Carriage return and line feed (Windows)"
 msgstr "Retour chariot et retour à la ligne (Windows)"
 
-#: spyderlib\plugins\editor.py:829
+#: spyderlib\plugins\editor.py:860
 msgid "Line feed (UNIX)"
 msgstr "Retour à la ligne (UNIX)"
 
-#: spyderlib\plugins\editor.py:832
+#: spyderlib\plugins\editor.py:863
 msgid "Carriage return (Mac)"
 msgstr "Retour chariot (Mac)"
 
-#: spyderlib\plugins\editor.py:838
+#: spyderlib\plugins\editor.py:869
 msgid "Convert end-of-line characters"
 msgstr "Convertir les caractères de fin de ligne"
 
-#: spyderlib\plugins\editor.py:842
+#: spyderlib\plugins\editor.py:873
 msgid "Remove trailing spaces"
 msgstr "Supprimer les espaces en fin de ligne"
 
-#: spyderlib\plugins\editor.py:844
+#: spyderlib\plugins\editor.py:875
 msgid "Fix indentation"
 msgstr "Corriger l'indentation"
 
-#: spyderlib\plugins\editor.py:845
+#: spyderlib\plugins\editor.py:876
 msgid "Replace tab characters by space characters"
 msgstr "Remplacer les caractères de tabulation par des espaces"
 
-#: spyderlib\plugins\editor.py:848
+#: spyderlib\plugins\editor.py:879
 msgid "Go to line..."
 msgstr "Aller à la ligne..."
 
-#: spyderlib\plugins\editor.py:856
+#: spyderlib\plugins\editor.py:887
 msgid "Set console working directory"
 msgstr "Répertoire de travail de la console"
 
-#: spyderlib\plugins\editor.py:858
+#: spyderlib\plugins\editor.py:889
 msgid ""
 "Set current console (and file explorer) working directory to current script "
 "directory"
@@ -1062,91 +1040,87 @@ msgstr ""
 "Choisir le répertoire du script comme répertoire de travail de la console "
 "courante (et de l'explorateur de fichier)"
 
-#: spyderlib\plugins\editor.py:863
+#: spyderlib\plugins\editor.py:894
 msgid "Maximum number of recent files..."
 msgstr "Nombre maximum de fichiers récents..."
 
-#: spyderlib\plugins\editor.py:866
+#: spyderlib\plugins\editor.py:897
 msgid "Clear recent files list"
 msgstr "Effacer la liste des fichiers récents"
 
-#: spyderlib\plugins\editor.py:866
+#: spyderlib\plugins\editor.py:897
 msgid "Clear this list"
 msgstr "Effacer cette liste"
 
-#: spyderlib\plugins\editor.py:868
+#: spyderlib\plugins\editor.py:899
 msgid "Open &recent"
 msgstr "Fichiers &récents"
 
-#: spyderlib\plugins\editor.py:1179 spyderlib\spyder.py:542
+#: spyderlib\plugins\editor.py:1210 spyderlib\spyder.py:585
 msgid "File toolbar"
 msgstr "Barre d'outil fichiers"
 
-#: spyderlib\plugins\editor.py:1180 spyderlib\spyder.py:552
+#: spyderlib\plugins\editor.py:1211 spyderlib\spyder.py:595
 msgid "Search toolbar"
 msgstr "Barre d'outil de recherche"
 
-#: spyderlib\plugins\editor.py:1181 spyderlib\spyder.py:557
+#: spyderlib\plugins\editor.py:1212 spyderlib\spyder.py:600
 msgid "Source toolbar"
 msgstr "Barre d'outils code source"
 
-#: spyderlib\plugins\editor.py:1182 spyderlib\spyder.py:562
+#: spyderlib\plugins\editor.py:1213 spyderlib\spyder.py:605
 msgid "Run toolbar"
 msgstr "Barre d'outil exécution"
 
-#: spyderlib\plugins\editor.py:1183 spyderlib\spyder.py:566
+#: spyderlib\plugins\editor.py:1214 spyderlib\spyder.py:610
 msgid "Debug toolbar"
 msgstr "Barre d'outil de débogage"
 
-#: spyderlib\plugins\editor.py:1184 spyderlib\spyder.py:547
+#: spyderlib\plugins\editor.py:1215 spyderlib\spyder.py:590
 msgid "Edit toolbar"
 msgstr "Barre d'outil édition"
 
-#: spyderlib\plugins\editor.py:1187 spyderlib\spyder.py:539
+#: spyderlib\plugins\editor.py:1218 spyderlib\spyder.py:582
 msgid "&File"
 msgstr "&Fichier"
 
-#: spyderlib\plugins\editor.py:1188 spyderlib\spyder.py:546
+#: spyderlib\plugins\editor.py:1219 spyderlib\spyder.py:589
 msgid "&Edit"
 msgstr "&Édition"
 
-#: spyderlib\plugins\editor.py:1189 spyderlib\spyder.py:551
+#: spyderlib\plugins\editor.py:1220 spyderlib\spyder.py:594
 msgid "&Search"
 msgstr "&Recherche"
 
-#: spyderlib\plugins\editor.py:1190 spyderlib\spyder.py:556
+#: spyderlib\plugins\editor.py:1221 spyderlib\spyder.py:599
 msgid "Sour&ce"
 msgstr "Sour&ce"
 
-#: spyderlib\plugins\editor.py:1192 spyderlib\spyder.py:573
+#: spyderlib\plugins\editor.py:1223 spyderlib\spyder.py:617
 msgid "&Tools"
 msgstr "Ou&tils"
 
-#: spyderlib\plugins\editor.py:1193
+#: spyderlib\plugins\editor.py:1224
 msgid "?"
 msgstr "?"
 
-#: spyderlib\plugins\editor.py:1408
+#: spyderlib\plugins\editor.py:1439
 msgid "Spyder Editor"
 msgstr "Éditeur de Spyder"
 
-#: spyderlib\plugins\editor.py:1409
+#: spyderlib\plugins\editor.py:1440
 msgid "This is a temporary script file."
 msgstr "Ceci est un script temporaire."
 
-#: spyderlib\plugins\editor.py:1469
+#: spyderlib\plugins\editor.py:1500
 msgid "untitled"
 msgstr "sanstitre"
 
-#: spyderlib\plugins\editor.py:1540
+#: spyderlib\plugins\editor.py:1571
 msgid "Maximum number of recent files"
 msgstr "Nombre maximum de fichiers récents"
 
-#: spyderlib\plugins\editor.py:1580 spyderlib\plugins\workingdirectory.py:69
-msgid "Open file"
-msgstr "Ouvrir un fichier"
-
-#: spyderlib\plugins\editor.py:1662
+#: spyderlib\plugins\editor.py:1693
 msgid "Printing..."
 msgstr "Impression en cours..."
 
@@ -1154,7 +1128,7 @@ msgstr "Impression en cours..."
 msgid "File explorer"
 msgstr "Explorateur de fichiers"
 
-#: spyderlib\plugins\explorer.py:61 spyderlib\plugins\inspector.py:297
+#: spyderlib\plugins\explorer.py:61 spyderlib\plugins\inspector.py:350
 #: spyderlib\plugins\projectexplorer.py:59
 msgid "Set font style"
 msgstr "Changer la police d'écriture"
@@ -1163,41 +1137,41 @@ msgstr "Changer la police d'écriture"
 msgid "Interactive data plotting"
 msgstr "Visualisation interactive de données"
 
-#: spyderlib\plugins\externalconsole.py:70
-#: spyderlib\plugins\externalconsole.py:1050
-#: spyderlib\plugins\inspector.py:327 spyderlib\plugins\ipythonconsole.py:433
-#: spyderlib\plugins\ipythonconsole.py:1145
+#: spyderlib\plugins\externalconsole.py:60
+#: spyderlib\plugins\externalconsole.py:1083
+#: spyderlib\plugins\inspector.py:380
 #: spyderlib\widgets\externalshell\baseshell.py:106
+#: spyderlib\widgets\ipython.py:412
 msgid "Console"
 msgstr "Console"
 
-#: spyderlib\plugins\externalconsole.py:88
+#: spyderlib\plugins\externalconsole.py:78
 msgid "One tab per script"
 msgstr "Un onglet par script"
 
-#: spyderlib\plugins\externalconsole.py:89
+#: spyderlib\plugins\externalconsole.py:79
 #: spyderlib\widgets\externalshell\baseshell.py:171
 msgid "Show elapsed time"
 msgstr "Afficher le temps écoulé"
 
-#: spyderlib\plugins\externalconsole.py:90 spyderlib\widgets\explorer.py:960
+#: spyderlib\plugins\externalconsole.py:80 spyderlib\widgets\explorer.py:960
 msgid "Show icons and text"
 msgstr "Afficher icônes et textes"
 
-#: spyderlib\plugins\externalconsole.py:102
+#: spyderlib\plugins\externalconsole.py:92
 msgid "Buffer: "
 msgstr "Tampon : "
 
-#: spyderlib\plugins\externalconsole.py:102
-#: spyderlib\plugins\ipythonconsole.py:108
+#: spyderlib\plugins\externalconsole.py:92
+#: spyderlib\plugins\ipythonconsole.py:110
 msgid " lines"
 msgstr " lignes"
 
-#: spyderlib\plugins\externalconsole.py:107
+#: spyderlib\plugins\externalconsole.py:97
 msgid "Merge process standard output/error channels"
 msgstr "Fusionner les canaux de sortie et d'erreur du processus"
 
-#: spyderlib\plugins\externalconsole.py:109
+#: spyderlib\plugins\externalconsole.py:99
 msgid ""
 "Merging the output channels of the process means that\n"
 "the standard error won't be written in red anymore,\n"
@@ -1208,11 +1182,11 @@ msgstr ""
 "mais cela entraînera également une amélioration des performances\n"
 "d'affichage et une meilleure réactivité de la console."
 
-#: spyderlib\plugins\externalconsole.py:113
+#: spyderlib\plugins\externalconsole.py:103
 msgid "Colorize standard error channel using ANSI escape codes"
 msgstr "Coloriser le canal d'erreur standard (codes d'échappement ANSI)"
 
-#: spyderlib\plugins\externalconsole.py:115
+#: spyderlib\plugins\externalconsole.py:105
 msgid ""
 "This method is the only way to have colorized standard\n"
 "error channel when the output channels have been merged."
@@ -1220,12 +1194,12 @@ msgstr ""
 "Cette méthode est le seul moyen de coloriser le canal\n"
 "d'erreur standard lorsque les canaux de sorties ont été fusionnés."
 
-#: spyderlib\plugins\externalconsole.py:133
-#: spyderlib\widgets\arrayeditor.py:395
+#: spyderlib\plugins\externalconsole.py:123
+#: spyderlib\plugins\ipythonconsole.py:97 spyderlib\widgets\arrayeditor.py:395
 msgid "Background color"
 msgstr "Couleur de fond"
 
-#: spyderlib\plugins\externalconsole.py:134
+#: spyderlib\plugins\externalconsole.py:124
 msgid ""
 "This option will be applied the next time a Python console or a terminal is "
 "opened."
@@ -1233,28 +1207,15 @@ msgstr ""
 "Cette option sera prise en compte lors de la prochaine ouverture de console "
 "(interpréteur Python ou terminal)."
 
-#: spyderlib\plugins\externalconsole.py:137
+#: spyderlib\plugins\externalconsole.py:127
 msgid "Light background (white color)"
 msgstr "Fond blanc"
 
-#: spyderlib\plugins\externalconsole.py:158
-#: spyderlib\plugins\ipythonconsole.py:91
-msgid ""
-"If this option is enabled, object inspector\n"
-"will automatically show informations on functions\n"
-"entered in console (this is triggered when entering\n"
-"a left parenthesis after a valid function name)"
-msgstr ""
-"Si cette option est activée, l'inspecteur d'objet affichera automatiquement "
-"des informations sur les fonctions saisies dans la console (le mécanisme est "
-"déclenché par la saisie d'une parenthèse gauche après un nom valide de "
-"fonction)"
-
-#: spyderlib\plugins\externalconsole.py:173
+#: spyderlib\plugins\externalconsole.py:155
 msgid "User Module Deleter (UMD)"
 msgstr "User Module Deleter (UMD)"
 
-#: spyderlib\plugins\externalconsole.py:174
+#: spyderlib\plugins\externalconsole.py:156
 msgid ""
 "UMD forces Python to reload modules which were imported when executing a \n"
 "script in the external console with the 'runfile' function."
@@ -1263,11 +1224,11 @@ msgstr ""
 "d'un\n"
 "script dans la console interne avec la fonction 'runfile'."
 
-#: spyderlib\plugins\externalconsole.py:177
+#: spyderlib\plugins\externalconsole.py:159
 msgid "Enable UMD"
 msgstr "Activer l'UMD"
 
-#: spyderlib\plugins\externalconsole.py:178
+#: spyderlib\plugins\externalconsole.py:160
 msgid ""
 "This option will enable the User Module Deleter (UMD) in Python "
 "interpreters. UMD forces Python to reload deeply modules during import when "
@@ -1292,11 +1253,11 @@ msgstr ""
 "l'attribut <b>Qt.WA_DeleteOnClose</b> sur votre objet fenêtre principale "
 "grâce à la méthode <b>setAttribute</b>)"
 
-#: spyderlib\plugins\externalconsole.py:194
+#: spyderlib\plugins\externalconsole.py:176
 msgid "Show reloaded modules list"
 msgstr "Afficher les modules rechargés"
 
-#: spyderlib\plugins\externalconsole.py:195
+#: spyderlib\plugins\externalconsole.py:177
 msgid ""
 "Please note that these changes will be applied only to new Python "
 "interpreters"
@@ -1304,48 +1265,48 @@ msgstr ""
 "Veuillez noter que ces changements ne seront pris en compte que par les "
 "nouveaux interpréteurs Python"
 
-#: spyderlib\plugins\externalconsole.py:199
+#: spyderlib\plugins\externalconsole.py:181
 msgid "Set UMD excluded (not reloaded) modules"
 msgstr "Modifier la liste des modules non rechargés par l'UMD"
 
-#: spyderlib\plugins\externalconsole.py:211
+#: spyderlib\plugins\externalconsole.py:193
 msgid "Python executable"
 msgstr "Exécutable Python"
 
-#: spyderlib\plugins\externalconsole.py:213
+#: spyderlib\plugins\externalconsole.py:195
 msgid ""
 "Select the Python interpreter executable binary in which Spyder will run "
 "scripts:"
 msgstr "Sélectionner l'interpréteur Python utilisé pour exécuter des scripts:"
 
-#: spyderlib\plugins\externalconsole.py:216
+#: spyderlib\plugins\externalconsole.py:198
 msgid "Default (i.e. the same as Spyder's)"
 msgstr ""
 "Par défaut (interpréteur identique à celui dans lequel Spyder est exécuté)"
 
-#: spyderlib\plugins\externalconsole.py:220
+#: spyderlib\plugins\externalconsole.py:202
 msgid "Use the following Python interpreter:"
 msgstr "Utiliser l'interpréteur Python suivant :"
 
-#: spyderlib\plugins\externalconsole.py:224
+#: spyderlib\plugins\externalconsole.py:206
 msgid "Executables"
 msgstr "Exécutables"
 
-#: spyderlib\plugins\externalconsole.py:244
-#: spyderlib\plugins\ipythonconsole.py:362
+#: spyderlib\plugins\externalconsole.py:226
+#: spyderlib\plugins\ipythonconsole.py:365
 #: spyderlib\plugins\workingdirectory.py:42
 msgid "Startup"
 msgstr "Démarrage"
 
-#: spyderlib\plugins\externalconsole.py:245
+#: spyderlib\plugins\externalconsole.py:227
 msgid "Open a Python interpreter at startup"
 msgstr "Ouvrir un interpréteur Python au démarrage"
 
-#: spyderlib\plugins\externalconsole.py:253
+#: spyderlib\plugins\externalconsole.py:235
 msgid "PYTHONSTARTUP replacement"
 msgstr "Substitution de PYTHONSTARTUP"
 
-#: spyderlib\plugins\externalconsole.py:255
+#: spyderlib\plugins\externalconsole.py:237
 msgid ""
 "This option will override the PYTHONSTARTUP environment variable which\n"
 "defines the script to be executed during the Python interpreter startup."
@@ -1353,19 +1314,19 @@ msgstr ""
 "Cette option permet de remplacer le script de démarrage défini par la\n"
 "variable d'environnement PYTHONSTARTUP."
 
-#: spyderlib\plugins\externalconsole.py:260
+#: spyderlib\plugins\externalconsole.py:242
 msgid "Default PYTHONSTARTUP script"
 msgstr "Script PYTHONSTARTUP par défaut"
 
-#: spyderlib\plugins\externalconsole.py:264
+#: spyderlib\plugins\externalconsole.py:246
 msgid "Use the following startup script:"
 msgstr "Utiliser le script de démarrage suivant :"
 
-#: spyderlib\plugins\externalconsole.py:283
+#: spyderlib\plugins\externalconsole.py:265
 msgid "Monitor"
 msgstr "Moniteur"
 
-#: spyderlib\plugins\externalconsole.py:284
+#: spyderlib\plugins\externalconsole.py:266
 msgid ""
 "The monitor provides introspection features to console: code completion, "
 "calltips and variable explorer. Because it relies on several modules, "
@@ -1376,34 +1337,34 @@ msgstr ""
 "Parce qu'il nécessite l'import de nombreux modules, désactiver le moniteur "
 "permet d'accélérer le démarrage de la console."
 
-#: spyderlib\plugins\externalconsole.py:291
+#: spyderlib\plugins\externalconsole.py:273
 msgid "Enable monitor"
 msgstr "Activer le moniteur"
 
-#: spyderlib\plugins\externalconsole.py:303
+#: spyderlib\plugins\externalconsole.py:285
 msgid "Default library"
 msgstr "Bibliothèque par défaut"
 
-#: spyderlib\plugins\externalconsole.py:305
+#: spyderlib\plugins\externalconsole.py:287
 msgid "Qt (PyQt/PySide)"
 msgstr "Qt (PyQt/PySide)"
 
-#: spyderlib\plugins\externalconsole.py:307
+#: spyderlib\plugins\externalconsole.py:289
 msgid "Qt-Python bindings library selection:"
 msgstr "Sélection de la bibliothèque d'interfaçage Qt :"
 
-#: spyderlib\plugins\externalconsole.py:309
+#: spyderlib\plugins\externalconsole.py:291
 msgid ""
 "This option will act on<br> libraries such as Matplotlib, guidata or ETS"
 msgstr ""
 "Cette option est prise en charge par les bibliothèques telles que "
 "Matplotlib, guidata ou ETS"
 
-#: spyderlib\plugins\externalconsole.py:323
+#: spyderlib\plugins\externalconsole.py:305
 msgid "Install Spyder's input hook for Qt"
 msgstr "Installer le \"input hook\" de Spyder pour Qt"
 
-#: spyderlib\plugins\externalconsole.py:325
+#: spyderlib\plugins\externalconsole.py:307
 msgid ""
 "PyQt installs an input hook that allows<br> creating and interacting with Qt "
 "widgets in an interactive interpreter without blocking it. On Windows "
@@ -1421,27 +1382,27 @@ msgstr ""
 "il est également recommandé d'activer cette option \n"
 "(cette fonctionnalité n'a aucun effet si le moniteur est désactivé)."
 
-#: spyderlib\plugins\externalconsole.py:344
+#: spyderlib\plugins\externalconsole.py:326
 msgid "PyQt"
 msgstr "PyQt"
 
-#: spyderlib\plugins\externalconsole.py:346
+#: spyderlib\plugins\externalconsole.py:328
 msgid "API selection for QString and QVariant objects:"
 msgstr "Sélection de l'API des objets QString et QVariant :"
 
-#: spyderlib\plugins\externalconsole.py:347
+#: spyderlib\plugins\externalconsole.py:329
 msgid "API #1"
 msgstr "API n°1"
 
-#: spyderlib\plugins\externalconsole.py:347
+#: spyderlib\plugins\externalconsole.py:329
 msgid "API #2"
 msgstr "API n°2"
 
-#: spyderlib\plugins\externalconsole.py:347
+#: spyderlib\plugins\externalconsole.py:329
 msgid "Default API"
 msgstr "API par défaut"
 
-#: spyderlib\plugins\externalconsole.py:349
+#: spyderlib\plugins\externalconsole.py:331
 msgid ""
 "PyQt API #1 is the default API for<br>Python 2. PyQt API #2 is the default "
 "API for Python 3 and is compatible with PySide. Note that switching to API "
@@ -1452,11 +1413,11 @@ msgstr ""
 "La sélection de l'API n°2 peut nécessiter l'activation du patch de "
 "Matplotlib."
 
-#: spyderlib\plugins\externalconsole.py:355
+#: spyderlib\plugins\externalconsole.py:337
 msgid "Ignore API change errors (sip.setapi)"
 msgstr "Ignorer les erreurs de changement d'API (sip.setapi)"
 
-#: spyderlib\plugins\externalconsole.py:357
+#: spyderlib\plugins\externalconsole.py:339
 msgid ""
 "Enabling this option will ignore <br>errors when changing PyQt API. As PyQt "
 "does not support dynamic API changes, it is strongly recommended to use this "
@@ -1469,26 +1430,26 @@ msgstr ""
 "exceptionnellement,\n"
 "par exemple pour du débogage."
 
-#: spyderlib\plugins\externalconsole.py:376
+#: spyderlib\plugins\externalconsole.py:358
 msgid "Matplotlib"
 msgstr "Matplotlib"
 
-#: spyderlib\plugins\externalconsole.py:378
+#: spyderlib\plugins\externalconsole.py:360
 msgid "GUI backend:"
 msgstr "Backend graphique :"
 
-#: spyderlib\plugins\externalconsole.py:380
+#: spyderlib\plugins\externalconsole.py:362
 msgid ""
 "Set the GUI toolkit used by <br>Matplotlib to show figures (default: Qt4Agg)"
 msgstr ""
 "Spécifie la bibliothèque d'interfaces graphiques à utiliser pour l'affichage "
 "des figures Matplotlib (par défaut : Qt4Agg)"
 
-#: spyderlib\plugins\externalconsole.py:391
+#: spyderlib\plugins\externalconsole.py:373
 msgid "Patch Matplotlib figures"
 msgstr "Patcher les figures Matplotlib"
 
-#: spyderlib\plugins\externalconsole.py:393
+#: spyderlib\plugins\externalconsole.py:375
 msgid ""
 "Patching Matplotlib library will add a button to customize figure options "
 "(Qt4Agg only) and fix some issues."
@@ -1497,11 +1458,11 @@ msgstr ""
 "(au backend Qt4Agg) pour modifier les options des courbes et images "
 "affichées et de corriger quelques bogues."
 
-#: spyderlib\plugins\externalconsole.py:413
+#: spyderlib\plugins\externalconsole.py:395
 msgid "Enthought Tool Suite"
 msgstr "Enthought Tool Suite"
 
-#: spyderlib\plugins\externalconsole.py:414
+#: spyderlib\plugins\externalconsole.py:396
 msgid ""
 "Enthought Tool Suite (ETS) supports PyQt4 (qt4) and wxPython (wx) graphical "
 "user interfaces."
@@ -1509,19 +1470,19 @@ msgstr ""
 "Le logiciel Enthought Tool Suite (ETS) prend en charge les interfaces "
 "graphiques PyQt4 (qt4) et wxPython (wx)."
 
-#: spyderlib\plugins\externalconsole.py:418
+#: spyderlib\plugins\externalconsole.py:400
 msgid "ETS_TOOLKIT:"
 msgstr "ETS_TOOLKIT:"
 
-#: spyderlib\plugins\externalconsole.py:439
+#: spyderlib\plugins\externalconsole.py:421
 msgid "External modules"
 msgstr "Modules externes"
 
-#: spyderlib\plugins\externalconsole.py:643
+#: spyderlib\plugins\externalconsole.py:610
 msgid "Trying to kill a kernel?"
 msgstr "Tentative d'arrêt d'un noyau"
 
-#: spyderlib\plugins\externalconsole.py:644
+#: spyderlib\plugins\externalconsole.py:611
 msgid ""
 "You can't close this kernel because it has one or more consoles connected to "
 "it.<br><br>You need to close them instead or you can kill the kernel using "
@@ -1533,14 +1494,14 @@ msgstr ""
 "Veuillez soit fermer au préalable toutes les consoles connectées ou appuyer "
 "sur le bouton à l'extrême droite pour tuer le processus du noyau."
 
-#: spyderlib\plugins\externalconsole.py:719
-#: spyderlib\plugins\ipythonconsole.py:729 spyderlib\spyder.py:1241
-#: spyderlib\spyder.py:1259 spyderlib\utils\environ.py:95
+#: spyderlib\plugins\externalconsole.py:686
+#: spyderlib\plugins\ipythonconsole.py:480 spyderlib\spyder.py:1327
+#: spyderlib\spyder.py:1345 spyderlib\utils\environ.py:95
 #: spyderlib\utils\environ.py:108
 msgid "Warning"
 msgstr "Attention"
 
-#: spyderlib\plugins\externalconsole.py:720
+#: spyderlib\plugins\externalconsole.py:687
 msgid ""
 "No Python shell is currently selected to run <b>%s</b>.<br><br>Please select "
 "or open a new Python interpreter and try again."
@@ -1549,7 +1510,7 @@ msgstr ""
 "b>.<br><br>Merci de sélectionner ou d'ouvrir un interpréteur Python et de "
 "réessayer."
 
-#: spyderlib\plugins\externalconsole.py:797
+#: spyderlib\plugins\externalconsole.py:764
 msgid ""
 "%s is already running in a separate process.\n"
 "Do you want to kill the process before starting a new one?"
@@ -1557,67 +1518,51 @@ msgstr ""
 "%s est déjà en cours d'exécution dans un processus séparé.\n"
 "Souhaitez-vous tuer ce processus avant d'en démarrer un autre ?"
 
-#: spyderlib\plugins\externalconsole.py:931
+#: spyderlib\plugins\externalconsole.py:933
 msgid "Kernel"
 msgstr "Noyau"
 
-#: spyderlib\plugins\externalconsole.py:951
+#: spyderlib\plugins\externalconsole.py:944
+msgid ""
+"Either:<ol><li>Your IPython frontend and kernel versions are "
+"<b>incompatible</b> or</li><li>You <b>don't have</b> IPython installed in "
+"your external interpreter.</li></ol>In any case, we're sorry but we can't "
+"create a console for you."
+msgstr ""
+
+#: spyderlib\plugins\externalconsole.py:968
 msgid "Command Window"
 msgstr "Invite de commandes"
 
-#: spyderlib\plugins\externalconsole.py:953
+#: spyderlib\plugins\externalconsole.py:970
 msgid "Terminal"
 msgstr "Terminal"
 
-#: spyderlib\plugins\externalconsole.py:1072
-msgid "Open a Python &interpreter"
-msgstr "Ouvrir un &interpréteur Python"
+#: spyderlib\plugins\externalconsole.py:1105
+msgid "Open a &Python console"
+msgstr "Ouvrir une console &Python"
 
-#: spyderlib\plugins\externalconsole.py:1075
+#: spyderlib\plugins\externalconsole.py:1108
 msgid "Open &command prompt"
 msgstr "Ouvrir un invite de &commandes"
 
-#: spyderlib\plugins\externalconsole.py:1076
+#: spyderlib\plugins\externalconsole.py:1109
 msgid "Open a Windows command prompt"
 msgstr "Ouvrir un invite de commandes Windows"
 
-#: spyderlib\plugins\externalconsole.py:1078
-msgid "Open &terminal"
+#: spyderlib\plugins\externalconsole.py:1111
+msgid "Open a &terminal"
 msgstr "Ouvrir un &terminal"
 
-#: spyderlib\plugins\externalconsole.py:1079
-msgid "Open a terminal window inside Spyder"
+#: spyderlib\plugins\externalconsole.py:1112
+msgid "Open a terminal window"
 msgstr "Ouvrir un terminal de commandes dans Spyder"
 
-#: spyderlib\plugins\externalconsole.py:1200
-#: spyderlib\widgets\projectexplorer.py:334
-msgid " and "
-msgstr " et "
-
-#: spyderlib\plugins\externalconsole.py:1205
-msgid "<br><u>Installed version</u>: %s"
-msgstr "<br><u>Version installée</u>: %s"
-
-#: spyderlib\plugins\externalconsole.py:1207
-#: spyderlib\plugins\ipythonconsole.py:60
-#: spyderlib\plugins\ipythonconsole.py:680
-msgid "IPython console"
-msgstr "Console IPython"
-
-#: spyderlib\plugins\externalconsole.py:1208
-msgid ""
-"Unable to open IPython console because no supported IPython version was "
-"found.<br><br><u>Supported IPython versions</u>: %s"
-msgstr ""
-"Impossible d'ouvrir une console IPython car aucune version prise en charge "
-"n'est installée.<br><br><u>Versions IPython prises en charge</u>: %s"
-
-#: spyderlib\plugins\externalconsole.py:1229
-#: spyderlib\plugins\ipythonconsole.py:749
+#: spyderlib\plugins\externalconsole.py:1266
 msgid "Open an IPython console"
 msgstr "Ouvrir une console IPython"
 
-#: spyderlib\plugins\externalconsole.py:1230
+#: spyderlib\plugins\externalconsole.py:1267
 msgid ""
 "The console monitor was disabled: the IPython kernel will be started as "
 "expected, but an IPython console will have to be connected manually to the "
@@ -1626,13 +1571,13 @@ msgstr ""
 "Le moniteur (console) a été désactivé. Par conséquent, le noyau IPython sera "
 "démarré mais la console IPython devra y être connectée manuellement."
 
-#: spyderlib\plugins\externalconsole.py:1266
-#: spyderlib\plugins\externalconsole.py:1279
-#: spyderlib\plugins\externalconsole.py:1283
+#: spyderlib\plugins\externalconsole.py:1297
+#: spyderlib\plugins\externalconsole.py:1310
+#: spyderlib\plugins\externalconsole.py:1314
 msgid "UMD"
 msgstr "UMD"
 
-#: spyderlib\plugins\externalconsole.py:1267
+#: spyderlib\plugins\externalconsole.py:1298
 msgid ""
 "UMD excluded modules:\n"
 "(example: guidata, guiqwt)"
@@ -1640,7 +1585,7 @@ msgstr ""
 "Modules non rechargés par l'UMD :\n"
 "(exemple: guidata, guiqwt)"
 
-#: spyderlib\plugins\externalconsole.py:1280
+#: spyderlib\plugins\externalconsole.py:1311
 msgid ""
 "The following modules are not installed on your machine:\n"
 "%s"
@@ -1648,7 +1593,7 @@ msgstr ""
 "Les modules suivants ne sont pas installés sur votre ordinateur :\n"
 "%s"
 
-#: spyderlib\plugins\externalconsole.py:1284
+#: spyderlib\plugins\externalconsole.py:1315
 msgid ""
 "Please note that these changes will be applied only to new Python/IPython "
 "interpreters"
@@ -1684,11 +1629,11 @@ msgstr "Taille de l'historique : "
 msgid "Scroll automatically to last entry"
 msgstr "Défiler automatiquement jusqu'à la dernière ligne"
 
-#: spyderlib\plugins\history.py:102 spyderlib\plugins\inspector.py:380
-#: spyderlib\plugins\ipythonconsole.py:486 spyderlib\widgets\editor.py:657
-#: spyderlib\widgets\explorer.py:990
+#: spyderlib\plugins\history.py:102 spyderlib\plugins\inspector.py:433
+#: spyderlib\widgets\editor.py:661 spyderlib\widgets\explorer.py:990
 #: spyderlib\widgets\externalshell\baseshell.py:151
-#: spyderlib\widgets\externalshell\namespacebrowser.py:221
+#: spyderlib\widgets\externalshell\namespacebrowser.py:231
+#: spyderlib\widgets\ipython.py:449
 msgid "Options"
 msgstr "Options"
 
@@ -1712,75 +1657,117 @@ msgstr "Historique"
 msgid "Maximum entries"
 msgstr "Nombre maximum d'entrées"
 
-#: spyderlib\plugins\inspector.py:53
+#: spyderlib\plugins\inspector.py:55
 msgid "Rich text help on the Object Inspector"
 msgstr "Texte enrichi dans l'inspecteur d'objets"
 
-#: spyderlib\plugins\inspector.py:108
+#: spyderlib\plugins\inspector.py:119
 msgid "Plain text font style"
 msgstr "Police d'écriture du texte brut"
 
-#: spyderlib\plugins\inspector.py:111
+#: spyderlib\plugins\inspector.py:122
 msgid "Rich text font style"
 msgstr "Police d'écriture du texte enrichi"
 
-#: spyderlib\plugins\inspector.py:113
+#: spyderlib\plugins\inspector.py:125
+#, fuzzy
+msgid "Automatic connections"
+msgstr "Complétion de code automatique"
+
+#: spyderlib\plugins\inspector.py:126
+msgid ""
+"The Object Inspector can automatically show an object's help information "
+"after a left parenthesis is written next to it. Below you can decide to "
+"which plugin you want to connect it to turn on this feature."
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:136
+msgid "Python Console"
+msgstr "Console Python"
+
+#: spyderlib\plugins\inspector.py:138
+msgid "IPython Console"
+msgstr "Console IPython"
+
+#: spyderlib\plugins\inspector.py:151
 msgid "Additional features"
 msgstr "Options supplémentaires"
 
-#: spyderlib\plugins\inspector.py:114
+#: spyderlib\plugins\inspector.py:152
 msgid "Render mathematical equations"
 msgstr "Styliser les équations mathématiques"
 
-#: spyderlib\plugins\inspector.py:120
+#: spyderlib\plugins\inspector.py:158
 msgid "This feature requires Sphinx 1.1 or superior."
 msgstr "Cette fonctionnalité nécessite l'installation de Sphinx 1.1+."
 
-#: spyderlib\plugins\inspector.py:122
+#: spyderlib\plugins\inspector.py:160
 msgid "Sphinx %s is currently installed."
 msgstr "Sphinx %s n'est pas installé."
 
-#: spyderlib\plugins\inspector.py:281
+#: spyderlib\plugins\inspector.py:334
 msgid "No documentation available"
 msgstr "Aucune documentation disponible"
 
-#: spyderlib\plugins\inspector.py:320
+#: spyderlib\plugins\inspector.py:373
 msgid "Source"
 msgstr "Source"
 
-#: spyderlib\plugins\inspector.py:335 spyderlib\widgets\dicteditor.py:162
+#: spyderlib\plugins\inspector.py:388 spyderlib\widgets\dicteditor.py:162
 msgid "Object"
 msgstr "Objet"
 
-#: spyderlib\plugins\inspector.py:350
+#: spyderlib\plugins\inspector.py:403
 msgid "Plain Text"
 msgstr "Texte brut"
 
-#: spyderlib\plugins\inspector.py:354
+#: spyderlib\plugins\inspector.py:407
 msgid "Show Source"
 msgstr "Afficher les sources"
 
-#: spyderlib\plugins\inspector.py:358
+#: spyderlib\plugins\inspector.py:411
 msgid "Rich Text"
 msgstr "Texte enrichi"
 
-#: spyderlib\plugins\inspector.py:368
+#: spyderlib\plugins\inspector.py:421
 msgid "Automatic import"
 msgstr "Import automatique"
 
-#: spyderlib\plugins\inspector.py:423 spyderlib\plugins\inspector.py:804
+#: spyderlib\plugins\inspector.py:476 spyderlib\plugins\inspector.py:885
 msgid "Object inspector"
 msgstr "Inspecteur d'objets"
 
-#: spyderlib\plugins\inspector.py:765
+#: spyderlib\plugins\inspector.py:599
+msgid ""
+"Here you can get help of any object by pressing %s in front of it, either on "
+"the Editor or the Console.%sHelp can also be shown automatically after "
+"writing a left parenthesis next to an object. You can activate this behavior "
+"in %s."
+msgstr "Pour obtenir de l'aide ici, sélectionner (ou placer le curseur sur) un objet dans l'éditeur ou la console, puis appuyer sur %s.%sL'aide apparaît automatiquement après la saisie d'une parenthèse gauche après un objet si l'option correspondante est activée dans %s."
+
+#: spyderlib\plugins\inspector.py:605
+msgid "Preferences > Object Inspector"
+msgstr "Préférences > Inspecteur d'objets"
+
+#: spyderlib\plugins\inspector.py:607
+msgid "Usage"
+msgstr "Utilisation"
+
+#: spyderlib\plugins\inspector.py:613
+msgid ""
+"Please consider installing Sphinx to get documentation rendered in rich text."
+msgstr ""
+"Merci d'installer Sphinx pour obtenir la documentation en texte enrichi."
+
+#: spyderlib\plugins\inspector.py:846
 msgid "Lock"
 msgstr "Verrouiller"
 
-#: spyderlib\plugins\inspector.py:765
+#: spyderlib\plugins\inspector.py:846
 msgid "Unlock"
 msgstr "Déverrouiller"
 
-#: spyderlib\plugins\inspector.py:805
+#: spyderlib\plugins\inspector.py:886
 msgid ""
 "The following error occured when calling <b>Sphinx %s</b>. <br>Incompatible "
 "Sphinx version or doc string decoding failed.<br><br>Error message:<br>%s"
@@ -1789,19 +1776,24 @@ msgstr ""
 "<br>Veuillez vérifier si cette version de Sphinx est bien prise en charge "
 "par Spyder. <br><br>Message d'erreur :<br>%s"
 
-#: spyderlib\plugins\inspector.py:853
+#: spyderlib\plugins\inspector.py:930
 msgid "No source code available."
 msgstr "Aucun code source disponible."
 
-#: spyderlib\plugins\ipythonconsole.py:53
+#: spyderlib\plugins\ipythonconsole.py:52
 msgid "Symbolic mathematics for the IPython Console"
-msgstr ""
+msgstr "Mathématiques symboliques pour la console IPython"
 
-#: spyderlib\plugins\ipythonconsole.py:72
+#: spyderlib\plugins\ipythonconsole.py:59
+#: spyderlib\plugins\ipythonconsole.py:431
+msgid "IPython console"
+msgstr "Console IPython"
+
+#: spyderlib\plugins\ipythonconsole.py:71
 msgid "Display initial banner"
 msgstr "Afficher le message d'accueil"
 
-#: spyderlib\plugins\ipythonconsole.py:73
+#: spyderlib\plugins\ipythonconsole.py:72
 msgid ""
 "This option lets you hide the message shown at\n"
 "the top of the console when it's opened."
@@ -1809,19 +1801,19 @@ msgstr ""
 "Cette option permet de masquer la message d'accueil\n"
 "qui s'affiche à l'ouverture de la console."
 
-#: spyderlib\plugins\ipythonconsole.py:75
+#: spyderlib\plugins\ipythonconsole.py:74
 msgid "Use a completion widget"
 msgstr "Utiliser un widget de complétion de code"
 
-#: spyderlib\plugins\ipythonconsole.py:77
+#: spyderlib\plugins\ipythonconsole.py:76
 msgid "Use a widget instead of plain text output for tab completion"
 msgstr "Utiliser un widget de complétion au lieu d'une liste en texte brut"
 
-#: spyderlib\plugins\ipythonconsole.py:79
+#: spyderlib\plugins\ipythonconsole.py:78
 msgid "Use a pager to display additional text inside the console"
 msgstr "Utiliser un pager pour afficher l'aide"
 
-#: spyderlib\plugins\ipythonconsole.py:81
+#: spyderlib\plugins\ipythonconsole.py:80
 msgid ""
 "Useful if you don't want to fill the console with long help or completion "
 "texts.\n"
@@ -1830,19 +1822,27 @@ msgstr ""
 "Le pager permet d'éviter de remplir la console de texte d'aide.\n"
 "Note : utiliser la touche Q pour quitter le pager."
 
-#: spyderlib\plugins\ipythonconsole.py:85
+#: spyderlib\plugins\ipythonconsole.py:84
 msgid "Display balloon tips"
 msgstr "Afficher des info-bulles"
 
-#: spyderlib\plugins\ipythonconsole.py:86
+#: spyderlib\plugins\ipythonconsole.py:85
 msgid "Ask for confirmation before closing"
 msgstr "Demander confirmation avant de fermer une console"
 
-#: spyderlib\plugins\ipythonconsole.py:108
+#: spyderlib\plugins\ipythonconsole.py:98
+msgid "Light background"
+msgstr "Fond blanc"
+
+#: spyderlib\plugins\ipythonconsole.py:100
+msgid "Dark background"
+msgstr "Fond noir"
+
+#: spyderlib\plugins\ipythonconsole.py:110
 msgid "Buffer:  "
 msgstr "Tampon :  "
 
-#: spyderlib\plugins\ipythonconsole.py:110
+#: spyderlib\plugins\ipythonconsole.py:112
 msgid ""
 "Set the maximum number of lines of text shown in the\n"
 "console before truncation. Specifying -1 disables it\n"
@@ -1851,19 +1851,19 @@ msgstr ""
 "Nombre maximum de lignes de texte affichées dans la console avant troncature "
 "(saisir -1 désactive cette dernière, ce qui est fortement déconseillé)."
 
-#: spyderlib\plugins\ipythonconsole.py:119
-msgid "Support for graphics (Pylab)"
-msgstr "Prise en charge des graphes (Pylab)"
+#: spyderlib\plugins\ipythonconsole.py:121
+msgid "Support for graphics (Matplotlib)"
+msgstr "Prise en charge des graphes (Matplotlib)"
 
-#: spyderlib\plugins\ipythonconsole.py:120
+#: spyderlib\plugins\ipythonconsole.py:122
 msgid "Activate support"
 msgstr "Activer"
 
-#: spyderlib\plugins\ipythonconsole.py:121
-msgid "Automatically load Pylab and NumPy"
+#: spyderlib\plugins\ipythonconsole.py:123
+msgid "Automatically load Pylab and NumPy modules"
 msgstr "Importer automatiquement Pylab et NumPy"
 
-#: spyderlib\plugins\ipythonconsole.py:123
+#: spyderlib\plugins\ipythonconsole.py:126
 msgid ""
 "This lets you load graphics support without importing \n"
 "the commands to do plots. Useful to work with other\n"
@@ -1873,7 +1873,7 @@ msgstr ""
 "Import automatique de toutes les fonctions de représentation graphique et de "
 "calcul numérique"
 
-#: spyderlib\plugins\ipythonconsole.py:142
+#: spyderlib\plugins\ipythonconsole.py:145
 msgid ""
 "This feature requires the Matplotlib library.\n"
 "It seems you don't have it installed."
@@ -1881,19 +1881,19 @@ msgstr ""
 "Cette fonctionnalité nécessite l'installation du module Matplotlib.\n"
 "Ce dernier n'est apparemment pas installé."
 
-#: spyderlib\plugins\ipythonconsole.py:147
+#: spyderlib\plugins\ipythonconsole.py:150
 msgid "Inline"
 msgstr "En ligne"
 
-#: spyderlib\plugins\ipythonconsole.py:148
+#: spyderlib\plugins\ipythonconsole.py:151
 msgid "Automatic"
 msgstr "Automatique"
 
-#: spyderlib\plugins\ipythonconsole.py:149
+#: spyderlib\plugins\ipythonconsole.py:152
 msgid "Graphics backend"
 msgstr "Sortie graphique"
 
-#: spyderlib\plugins\ipythonconsole.py:150
+#: spyderlib\plugins\ipythonconsole.py:153
 msgid ""
 "Decide how graphics are going to be displayed in the console. If unsure, "
 "please select <b>%s</b> to put graphics inside the console or <b>%s</b> to "
@@ -1904,65 +1904,65 @@ msgstr ""
 "des graphes tandis que le mode <b>%s</b> permet d'interagir avec (zoom/pan) "
 "dans une fenêtre séparée."
 
-#: spyderlib\plugins\ipythonconsole.py:170
+#: spyderlib\plugins\ipythonconsole.py:173
 msgid "Backend:"
 msgstr "Sortie :"
 
-#: spyderlib\plugins\ipythonconsole.py:172
+#: spyderlib\plugins\ipythonconsole.py:175
 msgid "This option will be applied the next time a console is opened."
 msgstr ""
 "Cette option sera prise en compte lors de la prochaine ouverture de console."
 
-#: spyderlib\plugins\ipythonconsole.py:184
+#: spyderlib\plugins\ipythonconsole.py:187
 msgid "Inline backend"
 msgstr "Backend intégré"
 
-#: spyderlib\plugins\ipythonconsole.py:185
+#: spyderlib\plugins\ipythonconsole.py:188
 msgid "Decide how to render the figures created by this backend"
 msgstr "Option relative au rendu des figures dans ce backend"
 
-#: spyderlib\plugins\ipythonconsole.py:189
+#: spyderlib\plugins\ipythonconsole.py:192
 msgid "Format:"
 msgstr "Format :"
 
-#: spyderlib\plugins\ipythonconsole.py:192
+#: spyderlib\plugins\ipythonconsole.py:195
 msgid "Resolution:"
 msgstr "Résolution :"
 
-#: spyderlib\plugins\ipythonconsole.py:192
+#: spyderlib\plugins\ipythonconsole.py:195
 msgid "dpi"
 msgstr "ppp"
 
-#: spyderlib\plugins\ipythonconsole.py:194
+#: spyderlib\plugins\ipythonconsole.py:197
 msgid "Only used when the format is PNG. Default is 72"
 msgstr "Utilisé uniquement dans le cas du format PNG. Par défaut: 72"
 
-#: spyderlib\plugins\ipythonconsole.py:197
+#: spyderlib\plugins\ipythonconsole.py:200
 msgid "Width:"
 msgstr "Largeur :"
 
-#: spyderlib\plugins\ipythonconsole.py:197
-#: spyderlib\plugins\ipythonconsole.py:201
+#: spyderlib\plugins\ipythonconsole.py:200
+#: spyderlib\plugins\ipythonconsole.py:204
 msgid "inches"
 msgstr "pouces"
 
-#: spyderlib\plugins\ipythonconsole.py:199
+#: spyderlib\plugins\ipythonconsole.py:202
 msgid "Default is 6"
 msgstr "Par défaut : 6"
 
-#: spyderlib\plugins\ipythonconsole.py:201
+#: spyderlib\plugins\ipythonconsole.py:204
 msgid "Height:"
 msgstr "Hauteur :"
 
-#: spyderlib\plugins\ipythonconsole.py:203
+#: spyderlib\plugins\ipythonconsole.py:206
 msgid "Default is 4"
 msgstr "Par défaut : 4"
 
-#: spyderlib\plugins\ipythonconsole.py:218
+#: spyderlib\plugins\ipythonconsole.py:221
 msgid "Run code"
 msgstr "Exécuter du code"
 
-#: spyderlib\plugins\ipythonconsole.py:219
+#: spyderlib\plugins\ipythonconsole.py:222
 msgid ""
 "You can run several lines of code when a console is started. Please "
 "introduce each one separated by commas, for example:<br><i>import os, import "
@@ -1972,38 +1972,38 @@ msgstr ""
 "console. Veuillez séparer deux lignes consécutives par une virgule - par "
 "exemple :<br><i>import os, import sys</i>"
 
-#: spyderlib\plugins\ipythonconsole.py:225
+#: spyderlib\plugins\ipythonconsole.py:228
 msgid "Lines:"
 msgstr "Lignes :"
 
-#: spyderlib\plugins\ipythonconsole.py:234
+#: spyderlib\plugins\ipythonconsole.py:237
 msgid "Run a file"
 msgstr "Exécuter un fichier"
 
-#: spyderlib\plugins\ipythonconsole.py:235
+#: spyderlib\plugins\ipythonconsole.py:238
 msgid ""
 "You can also run a whole file at startup instead of just some lines (This is "
 "similar to have a PYTHONSTARTUP file)."
 msgstr "Option similaire à PYTHONSTARTUP pour un interpréteur standard"
 
-#: spyderlib\plugins\ipythonconsole.py:239
+#: spyderlib\plugins\ipythonconsole.py:242
 msgid "Use the following file:"
 msgstr "Utiliser le fichier suivant :"
 
-#: spyderlib\plugins\ipythonconsole.py:253
+#: spyderlib\plugins\ipythonconsole.py:256
 msgid "Spyder startup"
 msgstr "Démarrage de Spyder"
 
-#: spyderlib\plugins\ipythonconsole.py:254
+#: spyderlib\plugins\ipythonconsole.py:257
 msgid "Open an IPython console at startup"
 msgstr "Ouvrir une console IPython au démarrage"
 
-#: spyderlib\plugins\ipythonconsole.py:262
+#: spyderlib\plugins\ipythonconsole.py:265
 #, fuzzy
 msgid "Greedy completion"
 msgstr "Entrée valide la complétion de code"
 
-#: spyderlib\plugins\ipythonconsole.py:263
+#: spyderlib\plugins\ipythonconsole.py:266
 msgid ""
 "Enable <tt>Tab</tt> completion on elements of lists, results of function "
 "calls, etc, <i>without</i> assigning them to a variable.<br>For example, you "
@@ -2011,66 +2011,66 @@ msgid ""
 "().<Tab></tt>"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:271
+#: spyderlib\plugins\ipythonconsole.py:274
 msgid "Use the greedy completer"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:282
+#: spyderlib\plugins\ipythonconsole.py:285
 msgid "Autocall"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:283
+#: spyderlib\plugins\ipythonconsole.py:286
 msgid ""
 "Autocall makes IPython automatically call any callable object even if you "
 "didn't type explicit parentheses.<br>For example, if you type <i>str 43</i> "
 "it becomes <i>str(43)</i> automatically."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:290
+#: spyderlib\plugins\ipythonconsole.py:293
 #, fuzzy
 msgid "Smart"
 msgstr "Démarrage"
 
-#: spyderlib\plugins\ipythonconsole.py:291
+#: spyderlib\plugins\ipythonconsole.py:294
 msgid "Full"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:292
+#: spyderlib\plugins\ipythonconsole.py:295
 msgid "Off"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:294
+#: spyderlib\plugins\ipythonconsole.py:297
 msgid "Autocall:  "
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:295
+#: spyderlib\plugins\ipythonconsole.py:298
 msgid ""
 "On <b>%s</b> mode, Autocall is not applied if there are no arguments after "
 "the callable. On <b>%s</b> mode, all callable objects are automatically "
 "called (even if no arguments are present)."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:307
+#: spyderlib\plugins\ipythonconsole.py:310
 msgid "Symbolic Mathematics"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:308
+#: spyderlib\plugins\ipythonconsole.py:311
 msgid ""
 "Perfom symbolic operations in the console (e.g. integrals, derivatives, "
 "vector calculus, etc) and get the outputs in a beautifully printed style."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:313
+#: spyderlib\plugins\ipythonconsole.py:316
 msgid "Use symbolic math"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:314
+#: spyderlib\plugins\ipythonconsole.py:317
 msgid ""
 "This option loads the Sympy library to work with.<br>Please refer to its "
 "documentation to learn how to use it."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:327
+#: spyderlib\plugins\ipythonconsole.py:330
 msgid ""
 "This feature requires the Sympy library.\n"
 "It seems you don't have it installed."
@@ -2078,104 +2078,43 @@ msgstr ""
 "Cette fonctionnalité nécessite l'installation du module Sympy.\n"
 "Ce dernier n'est apparemment pas installé."
 
-#: spyderlib\plugins\ipythonconsole.py:332
+#: spyderlib\plugins\ipythonconsole.py:335
 #, fuzzy
 msgid "Prompts"
 msgstr "Propriétés"
 
-#: spyderlib\plugins\ipythonconsole.py:333
+#: spyderlib\plugins\ipythonconsole.py:336
 msgid "Modify how Input and Output prompts are shown in the console."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:336
+#: spyderlib\plugins\ipythonconsole.py:339
 #, fuzzy
 msgid "Input prompt:"
 msgstr "Copier sans les préfixes"
 
-#: spyderlib\plugins\ipythonconsole.py:338
+#: spyderlib\plugins\ipythonconsole.py:341
 msgid ""
 "Default is<br>In [<span class=\"in-prompt-number\">%i</span>]:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:342
+#: spyderlib\plugins\ipythonconsole.py:345
 msgid "Output prompt:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:344
+#: spyderlib\plugins\ipythonconsole.py:347
 msgid ""
 "Default is<br>Out[<span class=\"out-prompt-number\">%i</span>]:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:360
+#: spyderlib\plugins\ipythonconsole.py:363
 msgid "Graphics"
 msgstr "Graphiques"
 
-#: spyderlib\plugins\ipythonconsole.py:364
+#: spyderlib\plugins\ipythonconsole.py:367
 msgid "Advanced Settings"
 msgstr "Options avancées"
 
-#: spyderlib\plugins\ipythonconsole.py:447
-msgid "Interrupt kernel"
-msgstr "Interrompre le noyau"
-
-#: spyderlib\plugins\ipythonconsole.py:450
-msgid "Restart kernel"
-msgstr "Redémarrer le noyau"
-
-#: spyderlib\plugins\ipythonconsole.py:455
-msgid "Intro to IPython"
-msgstr "Introduction à IPython"
-
-#: spyderlib\plugins\ipythonconsole.py:457
-msgid "Quick Reference"
-msgstr "Documentation de IPython"
-
-#: spyderlib\plugins\ipythonconsole.py:459
-msgid "Console help"
-msgstr "Aide sur la console"
-
-#: spyderlib\plugins\ipythonconsole.py:461
-#: spyderlib\widgets\internalshell.py:254
-msgid "Help"
-msgstr "Aide"
-
-#: spyderlib\plugins\ipythonconsole.py:462
-msgid "IPython Help"
-msgstr "Aide IPython"
-
-#: spyderlib\plugins\ipythonconsole.py:498
-msgid "Inspect current object"
-msgstr "Inspecter l'onglet courant"
-
-#: spyderlib\plugins\ipythonconsole.py:502
-msgid "Clear line or block"
-msgstr "Effacer la ligne ou le bloc"
-
-#: spyderlib\plugins\ipythonconsole.py:506
-msgid "Clear console"
-msgstr "Effacer la console"
-
-#: spyderlib\plugins\ipythonconsole.py:545
-msgid ""
-"It seems the kernel died unexpectedly. Use 'Restart kernel' to continue "
-"using this console."
-msgstr ""
-"Le noyau a été arrêté de façon inattendue. Redémarrez le noyau pour "
-"continuer d'utiliser cette console."
-
-#: spyderlib\plugins\ipythonconsole.py:557
-msgid "Kernel process is either remote or unspecified. Cannot interrupt"
-msgstr ""
-"Le processus du noyau est soit distant, soit non spécifié : impossible "
-"d'arrêter le noyau."
-
-#: spyderlib\plugins\ipythonconsole.py:566
-msgid "Kernel process is either remote or unspecified. Cannot restart."
-msgstr ""
-"Le processus du noyau est soit distant, soit non spécifié : impossible de "
-"redémarrer le noyau."
-
-#: spyderlib\plugins\ipythonconsole.py:730
+#: spyderlib\plugins\ipythonconsole.py:481
 msgid ""
 "No IPython console is currently available to run <b>%s</b>.<br><br>Please "
 "open a new one and try again."
@@ -2183,32 +2122,46 @@ msgstr ""
 "Aucun client IPython n'est actuellement sélectionné pour exécuter <b>%s</b>."
 "<br><br>Merci d'ouvrir un nouveau client IPython et de réessayer."
 
-#: spyderlib\plugins\ipythonconsole.py:754
+#: spyderlib\plugins\ipythonconsole.py:507
+msgid "Open an &IPython console"
+msgstr "Ouvrir une console &IPython"
+
+#: spyderlib\plugins\ipythonconsole.py:512
 msgid "Connect to an existing kernel"
 msgstr "Connecter à un noyau existant"
 
-#: spyderlib\plugins\ipythonconsole.py:756
-msgid "Open a new IPython client connected to an external kernel"
-msgstr "Ouvrir un nouveau client IPython connecté à un noyau externe"
+#: spyderlib\plugins\ipythonconsole.py:513
+msgid "Open a new IPython console connected to an existing kernel"
+msgstr "Ouvrir une nouvelle console IPython connecté à un noyau existant"
 
-#: spyderlib\plugins\ipythonconsole.py:870
-msgid "(for example: `kernel-3764.json`, or simply `3764`)"
+#: spyderlib\plugins\ipythonconsole.py:672
+msgid "(for example: kernel-3764.json, or simply 3764)"
 msgstr "(exemple: `kernel-3764.json`, ou simplement `3764`)"
 
-#: spyderlib\plugins\ipythonconsole.py:872
-#: spyderlib\plugins\ipythonconsole.py:912
+#: spyderlib\plugins\ipythonconsole.py:674
+#: spyderlib\plugins\ipythonconsole.py:719
 msgid "IPython"
 msgstr "IPython"
 
-#: spyderlib\plugins\ipythonconsole.py:873
+#: spyderlib\plugins\ipythonconsole.py:675
 msgid "Provide an IPython kernel connection file:"
 msgstr "Fichier de connexion du noyau IPython :"
 
-#: spyderlib\plugins\ipythonconsole.py:913
-msgid "Unable to connect to IPython kernel <b>`%s`"
+#: spyderlib\plugins\ipythonconsole.py:720
+msgid "Unable to connect to IPython <b>%s"
 msgstr "Impossible de se connecter au noyau IPython <b>`%s`"
 
-#: spyderlib\plugins\ipythonconsole.py:1107
+#: spyderlib\plugins\ipythonconsole.py:726
+msgid "Mismatch between kernel and frontend"
+msgstr ""
+
+#: spyderlib\plugins\ipythonconsole.py:727
+msgid ""
+"Your IPython frontend and kernel versions are <b>incompatible!!</"
+"b><br><br>We're sorry but we can't create an IPython console for you."
+msgstr ""
+
+#: spyderlib\plugins\ipythonconsole.py:952
 msgid ""
 "%s will be closed.\n"
 "Do you want to kill the associated kernel and all of its clients?"
@@ -2216,11 +2169,11 @@ msgstr ""
 "%s va être fermé.\n"
 "Souhaitez-vous fermer également le noyau associé et tous ses autres clients ?"
 
-#: spyderlib\plugins\ipythonconsole.py:1153
+#: spyderlib\plugins\ipythonconsole.py:1012
 msgid "Are you sure you want to restart the kernel?"
 msgstr "Souhaitez-vous vraiment redémarrer le noyau ?"
 
-#: spyderlib\plugins\ipythonconsole.py:1155
+#: spyderlib\plugins\ipythonconsole.py:1014
 msgid "Restart kernel?"
 msgstr "Redémarrer le noyau"
 
@@ -2322,7 +2275,7 @@ msgstr ""
 "dialogue <b>%s</b> (voir le menu <b>%s</b>)"
 
 #: spyderlib\plugins\runconfig.py:456
-#: spyderlib\widgets\externalshell\pythonshell.py:293
+#: spyderlib\widgets\externalshell\pythonshell.py:297
 msgid "Working directory"
 msgstr "Répertoire de travail"
 
@@ -2347,7 +2300,7 @@ msgid "Context"
 msgstr "Contexte"
 
 #: spyderlib\plugins\shortcuts.py:180 spyderlib\widgets\dicteditor.py:147
-#: spyderlib\widgets\importwizard.py:470
+#: spyderlib\widgets\importwizard.py:480
 msgid "Name"
 msgstr "Nom"
 
@@ -2400,22 +2353,22 @@ msgid "Filter"
 msgstr "Filtre"
 
 #: spyderlib\plugins\variableexplorer.py:33
-#: spyderlib\widgets\externalshell\namespacebrowser.py:191
+#: spyderlib\widgets\externalshell\namespacebrowser.py:201
 msgid "Exclude private references"
 msgstr "Exclure les références privées"
 
 #: spyderlib\plugins\variableexplorer.py:34
-#: spyderlib\widgets\externalshell\namespacebrowser.py:206
+#: spyderlib\widgets\externalshell\namespacebrowser.py:216
 msgid "Exclude capitalized references"
 msgstr "Exclure les références commençant par une majuscule"
 
 #: spyderlib\plugins\variableexplorer.py:35
-#: spyderlib\widgets\externalshell\namespacebrowser.py:199
+#: spyderlib\widgets\externalshell\namespacebrowser.py:209
 msgid "Exclude all-uppercase references"
 msgstr "Exclure les références en lettres capitales"
 
 #: spyderlib\plugins\variableexplorer.py:36
-#: spyderlib\widgets\externalshell\namespacebrowser.py:214
+#: spyderlib\widgets\externalshell\namespacebrowser.py:224
 msgid "Exclude unsupported data types"
 msgstr "Exclure les types non supportés"
 
@@ -2507,11 +2460,6 @@ msgstr "le répertoire du fichier en cours d'édition"
 msgid "the global working directory"
 msgstr "le répertoire de travail global"
 
-#: spyderlib\plugins\workingdirectory.py:82 spyderlib\widgets\explorer.py:613
-#: spyderlib\widgets\explorer.py:620
-msgid "New file"
-msgstr "Nouveau fichier"
-
 #: spyderlib\plugins\workingdirectory.py:83
 msgid "Files are created in:"
 msgstr "Les fichiers sont créés dans :"
@@ -2533,7 +2481,7 @@ msgid "Back"
 msgstr "Retour"
 
 #: spyderlib\plugins\workingdirectory.py:176 spyderlib\widgets\explorer.py:977
-#: spyderlib\widgets\importwizard.py:489
+#: spyderlib\widgets\importwizard.py:499
 msgid "Next"
 msgstr "Suivant"
 
@@ -2567,155 +2515,159 @@ msgstr "Aller au répertoire parent"
 msgid "Global working directory"
 msgstr "Répertoire de travail global"
 
-#: spyderlib\spyder.py:38
+#: spyderlib\spyder.py:48
 #, fuzzy
 msgid "IPython Console integration"
-msgstr "Intégration de la console Qt IPython"
+msgstr "Intégration de la console IPython"
 
-#: spyderlib\spyder.py:247
+#: spyderlib\spyder.py:125 spyderlib\spyder.py:455
+msgid "Initializing..."
+msgstr "Initialisation..."
+
+#: spyderlib\spyder.py:286
 msgid "PyQt4 Reference Guide"
 msgstr "Guide de référence de PyQt4"
 
-#: spyderlib\spyder.py:250
+#: spyderlib\spyder.py:289
 msgid "PyQt4 API Reference"
 msgstr "Documentation de l'API de PyQt4"
 
-#: spyderlib\spyder.py:252
+#: spyderlib\spyder.py:291
 msgid "Python(x,y)"
 msgstr "Python(x,y)"
 
-#: spyderlib\spyder.py:254
+#: spyderlib\spyder.py:293
 msgid "WinPython"
 msgstr "WinPython"
 
-#: spyderlib\spyder.py:256
+#: spyderlib\spyder.py:295
 msgid "Numpy and Scipy documentation"
 msgstr "Documentation de Numpy et Scipy"
 
-#: spyderlib\spyder.py:259 spyderlib\spyder.py:919
+#: spyderlib\spyder.py:297 spyderlib\spyder.py:989
 msgid "Matplotlib documentation"
 msgstr "Documentation de Matplotlib"
 
-#: spyderlib\spyder.py:293
+#: spyderlib\spyder.py:330
 msgid "Reload last session"
 msgstr "Recharger la session précédente"
 
-#: spyderlib\spyder.py:297
+#: spyderlib\spyder.py:334
 msgid "Load session..."
 msgstr "Charger une session..."
 
-#: spyderlib\spyder.py:300
+#: spyderlib\spyder.py:337
 msgid "Load Spyder session"
 msgstr "Charger une session Spyder"
 
-#: spyderlib\spyder.py:302
+#: spyderlib\spyder.py:339
 msgid "Save session and quit..."
 msgstr "Enregistrer la session et quitter..."
 
-#: spyderlib\spyder.py:305
+#: spyderlib\spyder.py:342
 msgid "Save current session and quit application"
 msgstr "Enregistrer la session en cours et quitter l'application"
 
-#: spyderlib\spyder.py:412
-msgid "Initializing..."
-msgstr "Initialisation..."
-
-#: spyderlib\spyder.py:473
+#: spyderlib\spyder.py:516
 msgid "Close current dockwidget"
 msgstr "Fermer le panneau actif"
 
-#: spyderlib\spyder.py:479
+#: spyderlib\spyder.py:522
 msgid "&Find text"
 msgstr "Rec&hercher"
 
-#: spyderlib\spyder.py:485
+#: spyderlib\spyder.py:528
 msgid "Find &next"
 msgstr "Rechercher le &suivant"
 
-#: spyderlib\spyder.py:491
+#: spyderlib\spyder.py:534
 msgid "Find &previous"
 msgstr "Rechercher le &précédent"
 
-#: spyderlib\spyder.py:496
+#: spyderlib\spyder.py:539
 msgid "&Replace text"
 msgstr "&Remplacer"
 
-#: spyderlib\spyder.py:511 spyderlib\widgets\sourcecode\codeeditor.py:2219
+#: spyderlib\spyder.py:554 spyderlib\widgets\sourcecode\codeeditor.py:2213
 msgid "Undo"
 msgstr "Annuler"
 
-#: spyderlib\spyder.py:513 spyderlib\widgets\sourcecode\codeeditor.py:2222
+#: spyderlib\spyder.py:556 spyderlib\widgets\sourcecode\codeeditor.py:2216
 msgid "Redo"
 msgstr "Répéter"
 
-#: spyderlib\spyder.py:514 spyderlib\widgets\arrayeditor.py:327
+#: spyderlib\spyder.py:557 spyderlib\widgets\arrayeditor.py:327
 #: spyderlib\widgets\dicteditor.py:563 spyderlib\widgets\shell.py:121
-#: spyderlib\widgets\sourcecode\codeeditor.py:2228
+#: spyderlib\widgets\sourcecode\codeeditor.py:2222
 msgid "Copy"
 msgstr "Copier"
 
-#: spyderlib\spyder.py:516 spyderlib\widgets\shell.py:117
-#: spyderlib\widgets\sourcecode\codeeditor.py:2225
+#: spyderlib\spyder.py:559 spyderlib\widgets\shell.py:117
+#: spyderlib\widgets\sourcecode\codeeditor.py:2219
 msgid "Cut"
 msgstr "Couper"
 
-#: spyderlib\spyder.py:517 spyderlib\widgets\dicteditor.py:560
+#: spyderlib\spyder.py:560 spyderlib\widgets\dicteditor.py:560
 #: spyderlib\widgets\shell.py:125
-#: spyderlib\widgets\sourcecode\codeeditor.py:2231
+#: spyderlib\widgets\sourcecode\codeeditor.py:2225
 msgid "Paste"
 msgstr "Coller"
 
-#: spyderlib\spyder.py:519 spyderlib\widgets\explorer.py:453
+#: spyderlib\spyder.py:562 spyderlib\widgets\explorer.py:453
 #: spyderlib\widgets\projectexplorer.py:1002 spyderlib\widgets\shell.py:134
-#: spyderlib\widgets\sourcecode\codeeditor.py:2234
+#: spyderlib\widgets\sourcecode\codeeditor.py:2228
 msgid "Delete"
 msgstr "Supprimer"
 
-#: spyderlib\spyder.py:522 spyderlib\widgets\shell.py:138
-#: spyderlib\widgets\sourcecode\codeeditor.py:2238
+#: spyderlib\spyder.py:565 spyderlib\widgets\shell.py:138
+#: spyderlib\widgets\sourcecode\codeeditor.py:2232
 msgid "Select All"
 msgstr "Sélectionner tout"
 
-#: spyderlib\spyder.py:570
-msgid "&Interpreters"
-msgstr "&Interpréteurs"
+#: spyderlib\spyder.py:614
+msgid "C&onsoles"
+msgstr "C&onsoles"
 
-#: spyderlib\spyder.py:576
+#: spyderlib\spyder.py:620
 msgid "&View"
 msgstr "&Affichage"
 
-#: spyderlib\spyder.py:584
+#: spyderlib\spyder.py:623
+msgid "&Help"
+msgstr "A&ide"
+
+#: spyderlib\spyder.py:628
 msgid "Welcome to Spyder!"
 msgstr "Bienvenue dans Spyder !"
 
-#: spyderlib\spyder.py:589
+#: spyderlib\spyder.py:633
 msgid "Pre&ferences"
 msgstr "Pré&férences"
 
-#: spyderlib\spyder.py:595 spyderlib\widgets\pathmanager.py:45
+#: spyderlib\spyder.py:641 spyderlib\widgets\pathmanager.py:45
 #: spyderlib\widgets\projectexplorer.py:593
 msgid "PYTHONPATH manager"
 msgstr "Gestionnaire de PYTHONPATH"
 
-#: spyderlib\spyder.py:598
-msgid "Open Spyder path manager"
-msgstr "Ouvre le gestionnaire de chemin d'accès de Spyder"
+#: spyderlib\spyder.py:644
+msgid "Python Path Manager"
+msgstr "Gestionnaire de chemins d'accès Python"
 
-#: spyderlib\spyder.py:601
+#: spyderlib\spyder.py:647
 msgid "Update module names list"
 msgstr "Mise à jour de la liste des modules"
 
-#: spyderlib\spyder.py:604
+#: spyderlib\spyder.py:649
 msgid "Refresh list of module names available in PYTHONPATH"
 msgstr ""
 "Mise à jour de la liste des modules disponibles notamment à travers "
 "PYTHONPATH"
 
-#: spyderlib\spyder.py:610
+#: spyderlib\spyder.py:655
 msgid "Current user environment variables..."
 msgstr "Variables d'environnement de l'utilisateur..."
 
-#: spyderlib\spyder.py:612
+#: spyderlib\spyder.py:657
 msgid ""
 "Show and edit current user environment variables in Windows registry (i.e. "
 "for all sessions)"
@@ -2723,183 +2675,199 @@ msgstr ""
 "Afficher et modifier les variables d'environnement de l'utilisateur courant "
 "dans Windows (c'est-à-dire directement dans la base de registre)"
 
-#: spyderlib\spyder.py:619 spyderlib\spyder.py:994
+#: spyderlib\spyder.py:664 spyderlib\spyder.py:1064
 msgid "External Tools"
 msgstr "Outils externes"
 
-#: spyderlib\spyder.py:623
+#: spyderlib\spyder.py:668
 msgid "Python(x,y) launcher"
 msgstr "Accueil de Python(x,y)"
 
-#: spyderlib\spyder.py:634
+#: spyderlib\spyder.py:679
 msgid "WinPython control panel"
 msgstr "Panneau de contrôle WinPython"
 
-#: spyderlib\spyder.py:647
+#: spyderlib\spyder.py:692
 msgid "Qt Designer"
 msgstr "Qt Designer"
 
-#: spyderlib\spyder.py:652
+#: spyderlib\spyder.py:697
 msgid "Qt Linguist"
 msgstr "Qt Linguist"
 
-#: spyderlib\spyder.py:658
+#: spyderlib\spyder.py:703
 msgid "Qt examples"
 msgstr "Exemples Qt"
 
-#: spyderlib\spyder.py:675
+#: spyderlib\spyder.py:721
 msgid "guidata examples"
 msgstr "Exemples guidata"
 
-#: spyderlib\spyder.py:683
+#: spyderlib\spyder.py:729
 msgid "guiqwt examples"
 msgstr "Exemples guiqwt"
 
-#: spyderlib\spyder.py:688
+#: spyderlib\spyder.py:734
 msgid "Sift"
 msgstr "Sift"
 
-#: spyderlib\spyder.py:696
+#: spyderlib\spyder.py:742
 msgid "ViTables"
 msgstr "ViTables"
 
-#: spyderlib\spyder.py:710
+#: spyderlib\spyder.py:756
 msgid "Fullscreen mode"
 msgstr "Mode plein écran"
 
-#: spyderlib\spyder.py:720
+#: spyderlib\spyder.py:768
 msgid "Main toolbar"
 msgstr "Barre d'outil principale"
 
-#: spyderlib\spyder.py:739
+#: spyderlib\spyder.py:789
 msgid "Loading object inspector..."
 msgstr "Chargement de l'inspecteur d'objet..."
 
-#: spyderlib\spyder.py:745
+#: spyderlib\spyder.py:796
 msgid "Loading outline explorer..."
 msgstr "Chargement de l'explorateur de structure..."
 
-#: spyderlib\spyder.py:752
+#: spyderlib\spyder.py:804
 msgid "Loading editor..."
 msgstr "Chargement de l'éditeur..."
 
-#: spyderlib\spyder.py:775
+#: spyderlib\spyder.py:829
 msgid "Loading file explorer..."
 msgstr "Chargement de l'explorateur de fichiers..."
 
-#: spyderlib\spyder.py:781
+#: spyderlib\spyder.py:836
 msgid "Loading history plugin..."
 msgstr "Chargement du journal d'historique..."
 
-#: spyderlib\spyder.py:787
+#: spyderlib\spyder.py:847
 msgid "Loading online help..."
 msgstr "Chargement de l'aide en ligne..."
 
-#: spyderlib\spyder.py:793
+#: spyderlib\spyder.py:853
 msgid "Loading project explorer..."
 msgstr "Chargement de l'explorateur de projet..."
 
-#: spyderlib\spyder.py:803
+#: spyderlib\spyder.py:864
 msgid "Loading external console..."
 msgstr "Chargement de la console externe..."
 
-#: spyderlib\spyder.py:811
+#: spyderlib\spyder.py:873
 msgid "Loading namespace browser..."
 msgstr "Chargement de l'explorateur d'espace de noms..."
 
-#: spyderlib\spyder.py:820
+#: spyderlib\spyder.py:880
 msgid "Loading IPython console..."
 msgstr "Chargement de la console IPython..."
 
-#: spyderlib\spyder.py:831
+#: spyderlib\spyder.py:891
 msgid "Setting up main window..."
 msgstr "Configuration de la fenêtre principale..."
 
-#: spyderlib\spyder.py:835
+#: spyderlib\spyder.py:895
 msgid "About %s..."
 msgstr "À propos de %s..."
 
-#: spyderlib\spyder.py:838
+#: spyderlib\spyder.py:898
 msgid "Optional dependencies..."
 msgstr "Dépendances optionnelles..."
 
-#: spyderlib\spyder.py:842
+#: spyderlib\spyder.py:901
 msgid "Report issue..."
 msgstr "Rapport d'erreur..."
 
-#: spyderlib\spyder.py:863
+#: spyderlib\spyder.py:922
 msgid "Spyder documentation"
 msgstr "Documentation de Spyder"
 
-#: spyderlib\spyder.py:869
+#: spyderlib\spyder.py:928
 msgid "Python documentation"
 msgstr "Documentation de Python"
 
-#: spyderlib\spyder.py:875
-msgid "Qt Assistant"
-msgstr "Qt Assistant (documentation Qt)"
+#: spyderlib\spyder.py:935
+msgid "IPython Help"
+msgstr "Aide IPython"
+
+#: spyderlib\spyder.py:936
+msgid "Intro to IPython"
+msgstr "Introduction à IPython"
+
+#: spyderlib\spyder.py:938
+msgid "Quick Reference"
+msgstr "Documentation de IPython"
+
+#: spyderlib\spyder.py:940
+msgid "Console help"
+msgstr "Aide sur la console"
+
+#: spyderlib\spyder.py:946
+msgid "Qt Help"
+msgstr "Aide Qt"
+
+#: spyderlib\spyder.py:950
+msgid "Web Resources"
+msgstr "Documentation en ligne"
 
-#: spyderlib\spyder.py:909
+#: spyderlib\spyder.py:979
 msgid "Python(x,y) documentation folder"
 msgstr "Dossier de documentation Python(x,y)"
 
-#: spyderlib\spyder.py:911
+#: spyderlib\spyder.py:981
 msgid "IPython documentation"
 msgstr "Documentation de IPython"
 
-#: spyderlib\spyder.py:913
+#: spyderlib\spyder.py:983
 msgid "guidata documentation"
 msgstr "Documentation de guidata"
 
-#: spyderlib\spyder.py:916
+#: spyderlib\spyder.py:986
 msgid "guiqwt documentation"
 msgstr "Documentation de guiqwt"
 
-#: spyderlib\spyder.py:922
+#: spyderlib\spyder.py:992
 msgid "NumPy documentation"
 msgstr "Documentation de NumPy"
 
-#: spyderlib\spyder.py:924
+#: spyderlib\spyder.py:994
 msgid "NumPy reference guide"
 msgstr "Manuel de référence de NumPy"
 
-#: spyderlib\spyder.py:926
+#: spyderlib\spyder.py:996
 msgid "NumPy user guide"
 msgstr "Manuel de l'utilisateur de NumPy"
 
-#: spyderlib\spyder.py:928
+#: spyderlib\spyder.py:998
 msgid "SciPy documentation"
 msgstr "Documentation de SciPy"
 
-#: spyderlib\spyder.py:935
-msgid "Web Resources"
-msgstr "Documentation en ligne"
-
-#: spyderlib\spyder.py:956
+#: spyderlib\spyder.py:1026
 msgid "Windows and toolbars"
 msgstr "Fenêtres et barres d'outils"
 
-#: spyderlib\spyder.py:960
+#: spyderlib\spyder.py:1030
 msgid "Reset window layout"
 msgstr "Réinitialiser la disposition des fenêtres"
 
-#: spyderlib\spyder.py:962
+#: spyderlib\spyder.py:1032
 msgid "Custom window layouts"
 msgstr "Dispositions de fenêtres personnalisées"
 
-#: spyderlib\spyder.py:968
+#: spyderlib\spyder.py:1038
 msgid "Switch to/from layout %d"
 msgstr "Basculer vers/depuis la disposition %d"
 
-#: spyderlib\spyder.py:974
+#: spyderlib\spyder.py:1044
 msgid "Set layout %d"
 msgstr "Définir la disposition %d"
 
-#: spyderlib\spyder.py:984
+#: spyderlib\spyder.py:1054
 msgid "Attached console window (debugging)"
 msgstr "Invite de commandes attaché (débogage)"
 
-#: spyderlib\spyder.py:1242
+#: spyderlib\spyder.py:1328
 msgid ""
 "Window layout will be reset to default settings: this affects window "
 "position, size and dockwidgets.\n"
@@ -2909,55 +2877,46 @@ msgstr ""
 "défaut.\n"
 "Souhaitez-vous continuer ?"
 
-#: spyderlib\spyder.py:1260
+#: spyderlib\spyder.py:1346
 msgid "Quick switch layout #%d has not yet been defined."
 msgstr ""
 "La disposition de fenêtre personnalisée n°%d n'a pas encore été définie."
 
-#: spyderlib\spyder.py:1451
+#: spyderlib\spyder.py:1537 spyderlib\spyder.py:1538
 msgid "Maximize current plugin"
 msgstr "Agrandir la fenêtre courante"
 
-#: spyderlib\spyder.py:1452
-msgid "Maximize current plugin to fit the whole application window"
-msgstr ""
-"Agrandir la fenêtre courante sur toute la surface de la fenêtre principale"
-
-#: spyderlib\spyder.py:1456
+#: spyderlib\spyder.py:1541
 msgid "Restore current plugin"
 msgstr "Réduire la fenêtre courante"
 
-#: spyderlib\spyder.py:1457
-msgid ""
-"Restore current plugin to its original size and position within the "
-"application window"
-msgstr ""
-"Réduire la fenêtre courante à sa taille et position d'origine au sein de la "
-"fenêtre principale"
+#: spyderlib\spyder.py:1542
+msgid "Restore plugin to its original size"
+msgstr "Restaurer la fenêtre à sa taille d'origine"
 
-#: spyderlib\spyder.py:1529
+#: spyderlib\spyder.py:1613
 msgid "(not installed)"
 msgstr "(non installé)"
 
-#: spyderlib\spyder.py:1547
+#: spyderlib\spyder.py:1631
 msgid "About %s"
 msgstr "À propos de %s"
 
-#: spyderlib\spyder.py:1711
+#: spyderlib\spyder.py:1796
 msgid "Running an external system terminal is not supported on platform %s."
 msgstr ""
 "L'exécution dans un terminal système externe n'est pas prise en charge sur "
 "la plateforme %s."
 
-#: spyderlib\spyder.py:1910
+#: spyderlib\spyder.py:1997
 msgid "Open session"
 msgstr "Ouvrir une session"
 
-#: spyderlib\spyder.py:1911 spyderlib\spyder.py:1922
+#: spyderlib\spyder.py:1998 spyderlib\spyder.py:2009
 msgid "Spyder sessions"
 msgstr "Sessions Spyder"
 
-#: spyderlib\spyder.py:1921
+#: spyderlib\spyder.py:2008
 msgid "Save session"
 msgstr "Enregistrer la session"
 
@@ -2998,8 +2957,8 @@ msgstr ""
 "servie à exécuter Spyder : <i>Python(x,y) Home</i> ou un invite de commandes "
 "par exemple)"
 
-#: spyderlib\utils\inspector\sphinxify.py:197
-#: spyderlib\utils\inspector\sphinxify.py:207
+#: spyderlib\utils\inspector\sphinxify.py:203
+#: spyderlib\utils\inspector\sphinxify.py:213
 msgid ""
 "It was not possible to generate rich text help for this object.</br>Please "
 "see it in plain text."
@@ -3075,7 +3034,7 @@ msgstr "Format de flottant"
 
 #: spyderlib\widgets\arrayeditor.py:428 spyderlib\widgets\explorer.py:549
 #: spyderlib\widgets\explorer.py:650
-#: spyderlib\widgets\externalshell\pythonshell.py:522
+#: spyderlib\widgets\externalshell\pythonshell.py:527
 #: spyderlib\widgets\externalshell\systemshell.py:93
 msgid "Error"
 msgstr "Erreur"
@@ -3144,12 +3103,12 @@ msgstr ""
 "réciproquement)."
 
 #: spyderlib\widgets\browser.py:30
-#: spyderlib\widgets\sourcecode\codeeditor.py:2254
+#: spyderlib\widgets\sourcecode\codeeditor.py:2248
 msgid "Zoom out"
 msgstr "Réduire"
 
 #: spyderlib\widgets\browser.py:33
-#: spyderlib\widgets\sourcecode\codeeditor.py:2251
+#: spyderlib\widgets\sourcecode\codeeditor.py:2245
 msgid "Zoom in"
 msgstr "Agrandir"
 
@@ -3191,36 +3150,42 @@ msgstr ""
 "veuillez entrer un chemin d'accès correct,\n"
 "puis appuyer sur Entrée pour le valider"
 
-#: spyderlib\widgets\dependencies.py:59
+#: spyderlib\widgets\dependencies.py:60
 msgid " Required "
 msgstr "  Requis  "
 
-#: spyderlib\widgets\dependencies.py:59
+#: spyderlib\widgets\dependencies.py:60
 msgid "Module"
 msgstr "Module"
 
-#: spyderlib\widgets\dependencies.py:60
+#: spyderlib\widgets\dependencies.py:61
 msgid " Installed "
 msgstr "  Installé  "
 
-#: spyderlib\widgets\dependencies.py:60
+#: spyderlib\widgets\dependencies.py:61
 msgid "Provided features"
 msgstr "Fonctionnalités associées"
 
-#: spyderlib\widgets\dependencies.py:126
+#: spyderlib\widgets\dependencies.py:127
 msgid "Optional Dependencies"
 msgstr "Dépendances optionnelles"
 
-#: spyderlib\widgets\dependencies.py:131
+#: spyderlib\widgets\dependencies.py:133
 msgid ""
 "Spyder depends on several Python modules to provide additional functionality "
 "for its plugins. The table below shows the required and installed versions "
 "(if any) of all of them.<br><br>Although Spyder can work without any of "
 "these modules, it's strongly recommended that at least you try to install <b>"
 "%s</b> and <b>%s</b> to have a much better experience."
-msgstr "Spyder dépend de nombreux modules Python pour disposer de l'intégralité des fonctionnalités potentiellement fournies par ses plugins. Le tableau suivant montre les versions requises et installées (le cas échéant) de toutes ces dépendances.<br><br>Même si Spyder est parfaitement fonctionnel sans tout ces modules, il est néanmoins fortement recommandé d'installer au minimum <b>%s</b> et <b>%s</b> afin de bénéficier des fonctionnalités les plus avancées."
+msgstr ""
+"Spyder dépend de nombreux modules Python pour disposer de l'intégralité des "
+"fonctionnalités potentiellement fournies par ses plugins. Le tableau suivant "
+"montre les versions requises et installées (le cas échéant) de toutes ces "
+"dépendances.<br><br>Même si Spyder est parfaitement fonctionnel sans tout "
+"ces modules, il est néanmoins fortement recommandé d'installer au minimum <b>"
+"%s</b> et <b>%s</b> afin de bénéficier des fonctionnalités les plus avancées."
 
-#: spyderlib\widgets\dependencies.py:149
+#: spyderlib\widgets\dependencies.py:148
 msgid "Copy to clipboard"
 msgstr "Copier dans le presse-papier"
 
@@ -3373,7 +3338,7 @@ msgstr "Presse-papiers vide"
 msgid "Nothing to be imported from clipboard."
 msgstr "Aucune donnée ne peut être importée depuis le presse-papiers."
 
-#: spyderlib\widgets\editor.py:69 spyderlib\widgets\editor.py:553
+#: spyderlib\widgets\editor.py:69 spyderlib\widgets\editor.py:557
 msgid "File list management"
 msgstr "Gestionnaire de fichiers"
 
@@ -3397,62 +3362,62 @@ msgstr "&Fermer le fichier"
 msgid "Hint: press <b>Alt</b> to show accelerators"
 msgstr "Astuce : la touche <b>Alt</b> affiche les accélérateurs"
 
-#: spyderlib\widgets\editor.py:556
+#: spyderlib\widgets\editor.py:560
 msgid "Copy path to clipboard"
 msgstr "Copier le chemin d'accès dans le presse-papier"
 
-#: spyderlib\widgets\editor.py:1094
+#: spyderlib\widgets\editor.py:1099
 msgid "Temporary file"
 msgstr "Fichier temporaire"
 
-#: spyderlib\widgets\editor.py:1191
+#: spyderlib\widgets\editor.py:1196
 msgid "New window"
 msgstr "Nouvelle fenêtre"
 
-#: spyderlib\widgets\editor.py:1192
+#: spyderlib\widgets\editor.py:1197
 msgid "Create a new editor window"
 msgstr "Créer une nouvelle fenêtre d'édition"
 
-#: spyderlib\widgets\editor.py:1195
+#: spyderlib\widgets\editor.py:1200
 msgid "Split vertically"
 msgstr "Séparation verticale"
 
-#: spyderlib\widgets\editor.py:1197
+#: spyderlib\widgets\editor.py:1202
 msgid "Split vertically this editor window"
 msgstr "Séparer en deux verticalement cette fenêtre d'édition"
 
-#: spyderlib\widgets\editor.py:1199
+#: spyderlib\widgets\editor.py:1204
 msgid "Split horizontally"
 msgstr "Séparation horizontale"
 
-#: spyderlib\widgets\editor.py:1201
+#: spyderlib\widgets\editor.py:1206
 msgid "Split horizontally this editor window"
 msgstr "Séparer en deux horizontalement cette fenêtre d'édition"
 
-#: spyderlib\widgets\editor.py:1203
+#: spyderlib\widgets\editor.py:1208
 msgid "Close this panel"
 msgstr "Fermer ce panneau"
 
-#: spyderlib\widgets\editor.py:1335
+#: spyderlib\widgets\editor.py:1340
 msgid "<b>%s</b> has been modified.<br>Do you want to save changes?"
 msgstr ""
 "<b>%s</b> a été modifié.<br>Souhaitez-vous enregistrer ces changements ?"
 
-#: spyderlib\widgets\editor.py:1398
+#: spyderlib\widgets\editor.py:1403
 msgid "Save"
 msgstr "Enregistrer"
 
-#: spyderlib\widgets\editor.py:1399
+#: spyderlib\widgets\editor.py:1404
 msgid "<b>Unable to save script '%s'</b><br><br>Error message:<br>%s"
 msgstr ""
 "<b>Impossible d'enregistrer le script '%s'</b><br><br>Message d'erreur :<br>%"
 "s"
 
-#: spyderlib\widgets\editor.py:1421
+#: spyderlib\widgets\editor.py:1426
 msgid "Save Python script"
 msgstr "Enregistrer le script Python"
 
-#: spyderlib\widgets\editor.py:1642
+#: spyderlib\widgets\editor.py:1647
 msgid ""
 "<b>%s</b> is unavailable (this file may have been removed, moved or renamed "
 "outside Spyder).<br>Do you want to close it?"
@@ -3460,15 +3425,15 @@ msgstr ""
 "<b>%s</b> n'est pas accessible (ce fichier a peut-être été supprimé, déplacé "
 "ou renommé en dehors de Spyder).<br>Souhaitez-vous le fermer ?"
 
-#: spyderlib\widgets\editor.py:1662
+#: spyderlib\widgets\editor.py:1667
 msgid ""
 "<b>%s</b> has been modified outside Spyder.<br>Do you want to reload it and "
-"loose all your changes?"
+"lose all your changes?"
 msgstr ""
 "<b>%s</b> a été modifié en dehors de Spyder.<br>Souhaitez-vous le recharger "
 "et perdre ainsi vos modifications ?"
 
-#: spyderlib\widgets\editor.py:1758
+#: spyderlib\widgets\editor.py:1763
 msgid ""
 "All changes to <b>%s</b> will be lost.<br>Do you want to revert file from "
 "disk?"
@@ -3477,11 +3442,11 @@ msgstr ""
 "<br>Souhaitez-vous revenir à la version du fichier enregistrée sur le "
 "disque ?"
 
-#: spyderlib\widgets\editor.py:1897
+#: spyderlib\widgets\editor.py:1902
 msgid "Loading %s..."
 msgstr "Chargement de \"%s\" en cours..."
 
-#: spyderlib\widgets\editor.py:1907
+#: spyderlib\widgets\editor.py:1912
 msgid ""
 "<b>%s</b> contains mixed end-of-line characters.<br>Spyder will fix this "
 "automatically."
@@ -3489,11 +3454,11 @@ msgstr ""
 "<b>%s</b> contient des caractères de fin de ligne mélangés.<br>Spyder va "
 "corriger ceci automatiquement."
 
-#: spyderlib\widgets\editor.py:2254
+#: spyderlib\widgets\editor.py:2260
 msgid "Close window"
 msgstr "Fermer la fenêtre"
 
-#: spyderlib\widgets\editor.py:2256
+#: spyderlib\widgets\editor.py:2262
 msgid "Close this window"
 msgstr "Fermer cette fenêtre d'édition"
 
@@ -3695,7 +3660,7 @@ msgstr "Afficher uniquement le répertoire courant"
 msgid "Show toolbar"
 msgstr "Afficher la barre d'outils"
 
-#: spyderlib\widgets\explorer.py:969 spyderlib\widgets\importwizard.py:484
+#: spyderlib\widgets\explorer.py:969 spyderlib\widgets\importwizard.py:494
 msgid "Previous"
 msgstr "Précédent"
 
@@ -3733,42 +3698,42 @@ msgstr "Arguments"
 msgid "Command line arguments:"
 msgstr "Arguments en ligne de commande :"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:168
+#: spyderlib\widgets\externalshell\namespacebrowser.py:178
 msgid "Refresh"
 msgstr "Rafraîchir"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:172
+#: spyderlib\widgets\externalshell\namespacebrowser.py:182
 msgid "Refresh periodically"
 msgstr "Rafraîchir périodiquement"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:176
-#: spyderlib\widgets\externalshell\namespacebrowser.py:415
+#: spyderlib\widgets\externalshell\namespacebrowser.py:186
+#: spyderlib\widgets\externalshell\namespacebrowser.py:435
 msgid "Import data"
 msgstr "Importer des données"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:179
-#: spyderlib\widgets\externalshell\namespacebrowser.py:505
-#: spyderlib\widgets\externalshell\namespacebrowser.py:526
+#: spyderlib\widgets\externalshell\namespacebrowser.py:189
+#: spyderlib\widgets\externalshell\namespacebrowser.py:525
+#: spyderlib\widgets\externalshell\namespacebrowser.py:546
 msgid "Save data"
 msgstr "Enregistrer les données"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:184
+#: spyderlib\widgets\externalshell\namespacebrowser.py:194
 msgid "Save data as..."
 msgstr "Enregistrer les données sous..."
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:192
+#: spyderlib\widgets\externalshell\namespacebrowser.py:202
 msgid "Exclude references which name starts with an underscore"
 msgstr "Exclure les références dont le nom commence par un tiret bas"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:200
+#: spyderlib\widgets\externalshell\namespacebrowser.py:210
 msgid "Exclude references which name is uppercase"
 msgstr "Exclure les références dont le nom s'écrit en lettres capitales"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:207
+#: spyderlib\widgets\externalshell\namespacebrowser.py:217
 msgid "Exclude references which name starts with an uppercase character"
 msgstr "Exclure les références dont le nom commence par une lettre majuscule"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:215
+#: spyderlib\widgets\externalshell\namespacebrowser.py:225
 msgid ""
 "Exclude references to unsupported data types (i.e. which won't be handled/"
 "saved correctly)"
@@ -3776,13 +3741,13 @@ msgstr ""
 "Exclure les références dont le type n'est pas supporté par l'espace de "
 "travail (en particulier, l'enregistrement ne fonctionnera pas)"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:331
+#: spyderlib\widgets\externalshell\namespacebrowser.py:341
 msgid "Object <b>%s</b> is not picklable"
 msgstr ""
 "L'objet <b>%s</b> n'est pas pris en charge par le protocole de sérialisation "
 "de <i>Pickle</i>"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:437
+#: spyderlib\widgets\externalshell\namespacebrowser.py:457
 msgid ""
 "<b>Unsupported file extension '%s'</b><br><br>Would you like to import it "
 "anyway (by selecting a known file format)?"
@@ -3790,33 +3755,33 @@ msgstr ""
 "<b>Extension de fichier non pris en charge '%s'</b><br><br>Souhaitez-vous "
 "néanmoins ouvrir ce fichier (en choisissant un format de fichier connu) ?"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:445
+#: spyderlib\widgets\externalshell\namespacebrowser.py:465
 msgid "Open file as:"
 msgstr "Ouvrir le fichier en tant que :"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:493
+#: spyderlib\widgets\externalshell\namespacebrowser.py:513
 msgid "<b>Unable to load '%s'</b><br><br>Error message:<br>%s"
 msgstr "<b>Impossible d'ouvrir '%s'</b><br><br>Message d'erreur :<br>%s"
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:527
+#: spyderlib\widgets\externalshell\namespacebrowser.py:547
 msgid "<b>Unable to save current workspace</b><br><br>Error message:<br>%s"
 msgstr ""
 "<b>Impossible d'enregistrer l'espace de travail</b><br><br>Message d'erreur :"
 "<br>%s"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:266
+#: spyderlib\widgets\externalshell\pythonshell.py:270
 msgid "Variables"
 msgstr "Variables"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:267
+#: spyderlib\widgets\externalshell\pythonshell.py:271
 msgid "Show/hide global variables explorer"
 msgstr "Afficher/masquer l'explorateur de variables globales"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:271
+#: spyderlib\widgets\externalshell\pythonshell.py:275
 msgid "Terminate"
 msgstr "Quitter"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:272
+#: spyderlib\widgets\externalshell\pythonshell.py:276
 msgid ""
 "Attempts to terminate the process.\n"
 "The process may not exit as a result of clicking this button\n"
@@ -3826,40 +3791,51 @@ msgstr ""
 "Le processus peut ne pas s'arrêter suite à cette tentative,\n"
 "mais cela permet au programme en cours de quitter proprement."
 
-#: spyderlib\widgets\externalshell\pythonshell.py:284
+#: spyderlib\widgets\externalshell\pythonshell.py:288
 msgid "Interact"
 msgstr "Interagir"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:286
+#: spyderlib\widgets\externalshell\pythonshell.py:290
 msgid "Debug"
 msgstr "Déboguer"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:288
-#: spyderlib\widgets\externalshell\pythonshell.py:351
+#: spyderlib\widgets\externalshell\pythonshell.py:292
+#: spyderlib\widgets\externalshell\pythonshell.py:355
 msgid "Arguments..."
 msgstr "Arguments..."
 
-#: spyderlib\widgets\externalshell\pythonshell.py:295
+#: spyderlib\widgets\externalshell\pythonshell.py:299
 msgid "Set current working directory"
 msgstr "Changer le répertoire de travail"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:297
+#: spyderlib\widgets\externalshell\pythonshell.py:301
 msgid "Environment variables"
 msgstr "Variables d'environnement"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:301
+#: spyderlib\widgets\externalshell\pythonshell.py:305
 msgid "Show sys.path contents"
 msgstr "Afficher le contenu de sys.path"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:347
+#: spyderlib\widgets\externalshell\pythonshell.py:351
 msgid "Arguments: %s"
 msgstr "Arguments : %s"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:349
+#: spyderlib\widgets\externalshell\pythonshell.py:353
 msgid "No argument"
 msgstr "Aucun argument"
 
-#: spyderlib\widgets\externalshell\pythonshell.py:523
+#: spyderlib\widgets\externalshell\pythonshell.py:524
+msgid ""
+"The console failed to start! That's all we know :(<br>Please close it and "
+"open a new one."
+msgstr ""
+"Le démarrage de la console a échoué !<br>C'est malheureusement tout ce que "
+"nous savons...<br>Merci de fermer la console et d'en réouvrir une autre."
+
+#: spyderlib\widgets\externalshell\pythonshell.py:528
+msgid "A Python console failed to start!"
+msgstr "Le démarrage d'une console Python a échoué !"
+
 #: spyderlib\widgets\externalshell\systemshell.py:94
 msgid "Process failed to start"
 msgstr "Le processus n'a pas pu démarrer"
@@ -4010,91 +3986,91 @@ msgstr "Remplacer/rechercher"
 msgid "Replace all"
 msgstr "Remplacer tout"
 
-#: spyderlib\widgets\importwizard.py:104
+#: spyderlib\widgets\importwizard.py:106
 msgid "Import as"
 msgstr "Importer en tant que"
 
-#: spyderlib\widgets\importwizard.py:106
+#: spyderlib\widgets\importwizard.py:108
 msgid "data"
 msgstr "données"
 
-#: spyderlib\widgets\importwizard.py:110
+#: spyderlib\widgets\importwizard.py:112
 msgid "code"
 msgstr "code"
 
-#: spyderlib\widgets\importwizard.py:113 spyderlib\widgets\importwizard.py:459
+#: spyderlib\widgets\importwizard.py:115 spyderlib\widgets\importwizard.py:469
 msgid "text"
 msgstr "texte"
 
-#: spyderlib\widgets\importwizard.py:125
+#: spyderlib\widgets\importwizard.py:127
 msgid "Column separator:"
 msgstr "Séparateur de colonne :"
 
-#: spyderlib\widgets\importwizard.py:129
+#: spyderlib\widgets\importwizard.py:131
 msgid "Tab"
 msgstr "Tab"
 
-#: spyderlib\widgets\importwizard.py:132 spyderlib\widgets\importwizard.py:150
+#: spyderlib\widgets\importwizard.py:134 spyderlib\widgets\importwizard.py:152
 msgid "other"
 msgstr "autre"
 
-#: spyderlib\widgets\importwizard.py:143
+#: spyderlib\widgets\importwizard.py:145
 msgid "Row separator:"
 msgstr "Séparateur de ligne :"
 
-#: spyderlib\widgets\importwizard.py:147
+#: spyderlib\widgets\importwizard.py:149
 msgid "EOL"
 msgstr "EOL"
 
-#: spyderlib\widgets\importwizard.py:163
+#: spyderlib\widgets\importwizard.py:165
 msgid "Additionnal options"
 msgstr "Options supplémentaires"
 
-#: spyderlib\widgets\importwizard.py:167
+#: spyderlib\widgets\importwizard.py:169
 msgid "Skip rows:"
 msgstr "Sauter des lignes :"
 
-#: spyderlib\widgets\importwizard.py:178
+#: spyderlib\widgets\importwizard.py:180
 msgid "Comments:"
 msgstr "Commentaires :"
 
-#: spyderlib\widgets\importwizard.py:184
+#: spyderlib\widgets\importwizard.py:186
 msgid "Transpose"
 msgstr "Transposer"
 
-#: spyderlib\widgets\importwizard.py:406
+#: spyderlib\widgets\importwizard.py:416
 msgid "Import as array"
 msgstr "Importer en tant que tableau"
 
-#: spyderlib\widgets\importwizard.py:442 spyderlib\widgets\importwizard.py:533
+#: spyderlib\widgets\importwizard.py:452 spyderlib\widgets\importwizard.py:543
 msgid "Import wizard"
 msgstr "Assistant d'importation"
 
-#: spyderlib\widgets\importwizard.py:447
+#: spyderlib\widgets\importwizard.py:457
 msgid "Raw text"
 msgstr "Text brut"
 
-#: spyderlib\widgets\importwizard.py:450
+#: spyderlib\widgets\importwizard.py:460
 msgid "variable_name"
 msgstr "nom_de_variable"
 
-#: spyderlib\widgets\importwizard.py:461
+#: spyderlib\widgets\importwizard.py:471
 msgid "table"
 msgstr "tableau"
 
-#: spyderlib\widgets\importwizard.py:462
+#: spyderlib\widgets\importwizard.py:472
 msgid "Preview"
 msgstr "Aperçu"
 
-#: spyderlib\widgets\importwizard.py:478
+#: spyderlib\widgets\importwizard.py:488
 msgid "Cancel"
 msgstr "Annuler"
 
-#: spyderlib\widgets\importwizard.py:493
+#: spyderlib\widgets\importwizard.py:503
 msgid "Done"
 msgstr "Terminer"
 
-#: spyderlib\widgets\importwizard.py:534
+#: spyderlib\widgets\importwizard.py:544
 msgid ""
 "<b>Unable to proceed to next step</b><br><br>Please check your entries."
 "<br><br>Error message:<br>%s"
@@ -4102,42 +4078,94 @@ msgstr ""
 "<b>Impossible de passer à l'étape suivante</b><br><br>Merci de vérifier "
 "votre saisie.<br><br>Message d'erreur :<br>%s"
 
-#: spyderlib\widgets\internalshell.py:247
+#: spyderlib\widgets\internalshell.py:248
 msgid "Help..."
 msgstr "Aide..."
 
-#: spyderlib\widgets\internalshell.py:263
+#: spyderlib\widgets\internalshell.py:255
+msgid "Help"
+msgstr "Aide"
+
+#: spyderlib\widgets\internalshell.py:264
 msgid "Shell special commands:"
 msgstr "Commandes spéciales de la console :"
 
-#: spyderlib\widgets\internalshell.py:264
+#: spyderlib\widgets\internalshell.py:265
 msgid "Internal editor:"
 msgstr "Éditeur interne :"
 
-#: spyderlib\widgets\internalshell.py:265
+#: spyderlib\widgets\internalshell.py:266
 msgid "External editor:"
 msgstr "Éditeur externe :"
 
-#: spyderlib\widgets\internalshell.py:266
+#: spyderlib\widgets\internalshell.py:267
 msgid "Run script:"
 msgstr "Exécuter un script :"
 
-#: spyderlib\widgets\internalshell.py:267
+#: spyderlib\widgets\internalshell.py:268
 msgid "Remove references:"
 msgstr "Supprimer des références :"
 
-#: spyderlib\widgets\internalshell.py:268
+#: spyderlib\widgets\internalshell.py:269
 msgid "System commands:"
 msgstr "Commandes systèmes :"
 
-#: spyderlib\widgets\internalshell.py:269
+#: spyderlib\widgets\internalshell.py:270
 msgid "Python help:"
 msgstr "Aide Python :"
 
-#: spyderlib\widgets\internalshell.py:270
+#: spyderlib\widgets\internalshell.py:271
 msgid "GUI-based editor:"
 msgstr "Éditeur graphique :"
 
+#: spyderlib\widgets\ipython.py:398
+msgid "An error ocurred while starting the kernel!"
+msgstr "Une erreur est survenue lors du démarrage du noyau !"
+
+#: spyderlib\widgets\ipython.py:426
+msgid "Interrupt kernel"
+msgstr "Interrompre le noyau"
+
+#: spyderlib\widgets\ipython.py:429
+msgid "Restart kernel"
+msgstr "Redémarrer le noyau"
+
+#: spyderlib\widgets\ipython.py:461
+msgid "Inspect current object"
+msgstr "Inspecter l'onglet courant"
+
+#: spyderlib\widgets\ipython.py:465
+msgid "Clear line or block"
+msgstr "Effacer la ligne ou le bloc"
+
+#: spyderlib\widgets\ipython.py:469
+msgid "Clear console"
+msgstr "Effacer la console"
+
+#: spyderlib\widgets\ipython.py:512
+msgid ""
+"It seems the kernel died unexpectedly. Use 'Restart kernel' to continue "
+"using this console."
+msgstr ""
+"Le noyau a été arrêté de façon inattendue. Redémarrez le noyau pour "
+"continuer d'utiliser cette console."
+
+#: spyderlib\widgets\ipython.py:524
+msgid "Kernel process is either remote or unspecified. Cannot interrupt"
+msgstr ""
+"Le processus du noyau est soit distant, soit non spécifié : impossible "
+"d'arrêter le noyau."
+
+#: spyderlib\widgets\ipython.py:533
+msgid "Kernel process is either remote or unspecified. Cannot restart."
+msgstr ""
+"Le processus du noyau est soit distant, soit non spécifié : impossible de "
+"redémarrer le noyau."
+
+#: spyderlib\widgets\ipython.py:550
+msgid "Connecting to kernel..."
+msgstr "Connexion à un noyau existant..."
+
 #: spyderlib\widgets\mixins.py:516
 msgid "Documentation"
 msgstr "Documentation"
@@ -4233,6 +4261,10 @@ msgstr ""
 msgid "its own configuration file"
 msgstr "son propre fichier de configuration"
 
+#: spyderlib\widgets\projectexplorer.py:334
+msgid " and "
+msgstr " et "
+
 #: spyderlib\widgets\projectexplorer.py:338
 msgid "the following projects:<br>%s"
 msgstr "les projets suivants :<br>%s"
@@ -4514,19 +4546,19 @@ msgstr "Aller à la ligne :"
 msgid "Line count:"
 msgstr "Nombre de lignes :"
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:1218
+#: spyderlib\widgets\sourcecode\codeeditor.py:1224
 msgid "Breakpoint"
 msgstr "Point d'arrêt"
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:1219
+#: spyderlib\widgets\sourcecode\codeeditor.py:1225
 msgid "Condition:"
 msgstr "Condition :"
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:1667
+#: spyderlib\widgets\sourcecode\codeeditor.py:1661
 msgid "To do"
 msgstr "À faire"
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:2246
+#: spyderlib\widgets\sourcecode\codeeditor.py:2240
 msgid "Go to definition"
 msgstr "Aller à la définition de l'objet"
 
@@ -4570,11 +4602,11 @@ msgstr "Ligne :"
 msgid "Column:"
 msgstr "Colonne :"
 
-#: spyderlib\widgets\tabs.py:120
+#: spyderlib\widgets\tabs.py:129
 msgid "Browse tabs"
 msgstr "Naviguer dans les onglets"
 
-#: spyderlib\widgets\tabs.py:243
+#: spyderlib\widgets\tabs.py:252
 msgid "Close current tab"
 msgstr "Fermer l'onglet"
 
@@ -4582,6 +4614,84 @@ msgstr "Fermer l'onglet"
 msgid "Text editor"
 msgstr "Éditeur de texte"
 
+#~ msgid "Automatic notification to object inspector"
+#~ msgstr "Notification automatique à l'inspecteur d'objets"
+
+#~ msgid ""
+#~ "If this option is enabled, object inspector\n"
+#~ "will automatically show informations on functions\n"
+#~ "entered in editor (this is triggered when entering\n"
+#~ "a left parenthesis after a valid function name)"
+#~ msgstr ""
+#~ "Si cette option est activée, l'inspecteur d'objet\n"
+#~ "affichera automatiquement des informations\n"
+#~ "sur les fonctions saisies dans l'éditeur\n"
+#~ "(le mécanisme est déclenché par la saisie d'une\n"
+#~ "parenthèse gauche après un nom valide de fonction)"
+
+#~ msgid "Create a new Python script"
+#~ msgstr "Créer un nouveau script Python"
+
+#~ msgid "Open text file"
+#~ msgstr "Ouvrir un fichier texte"
+
+#~ msgid "Save current file"
+#~ msgstr "Enregistrer le fichier en cours d'édition"
+
+#~ msgid ""
+#~ "Run current cell \n"
+#~ "(see Editor documentation \n"
+#~ "for more details on cells)"
+#~ msgstr ""
+#~ "Exécuter la cellule en cours d'édition\n"
+#~ "(voir la documentation de l'Editeur, pour plus de détails sur les "
+#~ "cellules)"
+
+#~ msgid ""
+#~ "If this option is enabled, object inspector\n"
+#~ "will automatically show informations on functions\n"
+#~ "entered in console (this is triggered when entering\n"
+#~ "a left parenthesis after a valid function name)"
+#~ msgstr ""
+#~ "Si cette option est activée, l'inspecteur d'objet affichera "
+#~ "automatiquement des informations sur les fonctions saisies dans la "
+#~ "console (le mécanisme est déclenché par la saisie d'une parenthèse gauche "
+#~ "après un nom valide de fonction)"
+
+#~ msgid "Open a Python &interpreter"
+#~ msgstr "Ouvrir un &interpréteur Python"
+
+#~ msgid "<br><u>Installed version</u>: %s"
+#~ msgstr "<br><u>Version installée</u>: %s"
+
+#~ msgid ""
+#~ "Unable to open IPython console because no supported IPython version was "
+#~ "found.<br><br><u>Supported IPython versions</u>: %s"
+#~ msgstr ""
+#~ "Impossible d'ouvrir une console IPython car aucune version prise en "
+#~ "charge n'est installée.<br><br><u>Versions IPython prises en charge</u>: %"
+#~ "s"
+
+#~ msgid "&Interpreters"
+#~ msgstr "&Interpréteurs"
+
+#~ msgid "Open Spyder path manager"
+#~ msgstr "Ouvre le gestionnaire de chemin d'accès de Spyder"
+
+#~ msgid "Qt Assistant"
+#~ msgstr "Qt Assistant (documentation Qt)"
+
+#~ msgid "Maximize current plugin to fit the whole application window"
+#~ msgstr ""
+#~ "Agrandir la fenêtre courante sur toute la surface de la fenêtre principale"
+
+#~ msgid ""
+#~ "Restore current plugin to its original size and position within the "
+#~ "application window"
+#~ msgstr ""
+#~ "Réduire la fenêtre courante à sa taille et position d'origine au sein de "
+#~ "la fenêtre principale"
+
 #~ msgid ""
 #~ "Run current block \n"
 #~ "(see Editor section in documentation \n"
@@ -4665,12 +4775,6 @@ msgstr "Éditeur de texte"
 #~ msgid "Edit run configurations"
 #~ msgstr "Modifier les configurations d'exécution des scripts récents"
 
-#~ msgid "Light background"
-#~ msgstr "Fond blanc"
-
-#~ msgid "Dark background"
-#~ msgstr "Fond noir"
-
 #~ msgid "Run %s"
 #~ msgstr "Exécution de %s"
 
@@ -4760,9 +4864,6 @@ msgstr "Éditeur de texte"
 #~ msgid "Open IPython here"
 #~ msgstr "Ouvrir IPython ici"
 
-#~ msgid "IPython Console"
-#~ msgstr "Console IPython"
-
 #~ msgid "Please install the %s tool named '%s'"
 #~ msgstr "Merci d'installer l'outil %s appelé '%s'"
 
diff --git a/spyderlib/locale/spyderlib.pot b/spyderlib/locale/spyderlib.pot
index 3e15e1f..49b5c00 100755
--- a/spyderlib/locale/spyderlib.pot
+++ b/spyderlib/locale/spyderlib.pot
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2013-08-20 14:18+Paris, Madrid (heure d��t�)\n"
+"POT-Creation-Date: 2013-11-09 14:09+Paris, Madrid\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -106,7 +106,7 @@ msgstr ""
 #: spyderlib\plugins\configdialog.py:431 spyderlib\plugins\configdialog.py:447
 #: spyderlib\plugins\runconfig.py:169 spyderlib\plugins\runconfig.py:229
 #: spyderlib\plugins\workingdirectory.py:294 spyderlib\widgets\explorer.py:536
-#: spyderlib\widgets\externalshell\pythonshell.py:604
+#: spyderlib\widgets\externalshell\pythonshell.py:611
 #: spyderlib\widgets\findinfiles.py:504 spyderlib\widgets\pathmanager.py:218
 #: spyderlib\widgets\projectexplorer.py:889
 msgid "Select directory"
@@ -124,11 +124,11 @@ msgstr ""
 msgid "All files (*)"
 msgstr ""
 
-#: spyderlib\plugins\configdialog.py:543 spyderlib\widgets\formlayout.py:213
+#: spyderlib\plugins\configdialog.py:543 spyderlib\widgets\formlayout.py:214
 msgid "Bold"
 msgstr ""
 
-#: spyderlib\plugins\configdialog.py:546 spyderlib\widgets\formlayout.py:208
+#: spyderlib\plugins\configdialog.py:546 spyderlib\widgets\formlayout.py:209
 msgid "Italic"
 msgstr ""
 
@@ -148,9 +148,9 @@ msgstr ""
 msgid "General"
 msgstr ""
 
-#: spyderlib\plugins\configdialog.py:657 spyderlib\plugins\editor.py:95
-#: spyderlib\plugins\externalconsole.py:84
-#: spyderlib\plugins\ipythonconsole.py:71
+#: spyderlib\plugins\configdialog.py:657 spyderlib\plugins\editor.py:96
+#: spyderlib\plugins\externalconsole.py:74
+#: spyderlib\plugins\ipythonconsole.py:70
 msgid "Interface"
 msgstr ""
 
@@ -287,20 +287,20 @@ msgstr ""
 msgid "Internal console"
 msgstr ""
 
-#: spyderlib\plugins\console.py:125 spyderlib\plugins\ipythonconsole.py:510
-#: spyderlib\spyder.py:757
+#: spyderlib\plugins\console.py:125 spyderlib\spyder.py:810
+#: spyderlib\widgets\ipython.py:473
 msgid "&Quit"
 msgstr ""
 
-#: spyderlib\plugins\console.py:126 spyderlib\spyder.py:758
+#: spyderlib\plugins\console.py:126 spyderlib\spyder.py:811
 msgid "Quit"
 msgstr ""
 
-#: spyderlib\plugins\console.py:129 spyderlib\plugins\externalconsole.py:1083
+#: spyderlib\plugins\console.py:129 spyderlib\plugins\externalconsole.py:1116
 msgid "&Run..."
 msgstr ""
 
-#: spyderlib\plugins\console.py:130 spyderlib\plugins\externalconsole.py:1084
+#: spyderlib\plugins\console.py:130 spyderlib\plugins\externalconsole.py:1117
 msgid "Run a Python script"
 msgstr ""
 
@@ -324,13 +324,13 @@ msgstr ""
 msgid "Buffer..."
 msgstr ""
 
-#: spyderlib\plugins\console.py:145 spyderlib\plugins\externalconsole.py:104
+#: spyderlib\plugins\console.py:145 spyderlib\plugins\externalconsole.py:94
 #: spyderlib\plugins\history.py:38
 msgid "Set maximum line count"
 msgstr ""
 
 #: spyderlib\plugins\console.py:148 spyderlib\plugins\explorer.py:60
-#: spyderlib\plugins\history.py:153 spyderlib\plugins\inspector.py:296
+#: spyderlib\plugins\history.py:153 spyderlib\plugins\inspector.py:349
 #: spyderlib\plugins\projectexplorer.py:58
 msgid "&Font..."
 msgstr ""
@@ -347,25 +347,25 @@ msgstr ""
 msgid "Set external editor executable path"
 msgstr ""
 
-#: spyderlib\plugins\console.py:156 spyderlib\plugins\editor.py:133
-#: spyderlib\plugins\externalconsole.py:105 spyderlib\plugins\history.py:41
-#: spyderlib\plugins\history.py:156 spyderlib\plugins\inspector.py:96
-#: spyderlib\plugins\inspector.py:299
+#: spyderlib\plugins\console.py:156 spyderlib\plugins\editor.py:134
+#: spyderlib\plugins\externalconsole.py:95 spyderlib\plugins\history.py:41
+#: spyderlib\plugins\history.py:156 spyderlib\plugins\inspector.py:170
+#: spyderlib\plugins\inspector.py:352
 msgid "Wrap lines"
 msgstr ""
 
-#: spyderlib\plugins\console.py:159 spyderlib\plugins\editor.py:163
-#: spyderlib\plugins\externalconsole.py:154
+#: spyderlib\plugins\console.py:159 spyderlib\plugins\editor.py:164
+#: spyderlib\plugins\externalconsole.py:144
 msgid "Balloon tips"
 msgstr ""
 
-#: spyderlib\plugins\console.py:163 spyderlib\plugins\editor.py:155
-#: spyderlib\plugins\externalconsole.py:146
+#: spyderlib\plugins\console.py:163 spyderlib\plugins\editor.py:156
+#: spyderlib\plugins\externalconsole.py:136
 msgid "Automatic code completion"
 msgstr ""
 
-#: spyderlib\plugins\console.py:167 spyderlib\plugins\editor.py:161
-#: spyderlib\plugins\externalconsole.py:152
+#: spyderlib\plugins\console.py:167 spyderlib\plugins\editor.py:162
+#: spyderlib\plugins\externalconsole.py:142
 msgid "Enter key selects completion"
 msgstr ""
 
@@ -373,17 +373,17 @@ msgstr ""
 msgid "Internal console settings"
 msgstr ""
 
-#: spyderlib\plugins\console.py:223 spyderlib\plugins\externalconsole.py:1257
+#: spyderlib\plugins\console.py:223 spyderlib\plugins\externalconsole.py:1288
 msgid "Run Python script"
 msgstr ""
 
-#: spyderlib\plugins\console.py:224 spyderlib\plugins\externalconsole.py:268
-#: spyderlib\plugins\externalconsole.py:1258 spyderlib\widgets\explorer.py:635
+#: spyderlib\plugins\console.py:224 spyderlib\plugins\externalconsole.py:250
+#: spyderlib\plugins\externalconsole.py:1289 spyderlib\widgets\explorer.py:635
 msgid "Python scripts"
 msgstr ""
 
 #: spyderlib\plugins\console.py:269 spyderlib\plugins\explorer.py:111
-#: spyderlib\plugins\history.py:271 spyderlib\plugins\inspector.py:559
+#: spyderlib\plugins\history.py:271 spyderlib\plugins\inspector.py:643
 #: spyderlib\plugins\projectexplorer.py:120
 msgid "Select a new font"
 msgstr ""
@@ -404,158 +404,145 @@ msgstr ""
 msgid "External editor executable path:"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:86 spyderlib\plugins\editor.py:512
-#: spyderlib\plugins\editor.py:1539 spyderlib\plugins\inspector.py:327
-#: spyderlib\widgets\editor.py:570
+#: spyderlib\plugins\editor.py:87 spyderlib\plugins\editor.py:505
+#: spyderlib\plugins\editor.py:1570 spyderlib\plugins\inspector.py:133
+#: spyderlib\plugins\inspector.py:380 spyderlib\widgets\editor.py:574
 #: spyderlib\widgets\sourcecode\codeeditor.py:270
-#: spyderlib\widgets\sourcecode\codeeditor.py:2564
+#: spyderlib\widgets\sourcecode\codeeditor.py:2558
 msgid "Editor"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:92
+#: spyderlib\plugins\editor.py:93
 msgid "Edit template for new modules"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:97
+#: spyderlib\plugins\editor.py:98
 msgid "Text and margin font style"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:100
+#: spyderlib\plugins\editor.py:101
 msgid "Sort files according to full path"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:102
+#: spyderlib\plugins\editor.py:103
 msgid "Show tab bar"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:109 spyderlib\plugins\editor.py:184
-#: spyderlib\plugins\externalconsole.py:100
-#: spyderlib\plugins\externalconsole.py:145 spyderlib\plugins\history.py:40
-#: spyderlib\plugins\inspector.py:95 spyderlib\plugins\ipythonconsole.py:106
+#: spyderlib\plugins\editor.py:110 spyderlib\plugins\editor.py:178
+#: spyderlib\plugins\externalconsole.py:90
+#: spyderlib\plugins\externalconsole.py:135 spyderlib\plugins\history.py:40
+#: spyderlib\plugins\inspector.py:169 spyderlib\plugins\ipythonconsole.py:108
 msgid "Source code"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:110
+#: spyderlib\plugins\editor.py:111
 msgid "Show line numbers"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:111
+#: spyderlib\plugins\editor.py:112
 msgid "Show vertical line after"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:112
+#: spyderlib\plugins\editor.py:113
 msgid "characters"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:120
+#: spyderlib\plugins\editor.py:121
 msgid "Highlight current line"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:122
+#: spyderlib\plugins\editor.py:123
 msgid "Highlight occurences after"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:136 spyderlib\plugins\history.py:49
-#: spyderlib\plugins\inspector.py:99
+#: spyderlib\plugins\editor.py:137 spyderlib\plugins\history.py:49
+#: spyderlib\plugins\inspector.py:173
 msgid "Syntax color scheme: "
 msgstr ""
 
-#: spyderlib\plugins\editor.py:148 spyderlib\plugins\runconfig.py:304
+#: spyderlib\plugins\editor.py:149 spyderlib\plugins\runconfig.py:304
 #: spyderlib\plugins\runconfig.py:426 spyderlib\plugins\runconfig.py:431
-#: spyderlib\spyder.py:1710 spyderlib\widgets\explorer.py:230
+#: spyderlib\spyder.py:1795 spyderlib\widgets\explorer.py:230
 #: spyderlib\widgets\externalshell\baseshell.py:138
 msgid "Run"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:149
+#: spyderlib\plugins\editor.py:150
 msgid "Save all files before running script"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:152 spyderlib\plugins\externalconsole.py:434
+#: spyderlib\plugins\editor.py:153 spyderlib\plugins\externalconsole.py:416
 msgid "Introspection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:157 spyderlib\plugins\externalconsole.py:148
+#: spyderlib\plugins\editor.py:158 spyderlib\plugins\externalconsole.py:138
 msgid "Case sensitive code completion"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:159 spyderlib\plugins\externalconsole.py:150
+#: spyderlib\plugins\editor.py:160 spyderlib\plugins\externalconsole.py:140
 msgid "Show single completion"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:164
+#: spyderlib\plugins\editor.py:165
 msgid "Link to object definition"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:166
+#: spyderlib\plugins\editor.py:167
 msgid ""
 "If this option is enabled, clicking on an object\n"
 "name (left-click + Ctrl key) will go this object\n"
 "definition (if resolved)."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:170 spyderlib\plugins\externalconsole.py:156
-#: spyderlib\plugins\ipythonconsole.py:89
-msgid "Automatic notification to object inspector"
-msgstr ""
-
-#: spyderlib\plugins\editor.py:172
-msgid ""
-"If this option is enabled, object inspector\n"
-"will automatically show informations on functions\n"
-"entered in editor (this is triggered when entering\n"
-"a left parenthesis after a valid function name)"
-msgstr ""
-
-#: spyderlib\plugins\editor.py:177
+#: spyderlib\plugins\editor.py:171
 msgid "<b>Warning:</b><br>The Python module <i>rope</i> is not installed on this computer: calltips, code completion and go-to-definition features won't be available."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:185
+#: spyderlib\plugins\editor.py:179
 msgid "Automatic insertion of parentheses, braces and brackets"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:188
+#: spyderlib\plugins\editor.py:182
 msgid "Automatic insertion of closing quotes"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:190
+#: spyderlib\plugins\editor.py:184
 msgid "Automatic insertion of colons after 'for', 'if', 'def', etc"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:193
+#: spyderlib\plugins\editor.py:187
 msgid "Automatic indentation after 'else', 'elif', etc."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:195
+#: spyderlib\plugins\editor.py:189
 msgid "Indentation characters: "
 msgstr ""
 
-#: spyderlib\plugins\editor.py:196
+#: spyderlib\plugins\editor.py:190
 msgid "4 spaces"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:197
+#: spyderlib\plugins\editor.py:191
 msgid "2 spaces"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:198
+#: spyderlib\plugins\editor.py:192
 msgid "tab"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:199
+#: spyderlib\plugins\editor.py:193
 msgid "Tab stop width:"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:199
+#: spyderlib\plugins\editor.py:193
 msgid "pixels"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:201
+#: spyderlib\plugins\editor.py:195
 msgid "Tab always indent"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:203
+#: spyderlib\plugins\editor.py:197
 msgid ""
 "If enabled, pressing Tab will always indent,\n"
 "even when the cursor is not at the beginning\n"
@@ -564,533 +551,521 @@ msgid ""
 "shortcut: Ctrl+Space)"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:208
+#: spyderlib\plugins\editor.py:202
 msgid "Intelligent backspace"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:210
+#: spyderlib\plugins\editor.py:204
 msgid "Automatically remove trailing spaces when saving files"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:214
+#: spyderlib\plugins\editor.py:208
 msgid "Analysis"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:216
+#: spyderlib\plugins\editor.py:210
 msgid "<u>Note</u>: add <b>analysis:ignore</b> in a comment to ignore code/style analysis warnings. For more informations on style guide for Python code, please refer to the %s page."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:225
-#: spyderlib\widgets\sourcecode\codeeditor.py:1613
+#: spyderlib\plugins\editor.py:219
+#: spyderlib\widgets\sourcecode\codeeditor.py:1607
 msgid "Code analysis"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:227
+#: spyderlib\plugins\editor.py:221
 msgid ""
 "If enabled, Python source code will be analyzed\n"
 "using pyflakes, lines containing errors or \n"
 "warnings will be highlighted"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:232
+#: spyderlib\plugins\editor.py:226
 msgid "Code analysis requires pyflakes %s+"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:234
+#: spyderlib\plugins\editor.py:228
 msgid "Style analysis"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:236
+#: spyderlib\plugins\editor.py:230
 msgid ""
 "If enabled, Python source code will be analyzed\n"
 "using pep8, lines that are not following PEP8\n"
 "style guide will be highlighted"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:243
+#: spyderlib\plugins\editor.py:237
 msgid "Tasks (TODO, FIXME, XXX, HINT, TIP)"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:246
+#: spyderlib\plugins\editor.py:240
 msgid "Perform analysis when saving file and every"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:250
+#: spyderlib\plugins\editor.py:244
 msgid "Perform analysis only when saving file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:296
+#: spyderlib\plugins\editor.py:289
 msgid "End-of-line characters"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:297
+#: spyderlib\plugins\editor.py:290
 msgid "When opening a text file containing mixed end-of-line characters (this may raise syntax errors in Python interpreter on Windows platforms), Spyder may fix the file automatically."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:303
+#: spyderlib\plugins\editor.py:296
 msgid "Fix automatically and show warning message box"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:314 spyderlib\plugins\externalconsole.py:432
-#: spyderlib\plugins\ipythonconsole.py:358
+#: spyderlib\plugins\editor.py:307 spyderlib\plugins\externalconsole.py:414
+#: spyderlib\plugins\ipythonconsole.py:361
 #: spyderlib\plugins\variableexplorer.py:41
 msgid "Display"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:316
+#: spyderlib\plugins\editor.py:309
 msgid "Code Introspection/Analysis"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:319 spyderlib\plugins\externalconsole.py:437
+#: spyderlib\plugins\editor.py:312 spyderlib\plugins\externalconsole.py:419
 msgid "Advanced settings"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:568 spyderlib\widgets\editortools.py:471
+#: spyderlib\plugins\editor.py:561 spyderlib\widgets\editortools.py:471
 msgid "Show/hide outline explorer"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:574
+#: spyderlib\plugins\editor.py:567
 msgid "Show/hide project explorer"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:582
+#: spyderlib\plugins\editor.py:576
 msgid "&New file..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:583
-msgid "Create a new Python script"
+#: spyderlib\plugins\editor.py:577 spyderlib\plugins\workingdirectory.py:82
+#: spyderlib\widgets\explorer.py:613 spyderlib\widgets\explorer.py:620
+msgid "New file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:587
+#: spyderlib\plugins\editor.py:584
 msgid "&Open..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:588
-msgid "Open text file"
+#: spyderlib\plugins\editor.py:585 spyderlib\plugins\editor.py:1611
+#: spyderlib\plugins\workingdirectory.py:69
+msgid "Open file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:590
+#: spyderlib\plugins\editor.py:592
 msgid "&Revert"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:591
+#: spyderlib\plugins\editor.py:593
 msgid "Revert file from disk"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:595
+#: spyderlib\plugins\editor.py:596
 msgid "&Save"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:596
-msgid "Save current file"
+#: spyderlib\plugins\editor.py:597
+msgid "Save file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:600
+#: spyderlib\plugins\editor.py:604
 msgid "Sav&e all"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:601
-msgid "Save all opened files"
+#: spyderlib\plugins\editor.py:605
+msgid "Save all files"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:605
+#: spyderlib\plugins\editor.py:612
 msgid "Save &as..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:606
+#: spyderlib\plugins\editor.py:613
 msgid "Save current file as..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:608 spyderlib\plugins\editor.py:609
+#: spyderlib\plugins\editor.py:615 spyderlib\plugins\editor.py:616
 msgid "Print preview..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:610
+#: spyderlib\plugins\editor.py:617
 msgid "&Print..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:611
+#: spyderlib\plugins\editor.py:618
 msgid "Print current file..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:615
+#: spyderlib\plugins\editor.py:622
 msgid "&Close"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:616
+#: spyderlib\plugins\editor.py:623
 msgid "Close current file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:620
+#: spyderlib\plugins\editor.py:627
 msgid "C&lose all"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:621
+#: spyderlib\plugins\editor.py:628
 msgid "Close all opened files"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:627
+#: spyderlib\plugins\editor.py:635
 msgid "Set/Clear breakpoint"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:634
+#: spyderlib\plugins\editor.py:642
 msgid "Set/Edit conditional breakpoint"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:642
+#: spyderlib\plugins\editor.py:650
 msgid "Clear breakpoints in all files"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:644
+#: spyderlib\plugins\editor.py:652
 msgid "Breakpoints"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:650
+#: spyderlib\plugins\editor.py:656
+msgid "Debug with winpdb"
+msgstr ""
+
+#: spyderlib\plugins\editor.py:663 spyderlib\spyder.py:609
 msgid "&Debug"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:651
+#: spyderlib\plugins\editor.py:664
 msgid "Debug file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:655
+#: spyderlib\plugins\editor.py:670
 msgid "Step"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:656
+#: spyderlib\plugins\editor.py:671
 msgid "Run current line"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:660
+#: spyderlib\plugins\editor.py:678
 msgid "Continue"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:661
-msgid ""
-"Continue execution until\n"
-"next breakpoint"
+#: spyderlib\plugins\editor.py:679
+msgid "Continue execution until next breakpoint"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:666
+#: spyderlib\plugins\editor.py:687
 msgid "Step Into"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:667
-msgid ""
-"Step into function, method\n"
-"or class of current line"
+#: spyderlib\plugins\editor.py:688
+msgid "Step into function or method of current line"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:672
+#: spyderlib\plugins\editor.py:696
 msgid "Step Return"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:673
-msgid ""
-"Run until current function\n"
-"or method returns"
+#: spyderlib\plugins\editor.py:697
+msgid "Run until current function or method returns"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:678
+#: spyderlib\plugins\editor.py:705
 msgid "Exit"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:679
+#: spyderlib\plugins\editor.py:706
 msgid "Exit Debug"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:688
+#: spyderlib\plugins\editor.py:718
 msgid "Debugging control"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:692 spyderlib\plugins\editor.py:1191
-#: spyderlib\spyder.py:561
+#: spyderlib\plugins\editor.py:722 spyderlib\plugins\editor.py:1222
+#: spyderlib\spyder.py:604
 msgid "&Run"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:693
+#: spyderlib\plugins\editor.py:723
 msgid "Run file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:698
+#: spyderlib\plugins\editor.py:730
 msgid "&Configure..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:699
-#: spyderlib\widgets\externalshell\pythonshell.py:290
+#: spyderlib\plugins\editor.py:731
+#: spyderlib\widgets\externalshell\pythonshell.py:294
 msgid "Run settings"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:705
+#: spyderlib\plugins\editor.py:740
 msgid "Re-run &last script"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:706
+#: spyderlib\plugins\editor.py:741
 msgid "Run again last file"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:711
-#: spyderlib\widgets\sourcecode\codeeditor.py:2249
+#: spyderlib\plugins\editor.py:748
+#: spyderlib\widgets\sourcecode\codeeditor.py:2243
 msgid "Run &selection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:713
+#: spyderlib\plugins\editor.py:750
 msgid "Run selection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:718
+#: spyderlib\plugins\editor.py:756
 msgid "Run cell"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:720
+#: spyderlib\plugins\editor.py:758
 msgid ""
-"Run current cell \n"
-"(see Editor documentation \n"
-"for more details on cells)"
+"Run current cell (Ctrl+Enter)\n"
+"[Use #%% to create cells]"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:725
+#: spyderlib\plugins\editor.py:763
 msgid "Run cell and advance"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:728
-msgid ""
-"Run current cell and go to the next one\n"
-"(see Editor documentation \n"
-"for more details on cells)"
+#: spyderlib\plugins\editor.py:766
+msgid "Run current cell and go to the next one (Shift+Enter)"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:735
+#: spyderlib\plugins\editor.py:772
 msgid "Show todo list"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:736
+#: spyderlib\plugins\editor.py:773
 msgid "Show TODO/FIXME/XXX/HINT/TIP comments list"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:744
+#: spyderlib\plugins\editor.py:781
 msgid "Show warning/error list"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:745
+#: spyderlib\plugins\editor.py:782
 msgid "Show code analysis warnings/errors"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:752
+#: spyderlib\plugins\editor.py:789
 msgid "Previous warning/error"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:753
+#: spyderlib\plugins\editor.py:790
 msgid "Go to previous code analysis warning/error"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:756
+#: spyderlib\plugins\editor.py:793
 msgid "Next warning/error"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:757
+#: spyderlib\plugins\editor.py:794
 msgid "Go to next code analysis warning/error"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:761
+#: spyderlib\plugins\editor.py:798
 msgid "Last edit location"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:762
+#: spyderlib\plugins\editor.py:799
 msgid "Go to last edit location"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:769
+#: spyderlib\plugins\editor.py:806
 msgid "Previous cursor position"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:770
+#: spyderlib\plugins\editor.py:807
 msgid "Go to previous cursor position"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:777
+#: spyderlib\plugins\editor.py:814
 msgid "Next cursor position"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:778
+#: spyderlib\plugins\editor.py:815
 msgid "Go to next cursor position"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:786
-#: spyderlib\widgets\sourcecode\codeeditor.py:2243
+#: spyderlib\plugins\editor.py:823
+#: spyderlib\widgets\sourcecode\codeeditor.py:2237
 msgid "Comment"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:786
-#: spyderlib\widgets\sourcecode\codeeditor.py:2243
+#: spyderlib\plugins\editor.py:823
+#: spyderlib\widgets\sourcecode\codeeditor.py:2237
 msgid "Uncomment"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:787
+#: spyderlib\plugins\editor.py:824
 msgid "Comment current line or selection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:791
+#: spyderlib\plugins\editor.py:828
 msgid "Add &block comment"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:792
+#: spyderlib\plugins\editor.py:829
 msgid "Add block comment around current line or selection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:798
+#: spyderlib\plugins\editor.py:835
 msgid "R&emove block comment"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:799
+#: spyderlib\plugins\editor.py:836
 msgid "Remove comment block around current line or selection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:810
+#: spyderlib\plugins\editor.py:847
 msgid "Indent"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:811
+#: spyderlib\plugins\editor.py:848
 msgid "Indent current line or selection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:814
+#: spyderlib\plugins\editor.py:851
 msgid "Unindent"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:815
+#: spyderlib\plugins\editor.py:852
 msgid "Unindent current line or selection"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:819
-msgid "Debug with winpdb"
-msgstr ""
-
-#: spyderlib\plugins\editor.py:826
+#: spyderlib\plugins\editor.py:857
 msgid "Carriage return and line feed (Windows)"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:829
+#: spyderlib\plugins\editor.py:860
 msgid "Line feed (UNIX)"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:832
+#: spyderlib\plugins\editor.py:863
 msgid "Carriage return (Mac)"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:838
+#: spyderlib\plugins\editor.py:869
 msgid "Convert end-of-line characters"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:842
+#: spyderlib\plugins\editor.py:873
 msgid "Remove trailing spaces"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:844
+#: spyderlib\plugins\editor.py:875
 msgid "Fix indentation"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:845
+#: spyderlib\plugins\editor.py:876
 msgid "Replace tab characters by space characters"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:848
+#: spyderlib\plugins\editor.py:879
 msgid "Go to line..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:856
+#: spyderlib\plugins\editor.py:887
 msgid "Set console working directory"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:858
+#: spyderlib\plugins\editor.py:889
 msgid "Set current console (and file explorer) working directory to current script directory"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:863
+#: spyderlib\plugins\editor.py:894
 msgid "Maximum number of recent files..."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:866
+#: spyderlib\plugins\editor.py:897
 msgid "Clear recent files list"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:866
+#: spyderlib\plugins\editor.py:897
 msgid "Clear this list"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:868
+#: spyderlib\plugins\editor.py:899
 msgid "Open &recent"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1179 spyderlib\spyder.py:542
+#: spyderlib\plugins\editor.py:1210 spyderlib\spyder.py:585
 msgid "File toolbar"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1180 spyderlib\spyder.py:552
+#: spyderlib\plugins\editor.py:1211 spyderlib\spyder.py:595
 msgid "Search toolbar"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1181 spyderlib\spyder.py:557
+#: spyderlib\plugins\editor.py:1212 spyderlib\spyder.py:600
 msgid "Source toolbar"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1182 spyderlib\spyder.py:562
+#: spyderlib\plugins\editor.py:1213 spyderlib\spyder.py:605
 msgid "Run toolbar"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1183 spyderlib\spyder.py:566
+#: spyderlib\plugins\editor.py:1214 spyderlib\spyder.py:610
 msgid "Debug toolbar"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1184 spyderlib\spyder.py:547
+#: spyderlib\plugins\editor.py:1215 spyderlib\spyder.py:590
 msgid "Edit toolbar"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1187 spyderlib\spyder.py:539
+#: spyderlib\plugins\editor.py:1218 spyderlib\spyder.py:582
 msgid "&File"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1188 spyderlib\spyder.py:546
+#: spyderlib\plugins\editor.py:1219 spyderlib\spyder.py:589
 msgid "&Edit"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1189 spyderlib\spyder.py:551
+#: spyderlib\plugins\editor.py:1220 spyderlib\spyder.py:594
 msgid "&Search"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1190 spyderlib\spyder.py:556
+#: spyderlib\plugins\editor.py:1221 spyderlib\spyder.py:599
 msgid "Sour&ce"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1192 spyderlib\spyder.py:573
+#: spyderlib\plugins\editor.py:1223 spyderlib\spyder.py:617
 msgid "&Tools"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1193
+#: spyderlib\plugins\editor.py:1224
 msgid "?"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1408
+#: spyderlib\plugins\editor.py:1439
 msgid "Spyder Editor"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1409
+#: spyderlib\plugins\editor.py:1440
 msgid "This is a temporary script file."
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1469
+#: spyderlib\plugins\editor.py:1500
 msgid "untitled"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1540
+#: spyderlib\plugins\editor.py:1571
 msgid "Maximum number of recent files"
 msgstr ""
 
-#: spyderlib\plugins\editor.py:1580 spyderlib\plugins\workingdirectory.py:69
-msgid "Open file"
-msgstr ""
-
-#: spyderlib\plugins\editor.py:1662
+#: spyderlib\plugins\editor.py:1693
 msgid "Printing..."
 msgstr ""
 
@@ -1098,7 +1073,7 @@ msgstr ""
 msgid "File explorer"
 msgstr ""
 
-#: spyderlib\plugins\explorer.py:61 spyderlib\plugins\inspector.py:297
+#: spyderlib\plugins\explorer.py:61 spyderlib\plugins\inspector.py:350
 #: spyderlib\plugins\projectexplorer.py:59
 msgid "Set font style"
 msgstr ""
@@ -1107,365 +1082,340 @@ msgstr ""
 msgid "Interactive data plotting"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:70
-#: spyderlib\plugins\externalconsole.py:1050
-#: spyderlib\plugins\inspector.py:327 spyderlib\plugins\ipythonconsole.py:433
-#: spyderlib\plugins\ipythonconsole.py:1145
+#: spyderlib\plugins\externalconsole.py:60
+#: spyderlib\plugins\externalconsole.py:1083
+#: spyderlib\plugins\inspector.py:380
 #: spyderlib\widgets\externalshell\baseshell.py:106
+#: spyderlib\widgets\ipython.py:412
 msgid "Console"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:88
+#: spyderlib\plugins\externalconsole.py:78
 msgid "One tab per script"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:89
+#: spyderlib\plugins\externalconsole.py:79
 #: spyderlib\widgets\externalshell\baseshell.py:171
 msgid "Show elapsed time"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:90 spyderlib\widgets\explorer.py:960
+#: spyderlib\plugins\externalconsole.py:80 spyderlib\widgets\explorer.py:960
 msgid "Show icons and text"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:102
+#: spyderlib\plugins\externalconsole.py:92
 msgid "Buffer: "
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:102
-#: spyderlib\plugins\ipythonconsole.py:108
+#: spyderlib\plugins\externalconsole.py:92
+#: spyderlib\plugins\ipythonconsole.py:110
 msgid " lines"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:107
+#: spyderlib\plugins\externalconsole.py:97
 msgid "Merge process standard output/error channels"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:109
+#: spyderlib\plugins\externalconsole.py:99
 msgid ""
 "Merging the output channels of the process means that\n"
 "the standard error won't be written in red anymore,\n"
 "but this has the effect of speeding up display."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:113
+#: spyderlib\plugins\externalconsole.py:103
 msgid "Colorize standard error channel using ANSI escape codes"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:115
+#: spyderlib\plugins\externalconsole.py:105
 msgid ""
 "This method is the only way to have colorized standard\n"
 "error channel when the output channels have been merged."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:133
-#: spyderlib\widgets\arrayeditor.py:395
+#: spyderlib\plugins\externalconsole.py:123
+#: spyderlib\plugins\ipythonconsole.py:97 spyderlib\widgets\arrayeditor.py:395
 msgid "Background color"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:134
+#: spyderlib\plugins\externalconsole.py:124
 msgid "This option will be applied the next time a Python console or a terminal is opened."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:137
+#: spyderlib\plugins\externalconsole.py:127
 msgid "Light background (white color)"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:158
-#: spyderlib\plugins\ipythonconsole.py:91
-msgid ""
-"If this option is enabled, object inspector\n"
-"will automatically show informations on functions\n"
-"entered in console (this is triggered when entering\n"
-"a left parenthesis after a valid function name)"
-msgstr ""
-
-#: spyderlib\plugins\externalconsole.py:173
+#: spyderlib\plugins\externalconsole.py:155
 msgid "User Module Deleter (UMD)"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:174
+#: spyderlib\plugins\externalconsole.py:156
 msgid ""
 "UMD forces Python to reload modules which were imported when executing a \n"
 "script in the external console with the 'runfile' function."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:177
+#: spyderlib\plugins\externalconsole.py:159
 msgid "Enable UMD"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:178
+#: spyderlib\plugins\externalconsole.py:160
 msgid "This option will enable the User Module Deleter (UMD) in Python interpreters. UMD forces Python to reload deeply modules during import when running a Python script using the Spyder's builtin function <b>runfile</b>.<br><br><b>1.</b> UMD may require to restart the Python interpreter in which it will be called (otherwise only newly imported modules will be reloaded when executing scripts).<br><br><b>2.</b> If errors occur when re-running a PyQt-based program, please check that the Q [...]
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:194
+#: spyderlib\plugins\externalconsole.py:176
 msgid "Show reloaded modules list"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:195
+#: spyderlib\plugins\externalconsole.py:177
 msgid "Please note that these changes will be applied only to new Python interpreters"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:199
+#: spyderlib\plugins\externalconsole.py:181
 msgid "Set UMD excluded (not reloaded) modules"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:211
+#: spyderlib\plugins\externalconsole.py:193
 msgid "Python executable"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:213
+#: spyderlib\plugins\externalconsole.py:195
 msgid "Select the Python interpreter executable binary in which Spyder will run scripts:"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:216
+#: spyderlib\plugins\externalconsole.py:198
 msgid "Default (i.e. the same as Spyder's)"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:220
+#: spyderlib\plugins\externalconsole.py:202
 msgid "Use the following Python interpreter:"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:224
+#: spyderlib\plugins\externalconsole.py:206
 msgid "Executables"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:244
-#: spyderlib\plugins\ipythonconsole.py:362
+#: spyderlib\plugins\externalconsole.py:226
+#: spyderlib\plugins\ipythonconsole.py:365
 #: spyderlib\plugins\workingdirectory.py:42
 msgid "Startup"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:245
+#: spyderlib\plugins\externalconsole.py:227
 msgid "Open a Python interpreter at startup"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:253
+#: spyderlib\plugins\externalconsole.py:235
 msgid "PYTHONSTARTUP replacement"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:255
+#: spyderlib\plugins\externalconsole.py:237
 msgid ""
 "This option will override the PYTHONSTARTUP environment variable which\n"
 "defines the script to be executed during the Python interpreter startup."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:260
+#: spyderlib\plugins\externalconsole.py:242
 msgid "Default PYTHONSTARTUP script"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:264
+#: spyderlib\plugins\externalconsole.py:246
 msgid "Use the following startup script:"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:283
+#: spyderlib\plugins\externalconsole.py:265
 msgid "Monitor"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:284
+#: spyderlib\plugins\externalconsole.py:266
 msgid "The monitor provides introspection features to console: code completion, calltips and variable explorer. Because it relies on several modules, disabling the monitor may be useful to accelerate console startup."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:291
+#: spyderlib\plugins\externalconsole.py:273
 msgid "Enable monitor"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:303
+#: spyderlib\plugins\externalconsole.py:285
 msgid "Default library"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:305
+#: spyderlib\plugins\externalconsole.py:287
 msgid "Qt (PyQt/PySide)"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:307
+#: spyderlib\plugins\externalconsole.py:289
 msgid "Qt-Python bindings library selection:"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:309
+#: spyderlib\plugins\externalconsole.py:291
 msgid "This option will act on<br> libraries such as Matplotlib, guidata or ETS"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:323
+#: spyderlib\plugins\externalconsole.py:305
 msgid "Install Spyder's input hook for Qt"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:325
+#: spyderlib\plugins\externalconsole.py:307
 msgid "PyQt installs an input hook that allows<br> creating and interacting with Qt widgets in an interactive interpreter without blocking it. On Windows platforms, it is strongly recommended to replace it by Spyder's. Regarding PySide, note that it does not install an input hook, so it is required to enable this feature in order to be able to manipulate PySide/Qtobjects interactively."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:344
+#: spyderlib\plugins\externalconsole.py:326
 msgid "PyQt"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:346
+#: spyderlib\plugins\externalconsole.py:328
 msgid "API selection for QString and QVariant objects:"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:347
+#: spyderlib\plugins\externalconsole.py:329
 msgid "API #1"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:347
+#: spyderlib\plugins\externalconsole.py:329
 msgid "API #2"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:347
+#: spyderlib\plugins\externalconsole.py:329
 msgid "Default API"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:349
+#: spyderlib\plugins\externalconsole.py:331
 msgid "PyQt API #1 is the default API for<br>Python 2. PyQt API #2 is the default API for Python 3 and is compatible with PySide. Note that switching to API #2 may require to enable the Matplotlib patch."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:355
+#: spyderlib\plugins\externalconsole.py:337
 msgid "Ignore API change errors (sip.setapi)"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:357
+#: spyderlib\plugins\externalconsole.py:339
 msgid "Enabling this option will ignore <br>errors when changing PyQt API. As PyQt does not support dynamic API changes, it is strongly recommended to use this feature wisely, e.g. for debugging purpose."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:376
+#: spyderlib\plugins\externalconsole.py:358
 msgid "Matplotlib"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:378
+#: spyderlib\plugins\externalconsole.py:360
 msgid "GUI backend:"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:380
+#: spyderlib\plugins\externalconsole.py:362
 msgid "Set the GUI toolkit used by <br>Matplotlib to show figures (default: Qt4Agg)"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:391
+#: spyderlib\plugins\externalconsole.py:373
 msgid "Patch Matplotlib figures"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:393
+#: spyderlib\plugins\externalconsole.py:375
 msgid "Patching Matplotlib library will add a button to customize figure options (Qt4Agg only) and fix some issues."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:413
+#: spyderlib\plugins\externalconsole.py:395
 msgid "Enthought Tool Suite"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:414
+#: spyderlib\plugins\externalconsole.py:396
 msgid "Enthought Tool Suite (ETS) supports PyQt4 (qt4) and wxPython (wx) graphical user interfaces."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:418
+#: spyderlib\plugins\externalconsole.py:400
 msgid "ETS_TOOLKIT:"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:439
+#: spyderlib\plugins\externalconsole.py:421
 msgid "External modules"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:643
+#: spyderlib\plugins\externalconsole.py:610
 msgid "Trying to kill a kernel?"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:644
+#: spyderlib\plugins\externalconsole.py:611
 msgid "You can't close this kernel because it has one or more consoles connected to it.<br><br>You need to close them instead or you can kill the kernel using the button far to the right."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:719
-#: spyderlib\plugins\ipythonconsole.py:729 spyderlib\spyder.py:1241
-#: spyderlib\spyder.py:1259 spyderlib\utils\environ.py:95
+#: spyderlib\plugins\externalconsole.py:686
+#: spyderlib\plugins\ipythonconsole.py:480 spyderlib\spyder.py:1327
+#: spyderlib\spyder.py:1345 spyderlib\utils\environ.py:95
 #: spyderlib\utils\environ.py:108
 msgid "Warning"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:720
+#: spyderlib\plugins\externalconsole.py:687
 msgid "No Python shell is currently selected to run <b>%s</b>.<br><br>Please select or open a new Python interpreter and try again."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:797
+#: spyderlib\plugins\externalconsole.py:764
 msgid ""
 "%s is already running in a separate process.\n"
 "Do you want to kill the process before starting a new one?"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:931
+#: spyderlib\plugins\externalconsole.py:933
 msgid "Kernel"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:951
+#: spyderlib\plugins\externalconsole.py:944
+msgid "Either:<ol><li>Your IPython frontend and kernel versions are <b>incompatible</b> or</li><li>You <b>don't have</b> IPython installed in your external interpreter.</li></ol>In any case, we're sorry but we can't create a console for you."
+msgstr ""
+
+#: spyderlib\plugins\externalconsole.py:968
 msgid "Command Window"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:953
+#: spyderlib\plugins\externalconsole.py:970
 msgid "Terminal"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1072
-msgid "Open a Python &interpreter"
+#: spyderlib\plugins\externalconsole.py:1105
+msgid "Open a &Python console"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1075
+#: spyderlib\plugins\externalconsole.py:1108
 msgid "Open &command prompt"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1076
+#: spyderlib\plugins\externalconsole.py:1109
 msgid "Open a Windows command prompt"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1078
-msgid "Open &terminal"
+#: spyderlib\plugins\externalconsole.py:1111
+msgid "Open a &terminal"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1079
-msgid "Open a terminal window inside Spyder"
+#: spyderlib\plugins\externalconsole.py:1112
+msgid "Open a terminal window"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1200
-#: spyderlib\widgets\projectexplorer.py:334
-msgid " and "
-msgstr ""
-
-#: spyderlib\plugins\externalconsole.py:1205
-msgid "<br><u>Installed version</u>: %s"
-msgstr ""
-
-#: spyderlib\plugins\externalconsole.py:1207
-#: spyderlib\plugins\ipythonconsole.py:60
-#: spyderlib\plugins\ipythonconsole.py:680
-msgid "IPython console"
-msgstr ""
-
-#: spyderlib\plugins\externalconsole.py:1208
-msgid "Unable to open IPython console because no supported IPython version was found.<br><br><u>Supported IPython versions</u>: %s"
-msgstr ""
-
-#: spyderlib\plugins\externalconsole.py:1229
-#: spyderlib\plugins\ipythonconsole.py:749
+#: spyderlib\plugins\externalconsole.py:1266
 msgid "Open an IPython console"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1230
+#: spyderlib\plugins\externalconsole.py:1267
 msgid "The console monitor was disabled: the IPython kernel will be started as expected, but an IPython console will have to be connected manually to the kernel."
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1266
-#: spyderlib\plugins\externalconsole.py:1279
-#: spyderlib\plugins\externalconsole.py:1283
+#: spyderlib\plugins\externalconsole.py:1297
+#: spyderlib\plugins\externalconsole.py:1310
+#: spyderlib\plugins\externalconsole.py:1314
 msgid "UMD"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1267
+#: spyderlib\plugins\externalconsole.py:1298
 msgid ""
 "UMD excluded modules:\n"
 "(example: guidata, guiqwt)"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1280
+#: spyderlib\plugins\externalconsole.py:1311
 msgid ""
 "The following modules are not installed on your machine:\n"
 "%s"
 msgstr ""
 
-#: spyderlib\plugins\externalconsole.py:1284
+#: spyderlib\plugins\externalconsole.py:1315
 msgid "Please note that these changes will be applied only to new Python/IPython interpreters"
 msgstr ""
 
@@ -1497,11 +1447,11 @@ msgstr ""
 msgid "Scroll automatically to last entry"
 msgstr ""
 
-#: spyderlib\plugins\history.py:102 spyderlib\plugins\inspector.py:380
-#: spyderlib\plugins\ipythonconsole.py:486 spyderlib\widgets\editor.py:657
-#: spyderlib\widgets\explorer.py:990
+#: spyderlib\plugins\history.py:102 spyderlib\plugins\inspector.py:433
+#: spyderlib\widgets\editor.py:661 spyderlib\widgets\explorer.py:990
 #: spyderlib\widgets\externalshell\baseshell.py:151
-#: spyderlib\widgets\externalshell\namespacebrowser.py:221
+#: spyderlib\widgets\externalshell\namespacebrowser.py:231
+#: spyderlib\widgets\ipython.py:449
 msgid "Options"
 msgstr ""
 
@@ -1525,146 +1475,191 @@ msgstr ""
 msgid "Maximum entries"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:53
+#: spyderlib\plugins\inspector.py:55
 msgid "Rich text help on the Object Inspector"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:108
+#: spyderlib\plugins\inspector.py:119
 msgid "Plain text font style"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:111
+#: spyderlib\plugins\inspector.py:122
 msgid "Rich text font style"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:113
+#: spyderlib\plugins\inspector.py:125
+msgid "Automatic connections"
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:126
+msgid "The Object Inspector can automatically show an object's help information after a left parenthesis is written next to it. Below you can decide to which plugin you want to connect it to turn on this feature."
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:136
+msgid "Python Console"
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:138
+msgid "IPython Console"
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:151
 msgid "Additional features"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:114
+#: spyderlib\plugins\inspector.py:152
 msgid "Render mathematical equations"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:120
+#: spyderlib\plugins\inspector.py:158
 msgid "This feature requires Sphinx 1.1 or superior."
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:122
+#: spyderlib\plugins\inspector.py:160
 msgid "Sphinx %s is currently installed."
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:281
+#: spyderlib\plugins\inspector.py:334
 msgid "No documentation available"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:320
+#: spyderlib\plugins\inspector.py:373
 msgid "Source"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:335 spyderlib\widgets\dicteditor.py:162
+#: spyderlib\plugins\inspector.py:388 spyderlib\widgets\dicteditor.py:162
 msgid "Object"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:350
+#: spyderlib\plugins\inspector.py:403
 msgid "Plain Text"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:354
+#: spyderlib\plugins\inspector.py:407
 msgid "Show Source"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:358
+#: spyderlib\plugins\inspector.py:411
 msgid "Rich Text"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:368
+#: spyderlib\plugins\inspector.py:421
 msgid "Automatic import"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:423 spyderlib\plugins\inspector.py:804
+#: spyderlib\plugins\inspector.py:476 spyderlib\plugins\inspector.py:885
 msgid "Object inspector"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:765
+#: spyderlib\plugins\inspector.py:599
+msgid "Here you can get help of any object by pressing %s in front of it, either on the Editor or the Console.%sHelp can also be shown automatically after writing a left parenthesis next to an object. You can activate this behavior in %s."
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:605
+msgid "Preferences > Object Inspector"
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:607
+msgid "Usage"
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:613
+msgid "Please consider installing Sphinx to get documentation rendered in rich text."
+msgstr ""
+
+#: spyderlib\plugins\inspector.py:846
 msgid "Lock"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:765
+#: spyderlib\plugins\inspector.py:846
 msgid "Unlock"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:805
+#: spyderlib\plugins\inspector.py:886
 msgid "The following error occured when calling <b>Sphinx %s</b>. <br>Incompatible Sphinx version or doc string decoding failed.<br><br>Error message:<br>%s"
 msgstr ""
 
-#: spyderlib\plugins\inspector.py:853
+#: spyderlib\plugins\inspector.py:930
 msgid "No source code available."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:53
+#: spyderlib\plugins\ipythonconsole.py:52
 msgid "Symbolic mathematics for the IPython Console"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:72
+#: spyderlib\plugins\ipythonconsole.py:59
+#: spyderlib\plugins\ipythonconsole.py:431
+msgid "IPython console"
+msgstr ""
+
+#: spyderlib\plugins\ipythonconsole.py:71
 msgid "Display initial banner"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:73
+#: spyderlib\plugins\ipythonconsole.py:72
 msgid ""
 "This option lets you hide the message shown at\n"
 "the top of the console when it's opened."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:75
+#: spyderlib\plugins\ipythonconsole.py:74
 msgid "Use a completion widget"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:77
+#: spyderlib\plugins\ipythonconsole.py:76
 msgid "Use a widget instead of plain text output for tab completion"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:79
+#: spyderlib\plugins\ipythonconsole.py:78
 msgid "Use a pager to display additional text inside the console"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:81
+#: spyderlib\plugins\ipythonconsole.py:80
 msgid ""
 "Useful if you don't want to fill the console with long help or completion texts.\n"
 "Note: Use the Q key to get out of the pager."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:85
+#: spyderlib\plugins\ipythonconsole.py:84
 msgid "Display balloon tips"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:86
+#: spyderlib\plugins\ipythonconsole.py:85
 msgid "Ask for confirmation before closing"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:108
-msgid "Buffer:  "
+#: spyderlib\plugins\ipythonconsole.py:98
+msgid "Light background"
+msgstr ""
+
+#: spyderlib\plugins\ipythonconsole.py:100
+msgid "Dark background"
 msgstr ""
 
 #: spyderlib\plugins\ipythonconsole.py:110
+msgid "Buffer:  "
+msgstr ""
+
+#: spyderlib\plugins\ipythonconsole.py:112
 msgid ""
 "Set the maximum number of lines of text shown in the\n"
 "console before truncation. Specifying -1 disables it\n"
 "(not recommended!)"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:119
-msgid "Support for graphics (Pylab)"
+#: spyderlib\plugins\ipythonconsole.py:121
+msgid "Support for graphics (Matplotlib)"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:120
+#: spyderlib\plugins\ipythonconsole.py:122
 msgid "Activate support"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:121
-msgid "Automatically load Pylab and NumPy"
+#: spyderlib\plugins\ipythonconsole.py:123
+msgid "Automatically load Pylab and NumPy modules"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:123
+#: spyderlib\plugins\ipythonconsole.py:126
 msgid ""
 "This lets you load graphics support without importing \n"
 "the commands to do plots. Useful to work with other\n"
@@ -1672,300 +1667,259 @@ msgid ""
 "GUIs with Spyder."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:142
+#: spyderlib\plugins\ipythonconsole.py:145
 msgid ""
 "This feature requires the Matplotlib library.\n"
 "It seems you don't have it installed."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:147
+#: spyderlib\plugins\ipythonconsole.py:150
 msgid "Inline"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:148
+#: spyderlib\plugins\ipythonconsole.py:151
 msgid "Automatic"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:149
+#: spyderlib\plugins\ipythonconsole.py:152
 msgid "Graphics backend"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:150
+#: spyderlib\plugins\ipythonconsole.py:153
 msgid "Decide how graphics are going to be displayed in the console. If unsure, please select <b>%s</b> to put graphics inside the console or <b>%s</b> to interact with them (through zooming and panning) in a separate window."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:170
+#: spyderlib\plugins\ipythonconsole.py:173
 msgid "Backend:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:172
+#: spyderlib\plugins\ipythonconsole.py:175
 msgid "This option will be applied the next time a console is opened."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:184
+#: spyderlib\plugins\ipythonconsole.py:187
 msgid "Inline backend"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:185
+#: spyderlib\plugins\ipythonconsole.py:188
 msgid "Decide how to render the figures created by this backend"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:189
+#: spyderlib\plugins\ipythonconsole.py:192
 msgid "Format:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:192
+#: spyderlib\plugins\ipythonconsole.py:195
 msgid "Resolution:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:192
+#: spyderlib\plugins\ipythonconsole.py:195
 msgid "dpi"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:194
+#: spyderlib\plugins\ipythonconsole.py:197
 msgid "Only used when the format is PNG. Default is 72"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:197
+#: spyderlib\plugins\ipythonconsole.py:200
 msgid "Width:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:197
-#: spyderlib\plugins\ipythonconsole.py:201
+#: spyderlib\plugins\ipythonconsole.py:200
+#: spyderlib\plugins\ipythonconsole.py:204
 msgid "inches"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:199
+#: spyderlib\plugins\ipythonconsole.py:202
 msgid "Default is 6"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:201
+#: spyderlib\plugins\ipythonconsole.py:204
 msgid "Height:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:203
+#: spyderlib\plugins\ipythonconsole.py:206
 msgid "Default is 4"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:218
+#: spyderlib\plugins\ipythonconsole.py:221
 msgid "Run code"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:219
+#: spyderlib\plugins\ipythonconsole.py:222
 msgid "You can run several lines of code when a console is started. Please introduce each one separated by commas, for example:<br><i>import os, import sys</i>"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:225
+#: spyderlib\plugins\ipythonconsole.py:228
 msgid "Lines:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:234
+#: spyderlib\plugins\ipythonconsole.py:237
 msgid "Run a file"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:235
+#: spyderlib\plugins\ipythonconsole.py:238
 msgid "You can also run a whole file at startup instead of just some lines (This is similar to have a PYTHONSTARTUP file)."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:239
+#: spyderlib\plugins\ipythonconsole.py:242
 msgid "Use the following file:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:253
+#: spyderlib\plugins\ipythonconsole.py:256
 msgid "Spyder startup"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:254
+#: spyderlib\plugins\ipythonconsole.py:257
 msgid "Open an IPython console at startup"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:262
+#: spyderlib\plugins\ipythonconsole.py:265
 msgid "Greedy completion"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:263
+#: spyderlib\plugins\ipythonconsole.py:266
 msgid "Enable <tt>Tab</tt> completion on elements of lists, results of function calls, etc, <i>without</i> assigning them to a variable.<br>For example, you can get completions on things like <tt>li[0].<Tab></tt> or <tt>ins.meth().<Tab></tt>"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:271
+#: spyderlib\plugins\ipythonconsole.py:274
 msgid "Use the greedy completer"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:282
+#: spyderlib\plugins\ipythonconsole.py:285
 msgid "Autocall"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:283
+#: spyderlib\plugins\ipythonconsole.py:286
 msgid "Autocall makes IPython automatically call any callable object even if you didn't type explicit parentheses.<br>For example, if you type <i>str 43</i> it becomes <i>str(43)</i> automatically."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:290
+#: spyderlib\plugins\ipythonconsole.py:293
 msgid "Smart"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:291
+#: spyderlib\plugins\ipythonconsole.py:294
 msgid "Full"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:292
+#: spyderlib\plugins\ipythonconsole.py:295
 msgid "Off"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:294
+#: spyderlib\plugins\ipythonconsole.py:297
 msgid "Autocall:  "
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:295
+#: spyderlib\plugins\ipythonconsole.py:298
 msgid "On <b>%s</b> mode, Autocall is not applied if there are no arguments after the callable. On <b>%s</b> mode, all callable objects are automatically called (even if no arguments are present)."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:307
+#: spyderlib\plugins\ipythonconsole.py:310
 msgid "Symbolic Mathematics"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:308
+#: spyderlib\plugins\ipythonconsole.py:311
 msgid "Perfom symbolic operations in the console (e.g. integrals, derivatives, vector calculus, etc) and get the outputs in a beautifully printed style."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:313
+#: spyderlib\plugins\ipythonconsole.py:316
 msgid "Use symbolic math"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:314
+#: spyderlib\plugins\ipythonconsole.py:317
 msgid "This option loads the Sympy library to work with.<br>Please refer to its documentation to learn how to use it."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:327
+#: spyderlib\plugins\ipythonconsole.py:330
 msgid ""
 "This feature requires the Sympy library.\n"
 "It seems you don't have it installed."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:332
+#: spyderlib\plugins\ipythonconsole.py:335
 msgid "Prompts"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:333
+#: spyderlib\plugins\ipythonconsole.py:336
 msgid "Modify how Input and Output prompts are shown in the console."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:336
+#: spyderlib\plugins\ipythonconsole.py:339
 msgid "Input prompt:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:338
+#: spyderlib\plugins\ipythonconsole.py:341
 msgid "Default is<br>In [<span class=\"in-prompt-number\">%i</span>]:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:342
+#: spyderlib\plugins\ipythonconsole.py:345
 msgid "Output prompt:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:344
+#: spyderlib\plugins\ipythonconsole.py:347
 msgid "Default is<br>Out[<span class=\"out-prompt-number\">%i</span>]:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:360
+#: spyderlib\plugins\ipythonconsole.py:363
 msgid "Graphics"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:364
+#: spyderlib\plugins\ipythonconsole.py:367
 msgid "Advanced Settings"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:447
-msgid "Interrupt kernel"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:450
-msgid "Restart kernel"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:455
-msgid "Intro to IPython"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:457
-msgid "Quick Reference"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:459
-msgid "Console help"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:461
-#: spyderlib\widgets\internalshell.py:254
-msgid "Help"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:462
-msgid "IPython Help"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:498
-msgid "Inspect current object"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:502
-msgid "Clear line or block"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:506
-msgid "Clear console"
-msgstr ""
-
-#: spyderlib\plugins\ipythonconsole.py:545
-msgid "It seems the kernel died unexpectedly. Use 'Restart kernel' to continue using this console."
+#: spyderlib\plugins\ipythonconsole.py:481
+msgid "No IPython console is currently available to run <b>%s</b>.<br><br>Please open a new one and try again."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:557
-msgid "Kernel process is either remote or unspecified. Cannot interrupt"
+#: spyderlib\plugins\ipythonconsole.py:507
+msgid "Open an &IPython console"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:566
-msgid "Kernel process is either remote or unspecified. Cannot restart."
+#: spyderlib\plugins\ipythonconsole.py:512
+msgid "Connect to an existing kernel"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:730
-msgid "No IPython console is currently available to run <b>%s</b>.<br><br>Please open a new one and try again."
+#: spyderlib\plugins\ipythonconsole.py:513
+msgid "Open a new IPython console connected to an existing kernel"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:754
-msgid "Connect to an existing kernel"
+#: spyderlib\plugins\ipythonconsole.py:672
+msgid "(for example: kernel-3764.json, or simply 3764)"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:756
-msgid "Open a new IPython client connected to an external kernel"
+#: spyderlib\plugins\ipythonconsole.py:674
+#: spyderlib\plugins\ipythonconsole.py:719
+msgid "IPython"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:870
-msgid "(for example: `kernel-3764.json`, or simply `3764`)"
+#: spyderlib\plugins\ipythonconsole.py:675
+msgid "Provide an IPython kernel connection file:"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:872
-#: spyderlib\plugins\ipythonconsole.py:912
-msgid "IPython"
+#: spyderlib\plugins\ipythonconsole.py:720
+msgid "Unable to connect to IPython <b>%s"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:873
-msgid "Provide an IPython kernel connection file:"
+#: spyderlib\plugins\ipythonconsole.py:726
+msgid "Mismatch between kernel and frontend"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:913
-msgid "Unable to connect to IPython kernel <b>`%s`"
+#: spyderlib\plugins\ipythonconsole.py:727
+msgid "Your IPython frontend and kernel versions are <b>incompatible!!</b><br><br>We're sorry but we can't create an IPython console for you."
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:1107
+#: spyderlib\plugins\ipythonconsole.py:952
 msgid ""
 "%s will be closed.\n"
 "Do you want to kill the associated kernel and all of its clients?"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:1153
+#: spyderlib\plugins\ipythonconsole.py:1012
 msgid "Are you sure you want to restart the kernel?"
 msgstr ""
 
-#: spyderlib\plugins\ipythonconsole.py:1155
+#: spyderlib\plugins\ipythonconsole.py:1014
 msgid "Restart kernel?"
 msgstr ""
 
@@ -2062,7 +2016,7 @@ msgid "The following are the default <i>%s</i>. These options may be overriden u
 msgstr ""
 
 #: spyderlib\plugins\runconfig.py:456
-#: spyderlib\widgets\externalshell\pythonshell.py:293
+#: spyderlib\widgets\externalshell\pythonshell.py:297
 msgid "Working directory"
 msgstr ""
 
@@ -2087,7 +2041,7 @@ msgid "Context"
 msgstr ""
 
 #: spyderlib\plugins\shortcuts.py:180 spyderlib\widgets\dicteditor.py:147
-#: spyderlib\widgets\importwizard.py:470
+#: spyderlib\widgets\importwizard.py:480
 msgid "Name"
 msgstr ""
 
@@ -2140,22 +2094,22 @@ msgid "Filter"
 msgstr ""
 
 #: spyderlib\plugins\variableexplorer.py:33
-#: spyderlib\widgets\externalshell\namespacebrowser.py:191
+#: spyderlib\widgets\externalshell\namespacebrowser.py:201
 msgid "Exclude private references"
 msgstr ""
 
 #: spyderlib\plugins\variableexplorer.py:34
-#: spyderlib\widgets\externalshell\namespacebrowser.py:206
+#: spyderlib\widgets\externalshell\namespacebrowser.py:216
 msgid "Exclude capitalized references"
 msgstr ""
 
 #: spyderlib\plugins\variableexplorer.py:35
-#: spyderlib\widgets\externalshell\namespacebrowser.py:199
+#: spyderlib\widgets\externalshell\namespacebrowser.py:209
 msgid "Exclude all-uppercase references"
 msgstr ""
 
 #: spyderlib\plugins\variableexplorer.py:36
-#: spyderlib\widgets\externalshell\namespacebrowser.py:214
+#: spyderlib\widgets\externalshell\namespacebrowser.py:224
 msgid "Exclude unsupported data types"
 msgstr ""
 
@@ -2229,11 +2183,6 @@ msgstr ""
 msgid "the global working directory"
 msgstr ""
 
-#: spyderlib\plugins\workingdirectory.py:82 spyderlib\widgets\explorer.py:613
-#: spyderlib\widgets\explorer.py:620
-msgid "New file"
-msgstr ""
-
 #: spyderlib\plugins\workingdirectory.py:83
 msgid "Files are created in:"
 msgstr ""
@@ -2255,7 +2204,7 @@ msgid "Back"
 msgstr ""
 
 #: spyderlib\plugins\workingdirectory.py:176 spyderlib\widgets\explorer.py:977
-#: spyderlib\widgets\importwizard.py:489
+#: spyderlib\widgets\importwizard.py:499
 msgid "Next"
 msgstr ""
 
@@ -2284,378 +2233,394 @@ msgstr ""
 msgid "Global working directory"
 msgstr ""
 
-#: spyderlib\spyder.py:38
+#: spyderlib\spyder.py:48
 msgid "IPython Console integration"
 msgstr ""
 
-#: spyderlib\spyder.py:247
+#: spyderlib\spyder.py:125 spyderlib\spyder.py:455
+msgid "Initializing..."
+msgstr ""
+
+#: spyderlib\spyder.py:286
 msgid "PyQt4 Reference Guide"
 msgstr ""
 
-#: spyderlib\spyder.py:250
+#: spyderlib\spyder.py:289
 msgid "PyQt4 API Reference"
 msgstr ""
 
-#: spyderlib\spyder.py:252
+#: spyderlib\spyder.py:291
 msgid "Python(x,y)"
 msgstr ""
 
-#: spyderlib\spyder.py:254
+#: spyderlib\spyder.py:293
 msgid "WinPython"
 msgstr ""
 
-#: spyderlib\spyder.py:256
+#: spyderlib\spyder.py:295
 msgid "Numpy and Scipy documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:259 spyderlib\spyder.py:919
+#: spyderlib\spyder.py:297 spyderlib\spyder.py:989
 msgid "Matplotlib documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:293
+#: spyderlib\spyder.py:330
 msgid "Reload last session"
 msgstr ""
 
-#: spyderlib\spyder.py:297
+#: spyderlib\spyder.py:334
 msgid "Load session..."
 msgstr ""
 
-#: spyderlib\spyder.py:300
+#: spyderlib\spyder.py:337
 msgid "Load Spyder session"
 msgstr ""
 
-#: spyderlib\spyder.py:302
+#: spyderlib\spyder.py:339
 msgid "Save session and quit..."
 msgstr ""
 
-#: spyderlib\spyder.py:305
+#: spyderlib\spyder.py:342
 msgid "Save current session and quit application"
 msgstr ""
 
-#: spyderlib\spyder.py:412
-msgid "Initializing..."
-msgstr ""
-
-#: spyderlib\spyder.py:473
+#: spyderlib\spyder.py:516
 msgid "Close current dockwidget"
 msgstr ""
 
-#: spyderlib\spyder.py:479
+#: spyderlib\spyder.py:522
 msgid "&Find text"
 msgstr ""
 
-#: spyderlib\spyder.py:485
+#: spyderlib\spyder.py:528
 msgid "Find &next"
 msgstr ""
 
-#: spyderlib\spyder.py:491
+#: spyderlib\spyder.py:534
 msgid "Find &previous"
 msgstr ""
 
-#: spyderlib\spyder.py:496
+#: spyderlib\spyder.py:539
 msgid "&Replace text"
 msgstr ""
 
-#: spyderlib\spyder.py:511 spyderlib\widgets\sourcecode\codeeditor.py:2219
+#: spyderlib\spyder.py:554 spyderlib\widgets\sourcecode\codeeditor.py:2213
 msgid "Undo"
 msgstr ""
 
-#: spyderlib\spyder.py:513 spyderlib\widgets\sourcecode\codeeditor.py:2222
+#: spyderlib\spyder.py:556 spyderlib\widgets\sourcecode\codeeditor.py:2216
 msgid "Redo"
 msgstr ""
 
-#: spyderlib\spyder.py:514 spyderlib\widgets\arrayeditor.py:327
+#: spyderlib\spyder.py:557 spyderlib\widgets\arrayeditor.py:327
 #: spyderlib\widgets\dicteditor.py:563 spyderlib\widgets\shell.py:121
-#: spyderlib\widgets\sourcecode\codeeditor.py:2228
+#: spyderlib\widgets\sourcecode\codeeditor.py:2222
 msgid "Copy"
 msgstr ""
 
-#: spyderlib\spyder.py:516 spyderlib\widgets\shell.py:117
-#: spyderlib\widgets\sourcecode\codeeditor.py:2225
+#: spyderlib\spyder.py:559 spyderlib\widgets\shell.py:117
+#: spyderlib\widgets\sourcecode\codeeditor.py:2219
 msgid "Cut"
 msgstr ""
 
-#: spyderlib\spyder.py:517 spyderlib\widgets\dicteditor.py:560
+#: spyderlib\spyder.py:560 spyderlib\widgets\dicteditor.py:560
 #: spyderlib\widgets\shell.py:125
-#: spyderlib\widgets\sourcecode\codeeditor.py:2231
+#: spyderlib\widgets\sourcecode\codeeditor.py:2225
 msgid "Paste"
 msgstr ""
 
-#: spyderlib\spyder.py:519 spyderlib\widgets\explorer.py:453
+#: spyderlib\spyder.py:562 spyderlib\widgets\explorer.py:453
 #: spyderlib\widgets\projectexplorer.py:1002 spyderlib\widgets\shell.py:134
-#: spyderlib\widgets\sourcecode\codeeditor.py:2234
+#: spyderlib\widgets\sourcecode\codeeditor.py:2228
 msgid "Delete"
 msgstr ""
 
-#: spyderlib\spyder.py:522 spyderlib\widgets\shell.py:138
-#: spyderlib\widgets\sourcecode\codeeditor.py:2238
+#: spyderlib\spyder.py:565 spyderlib\widgets\shell.py:138
+#: spyderlib\widgets\sourcecode\codeeditor.py:2232
 msgid "Select All"
 msgstr ""
 
-#: spyderlib\spyder.py:570
-msgid "&Interpreters"
+#: spyderlib\spyder.py:614
+msgid "C&onsoles"
 msgstr ""
 
-#: spyderlib\spyder.py:576
+#: spyderlib\spyder.py:620
 msgid "&View"
 msgstr ""
 
-#: spyderlib\spyder.py:584
+#: spyderlib\spyder.py:623
+msgid "&Help"
+msgstr ""
+
+#: spyderlib\spyder.py:628
 msgid "Welcome to Spyder!"
 msgstr ""
 
-#: spyderlib\spyder.py:589
+#: spyderlib\spyder.py:633
 msgid "Pre&ferences"
 msgstr ""
 
-#: spyderlib\spyder.py:595 spyderlib\widgets\pathmanager.py:45
+#: spyderlib\spyder.py:641 spyderlib\widgets\pathmanager.py:45
 #: spyderlib\widgets\projectexplorer.py:593
 msgid "PYTHONPATH manager"
 msgstr ""
 
-#: spyderlib\spyder.py:598
-msgid "Open Spyder path manager"
+#: spyderlib\spyder.py:644
+msgid "Python Path Manager"
 msgstr ""
 
-#: spyderlib\spyder.py:601
+#: spyderlib\spyder.py:647
 msgid "Update module names list"
 msgstr ""
 
-#: spyderlib\spyder.py:604
+#: spyderlib\spyder.py:649
 msgid "Refresh list of module names available in PYTHONPATH"
 msgstr ""
 
-#: spyderlib\spyder.py:610
+#: spyderlib\spyder.py:655
 msgid "Current user environment variables..."
 msgstr ""
 
-#: spyderlib\spyder.py:612
+#: spyderlib\spyder.py:657
 msgid "Show and edit current user environment variables in Windows registry (i.e. for all sessions)"
 msgstr ""
 
-#: spyderlib\spyder.py:619 spyderlib\spyder.py:994
+#: spyderlib\spyder.py:664 spyderlib\spyder.py:1064
 msgid "External Tools"
 msgstr ""
 
-#: spyderlib\spyder.py:623
+#: spyderlib\spyder.py:668
 msgid "Python(x,y) launcher"
 msgstr ""
 
-#: spyderlib\spyder.py:634
+#: spyderlib\spyder.py:679
 msgid "WinPython control panel"
 msgstr ""
 
-#: spyderlib\spyder.py:647
+#: spyderlib\spyder.py:692
 msgid "Qt Designer"
 msgstr ""
 
-#: spyderlib\spyder.py:652
+#: spyderlib\spyder.py:697
 msgid "Qt Linguist"
 msgstr ""
 
-#: spyderlib\spyder.py:658
+#: spyderlib\spyder.py:703
 msgid "Qt examples"
 msgstr ""
 
-#: spyderlib\spyder.py:675
+#: spyderlib\spyder.py:721
 msgid "guidata examples"
 msgstr ""
 
-#: spyderlib\spyder.py:683
+#: spyderlib\spyder.py:729
 msgid "guiqwt examples"
 msgstr ""
 
-#: spyderlib\spyder.py:688
+#: spyderlib\spyder.py:734
 msgid "Sift"
 msgstr ""
 
-#: spyderlib\spyder.py:696
+#: spyderlib\spyder.py:742
 msgid "ViTables"
 msgstr ""
 
-#: spyderlib\spyder.py:710
+#: spyderlib\spyder.py:756
 msgid "Fullscreen mode"
 msgstr ""
 
-#: spyderlib\spyder.py:720
+#: spyderlib\spyder.py:768
 msgid "Main toolbar"
 msgstr ""
 
-#: spyderlib\spyder.py:739
+#: spyderlib\spyder.py:789
 msgid "Loading object inspector..."
 msgstr ""
 
-#: spyderlib\spyder.py:745
+#: spyderlib\spyder.py:796
 msgid "Loading outline explorer..."
 msgstr ""
 
-#: spyderlib\spyder.py:752
+#: spyderlib\spyder.py:804
 msgid "Loading editor..."
 msgstr ""
 
-#: spyderlib\spyder.py:775
+#: spyderlib\spyder.py:829
 msgid "Loading file explorer..."
 msgstr ""
 
-#: spyderlib\spyder.py:781
+#: spyderlib\spyder.py:836
 msgid "Loading history plugin..."
 msgstr ""
 
-#: spyderlib\spyder.py:787
+#: spyderlib\spyder.py:847
 msgid "Loading online help..."
 msgstr ""
 
-#: spyderlib\spyder.py:793
+#: spyderlib\spyder.py:853
 msgid "Loading project explorer..."
 msgstr ""
 
-#: spyderlib\spyder.py:803
+#: spyderlib\spyder.py:864
 msgid "Loading external console..."
 msgstr ""
 
-#: spyderlib\spyder.py:811
+#: spyderlib\spyder.py:873
 msgid "Loading namespace browser..."
 msgstr ""
 
-#: spyderlib\spyder.py:820
+#: spyderlib\spyder.py:880
 msgid "Loading IPython console..."
 msgstr ""
 
-#: spyderlib\spyder.py:831
+#: spyderlib\spyder.py:891
 msgid "Setting up main window..."
 msgstr ""
 
-#: spyderlib\spyder.py:835
+#: spyderlib\spyder.py:895
 msgid "About %s..."
 msgstr ""
 
-#: spyderlib\spyder.py:838
+#: spyderlib\spyder.py:898
 msgid "Optional dependencies..."
 msgstr ""
 
-#: spyderlib\spyder.py:842
+#: spyderlib\spyder.py:901
 msgid "Report issue..."
 msgstr ""
 
-#: spyderlib\spyder.py:863
+#: spyderlib\spyder.py:922
 msgid "Spyder documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:869
+#: spyderlib\spyder.py:928
 msgid "Python documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:875
-msgid "Qt Assistant"
+#: spyderlib\spyder.py:935
+msgid "IPython Help"
+msgstr ""
+
+#: spyderlib\spyder.py:936
+msgid "Intro to IPython"
+msgstr ""
+
+#: spyderlib\spyder.py:938
+msgid "Quick Reference"
+msgstr ""
+
+#: spyderlib\spyder.py:940
+msgid "Console help"
 msgstr ""
 
-#: spyderlib\spyder.py:909
+#: spyderlib\spyder.py:946
+msgid "Qt Help"
+msgstr ""
+
+#: spyderlib\spyder.py:950
+msgid "Web Resources"
+msgstr ""
+
+#: spyderlib\spyder.py:979
 msgid "Python(x,y) documentation folder"
 msgstr ""
 
-#: spyderlib\spyder.py:911
+#: spyderlib\spyder.py:981
 msgid "IPython documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:913
+#: spyderlib\spyder.py:983
 msgid "guidata documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:916
+#: spyderlib\spyder.py:986
 msgid "guiqwt documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:922
+#: spyderlib\spyder.py:992
 msgid "NumPy documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:924
+#: spyderlib\spyder.py:994
 msgid "NumPy reference guide"
 msgstr ""
 
-#: spyderlib\spyder.py:926
+#: spyderlib\spyder.py:996
 msgid "NumPy user guide"
 msgstr ""
 
-#: spyderlib\spyder.py:928
+#: spyderlib\spyder.py:998
 msgid "SciPy documentation"
 msgstr ""
 
-#: spyderlib\spyder.py:935
-msgid "Web Resources"
-msgstr ""
-
-#: spyderlib\spyder.py:956
+#: spyderlib\spyder.py:1026
 msgid "Windows and toolbars"
 msgstr ""
 
-#: spyderlib\spyder.py:960
+#: spyderlib\spyder.py:1030
 msgid "Reset window layout"
 msgstr ""
 
-#: spyderlib\spyder.py:962
+#: spyderlib\spyder.py:1032
 msgid "Custom window layouts"
 msgstr ""
 
-#: spyderlib\spyder.py:968
+#: spyderlib\spyder.py:1038
 msgid "Switch to/from layout %d"
 msgstr ""
 
-#: spyderlib\spyder.py:974
+#: spyderlib\spyder.py:1044
 msgid "Set layout %d"
 msgstr ""
 
-#: spyderlib\spyder.py:984
+#: spyderlib\spyder.py:1054
 msgid "Attached console window (debugging)"
 msgstr ""
 
-#: spyderlib\spyder.py:1242
+#: spyderlib\spyder.py:1328
 msgid ""
 "Window layout will be reset to default settings: this affects window position, size and dockwidgets.\n"
 "Do you want to continue?"
 msgstr ""
 
-#: spyderlib\spyder.py:1260
+#: spyderlib\spyder.py:1346
 msgid "Quick switch layout #%d has not yet been defined."
 msgstr ""
 
-#: spyderlib\spyder.py:1451
+#: spyderlib\spyder.py:1537 spyderlib\spyder.py:1538
 msgid "Maximize current plugin"
 msgstr ""
 
-#: spyderlib\spyder.py:1452
-msgid "Maximize current plugin to fit the whole application window"
-msgstr ""
-
-#: spyderlib\spyder.py:1456
+#: spyderlib\spyder.py:1541
 msgid "Restore current plugin"
 msgstr ""
 
-#: spyderlib\spyder.py:1457
-msgid "Restore current plugin to its original size and position within the application window"
+#: spyderlib\spyder.py:1542
+msgid "Restore plugin to its original size"
 msgstr ""
 
-#: spyderlib\spyder.py:1529
+#: spyderlib\spyder.py:1613
 msgid "(not installed)"
 msgstr ""
 
-#: spyderlib\spyder.py:1547
+#: spyderlib\spyder.py:1631
 msgid "About %s"
 msgstr ""
 
-#: spyderlib\spyder.py:1711
+#: spyderlib\spyder.py:1796
 msgid "Running an external system terminal is not supported on platform %s."
 msgstr ""
 
-#: spyderlib\spyder.py:1910
+#: spyderlib\spyder.py:1997
 msgid "Open session"
 msgstr ""
 
-#: spyderlib\spyder.py:1911 spyderlib\spyder.py:1922
+#: spyderlib\spyder.py:1998 spyderlib\spyder.py:2009
 msgid "Spyder sessions"
 msgstr ""
 
-#: spyderlib\spyder.py:1921
+#: spyderlib\spyder.py:2008
 msgid "Save session"
 msgstr ""
 
@@ -2675,8 +2640,8 @@ msgstr ""
 msgid "If you accept changes, this will modify the current user environment variables directly <b>in Windows registry</b>. Use it with precautions, at your own risks.<br><br>Note that for changes to take effect, you will need to restart the parent process of this application (simply restart Spyder if you have executed it from a Windows shortcut, otherwise restart any application from which you may have executed it, like <i>Python(x,y) Home</i> for example)"
 msgstr ""
 
-#: spyderlib\utils\inspector\sphinxify.py:197
-#: spyderlib\utils\inspector\sphinxify.py:207
+#: spyderlib\utils\inspector\sphinxify.py:203
+#: spyderlib\utils\inspector\sphinxify.py:213
 msgid "It was not possible to generate rich text help for this object.</br>Please see it in plain text."
 msgstr ""
 
@@ -2745,7 +2710,7 @@ msgstr ""
 
 #: spyderlib\widgets\arrayeditor.py:428 spyderlib\widgets\explorer.py:549
 #: spyderlib\widgets\explorer.py:650
-#: spyderlib\widgets\externalshell\pythonshell.py:522
+#: spyderlib\widgets\externalshell\pythonshell.py:527
 #: spyderlib\widgets\externalshell\systemshell.py:93
 msgid "Error"
 msgstr ""
@@ -2807,12 +2772,12 @@ msgid "For performance reasons, changes applied to masked array won't be reflect
 msgstr ""
 
 #: spyderlib\widgets\browser.py:30
-#: spyderlib\widgets\sourcecode\codeeditor.py:2254
+#: spyderlib\widgets\sourcecode\codeeditor.py:2248
 msgid "Zoom out"
 msgstr ""
 
 #: spyderlib\widgets\browser.py:33
-#: spyderlib\widgets\sourcecode\codeeditor.py:2251
+#: spyderlib\widgets\sourcecode\codeeditor.py:2245
 msgid "Zoom in"
 msgstr ""
 
@@ -2851,31 +2816,31 @@ msgid ""
 "then press enter to validate"
 msgstr ""
 
-#: spyderlib\widgets\dependencies.py:59
+#: spyderlib\widgets\dependencies.py:60
 msgid " Required "
 msgstr ""
 
-#: spyderlib\widgets\dependencies.py:59
+#: spyderlib\widgets\dependencies.py:60
 msgid "Module"
 msgstr ""
 
-#: spyderlib\widgets\dependencies.py:60
+#: spyderlib\widgets\dependencies.py:61
 msgid " Installed "
 msgstr ""
 
-#: spyderlib\widgets\dependencies.py:60
+#: spyderlib\widgets\dependencies.py:61
 msgid "Provided features"
 msgstr ""
 
-#: spyderlib\widgets\dependencies.py:126
+#: spyderlib\widgets\dependencies.py:127
 msgid "Optional Dependencies"
 msgstr ""
 
-#: spyderlib\widgets\dependencies.py:131
+#: spyderlib\widgets\dependencies.py:133
 msgid "Spyder depends on several Python modules to provide additional functionality for its plugins. The table below shows the required and installed versions (if any) of all of them.<br><br>Although Spyder can work without any of these modules, it's strongly recommended that at least you try to install <b>%s</b> and <b>%s</b> to have a much better experience."
 msgstr ""
 
-#: spyderlib\widgets\dependencies.py:149
+#: spyderlib\widgets\dependencies.py:148
 msgid "Copy to clipboard"
 msgstr ""
 
@@ -3023,7 +2988,7 @@ msgstr ""
 msgid "Nothing to be imported from clipboard."
 msgstr ""
 
-#: spyderlib\widgets\editor.py:69 spyderlib\widgets\editor.py:553
+#: spyderlib\widgets\editor.py:69 spyderlib\widgets\editor.py:557
 msgid "File list management"
 msgstr ""
 
@@ -3047,83 +3012,83 @@ msgstr ""
 msgid "Hint: press <b>Alt</b> to show accelerators"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:556
+#: spyderlib\widgets\editor.py:560
 msgid "Copy path to clipboard"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1094
+#: spyderlib\widgets\editor.py:1099
 msgid "Temporary file"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1191
+#: spyderlib\widgets\editor.py:1196
 msgid "New window"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1192
+#: spyderlib\widgets\editor.py:1197
 msgid "Create a new editor window"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1195
+#: spyderlib\widgets\editor.py:1200
 msgid "Split vertically"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1197
+#: spyderlib\widgets\editor.py:1202
 msgid "Split vertically this editor window"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1199
+#: spyderlib\widgets\editor.py:1204
 msgid "Split horizontally"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1201
+#: spyderlib\widgets\editor.py:1206
 msgid "Split horizontally this editor window"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1203
+#: spyderlib\widgets\editor.py:1208
 msgid "Close this panel"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1335
+#: spyderlib\widgets\editor.py:1340
 msgid "<b>%s</b> has been modified.<br>Do you want to save changes?"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1398
+#: spyderlib\widgets\editor.py:1403
 msgid "Save"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1399
+#: spyderlib\widgets\editor.py:1404
 msgid "<b>Unable to save script '%s'</b><br><br>Error message:<br>%s"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1421
+#: spyderlib\widgets\editor.py:1426
 msgid "Save Python script"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1642
+#: spyderlib\widgets\editor.py:1647
 msgid "<b>%s</b> is unavailable (this file may have been removed, moved or renamed outside Spyder).<br>Do you want to close it?"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1662
-msgid "<b>%s</b> has been modified outside Spyder.<br>Do you want to reload it and loose all your changes?"
+#: spyderlib\widgets\editor.py:1667
+msgid "<b>%s</b> has been modified outside Spyder.<br>Do you want to reload it and lose all your changes?"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1758
+#: spyderlib\widgets\editor.py:1763
 msgid "All changes to <b>%s</b> will be lost.<br>Do you want to revert file from disk?"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1897
+#: spyderlib\widgets\editor.py:1902
 msgid "Loading %s..."
 msgstr ""
 
-#: spyderlib\widgets\editor.py:1907
+#: spyderlib\widgets\editor.py:1912
 msgid "<b>%s</b> contains mixed end-of-line characters.<br>Spyder will fix this automatically."
 msgstr ""
 
-#: spyderlib\widgets\editor.py:2254
+#: spyderlib\widgets\editor.py:2260
 msgid "Close window"
 msgstr ""
 
-#: spyderlib\widgets\editor.py:2256
+#: spyderlib\widgets\editor.py:2262
 msgid "Close this window"
 msgstr ""
 
@@ -3311,7 +3276,7 @@ msgstr ""
 msgid "Show toolbar"
 msgstr ""
 
-#: spyderlib\widgets\explorer.py:969 spyderlib\widgets\importwizard.py:484
+#: spyderlib\widgets\explorer.py:969 spyderlib\widgets\importwizard.py:494
 msgid "Previous"
 msgstr ""
 
@@ -3348,118 +3313,125 @@ msgstr ""
 msgid "Command line arguments:"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:168
+#: spyderlib\widgets\externalshell\namespacebrowser.py:178
 msgid "Refresh"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:172
+#: spyderlib\widgets\externalshell\namespacebrowser.py:182
 msgid "Refresh periodically"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:176
-#: spyderlib\widgets\externalshell\namespacebrowser.py:415
+#: spyderlib\widgets\externalshell\namespacebrowser.py:186
+#: spyderlib\widgets\externalshell\namespacebrowser.py:435
 msgid "Import data"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:179
-#: spyderlib\widgets\externalshell\namespacebrowser.py:505
-#: spyderlib\widgets\externalshell\namespacebrowser.py:526
+#: spyderlib\widgets\externalshell\namespacebrowser.py:189
+#: spyderlib\widgets\externalshell\namespacebrowser.py:525
+#: spyderlib\widgets\externalshell\namespacebrowser.py:546
 msgid "Save data"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:184
+#: spyderlib\widgets\externalshell\namespacebrowser.py:194
 msgid "Save data as..."
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:192
+#: spyderlib\widgets\externalshell\namespacebrowser.py:202
 msgid "Exclude references which name starts with an underscore"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:200
+#: spyderlib\widgets\externalshell\namespacebrowser.py:210
 msgid "Exclude references which name is uppercase"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:207
+#: spyderlib\widgets\externalshell\namespacebrowser.py:217
 msgid "Exclude references which name starts with an uppercase character"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:215
+#: spyderlib\widgets\externalshell\namespacebrowser.py:225
 msgid "Exclude references to unsupported data types (i.e. which won't be handled/saved correctly)"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:331
+#: spyderlib\widgets\externalshell\namespacebrowser.py:341
 msgid "Object <b>%s</b> is not picklable"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:437
+#: spyderlib\widgets\externalshell\namespacebrowser.py:457
 msgid "<b>Unsupported file extension '%s'</b><br><br>Would you like to import it anyway (by selecting a known file format)?"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:445
+#: spyderlib\widgets\externalshell\namespacebrowser.py:465
 msgid "Open file as:"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:493
+#: spyderlib\widgets\externalshell\namespacebrowser.py:513
 msgid "<b>Unable to load '%s'</b><br><br>Error message:<br>%s"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\namespacebrowser.py:527
+#: spyderlib\widgets\externalshell\namespacebrowser.py:547
 msgid "<b>Unable to save current workspace</b><br><br>Error message:<br>%s"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:266
+#: spyderlib\widgets\externalshell\pythonshell.py:270
 msgid "Variables"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:267
+#: spyderlib\widgets\externalshell\pythonshell.py:271
 msgid "Show/hide global variables explorer"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:271
+#: spyderlib\widgets\externalshell\pythonshell.py:275
 msgid "Terminate"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:272
+#: spyderlib\widgets\externalshell\pythonshell.py:276
 msgid ""
 "Attempts to terminate the process.\n"
 "The process may not exit as a result of clicking this button\n"
 "(it is given the chance to prompt the user for any unsaved files, etc)."
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:284
+#: spyderlib\widgets\externalshell\pythonshell.py:288
 msgid "Interact"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:286
+#: spyderlib\widgets\externalshell\pythonshell.py:290
 msgid "Debug"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:288
-#: spyderlib\widgets\externalshell\pythonshell.py:351
+#: spyderlib\widgets\externalshell\pythonshell.py:292
+#: spyderlib\widgets\externalshell\pythonshell.py:355
 msgid "Arguments..."
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:295
+#: spyderlib\widgets\externalshell\pythonshell.py:299
 msgid "Set current working directory"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:297
+#: spyderlib\widgets\externalshell\pythonshell.py:301
 msgid "Environment variables"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:301
+#: spyderlib\widgets\externalshell\pythonshell.py:305
 msgid "Show sys.path contents"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:347
+#: spyderlib\widgets\externalshell\pythonshell.py:351
 msgid "Arguments: %s"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:349
+#: spyderlib\widgets\externalshell\pythonshell.py:353
 msgid "No argument"
 msgstr ""
 
-#: spyderlib\widgets\externalshell\pythonshell.py:523
+#: spyderlib\widgets\externalshell\pythonshell.py:524
+msgid "The console failed to start! That's all we know :(<br>Please close it and open a new one."
+msgstr ""
+
+#: spyderlib\widgets\externalshell\pythonshell.py:528
+msgid "A Python console failed to start!"
+msgstr ""
+
 #: spyderlib\widgets\externalshell\systemshell.py:94
 msgid "Process failed to start"
 msgstr ""
@@ -3606,130 +3578,174 @@ msgstr ""
 msgid "Replace all"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:104
+#: spyderlib\widgets\importwizard.py:106
 msgid "Import as"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:106
+#: spyderlib\widgets\importwizard.py:108
 msgid "data"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:110
+#: spyderlib\widgets\importwizard.py:112
 msgid "code"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:113 spyderlib\widgets\importwizard.py:459
+#: spyderlib\widgets\importwizard.py:115 spyderlib\widgets\importwizard.py:469
 msgid "text"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:125
+#: spyderlib\widgets\importwizard.py:127
 msgid "Column separator:"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:129
+#: spyderlib\widgets\importwizard.py:131
 msgid "Tab"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:132 spyderlib\widgets\importwizard.py:150
+#: spyderlib\widgets\importwizard.py:134 spyderlib\widgets\importwizard.py:152
 msgid "other"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:143
+#: spyderlib\widgets\importwizard.py:145
 msgid "Row separator:"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:147
+#: spyderlib\widgets\importwizard.py:149
 msgid "EOL"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:163
+#: spyderlib\widgets\importwizard.py:165
 msgid "Additionnal options"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:167
+#: spyderlib\widgets\importwizard.py:169
 msgid "Skip rows:"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:178
+#: spyderlib\widgets\importwizard.py:180
 msgid "Comments:"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:184
+#: spyderlib\widgets\importwizard.py:186
 msgid "Transpose"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:406
+#: spyderlib\widgets\importwizard.py:416
 msgid "Import as array"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:442 spyderlib\widgets\importwizard.py:533
+#: spyderlib\widgets\importwizard.py:452 spyderlib\widgets\importwizard.py:543
 msgid "Import wizard"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:447
+#: spyderlib\widgets\importwizard.py:457
 msgid "Raw text"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:450
+#: spyderlib\widgets\importwizard.py:460
 msgid "variable_name"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:461
+#: spyderlib\widgets\importwizard.py:471
 msgid "table"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:462
+#: spyderlib\widgets\importwizard.py:472
 msgid "Preview"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:478
+#: spyderlib\widgets\importwizard.py:488
 msgid "Cancel"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:493
+#: spyderlib\widgets\importwizard.py:503
 msgid "Done"
 msgstr ""
 
-#: spyderlib\widgets\importwizard.py:534
+#: spyderlib\widgets\importwizard.py:544
 msgid "<b>Unable to proceed to next step</b><br><br>Please check your entries.<br><br>Error message:<br>%s"
 msgstr ""
 
-#: spyderlib\widgets\internalshell.py:247
+#: spyderlib\widgets\internalshell.py:248
 msgid "Help..."
 msgstr ""
 
-#: spyderlib\widgets\internalshell.py:263
-msgid "Shell special commands:"
+#: spyderlib\widgets\internalshell.py:255
+msgid "Help"
 msgstr ""
 
 #: spyderlib\widgets\internalshell.py:264
-msgid "Internal editor:"
+msgid "Shell special commands:"
 msgstr ""
 
 #: spyderlib\widgets\internalshell.py:265
-msgid "External editor:"
+msgid "Internal editor:"
 msgstr ""
 
 #: spyderlib\widgets\internalshell.py:266
-msgid "Run script:"
+msgid "External editor:"
 msgstr ""
 
 #: spyderlib\widgets\internalshell.py:267
-msgid "Remove references:"
+msgid "Run script:"
 msgstr ""
 
 #: spyderlib\widgets\internalshell.py:268
-msgid "System commands:"
+msgid "Remove references:"
 msgstr ""
 
 #: spyderlib\widgets\internalshell.py:269
-msgid "Python help:"
+msgid "System commands:"
 msgstr ""
 
 #: spyderlib\widgets\internalshell.py:270
+msgid "Python help:"
+msgstr ""
+
+#: spyderlib\widgets\internalshell.py:271
 msgid "GUI-based editor:"
 msgstr ""
 
+#: spyderlib\widgets\ipython.py:398
+msgid "An error ocurred while starting the kernel!"
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:426
+msgid "Interrupt kernel"
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:429
+msgid "Restart kernel"
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:461
+msgid "Inspect current object"
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:465
+msgid "Clear line or block"
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:469
+msgid "Clear console"
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:512
+msgid "It seems the kernel died unexpectedly. Use 'Restart kernel' to continue using this console."
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:524
+msgid "Kernel process is either remote or unspecified. Cannot interrupt"
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:533
+msgid "Kernel process is either remote or unspecified. Cannot restart."
+msgstr ""
+
+#: spyderlib\widgets\ipython.py:550
+msgid "Connecting to kernel..."
+msgstr ""
+
 #: spyderlib\widgets\mixins.py:516
 msgid "Documentation"
 msgstr ""
@@ -3810,6 +3826,10 @@ msgstr ""
 msgid "its own configuration file"
 msgstr ""
 
+#: spyderlib\widgets\projectexplorer.py:334
+msgid " and "
+msgstr ""
+
 #: spyderlib\widgets\projectexplorer.py:338
 msgid "the following projects:<br>%s"
 msgstr ""
@@ -4033,19 +4053,19 @@ msgstr ""
 msgid "Line count:"
 msgstr ""
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:1218
+#: spyderlib\widgets\sourcecode\codeeditor.py:1224
 msgid "Breakpoint"
 msgstr ""
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:1219
+#: spyderlib\widgets\sourcecode\codeeditor.py:1225
 msgid "Condition:"
 msgstr ""
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:1667
+#: spyderlib\widgets\sourcecode\codeeditor.py:1661
 msgid "To do"
 msgstr ""
 
-#: spyderlib\widgets\sourcecode\codeeditor.py:2246
+#: spyderlib\widgets\sourcecode\codeeditor.py:2240
 msgid "Go to definition"
 msgstr ""
 
@@ -4085,11 +4105,11 @@ msgstr ""
 msgid "Column:"
 msgstr ""
 
-#: spyderlib\widgets\tabs.py:120
+#: spyderlib\widgets\tabs.py:129
 msgid "Browse tabs"
 msgstr ""
 
-#: spyderlib\widgets\tabs.py:243
+#: spyderlib\widgets\tabs.py:252
 msgid "Close current tab"
 msgstr ""
 
diff --git a/spyderlib/plugins/console.py b/spyderlib/plugins/console.py
index b4d01ff..20a937b 100644
--- a/spyderlib/plugins/console.py
+++ b/spyderlib/plugins/console.py
@@ -40,7 +40,7 @@ class Console(SpyderPluginWidget):
     Console widget
     """
     CONF_SECTION = 'internal_console'
-    def __init__(self, parent=None, namespace=None, commands=[], message="",
+    def __init__(self, parent=None, namespace=None, commands=[], message=None,
                  exitfunc=None, profile=False, multithreaded=False):
         SpyderPluginWidget.__init__(self, parent)
         
@@ -156,7 +156,7 @@ class Console(SpyderPluginWidget):
                             _("Wrap lines"),
                             toggled=self.toggle_wrap_mode)
         wrap_action.setChecked(self.get_option('wrap'))
-        calltips_action = create_action(self, _("Balloon tips"),
+        calltips_action = create_action(self, _("Display balloon tips"),
             toggled=self.toggle_calltips)
         calltips_action.setChecked(self.get_option('calltips'))
         codecompletion_action = create_action(self,
diff --git a/spyderlib/plugins/editor.py b/spyderlib/plugins/editor.py
index 191d21a..987cdca 100644
--- a/spyderlib/plugins/editor.py
+++ b/spyderlib/plugins/editor.py
@@ -161,19 +161,12 @@ class EditorConfigPage(PluginConfigPage):
                                     'codecompletion/show_single')
             comp_enter_box = newcb(_("Enter key selects completion"),
                                    'codecompletion/enter_key')
-            calltips_box = newcb(_("Balloon tips"), 'calltips')
+            calltips_box = newcb(_("Display balloon tips"), 'calltips')
             gotodef_box = newcb(_("Link to object definition"),
                   'go_to_definition',
                   tip=_("If this option is enabled, clicking on an object\n"
                         "name (left-click + Ctrl key) will go this object\n"
                         "definition (if resolved)."))
-            inspector_box = newcb(
-                  _("Automatic notification to object inspector"),
-                  'object_inspector', default=True,
-                  tip=_("If this option is enabled, object inspector\n"
-                        "will automatically show informations on functions\n"
-                        "entered in editor (this is triggered when entering\n"
-                        "a left parenthesis after a valid function name)"))
         else:
             rope_label = QLabel(_("<b>Warning:</b><br>"
                                   "The Python module <i>rope</i> is not "
@@ -269,7 +262,6 @@ class EditorConfigPage(PluginConfigPage):
             introspection_layout.addWidget(show_single_box)
             introspection_layout.addWidget(comp_enter_box)
             introspection_layout.addWidget(gotodef_box)
-            introspection_layout.addWidget(inspector_box)
         else:
             introspection_layout.addWidget(rope_label)
         introspection_group.setLayout(introspection_layout)
@@ -1089,7 +1081,6 @@ class Editor(SpyderPluginWidget):
             ('set_auto_unindent_enabled',           'auto_unindent'),
             ('set_indent_chars',                    'indent_chars'),
             ('set_tab_stop_width',                  'tab_stop_width'),
-            ('set_inspector_enabled',               'object_inspector'),
             ('set_wrap_enabled',                    'wrap'),
             ('set_tabmode_enabled',                 'tab_always_indent'),
             ('set_intelligent_backspace_enabled',   'intelligent_backspace'),
@@ -1103,6 +1094,8 @@ class Editor(SpyderPluginWidget):
                     )
         for method, setting in settings:
             getattr(editorstack, method)(self.get_option(setting))
+        editorstack.set_inspector_enabled(CONF.get('inspector',
+                                                   'connect/editor'))
         color_scheme = get_color_scheme(self.get_option('color_scheme_name'))
         editorstack.set_default_font(self.get_plugin_font(), color_scheme)
         
@@ -2195,8 +2188,8 @@ class Editor(SpyderPluginWidget):
             indent_chars_o = self.get_option(indent_chars_n)
             tab_stop_width_n = 'tab_stop_width'
             tab_stop_width_o = self.get_option(tab_stop_width_n)
-            inspector_n = 'object_inspector'
-            inspector_o = self.get_option(inspector_n)
+            inspector_n = 'connect_to_oi'
+            inspector_o = CONF.get('inspector', 'connect/editor')
             todo_n = 'todo_list'
             todo_o = self.get_option(todo_n)
             pyflakes_n = 'code_analysis/pyflakes'
diff --git a/spyderlib/plugins/externalconsole.py b/spyderlib/plugins/externalconsole.py
index 0f6403b..887c552 100644
--- a/spyderlib/plugins/externalconsole.py
+++ b/spyderlib/plugins/externalconsole.py
@@ -141,14 +141,7 @@ class ExternalConsoleConfigPage(PluginConfigPage):
                                'codecompletion/show_single')
         comp_enter_box = newcb(_("Enter key selects completion"),
                                'codecompletion/enter_key')
-        calltips_box = newcb(_("Balloon tips"), 'calltips')
-        inspector_box = newcb(
-                  _("Automatic notification to object inspector"),
-                  'object_inspector', default=True,
-                  tip=_("If this option is enabled, object inspector\n"
-                        "will automatically show informations on functions\n"
-                        "entered in console (this is triggered when entering\n"
-                        "a left parenthesis after a valid function name)"))
+        calltips_box = newcb(_("Display balloon tips"), 'calltips')
         
         source_layout = QVBoxLayout()
         source_layout.addWidget(completion_box)
@@ -156,7 +149,6 @@ class ExternalConsoleConfigPage(PluginConfigPage):
         source_layout.addWidget(show_single_box)
         source_layout.addWidget(comp_enter_box)
         source_layout.addWidget(calltips_box)
-        source_layout.addWidget(inspector_box)
         source_group.setLayout(source_layout)
 
         # UMD Group
@@ -898,7 +890,7 @@ class ExternalConsole(SpyderPluginWidget):
         if python and self.inspector is not None:
             shellwidget.shell.set_inspector(self.inspector)
             shellwidget.shell.set_inspector_enabled(
-                                            self.get_option('object_inspector'))
+                               CONF.get('inspector', 'connect/python_console'))
         if self.historylog is not None:
             self.historylog.add_history(shellwidget.shell.history_filename)
             self.connect(shellwidget.shell,
@@ -914,6 +906,12 @@ class ExternalConsole(SpyderPluginWidget):
                              self.open_file_in_spyder)
             if fname is None:
                 if ipykernel:
+                    # Connect client to any possible error while starting the
+                    # kernel
+                    ipyclient.connect(shellwidget,
+                              SIGNAL("ipython_kernel_start_error(QString)"),
+                              lambda error: ipyclient.show_kernel_error(error))
+                    
                     # Detect if kernel and frontend match or not
                     if self.get_option('pythonexecutable/custom', False):
                         frontend_ver = programs.get_module_version('IPython')
@@ -940,18 +938,18 @@ class ExternalConsole(SpyderPluginWidget):
                                      lambda cf: self.register_ipyclient(cf,
                                                                   ipyclient,
                                                                   shellwidget))
-                        ipyclient.connect(shellwidget,
-                              SIGNAL("ipython_kernel_start_error(QString)"),
-                              lambda error: ipyclient.show_kernel_error(error))
                     else:
-                        QMessageBox.critical(self,
-                                     _("Mismatch between kernel and frontend"),
-                                     _("Your IPython frontend and kernel "
-                                       "versions are <b>incompatible!!</b>"
-                                       "<br><br>"
-                                       "We're sorry but we can't create an "
-                                       "IPython console for you."
-                                      ), QMessageBox.Ok)
+                        shellwidget.emit(
+                          SIGNAL("ipython_kernel_start_error(QString)"),
+                          _("Either:"
+                            "<ol>"
+                            "<li>Your IPython frontend and kernel versions "
+                            "are <b>incompatible</b> or</li>"
+                            "<li>You <b>don't have</b> IPython installed in "
+                            "your external interpreter.</li>"
+                            "</ol>"
+                            "In any case, we're sorry but we can't create a "
+                            "console for you."))
                         shellwidget.deleteLater()
                         shellwidget = None
                         return
@@ -1200,30 +1198,52 @@ class ExternalConsole(SpyderPluginWidget):
     
     def apply_plugin_settings(self, options):
         """Apply configuration file's plugin settings"""
-        font = self.get_plugin_font()
-        showtime = self.get_option('show_elapsed_time')
-        icontext = self.get_option('show_icontext')
-        calltips = self.get_option('calltips')
-        inspector = self.get_option('object_inspector')
-        wrap = self.get_option('wrap')
-        compauto = self.get_option('codecompletion/auto')
-        case_comp = self.get_option('codecompletion/case_sensitive')
-        show_single = self.get_option('codecompletion/show_single')
-        compenter = self.get_option('codecompletion/enter_key')
-        mlc = self.get_option('max_line_count')
+        font_n = 'plugin_font'
+        font_o = self.get_plugin_font()
+        showtime_n = 'show_elapsed_time'
+        showtime_o = self.get_option(showtime_n)
+        icontext_n = 'show_icontext'
+        icontext_o = self.get_option(icontext_n)
+        calltips_n = 'calltips'
+        calltips_o = self.get_option(calltips_n)
+        inspector_n = 'connect_to_oi'
+        inspector_o = CONF.get('inspector', 'connect/python_console')
+        wrap_n = 'wrap'
+        wrap_o = self.get_option(wrap_n)
+        compauto_n = 'codecompletion/auto'
+        compauto_o = self.get_option(compauto_n)
+        case_comp_n = 'codecompletion/case_sensitive'
+        case_comp_o = self.get_option(case_comp_n)
+        show_single_n = 'codecompletion/show_single'
+        show_single_o = self.get_option(show_single_n)
+        compenter_n = 'codecompletion/enter_key'
+        compenter_o = self.get_option(compenter_n)
+        mlc_n = 'max_line_count'
+        mlc_o = self.get_option(mlc_n)
         for shellwidget in self.shellwidgets:
-            shellwidget.shell.set_font(font)
-            shellwidget.set_elapsed_time_visible(showtime)
-            shellwidget.set_icontext_visible(icontext)
-            shellwidget.shell.set_calltips(calltips)
-            if isinstance(shellwidget.shell, ExternalPythonShell):
-                shellwidget.shell.set_inspector_enabled(inspector)
-            shellwidget.shell.toggle_wrap_mode(wrap)
-            shellwidget.shell.set_codecompletion_auto(compauto)
-            shellwidget.shell.set_codecompletion_case(case_comp)
-            shellwidget.shell.set_codecompletion_single(show_single)
-            shellwidget.shell.set_codecompletion_enter(compenter)
-            shellwidget.shell.setMaximumBlockCount(mlc)
+            if font_n in options:
+                shellwidget.shell.set_font(font_o)
+            if showtime_n in options:
+                shellwidget.set_elapsed_time_visible(showtime_o)
+            if icontext_n in options:
+                shellwidget.set_icontext_visible(icontext_o)
+            if calltips_n in options:
+                shellwidget.shell.set_calltips(calltips_o)
+            if inspector_n in options:
+                if isinstance(shellwidget, ExternalPythonShell):
+                    shellwidget.shell.set_inspector_enabled(inspector_o)
+            if wrap_n in options:
+                shellwidget.shell.toggle_wrap_mode(wrap_o)
+            if compauto_n in options:
+                shellwidget.shell.set_codecompletion_auto(compauto_o)
+            if case_comp_n in options:
+                shellwidget.shell.set_codecompletion_case(case_comp_o)
+            if show_single_n in options:
+                shellwidget.shell.set_codecompletion_single(show_single_o)
+            if compenter_n in options:
+                shellwidget.shell.set_codecompletion_enter(compenter_o)
+            if mlc_n in options:
+                shellwidget.shell.setMaximumBlockCount(mlc_o)
     
     #------ Public API ---------------------------------------------------------
     def open_interpreter_at_startup(self):
diff --git a/spyderlib/plugins/inspector.py b/spyderlib/plugins/inspector.py
index 8ef8c9d..072f454 100644
--- a/spyderlib/plugins/inspector.py
+++ b/spyderlib/plugins/inspector.py
@@ -10,7 +10,7 @@ from spyderlib.qt.QtGui import (QHBoxLayout, QVBoxLayout, QLabel, QSizePolicy,
                                 QMenu, QToolButton, QGroupBox, QFontComboBox,
                                 QActionGroup, QFontDialog, QWidget, QComboBox,
                                 QLineEdit, QMessageBox)
-from spyderlib.qt.QtCore import SIGNAL, QUrl, QTimer, QThread
+from spyderlib.qt.QtCore import SIGNAL, QUrl, QThread
 
 import re
 import os.path as osp
@@ -20,7 +20,7 @@ import sys
 # Local imports
 from spyderlib import dependencies
 from spyderlib.baseconfig import get_conf_path, _
-from spyderlib.ipythonconfig import IPYTHON_QT_MODULE, SUPPORTED_IPYTHON
+from spyderlib.ipythonconfig import IPYTHON_QT_INSTALLED
 from spyderlib.config import CONF
 from spyderlib.guiconfig import get_color_scheme, get_font, set_font
 from spyderlib.utils import programs
@@ -36,7 +36,7 @@ from spyderlib.py3compat import to_text_string, get_meth_class_inst
 
 #XXX: Hardcoded dependency on optional IPython plugin component
 #     that requires the hack to make this work without IPython
-if programs.is_module_installed(IPYTHON_QT_MODULE, SUPPORTED_IPYTHON):
+if IPYTHON_QT_INSTALLED:
     from spyderlib.widgets.ipython import IPythonControlWidget
 else:
     IPythonControlWidget = None  # analysis:ignore
@@ -45,7 +45,8 @@ else:
 if programs.is_module_installed('sphinx', '>=0.6.6'):
     sphinx_version = programs.get_module_version('sphinx')
     from spyderlib.utils.inspector.sphinxify import (CSS_PATH, sphinxify,
-                                                     warning, generate_context)
+                                                     warning, generate_context,
+                                                     usage)
 else:
     sphinxify = sphinx_version = None  # analysis:ignore
 
@@ -67,6 +68,8 @@ class ObjectComboBox(EditableComboBox):
         
     def is_valid(self, qstr=None):
         """Return True if string is valid"""
+        if not self.object_inspector.source_is_console():
+            return True
         if qstr is None:
             qstr = self.currentText()
         if not re.search('^[a-zA-Z0-9_\.]*$', str(qstr), 0):
@@ -90,27 +93,61 @@ class ObjectComboBox(EditableComboBox):
         
     def validate_current_text(self):
         self.validate(self.currentText())
+    
+    def validate(self, qstr, editing=True):
+        """Reimplemented to avoid formatting actions"""
+        valid = self.is_valid(qstr)
+        if self.hasFocus() and valid is not None:
+            if editing:
+                # Combo box text is being modified: invalidate the entry
+                self.show_tip(self.tips[valid])
+                self.emit(SIGNAL('valid(bool)'), False)
+            else:
+                # A new item has just been selected
+                if valid:
+                    self.selected()
+                else:
+                    self.emit(SIGNAL('valid(bool)'), False)
+        else:
+            self.set_default_style()
+
 
 class ObjectInspectorConfigPage(PluginConfigPage):
     def setup_page(self):
-        sourcecode_group = QGroupBox(_("Source code"))
-        wrap_mode_box = self.create_checkbox(_("Wrap lines"), 'wrap')
-        names = CONF.get('color_schemes', 'names')
-        choices = list(zip(names, names))
-        cs_combo = self.create_combobox(_("Syntax color scheme: "),
-                                        choices, 'color_scheme_name')
-
-        sourcecode_layout = QVBoxLayout()
-        sourcecode_layout.addWidget(wrap_mode_box)
-        sourcecode_layout.addWidget(cs_combo)
-        sourcecode_group.setLayout(sourcecode_layout)
-        
+        # Fonts group        
         plain_text_font_group = self.create_fontgroup(option=None,
                                     text=_("Plain text font style"),
                                     fontfilters=QFontComboBox.MonospacedFonts)
         rich_text_font_group = self.create_fontgroup(option='rich_text',
                                 text=_("Rich text font style"))
-                                
+        
+        # Connections group
+        connections_group = QGroupBox(_("Automatic connections"))
+        connections_label = QLabel(_("The Object Inspector can automatically "
+                                     "show an object's help information after "
+                                     "a left parenthesis is written next to it. "
+                                     "Below you can decide to which plugin "
+                                     "you want to connect it to turn on this "
+                                     "feature."))
+        connections_label.setWordWrap(True)
+        editor_box = self.create_checkbox(_("Editor"), 'connect/editor')
+        rope_installed = programs.is_module_installed('rope')
+        editor_box.setEnabled(rope_installed)
+        python_box = self.create_checkbox(_("Python Console"),
+                                          'connect/python_console')
+        ipython_box = self.create_checkbox(_("IPython Console"),
+                                           'connect/ipython_console')
+        ipython_installed = programs.is_module_installed('IPython', '>=0.13')
+        ipython_box.setEnabled(ipython_installed)
+        
+        connections_layout = QVBoxLayout()
+        connections_layout.addWidget(connections_label)
+        connections_layout.addWidget(editor_box)
+        connections_layout.addWidget(python_box)
+        connections_layout.addWidget(ipython_box)
+        connections_group.setLayout(connections_layout)
+        
+        # Features group
         features_group = QGroupBox(_("Additional features"))
         math_box = self.create_checkbox(_("Render mathematical equations"),
                                         'math')
@@ -128,9 +165,24 @@ class ObjectInspectorConfigPage(PluginConfigPage):
         features_layout.addWidget(math_box)
         features_group.setLayout(features_layout)
         
+        # Source code group
+        sourcecode_group = QGroupBox(_("Source code"))
+        wrap_mode_box = self.create_checkbox(_("Wrap lines"), 'wrap')
+        names = CONF.get('color_schemes', 'names')
+        choices = list(zip(names, names))
+        cs_combo = self.create_combobox(_("Syntax color scheme: "),
+                                        choices, 'color_scheme_name')
+
+        sourcecode_layout = QVBoxLayout()
+        sourcecode_layout.addWidget(wrap_mode_box)
+        sourcecode_layout.addWidget(cs_combo)
+        sourcecode_group.setLayout(sourcecode_layout)
+        
+        # Final layout
         vlayout = QVBoxLayout()
         vlayout.addWidget(rich_text_font_group)
         vlayout.addWidget(plain_text_font_group)
+        vlayout.addWidget(connections_group)
         vlayout.addWidget(features_group)
         vlayout.addWidget(sourcecode_group)
         vlayout.addStretch(1)
@@ -178,7 +230,7 @@ class PlainText(QWidget):
         # Read-only editor
         self.editor = codeeditor.CodeEditor(self)
         self.editor.setup_editor(linenumbers=False, language='py',
-                                 scrollflagarea=False)
+                                 scrollflagarea=False, edge_line=False)
         self.connect(self.editor, SIGNAL("focus_changed()"),
                      lambda: self.emit(SIGNAL("focus_changed()")))
         self.editor.setReadOnly(True)
@@ -455,8 +507,9 @@ class ObjectInspector(SpyderPluginWidget):
         """Refresh widget"""
         if self._starting_up:
             self._starting_up = False
-            # TODO: Change this to render a simple intro page
-            self.set_object_text('', force_refresh=False)
+            if sphinxify is not None:
+                self.switch_to_rich_text()
+            self.show_intro_message()
 
     def apply_plugin_settings(self, options):
         """Apply configuration file's plugin settings"""
@@ -464,6 +517,7 @@ class ObjectInspector(SpyderPluginWidget):
         color_scheme_o = get_color_scheme(self.get_option(color_scheme_n))
         font_n = 'plugin_font'
         font_o = self.get_plugin_font()
+        connect_n = 'connect_to_oi'
         rich_font_n = 'rich_text'
         rich_font_o = self.get_plugin_font('rich_text')
         wrap_n = 'wrap'
@@ -471,6 +525,7 @@ class ObjectInspector(SpyderPluginWidget):
         self.wrap_action.setChecked(wrap_o)
         math_n = 'math'
         math_o = self.get_option(math_n)
+        
         if font_n in options:
             scs = color_scheme_o if color_scheme_n in options else None
             self.set_plain_text_font(font_o, color_scheme=scs)
@@ -482,6 +537,12 @@ class ObjectInspector(SpyderPluginWidget):
             self.toggle_wrap_mode(wrap_o)
         if math_n in options:
             self.toggle_math_mode(math_o)
+
+        # To make auto-connection changes take place instantly
+        self.main.editor.apply_plugin_settings(options=[connect_n])
+        self.main.extconsole.apply_plugin_settings(options=[connect_n])
+        if self.main.ipyconsole is not None:
+            self.main.ipyconsole.apply_plugin_settings(options=[connect_n])
         
     #------ Public API (related to inspector's source) -------------------------
     def source_is_console(self):
@@ -533,6 +594,28 @@ class ObjectInspector(SpyderPluginWidget):
                 self.switch_to_rich_text()
             else:
                 self.switch_to_plain_text()
+    
+    def show_intro_message(self):
+        intro_message = _("Here you can get help of any object by pressing "
+                          "%s in front of it, either on the Editor or the "
+                          "Console.%s"
+                          "Help can also be shown automatically after writing "
+                          "a left parenthesis next to an object. You can "
+                          "activate this behavior in %s.")
+        prefs = _("Preferences > Object Inspector")
+        if self.is_rich_text_mode():
+            title = _("Usage")
+            intro_message = intro_message % ("<b>Ctrl+I</b>", "<br><br>",
+                                             "<i>"+prefs+"</i>")
+            self.set_rich_text_html(usage(title, intro_message),
+                                    QUrl.fromLocalFile(CSS_PATH))
+        else:
+            install_sphinx = "\n\n%s" % _("Please consider installing Sphinx "
+                                          "to get documentation rendered in "
+                                          "rich text.")
+            intro_message = intro_message % ("Ctrl+I", "\n\n", prefs)
+            intro_message += install_sphinx
+            self.set_plain_text(intro_message, is_code=False)
         
     #------ Public API (related to rich/plain text widgets) --------------------
     @property
@@ -644,7 +727,6 @@ class ObjectInspector(SpyderPluginWidget):
         """Set object analyzed by Object Inspector"""
         if (self.locked and not force_refresh):
             return
-
         self.switch_to_console_source()
 
         add_to_combo = True
@@ -658,7 +740,8 @@ class ObjectInspector(SpyderPluginWidget):
         
         if add_to_combo:
             self.combo.add_text(text)
-        self.save_history()
+        if found:
+            self.save_history()
         
         if self.dockwidget is not None:
             self.dockwidget.blockSignals(True)
@@ -674,11 +757,9 @@ class ObjectInspector(SpyderPluginWidget):
         if (self.locked and not force_refresh):
             return
         self.switch_to_editor_source()
-        
         self._last_rope_doc = doc
-        
         self.object_edit.setText(doc['obj_text'])
-        
+
         if self.rich_help:
             self.render_sphinx_doc(doc)
         else:
@@ -832,11 +913,7 @@ class ObjectInspector(SpyderPluginWidget):
         
         if self.rich_help:
             self.render_sphinx_doc(doc)
-            if ignore_unknown:
-                return doc is not None
-            else:
-                return True
-        
+            return doc is not None
         elif self.docstring:
             hlp_text = doc
             if hlp_text is None:
@@ -855,6 +932,5 @@ class ObjectInspector(SpyderPluginWidget):
                         return False
             else:
                 is_code = True
-        
         self.set_plain_text(hlp_text, is_code=is_code)
         return True
diff --git a/spyderlib/plugins/ipythonconsole.py b/spyderlib/plugins/ipythonconsole.py
index 457b573..01cbd63 100644
--- a/spyderlib/plugins/ipythonconsole.py
+++ b/spyderlib/plugins/ipythonconsole.py
@@ -37,6 +37,7 @@ except ImportError:
 # Local imports
 from spyderlib import dependencies
 from spyderlib.baseconfig import _
+from spyderlib.config import CONF
 from spyderlib.utils.misc import get_error_match, remove_backslashes
 from spyderlib.utils import programs
 from spyderlib.utils.qthelpers import get_icon, create_action
@@ -83,13 +84,6 @@ class IPythonConsoleConfigPage(PluginConfigPage):
         calltips_box = newcb(_("Display balloon tips"), 'show_calltips')
         ask_box = newcb(_("Ask for confirmation before closing"),
                         'ask_before_closing')
-        inspector_box = newcb(
-                  _("Automatic notification to object inspector"),
-                  'object_inspector', default=True,
-                  tip=_("If this option is enabled, object inspector\n"
-                        "will automatically show informations on functions\n"
-                        "entered in console (this is triggered when entering\n"
-                        "a left parenthesis after a valid function name)"))
 
         interface_layout = QVBoxLayout()
         interface_layout.addWidget(banner_box)
@@ -97,7 +91,6 @@ class IPythonConsoleConfigPage(PluginConfigPage):
         interface_layout.addWidget(pager_box)
         interface_layout.addWidget(calltips_box)
         interface_layout.addWidget(ask_box)
-        interface_layout.addWidget(inspector_box)
         interface_group.setLayout(interface_layout)
 
         # Background Color Group
@@ -492,14 +485,14 @@ class IPythonConsole(SpyderPluginWidget):
     def execute_python_code(self, lines):
         client = self.get_current_client()
         if client is not None:
-            client.ipywidget.execute(to_text_string(lines))
+            client.shellwidget.execute(to_text_string(lines))
             self.activateWindow()
             client.get_control().setFocus()
 
     def write_to_stdin(self, line):
         client = self.get_current_client()
         if client is not None:
-            client.ipywidget.write_to_stdin(line)
+            client.shellwidget.write_to_stdin(line)
 
     def create_new_client(self):
         """Create a new client"""
@@ -584,9 +577,16 @@ class IPythonConsole(SpyderPluginWidget):
     
     def apply_plugin_settings(self, options):
         """Apply configuration file's plugin settings"""
-        font = self.get_plugin_font()
+        font_n = 'plugin_font'
+        font_o = self.get_plugin_font()
+        inspector_n = 'connect_to_oi'
+        inspector_o = CONF.get('inspector', 'connect/ipython_console')
         for client in self.clients:
-            client.set_font(font)
+            control = client.get_control()
+            if font_n in options:
+                client.set_font(font_o)
+            if inspector_n in options and control is not None:
+                control.set_inspector_enabled(inspector_o)
     
     def kernel_and_frontend_match(self, connection_file):
         # Determine kernel version
@@ -621,7 +621,7 @@ class IPythonConsole(SpyderPluginWidget):
         Connect a client to its kernel
         """
         connection_file = client.connection_file
-        widget = client.ipywidget
+        widget = client.shellwidget
         km, kc = self.create_kernel_manager_and_client(connection_file)
         widget.kernel_manager = km
         widget.kernel_client = kc
@@ -801,7 +801,7 @@ class IPythonConsole(SpyderPluginWidget):
     def register_client(self, client, name, restart=False):
         """Register new IPython client"""
         self.connect_client_to_kernel(client)
-        client.show_ipywidget()
+        client.show_shellwidget()
         client.name = name
         
         # If we are restarting the kernel we just need to rename the client tab
@@ -809,9 +809,9 @@ class IPythonConsole(SpyderPluginWidget):
             self.rename_ipyclient_tab(client)
             return
         
-        ipywidget = client.ipywidget
-        control = ipywidget._control
-        page_control = ipywidget._page_control
+        shellwidget = client.shellwidget
+        control = shellwidget._control
+        page_control = shellwidget._page_control
         
         # For tracebacks
         self.connect(control, SIGNAL("go_to_error(QString)"), self.go_to_error)
@@ -822,27 +822,28 @@ class IPythonConsole(SpyderPluginWidget):
         if extconsoles:
             if extconsoles[-1].connection_file == client.connection_file:
                 kernel_widget = extconsoles[-1]
-                ipywidget.custom_interrupt_requested.connect(
+                shellwidget.custom_interrupt_requested.connect(
                                               kernel_widget.keyboard_interrupt)
         if kernel_widget is None:
-            ipywidget.custom_interrupt_requested.connect(
+            shellwidget.custom_interrupt_requested.connect(
                                                       client.interrupt_message)
         
         # Handle kernel restarts asked by the user
         if kernel_widget is not None:
-            ipywidget.custom_restart_requested.connect(
+            shellwidget.custom_restart_requested.connect(
                                  lambda cl=client: self.restart_kernel(client))
         else:
-            ipywidget.custom_restart_requested.connect(client.restart_message)
+            shellwidget.custom_restart_requested.connect(client.restart_message)
         
         # Print a message if kernel dies unexpectedly
-        ipywidget.custom_restart_kernel_died.connect(
+        shellwidget.custom_restart_kernel_died.connect(
                                             lambda t: client.if_kernel_dies(t))
         
         # Connect text widget to our inspector
         if kernel_widget is not None and self.inspector is not None:
             control.set_inspector(self.inspector)
-            control.set_inspector_enabled(self.get_option('object_inspector'))
+            control.set_inspector_enabled(CONF.get('inspector',
+                                                   'connect/ipython_console'))
 
         # Connect to our variable explorer
         if kernel_widget is not None and self.variableexplorer is not None:
@@ -900,11 +901,11 @@ class IPythonConsole(SpyderPluginWidget):
               cl.connection_file == client.connection_file:
                 self.close_console(client=cl)
     
-    def get_ipywidget_by_kernelwidget_id(self, kernel_id):
+    def get_shellwidget_by_kernelwidget_id(self, kernel_id):
         """Return the IPython widget associated to a kernel widget id"""
         for cl in self.clients:
             if cl.kernel_widget_id == kernel_id:
-                return cl.ipywidget
+                return cl.shellwidget
         else:
             raise ValueError("Unknown kernel widget ID %r" % kernel_id)
         
diff --git a/spyderlib/spyder.py b/spyderlib/spyder.py
index 6e85c07..8123b14 100644
--- a/spyderlib/spyder.py
+++ b/spyderlib/spyder.py
@@ -17,7 +17,10 @@ Licensed under the terms of the MIT License
 
 from __future__ import print_function
 
+
+#==============================================================================
 # Stdlib imports
+#==============================================================================
 import atexit
 import errno
 import os
@@ -28,19 +31,24 @@ import shutil
 import sys
 import threading
 
+
+#==============================================================================
 # Keeping a reference to the original sys.exit before patching it
+#==============================================================================
 ORIGINAL_SYS_EXIT = sys.exit
 
+
+#==============================================================================
 # Test if IPython v0.13+ is installed to eventually switch to PyQt API #2
-from spyderlib.utils.programs import is_module_installed
+#==============================================================================
 from spyderlib.baseconfig import _
-from spyderlib.ipythonconfig import IPYTHON_QT_MODULE, SUPPORTED_IPYTHON
+from spyderlib.ipythonconfig import IPYTHON_QT_INSTALLED, SUPPORTED_IPYTHON
 from spyderlib import dependencies
 
 dependencies.add("IPython", _("IPython Console integration"),
                  required_version=SUPPORTED_IPYTHON)
 
-if is_module_installed(IPYTHON_QT_MODULE, SUPPORTED_IPYTHON):
+if IPYTHON_QT_INSTALLED:
     # Importing IPython will eventually set the QT_API environment variable
     import IPython  # analysis:ignore
     if os.environ.get('QT_API', 'pyqt') == 'pyqt':
@@ -56,25 +64,38 @@ if is_module_installed(IPYTHON_QT_MODULE, SUPPORTED_IPYTHON):
             # if no GUI toolkit is installed)
             pass
 
+
+#==============================================================================
 # Check requirements
+#==============================================================================
 from spyderlib import requirements
 requirements.check_path()
 requirements.check_qt()
 
+
+#==============================================================================
 # Windows platforms only: support for hiding the attached console window
+#==============================================================================
 set_attached_console_visible = None
 is_attached_console_visible = None
 if os.name == 'nt':
     from spyderlib.utils.windows import (set_attached_console_visible,
                                          is_attached_console_visible)
 
+
+#==============================================================================
 # Workaround: importing rope.base.project here, otherwise this module can't
 # be imported if Spyder was executed from another folder than spyderlib
+#==============================================================================
 try:
     import rope.base.project  # analysis:ignore
 except ImportError:
     pass
 
+
+#==============================================================================
+# Qt imports
+#==============================================================================
 from spyderlib.qt.QtGui import (QApplication, QMainWindow, QSplashScreen,
                                 QPixmap, QMessageBox, QMenu, QColor, QShortcut,
                                 QKeySequence, QDockWidget, QAction,
@@ -88,40 +109,54 @@ from spyderlib.qt.compat import (from_qvariant, getopenfilename,
 # containing incompatible Qt DLLs versions in PATH):
 from spyderlib.qt import QtSvg  # analysis:ignore
 
-# Local imports
+
+#==============================================================================
+# Initial splash screen to reduce perceived startup time. 
+# It blends with the one of MainWindow (i.e. self.splash) and it's hidden
+# just before that one.
+#==============================================================================
+from spyderlib.baseconfig import _, get_image_path
+SPLASH_APP = QApplication([''])
+SPLASH = QSplashScreen(QPixmap(get_image_path('splash.png'), 'png'))
+SPLASH_FONT = SPLASH.font()
+SPLASH_FONT.setPixelSize(10)
+SPLASH.setFont(SPLASH_FONT)
+SPLASH.show()
+SPLASH.showMessage(_("Initializing..."), Qt.AlignBottom | Qt.AlignCenter | 
+                   Qt.AlignAbsolute, QColor(Qt.white))
+QApplication.processEvents()
+
+
+#==============================================================================
+# Local utility imports
+#==============================================================================
 from spyderlib import __version__, __project_url__, __forum_url__, get_versions
+from spyderlib.baseconfig import (get_conf_path, get_module_data_path,
+                                  get_module_source_path, STDERR, DEBUG, DEV,
+                                  debug_print, TEST, SUBFOLDER)
+from spyderlib.config import CONF, EDIT_EXT, IMPORT_EXT, OPEN_FILES_PORT
+from spyderlib.cli_options import get_options
+from spyderlib.userconfig import NoDefault
 from spyderlib.utils import encoding, programs
+from spyderlib.utils.iofuncs import load_session, save_session, reset_session
+from spyderlib.utils.programs import is_module_installed
+from spyderlib.utils import module_completion
+from spyderlib.utils.misc import select_port
+from spyderlib.py3compat import (PY3, to_text_string, is_text_string, getcwd,
+                                 u, qbytearray_to_str, configparser as cp)
+
+
+#==============================================================================
+# Local gui imports
+#==============================================================================
+# NOTE: Move (if possible) import's of widgets and plugins exactly where they
+# are needed in MainWindow to speed up perceived startup time (i.e. the time
+# from clicking the Spyder icon to showing the splash screen).
 try:
     from spyderlib.utils.environ import WinUserEnvDialog
 except ImportError:
     WinUserEnvDialog = None  # analysis:ignore
-from spyderlib.widgets.pathmanager import PathManager
-from spyderlib.widgets.status import MemoryStatus, CPUStatus
-from spyderlib.plugins.configdialog import (ConfigDialog, MainConfigPage,
-                                            ColorSchemeConfigPage)
-from spyderlib.plugins.shortcuts import ShortcutsConfigPage
-from spyderlib.plugins.runconfig import RunConfigPage
-from spyderlib.plugins.console import Console
-from spyderlib.plugins.workingdirectory import WorkingDirectory
-from spyderlib.plugins.editor import Editor
-from spyderlib.plugins.history import HistoryLog
-from spyderlib.plugins.inspector import ObjectInspector
-try:
-    # Assuming Qt >= v4.4
-    from spyderlib.plugins.onlinehelp import OnlineHelp
-except ImportError:
-    # Qt < v4.4
-    OnlineHelp = None  # analysis:ignore
-from spyderlib.plugins.explorer import Explorer
-from spyderlib.plugins.externalconsole import ExternalConsole
-if is_module_installed(IPYTHON_QT_MODULE, SUPPORTED_IPYTHON):
-    # TODO: add ability for plugins to disable themself if their
-    #       requirements are not met before failing during import
-    from spyderlib.plugins.ipythonconsole import IPythonConsole
-from spyderlib.plugins.variableexplorer import VariableExplorer
-from spyderlib.plugins.findinfiles import FindInFiles
-from spyderlib.plugins.projectexplorer import ProjectExplorer
-from spyderlib.plugins.outlineexplorer import OutlineExplorer
+    
 from spyderlib.utils.qthelpers import (create_action, add_actions, get_icon,
                                        get_std_icon, add_shortcut_to_tooltip,
                                        create_module_bookmark_actions,
@@ -129,31 +164,26 @@ from spyderlib.utils.qthelpers import (create_action, add_actions, get_icon,
                                        create_program_action, DialogManager,
                                        keybinding, qapplication,
                                        create_python_script_action, file_uri)
-from spyderlib.baseconfig import (get_conf_path, _, get_module_data_path,
-                                  get_module_source_path, STDOUT, STDERR,
-                                  DEBUG, DEV, debug_print, get_image_path,
-                                  TEST, SUBFOLDER)
-from spyderlib.config import CONF, EDIT_EXT, IMPORT_EXT, OPEN_FILES_PORT
 from spyderlib.guiconfig import get_shortcut, remove_deprecated_shortcuts
 from spyderlib.otherplugins import get_spyderplugins_mods
-from spyderlib.utils.iofuncs import load_session, save_session, reset_session
-from spyderlib.userconfig import NoDefault
-from spyderlib.utils import module_completion
-from spyderlib.utils.misc import select_port
-from spyderlib.cli_options import get_options
-from spyderlib.py3compat import (PY3, to_text_string, is_text_string, getcwd,
-                                 u, qbytearray_to_str, configparser as cp,
-                                 is_string, is_binary_string)
-from spyderlib.widgets.dependencies import DependenciesDialog
 
 
+#==============================================================================
+# To save and load temp sessions
+#==============================================================================
 TEMP_SESSION_PATH = get_conf_path('temp.session.tar')
 
+
+#==============================================================================
 # Get the cwd before initializing WorkingDirectory, which sets it to the one
 # used in the last session
+#==============================================================================
 CWD = getcwd()
 
 
+#==============================================================================
+# Spyder's main window widgets utilities
+#==============================================================================
 def get_python_doc_path():
     """
     Return Python documentation path
@@ -175,9 +205,6 @@ def get_python_doc_path():
         return file_uri(python_doc)
 
 
-#==============================================================================
-# Spyder's main window widgets utilities
-#==============================================================================
 def get_focus_python_shell():
     """Extract and return Python shell from widget
     Return None if *widget* is not a Python shell (e.g. IPython kernel)"""
@@ -189,6 +216,7 @@ def get_focus_python_shell():
     elif isinstance(widget, ExternalPythonShell):
         return widget.shell
 
+
 def get_focus_widget_properties():
     """Get properties of focus widget
     Returns tuple (widget, properties) where properties is a tuple of
@@ -205,6 +233,9 @@ def get_focus_widget_properties():
     return widget, textedit_properties
 
 
+#==============================================================================
+# Qt Stylesheet for MainWindow
+#==============================================================================
 #TODO: Improve the stylesheet below for separator handles to be visible
 #      (in Qt, these handles are by default not visible on Windows!)
 STYLESHEET="""
@@ -241,6 +272,10 @@ QMainWindow::separator:horizontal {
 }
 """
 
+
+#==============================================================================
+# Main Window
+#==============================================================================
 class MainWindow(QMainWindow):
     """Spyder main window"""
     DOCKOPTIONS = QMainWindow.AllowTabbedDocks|QMainWindow.AllowNestedDocks
@@ -324,6 +359,10 @@ class MainWindow(QMainWindow):
         self.thirdparty_plugins = []
         
         # Preferences
+        from spyderlib.plugins.configdialog import (MainConfigPage,
+                                                    ColorSchemeConfigPage)
+        from spyderlib.plugins.shortcuts import ShortcutsConfigPage
+        from spyderlib.plugins.runconfig import RunConfigPage
         self.general_prefs = [MainConfigPage, ShortcutsConfigPage,
                               ColorSchemeConfigPage, RunConfigPage]
         self.prefs_index = None
@@ -731,6 +770,7 @@ class MainWindow(QMainWindow):
             
             self.debug_print("  ..plugin: internal console")
             # Internal console plugin
+            from spyderlib.plugins.console import Console
             self.console = Console(self, namespace, exitfunc=self.closing,
                                    profile=self.profile,
                                    multithreaded=self.multithreaded,
@@ -740,18 +780,21 @@ class MainWindow(QMainWindow):
             
             self.debug_print("  ..plugin: working directory")
             # Working directory plugin
+            from spyderlib.plugins.workingdirectory import WorkingDirectory
             self.workingdirectory = WorkingDirectory(self, self.init_workdir)
             self.workingdirectory.register_plugin()
         
             # Object inspector plugin
             if CONF.get('inspector', 'enable'):
                 self.set_splash(_("Loading object inspector..."))
+                from spyderlib.plugins.inspector import ObjectInspector
                 self.inspector = ObjectInspector(self)
                 self.inspector.register_plugin()
             
             # Outline explorer widget
             if CONF.get('outline_explorer', 'enable'):
                 self.set_splash(_("Loading outline explorer..."))
+                from spyderlib.plugins.outlineexplorer import OutlineExplorer
                 fullpath_sorting = CONF.get('editor', 'fullpath_sorting', True)
                 self.outlineexplorer = OutlineExplorer(self,
                                             fullpath_sorting=fullpath_sorting)
@@ -759,6 +802,7 @@ class MainWindow(QMainWindow):
             
             # Editor plugin
             self.set_splash(_("Loading editor..."))
+            from spyderlib.plugins.editor import Editor
             self.editor = Editor(self)
             self.editor.register_plugin()
             
@@ -776,22 +820,29 @@ class MainWindow(QMainWindow):
             self.debug_print("  ..widgets")
             # Find in files
             if CONF.get('find_in_files', 'enable'):
+                from spyderlib.plugins.findinfiles import FindInFiles
                 self.findinfiles = FindInFiles(self)
                 self.findinfiles.register_plugin()
             
             # Explorer
             if CONF.get('explorer', 'enable'):
                 self.set_splash(_("Loading file explorer..."))
+                from spyderlib.plugins.explorer import Explorer
                 self.explorer = Explorer(self)
                 self.explorer.register_plugin()
 
             # History log widget
             if CONF.get('historylog', 'enable'):
                 self.set_splash(_("Loading history plugin..."))
+                from spyderlib.plugins.history import HistoryLog
                 self.historylog = HistoryLog(self)
                 self.historylog.register_plugin()
                 
             # Online help widget
+            try:    # Qt >= v4.4
+                from spyderlib.plugins.onlinehelp import OnlineHelp
+            except ImportError:    # Qt < v4.4
+                OnlineHelp = None  # analysis:ignore
             if CONF.get('onlinehelp', 'enable') and OnlineHelp is not None:
                 self.set_splash(_("Loading online help..."))
                 self.onlinehelp = OnlineHelp(self)
@@ -800,6 +851,7 @@ class MainWindow(QMainWindow):
             # Project explorer widget
             if CONF.get('project_explorer', 'enable'):
                 self.set_splash(_("Loading project explorer..."))
+                from spyderlib.plugins.projectexplorer import ProjectExplorer
                 self.projectexplorer = ProjectExplorer(self)
                 self.projectexplorer.register_plugin()
             
@@ -810,6 +862,7 @@ class MainWindow(QMainWindow):
                 os.chdir(self.init_workdir)
         else:
             self.set_splash(_("Loading external console..."))
+        from spyderlib.plugins.externalconsole import ExternalConsole
         self.extconsole = ExternalConsole(self, light_mode=self.light)
         self.extconsole.register_plugin()
         
@@ -818,13 +871,14 @@ class MainWindow(QMainWindow):
             # In light mode, namespace browser is opened inside external console
             # Here, it is opened as an independent plugin, in its own dockwidget
             self.set_splash(_("Loading namespace browser..."))
+            from spyderlib.plugins.variableexplorer import VariableExplorer
             self.variableexplorer = VariableExplorer(self)
             self.variableexplorer.register_plugin()
         
         # IPython console
-        if is_module_installed(IPYTHON_QT_MODULE, SUPPORTED_IPYTHON) and not \
-          self.light:
+        if IPYTHON_QT_INSTALLED and not self.light:
             self.set_splash(_("Loading IPython console..."))
+            from spyderlib.plugins.ipythonconsole import IPythonConsole
             self.ipyconsole = IPythonConsole(self)
             self.ipyconsole.register_plugin()
 
@@ -954,6 +1008,7 @@ class MainWindow(QMainWindow):
             self.help_menu_actions += last_action
             
             # Status bar widgets
+            from spyderlib.widgets.status import MemoryStatus, CPUStatus
             self.mem_status = MemoryStatus(self, status)
             self.cpu_status = CPUStatus(self, status)
             self.apply_statusbar_settings()
@@ -1049,7 +1104,8 @@ class MainWindow(QMainWindow):
         # Window set-up
         self.debug_print("Setting up window...")
         self.setup_layout(default=False)
-            
+        
+        SPLASH.hide()
         self.splash.hide()
         
         # Enabling tear off for all menus except help menu
@@ -1617,6 +1673,7 @@ class MainWindow(QMainWindow):
 
     def show_dependencies(self):
         """Show Spyder's Optional Dependencies dialog box"""
+        from spyderlib.widgets.dependencies import DependenciesDialog
         dlg = DependenciesDialog(None)
         dlg.set_data(dependencies.DEPENDENCIES)
         dlg.show()
@@ -1626,7 +1683,7 @@ class MainWindow(QMainWindow):
         if PY3:
             from urllib.parse import quote
         else:
-            from urllib import quote
+            from urllib import quote     # analysis:ignore
         versions = get_versions()
         # Get Mercurial revision for development version
         revlink = ''
@@ -1809,6 +1866,7 @@ Please provide any additional information below.
         
     def path_manager_callback(self):
         """Spyder path manager"""
+        from spyderlib.widgets.pathmanager import PathManager
         self.remove_path_from_sys_path()
         project_pathlist = self.projectexplorer.get_pythonpath()
         dialog = PathManager(self, self.path, project_pathlist, sync=True)
@@ -1862,6 +1920,7 @@ Please provide any additional information below.
         
     def edit_preferences(self):
         """Edit Spyder preferences"""
+        from spyderlib.plugins.configdialog import ConfigDialog
         dlg = ConfigDialog(self)
         self.connect(dlg, SIGNAL("size_change(QSize)"),
                      lambda s: self.set_prefs_size(s))
@@ -1976,7 +2035,10 @@ Please provide any additional information below.
                 self.emit(SIGNAL('open_external_file(QString)'), fname)
             req.sendall(b' ')
 
-        
+
+#==============================================================================
+# Utilities to create the 'main' function
+#==============================================================================
 def initialize():
     """Initialize Qt, patching sys.exit and eventually setting up ETS"""
     app = qapplication()
@@ -2107,6 +2169,9 @@ def __remove_temp_session():
         os.remove(TEMP_SESSION_PATH)
 
 
+#==============================================================================
+# Main
+#==============================================================================
 def main():
     """Session manager"""
     __remove_temp_session()
@@ -2142,6 +2207,7 @@ def main():
 
     if CONF.get('main', 'crash', False):
         CONF.set('main', 'crash', False)
+        SPLASH.hide()
         QMessageBox.information(None, "Spyder",
             "Spyder crashed during last session.<br><br>"
             "If Spyder does not start at all and <u>before submitting a "
@@ -2183,6 +2249,7 @@ def main():
             traceback.print_exc(file=open('spyder_crash.log', 'w'))            
         if mainwindow is None:
             # An exception occured
+            SPLASH.hide()
             return
         next_session_name = mainwindow.next_session_name
         save_session_name = mainwindow.save_session_name
diff --git a/spyderlib/utils/dochelpers.py b/spyderlib/utils/dochelpers.py
index 286f2c9..a59592a 100644
--- a/spyderlib/utils/dochelpers.py
+++ b/spyderlib/utils/dochelpers.py
@@ -47,7 +47,8 @@ def getobj(txt, last=False):
             return token
     except IndexError:
         return None
-    
+
+
 def getobjdir(obj):
     """
     For standard objects, will simply return dir(obj)
@@ -56,6 +57,7 @@ def getobjdir(obj):
     """
     return [item for item in dir(obj) if is_text_string(item)]
 
+
 def getdoc(obj):
     """
     Return text documentation from an object. This comes in a form of
@@ -118,12 +120,9 @@ def getdoc(obj):
                 doc['name'] = name + ' lambda '
                 doc['argspec'] = doc['argspec'][1:-1] # remove parentheses
         else:
-            # Try to extract the argspec from the first docstring line
-            docstring_lines = doc['docstring'].split("\n")
-            first_line = docstring_lines[0].strip()
-            argspec = getsignaturesfromtext(first_line, '')
+            argspec = getargspecfromtext(doc['docstring'])
             if argspec:
-                doc['argspec'] = argspec[0]
+                doc['argspec'] = argspec
                 # Many scipy and numpy docstrings begin with a function
                 # signature on the first line. This ends up begin redundant
                 # when we are using title and argspec to create the
@@ -133,10 +132,12 @@ def getdoc(obj):
                 # the non-whitespace characters on the first line 
                 # match *exactly* the combined function title 
                 # and argspec we determined above.
-                name_and_argspec = doc['name'] + doc['argspec']
-                if first_line == name_and_argspec:
+                signature = doc['name'] + doc['argspec']
+                docstring_blocks = doc['docstring'].split("\n\n")
+                first_block = docstring_blocks[0].strip()
+                if first_block == signature:
                     doc['docstring'] = doc['docstring'].replace(
-                                              name_and_argspec, '', 1).lstrip()
+                                                     signature, '', 1).lstrip()
             else:
                 doc['argspec'] = '(...)'
         
@@ -146,6 +147,7 @@ def getdoc(obj):
         
     return doc
 
+
 def getsource(obj):
     """Wrapper around inspect.getsource"""
     try:
@@ -161,29 +163,56 @@ def getsource(obj):
     except (TypeError, IOError):
         return
 
-def getsignaturesfromtext(text, objname):
+
+def getsignaturefromtext(text, objname):
     """Get object signatures from text (object documentation)
     Return a list containing a single string in most cases
     Example of multiple signatures: PyQt4 objects"""
-    #FIXME: the following regexp is not working with this example of docstring:
-    # QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection) -> bool QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection) -> bool QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection) -> bool
     if isinstance(text, dict):
         text = text.get('docstring', '')
-    return re.findall(objname+r'\([^\)]+\)', text)
+    # Regexps
+    oneline_re = objname + r'\([^\)].+?(?<=[\w\]\}\'"])\)(?!,)'
+    multiline_re = objname + r'\([^\)]+(?<=[\w\]\}\'"])\)(?!,)'
+    multiline_end_parenleft_re = r'(%s\([^\)]+(\),\n.+)+(?<=[\w\]\}\'"])\))'
+    # Grabbing signatures
+    sigs_1 = re.findall(oneline_re + '|' + multiline_re, text)
+    sigs_2 = [g[0] for g in re.findall(multiline_end_parenleft_re % objname, text)]
+    all_sigs = sigs_1 + sigs_2
+    # The most relevant signature is usually the first one. There could be
+    # others in doctests but those are not so important
+    if all_sigs:
+        return all_sigs[0]
+    else:
+        return ''
+
+
+def getargspecfromtext(text):
+    """
+    Try to get the formatted argspec of a callable from the first block of its
+    docstring
+    
+    This will return something like
+    '(foo, bar, k=1)'
+    """
+    blocks = text.split("\n\n")
+    first_block = blocks[0].strip()
+    return getsignaturefromtext(first_block, '')
+
 
 def getargsfromtext(text, objname):
     """Get arguments from text (object documentation)"""
-    signatures = getsignaturesfromtext(text, objname)
-    if signatures:
-        signature = signatures[0]
+    signature = getsignaturefromtext(text, objname)
+    if signature:
         argtxt = signature[signature.find('(')+1:-1]
         return argtxt.split(',')
 
+
 def getargsfromdoc(obj):
     """Get arguments from object doc"""
     if obj.__doc__ is not None:
         return getargsfromtext(obj.__doc__, obj.__name__)
 
+
 def getargs(obj):
     """Get the names and default values of a function's arguments"""
     if inspect.isfunction(obj) or inspect.isbuiltin(obj):
@@ -222,6 +251,7 @@ def getargs(obj):
             args.remove('self')
     return args
 
+
 def getargtxt(obj, one_arg_per_line=True):
     """
     Get the names and default values of a function's arguments
diff --git a/spyderlib/utils/encoding.py b/spyderlib/utils/encoding.py
index 0c1fee3..0974510 100644
--- a/spyderlib/utils/encoding.py
+++ b/spyderlib/utils/encoding.py
@@ -103,8 +103,8 @@ def get_coding(text):
     @param text text to inspect (string)
     @return coding string
     """
-    for line in to_text_string(text.splitlines()[:2]):
-        result = CODING_RE.search(line)
+    for line in text.splitlines()[:2]:
+        result = CODING_RE.search(to_text_string(line))
         if result:
             return result.group(1)
     return None
@@ -155,14 +155,14 @@ def encode(text, orig_coding):
             return text.encode(coding), coding
         except (UnicodeError, LookupError):
             raise RuntimeError("Incorrect encoding (%s)" % coding)
-    if orig_coding and orig_coding.endswith('-default'):
+    if orig_coding and orig_coding.endswith('-default') or \
+      orig_coding.endswith('-guessed'):
         coding = orig_coding.replace("-default", "")
+        coding = orig_coding.replace("-guessed", "")
         try:
             return text.encode(coding), coding
         except (UnicodeError, LookupError):
             pass
-    if orig_coding == 'utf-8-guessed':
-        return text.encode('utf-8'), 'utf-8'
     
     # Try saving as ASCII
     try:
diff --git a/spyderlib/utils/inspector/js/copy_button.js b/spyderlib/utils/inspector/js/copy_button.js
index 39f181d..6d90f25 100644
--- a/spyderlib/utils/inspector/js/copy_button.js
+++ b/spyderlib/utils/inspector/js/copy_button.js
@@ -29,7 +29,7 @@ $(document).ready(function() {
         'border-color': border_color, 'border-style': border_style,
         'border-width': border_width, 'color': border_color, 'text-size': '75%',
         'font-family': 'monospace', 'padding-left': '0.2em', 'padding-right': '0.2em',
-        'margin-right': '10px'
+        'margin-right': '10px', 'border-top-right-radius': '4px'
     }
 
     // create and add the button to all the code blocks that contain >>>
diff --git a/spyderlib/utils/inspector/sphinxify.py b/spyderlib/utils/inspector/sphinxify.py
index 8844557..6a0e30c 100644
--- a/spyderlib/utils/inspector/sphinxify.py
+++ b/spyderlib/utils/inspector/sphinxify.py
@@ -64,20 +64,26 @@ JQUERY_PATH = get_module_data_path('spyderlib',
 
 def is_sphinx_markup(docstring):
     """Returns whether a string contains Sphinx-style ReST markup."""
-    
     # this could be made much more clever
     return ("`" in docstring or "::" in docstring)
 
 
 def warning(message):
     """Print a warning message on the rich text view"""
-    
     env = Environment()
     env.loader = FileSystemLoader(osp.join(CONFDIR_PATH, 'templates'))
     warning = env.get_template("warning.html")
     return warning.render(css_path=CSS_PATH, text=message)
 
 
+def usage(title, message):
+    """Print a usage message on the rich text view"""
+    env = Environment()
+    env.loader = FileSystemLoader(osp.join(CONFDIR_PATH, 'templates'))
+    warning = env.get_template("usage.html")
+    return warning.render(css_path=CSS_PATH, title=title, text=message)
+
+
 def generate_context(name, argspec, note, math):
     """
     Generate the html_context dictionary for our Sphinx conf file.
diff --git a/spyderlib/utils/inspector/static/css/default.css b/spyderlib/utils/inspector/static/css/default.css
index aefb4cb..4e694f8 100644
--- a/spyderlib/utils/inspector/static/css/default.css
+++ b/spyderlib/utils/inspector/static/css/default.css
@@ -1,7 +1,7 @@
 body {
     background-color: white;
-    color: black;
-    margin: 0px 20px 15px 20px;
+    color: rgb(51, 51, 51);
+    margin: 0px 25px 15px 25px;
 }
 
 /* --- Title style --- */
@@ -11,15 +11,16 @@ div.title h1 {
     background-color: #6487DC;
     background-image: -webkit-gradient(
         linear,
-        left bottom,
-        left top,
-        color-stop(0, #6487DC),
-        color-stop(1, #666EDC)
+        0 0,
+        0 100%,
+        from(#54b4eb),
+        color-stop(60%, #2fa4e7),
+        to(#1d9ce5)
     );
-    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.45);
+    text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.2);
     font-weight: normal;
     padding: 6px 0px 6px 20px;
-    margin: 0px -20px;
+    margin: 0px -25px;
     color: #FFFFFF;
 }
 
@@ -49,12 +50,8 @@ div.metadata {
     padding: 1px;
     background-color: #EEEEEE;
     border: 1px solid #C9C9C9;
-    border-bottom-left-radius: 6px;
-    border-bottom-right-radius: 6px;
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px;
+    border-radius: 6px 6px 6px 6px;
     box-shadow: 1px 1px 7px #CACACA;
-    color: #333333;
 }
 
 div.metadata p {
@@ -63,6 +60,7 @@ div.metadata p {
 
 span.def {
     font-family: monospace;
+    font-size: 90%;
 }
 
 span.argspec-highlight {
@@ -77,22 +75,21 @@ div.docstring {
 }
 
 div.docstring p {
-    padding: 0px 10px 0px;
+    padding: 0px 2px 0px;
 }
 
 /* --- Headers style --- */
 div.section {
-    margin: 20px 0px 0px 0px;
+    margin: 22px 0px 0px 0px;
 }
 
 div.section h2 {
     font-size: 140%;
     font-family: 'Trebuchet MS', sans-serif;
     font-weight: normal;
-    background-color: #F2F2F2;
-    border: 1px solid #CCC;
-    color: #20435C;
-    padding: 4px 0px 4px 8px;
+    border-bottom: 1px solid rgb(238, 238, 238);
+    color: rgb(49, 126, 172);
+    padding: 4px 0px 4px 0px;
 }
 
 div.section h3 {
@@ -105,29 +102,7 @@ dl.docutils {
 }
 
 div.section p {
-    padding: 0px 10px 0px;
-}
-
-#parameters h2, #returns h2, #raises h2 {
-    background-color: #EDE;
-    border: 1px solid #AAA !important;
-    color: #06C;
-}
-
-#see-also h2 {
-    background-color: #ffc;
-    border: transparent;
-    color: black;
-    /*margin-top: 4px;*/
-    margin: 4px 0px 0px 0px;
-    padding: 0px 0px 0px 8px;
-}
-
-#see-also {
-    background-color: #ffc;
-    color: black;
-    padding: 1px;
-    border: 1px solid #FF6 !important;
+    padding: 0px 2px 0px;
 }
 
 #warning {
@@ -138,6 +113,22 @@ div.section p {
     text-align: center;
 }
 
+#doc-warning {
+    margin-top: 30px;
+    width: 45%;
+    margin-left: auto;
+    margin-right: auto;
+    color: rgb(185, 74, 72);
+    background-color: rgb(242, 222, 222);
+    border: 1px solid rgb(238, 211, 215);
+    border-radius: 4px 4px 4px 4px;
+    padding: 15px;
+    text-align: center;
+    font-weight: bold;
+    font-size: 105%;
+}
+
+
 /* --- Lists style --- */
 li p span {
     position: relative;
@@ -159,15 +150,21 @@ table.docutils {
     border-collapse: collapse;
     border-spacing: 0;
     border: #DDDDDD;
-    margin-left: 15px;
-    margin-bottom: 10px;
-    width: 92%;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: 17px;
+    margin-bottom: 17px;
+    width: 90%;
 }
 
 table.docutils td {
     padding: 5px;
 }
 
+table.docutils tr.row-odd {
+    background-color: rgb(249, 249, 249);
+}
+
 /* --- Docutils table headers --- */
 table.docutils th {
     background-color: #EEEEEE;
@@ -180,7 +177,7 @@ table.docutils th {
     font-weight: bold;
     text-align: center;
     padding: 6px 0px 6px 8px;
-    color: navy;
+    color: rgb(65, 65, 65);
 }
 
 /* --- Field-list table style --- */
@@ -207,11 +204,10 @@ table.docutils.field-list th {
 
 /* --- Spacing around example code --- */
 div.highlight pre {
-    padding: 2px 0px 2px 0px;
-    background-color: #EFC;
-    border: 1px solid #AC9;
-    border-left: None;
-    border-right: None;
+    padding: 9px 14px;
+    background-color: rgb(247, 247, 249);
+    border-radius: 4px 4px 4px 4px;
+    border: 1px solid rgb(225, 225, 232);
 }
 
 div.highlight {
@@ -234,20 +230,80 @@ tt {
     padding: 0px 1px;
 }
 
-/* --- Loading style--- */
-div.loading {
-    position: fixed;
-    left: 35%;
-    top: 40%;
+/* ----------- Panels ----------- */
+
+.panel {
+    margin-top: 15px;
+    background-color: #ffffff;
+    border: 1px solid transparent;
+    border-radius: 4px;
+    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.panel-heading {
+    padding: 10px 15px;
+    border-bottom: 1px solid transparent;
+    border-top-right-radius: 3px;
+    border-top-left-radius: 3px;
+}
+
+.panel-title {
+    margin-top: 0;
+    margin-bottom: 0;
+    font-size: 110%;
+    color: rgb(255,255,255);
+}
+
+.panel-body {
+    padding: 15px;
+}
+
+.panel-usage {
+    border-color: #2fa4e7;
+    margin-top: 30px;
+    width: 53%;
+    margin-left: auto;
+    margin-right: auto;
+}
+
+.panel-usage > .panel-heading {
+    color: #ffffff;
+    background-color: #2fa4e7;
+    border-color: #2fa4e7;
+}
+
+
+/* ----------- IPython console styles ----------- */
+
+/* --- Loading --- */
+.loading {
+    position: absolute;
+    margin: -20px 0 0 -95px;
+    width: 180px;
+    height: auto;
+    left: 50%;
+    top: 50%;
     background-color: #EEEEEE;
     border: 1px solid #C9C9C9;
-    border-bottom-left-radius: 6px;
-    border-bottom-right-radius: 6px;
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px;
-    box-shadow: 1px 1px 7px #CACACA;
+    border-radius: 6px;
+    box-shadow: 0px 0px 7px #CACACA;
     color: #333333;
     padding: 12px;
-    font-family: 'Trebuchet MS', sans-serif;
-    font-size: 90%;
+    text-align: center;
+}
+
+/* --- Kernel error messages --- */
+.panel-danger {
+    border-color: #eed3d7;
+}
+
+.panel-danger > .panel-heading {
+    color: #b94a48;
+    background-color: #f2dede;
+    border-color: #eed3d7;
+    background-color: rgb(199, 28, 34);
+}
+
+.panel-danger > .panel-heading > .panel-title {
+    text-align: center;
 }
diff --git a/spyderlib/utils/inspector/templates/warning.html b/spyderlib/utils/inspector/templates/usage.html
similarity index 54%
copy from spyderlib/utils/inspector/templates/warning.html
copy to spyderlib/utils/inspector/templates/usage.html
index b7a3169..32d5314 100644
--- a/spyderlib/utils/inspector/templates/warning.html
+++ b/spyderlib/utils/inspector/templates/usage.html
@@ -1,11 +1,10 @@
 {#
-    warning.html
-    ~~~~~~~~~~~
+    usage.html
+    ~~~~~~~~~~
 
-    A simple page to emit a warning when no docstring text was found for the
-    one a user was looking for
+    A simple page to inform users how to get help on the Object Inspector
 
-    :copyright: Copyright 2012 by the Spyder team.
+    :copyright: Copyright 2013 by the Spyder Development Team.
     :license: MIT license
 #}
 
@@ -20,8 +19,13 @@
 </head>
 
 <body>
-  <div id="warning">
+  <div class="panel panel-usage">
+    <div class="panel-heading">
+      <div class="panel-title">{{title}}</div>
+    </div>
+    <div class="panel-body">
       {{text}}
+    </div>
   </div>
 </body>
 
diff --git a/spyderlib/utils/inspector/templates/warning.html b/spyderlib/utils/inspector/templates/warning.html
index b7a3169..ce5db51 100644
--- a/spyderlib/utils/inspector/templates/warning.html
+++ b/spyderlib/utils/inspector/templates/warning.html
@@ -20,7 +20,7 @@
 </head>
 
 <body>
-  <div id="warning">
+  <div id="doc-warning">
       {{text}}
   </div>
 </body>
diff --git a/spyderlib/utils/qthelpers.py b/spyderlib/utils/qthelpers.py
index 72482d6..c7dc787 100644
--- a/spyderlib/utils/qthelpers.py
+++ b/spyderlib/utils/qthelpers.py
@@ -320,9 +320,15 @@ def create_module_bookmark_actions(parent, bookmarks):
     """
     actions = []
     for key, url, title in bookmarks:
-        if programs.is_module_installed(key):
+        # Create actions for scientific distros only if Spyder is installed
+        # under them
+        create_act = True
+        if key == 'xy' or key == 'winpython':
+            if not programs.is_module_installed(key):
+                create_act = False
+        if create_act:
             act = create_bookmark_action(parent, url, title)
-            actions.append(act)
+        actions.append(act)
     return actions
 
         
diff --git a/spyderlib/widgets/calltip.py b/spyderlib/widgets/calltip.py
new file mode 100644
index 0000000..f3cab6f
--- /dev/null
+++ b/spyderlib/widgets/calltip.py
@@ -0,0 +1,293 @@
+#-----------------------------------------------------------------------------
+# Copyright (c) 2010, IPython Development Team.
+#
+# Distributed under the terms of the Modified BSD License.
+#
+# The full license is in the file COPYING.txt, distributed with IPython.
+#-----------------------------------------------------------------------------
+
+"""
+Calltip widget used only to show signatures
+"""
+
+# Standard library imports
+import re
+from unicodedata import category
+
+# System library imports
+from spyderlib.qt import QtCore, QtGui
+
+
+class CallTipWidget(QtGui.QLabel):
+    """ Shows call tips by parsing the current text of Q[Plain]TextEdit.
+    """
+
+    #--------------------------------------------------------------------------
+    # 'QObject' interface
+    #--------------------------------------------------------------------------
+
+    def __init__(self, text_edit):
+        """ Create a call tip manager that is attached to the specified Qt
+            text edit widget.
+        """
+        assert isinstance(text_edit, (QtGui.QTextEdit, QtGui.QPlainTextEdit))
+        super(CallTipWidget, self).__init__(None, QtCore.Qt.ToolTip)
+        self.app = QtCore.QCoreApplication.instance()
+
+        self._hide_timer = QtCore.QBasicTimer()
+        self._text_edit = text_edit
+
+        self.setFont(text_edit.document().defaultFont())
+        self.setForegroundRole(QtGui.QPalette.ToolTipText)
+        self.setBackgroundRole(QtGui.QPalette.ToolTipBase)
+        self.setPalette(QtGui.QToolTip.palette())
+
+        self.setAlignment(QtCore.Qt.AlignLeft)
+        self.setIndent(1)
+        self.setFrameStyle(QtGui.QFrame.NoFrame)
+        self.setMargin(1 + self.style().pixelMetric(
+                QtGui.QStyle.PM_ToolTipLabelFrameWidth, None, self))
+        self.setWindowOpacity(self.style().styleHint(
+                QtGui.QStyle.SH_ToolTipLabel_Opacity, None, self, None) / 255.0)
+
+    def eventFilter(self, obj, event):
+        """ Reimplemented to hide on certain key presses and on text edit focus
+            changes.
+        """
+        if obj == self._text_edit:
+            etype = event.type()
+
+            if etype == QtCore.QEvent.KeyPress:
+                key = event.key()
+                if key in (QtCore.Qt.Key_Enter, QtCore.Qt.Key_Return,
+                           QtCore.Qt.Key_Down):
+                    self.hide()
+                elif key == QtCore.Qt.Key_Escape:
+                    self.hide()
+                    return True
+
+            elif etype == QtCore.QEvent.FocusOut:
+                self.hide()
+
+            elif etype == QtCore.QEvent.Enter:
+                self._hide_timer.stop()
+
+            elif etype == QtCore.QEvent.Leave:
+                self._leave_event_hide()
+
+        return super(CallTipWidget, self).eventFilter(obj, event)
+
+    def timerEvent(self, event):
+        """ Reimplemented to hide the widget when the hide timer fires.
+        """
+        if event.timerId() == self._hide_timer.timerId():
+            self._hide_timer.stop()
+            self.hide()
+
+    #--------------------------------------------------------------------------
+    # 'QWidget' interface
+    #--------------------------------------------------------------------------
+
+    def enterEvent(self, event):
+        """ Reimplemented to cancel the hide timer.
+        """
+        super(CallTipWidget, self).enterEvent(event)
+        self._hide_timer.stop()
+
+    def hideEvent(self, event):
+        """ Reimplemented to disconnect signal handlers and event filter.
+        """
+        super(CallTipWidget, self).hideEvent(event)
+        self._text_edit.cursorPositionChanged.disconnect(
+            self._cursor_position_changed)
+        self._text_edit.removeEventFilter(self)
+
+    def leaveEvent(self, event):
+        """ Reimplemented to start the hide timer.
+        """
+        super(CallTipWidget, self).leaveEvent(event)
+        self._leave_event_hide()
+    
+    def mousePressEvent(self, event):
+        super(CallTipWidget, self).mousePressEvent(event)
+        self.hide()
+
+    def paintEvent(self, event):
+        """ Reimplemented to paint the background panel.
+        """
+        painter = QtGui.QStylePainter(self)
+        option = QtGui.QStyleOptionFrame()
+        option.initFrom(self)
+        painter.drawPrimitive(QtGui.QStyle.PE_PanelTipLabel, option)
+        painter.end()
+
+        super(CallTipWidget, self).paintEvent(event)
+
+    def setFont(self, font):
+        """ Reimplemented to allow use of this method as a slot.
+        """
+        super(CallTipWidget, self).setFont(font)
+
+    def showEvent(self, event):
+        """ Reimplemented to connect signal handlers and event filter.
+        """
+        super(CallTipWidget, self).showEvent(event)
+        self._text_edit.cursorPositionChanged.connect(
+            self._cursor_position_changed)
+        self._text_edit.installEventFilter(self)
+
+    #--------------------------------------------------------------------------
+    # 'CallTipWidget' interface
+    #--------------------------------------------------------------------------
+
+    def show_call_info(self, point, call_line, doc=None, maxlines=20):
+        """ Attempts to show the specified call line and docstring at the
+            current cursor location. The docstring is possibly truncated for
+            length.
+        """
+        if doc:
+            match = re.match("(?:[^\n]*\n){%i}" % maxlines, doc)
+            if match:
+                doc = doc[:match.end()] + '\n[Documentation continues...]'
+        else:
+            doc = ''
+
+        if doc:
+            doc = '\n\n'.join([call_line, doc])
+        else:
+            doc = call_line
+        return self.show_tip(point, doc)
+
+    def show_tip(self, point, tip):
+        """ Attempts to show the specified tip at the current cursor location.
+        """
+        # Attempt to find the cursor position at which to show the call tip.
+        text_edit = self._text_edit
+        cursor = text_edit.textCursor()
+        search_pos = cursor.position() - 1
+        self._start_position, _ = self._find_parenthesis(search_pos,
+                                                         forward=False)
+        if self._start_position == -1:
+            return False
+
+        # Set the text and resize the widget accordingly.
+        self.setText(tip)
+        self.resize(self.sizeHint())
+
+        # Locate and show the widget. Place the tip below the current line
+        # unless it would be off the screen.  In that case, decide the best
+        # location based trying to minimize the  area that goes off-screen.
+        padding = 3 # Distance in pixels between cursor bounds and tip box.
+        cursor_rect = text_edit.cursorRect(cursor)
+        screen_rect = self.app.desktop().screenGeometry(text_edit)
+        point.setY(point.y() + padding)
+        tip_height = self.size().height()
+        tip_width = self.size().width()
+
+        vertical = 'bottom'
+        horizontal = 'Right'
+        if point.y() + tip_height > screen_rect.height():
+            point_ = text_edit.mapToGlobal(cursor_rect.topRight())
+            # If tip is still off screen, check if point is in top or bottom
+            # half of screen.
+            if point_.y() - tip_height < padding:
+                # If point is in upper half of screen, show tip below it.
+                # otherwise above it.
+                if 2*point.y() < screen_rect.height():
+                    vertical = 'bottom'
+                else:
+                    vertical = 'top'
+            else:
+                vertical = 'top'
+        if point.x() + tip_width > screen_rect.width():
+            point_ = text_edit.mapToGlobal(cursor_rect.topRight())
+            # If tip is still off-screen, check if point is in the right or
+            # left half of the screen.
+            if point_.x() - tip_width < padding:
+                if 2*point.x() < screen_rect.width():
+                    horizontal = 'Right'
+                else:
+                    horizontal = 'Left'
+            else:
+                horizontal = 'Left'
+        pos = getattr(cursor_rect, '%s%s' %(vertical, horizontal))
+        adjusted_point = text_edit.mapToGlobal(pos())
+        if vertical == 'top':
+            point.setY(adjusted_point.y() - tip_height - padding)
+        if horizontal == 'Left':
+            point.setX(adjusted_point.x() - tip_width - padding)
+
+        self.move(point)
+        self.show()
+        return True
+
+    #--------------------------------------------------------------------------
+    # Protected interface
+    #--------------------------------------------------------------------------
+
+    def _find_parenthesis(self, position, forward=True):
+        """ If 'forward' is True (resp. False), proceed forwards
+            (resp. backwards) through the line that contains 'position' until an
+            unmatched closing (resp. opening) parenthesis is found. Returns a
+            tuple containing the position of this parenthesis (or -1 if it is
+            not found) and the number commas (at depth 0) found along the way.
+        """
+        commas = depth = 0
+        document = self._text_edit.document()
+        char = document.characterAt(position)
+        # Search until a match is found or a non-printable character is
+        # encountered.
+        while category(char) != 'Cc' and position > 0:
+            if char == ',' and depth == 0:
+                commas += 1
+            elif char == ')':
+                if forward and depth == 0:
+                    break
+                depth += 1
+            elif char == '(':
+                if not forward and depth == 0:
+                    break
+                depth -= 1
+            position += 1 if forward else -1
+            char = document.characterAt(position)
+        else:
+            position = -1
+        return position, commas
+
+    def _leave_event_hide(self):
+        """ Hides the tooltip after some time has passed (assuming the cursor is
+            not over the tooltip).
+        """
+        if (not self._hide_timer.isActive() and
+            # If Enter events always came after Leave events, we wouldn't need
+            # this check. But on Mac OS, it sometimes happens the other way
+            # around when the tooltip is created.
+            self.app.topLevelAt(QtGui.QCursor.pos()) != self):
+            self._hide_timer.start(300, self)
+
+    def _format_tooltip(self,doc):
+        import textwrap
+
+        # make sure a long argument list does not make
+        # the first row overflow the width of the actual tip body
+        rows = doc.split("\n")
+        # An object which is not a callable has '<no docstring>' as doc
+        if len(rows) == 1:
+            return doc
+        max_text_width = max(80, max([len(x) for x in rows[1:]]))
+        rows= textwrap.wrap(rows[0],max_text_width) + rows[1:]
+        doc = "\n".join(rows)
+        return doc
+
+    #------ Signal handlers ----------------------------------------------------
+
+    def _cursor_position_changed(self):
+        """ Updates the tip based on user cursor movement.
+        """
+        cursor = self._text_edit.textCursor()
+        if cursor.position() <= self._start_position:
+            self.hide()
+        else:
+            position, commas = self._find_parenthesis(self._start_position + 1)
+            if position != -1:
+                self.hide()
diff --git a/spyderlib/widgets/dependencies.py b/spyderlib/widgets/dependencies.py
index baf4dd7..1344501 100644
--- a/spyderlib/widgets/dependencies.py
+++ b/spyderlib/widgets/dependencies.py
@@ -125,7 +125,6 @@ class DependenciesDialog(QDialog):
         QDialog.__init__(self, parent)
         self.setWindowTitle("Spyder %s: %s" % (__version__,
                                                _("Optional Dependencies")))
-        self.setWindowIcon(get_icon('advanced.png'))
         self.setModal(True)
 
         self.view = DependenciesTableView(self, [])
diff --git a/spyderlib/widgets/editor.py b/spyderlib/widgets/editor.py
index 11e3457..4c309c9 100644
--- a/spyderlib/widgets/editor.py
+++ b/spyderlib/widgets/editor.py
@@ -30,7 +30,7 @@ import os.path as osp
 
 # Local imports
 from spyderlib.utils import encoding, sourcecode, programs, codeanalysis
-from spyderlib.utils.dochelpers import getsignaturesfromtext
+from spyderlib.utils.dochelpers import getsignaturefromtext
 from spyderlib.utils.module_completion import (module_completion,
                                                get_preferred_submodules)
 from spyderlib.baseconfig import _, DEBUG, STDOUT, STDERR
@@ -300,8 +300,8 @@ class FileInfo(QObject):
 
         self.connect(editor, SIGNAL('trigger_code_completion(bool)'),
                      self.trigger_code_completion)
-        self.connect(editor, SIGNAL('trigger_calltip_and_doc_rendering(int)'),
-                     self.trigger_calltip_and_doc_rendering)
+        self.connect(editor, SIGNAL('show_object_info(int)'), 
+                     self.show_object_info)
         self.connect(editor, SIGNAL("go_to_definition(int)"),
                      self.go_to_definition)
         
@@ -366,9 +366,9 @@ class FileInfo(QObject):
                                                  automatic)
                 return
         
-    def trigger_calltip_and_doc_rendering(self, position, auto=True):
-        """Trigger calltip and docstring rendering in the Object Inspector"""
-        # auto is True means that trigger_calltip was called automatically,
+    def show_object_info(self, position, auto=True):
+        """Show signature calltip and/or docstring in the Object Inspector"""
+        # auto is True means that this method was called automatically,
         # i.e. the user has just entered an opening parenthesis -- in that 
         # case, we don't want to force the object inspector to be visible, 
         # to avoid polluting the window layout
@@ -380,7 +380,7 @@ class FileInfo(QObject):
         if not helplist:
             return
         obj_fullname = ''
-        signatures = []
+        signature = ''
         cts, doc_text = helplist
         if cts:
             cts = cts.replace('.__init__', '')
@@ -389,12 +389,12 @@ class FileInfo(QObject):
                 obj_fullname = cts[:parpos]
                 obj_name = obj_fullname.split('.')[-1]
                 cts = cts.replace(obj_fullname, obj_name)
-                signatures = [cts]
+                signature = cts
                 if ('()' in cts) or ('(...)' in cts):
                     # Either inspected object has no argument, or it's 
                     # a builtin or an extension -- in this last case 
                     # the following attempt may succeed:
-                    signatures = getsignaturesfromtext(doc_text, obj_name)
+                    signature = getsignaturefromtext(doc_text, obj_name)
         if not obj_fullname:
             obj_fullname = codeeditor.get_primary_at(source_code, offset)
         if obj_fullname and not obj_fullname.startswith('self.') and doc_text:
@@ -404,9 +404,9 @@ class FileInfo(QObject):
                 argspec = doc_text['argspec']
                 note = doc_text['note']
                 doc_text = doc_text['docstring']
-            elif signatures:
-                argspec_st = signatures[0].find('(')
-                argspec = signatures[0][argspec_st:]
+            elif signature:
+                argspec_st = signature.find('(')
+                argspec = signature[argspec_st:]
                 module_end = obj_fullname.rfind('.')
                 module = obj_fullname[:module_end]
                 note = 'Present in %s module' % module
@@ -416,11 +416,12 @@ class FileInfo(QObject):
             self.emit(SIGNAL(
                     "send_to_inspector(QString,QString,QString,QString,bool)"),
                     obj_fullname, argspec, note, doc_text, not auto)
-        if signatures:
-            signatures = ['<b>'+s.replace('(', '(</b>'
-                                          ).replace(')', '<b>)</b>')
-                          for s in signatures]
-            self.editor.show_calltip('Arguments', '<br>'.join(signatures),
+        elif obj_fullname:
+            self.emit(SIGNAL(
+                    "send_to_inspector(QString,QString,QString,QString,bool)"),
+                    obj_fullname, '', '', '', not auto)
+        if signature:
+            self.editor.show_calltip('Arguments', signature, signature=True,
                                      at_position=position)
                     
     def go_to_definition(self, position):
@@ -759,7 +760,8 @@ class EditorStack(QWidget):
             editor = self.get_current_editor()
             position = editor.get_position('cursor')
             finfo = self.get_current_finfo()
-            finfo.trigger_calltip_and_doc_rendering(position, auto=False)
+            self.inspector.switch_to_editor_source()
+            finfo.show_object_info(position, auto=False)
         else:
             text = self.get_current_editor().get_current_object()
             if text:
diff --git a/spyderlib/widgets/externalshell/namespacebrowser.py b/spyderlib/widgets/externalshell/namespacebrowser.py
index d46c197..3da7cb6 100644
--- a/spyderlib/widgets/externalshell/namespacebrowser.py
+++ b/spyderlib/widgets/externalshell/namespacebrowser.py
@@ -392,7 +392,7 @@ class NamespaceBrowser(QWidget):
                   "spyderlib.pyplot.show(); "\
                   "del __fig__, __items__;" % (funcname, name)
         if self.is_ipykernel:
-            self.ipyclient.ipywidget.execute("%%varexp --%s %s" % (funcname,
+            self.ipyclient.shellwidget.execute("%%varexp --%s %s" % (funcname,
                                                                    name))
         else:
             self.shellwidget.send_to_process(command)
@@ -403,14 +403,14 @@ class NamespaceBrowser(QWidget):
                   "__items__ = spyderlib.pyplot.imshow(%s); " \
                   "spyderlib.pyplot.show(); del __fig__, __items__;" % name
         if self.is_ipykernel:
-            self.ipyclient.ipywidget.execute("%%varexp --imshow %s" % name)
+            self.ipyclient.shellwidget.execute("%%varexp --imshow %s" % name)
         else:
             self.shellwidget.send_to_process(command)
         
     def show_image(self, name):
         command = "%s.show()" % name
         if self.is_ipykernel:
-            self.ipyclient.ipywidget.execute(command)
+            self.ipyclient.shellwidget.execute(command)
         else:
             self.shellwidget.send_to_process(command)
         
diff --git a/spyderlib/widgets/externalshell/pythonshell.py b/spyderlib/widgets/externalshell/pythonshell.py
index dce5d43..17f8bc7 100644
--- a/spyderlib/widgets/externalshell/pythonshell.py
+++ b/spyderlib/widgets/externalshell/pythonshell.py
@@ -190,6 +190,7 @@ class ExternalPythonShell(ExternalShellBase):
         self.umd_verbose = umd_verbose
         self.autorefresh_timeout = autorefresh_timeout
         self.autorefresh_state = autorefresh_state
+        self.is_ipykernel = ipykernel
                 
         self.namespacebrowser_button = None
         self.cwd_button = None
@@ -218,7 +219,7 @@ class ExternalPythonShell(ExternalShellBase):
         self.arguments = arguments
         
         self.connection_file = None
-        self.is_ipykernel = ipykernel
+
         if self.is_ipykernel:
             interact = False
             # Running our custom startup script for IPython kernels:
@@ -520,8 +521,8 @@ The process may not exit as a result of clicking this button
         if not running:
             if self.is_ipykernel:
                 self.emit(SIGNAL("ipython_kernel_start_error(QString)"),
-                          _("The console failed to start! Please close it "
-                            "and open a new one."))
+                          _("The console failed to start! That's all we know "
+                            ":(<br>Please close it and open a new one."))
             else:
                 QMessageBox.critical(self, _("Error"),
                                      _("A Python console failed to start!"))
diff --git a/spyderlib/widgets/externalshell/sitecustomize.py b/spyderlib/widgets/externalshell/sitecustomize.py
index b153c60..dd93ebc 100644
--- a/spyderlib/widgets/externalshell/sitecustomize.py
+++ b/spyderlib/widgets/externalshell/sitecustomize.py
@@ -44,8 +44,8 @@ except ImportError:
     import builtins
     basestring = (str,)
     def execfile(filename, namespace):
-        exec(compile(open(filename).read(), filename, 'exec'), namespace)
-
+        # Open a source file correctly, whatever its encoding is
+        exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
 
 # Colorization of sys.stderr (standard Python interpreter)
 if os.environ.get("COLORIZE_SYS_STDERR", "").lower() == "true":
diff --git a/spyderlib/widgets/figureoptions.py b/spyderlib/widgets/figureoptions.py
index 795975c..e28c062 100644
--- a/spyderlib/widgets/figureoptions.py
+++ b/spyderlib/widgets/figureoptions.py
@@ -130,7 +130,8 @@ def figure_edit(axes, parent=None):
             linedict[label] = line
         curves = []
         linestyles = sorted(LINESTYLES.items())
-        markers = sorted(list(MARKERS.items()), key=lambda (k, v): (v, k))
+        markers = sorted(list(MARKERS.items()),
+                         key=lambda k_v: (k_v[1], k_v[0]))
         curvelabels = sorted(linedict.keys())
         for label in curvelabels:
             line = linedict[label]
diff --git a/spyderlib/widgets/internalshell.py b/spyderlib/widgets/internalshell.py
index 7f595cb..0319f91 100644
--- a/spyderlib/widgets/internalshell.py
+++ b/spyderlib/widgets/internalshell.py
@@ -43,10 +43,12 @@ from spyderlib.py3compat import to_text_string, getcwd, to_binary_string, u
 
 def create_banner(message):
     """Create internal shell banner"""
-    versions = get_versions()
-    return 'Spyder %s internal shell on Python %s %dbits [%s]\n%s'\
-           % (versions['spyder'], versions['python'], versions['bitness'],
-              versions['system'], message)
+    if message is None:
+        versions = get_versions()
+        return 'Python %s %dbits [%s]'\
+               % (versions['python'], versions['bitness'], versions['system'])
+    else:
+        return message
 
 
 class SysOutput(QObject):
@@ -105,7 +107,7 @@ class WidgetProxy(QObject):
 
 class InternalShell(PythonShellWidget):
     """Shell base widget: link between PythonShellWidget and Interpreter"""
-    def __init__(self, parent=None, namespace=None, commands=[], message="",
+    def __init__(self, parent=None, namespace=None, commands=[], message=None,
                  max_line_count=300, font=None, exitfunc=None, profile=False,
                  multithreaded=True, light_background=True):
         PythonShellWidget.__init__(self, parent,
diff --git a/spyderlib/widgets/ipython.py b/spyderlib/widgets/ipython.py
index 0056791..49b4bb3 100644
--- a/spyderlib/widgets/ipython.py
+++ b/spyderlib/widgets/ipython.py
@@ -7,6 +7,8 @@
 """
 IPython v0.13+ client's widget
 """
+# Fix for Issue 1356
+from __future__ import absolute_import
 
 # Stdlib imports
 import os
@@ -19,30 +21,34 @@ from spyderlib.qt.QtGui import (QTextEdit, QKeySequence, QShortcut, QWidget,
                                 QMenu, QHBoxLayout, QToolButton, QVBoxLayout,
                                 QMessageBox)
 from spyderlib.qt.QtCore import SIGNAL, Qt
-from spyderlib.utils.qthelpers import restore_keyevent
 
 # IPython imports
 try:  # 1.0
     from IPython.qt.console.rich_ipython_widget import RichIPythonWidget
 except ImportError: # 0.13
     from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget
+from IPython.core.oinspect import call_tip
 
 # Local imports
 from spyderlib.baseconfig import (get_conf_path, get_image_path,
                                   get_module_source_path, _)
 from spyderlib.config import CONF
+from spyderlib.guiconfig import get_font
+from spyderlib.utils.dochelpers import getargspecfromtext, getsignaturefromtext
 from spyderlib.utils.qthelpers import (get_std_icon, create_toolbutton,
-                                       add_actions, create_action, get_icon)
+                                       add_actions, create_action, get_icon,
+                                       restore_keyevent)
 from spyderlib.utils import programs
+from spyderlib.widgets.browser import WebView
+from spyderlib.widgets.calltip import CallTipWidget
 from spyderlib.widgets.mixins import (BaseEditMixin, InspectObjectMixin,
                                       SaveHistoryMixin, TracebackLinksMixin)
-from spyderlib.widgets.browser import WebView
 
 #-----------------------------------------------------------------------------
 # Templates
 #-----------------------------------------------------------------------------
-# Using the same css file from the Object Inspector (because we are
-# sharing the same rules)
+# Using the same css file from the Object Inspector for now. Maybe
+# later it'll be a good idea to create a new one.
 OI_UTILS_PATH = get_module_source_path('spyderlib', osp.join('utils',
                                                              'inspector'))
 CSS_PATH = osp.join(OI_UTILS_PATH, 'static', 'css')
@@ -76,8 +82,14 @@ r"""<html>
     <link rel="stylesheet" href="file:///${css_path}/default.css" type="text/css"/>
 </head>
 <body>
-  <div id="warning">${message}</div>
-  <div class="metadata"><p><tt>${error}</tt></p></div>
+  <div class="panel panel-danger">
+    <div class="panel-heading">
+      <div class="panel-title">${message}</div>
+    </div>
+    <div class="panel-body">
+      ${error}
+    </div>
+  </div>
 </body>
 </html>
 """
@@ -97,8 +109,10 @@ class IPythonControlWidget(TracebackLinksMixin, InspectObjectMixin, QTextEdit,
         BaseEditMixin.__init__(self)
         TracebackLinksMixin.__init__(self)
         InspectObjectMixin.__init__(self)
-        self.calltips = False        # To not use Spyder calltips
         self.found_results = []
+        self.signature_widget = CallTipWidget(self)
+        # To not use Spyder calltips obtained through the monitor
+        self.calltips = False
     
     def showEvent(self, event):
         """Reimplement Qt Method"""
@@ -111,7 +125,7 @@ class IPythonControlWidget(TracebackLinksMixin, InspectObjectMixin, QTextEdit,
         if self.get_current_line_to_cursor():
             last_obj = self.get_last_obj()
             if last_obj and not last_obj.isdigit():
-                self.show_docstring(last_obj)
+                self.show_object_info(last_obj)
         self.insert_text(text)
     
     def keyPressEvent(self, event):
@@ -171,12 +185,13 @@ class IPythonPageControlWidget(QTextEdit, BaseEditMixin):
         self.emit(SIGNAL('focus_changed()'))
         return super(IPythonPageControlWidget, self).focusOutEvent(event)
 
+
 #-----------------------------------------------------------------------------
 # Shell widget
 #-----------------------------------------------------------------------------
-class SpyderIPythonWidget(RichIPythonWidget):
+class IPythonShellWidget(RichIPythonWidget):
     """
-    Spyder's IPython widget
+    Spyder's IPython shell widget
 
     This class has custom control and page_control widgets, additional methods
     to provide missing functionality and a couple more keyboard shortcuts.
@@ -185,7 +200,7 @@ class SpyderIPythonWidget(RichIPythonWidget):
         # To override the Qt widget used by RichIPythonWidget
         self.custom_control = IPythonControlWidget
         self.custom_page_control = IPythonPageControlWidget
-        super(SpyderIPythonWidget, self).__init__(*args, **kw)
+        super(IPythonShellWidget, self).__init__(*args, **kw)
         self.set_background_color()
         
         # --- Spyder variables ---
@@ -271,7 +286,7 @@ These commands were executed:
     #---- IPython private methods ---------------------------------------------
     def _context_menu_make(self, pos):
         """Reimplement the IPython context menu"""
-        menu = super(SpyderIPythonWidget, self)._context_menu_make(pos)
+        menu = super(IPythonShellWidget, self)._context_menu_make(pos)
         return self.ipyclient.add_actions_to_context_menu(menu)
     
     def _banner_default(self):
@@ -285,36 +300,67 @@ These commands were executed:
         else:
             return ''
     
+    def _handle_object_info_reply(self, rep):
+        """
+        Reimplement call tips to only show signatures, using the same style
+        from our Editor and External Console too.
+        """
+        self.log.debug("oinfo: %s", rep.get('content', ''))
+        cursor = self._get_cursor()
+        info = self._request_info.get('call_tip')
+        if info and info.id == rep['parent_header']['msg_id'] and \
+                info.pos == cursor.position():
+            # Get the information for a call tip.  For now we format the call
+            # line as string, later we can pass False to format_call and
+            # syntax-highlight it ourselves for nicer formatting in the
+            # calltip.
+            content = rep['content']
+            # if this is from pykernel, 'docstring' will be the only key
+            if content.get('ismagic', False):
+                # Don't generate a call-tip for magics. Ideally, we should
+                # generate a tooltip, but not on ( like we do for actual
+                # callables.
+                call_info, doc = None, None
+            else:
+                call_info, doc = call_tip(content, format_call=True)
+                if not call_info:
+                    name = content['name'].split('.')[-1]
+                    argspec = getargspecfromtext(doc)
+                    if argspec:
+                        # This covers cases like np.abs, whose docstring is
+                        # the same as np.absolute and because of that a proper
+                        # signature can't be obtained correctly
+                        call_info = name + argspec
+                    else:
+                        call_info = getsignaturefromtext(doc, name)
+            if call_info:
+                self._control.show_calltip(_("Arguments"), call_info,
+                                           signature=True, color='#2D62FF')
+    
     #---- Qt methods ----------------------------------------------------------
     def focusInEvent(self, event):
         """Reimplement Qt method to send focus change notification"""
         self.emit(SIGNAL('focus_changed()'))
-        return super(SpyderIPythonWidget, self).focusInEvent(event)
+        return super(IPythonShellWidget, self).focusInEvent(event)
     
     def focusOutEvent(self, event):
         """Reimplement Qt method to send focus change notification"""
         self.emit(SIGNAL('focus_changed()'))
-        return super(SpyderIPythonWidget, self).focusOutEvent(event)
+        return super(IPythonShellWidget, self).focusOutEvent(event)
+
 
 #-----------------------------------------------------------------------------
 # Client widget
 #-----------------------------------------------------------------------------
 class IPythonClient(QWidget, SaveHistoryMixin):
     """
-    Spyder IPython client or frontend.
+    IPython client or frontend for Spyder
 
-    This is a layer on top of the IPython Qt widget (i.e. RichIPythonWidget +
-    our additions = SpyderIPythonWidget), which becomes the ipywidget attribute
-    of this class. We are doing this for several reasons:
-
-    1. To add more variables and methods needed to connect the widget to other
-       Spyder plugins and also increase its funcionality.
-    2. To make it clear what has been added by us to IPython widgets.
-    3. To avoid possible name conflicts between our widgets and theirs (e.g.
-       self.history and self._history, respectively)
+    This is a widget composed of a shell widget (i.e. RichIPythonWidget
+    + our additions = IPythonShellWidget) and an WebView info widget to 
+    print kernel error and other messages.
     """
     
-    CONF_SECTION = 'ipython'
     SEPARATOR = '%s##---(%s)---' % (os.linesep*2, time.ctime())
     
     def __init__(self, plugin, history_filename, connection_file=None,
@@ -326,17 +372,18 @@ class IPythonClient(QWidget, SaveHistoryMixin):
         self.connection_file = connection_file
         self.kernel_widget_id = kernel_widget_id
         self.name = ''
-        self.ipywidget = SpyderIPythonWidget(config=plugin.ipywidget_config(),
-                                             local_kernel=False)
-        self.ipywidget.hide()
-        self.loading_widget = WebView(self)
+        self.shellwidget = IPythonShellWidget(config=plugin.ipywidget_config(),
+                                              local_kernel=False)
+        self.shellwidget.hide()
+        self.infowidget = WebView(self)
         self.menu_actions = menu_actions
         self.history_filename = get_conf_path(history_filename)
         self.history = []
         self.namespacebrowser = None
         
+        self.set_infowidget_font()
         self.loading_page = self._create_loading_page()
-        self.loading_widget.setHtml(self.loading_page)
+        self.infowidget.setHtml(self.loading_page)
         
         vlayout = QVBoxLayout()
         toolbar_buttons = self.get_toolbar_buttons()
@@ -345,33 +392,32 @@ class IPythonClient(QWidget, SaveHistoryMixin):
             hlayout.addWidget(button)
         vlayout.addLayout(hlayout)
         vlayout.setContentsMargins(0, 0, 0, 0)
-        vlayout.addWidget(self.ipywidget)
-        vlayout.addWidget(self.loading_widget)
+        vlayout.addWidget(self.shellwidget)
+        vlayout.addWidget(self.infowidget)
         self.setLayout(vlayout)
         
         self.exit_callback = lambda: plugin.close_console(client=self)
         
     #------ Public API --------------------------------------------------------
-    def show_ipywidget(self):
-        """Show ipywidget and configure it"""
-        self.loading_widget.hide()
-        self.ipywidget.show()
-        self.loading_widget.setHtml(BLANK)
+    def show_shellwidget(self):
+        """Show shellwidget and configure it"""
+        self.infowidget.hide()
+        self.shellwidget.show()
+        self.infowidget.setHtml(BLANK)
         self.get_control().setFocus()
         
-        # Connect the IPython widget to this IPython client:
-        # (see spyderlib/widgets/ipython.py for more details about this)
-        self.ipywidget.set_ipyclient(self)
+        # Connect shellwidget to the client
+        self.shellwidget.set_ipyclient(self)
         
         # To save history
-        self.ipywidget.executing.connect(
+        self.shellwidget.executing.connect(
                                       lambda c: self.add_to_history(command=c))
         
         # To update history after execution
-        self.ipywidget.executed.connect(self.update_history)
+        self.shellwidget.executed.connect(self.update_history)
         
         # To update the Variable Explorer after execution
-        self.ipywidget.executed.connect(self.auto_refresh_namespacebrowser)
+        self.shellwidget.executed.connect(self.auto_refresh_namespacebrowser)
     
     def show_kernel_error(self, error):
         """Show kernel initialization errors in the client"""
@@ -382,17 +428,26 @@ class IPythonClient(QWidget, SaveHistoryMixin):
         # Remove unneeded blank lines at the beginning
         while error.startswith('<br>'):
             error = error[4:]
+        # Remove connection message
+        if error.startswith('To connect another client') or \
+          error.startswith('[IPKernelApp] To connect another client'):
+            error = error.split('<br>')
+            error = '<br>'.join(error[2:])
+        # Don't break lines in hyphens
+        # From http://stackoverflow.com/q/7691569/438386
+        error = error.replace('-', '&#8209')
+            
         message = _("An error ocurred while starting the kernel!")
         kernel_error_template = Template(KERNEL_ERROR)
         page = kernel_error_template.substitute(css_path=CSS_PATH,
                                                 message=message,
                                                 error=error)
-        self.loading_widget.setHtml(page)
+        self.infowidget.setHtml(page)
     
     def show_restart_animation(self):
-        self.ipywidget.hide()
-        self.loading_widget.setHtml(self.loading_page)
-        self.loading_widget.show()
+        self.shellwidget.hide()
+        self.infowidget.setHtml(self.loading_page)
+        self.infowidget.show()
     
     def get_name(self):
         """Return client name"""
@@ -401,11 +456,11 @@ class IPythonClient(QWidget, SaveHistoryMixin):
     def get_control(self):
         """Return the text widget (or similar) to give focus to"""
         # page_control is the widget used for paging
-        page_control = self.ipywidget._page_control
+        page_control = self.shellwidget._page_control
         if page_control and page_control.isVisible():
             return page_control
         else:
-            return self.ipywidget._control
+            return self.shellwidget._control
 
     def get_options_menu(self):
         """Return options menu"""
@@ -465,27 +520,32 @@ class IPythonClient(QWidget, SaveHistoryMixin):
     
     def set_font(self, font):
         """Set IPython widget's font"""
-        self.ipywidget.font = font
+        self.shellwidget._control.setFont(font)
+        self.shellwidget.font = font
+    
+    def set_infowidget_font(self):
+        font = get_font('inspector', 'rich_text')
+        self.infowidget.set_font(font)
     
     def interrupt_kernel(self):
         """Interrupt the associanted Spyder kernel if it's running"""
-        self.ipywidget.request_interrupt_kernel()
+        self.shellwidget.request_interrupt_kernel()
     
     def restart_kernel(self):
         """Restart the associanted Spyder kernel"""
-        self.ipywidget.request_restart_kernel()
+        self.shellwidget.request_restart_kernel()
     
     def inspect_object(self):
         """Show how to inspect an object with our object inspector"""
-        self.ipywidget._control.inspect_current_object()
+        self.shellwidget._control.inspect_current_object()
     
     def clear_line(self):
         """Clear a console line"""
-        self.ipywidget._keyboard_quit()
+        self.shellwidget._keyboard_quit()
     
     def clear_console(self):
         """Clear the whole console"""
-        self.ipywidget.execute("%clear")
+        self.shellwidget.execute("%clear")
     
     def if_kernel_dies(self, t):
         """
@@ -494,10 +554,10 @@ class IPythonClient(QWidget, SaveHistoryMixin):
         """
         message = _("It seems the kernel died unexpectedly. Use "
                     "'Restart kernel' to continue using this console.")
-        self.ipywidget._append_plain_text(message + '\n')
+        self.shellwidget._append_plain_text(message + '\n')
     
     def update_history(self):
-        self.history = self.ipywidget._history
+        self.history = self.shellwidget._history
     
     def interrupt_message(self):
         """
@@ -543,8 +603,8 @@ class IPythonClient(QWidget, SaveHistoryMixin):
         signal
         """
         if programs.is_module_installed('IPython', '>=1.0'):
-            kc = self.ipywidget.kernel_client
+            kc = self.shellwidget.kernel_client
             if kc is not None:
                 kc.hb_channel.pause()
         else:
-            self.ipywidget.custom_restart = False
+            self.shellwidget.custom_restart = False
diff --git a/spyderlib/widgets/mixins.py b/spyderlib/widgets/mixins.py
index ba3a4c8..b5d1d4a 100644
--- a/spyderlib/widgets/mixins.py
+++ b/spyderlib/widgets/mixins.py
@@ -14,16 +14,18 @@ IPython console plugin.
 import os
 import re
 import sre_constants
+import textwrap
 
 from spyderlib.qt.QtGui import (QTextCursor, QTextDocument, QApplication,
-                                QCursor)
-from spyderlib.qt.QtCore import Qt, QRegExp, SIGNAL
+                                QCursor, QToolTip)
+from spyderlib.qt.QtCore import Qt, QPoint, QRegExp, SIGNAL
 
 # Local imports
 from spyderlib.baseconfig import _
 from spyderlib.utils import encoding, sourcecode
 from spyderlib.utils.misc import get_error_match
-from spyderlib.utils.dochelpers import getobj
+from spyderlib.utils.dochelpers import (getobj, getargspecfromtext,
+                                        getsignaturefromtext)
 from spyderlib.py3compat import is_text_string, to_text_string, u
 
 
@@ -33,7 +35,72 @@ HISTORY_FILENAMES = []
 class BaseEditMixin(object):
     def __init__(self):
         self.eol_chars = None
-        
+        self.calltip_size = 600
+    
+    
+    #------Line number area
+    def get_linenumberarea_width(self):
+        """Return line number area width"""
+        # Implemented in CodeEditor, but needed for calltip/completion widgets
+        return 0
+    
+    
+    #------Calltips
+    def _format_signature(self, text):
+        lines = []
+        name = text.split('(')[0]
+        rows = textwrap.wrap(text, 50)
+        for r in rows:
+            for char in ['=', ',', '(', ')', '*', '**']:
+                r = r.replace(char,
+                       '<span style=\'color: red; font-weight: bold\'>' + \
+                       char + '</span>')
+            lines.append(r)
+        concat_str = '<br>' + ' '*(len(name)+1)
+        signature = concat_str.join(lines)
+        return signature
+    
+    def show_calltip(self, title, text, signature=False, color='#2D62FF',
+                     at_line=None, at_position=None):
+        """Show calltip"""
+        if text is None or len(text) == 0:
+            return
+        # Saving cursor position:
+        if at_position is None:
+            at_position = self.get_position('cursor')
+        self.calltip_position = at_position
+        # Preparing text:
+        if signature:
+            text = self._format_signature(text)
+        font = self.font()
+        size = font.pointSize()
+        family = font.family()
+        format1 = '<div style=\'font-family: "%s"; font-size: %spt; color: %s\'>'\
+                  % (family, size, color)
+        format2 = '<div style=\'font-family: "%s"; font-size: %spt\'>'\
+                  % (family, size-1 if size > 9 else size)
+        if isinstance(text, list):
+            text = "\n    ".join(text)
+        text = text.replace('\n', '<br>')
+        if len(text) > self.calltip_size and not signature:
+            text = text[:self.calltip_size] + " ..."
+        tiptext = format1 + ('<b>%s</b></div>' % title) + '<hr>' + \
+                  format2 + text + "</div>"
+        # Showing tooltip at cursor position:
+        cx, cy = self.get_coordinates('cursor')
+        if at_line is not None:
+            cx = 5
+            cursor = QTextCursor(self.document().findBlockByNumber(at_line-1))
+            cy = self.cursorRect(cursor).top()
+        point = self.mapToGlobal(QPoint(cx, cy))
+        point.setX(point.x()+self.get_linenumberarea_width())
+        point.setY(point.y()+font.pointSize()+5)
+        if signature:
+            self.signature_widget.show_call_info(point, tiptext)
+        else:
+            QToolTip.showText(point, tiptext)
+    
+    
     #------EOL characters
     def set_eol_chars(self, text):
         """Set widget end-of-line (EOL) characters from text (analyzes text)"""
@@ -480,12 +547,13 @@ class InspectObjectMixin(object):
         if tl2 and text2.startswith(tl2[0]):
             text += tl2[0]
         if text:
-            self.show_docstring(text, force=True)
+            self.show_object_info(text, force=True)
     
-    def show_docstring(self, text, call=False, force=False):
-        """Show docstring or arguments"""
+    def show_object_info(self, text, call=False, force=False):
+        """Show signature calltip and/or docstring in the Object Inspector"""
         text = to_text_string(text) # Useful only for ExternalShellBase
         
+        # Show docstring
         insp_enabled = self.inspector_enabled or force
         if force and self.inspector is not None:
             self.inspector.dockwidget.setVisible(True)
@@ -494,26 +562,41 @@ class InspectObjectMixin(object):
            (self.inspector.dockwidget.isVisible()):
             # ObjectInspector widget exists and is visible
             self.inspector.set_shell(self)
-            self.inspector.set_object_text(text, ignore_unknown=True)
+            self.inspector.set_object_text(text, ignore_unknown=False)
             self.setFocus() # if inspector was not at top level, raising it to
                             # top will automatically give it focus because of
                             # the visibility_changed signal, so we must give
                             # focus back to shell
-            if call and self.calltips:
-                # Display argument list if this is function call
-                iscallable = self.iscallable(text)
-                if iscallable is not None:
-                    if iscallable:
-                        arglist = self.get_arglist(text)
-                        if isinstance(arglist, bool):
-                            arglist = []
-                        if arglist:
-                            self.show_calltip(_("Arguments"),
-                                              arglist, '#129625')
-        elif self.calltips: # inspector is not visible or link is disabled
-            doc = self.get__doc__(text)
-            if doc is not None:
-                self.show_calltip(_("Documentation"), doc)
+        
+        # Show calltip
+        if call and self.calltips:
+            # Display argument list if this is a function call
+            iscallable = self.iscallable(text)
+            if iscallable is not None:
+                if iscallable:
+                    arglist = self.get_arglist(text)
+                    name =  text.split('.')[-1]
+                    argspec = signature = ''
+                    if isinstance(arglist, bool):
+                        arglist = []
+                    if arglist:
+                        argspec = '(' + ''.join(arglist) + ')'
+                    else:
+                        doc = self.get__doc__(text)
+                        if doc is not None:
+                            # This covers cases like np.abs, whose docstring is
+                            # the same as np.absolute and because of that a
+                            # proper signature can't be obtained correctly
+                            argspec = getargspecfromtext(doc)
+                            if not argspec:
+                                signature = getsignaturefromtext(doc, name)
+                    if argspec or signature:
+                        if argspec:
+                            tiptext = name + argspec
+                        else:
+                            tiptext = signature
+                        self.show_calltip(_("Arguments"), tiptext,
+                                          signature=True, color='#2D62FF')
     
     def get_last_obj(self, last=False):
         """
diff --git a/spyderlib/widgets/shell.py b/spyderlib/widgets/shell.py
index 957548d..40388a3 100644
--- a/spyderlib/widgets/shell.py
+++ b/spyderlib/widgets/shell.py
@@ -101,6 +101,7 @@ class ShellBaseWidget(ConsoleBaseWidget, SaveHistoryMixin):
 
     def set_font(self, font):
         """Set shell styles font"""
+        self.setFont(font)
         self.set_pythonshell_font(font)
         cursor = self.textCursor()
         cursor.select(QTextCursor.Document)
@@ -781,7 +782,7 @@ class PythonShellWidget(TracebackLinksMixin, ShellBaseWidget,
         if self.get_current_line_to_cursor():
             last_obj = self.get_last_obj()
             if last_obj and not last_obj.isdigit():
-                self.show_docstring(last_obj)
+                self.show_object_info(last_obj)
         self.insert_text(text)
         # In case calltip and completion are shown at the same time:
         if self.is_completion_widget_visible():
@@ -793,7 +794,9 @@ class PythonShellWidget(TracebackLinksMixin, ShellBaseWidget,
         if self.get_current_line_to_cursor():
             last_obj = self.get_last_obj()
             if last_obj and not last_obj.isdigit():
-                self.show_docstring(last_obj, call=True)
+                self.insert_text(text)
+                self.show_object_info(last_obj, call=True)
+                return
         self.insert_text(text)
         
     def _key_period(self, text):
diff --git a/spyderlib/widgets/sourcecode/base.py b/spyderlib/widgets/sourcecode/base.py
index aec8a3d..8aa94f3 100644
--- a/spyderlib/widgets/sourcecode/base.py
+++ b/spyderlib/widgets/sourcecode/base.py
@@ -20,13 +20,14 @@ from spyderlib.qt.QtGui import (QTextCursor, QColor, QFont, QApplication,
                                 QListWidget, QPlainTextEdit, QPalette,
                                 QMainWindow, QTextOption, QMouseEvent,
                                 QTextFormat)
-from spyderlib.qt.QtCore import QPoint, SIGNAL, Qt, QEventLoop, QEvent
+from spyderlib.qt.QtCore import SIGNAL, Qt, QEventLoop, QEvent
 from spyderlib.qt.compat import to_qvariant
 
 
 # Local imports
 from spyderlib.widgets.sourcecode.terminal import ANSIEscapeCodeHandler
 from spyderlib.widgets.mixins import BaseEditMixin
+from spyderlib.widgets.calltip import CallTipWidget
 from spyderlib.py3compat import to_text_string, str_lower
 
 
@@ -209,9 +210,9 @@ class TextEditBaseWidget(QPlainTextEdit, BaseEditMixin):
         self.codecompletion_enter = False
         self.calltips = True
         self.calltip_position = None
-        self.calltip_size = 600
         self.calltip_font = QFont()
         self.completion_text = ""
+        self.signature_widget = CallTipWidget(self)
         
         # Highlight current line color
         self.currentline_color = QColor(Qt.red).lighter(190)
@@ -242,13 +243,6 @@ class TextEditBaseWidget(QPlainTextEdit, BaseEditMixin):
         self.setPalette(palette)
 
 
-    #------Line number area
-    def get_linenumberarea_width(self):
-        """Return line number area width"""
-        # Implemented in CodeEditor, but needed here for completion widget
-        return 0
-
-
     #------Extra selections
     def get_extra_selections(self, key):
         return self.extra_selections_dict.get(key, [])
@@ -738,38 +732,6 @@ class TextEditBaseWidget(QPlainTextEdit, BaseEditMixin):
 
 
     #------Code completion / Calltips
-    def show_calltip(self, title, text, color='#2D62FF',
-                     at_line=None, at_position=None):
-        """Show calltip"""
-        if text is None or len(text) == 0:
-            return
-        # Saving cursor position:
-        if at_position is None:
-            at_position = self.get_position('cursor')
-        self.calltip_position = at_position
-        # Preparing text:
-        weight = 'bold' if self.calltip_font.bold() else 'normal'
-        size = self.calltip_font.pointSize()
-        family = self.calltip_font.family()
-        format1 = '<div style=\'font-size: %spt; color: %s\'>' % (size, color)
-        format2 = '<hr><div style=\'font-family: "%s"; font-size: %spt; font-weight: %s\'>' % (family, size, weight)
-        if isinstance(text, list):
-            text = "\n    ".join(text)
-        text = text.replace('\n', '<br>')
-        if len(text) > self.calltip_size:
-            text = text[:self.calltip_size] + " ..."
-        tiptext = format1 + ('<b>%s</b></div>' % title) \
-                  + format2 + text + "</div>"
-        # Showing tooltip at cursor position:
-        cx, cy = self.get_coordinates('cursor')
-        if at_line is not None:
-            cx = 5
-            cursor = QTextCursor(self.document().findBlockByNumber(at_line-1))
-            cy = self.cursorRect(cursor).top()
-        point = self.mapToGlobal(QPoint(cx, cy))
-        point.setX(point.x()+self.get_linenumberarea_width())
-        QToolTip.showText(point, tiptext)
-
     def hide_tooltip_if_necessary(self, key):
         """Hide calltip when necessary"""
         try:
@@ -887,6 +849,7 @@ class TextEditBaseWidget(QPlainTextEdit, BaseEditMixin):
     def mousePressEvent(self, event):
         """Reimplement Qt method"""
         if os.name != 'posix' and event.button() == Qt.MidButton:
+            self.signature_widget.hide()
             self.setFocus()
             event = QMouseEvent(QEvent.MouseButtonPress, event.pos(),
                                 Qt.LeftButton, Qt.LeftButton, Qt.NoModifier)
@@ -894,6 +857,7 @@ class TextEditBaseWidget(QPlainTextEdit, BaseEditMixin):
             QPlainTextEdit.mouseReleaseEvent(self, event)
             self.paste()
         else:
+            self.signature_widget.hide()
             QPlainTextEdit.mousePressEvent(self, event)
 
     def focusInEvent(self, event):
diff --git a/spyderlib/widgets/sourcecode/codeeditor.py b/spyderlib/widgets/sourcecode/codeeditor.py
index bf064db..183bb99 100644
--- a/spyderlib/widgets/sourcecode/codeeditor.py
+++ b/spyderlib/widgets/sourcecode/codeeditor.py
@@ -2348,8 +2348,7 @@ class CodeEditor(TextEditBaseWidget):
                 self.insert_text(text)
             if (self.is_python() or self.is_cython()) and \
                self.get_text('sol', 'cursor') and self.calltips:
-                self.emit(SIGNAL('trigger_calltip_and_doc_rendering(int)'),
-                          position)
+                self.emit(SIGNAL('show_object_info(int)'), position)
         elif text in ('[', '{') and not self.has_selected_text() \
           and self.close_parentheses_enabled:
             s_trailing_text = self.get_text('cursor', 'eol').strip()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/spyder.git



More information about the debian-science-commits mailing list