[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('-', '‑')
+
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