[guiqwt] 01/03: Imported Upstream version 3.0.0~b5
Frédéric-Emmanuel Picca
picca at moszumanska.debian.org
Sun Oct 4 07:17:59 UTC 2015
This is an automated email from the git hooks/post-receive script.
picca pushed a commit to branch master
in repository guiqwt.
commit 8423ebf186b7d26ec39dde2b854b58910b61426c
Author: Picca Frédéric-Emmanuel <picca at debian.org>
Date: Sun Oct 4 08:46:05 2015 +0200
Imported Upstream version 3.0.0~b5
---
PKG-INFO | 2 +-
README | 7 +-
changelog | 7 +-
doc/conf.py | 4 +-
doc/development.rst | 83 +++++++++++++++---
doc/disthelpers.rst | 58 +++----------
doc/examples.rst | 2 +
doc/images/curve_widgets.png | Bin 34387 -> 32373 bytes
doc/images/image_widgets.png | Bin 50678 -> 49787 bytes
doc/images/screenshots/simple_dialog.png | Bin 47500 -> 47500 bytes
doc/index.rst | 2 +-
doc/installation.rst | 16 ++--
doc/overview.rst | 10 +--
doc/reference.rst | 40 ---------
doc/reference/annotations.rst | 1 +
doc/reference/baseplot.rst | 1 +
doc/reference/builder.rst | 1 +
doc/reference/cross_section.rst | 1 +
doc/reference/curve.rst | 1 +
doc/reference/histogram.rst | 1 +
doc/reference/image.rst | 1 +
doc/reference/index.rst | 27 ++++++
doc/reference/io.rst | 1 +
doc/reference/label.rst | 1 +
doc/reference/panels.rst | 1 +
doc/reference/plot.rst | 1 +
doc/reference/pyplot.rst | 1 +
doc/reference/shapes.rst | 1 +
doc/reference/signals.rst | 1 +
doc/reference/styles.rst | 1 +
doc/reference/tools.rst | 1 +
doc/reference/widgets_fit.rst | 1 +
doc/reference/widgets_resizedialog.rst | 1 +
doc/reference/widgets_rotatecrop.rst | 1 +
guiqwt.egg-info/PKG-INFO | 2 +-
guiqwt.egg-info/SOURCES.txt | 23 ++++-
guiqwt/__init__.py | 8 +-
guiqwt/annotations.py | 3 +
guiqwt/baseplot.py | 50 ++++++-----
guiqwt/builder.py | 141 ++++++++++++++++++-------------
guiqwt/config.py | 2 -
guiqwt/cross_section.py | 2 +-
guiqwt/curve.py | 25 ++++--
guiqwt/events.py | 14 +++
guiqwt/histogram.py | 27 ++++--
guiqwt/image.py | 89 +++++++++++++------
guiqwt/panels.py | 21 +++--
guiqwt/plot.py | 105 +++++++++++++++--------
guiqwt/pyplot.py | 128 ++++++++++++++--------------
guiqwt/shapes.py | 3 +
guiqwt/signals.py | 14 ++-
guiqwt/styles.py | 7 +-
guiqwt/tests/qtdesigner.ui | 4 +-
guiqwt/tools.py | 15 +++-
guiqwt/transitional.py | 4 -
guiqwt/widgets/fit.py | 4 +-
py2exe_example/create_exe.py | 22 -----
py2exe_example/simpledialog.pyw | 27 ------
setup.cfg | 2 +-
src/pcolor.cpp | 2 +-
src/scaler.cpp | 2 +-
61 files changed, 594 insertions(+), 429 deletions(-)
diff --git a/PKG-INFO b/PKG-INFO
index fedc9d8..9229a54 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: guiqwt
-Version: 2.4.0b4
+Version: 3.0.0b5
Summary: guiqwt is a set of tools for curve and image plotting (extension to `qwt`)
Home-page: https://github.com/PierreRaybaut/guiqwt
Author: Pierre Raybaut
diff --git a/README b/README
index c82537f..d314735 100644
--- a/README
+++ b/README
@@ -8,14 +8,15 @@ Licensed under the terms of the CECILL License (see Licence_CeCILL_V2-en.txt)
Overview
- Based on qwt (a pure Python/PyQt reimplementation of the curve
+ Based on `python-qwt` (a pure Python/PyQt reimplementation of the curve
plotting Qwt C++ library, included in guiqwt base source code)
and on the scientific modules NumPy and SciPy, guiqwt is a Python
library providing efficient 2D data-plotting features (curve/image
visualization and related tools) for interactive computing and
signal/image processing application development.
- Extension to `qwt`:
+ Extension to `python-qwt`:
+
* set of tools for curve and image plotting
* GUI-based application development helpers
@@ -24,7 +25,7 @@ Licensed under the terms of the CECILL License (see Licence_CeCILL_V2-en.txt)
Requirements
Python 2.6+ or Python 3
PyQt4 4.3+ or PyQt5 5.5+
- qwt 6.1+ (pure Python reimplementation of Qwt6 C++ library)
+ qwt 0.1+ (pure Python reimplementation of Qwt6 C++ library)
guidata 1.7+
NumPy 1.3+ -- NumPy 1.6 or later is required for Windows binaries
SciPy 0.7+
diff --git a/changelog b/changelog
index 2e2fc6d..12851bd 100644
--- a/changelog
+++ b/changelog
@@ -1,10 +1,11 @@
-== Version 2.4.0beta2 ==
+== Version 3.0.0beta5 ==
=== Possible API compatibility issues (since v2.3.2) ===
- * Added support for PyQt5
- * Replaced PyQwt dependency by the new [included since beta2] `qwt` package (pure Python reimplementation of the Qwt6 C++ library)
+ * Added support for PyQt5 (removed old-style signals)
+ * Replaced `PyQwt` dependency by the new `python-qwt` package (pure Python reimplementation of the Qwt6 C++ library)
* Removed "curvetype" feature (Yfx, Xfy) which is no longer supported in Qwt6
+ * Removed curve "fitted" option which is not supported in `qwt`.
=== Bug fixes (since v2.3.2) ===
diff --git a/doc/conf.py b/doc/conf.py
index 29d659f..407173a 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -96,6 +96,8 @@ pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
modindex_common_prefix = ['guiqwt.']
+autodoc_member_order = 'bysource'
+
# -- Options for HTML output ---------------------------------------------------
@@ -126,7 +128,7 @@ html_logo = 'images/guiqwt.png'
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
-html_favicon = 'favicon.ico'
+html_favicon = '_static/favicon.ico'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
diff --git a/doc/development.rst b/doc/development.rst
index 9819613..2ed9a1a 100644
--- a/doc/development.rst
+++ b/doc/development.rst
@@ -50,19 +50,80 @@ following recommendations should be followed:
PyQt / PySide compatibility
---------------------------
-In the near future, the project will be officially compatible with both PyQt
-and PySide.
+The project should be mostly compatible with both PyQt and PySide (although
+PySide is not as popular as it used to be, so testing tend to be limited).
-In its current implementation, it has to be compatible with PyQt API #1 (old
-PyQt versions) and API #2 (PySide-compatible API, PyQt >= v4.6), which means
-that the following recommendations should be followed:
+PyQt5 compatibility
+-------------------
+
+In its current implementation, the code base has to be compatible with PyQt
+API #2 (PySide-compatible API, PyQt >= v4.6) and with PyQt5, which means that
+the following recommendations should be followed:
* `QVariant` objects must not be used (API #2 compatibility)
-* `QString` and `QStringList` objects must not be used (API #2 compatibility)
+* Use exclusively new-style signals and slots
+
+* Read carefully PyQt5 documentation regarding class inheritance behavior: it
+ is quite different than the old PyQt4 implementation. Producing code
+ compatible with both PyQt4 and PyQt5 can be tricky: testing is essential.
+
+
+Python 3 compatibility
+======================
+
+Regarding Python 3 compatibility, we chose to handle it by maintaining a single
+source branch being compatible with both Python 2.6-2.7 and Python 3.
+
+Here is what we have done.
+
+Fixing trivial things with 2to3
+-------------------------------
+
+The first step is to run the `2to3` script (see Python documentation) to
+convert print statements to print function calls -- note that your source
+directory (named `directory_name`) has to be version controlled (no backup is
+done thanks to the `-n` option flag).
+`python 2to3.py -w -n -f print directory_name`
+
+Open each modified source file and add the following line at the beginning:
+from __future__ import print_function
+
+Then run again `2to3` with all other Python 2/3 compatible fixers:
+`python 2to3.py -w -n -f apply -f dict -f except -f exitfunc -f filter -f has_key -f map -f ne -f raise -f ws_comma -f xrange -f xreadlines -f zip directory_name`
+
+After these two steps, your code should be compatible with Python 2.6, 2.7
+and 3.x, but only with respect to the simplest changes that occured between
+Python 2 and Python 3. However, this a step forward to Python 3 compatibility
+without breaking Python 2.6+ compatibility.
+
+Fixing unicode issues
+---------------------
+
+In Python 3, `unicode` and `str` strings have been replaced by `str` and
+`bytes` strings:
+
+ * `str` is the text string type, supporting unicode characters natively
+
+ * `bytes` is the binary string type.
+
+As a consequence, Python 2 code involving strings may cause compatibility
+issues with Python 3. For example:
+
+ * file I/O may return `bytes` instead of `str` in Python 3 (depending on the
+ open mode): this can be solved by calling the `decode` method on the `bytes`
+ object (this will work on both Python 2 `str` and Python 3 `bytes` objects)
+
+ * in Python 3.0-3.2, the `u'unicode text'` or `u"unicode text"` syntax is
+ not allowed and will raise a SyntaxError: this can be solved by inserting the
+ `from __future__ import unicode_literals` at the beginning of the script and
+ by removing all the `u` string prefixes
+
+ * in Python 3 `isinstance(text, basestring)` can be replaced by
+ `is_text_string(text)` (function of the `guidata.py3compat` module)
+
+ * in Python 3 `isinstance(text, unicode)` can be replaced by
+ `is_unicode(text)` (function of the `guidata.py3compat` module)
-* When connecting built-in C++ signals which were originally made to pass
- strings (or string lists), the arguments should always be assumed to be
- `QString` (or `QStringList`) objects (API #1 compatibility) and so be
- converted systematically to the Python equivalent object, i.e. unicode
- (or list).
+ * in Python 3 `unicode(text)` can be replaced by `to_text_string(text)`
+ (function of the `guidata.py3compat` module)
diff --git a/doc/disthelpers.rst b/doc/disthelpers.rst
index af4af5d..c1a5018 100644
--- a/doc/disthelpers.rst
+++ b/doc/disthelpers.rst
@@ -1,9 +1,10 @@
Making executable Windows programs
==================================
-The `py2exe` Python library is an extension to Python `distutils` module which
-converts Python scripts into executable Windows programs, able to run without
-requiring a Python installation.
+Applications developed with Python may be deployed using specialized tools
+like `py2exe` or `cx_Freeze`. These tools work as extensions to Python builtin
+`distutils` module and converts Python scripts into executable Windows
+programs which may be executed without requiring a Python installation.
Making such an executable program may be a non trivial task when the script
dependencies include libraries with data or extensions, such as `PyQt4` or
@@ -14,7 +15,7 @@ Example
~~~~~~~
This example is included in `guiqwt` source package (see the
-``py2exe_example`` directory).
+``deployment_example`` folder at source package root directory).
Simple example script named ``simpledialog.pyw`` which is based on `guiqwt`
(and implicitely on `guidata`)::
@@ -38,45 +39,14 @@ Simple example script named ``simpledialog.pyw`` which is based on `guiqwt`
dlg.set_data(np.random.rand(100, 100))
dlg.exec_()
-The ``setup.py`` script may be written as the following::
+The ``create_exe.py`` script may be written as the following::
- from distutils.core import setup
- import py2exe # Patching distutils setup
- from guidata.disthelpers import (remove_build_dist, get_default_excludes,
- get_default_dll_excludes, create_vs2008_data_files,
- add_modules)
-
- # Removing old build/dist folders
- remove_build_dist()
-
- # Including/excluding DLLs and Python modules
- EXCLUDES = get_default_excludes()
- INCLUDES = []
- DLL_EXCLUDES = get_default_dll_excludes()
- DATA_FILES = create_vs2008_data_files()
-
- # Configuring/including Python modules
- add_modules(('PyQt4', 'guidata', 'guiqwt'), DATA_FILES, INCLUDES, EXCLUDES)
-
- setup(
- options={
- "py2exe": {"compressed": 2, "optimize": 2, 'bundle_files': 1,
- "includes": INCLUDES, "excludes": EXCLUDES,
- "dll_excludes": DLL_EXCLUDES,
- "dist_dir": "dist",},
- },
- data_files=DATA_FILES,
- windows=[{
- "script": "simpledialog.pyw",
- "dest_base": "simpledialog",
- "version": "1.0.0",
- "company_name": u"CEA",
- "copyright": u"Copyright © 2010 CEA - Pierre Raybaut",
- "name": "Simple dialog box",
- "description": "Simple dialog box",
- },],
- zipfile = None,
- )
+ from guidata import disthelpers as dh
+ dist = dh.Distribution()
+ dist.setup('example', '1.0', 'guiqwt app example', 'simpledialog.pyw')
+ dist.add_modules('guidata', 'guiqwt')
+ dist.build_cx_freeze() # use `build_py2exe` to use py2exe instead
+
+Make the Windows executable program by simply running the script::
-Make the Windows executable program with the following command:
- `python setup.py py2exe`
+ python create_exe.py
diff --git a/doc/examples.rst b/doc/examples.rst
index 6b3efd1..3e04bdf 100644
--- a/doc/examples.rst
+++ b/doc/examples.rst
@@ -1,3 +1,5 @@
+.. _examples:
+
Examples
========
diff --git a/doc/images/curve_widgets.png b/doc/images/curve_widgets.png
index a1dd846..2cf1395 100644
Binary files a/doc/images/curve_widgets.png and b/doc/images/curve_widgets.png differ
diff --git a/doc/images/image_widgets.png b/doc/images/image_widgets.png
index d171938..05185d2 100644
Binary files a/doc/images/image_widgets.png and b/doc/images/image_widgets.png differ
diff --git a/doc/images/screenshots/simple_dialog.png b/doc/images/screenshots/simple_dialog.png
index 57b11e6..84336c7 100644
Binary files a/doc/images/screenshots/simple_dialog.png and b/doc/images/screenshots/simple_dialog.png differ
diff --git a/doc/index.rst b/doc/index.rst
index 70a8db9..51bbbc2 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -12,7 +12,7 @@ Contents:
examples
sift
disthelpers
- reference
+ reference/index
Indices and tables:
diff --git a/doc/installation.rst b/doc/installation.rst
index e996911..e97f166 100644
--- a/doc/installation.rst
+++ b/doc/installation.rst
@@ -7,7 +7,7 @@ Dependencies
Requirements:
* Python 2.x (x>=6)
* PyQt4 4.x (x>=3 ; recommended x>=4) or PyQt5 5.x (x>=5)
- * qwt 6.x (x>=1)
+ * qwt 0.x (x>=1)
* guidata 1.7 or later
* NumPy 1.x (x>=3) -- NumPy 1.6 or later is required for Windows binaries
* SciPy 0.x (x>=7)
@@ -28,21 +28,19 @@ All platforms:
On GNU/Linux and MacOS platforms:
``python setup.py build install``
-
- If `gfortran` is not your default Fortran compiler:
- ``python setup.py build --fcompiler=gfortran install``
- or if it fails, you may try the following:
- ``python setup.py build_ext --fcompiler=gnu95 build install``
-On Windows platforms (requires MinGW with gfortran):
+On Windows platforms with MinGW:
``python setup.py build -c mingw32 install``
+On Windows platforms with Microsoft Visual C++ compiler:
+ ``python setup.py build -c msvc install``
+
Help and support
----------------
External resources:
- * Bug reports and feature requests: `GoogleCode`_
+ * Bug reports and feature requests: `GitHub`_
* Help, support and discussions around the project: `GoogleGroup`_
-.. _GoogleCode: http://guiqwt.googlecode.com
+.. _GitHub: https://github.com/PierreRaybaut/guiqwt
.. _GoogleGroup: http://groups.google.fr/group/guidata_guiqwt
diff --git a/doc/overview.rst b/doc/overview.rst
index 510207c..c8ff25f 100644
--- a/doc/overview.rst
+++ b/doc/overview.rst
@@ -1,11 +1,11 @@
Overview
========
-Based on `qwt` (plotting widgets for PyQt4 graphical user interfaces) and
-on the scientific modules `NumPy` and `SciPy`, `guiqwt` is a Python library
-providing efficient 2D data-plotting features (curve/image visualization
-and related tools) for interactive computing and signal/image processing
-application development.
+Based on `python-qwt` (plotting widgets for Python-Qt graphical user
+interfaces) and on the scientific modules `NumPy` and `SciPy`, `guiqwt` is a
+Python library providing efficient 2D data-plotting features (curve/image
+visualization and related tools) for interactive computing and signal/image
+processing application development.
Performances
~~~~~~~~~~~~
diff --git a/doc/reference.rst b/doc/reference.rst
deleted file mode 100644
index d78e53f..0000000
--- a/doc/reference.rst
+++ /dev/null
@@ -1,40 +0,0 @@
-GUIQwt reference
-=================
-
-.. automodule:: guiqwt.pyplot
-
-.. automodule:: guiqwt.widgets.fit
-
-.. automodule:: guiqwt.plot
-
-.. automodule:: guiqwt.builder
-
-.. automodule:: guiqwt.panels
-
-.. automodule:: guiqwt.signals
-
-.. automodule:: guiqwt.baseplot
-
-.. automodule:: guiqwt.curve
-
-.. automodule:: guiqwt.image
-
-.. automodule:: guiqwt.histogram
-
-.. automodule:: guiqwt.cross_section
-
-.. automodule:: guiqwt.annotations
-
-.. automodule:: guiqwt.shapes
-
-.. automodule:: guiqwt.label
-
-.. automodule:: guiqwt.tools
-
-.. automodule:: guiqwt.styles
-
-.. automodule:: guiqwt.io
-
-.. automodule:: guiqwt.widgets.resizedialog
-
-.. automodule:: guiqwt.widgets.rotatecrop
diff --git a/doc/reference/annotations.rst b/doc/reference/annotations.rst
new file mode 100644
index 0000000..135236a
--- /dev/null
+++ b/doc/reference/annotations.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.annotations
diff --git a/doc/reference/baseplot.rst b/doc/reference/baseplot.rst
new file mode 100644
index 0000000..749db57
--- /dev/null
+++ b/doc/reference/baseplot.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.baseplot
diff --git a/doc/reference/builder.rst b/doc/reference/builder.rst
new file mode 100644
index 0000000..cf6c970
--- /dev/null
+++ b/doc/reference/builder.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.builder
diff --git a/doc/reference/cross_section.rst b/doc/reference/cross_section.rst
new file mode 100644
index 0000000..7dcc02b
--- /dev/null
+++ b/doc/reference/cross_section.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.cross_section
diff --git a/doc/reference/curve.rst b/doc/reference/curve.rst
new file mode 100644
index 0000000..1713f4a
--- /dev/null
+++ b/doc/reference/curve.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.curve
diff --git a/doc/reference/histogram.rst b/doc/reference/histogram.rst
new file mode 100644
index 0000000..56da7c4
--- /dev/null
+++ b/doc/reference/histogram.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.histogram
diff --git a/doc/reference/image.rst b/doc/reference/image.rst
new file mode 100644
index 0000000..2a4c231
--- /dev/null
+++ b/doc/reference/image.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.image
diff --git a/doc/reference/index.rst b/doc/reference/index.rst
new file mode 100644
index 0000000..22293b2
--- /dev/null
+++ b/doc/reference/index.rst
@@ -0,0 +1,27 @@
+Reference
+=========
+
+guiqwt API:
+
+.. toctree::
+ :maxdepth: 2
+
+ pyplot
+ widgets_fit
+ plot
+ builder
+ panels
+ signals
+ baseplot
+ curve
+ image
+ histogram
+ cross_section
+ annotations
+ shapes
+ label
+ tools
+ styles
+ io
+ widgets_resizedialog
+ widgets_rotatecrop
diff --git a/doc/reference/io.rst b/doc/reference/io.rst
new file mode 100644
index 0000000..3563fc7
--- /dev/null
+++ b/doc/reference/io.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.io
diff --git a/doc/reference/label.rst b/doc/reference/label.rst
new file mode 100644
index 0000000..5da1e31
--- /dev/null
+++ b/doc/reference/label.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.label
diff --git a/doc/reference/panels.rst b/doc/reference/panels.rst
new file mode 100644
index 0000000..c6f71c1
--- /dev/null
+++ b/doc/reference/panels.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.panels
diff --git a/doc/reference/plot.rst b/doc/reference/plot.rst
new file mode 100644
index 0000000..af72a66
--- /dev/null
+++ b/doc/reference/plot.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.plot
diff --git a/doc/reference/pyplot.rst b/doc/reference/pyplot.rst
new file mode 100644
index 0000000..5a4833f
--- /dev/null
+++ b/doc/reference/pyplot.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.pyplot
diff --git a/doc/reference/shapes.rst b/doc/reference/shapes.rst
new file mode 100644
index 0000000..45a3ccd
--- /dev/null
+++ b/doc/reference/shapes.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.shapes
diff --git a/doc/reference/signals.rst b/doc/reference/signals.rst
new file mode 100644
index 0000000..a797ea8
--- /dev/null
+++ b/doc/reference/signals.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.signals
diff --git a/doc/reference/styles.rst b/doc/reference/styles.rst
new file mode 100644
index 0000000..b00b355
--- /dev/null
+++ b/doc/reference/styles.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.styles
diff --git a/doc/reference/tools.rst b/doc/reference/tools.rst
new file mode 100644
index 0000000..9f31bbe
--- /dev/null
+++ b/doc/reference/tools.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.tools
diff --git a/doc/reference/widgets_fit.rst b/doc/reference/widgets_fit.rst
new file mode 100644
index 0000000..0daaa24
--- /dev/null
+++ b/doc/reference/widgets_fit.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.widgets.fit
diff --git a/doc/reference/widgets_resizedialog.rst b/doc/reference/widgets_resizedialog.rst
new file mode 100644
index 0000000..7035fd2
--- /dev/null
+++ b/doc/reference/widgets_resizedialog.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.widgets.resizedialog
diff --git a/doc/reference/widgets_rotatecrop.rst b/doc/reference/widgets_rotatecrop.rst
new file mode 100644
index 0000000..a7659fe
--- /dev/null
+++ b/doc/reference/widgets_rotatecrop.rst
@@ -0,0 +1 @@
+.. automodule:: guiqwt.widgets.rotatecrop
diff --git a/guiqwt.egg-info/PKG-INFO b/guiqwt.egg-info/PKG-INFO
index fedc9d8..9229a54 100644
--- a/guiqwt.egg-info/PKG-INFO
+++ b/guiqwt.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: guiqwt
-Version: 2.4.0b4
+Version: 3.0.0b5
Summary: guiqwt is a set of tools for curve and image plotting (extension to `qwt`)
Home-page: https://github.com/PierreRaybaut/guiqwt
Author: Pierre Raybaut
diff --git a/guiqwt.egg-info/SOURCES.txt b/guiqwt.egg-info/SOURCES.txt
index c9201e8..758c280 100644
--- a/guiqwt.egg-info/SOURCES.txt
+++ b/guiqwt.egg-info/SOURCES.txt
@@ -10,7 +10,6 @@ doc/examples.rst
doc/index.rst
doc/installation.rst
doc/overview.rst
-doc/reference.rst
doc/sift.rst
doc/_static/favicon.ico
doc/images/curve_widgets.png
@@ -40,6 +39,26 @@ doc/images/screenshots/sift3.png
doc/images/screenshots/simple_dialog.png
doc/images/screenshots/simple_window.png
doc/images/screenshots/transform.png
+doc/reference/annotations.rst
+doc/reference/baseplot.rst
+doc/reference/builder.rst
+doc/reference/cross_section.rst
+doc/reference/curve.rst
+doc/reference/histogram.rst
+doc/reference/image.rst
+doc/reference/index.rst
+doc/reference/io.rst
+doc/reference/label.rst
+doc/reference/panels.rst
+doc/reference/plot.rst
+doc/reference/pyplot.rst
+doc/reference/shapes.rst
+doc/reference/signals.rst
+doc/reference/styles.rst
+doc/reference/tools.rst
+doc/reference/widgets_fit.rst
+doc/reference/widgets_resizedialog.rst
+doc/reference/widgets_rotatecrop.rst
guiqwt/__init__.py
guiqwt/_cm.py
guiqwt/annotations.py
@@ -235,8 +254,6 @@ guiqwt/widgets/fit.py
guiqwt/widgets/fliprotate.py
guiqwt/widgets/resizedialog.py
guiqwt/widgets/rotatecrop.py
-py2exe_example/create_exe.py
-py2exe_example/simpledialog.pyw
qtdesigner/imageplotplugin.py
qtdesigner/plotplugin.py
scripts/guiqwt-tests
diff --git a/guiqwt/__init__.py b/guiqwt/__init__.py
index a79e2c3..5c32ab4 100644
--- a/guiqwt/__init__.py
+++ b/guiqwt/__init__.py
@@ -3,7 +3,7 @@
guiqwt
======
-Based on `qwt` (plotting widgets for PyQt4 graphical user interfaces) and
+Based on `qwt` (plotting widgets for Qt graphical user interfaces) and
on the scientific modules NumPy and SciPy, `guiqwt` is a Python library
providing efficient 2D data-plotting features (curve/image visualization
and related tools) for interactive computing and signal/image processing
@@ -13,15 +13,15 @@ application development.
External resources:
- * Bug reports and feature requests: `GoogleCode`_
+ * Bug reports and feature requests: `GitHub`_
* Help, support and discussions around the project: `GoogleGroup`_
-.. _GoogleCode: http://guiqwt.googlecode.com
+.. _GitHub: https://github.com/PierreRaybaut/guiqwt
.. _GoogleGroup: http://groups.google.fr/group/guidata_guiqwt
"""
-__version__ = '2.4.0b4'
+__version__ = '3.0.0b5'
# Dear (Debian, RPM, ...) package makers, please feel free to customize the
# following path to module's data (images) and translations:
diff --git a/guiqwt/annotations.py b/guiqwt/annotations.py
index 23b30e5..a796c1a 100644
--- a/guiqwt/annotations.py
+++ b/guiqwt/annotations.py
@@ -502,10 +502,13 @@ class AnnotatedObliqueRectangle(AnnotatedRectangle):
def set_rect(self, x0, y0, x1, y1, x2, y2, x3, y3):
"""
Set the rectangle corners coordinates:
+
(x0, y0): top-left corner
(x1, y1): top-right corner
(x2, y2): bottom-right corner
(x3, y3): bottom-left corner
+
+ ::
x: additionnal points
diff --git a/guiqwt/baseplot.py b/guiqwt/baseplot.py
index 136fb16..c54677f 100644
--- a/guiqwt/baseplot.py
+++ b/guiqwt/baseplot.py
@@ -14,6 +14,7 @@ guiqwt.baseplot
The `baseplot` module provides the `guiqwt` plotting widget base class:
:py:class:`guiqwt.baseplot.BasePlot`. This is an enhanced version of
`qwt`'s QwtPlot plotting widget which supports the following features:
+
* add to plot, del from plot, hide/show and save/restore `plot items` easily
* item selection and multiple selection
* active item
@@ -102,9 +103,6 @@ class BasePlot(QwtPlot):
Activatable items must support IBasePlotItem interface and should
be added to the plot using add_item methods.
-
- Signals:
- SIG_ITEMS_CHANGED, SIG_ACTIVE_ITEM_CHANGED
"""
Y_LEFT, Y_RIGHT, X_BOTTOM, X_TOP = (QwtPlot.yLeft, QwtPlot.yRight,
QwtPlot.xBottom, QwtPlot.xTop)
@@ -118,47 +116,47 @@ class BasePlot(QwtPlot):
DEFAULT_ACTIVE_XAXIS = X_BOTTOM
DEFAULT_ACTIVE_YAXIS = Y_LEFT
- # Emitted by plot when an IBasePlotItem object was moved (args: x0, y0, x1, y1)
+ #: Signal emitted by plot when an IBasePlotItem object was moved (args: x0, y0, x1, y1)
SIG_ITEM_MOVED = Signal("PyQt_PyObject", float, float, float, float)
- # Emitted by plot when a shapes.Marker position changes
+ #: Signal emitted by plot when a shapes.Marker position changes
SIG_MARKER_CHANGED = Signal("PyQt_PyObject")
- # Emitted by plot when a shapes.Axes position (or the angle) changes
+ #: Signal emitted by plot when a shapes.Axes position (or the angle) changes
SIG_AXES_CHANGED = Signal("PyQt_PyObject")
- # Emitted by plot when an annotation.AnnotatedShape position changes
+ #: Signal emitted by plot when an annotation.AnnotatedShape position changes
SIG_ANNOTATION_CHANGED = Signal("PyQt_PyObject")
- # Emitted by plot when the a shapes.XRangeSelection range changes
+ #: Signal emitted by plot when the a shapes.XRangeSelection range changes
SIG_RANGE_CHANGED = Signal("PyQt_PyObject", float, float)
- # Emitted by plot when item list has changed (item removed, added, ...)
+ #: Signal emitted by plot when item list has changed (item removed, added, ...)
SIG_ITEMS_CHANGED = Signal('PyQt_PyObject')
- # Emitted by plot when selected item has changed
+ #: Signal emitted by plot when selected item has changed
SIG_ACTIVE_ITEM_CHANGED = Signal('PyQt_PyObject')
- # Emitted by plot when an item was deleted from the item list or using the
- # delete item tool
+ #: Signal emitted by plot when an item was deleted from the item list or using the
+ #: delete item tool
SIG_ITEM_REMOVED = Signal('PyQt_PyObject')
- # Emitted by plot when an item is selected
+ #: Signal emitted by plot when an item is selected
SIG_ITEM_SELECTION_CHANGED = Signal('PyQt_PyObject')
- # Emitted by plot when plot's title or any axis label has changed
+ #: Signal emitted by plot when plot's title or any axis label has changed
SIG_PLOT_LABELS_CHANGED = Signal('PyQt_PyObject')
- # Emitted by plot when any plot axis direction has changed
+ #: Signal emitted by plot when any plot axis direction has changed
SIG_AXIS_DIRECTION_CHANGED = Signal('PyQt_PyObject', 'PyQt_PyObject')
- # Emitted by plot when LUT has been changed by the user
+ #: Signal emitted by plot when LUT has been changed by the user
SIG_LUT_CHANGED = Signal("PyQt_PyObject")
- # Emitted by plot when image mask has changed
+ #: Signal emitted by plot when image mask has changed
SIG_MASK_CHANGED = Signal("PyQt_PyObject")
- # Emitted by cross section plot when cross section curve data has changed
+ #: Signal emitted by cross section plot when cross section curve data has changed
SIG_CS_CURVE_CHANGED = Signal("PyQt_PyObject")
def __init__(self, parent=None, section="plot"):
@@ -430,7 +428,7 @@ class BasePlot(QwtPlot):
clipboard.setPixmap(pixmap)
def save_widget(self, fname):
- """Grab widget's window and save it to filename (*.png, *.pdf)"""
+ """Grab widget's window and save it to filename (\*.png, \*.pdf)"""
fname = to_text_string(fname)
if fname.lower().endswith('.pdf'):
printer = QPrinter()
@@ -468,7 +466,7 @@ class BasePlot(QwtPlot):
"""
Add a *plot item* instance to this *plot widget*
- item: QwtPlotItem (PyQt4.Qwt5) object implementing
+ item: :py:data:`qwt.QwtPlotItem` object implementing
the IBasePlotItem interface (guiqwt.interfaces)
"""
assert hasattr(item, "__implements__")
@@ -768,9 +766,15 @@ class BasePlot(QwtPlot):
def get_nearest_object(self, pos, close_dist=0):
"""
Return nearest item from position 'pos'
- If close_dist > 0: return the first found item (higher z) which
- distance to 'pos' is less than close_dist
- else: return the closest item
+
+ If close_dist > 0:
+
+ Return the first found item (higher z) which distance to 'pos' is
+ less than close_dist
+
+ else:
+
+ Return the closest item
"""
selobj, distance, inside, handle = None, maxsize, None, None
for obj in self.get_items(z_sorted=True):
diff --git a/guiqwt/builder.py b/guiqwt/builder.py
index 76e3fa6..be5c616 100644
--- a/guiqwt/builder.py
+++ b/guiqwt/builder.py
@@ -113,6 +113,7 @@ class PlotItemBuilder(object):
major_style=None, minor_style=None):
"""
Make `guiqwt.styles.GridParam` instance
+
* background = canvas background color
* major_enabled = tuple (major_xenabled, major_yenabled)
* minor_enabled = tuple (minor_xenabled, minor_yenabled)
@@ -145,6 +146,7 @@ class PlotItemBuilder(object):
major_style=None, minor_style=None):
"""
Make a grid `plot item` (`guiqwt.curve.GridItem` object)
+
* background = canvas background color
* major_enabled = tuple (major_xenabled, major_yenabled)
* minor_enabled = tuple (minor_xenabled, minor_yenabled)
@@ -192,9 +194,9 @@ class PlotItemBuilder(object):
markeredgecolor) # MATLAB-style
param.symbol.edgecolor = markeredgecolor
- def __set_param(self, param, title, color, linestyle, linewidth,
- marker, markersize, markerfacecolor, markeredgecolor,
- shade, fitted, curvestyle, baseline):
+ def __set_param(self, param, title, color, linestyle, linewidth, marker,
+ markersize, markerfacecolor, markeredgecolor, shade,
+ curvestyle, baseline):
"""Apply parameters to a `guiqwt.styles.CurveParam` instance"""
self.__set_baseparam(param, color, linestyle, linewidth, marker,
markersize, markerfacecolor, markeredgecolor)
@@ -202,8 +204,6 @@ class PlotItemBuilder(object):
param.label = title
if shade is not None:
param.shade = shade
- if fitted is not None:
- param.fitted = fitted
if curvestyle is not None:
param.curvestyle = curvestyle
if baseline is not None:
@@ -229,10 +229,11 @@ class PlotItemBuilder(object):
style = args[0]
else:
x, y = get_x_y_from_data(args[0])
- if isinstance(y, ndarray):
- style = next(self.style)
- else:
+ y_matrix = not isinstance(y, ndarray)
+ if y_matrix:
style = [next(self.style) for yi in y]
+ else:
+ style = next(self.style)
elif len(args) == 2:
a1, a2 = args
if is_text_string(a2):
@@ -248,7 +249,7 @@ class PlotItemBuilder(object):
raise TypeError("Wrong number of arguments")
if isinstance(x, (list, tuple)):
x = array(x)
- if isinstance(y, (list, tuple)):
+ if isinstance(y, (list, tuple)) and not y_matrix:
y = array(y)
return x, y, style
@@ -291,7 +292,9 @@ class PlotItemBuilder(object):
(may returns a list of curves if data contains more than one signal)
(:py:class:`guiqwt.curve.CurveItem` object)
- Example: mcurve(x, y, 'r+')
+ Example::
+
+ mcurve(x, y, 'r+')
"""
x, y, style = self.__get_arg_triple_plot(args)
if isinstance(y, ndarray):
@@ -323,7 +326,9 @@ class PlotItemBuilder(object):
based on a `guiqwt.styles.CurveParam` instance
(:py:class:`guiqwt.curve.CurveItem` object)
- Usage: pcurve(x, y, param)
+ Usage::
+
+ pcurve(x, y, param)
"""
curve = CurveItem(param)
curve.set_data(x, y)
@@ -331,45 +336,41 @@ class PlotItemBuilder(object):
self.__set_curve_axes(curve, xaxis, yaxis)
return curve
- def curve(self, x, y, title="",
- color=None, linestyle=None, linewidth=None,
+ def curve(self, x, y, title="", color=None, linestyle=None, linewidth=None,
marker=None, markersize=None, markerfacecolor=None,
- markeredgecolor=None, shade=None, fitted=None,
- curvestyle=None, baseline=None,
+ markeredgecolor=None, shade=None, curvestyle=None, baseline=None,
xaxis="bottom", yaxis="left"):
"""
Make a curve `plot item` from x, y, data
(:py:class:`guiqwt.curve.CurveItem` object)
+
* x: 1D NumPy array
* y: 1D NumPy array
* color: curve color name
- * linestyle: curve line style (MATLAB-like string or attribute name
- from the :py:class:`PyQt4.QtCore.Qt.PenStyle` enum
- (i.e. "SolidLine" "DashLine", "DotLine", "DashDotLine",
- "DashDotDotLine" or "NoPen")
+ * linestyle: curve line style (MATLAB-like string or "SolidLine",
+ "DashLine", "DotLine", "DashDotLine", "DashDotDotLine", "NoPen")
* linewidth: line width (pixels)
- * marker: marker shape (MATLAB-like string or attribute name from
- the :py:class:`PyQt4.Qwt5.QwtSymbol.Style` enum (i.e. "Cross",
+ * marker: marker shape (MATLAB-like string or "Cross",
"Ellipse", "Star1", "XCross", "Rect", "Diamond", "UTriangle",
- "DTriangle", "RTriangle", "LTriangle", "Star2" or "NoSymbol")
+ "DTriangle", "RTriangle", "LTriangle", "Star2", "NoSymbol")
* markersize: marker size (pixels)
* markerfacecolor: marker face color name
* markeredgecolor: marker edge color name
* shade: 0 <= float <= 1 (curve shade)
- * fitted: boolean (fit curve to data)
- * curvestyle: attribute name from the
- :py:class:`PyQt4.Qwt5.QwtPlotCurve.CurveStyle` enum
- (i.e. "Lines", "Sticks", "Steps", "Dots" or "NoCurve")
+ * curvestyle: "Lines", "Sticks", "Steps", "Dots", "NoCurve"
* baseline (float: default=0.0): the baseline is needed for filling
the curve with a brush or the Sticks drawing style.
The interpretation of the baseline depends on the curve type
(horizontal line for "Yfx", vertical line for "Xfy")
* xaxis, yaxis: X/Y axes bound to curve
- Examples:
- curve(x, y, marker='Ellipse', markerfacecolor='#ffffff')
- which is equivalent to (MATLAB-style support):
- curve(x, y, marker='o', markerfacecolor='w')
+ Example::
+
+ curve(x, y, marker='Ellipse', markerfacecolor='#ffffff')
+
+ which is equivalent to (MATLAB-style support)::
+
+ curve(x, y, marker='o', markerfacecolor='w')
"""
basename = _("Curve")
param = CurveParam(title=basename, icon='curve.png')
@@ -378,8 +379,8 @@ class PlotItemBuilder(object):
CURVE_COUNT += 1
title = make_title(basename, CURVE_COUNT)
self.__set_param(param, title, color, linestyle, linewidth, marker,
- markersize, markerfacecolor, markeredgecolor,
- shade, fitted, curvestyle, baseline)
+ markersize, markerfacecolor, markeredgecolor, shade,
+ curvestyle, baseline)
return self.pcurve(x, y, param, xaxis, yaxis)
def merror(self, *args, **kwargs):
@@ -387,7 +388,9 @@ class PlotItemBuilder(object):
Make an errorbar curve `plot item` based on MATLAB-like syntax
(:py:class:`guiqwt.curve.ErrorBarCurveItem` object)
- Example: mcurve(x, y, 'r+')
+ Example::
+
+ mcurve(x, y, 'r+')
"""
x, y, dx, dy, style = self.__get_arg_triple_errorbar(args)
basename = _("Curve")
@@ -410,6 +413,7 @@ class PlotItemBuilder(object):
Make an errorbar curve `plot item`
based on a `guiqwt.styles.ErrorBarParam` instance
(:py:class:`guiqwt.curve.ErrorBarCurveItem` object)
+
* x: 1D NumPy array
* y: 1D NumPy array
* dx: None, or scalar, or 1D NumPy array
@@ -418,7 +422,9 @@ class PlotItemBuilder(object):
* errorbarparam: `guiqwt.styles.ErrorBarParam` object
* xaxis, yaxis: X/Y axes bound to curve
- Usage: perror(x, y, dx, dy, curveparam, errorbarparam)
+ Usage::
+
+ perror(x, y, dx, dy, curveparam, errorbarparam)
"""
curve = ErrorBarCurveItem(curveparam, errorbarparam)
curve.set_data(x, y, dx, dy)
@@ -429,13 +435,13 @@ class PlotItemBuilder(object):
def error(self, x, y, dx, dy, title="",
color=None, linestyle=None, linewidth=None,
errorbarwidth=None, errorbarcap=None, errorbarmode=None,
- errorbaralpha=None, marker=None,
- markersize=None, markerfacecolor=None, markeredgecolor=None,
- shade=None, fitted=None, curvestyle=None,
- baseline=None, xaxis="bottom", yaxis="left"):
+ errorbaralpha=None, marker=None, markersize=None,
+ markerfacecolor=None, markeredgecolor=None, shade=None,
+ curvestyle=None, baseline=None, xaxis="bottom", yaxis="left"):
"""
Make an errorbar curve `plot item`
(:py:class:`guiqwt.curve.ErrorBarCurveItem` object)
+
* x: 1D NumPy array
* y: 1D NumPy array
* dx: None, or scalar, or 1D NumPy array
@@ -454,7 +460,6 @@ class PlotItemBuilder(object):
* markerfacecolor: marker face color name
* markeredgecolor: marker edge color name
* shade: 0 <= float <= 1 (curve shade)
- * fitted: boolean (fit curve to data)
* curvestyle: attribute name from the
:py:class:`PyQt4.Qwt5.QwtPlotCurve.CurveStyle` enum
(i.e. "Lines", "Sticks", "Steps", "Dots" or "NoCurve")
@@ -464,9 +469,12 @@ class PlotItemBuilder(object):
(horizontal line for "Yfx", vertical line for "Xfy")
* xaxis, yaxis: X/Y axes bound to curve
- Examples::
+ Example::
+
error(x, y, None, dy, marker='Ellipse', markerfacecolor='#ffffff')
- which is equivalent to (MATLAB-style support):
+
+ which is equivalent to (MATLAB-style support)::
+
error(x, y, None, dy, marker='o', markerfacecolor='w')
"""
basename = _("Curve")
@@ -479,7 +487,7 @@ class PlotItemBuilder(object):
curveparam.label = make_title(basename, CURVE_COUNT)
self.__set_param(curveparam, title, color, linestyle, linewidth, marker,
markersize, markerfacecolor, markeredgecolor,
- shade, fitted, curvestyle, baseline)
+ shade, curvestyle, baseline)
errorbarparam.color = curveparam.line.color
if errorbarwidth is not None:
errorbarparam.width = errorbarwidth
@@ -497,6 +505,7 @@ class PlotItemBuilder(object):
"""
Make 1D Histogram `plot item`
(:py:class:`guiqwt.histogram.HistogramItem` object)
+
* data (1D NumPy array)
* bins: number of bins (int)
* logscale: Y-axis scale (bool)
@@ -526,7 +535,9 @@ class PlotItemBuilder(object):
based on a `guiqwt.styles.CurveParam` and
`guiqwt.styles.HistogramParam` instances
- Usage: phistogram(data, curveparam, histparam)
+ Usage::
+
+ phistogram(data, curveparam, histparam)
"""
hist = HistogramItem(curveparam, histparam)
hist.update_params()
@@ -709,7 +720,8 @@ class PlotItemBuilder(object):
based on MATLAB-like syntax
(:py:class:`guiqwt.image.QuadGridItem` object)
- Examples:
+ Examples::
+
pcolor(C)
pcolor(X, Y, C)
"""
@@ -732,6 +744,7 @@ class PlotItemBuilder(object):
Make a transformable image `plot item` (image with an arbitrary
affine transform)
(:py:class:`guiqwt.image.TrImageItem` object)
+
* data: 2D NumPy array (image pixel data)
* filename: image filename (if data is not specified)
* title: image title (optional)
@@ -762,6 +775,7 @@ class PlotItemBuilder(object):
"""
Make an xyimage `plot item` (image with non-linear X/Y axes) from data
(:py:class:`guiqwt.image.XYImageItem` object)
+
* x: 1D NumPy array
* y: 1D NumPy array
* data: 2D NumPy array (image pixel data)
@@ -784,6 +798,7 @@ class PlotItemBuilder(object):
"""
Make a rectangular area image filter `plot item`
(:py:class:`guiqwt.image.ImageFilterItem` object)
+
* xmin, xmax, ymin, ymax: filter area bounds
* imageitem: An imageitem instance
* filter: function (x, y, data) --> data
@@ -803,6 +818,7 @@ class PlotItemBuilder(object):
"""
Make a 2D Histogram `plot item`
(:py:class:`guiqwt.image.Histogram2DItem` object)
+
* X: data (1D array)
* Y: data (1D array)
* NX: Number of bins along x-axis (int)
@@ -835,6 +851,7 @@ class PlotItemBuilder(object):
"""
Make a label `plot item`
(:py:class:`guiqwt.label.LabelItem` object)
+
* text: label text (string)
* g: position in plot coordinates (tuple)
or relative position (string)
@@ -843,6 +860,7 @@ class PlotItemBuilder(object):
* title: label name (optional)
Examples::
+
make.label("Relative position", (x[0], y[0]), (10, 10), "BR")
make.label("Absolute position", "R", (0,0), "R")
"""
@@ -872,6 +890,7 @@ class PlotItemBuilder(object):
Make a legend `plot item`
(:py:class:`guiqwt.label.LegendBoxItem` or
:py:class:`guiqwt.label.SelectedLegendBoxItem` object)
+
* anchor: legend position in relative position (string)
* c (optional): position in canvas coordinates (tuple)
* restrict_items (optional):
@@ -952,6 +971,7 @@ class PlotItemBuilder(object):
"""
Make a marker `plot item`
(:py:class:`guiqwt.shapes.Marker` object)
+
* position: tuple (x, y)
* label_cb: function with two arguments (x, y) returning a string
* constraint_cb: function with two arguments (x, y) returning a
@@ -966,10 +986,9 @@ class PlotItemBuilder(object):
(i.e. "SolidLine" "DashLine", "DotLine", "DashDotLine",
"DashDotDotLine" or "NoPen")
* linewidth: line width (pixels)
- * marker: marker shape (MATLAB-like string or attribute name from
- the :py:class:`PyQt4.Qwt5.QwtSymbol.Style` enum (i.e. "Cross",
- "Ellipse", "Star1", "XCross", "Rect", "Diamond", "UTriangle",
- "DTriangle", "RTriangle", "LTriangle", "Star2" or "NoSymbol")
+ * marker: marker shape (MATLAB-like string or "Cross", "Ellipse",
+ "Star1", "XCross", "Rect", "Diamond", "UTriangle", "DTriangle",
+ "RTriangle", "LTriangle", "Star2", "NoSymbol")
* markersize: marker size (pixels)
* markerfacecolor: marker face color name
* markeredgecolor: marker edge color name
@@ -1014,6 +1033,7 @@ class PlotItemBuilder(object):
"""
Make a rectangle shape `plot item`
(:py:class:`guiqwt.shapes.RectangleShape` object)
+
* x0, y0, x1, y1: rectangle coordinates
* title: label name (optional)
"""
@@ -1023,6 +1043,7 @@ class PlotItemBuilder(object):
"""
Make an ellipse shape `plot item`
(:py:class:`guiqwt.shapes.EllipseShape` object)
+
* x0, y0, x1, y1: ellipse x-axis coordinates
* title: label name (optional)
"""
@@ -1036,6 +1057,7 @@ class PlotItemBuilder(object):
"""
Make a circle shape `plot item`
(:py:class:`guiqwt.shapes.EllipseShape` object)
+
* x0, y0, x1, y1: circle diameter coordinates
* title: label name (optional)
"""
@@ -1045,6 +1067,7 @@ class PlotItemBuilder(object):
"""
Make a segment shape `plot item`
(:py:class:`guiqwt.shapes.SegmentShape` object)
+
* x0, y0, x1, y1: segment coordinates
* title: label name (optional)
"""
@@ -1068,6 +1091,7 @@ class PlotItemBuilder(object):
"""
Make an annotated rectangle `plot item`
(:py:class:`guiqwt.annotations.AnnotatedRectangle` object)
+
* x0, y0, x1, y1: rectangle coordinates
* title, subtitle: strings
"""
@@ -1079,6 +1103,7 @@ class PlotItemBuilder(object):
"""
Make an annotated ellipse `plot item`
(:py:class:`guiqwt.annotations.AnnotatedEllipse` object)
+
* x0, y0, x1, y1: ellipse rectangle coordinates
* ratio: ratio between y-axis and x-axis lengths
* title, subtitle: strings
@@ -1093,6 +1118,7 @@ class PlotItemBuilder(object):
"""
Make an annotated circle `plot item`
(:py:class:`guiqwt.annotations.AnnotatedCircle` object)
+
* x0, y0, x1, y1: circle diameter coordinates
* title, subtitle: strings
"""
@@ -1102,6 +1128,7 @@ class PlotItemBuilder(object):
"""
Make an annotated segment `plot item`
(:py:class:`guiqwt.annotations.AnnotatedSegment` object)
+
* x0, y0, x1, y1: segment coordinates
* title, subtitle: strings
"""
@@ -1133,20 +1160,18 @@ class PlotItemBuilder(object):
function=None, title=None):
"""
Make an info label `plot item` showing an XRangeSelection object infos
+ (:py:class:`guiqwt.label.DataInfoLabel` object)
+ (see example: :py:mod:`guiqwt.tests.computations`)
Default function is `lambda x, dx: (x, dx)`.
- Example:
- -------
+ Example::
- x = linspace(-10, 10, 10)
- y = sin(sin(sin(x)))
- range = make.range(-2, 2)
- disp = make.range_info_label(range, 'BL', "x = %.1f ± %.1f cm",
- lambda x, dx: (x, dx))
-
- (:py:class:`guiqwt.label.DataInfoLabel` object)
- (see example: :py:mod:`guiqwt.tests.computations`)
+ x = linspace(-10, 10, 10)
+ y = sin(sin(sin(x)))
+ range = make.range(-2, 2)
+ disp = make.range_info_label(range, 'BL', "x = %.1f ± %.1f cm",
+ lambda x, dx: (x, dx))
"""
info = RangeInfo(label, range, function)
return make.info_label(anchor, info, title=title)
diff --git a/guiqwt/config.py b/guiqwt/config.py
index 471694c..223770e 100644
--- a/guiqwt/config.py
+++ b/guiqwt/config.py
@@ -588,7 +588,6 @@ DEFAULTS = {
"curve/symbol/facecolor": "black",
"curve/symbol/alpha": 1.,
"curve/shade": .85,
- "curve/fitted": False,
"curve/curvestyle": "Steps",
"curve/label": "",
@@ -689,7 +688,6 @@ DEFAULTS = {
"curve/symbol/facecolor": "black",
"curve/symbol/alpha": 1.,
"curve/shade": 0.,
- "curve/fitted": False,
"curve/label": "",
"range/line/style": 'SolidLine',
diff --git a/guiqwt/cross_section.py b/guiqwt/cross_section.py
index 9f94c37..3c7ece9 100644
--- a/guiqwt/cross_section.py
+++ b/guiqwt/cross_section.py
@@ -24,7 +24,7 @@ Example
Simple cross-section demo:
-.. literalinclude:: ../guiqwt/tests/cross_section.py
+.. literalinclude:: /../guiqwt/tests/cross_section.py
Reference
~~~~~~~~~
diff --git a/guiqwt/curve.py b/guiqwt/curve.py
index 28a9e2c..7479b9e 100644
--- a/guiqwt/curve.py
+++ b/guiqwt/curve.py
@@ -873,6 +873,7 @@ class ErrorBarCurveItem(CurveItem):
def get_data(self):
"""
Return error-bar curve data: x, y, dx, dy
+
* x: NumPy array
* y: NumPy array
* dx: float or NumPy array (non-constant error bars)
@@ -883,6 +884,7 @@ class ErrorBarCurveItem(CurveItem):
def set_data(self, x, y, dx=None, dy=None):
"""
Set error-bar curve data:
+
* x: NumPy array
* y: NumPy array
* dx: float or NumPy array (non-constant error bars)
@@ -1127,8 +1129,12 @@ class ItemListWidget(QListWidget):
def get_selected_items(self):
"""Return selected QwtPlot items
- Warning: this is not the same as self.plot.get_selected_items
- --> some items could appear in itemlist without being registered in
+
+ .. warning::
+
+ This is not the same as
+ :py:data:`guiqwt.baseplot.BasePlot.get_selected_items`.
+ Some items could appear in itemlist without being registered in
plot widget items (in particular, some items could be selected in
itemlist without being selected in plot widget)
"""
@@ -1310,6 +1316,7 @@ class CurvePlot(BasePlot):
"""
Construct a 2D curve plotting widget
(this class inherits :py:class:`guiqwt.baseplot.BasePlot`)
+
* parent: parent widget
* title: plot title
* xlabel: (bottom axis title, top axis title) or bottom axis title only
@@ -1318,12 +1325,12 @@ class CurvePlot(BasePlot):
* yunit: (left axis unit, right axis unit) or left axis unit only
* gridparam: GridParam instance
* axes_synchronised: keep all x and y axes synchronised when zomming or
- panning
+ panning
"""
DEFAULT_ITEM_TYPE = ICurveItemType
AUTOSCALE_TYPES = (CurveItem, PolygonMapItem)
- # Signals
+ #: Signal emitted by plot when plot axis has changed, e.g. when panning/zooming (arg: plot))
SIG_PLOT_AXIS_CHANGED = Signal("PyQt_PyObject")
def __init__(self, parent=None, title=None, xlabel=None, ylabel=None,
@@ -1551,8 +1558,9 @@ class CurvePlot(BasePlot):
def add_item(self, item, z=None):
"""
Add a *plot item* instance to this *plot widget*
- * item: QwtPlotItem (PyQt4.Qwt5) object implementing
- the IBasePlotItem interface (guiqwt.interfaces)
+
+ * item: :py:data:`qwt.QwtPlotItem` object implementing
+ the :py:data:`guiqwt.interfaces.IBasePlotItem` interface
* z: item's z order (None -> z = max(self.get_items())+1)
"""
if isinstance(item, QwtPlotCurve):
@@ -1641,6 +1649,7 @@ class CurvePlot(BasePlot):
def get_axis_direction(self, axis_id):
"""
Return axis direction of increasing values
+
* axis_id: axis id (BasePlot.Y_LEFT, BasePlot.X_BOTTOM, ...)
or string: 'bottom', 'left', 'top' or 'right'
"""
@@ -1650,6 +1659,7 @@ class CurvePlot(BasePlot):
def set_axis_direction(self, axis_id, reverse=False):
"""
Set axis direction of increasing values
+
* axis_id: axis id (BasePlot.Y_LEFT, BasePlot.X_BOTTOM, ...)
or string: 'bottom', 'left', 'top' or 'right'
* reverse: False (default)
@@ -1672,6 +1682,7 @@ class CurvePlot(BasePlot):
xunit=None, yunit=None):
"""
Set plot and axes titles at once
+
* title: plot title
* xlabel: (bottom axis title, top axis title)
or bottom axis title only
@@ -1712,7 +1723,9 @@ class CurvePlot(BasePlot):
def set_pointer(self, pointer_type):
"""
Set pointer.
+
Valid values of `pointer_type`:
+
* None: disable pointer
* "canvas": enable canvas pointer
* "curve": enable on-curve pointer
diff --git a/guiqwt/events.py b/guiqwt/events.py
index ea07066..ff85d44 100644
--- a/guiqwt/events.py
+++ b/guiqwt/events.py
@@ -307,7 +307,10 @@ class ClickHandler(QObject):
"""Classe de base pour les gestionnaires d'événements du type
click - release
"""
+
+ #: Signal emitted by ClickHandler on mouse click
SIG_CLICK_EVENT = Signal("PyQt_PyObject", "QEvent")
+
def __init__(self, filter, btn, mods=Qt.NoModifier, start_state=0):
super(ClickHandler, self).__init__()
self.state0 = filter.add_event(start_state,
@@ -342,10 +345,19 @@ class MenuHandler(ClickHandler):
class QtDragHandler(DragHandler):
+
+ #: Signal emitted by QtDragHandler when starting tracking
SIG_START_TRACKING = Signal("PyQt_PyObject", "QEvent")
+
+ #: Signal emitted by QtDragHandler when stopping tracking and not moving
SIG_STOP_NOT_MOVING = Signal("PyQt_PyObject", "QEvent")
+
+ #: Signal emitted by QtDragHandler when stopping tracking and moving
SIG_STOP_MOVING = Signal("PyQt_PyObject", "QEvent")
+
+ #: Signal emitted by QtDragHandler when moving
SIG_MOVE = Signal("PyQt_PyObject", "QEvent")
+
def start_tracking(self, filter, event):
DragHandler.start_tracking(self, filter, event)
self.SIG_START_TRACKING.emit(filter, event)
@@ -584,6 +596,8 @@ class ObjectHandler(object):
class RectangularSelectionHandler(DragHandler):
+
+ #: Signal emitted by RectangularSelectionHandler when ending selection
SIG_END_RECT = Signal("PyQt_PyObject", "QPoint", "QPoint")
def __init__(self, filter, btn, mods=Qt.NoModifier, start_state=0):
diff --git a/guiqwt/histogram.py b/guiqwt/histogram.py
index cf7103f..d4315f2 100644
--- a/guiqwt/histogram.py
+++ b/guiqwt/histogram.py
@@ -28,7 +28,7 @@ Example
Simple histogram plotting example:
-.. literalinclude:: ../guiqwt/tests/histogram.py
+.. literalinclude:: /../guiqwt/tests/histogram.py
Reference
~~~~~~~~~
@@ -122,16 +122,26 @@ class HistogramItem(CurveItem):
self.setCurveAttribute(QwtPlotCurve.Inverted)
def set_hist_source(self, src):
- """Set histogram source
- (source: object with method 'get_histogram',
- e.g. objects derived from guiqwt.image.ImageItem)"""
+ """
+ Set histogram source
+
+ *source*:
+
+ Object with method `get_histogram`, e.g. objects derived from
+ :py:data:`guiqwt.image.ImageItem`
+ """
self.source = weakref.ref(src)
self.update_histogram()
def get_hist_source(self):
- """Return histogram source
- (source: object with method 'get_histogram',
- e.g. objects derived from guiqwt.image.ImageItem)"""
+ """
+ Return histogram source
+
+ *source*:
+
+ Object with method `get_histogram`, e.g. objects derived from
+ :py:data:`guiqwt.image.ImageItem`
+ """
if self.source is not None:
return self.source()
@@ -198,7 +208,10 @@ assert_interfaces_valid(HistogramItem)
class LevelsHistogram(CurvePlot):
"""Image levels histogram widget"""
+
+ #: Signal emitted by LevelsHistogram when LUT range was changed
SIG_VOI_CHANGED = Signal()
+
def __init__(self, parent=None):
super(LevelsHistogram, self).__init__(parent=parent, title="",
section="histogram")
diff --git a/guiqwt/image.py b/guiqwt/image.py
index 6c7f550..9704576 100644
--- a/guiqwt/image.py
+++ b/guiqwt/image.py
@@ -43,6 +43,7 @@ Examples
~~~~~~~~
Create a basic image plotting widget:
+
* before creating any widget, a `QApplication` must be instantiated (that
is a `Qt` internal requirement):
@@ -68,10 +69,11 @@ Generate random data for testing purpose:
>>> data = np.random.rand(100, 100)
Create a simple image item:
+
* from the associated plot item class (e.g. `XYImageItem` to create
an image with non-linear X/Y axes): the item properties are then
assigned by creating the appropriate style parameters object
- (e.g. :py:class:`guiqwt.styles.ImageParam)
+ (e.g. :py:class:`guiqwt.styles.ImageParam`)
>>> from guiqwt.curve import ImageItem
>>> from guiqwt.styles import ImageParam
@@ -370,8 +372,10 @@ class BaseImageItem(QwtPlotItem):
(i.e. indexes may be outside image index bounds: negative or
superior than the image dimension)
- Note: this is *not* the same as retrieving the canvas pixel
- coordinates (which depends on the zoom level)
+ .. note::
+
+ This is *not* the same as retrieving the canvas pixel coordinates
+ (which depends on the zoom level)
"""
x, y = self.get_pixel_coordinates(x, y)
i = int(pixelround(x))
@@ -387,11 +391,12 @@ class BaseImageItem(QwtPlotItem):
def get_data(self, x0, y0, x1=None, y1=None):
"""
Return image data
- Arguments:
- x0, y0 [, x1, y1]
+ Arguments: x0, y0 [, x1, y1]
Return image level at coordinates (x0,y0)
+
If x1,y1 are specified:
- return image levels (np.ndarray) in rectangular area (x0,y0,x1,y1)
+
+ Return image levels (np.ndarray) in rectangular area (x0,y0,x1,y1)
"""
i0, j0 = self.get_closest_indexes(x0, y0)
if x1 is None or y1 is None:
@@ -512,8 +517,11 @@ class BaseImageItem(QwtPlotItem):
def draw_image(self, painter, canvasRect, src_rect, dst_rect, xMap, yMap):
"""
Draw image with painter on canvasRect
- <!> src_rect and dst_rect are coord tuples
- (xleft, ytop, xright, ybottom)
+
+ .. warning::
+
+ `src_rect` and `dst_rect` are coordinates tuples
+ (xleft, ytop, xright, ybottom)
"""
dest = _scale_rect(self.data, src_rect, self._offscreen, dst_rect,
self.lut, self.interpolate)
@@ -762,6 +770,7 @@ assert_interfaces_valid(BaseImageItem)
class RawImageItem(BaseImageItem):
"""
Construct a simple image item
+
* data: 2D NumPy array
* param (optional): image parameters
(:py:class:`guiqwt.styles.RawImageParam` instance)
@@ -837,6 +846,7 @@ class RawImageItem(BaseImageItem):
def set_data(self, data, lut_range=None):
"""
Set Image item data
+
* data: 2D NumPy array
* lut_range: LUT range -- tuple (levelmin, levelmax)
"""
@@ -888,6 +898,7 @@ assert_interfaces_valid(RawImageItem)
class ImageItem(RawImageItem):
"""
Construct a simple image item
+
* data: 2D NumPy array
* param (optional): image parameters
(:py:class:`guiqwt.styles.ImageParam` instance)
@@ -1055,6 +1066,7 @@ assert_interfaces_valid(ImageItem)
class QuadGridItem(RawImageItem):
"""
Construct a QuadGrid image
+
* X, Y, Z: A structured grid of quadrilaterals
each quad is defined by (X[i], Y[i]), (X[i], Y[i+1]),
(X[i+1], Y[i+1]), (X[i+1], Y[i])
@@ -1095,6 +1107,7 @@ class QuadGridItem(RawImageItem):
def set_data(self, data, X=None, Y=None, lut_range=None):
"""
Set Image item data
+
* data: 2D NumPy array
* lut_range: LUT range -- tuple (levelmin, levelmax)
"""
@@ -1137,6 +1150,7 @@ assert_interfaces_valid(QuadGridItem)
class TrImageItem(RawImageItem):
"""
Construct a transformable image item
+
* data: 2D NumPy array
* param (optional): image parameters
(:py:class:`guiqwt.styles.TrImageParam` instance)
@@ -1373,9 +1387,12 @@ def assemble_imageitems(items, src_qrect, destw, desth, align=None,
apply_interpolation=False,
original_resolution=False):
"""
- Assemble together image items in qrect (QRectF object)
+ Assemble together image items in qrect (`QRectF` object)
and return resulting pixel data
- <!> Does not support XYImageItem objects
+
+ .. warning::
+
+ Does not support `XYImageItem` objects
"""
# align width to 'align' bytes
if align is not None:
@@ -1421,8 +1438,8 @@ def assemble_imageitems(items, src_qrect, destw, desth, align=None,
def get_plot_qrect(plot, p0, p1):
"""
- Return QRectF rectangle object in plot coordinates
- from top-left and bottom-right QPoint objects in canvas coordinates
+ Return `QRectF` rectangle object in plot coordinates
+ from top-left and bottom-right `QPoint` objects in canvas coordinates
"""
ax, ay = plot.X_BOTTOM, plot.Y_LEFT
p0x, p0y = plot.invTransform(ax, p0.x()), plot.invTransform(ay, p0.y())
@@ -1431,7 +1448,7 @@ def get_plot_qrect(plot, p0, p1):
def get_items_in_rectangle(plot, p0, p1, item_type=None):
"""Return items which bounding rectangle intersects (p0, p1)
- item_type: default is IExportROIImageItemType"""
+ item_type: default is `IExportROIImageItemType`"""
if item_type is None:
item_type = IExportROIImageItemType
items = plot.get_items(item_type=IExportROIImageItemType)
@@ -1439,7 +1456,7 @@ def get_items_in_rectangle(plot, p0, p1, item_type=None):
return [it for it in items if src_qrect.intersects(it.boundingRect())]
def compute_trimageitems_original_size(items, src_w, src_h):
- """Compute TrImageItem original size from max dx and dy"""
+ """Compute `TrImageItem` original size from max dx and dy"""
trparams = [item.get_transform() for item in items
if isinstance(item, TrImageItem)]
if trparams:
@@ -1453,8 +1470,8 @@ def get_image_from_qrect(plot, p0, p1, src_size=None,
adjust_range=None, item_type=None,
apply_lut=False, apply_interpolation=False,
original_resolution=False):
- """Return image array from QRect area (p0 and p1 are respectively the
- top-left and bottom-right QPoint objects)
+ """Return image array from `QRect` area (p0 and p1 are respectively the
+ top-left and bottom-right `QPoint` objects)
adjust_range: None (return raw data, dtype=np.float32), 'original'
(return data with original data type), 'normalize' (normalize range with
@@ -1507,12 +1524,14 @@ def get_image_from_plot(plot, p0, p1, destw=None, desth=None, add_images=False,
original_resolution=False):
"""
Return pixel data of a rectangular plot area (image items only)
- p0, p1: resp. top-left and bottom-right points (QPoint objects)
+ p0, p1: resp. top-left and bottom-right points (`QPoint` objects)
apply_lut: apply contrast settings
add_images: add superimposed images (instead of replace by the foreground)
- Support only the image items implementing the IExportROIImageItemType
- interface, i.e. this does *not* support XYImageItem objects
+ .. warning::
+
+ Support only the image items implementing the `IExportROIImageItemType`
+ interface, i.e. this does *not* support `XYImageItem` objects
"""
if destw is None:
destw = p1.x()-p0.x()+1
@@ -1540,6 +1559,7 @@ def to_bins(x):
class XYImageItem(RawImageItem):
"""
Construct an image item with non-linear X/Y axes
+
* x: 1D NumPy array, must be increasing
* y: 1D NumPy array, must be increasing
* data: 2D NumPy array
@@ -1684,8 +1704,9 @@ assert_interfaces_valid(XYImageItem)
class RGBImageItem(ImageItem):
"""
Construct a RGB/RGBA image item
+
* data: NumPy array of uint8 (shape: NxMx[34] -- 3: RGB, 4: RGBA)
- (last dimension: 0:Red, 1:Green, 2:Blue[, 3:Alpha])
+ (last dimension: 0: Red, 1: Green, 2: Blue {, 3:Alpha})
* param (optional): image parameters
(:py:class:`guiqwt.styles.RGBImageParam` instance)
"""
@@ -1794,6 +1815,7 @@ class MaskedArea(object):
class MaskedImageItem(ImageItem):
"""
Construct a masked image item
+
* data: 2D NumPy array
* mask (optional): 2D NumPy array
* param (optional): image parameters
@@ -1886,9 +1908,12 @@ class MaskedImageItem(ImageItem):
def set_mask_filename(self, fname):
"""
Set mask filename
- There are two ways for pickling mask data of MaskedImageItem objects:
+
+ There are two ways for pickling mask data of `MaskedImageItem` objects:
+
1. using the mask filename (as for data itself)
- 2. using the mask areas (MaskedAreas instance, see set_mask_areas)
+ 2. using the mask areas (`MaskedAreas` instance, see set_mask_areas)
+
When saving objects, the first method is tried and then, if no
filename has been defined for mask data, the second method is used.
"""
@@ -1918,7 +1943,7 @@ class MaskedImageItem(ImageItem):
self._masked_areas.append(area)
def _mask_changed(self):
- """Emit the SIG_MASK_CHANGED signal (emitter: plot)"""
+ """Emit the :py:data:`guiqwt.baseplot.BasePlot.SIG_MASK_CHANGED` signal"""
plot = self.plot()
if plot is not None:
plot.SIG_MASK_CHANGED.emit(self)
@@ -1968,7 +1993,7 @@ class MaskedImageItem(ImageItem):
trace=True, do_signal=True):
"""
Mask circular area, inside the rectangle (x0, y0, x1, y1), i.e.
- circle with a radius of .5*(x1-x0)
+ circle with a radius of ``.5\*(x1-x0)``
If inside is True (default), mask the inside of the area
Otherwise, mask the outside
"""
@@ -2030,6 +2055,7 @@ class MaskedImageItem(ImageItem):
def set_data(self, data, lut_range=None):
"""
Set Image item data
+
* data: 2D NumPy array
* lut_range: LUT range -- tuple (levelmin, levelmax)
"""
@@ -2051,6 +2077,7 @@ class MaskedImageItem(ImageItem):
class ImageFilterItem(BaseImageItem):
"""
Construct a rectangular area image filter item
+
* image: :py:class:`guiqwt.image.RawImageItem` instance
* filter: function (x, y, data) --> data
* param: image filter parameters
@@ -2076,6 +2103,7 @@ class ImageFilterItem(BaseImageItem):
def set_image(self, image):
"""
Set the image item on which the filter will be applied
+
* image: :py:class:`guiqwt.image.RawImageItem` instance
"""
self.image = image
@@ -2083,6 +2111,7 @@ class ImageFilterItem(BaseImageItem):
def set_filter(self, filter):
"""
Set the filter function
+
* filter: function (x, y, data) --> data
"""
self.filter = filter
@@ -2166,6 +2195,7 @@ class ImageFilterItem(BaseImageItem):
class XYImageFilterItem(ImageFilterItem):
"""
Construct a rectangular area image filter item
+
* image: :py:class:`guiqwt.image.XYImageItem` instance
* filter: function (x, y, data) --> data
* param: image filter parameters
@@ -2177,6 +2207,7 @@ class XYImageFilterItem(ImageFilterItem):
def set_image(self, image):
"""
Set the image item on which the filter will be applied
+
* image: :py:class:`guiqwt.image.XYImageItem` instance
"""
ImageFilterItem.set_image(self, image)
@@ -2215,6 +2246,7 @@ assert_interfaces_valid(ImageFilterItem)
class Histogram2DItem(BaseImageItem):
"""
Construct a 2D histogram item
+
* X: data (1-D array)
* Y: data (1-D array)
* param (optional): style parameters
@@ -2353,6 +2385,7 @@ class ImagePlot(CurvePlot):
"""
Construct a 2D curve and image plotting widget
(this class inherits :py:class:`guiqwt.curve.CurvePlot`)
+
* parent: parent widget
* title: plot title (string)
* xlabel, ylabel, zlabel: resp. bottom, left and right axis titles
@@ -2505,10 +2538,10 @@ class ImagePlot(CurvePlot):
"""
Add a *plot item* instance to this *plot widget*
- item: QwtPlotItem (PyQt4.Qwt5) object implementing
- the IBasePlotItem interface (guiqwt.interfaces)
- z: item's z order (None -> z = max(self.get_items())+1)
- autoscale: True -> rescale plot to fit image bounds
+ * item: :py:data:`qwt.QwtPlotItem` object implementing the
+ :py:data:`guiqwt.interfaces.IBasePlotItem` interface
+ * z: item's z order (None -> z = max(self.get_items())+1)
+ autoscale: True -> rescale plot to fit image bounds
"""
CurvePlot.add_item(self, item, z)
if isinstance(item, BaseImageItem):
diff --git a/guiqwt/panels.py b/guiqwt/panels.py
index 5de9560..bfb0770 100644
--- a/guiqwt/panels.py
+++ b/guiqwt/panels.py
@@ -9,9 +9,10 @@
guiqwt.panels
-------------
-The `panels` module provides :py:class:`guiqwt.curve.PanelWidget` (the `panel`
-widget class from which all panels must derived) and identifiers for each kind
-of panel:
+The `panels` module provides :py:class:`guiqwt.panels.PanelWidget` (the
+`panel` widget class from which all panels must derived from) and identifiers
+for each kind of panel:
+
* :py:data:`guiqwt.panels.ID_ITEMLIST`: ID of the `item list` panel
* :py:data:`guiqwt.panels.ID_CONTRAST`: ID of the `contrast
adjustment` panel
@@ -44,19 +45,19 @@ from guidata.qtwidgets import DockableWidget
# Panel IDs
#===============================================================================
-# Item list panel
+#: Item list panel
ID_ITEMLIST = "itemlist"
-# Contrast adjustment panel
+#: Contrast adjustment panel
ID_CONTRAST = "contrast"
-# X-cross section panel
+#: X-cross section panel
ID_XCS = "x_cross_section"
-# Y-cross section panel
+#: Y-cross section panel
ID_YCS = "y_cross_section"
-# Oblique averaged cross section panel
+#: Oblique averaged cross section panel
ID_OCS = "oblique_cross_section"
@@ -64,9 +65,13 @@ ID_OCS = "oblique_cross_section"
# Base Panel Widget class
#===============================================================================
class PanelWidget(DockableWidget):
+ """Panel Widget base class"""
+
PANEL_ID = None # string
PANEL_TITLE = None # string
PANEL_ICON = None # string
+
+ #: Signal emitted by PanelWidget when its visibility has changed (arg: bool)
SIG_VISIBILITY_CHANGED = Signal(bool)
def __init__(self, parent=None):
diff --git a/guiqwt/plot.py b/guiqwt/plot.py
index 4ddf817..2585da4 100644
--- a/guiqwt/plot.py
+++ b/guiqwt/plot.py
@@ -53,15 +53,15 @@ Class diagrams
Curve-related widgets with integrated plot manager:
-.. image:: images/curve_widgets.png
+.. image:: /images/curve_widgets.png
Image-related widgets with integrated plot manager:
-.. image:: images/image_widgets.png
+.. image:: /images/image_widgets.png
Building your own plot manager:
-.. image:: images/my_plot_manager.png
+.. image:: /images/my_plot_manager.png
Examples
@@ -69,7 +69,7 @@ Examples
Simple example *without* the `plot manager`:
-.. literalinclude:: ../guiqwt/tests/filtertest1.py
+.. literalinclude:: /../guiqwt/tests/filtertest1.py
:start-after: SHOW
:end-before: Workaround for Sphinx v0.6 bug: empty 'end-before' directive
@@ -79,7 +79,7 @@ even if this simple example does not justify the use of the `plot manager`
complex applications, using the `plot manager` allows to design highly versatile
graphical user interfaces.
-.. literalinclude:: ../guiqwt/tests/filtertest2.py
+.. literalinclude:: /../guiqwt/tests/filtertest2.py
:start-after: SHOW
:end-before: Workaround for Sphinx v0.6 bug: empty 'end-before' directive
@@ -255,8 +255,8 @@ class PlotManager(object):
Register a tool to the manager
* ToolKlass: tool's class (`guiqwt` builtin tools are defined in
module :py:mod:`guiqwt.tools`)
- * *args: arguments sent to the tool's class
- * **kwargs: keyword arguments sent to the tool's class
+ * args: arguments sent to the tool's class
+ * kwargs: keyword arguments sent to the tool's class
Plot manager's registration sequence is the following:
1. add plots
@@ -512,11 +512,15 @@ class PlotManager(object):
"""
Register only curve-related tools
- .. seealso:: methods
- :py:meth:`guiqwt.plot.PlotManager.add_tool`
- :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
+ .. seealso::
+
+ :py:meth:`guiqwt.plot.PlotManager.add_tool`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
"""
self.add_tool(SignalStatsTool)
self.add_tool(AntiAliasingTool)
@@ -526,11 +530,15 @@ class PlotManager(object):
"""
Register only image-related tools
- .. seealso:: methods
- :py:meth:`guiqwt.plot.PlotManager.add_tool`
- :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
+ .. seealso::
+
+ :py:meth:`guiqwt.plot.PlotManager.add_tool`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
"""
self.add_tool(ColormapTool)
self.add_tool(ReverseYAxisTool)
@@ -549,11 +557,15 @@ class PlotManager(object):
"""
Register other common tools
- .. seealso:: methods
- :py:meth:`guiqwt.plot.PlotManager.add_tool`
- :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
+ .. seealso::
+
+ :py:meth:`guiqwt.plot.PlotManager.add_tool`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
"""
self.add_tool(SaveAsTool)
self.add_tool(CopyToClipboardTool)
@@ -564,13 +576,19 @@ class PlotManager(object):
"""
Register standard, curve-related and other tools
- .. seealso:: methods
- :py:meth:`guiqwt.plot.PlotManager.add_tool`
- :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_all_image_tools`
+ .. seealso::
+
+ :py:meth:`guiqwt.plot.PlotManager.add_tool`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_all_image_tools`
"""
self.register_standard_tools()
self.add_separator_tool()
@@ -584,13 +602,19 @@ class PlotManager(object):
"""
Register standard, image-related and other tools
- .. seealso:: methods
- :py:meth:`guiqwt.plot.PlotManager.add_tool`
- :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
- :py:meth:`guiqwt.plot.PlotManager.register_all_curve_tools`
+ .. seealso::
+
+ :py:meth:`guiqwt.plot.PlotManager.add_tool`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_standard_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_other_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_curve_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_image_tools`
+
+ :py:meth:`guiqwt.plot.PlotManager.register_all_curve_tools`
"""
self.register_standard_tools()
self.add_separator_tool()
@@ -713,6 +737,7 @@ class CurveWidget(BaseCurveWidget, PlotManager):
"""
Construct a CurveWidget object: plotting widget with integrated
plot manager
+
* parent: parent widget
* title: plot title
* xlabel: (bottom axis title, top axis title) or bottom axis title only
@@ -815,6 +840,7 @@ class CurveDialog(QDialog, CurveWidgetMixin):
"""
Construct a CurveDialog object: plotting dialog box with integrated
plot manager
+
* wintitle: window title
* icon: window icon
* edit: editable state
@@ -865,7 +891,9 @@ class CurveDialog(QDialog, CurveWidgetMixin):
class CurveWindow(QMainWindow, CurveWidgetMixin):
"""
- Construct a CurveWindow object: plotting window with integrated plot manager
+ Construct a CurveWindow object: plotting window with integrated plot
+ manager
+
* wintitle: window title
* icon: window icon
* toolbar: show/hide toolbar
@@ -1011,6 +1039,7 @@ class ImageWidget(BaseImageWidget, PlotManager):
"""
Construct a ImageWidget object: plotting widget with integrated
plot manager
+
* parent: parent widget
* title: plot title (string)
* xlabel, ylabel, zlabel: resp. bottom, left and right axis titles
@@ -1101,6 +1130,7 @@ class ImageDialog(CurveDialog, ImageWidgetMixin):
"""
Construct a ImageDialog object: plotting dialog box with integrated
plot manager
+
* wintitle: window title
* icon: window icon
* edit: editable state
@@ -1115,6 +1145,7 @@ class ImageDialog(CurveDialog, ImageWidgetMixin):
class ImageWindow(CurveWindow, ImageWidgetMixin):
"""
Construct a ImageWindow object: plotting window with integrated plot manager
+
* wintitle: window title
* icon: window icon
* toolbar: show/hide toolbar
diff --git a/guiqwt/pyplot.py b/guiqwt/pyplot.py
index 0a80449..cc7ed18 100644
--- a/guiqwt/pyplot.py
+++ b/guiqwt/pyplot.py
@@ -454,15 +454,16 @@ def subplot(n, m, k):
"""
Create a subplot command
- Example:
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- figure(1)
- subplot(2, 1, 1)
- plot(x, np.sin(x), "r+")
- subplot(2, 1, 2)
- plot(x, np.cos(x), "g-")
- show()
+ Example::
+
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ figure(1)
+ subplot(2, 1, 1)
+ plot(x, np.sin(x), "r+")
+ subplot(2, 1, 2)
+ plot(x, np.cos(x), "g-")
+ show()
"""
global _current_axes
lig = (k-1)/m
@@ -476,13 +477,13 @@ def plot(*args, **kwargs):
"""
Plot curves
- Example:
+ Example::
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- plot(x, np.sin(x), "r+")
- plot(x, np.cos(x), "g-")
- show()
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ plot(x, np.sin(x), "r+")
+ plot(x, np.cos(x), "g-")
+ show()
"""
axe = gca()
curves = make.mcurve(*args, **kwargs)
@@ -497,13 +498,13 @@ def plotyy(x1, y1, x2, y2):
"""
Plot curves with two different y axes
- Example:
+ Example::
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- plotyy(x, np.sin(x), x, np.cos(x))
- ylabel("sinus", "cosinus")
- show()
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ plotyy(x, np.sin(x), x, np.cos(x))
+ ylabel("sinus", "cosinus")
+ show()
"""
axe = gca()
curve1 = make.mcurve(x1, y1, yaxis='left')
@@ -518,12 +519,12 @@ def hist(data, bins=None, logscale=None, title=None, color=None):
"""
Plot 1-D histogram
- Example:
+ Example::
- from numpy.random import normal
- data = normal(0, 1, (2000, ))
- hist(data)
- show()
+ from numpy.random import normal
+ data = normal(0, 1, (2000, ))
+ hist(data)
+ show()
"""
axe = gca()
curve = make.histogram(data, bins=bins, logscale=logscale,
@@ -536,12 +537,12 @@ def semilogx(*args, **kwargs):
"""
Plot curves with logarithmic x-axis scale
- Example:
+ Example::
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- semilogx(x, np.sin(12*x), "g-")
- show()
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ semilogx(x, np.sin(12*x), "g-")
+ show()
"""
axe = gca()
axe.xscale = 'log'
@@ -554,12 +555,12 @@ def semilogy(*args, **kwargs):
"""
Plot curves with logarithmic y-axis scale
- Example:
+ Example::
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- semilogy(x, np.sin(12*x), "g-")
- show()
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ semilogy(x, np.sin(12*x), "g-")
+ show()
"""
axe = gca()
axe.yscale = 'log'
@@ -572,12 +573,12 @@ def loglog(*args, **kwargs):
"""
Plot curves with logarithmic x-axis and y-axis scales
- Example:
+ Example::
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- loglog(x, np.sin(12*x), "g-")
- show()
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ loglog(x, np.sin(12*x), "g-")
+ show()
"""
axe = gca()
axe.xscale = 'log'
@@ -591,12 +592,12 @@ def errorbar(*args, **kwargs):
"""
Plot curves with error bars
- Example:
+ Example::
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- errorbar(x, -1+x**2/20+.2*np.random.rand(len(x)), x/20)
- show()
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ errorbar(x, -1+x**2/20+.2*np.random.rand(len(x)), x/20)
+ show()
"""
axe = gca()
curve = make.merror(*args, **kwargs)
@@ -614,15 +615,14 @@ def imshow(data, interpolation=None, mask=None):
Display the image in *data* to current axes
interpolation: 'nearest', 'linear' (default), 'antialiasing'
- Example:
+ Example::
- import numpy as np
- x = np.linspace(-5, 5, 1000)
- img = np.fromfunction(lambda x, y:
- np.sin((x/200.)*(y/200.)**2), (1000, 1000))
- gray()
- imshow(img)
- show()
+ import numpy as np
+ x = np.linspace(-5, 5, 1000)
+ img = np.fromfunction(lambda x, y: np.sin((x/200.)*(y/200.)**2), (1000, 1000))
+ gray()
+ imshow(img)
+ show()
"""
axe = gca()
import numpy as np
@@ -648,17 +648,17 @@ def pcolor(*args):
"""
Create a pseudocolor plot of a 2-D array
- Example:
+ Example::
- import numpy as np
- r = np.linspace(1., 16, 100)
- th = np.linspace(0., np.pi, 100)
- R, TH = np.meshgrid(r, th)
- X = R*np.cos(TH)
- Y = R*np.sin(TH)
- Z = 4*TH+R
- pcolor(X, Y, Z)
- show()
+ import numpy as np
+ r = np.linspace(1., 16, 100)
+ th = np.linspace(0., np.pi, 100)
+ R, TH = np.meshgrid(r, th)
+ X = R*np.cos(TH)
+ Y = R*np.sin(TH)
+ Z = 4*TH+R
+ pcolor(X, Y, Z)
+ show()
"""
axe = gca()
img = make.pcolor(*args)
diff --git a/guiqwt/shapes.py b/guiqwt/shapes.py
index c38d60a..75b50d7 100644
--- a/guiqwt/shapes.py
+++ b/guiqwt/shapes.py
@@ -878,11 +878,14 @@ class ObliqueRectangleShape(PolygonShape):
def set_rect(self, x0, y0, x1, y1, x2, y2, x3, y3):
"""
Set the rectangle corners coordinates:
+
(x0, y0): top-left corner
(x1, y1): top-right corner
(x2, y2): bottom-right corner
(x3, y3): bottom-left corner
+ ::
+
x: additionnal points (handles used for rotation -- other handles
being used for rectangle resizing)
diff --git a/guiqwt/signals.py b/guiqwt/signals.py
index 2afa1a2..32f3fbc 100644
--- a/guiqwt/signals.py
+++ b/guiqwt/signals.py
@@ -9,9 +9,17 @@
guiqwt.signals
--------------
-The `signals` module contains constants defining the custom Qt SIGNAL objects
-used by `guiqwt`: the signals definition are gathered here to avoid mispelling
-signals at connect and emit sites.
+In `guiqwt` version 2, the `signals` module used to contain constants defining
+the custom Qt SIGNAL objects used by `guiqwt`: the signals definition were
+gathered here to avoid misspelling signals at connect and emit sites (with
+old-style signals, any misspelled signal string would have lead to a silent
+failure of signal emission or connection).
+
+Since version 3, to ensure PyQt5 compatibility, `guiqwt` is using only
+new-style signals and slots.
+
+However, all signals are summarized below, in order to facilitate migration
+from `guiqwt` v2 to `guiqwt` v3.
Signals available:
:py:data:`guiqwt.baseplot.BasePlot.SIG_ITEM_MOVED`
diff --git a/guiqwt/styles.py b/guiqwt/styles.py
index b935388..84962bd 100644
--- a/guiqwt/styles.py
+++ b/guiqwt/styles.py
@@ -859,7 +859,6 @@ class CurveParam(DataSet):
line = LineStyleItem(_("Line"))
symbol = SymbolItem(_("Symbol"))
shade = FloatItem(_("Shadow"), default=0, min=0, max=1)
- fitted = BoolItem(_("Fit curve to data"), _("Fitting"), default=False)
curvestyle = ImageChoiceItem(_("Curve style"), CURVESTYLE_CHOICES,
default="Lines")
baseline = FloatItem(_("Baseline"), default=0.)
@@ -884,8 +883,6 @@ class CurveParam(DataSet):
curve.setBrush(brush)
# Symbol
self.symbol.update_symbol( curve )
- # CurveAttribute
- curve.setCurveAttribute(QwtPlotCurve.Fitted, self.fitted)
# Curve style, type and baseline
curve.setStyle(getattr(QwtPlotCurve, self.curvestyle))
curve.setBaseline(self.baseline)
@@ -1360,9 +1357,11 @@ class MarkerParam(DataSet):
def set_markerstyle(self, style):
"""
Set marker line style
+
style:
+
* convenient values: '+', '-', '|' or None
- * QwtPlotMarker.NoLine, QwtPlotMarker.Vertical, ...
+ * `QwtPlotMarker.NoLine`, `QwtPlotMarker.Vertical`, ...
"""
self.markerstyle = MARKERSTYLES.get(style, style)
diff --git a/guiqwt/tests/qtdesigner.ui b/guiqwt/tests/qtdesigner.ui
index 59b89c4..85a620f 100644
--- a/guiqwt/tests/qtdesigner.ui
+++ b/guiqwt/tests/qtdesigner.ui
@@ -5,8 +5,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>779</width>
- <height>1056</height>
+ <width>500</width>
+ <height>800</height>
</rect>
</property>
<property name="windowTitle" >
diff --git a/guiqwt/tools.py b/guiqwt/tools.py
index 7987d93..41e0c7a 100644
--- a/guiqwt/tools.py
+++ b/guiqwt/tools.py
@@ -88,11 +88,11 @@ Example
The following example add all the existing tools to an `ImageWidget` object
for testing purpose:
-.. literalinclude:: ../guiqwt/tests/image_plot_tools.py
+.. literalinclude:: /../guiqwt/tests/image_plot_tools.py
:start-after: SHOW
:end-before: Workaround for Sphinx v0.6 bug: empty 'end-before' directive
-.. image:: images/screenshots/image_plot_tools.png
+.. image:: /images/screenshots/image_plot_tools.png
Reference
@@ -359,12 +359,18 @@ class GuiTool(QObject):
class InteractiveTool(GuiTool):
+ """Interactive tool base class"""
+
TITLE = None
ICON = None
TIP = None
CURSOR = Qt.CrossCursor
SWITCH_TO_DEFAULT_TOOL = False # switch to default tool when finished
+
+ #: Signal emitted by InteractiveTool when validating tool action
SIG_VALIDATE_TOOL = Signal()
+
+ #: Signal emitted by InteractiveTool when tool job is finished
SIG_TOOL_JOB_FINISHED = Signal()
def __init__(self, manager, toolbar_id=DefaultToolbarID,
@@ -1694,7 +1700,10 @@ class PrintTool(CommandTool):
class OpenFileTool(CommandTool):
+
+ #: Signal emitted by OpenFileTool when a file was opened (arg: filename)
SIG_OPEN_FILE = Signal(str)
+
def __init__(self, manager, title=_("Open..."), formats='*.*',
toolbar_id=DefaultToolbarID):
super(OpenFileTool, self).__init__(manager, title,
@@ -2081,6 +2090,8 @@ class ColormapTool(CommandTool):
class ImageMaskTool(CommandTool):
+
+ #: Signal emitted by ImageMaskTool when mask was applied
SIG_APPLIED_MASK_TOOL = Signal()
def __init__(self, manager, toolbar_id=DefaultToolbarID):
diff --git a/guiqwt/transitional.py b/guiqwt/transitional.py
index 67bf674..f16d4ce 100644
--- a/guiqwt/transitional.py
+++ b/guiqwt/transitional.py
@@ -16,10 +16,6 @@ No other ``guiqwt`` module should import ``qwt`` or use any of its
interfaces directly.
"""
-from __future__ import print_function
-import sys
-
-print("Using experimental 'pure Python' qwt API", file=sys.stderr)
from qwt import (QwtPlot, QwtSymbol, QwtLinearScaleEngine, QwtLogScaleEngine,
QwtText, QwtPlotCanvas, QwtLinearColorMap, QwtInterval,
toQImage, QwtPlotGrid, QwtPlotItem, QwtScaleMap, QwtPlotCurve,
diff --git a/guiqwt/widgets/fit.py b/guiqwt/widgets/fit.py
index 0f98520..c5541bb 100644
--- a/guiqwt/widgets/fit.py
+++ b/guiqwt/widgets/fit.py
@@ -19,11 +19,11 @@ The `fit` module provides an interactive curve fitting widget/dialog allowing:
Example
~~~~~~~
-.. literalinclude:: ../guiqwt/tests/fit.py
+.. literalinclude:: /../guiqwt/tests/fit.py
:start-after: SHOW
:end-before: Workaround for Sphinx v0.6 bug: empty 'end-before' directive
-.. image:: images/screenshots/fit.png
+.. image:: /images/screenshots/fit.png
Reference
~~~~~~~~~
diff --git a/py2exe_example/create_exe.py b/py2exe_example/create_exe.py
deleted file mode 100644
index da89b4b..0000000
--- a/py2exe_example/create_exe.py
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-Created on Sun May 26 11:11:57 2013
-
-Buiding instructions:
-python setup.py py2exe
-
- at author: pierre
-"""
-
-from guidata import disthelpers as dh
-
-def create_exe():
- dist = dh.Distribution()
- dist.setup('example', '1.0', 'guiqwt app example', 'simpledialog.pyw')
- dist.add_modules('guidata', 'guiqwt')
- dist.build_cx_freeze() # use `build_py2exe` to use py2exe instead
-
-if __name__ == '__main__':
- create_exe()
-
\ No newline at end of file
diff --git a/py2exe_example/simpledialog.pyw b/py2exe_example/simpledialog.pyw
deleted file mode 100644
index 2387449..0000000
--- a/py2exe_example/simpledialog.pyw
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright © 2009-2010 CEA
-# Pierre Raybaut
-# Licensed under the terms of the CECILL License
-# (see guiqwt/__init__.py for details)
-
-"""Very simple dialog box"""
-
-from guiqwt.plot import ImageDialog
-from guiqwt.builder import make
-
-class VerySimpleDialog(ImageDialog):
- def set_data(self, data):
- plot = self.get_plot()
- item = make.trimage(data)
- plot.add_item(item, z=0)
- plot.set_active_item(item)
- plot.replot()
-
-if __name__ == "__main__":
- import numpy as np
- from guidata import qapplication
- _app = qapplication()
- dlg = VerySimpleDialog()
- dlg.set_data(np.random.rand(100, 100))
- dlg.exec_() # No need to call app.exec_: a dialog box has its own event loop
diff --git a/setup.cfg b/setup.cfg
index 9828790..ce27595 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,5 @@
[egg_info]
-tag_build =
tag_svn_revision = 0
+tag_build =
tag_date = 0
diff --git a/src/pcolor.cpp b/src/pcolor.cpp
index cff8217..06d680f 100644
--- a/src/pcolor.cpp
+++ b/src/pcolor.cpp
@@ -16,7 +16,7 @@
#include <fenv.h>
#endif
#include <math.h>
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__MINGW32__)
#define isnan(x) _isnan(x)
#endif
#include <stdio.h>
diff --git a/src/scaler.cpp b/src/scaler.cpp
index 66181ef..f2b2c30 100644
--- a/src/scaler.cpp
+++ b/src/scaler.cpp
@@ -26,7 +26,7 @@
#include <fenv.h>
#endif
#include <math.h>
-#ifdef _MSC_VER
+#if defined(_MSC_VER) || defined(__MINGW32__)
#define isnan(x) _isnan(x)
#endif
#include <stdio.h>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/guiqwt.git
More information about the debian-science-commits
mailing list