summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPicca Frédéric-Emmanuel <picca@debian.org>2018-04-28 09:39:10 +0200
committerPicca Frédéric-Emmanuel <picca@debian.org>2018-04-28 09:39:10 +0200
commite01cf05d2093eb8a5a06aa4754c94f23ed672a8d (patch)
treef3a546f2e443caca06c20ce9e0a89ed190839c22
parent32400c26f363f6302432515b00218872a70db282 (diff)
parenta9695cd9edb7b272e0b2dcd20882c2580dd9fb61 (diff)
Update upstream source from tag 'upstream/5.3.1+dfsg'
Update to upstream version '5.3.1+dfsg' with Debian dir 2fd44b4cb3676b603d39857d2a0825b716177219
-rw-r--r--LICENSE5
-rw-r--r--MANIFEST.in3
-rw-r--r--PKG-INFO4
-rw-r--r--PyMca5.egg-info/PKG-INFO4
-rw-r--r--PyMca5.egg-info/SOURCES.txt69
-rw-r--r--PyMca5/Object3D/Object3DRedBookFont.py11
-rw-r--r--PyMca5/Object3D/SceneGLWidget.py95
-rw-r--r--PyMca5/PyMcaCore/NexusTools.py46
-rw-r--r--PyMca5/PyMcaCore/Plugin1DBase.py107
-rw-r--r--PyMca5/PyMcaCore/StackPluginBase.py111
-rw-r--r--PyMca5/PyMcaDataDir.py58
-rw-r--r--PyMca5/PyMcaGui/PyMcaQt.py14
-rw-r--r--PyMca5/PyMcaGui/io/QEdfFileWidget.py3
-rw-r--r--PyMca5/PyMcaGui/io/QSourceSelector.py14
-rw-r--r--PyMca5/PyMcaGui/io/hdf5/QNexusWidget.py11
-rw-r--r--PyMca5/PyMcaGui/plotting/PlotWindow.py3
-rw-r--r--PyMca5/PyMcaGui/plotting/PyMca_Icons.py501
-rw-r--r--PyMca5/PyMcaGui/pymca/Median2DBrowser.py7
-rw-r--r--PyMca5/PyMcaGui/pymca/PyMcaBatch.py5
-rw-r--r--PyMca5/PyMcaGui/pymca/PyMcaMain.py3
-rw-r--r--PyMca5/PyMcaGui/pymca/PyMcaMdi.py3
-rw-r--r--PyMca5/PyMcaGui/pymca/QStackWidget.py6
-rw-r--r--PyMca5/PyMcaIO/BAXSCSVFileParser.py1
-rw-r--r--PyMca5/PyMcaIO/HDF5Stack1D.py2
-rw-r--r--PyMca5/PyMcaIO/OlympusCSVFileParser.py1
-rw-r--r--PyMca5/PyMcaIO/ThermoEMSFileParser.py1
-rw-r--r--PyMca5/PyMcaIO/sps/Include/sps_lut.h38
-rw-r--r--PyMca5/PyMcaPhysics/xrf/Elements.py1
-rw-r--r--PyMca5/__init__.py2
-rw-r--r--PyMca5/tests/StackInfoTest.py15
-rw-r--r--changelog.txt767
-rw-r--r--copyright36
-rw-r--r--doc/source/PyMca5.EPDL97.rst83
-rw-r--r--doc/source/PyMca5.Object3D.Object3DPlugins.rst43
-rw-r--r--doc/source/PyMca5.Object3D.rst259
-rw-r--r--doc/source/PyMca5.PyMca.rst11
-rw-r--r--doc/source/PyMca5.PyMcaCore.rst155
-rw-r--r--doc/source/PyMca5.PyMcaGraph.backends.rst27
-rw-r--r--doc/source/PyMca5.PyMcaGraph.ctools.rst11
-rw-r--r--doc/source/PyMca5.PyMcaGraph.rst48
-rw-r--r--doc/source/PyMca5.PyMcaGui.io.hdf5.rst51
-rw-r--r--doc/source/PyMca5.PyMcaGui.io.rst82
-rw-r--r--doc/source/PyMca5.PyMcaGui.math.fitting.rst131
-rw-r--r--doc/source/PyMca5.PyMcaGui.math.rst82
-rw-r--r--doc/source/PyMca5.PyMcaGui.misc.rst83
-rw-r--r--doc/source/PyMca5.PyMcaGui.physics.rst22
-rw-r--r--doc/source/PyMca5.PyMcaGui.physics.xrf.rst171
-rw-r--r--doc/source/PyMca5.PyMcaGui.plotting.rst107
-rw-r--r--doc/source/PyMca5.PyMcaGui.pymca.rst371
-rw-r--r--doc/source/PyMca5.PyMcaGui.rst31
-rw-r--r--doc/source/PyMca5.PyMcaIO.rst235
-rw-r--r--doc/source/PyMca5.PyMcaMath.PyMcaSciPy.rst10
-rw-r--r--doc/source/PyMca5.PyMcaMath.PyMcaSciPy.signal.rst19
-rw-r--r--doc/source/PyMca5.PyMcaMath.fitting.rst51
-rw-r--r--doc/source/PyMca5.PyMcaMath.mva.py_nnma.rst20
-rw-r--r--doc/source/PyMca5.PyMcaMath.mva.rst42
-rw-r--r--doc/source/PyMca5.PyMcaMath.rst69
-rw-r--r--doc/source/PyMca5.PyMcaMath.sift.rst75
-rw-r--r--doc/source/PyMca5.PyMcaMisc.rst11
-rw-r--r--doc/source/PyMca5.PyMcaPhysics.rst27
-rw-r--r--doc/source/PyMca5.PyMcaPhysics.xas.rst19
-rw-r--r--doc/source/PyMca5.PyMcaPhysics.xrf.XRFMC.rst19
-rw-r--r--doc/source/PyMca5.PyMcaPhysics.xrf.rst162
-rw-r--r--doc/source/PyMca5.PyMcaPlugins.rst291
-rw-r--r--doc/source/PyMca5.rst37
-rw-r--r--doc/source/PyMca5.tests.rst91
-rw-r--r--doc/source/_templates/localtoc.html13
-rw-r--r--doc/source/_templates/pagesource.html7
-rw-r--r--doc/source/changelog.rst4
-rw-r--r--doc/source/conf.py36
-rw-r--r--doc/source/customization/index.rst8
-rw-r--r--doc/source/customization/plugins1d.rst20
-rw-r--r--doc/source/customization/stackplugins.rst21
-rw-r--r--doc/source/faq.rst73
-rw-r--r--doc/source/hdf5/index.rst72
-rw-r--r--doc/source/img/PyMca.icobin0 -> 186943 bytes
-rw-r--r--doc/source/img/PyMca_256x256.pngbin0 -> 158500 bytes
-rw-r--r--doc/source/index.rst75
-rw-r--r--doc/source/install.rst282
-rw-r--r--doc/source/license.rst7
-rw-r--r--doc/source/modules.rst7
-rw-r--r--doc/source/modules/core/index.rst8
-rw-r--r--doc/source/modules/core/nexustools.rst5
-rw-r--r--doc/source/modules/index.rst8
-rw-r--r--doc/source/overview.rst21
-rw-r--r--doc/source/tutorials.rst38
-rw-r--r--doc/source/xrf/material-definition/img/materials_01.jpgbin0 -> 25477 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_02.jpgbin0 -> 26319 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_03.jpgbin0 -> 33114 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_04.jpgbin0 -> 22234 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_05.jpgbin0 -> 23486 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_06.jpgbin0 -> 23563 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_07.jpgbin0 -> 24230 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_08.jpgbin0 -> 25609 bytes
-rw-r--r--doc/source/xrf/material-definition/img/materials_09.jpgbin0 -> 26689 bytes
-rw-r--r--doc/source/xrf/material-definition/index.rst99
-rw-r--r--doc/source/xrf/strip-background/img/stripbackground_01.pngbin0 -> 40868 bytes
-rw-r--r--doc/source/xrf/strip-background/img/stripbackground_02.pngbin0 -> 13085 bytes
-rw-r--r--doc/source/xrf/strip-background/img/stripbackground_03.pngbin0 -> 55582 bytes
-rw-r--r--doc/source/xrf/strip-background/img/stripbackground_04.pngbin0 -> 49692 bytes
-rw-r--r--doc/source/xrf/strip-background/img/stripbackground_05.pngbin0 -> 53768 bytes
-rw-r--r--doc/source/xrf/strip-background/index.rst72
-rw-r--r--package/debian8/changelog6
-rw-r--r--package/debian8/rules14
-rw-r--r--package/debian9/changelog6
-rw-r--r--package/debian9/rules14
-rw-r--r--requirements.txt24
-rw-r--r--setup.py4
108 files changed, 2136 insertions, 3701 deletions
diff --git a/LICENSE b/LICENSE
index 219c80b..0597758 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,4 @@
- The PyMca X-Ray Fluorescence Toolkit is Copyright (C) 2004-2014 of the
- European Synchrotron Radiation Facility (ESRF).
+ The PyMca X-Ray Fluorescence Toolkit is Copyright (C) 2004-2018 of the European Synchrotron Radiation Facility (ESRF).
Unless otherways stated in the relevant accompanying source code, the default license of these modules is MIT.
@@ -9,7 +8,7 @@ If, despite its permisivity, the license accompanying any of the PyMca modules i
The MIT license follows:
-Copyright (c) 2004-2014 European Synchrotron Radiation Facility (ESRF)
+Copyright (c) 2004-2018 European Synchrotron Radiation Facility (ESRF)
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff --git a/MANIFEST.in b/MANIFEST.in
index e8eb4ab..b7d32b2 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -13,7 +13,8 @@ include README
include build-deb.sh
include version.py
include copyright
-recursive-include doc *.py *.rst
+include requirements.txt
+recursive-include doc *.py *.rst *.html *.ico *.png *.jpg
recursive-include doc/man *.1
recursive-include icons *.icns *.ico *_256x256.png
recursive-include PyMca5/EPDL97 *.DAT
diff --git a/PKG-INFO b/PKG-INFO
index ae8e6a6..efbd49f 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: PyMca5
-Version: 5.3.0
+Version: 5.3.1
Summary: Mapping and X-Ray Fluorescence Analysis
Home-page: http://pymca.sourceforge.net
Author: V. Armando Sole
Author-email: sole@esrf.fr
License: MIT
-Download-URL: https://github.com/vasole/pymca/archive/v5.3.0.tar.gz
+Download-URL: https://github.com/vasole/pymca/archive/v5.3.1.tar.gz
Description: Stand-alone application and Python tools for interactive and/or batch processing analysis of X-Ray Fluorescence Spectra. Graphical user interface (GUI) and batch processing capabilities provided
Platform: any
diff --git a/PyMca5.egg-info/PKG-INFO b/PyMca5.egg-info/PKG-INFO
index ae8e6a6..efbd49f 100644
--- a/PyMca5.egg-info/PKG-INFO
+++ b/PyMca5.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: PyMca5
-Version: 5.3.0
+Version: 5.3.1
Summary: Mapping and X-Ray Fluorescence Analysis
Home-page: http://pymca.sourceforge.net
Author: V. Armando Sole
Author-email: sole@esrf.fr
License: MIT
-Download-URL: https://github.com/vasole/pymca/archive/v5.3.0.tar.gz
+Download-URL: https://github.com/vasole/pymca/archive/v5.3.1.tar.gz
Description: Stand-alone application and Python tools for interactive and/or batch processing analysis of X-Ray Fluorescence Spectra. Graphical user interface (GUI) and batch processing capabilities provided
Platform: any
diff --git a/PyMca5.egg-info/SOURCES.txt b/PyMca5.egg-info/SOURCES.txt
index f4ffb11..666eb72 100644
--- a/PyMca5.egg-info/SOURCES.txt
+++ b/PyMca5.egg-info/SOURCES.txt
@@ -12,6 +12,7 @@ cx_setup.py
nsisscript.nsi.in
py2app_setup.py
qtconffile
+requirements.txt
setup.py
version.py
PyMca5/PyMcaDataDir.py
@@ -777,43 +778,41 @@ doc/man/pymcabatch.1
doc/man/pymcapostbatch.1
doc/man/pymcaroitool.1
doc/man/rgbcorrelator.1
-doc/source/PyMca5.EPDL97.rst
-doc/source/PyMca5.Object3D.Object3DPlugins.rst
-doc/source/PyMca5.Object3D.rst
-doc/source/PyMca5.PyMca.rst
-doc/source/PyMca5.PyMcaCore.rst
-doc/source/PyMca5.PyMcaGraph.backends.rst
-doc/source/PyMca5.PyMcaGraph.ctools.rst
-doc/source/PyMca5.PyMcaGraph.rst
-doc/source/PyMca5.PyMcaGui.io.hdf5.rst
-doc/source/PyMca5.PyMcaGui.io.rst
-doc/source/PyMca5.PyMcaGui.math.fitting.rst
-doc/source/PyMca5.PyMcaGui.math.rst
-doc/source/PyMca5.PyMcaGui.misc.rst
-doc/source/PyMca5.PyMcaGui.physics.rst
-doc/source/PyMca5.PyMcaGui.physics.xrf.rst
-doc/source/PyMca5.PyMcaGui.plotting.rst
-doc/source/PyMca5.PyMcaGui.pymca.rst
-doc/source/PyMca5.PyMcaGui.rst
-doc/source/PyMca5.PyMcaIO.rst
-doc/source/PyMca5.PyMcaMath.PyMcaSciPy.rst
-doc/source/PyMca5.PyMcaMath.PyMcaSciPy.signal.rst
-doc/source/PyMca5.PyMcaMath.fitting.rst
-doc/source/PyMca5.PyMcaMath.mva.py_nnma.rst
-doc/source/PyMca5.PyMcaMath.mva.rst
-doc/source/PyMca5.PyMcaMath.rst
-doc/source/PyMca5.PyMcaMath.sift.rst
-doc/source/PyMca5.PyMcaMisc.rst
-doc/source/PyMca5.PyMcaPhysics.rst
-doc/source/PyMca5.PyMcaPhysics.xas.rst
-doc/source/PyMca5.PyMcaPhysics.xrf.XRFMC.rst
-doc/source/PyMca5.PyMcaPhysics.xrf.rst
-doc/source/PyMca5.PyMcaPlugins.rst
-doc/source/PyMca5.rst
-doc/source/PyMca5.tests.rst
+doc/source/changelog.rst
doc/source/conf.py
+doc/source/faq.rst
doc/source/index.rst
-doc/source/modules.rst
+doc/source/install.rst
+doc/source/license.rst
+doc/source/overview.rst
+doc/source/tutorials.rst
+doc/source/_templates/localtoc.html
+doc/source/_templates/pagesource.html
+doc/source/customization/index.rst
+doc/source/customization/plugins1d.rst
+doc/source/customization/stackplugins.rst
+doc/source/hdf5/index.rst
+doc/source/img/PyMca.ico
+doc/source/img/PyMca_256x256.png
+doc/source/modules/index.rst
+doc/source/modules/core/index.rst
+doc/source/modules/core/nexustools.rst
+doc/source/xrf/material-definition/index.rst
+doc/source/xrf/material-definition/img/materials_01.jpg
+doc/source/xrf/material-definition/img/materials_02.jpg
+doc/source/xrf/material-definition/img/materials_03.jpg
+doc/source/xrf/material-definition/img/materials_04.jpg
+doc/source/xrf/material-definition/img/materials_05.jpg
+doc/source/xrf/material-definition/img/materials_06.jpg
+doc/source/xrf/material-definition/img/materials_07.jpg
+doc/source/xrf/material-definition/img/materials_08.jpg
+doc/source/xrf/material-definition/img/materials_09.jpg
+doc/source/xrf/strip-background/index.rst
+doc/source/xrf/strip-background/img/stripbackground_01.png
+doc/source/xrf/strip-background/img/stripbackground_02.png
+doc/source/xrf/strip-background/img/stripbackground_03.png
+doc/source/xrf/strip-background/img/stripbackground_04.png
+doc/source/xrf/strip-background/img/stripbackground_05.png
icons/PyMca.icns
icons/PyMca.ico
icons/PyMca_256x256.png
diff --git a/PyMca5/Object3D/Object3DRedBookFont.py b/PyMca5/Object3D/Object3DRedBookFont.py
index b4b5125..bd20729 100644
--- a/PyMca5/Object3D/Object3DRedBookFont.py
+++ b/PyMca5/Object3D/Object3DRedBookFont.py
@@ -30,6 +30,13 @@ import OpenGL.GL as GL
import numpy
from . import Object3DQt as qt
+if hasattr(qt, 'QOpenGLWidget'): # PyQt>=5.4
+ _BaseOpenGLWidget = qt.QOpenGLWidget
+elif hasattr(qt, 'QGLWidget'):
+ _BaseOpenGLWidget = qt.QGLWidget
+else:
+ raise ImportError("QOpenGLWidget is not available.")
+
rasters = numpy.array([
[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
[0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18],
@@ -150,9 +157,9 @@ class Object3DRedBookFont:
GL.glPopAttrib()
-class TestWidget(qt.QGLWidget):
+class TestWidget(_BaseOpenGLWidget):
def initializeGL(self):
- qt.QGLWidget.initializeGL(self)
+ _BaseOpenGLWidget.initializeGL(self)
self.redBookFont = Object3DRedBookFont()
self.redBookFont.initialize()
diff --git a/PyMca5/Object3D/SceneGLWidget.py b/PyMca5/Object3D/SceneGLWidget.py
index 6eb8d4c..dc33d65 100644
--- a/PyMca5/Object3D/SceneGLWidget.py
+++ b/PyMca5/Object3D/SceneGLWidget.py
@@ -1,5 +1,5 @@
#/*##########################################################################
-# Copyright (C) 2004-2017 V.A. Sole, European Synchrotron Radiation Facility
+# Copyright (C) 2004-2018 V.A. Sole, European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
@@ -43,7 +43,18 @@ QTVERSION = qt.qVersion()
DEBUG = 0
SCENE_MATRIX = True
-class SceneGLWidget(qt.QGLWidget):
+
+if hasattr(qt, 'QOpenGLWidget'): # PyQt>=5.4
+ _BaseOpenGLWidget = qt.QOpenGLWidget
+ USING_QOPENGLWIDGET = True
+elif hasattr(qt, 'QGLWidget'):
+ _BaseOpenGLWidget = qt.QGLWidget
+ USING_QOPENGLWIDGET = False
+else:
+ raise ImportError("QOpenGLWidget not available.")
+
+
+class SceneGLWidget(_BaseOpenGLWidget):
sigScaleChanged = qt.pyqtSignal(object)
sigObjectSelected = qt.pyqtSignal(object)
@@ -51,8 +62,8 @@ class SceneGLWidget(qt.QGLWidget):
sigMouseMoved = qt.pyqtSignal(object)
def __init__(self, parent = None, scene=None):
- #qt.QGLWidget.__init__(self, qt.QGLFormat(qt.QGL.SampleBuffers), parent)
- qt.QGLWidget.__init__(self, parent)
+ #_BaseOpenGLWidget.__init__(self, qt.QGLFormat(qt.QGL.SampleBuffers), parent)
+ _BaseOpenGLWidget.__init__(self, parent)
if 1:
self.__test = None
else:
@@ -86,7 +97,8 @@ class SceneGLWidget(qt.QGLWidget):
self._objectSelectionMode = False
self._vertexSelectionMode = False
self.__selectingVertex = False
- self.setAutoBufferSwap(False)
+ if hasattr(self, "setAutoBufferSwap"):
+ self.setAutoBufferSwap(False)
self.autoScale = True
self.coordinates = Object3DCoordinates.Object3DCoordinates(self)
self.lastPos = qt.QPoint()
@@ -98,6 +110,14 @@ class SceneGLWidget(qt.QGLWidget):
self.__outOfSelectMode = False
self.__cacheTexture = GLWidgetCachePixmap.GLWidgetCachePixmap()
+ if USING_QOPENGLWIDGET:
+ def updateGL(self):
+ return self.update()
+
+ def swapBuffers(self):
+ pass
+ # no need to get the context with self.context() to swap buffers
+
def setCurrentViewPosition(self, position, rotation_reset=None):
if rotation_reset is None:
rotation_reset = True
@@ -433,34 +453,42 @@ class SceneGLWidget(qt.QGLWidget):
#prepare a pure virtual method for derived classes ???
self.userPaintGL()
-
#keep a copy of the current image
#self.__finalImage = GL.glReadPixelsub(0,0, self.width(),self.height(),
if GL.glGetIntegerv(GL.GL_RENDER_MODE) != GL.GL_SELECT and\
(not self.__selectingVertex):
- GL.glReadBuffer(GL.GL_BACK)
- self.__finalImage = GL.glReadPixelsub(0,0,
- self.width(), self.height(),
- GL.GL_RGBA, GL.GL_UNSIGNED_BYTE)
- if not hasattr(self.__finalImage, "dtype"):
- # we did not receive an array (python 3) ...
- self.__finalImage = numpy.fromstring(self.__finalImage,
- dtype=numpy.uint8)
-
- self.__cacheTexture.setPixmap(self.__finalImage,
- self.width(), self.height())
- self.__usingCache = True
- #self.saveImage()
-
- if self.doubleBuffer():
- if not self.autoBufferSwap():
- if not self.__selectingVertex:
- if GL.glGetIntegerv(GL.GL_RENDER_MODE) == GL.GL_RENDER:
- self.swapBuffers()
- else:
- print("WARNING: Expected to work with autoBufferSwap off")
-
+ try:
+ # next line crashes on windows with intel HD 5500 with Qt 5.10.1
+ GL.glReadBuffer(GL.GL_BACK)
+ self.__finalImage = GL.glReadPixelsub(0,0,
+ self.width(), self.height(),
+ GL.GL_RGBA, GL.GL_UNSIGNED_BYTE)
+ if not hasattr(self.__finalImage, "dtype"):
+ # we did not receive an array (python 3) ...
+ self.__finalImage = numpy.fromstring(self.__finalImage,
+ dtype=numpy.uint8)
+
+ self.__cacheTexture.setPixmap(self.__finalImage,
+ self.width(), self.height())
+ self.__usingCache = True
+ #self.saveImage()
+ except:
+ self.__usingCache = False
+
+
+ if hasattr(self, "doubleBuffer"):
+ if self.doubleBuffer():
+ if not self.autoBufferSwap():
+ if not self.__selectingVertex:
+ if GL.glGetIntegerv(GL.GL_RENDER_MODE) == GL.GL_RENDER:
+ self.swapBuffers()
+ else:
+ print("WARNING: Expected to work with autoBufferSwap off")
+ else:
+ if not self.__selectingVertex:
+ if GL.glGetIntegerv(GL.GL_RENDER_MODE) == GL.GL_RENDER:
+ self.swapBuffers()
if 0:
#keep a hardcopy of the image
image = GL.glReadPixels(0,0,self.width(),self.height(),
@@ -947,14 +975,14 @@ gluPickMatrix(GLdouble x, GLdouble y, GLdouble deltax, GLdouble deltay,
def renderText(self, x, y, z, text, font = None, listbase = 2000):
GL.glGetError()
GL.glGetError()
- qt.QGLWidget.renderText(self, x, y, z, text, font, listbase)
+ _BaseOpenGLWidget.renderText(self, x, y, z, text, font, listbase)
GL.glGetError()
GL.glGetError()
def renderText(self, x, y, z, text, font = None, listbase = 2000):
if font is None: font=self.font()
if (QTVERSION < '4.3.2') or (QTVERSION > '4.4.0'):
- qt.QGLWidget.renderText(self, x, y, z, text, font, listbase)
+ _BaseOpenGLWidget.renderText(self, x, y, z, text, font, listbase)
else:
if 0:
GL.glRasterPos3d(x, y, z)
@@ -1073,9 +1101,11 @@ gluPickMatrix(GLdouble x, GLdouble y, GLdouble deltax, GLdouble deltay,
else:
print("no signal")
+
+ if hasattr(self, "doneCurrent"):
+ self.doneCurrent()
qt.QApplication.postEvent(self,
qt.QResizeEvent(qt.QSize(width,height),self.size()))
-
elif self._vertexSelectionMode:
#self.setCacheEnabled(False)
if DEBUG:
@@ -1375,7 +1405,6 @@ gluPickMatrix(GLdouble x, GLdouble y, GLdouble deltax, GLdouble deltay,
qt.QApplication.postEvent(self,
qt.QResizeEvent(self.size(),self.size()))
-
def print3D(self):
"""
#This worked on Qt3
@@ -1396,7 +1425,7 @@ gluPickMatrix(GLdouble x, GLdouble y, GLdouble deltax, GLdouble deltay,
def closeEvent(self, event):
self.__cacheTexture.openGLCleanup()
self.setCacheEnabled(False)
- qt.QGLWidget.closeEvent(self, event)
+ _BaseOpenGLWidget.closeEvent(self, event)
if __name__ == '__main__':
import sys
diff --git a/PyMca5/PyMcaCore/NexusTools.py b/PyMca5/PyMcaCore/NexusTools.py
index fd39a4b..17a1177 100644
--- a/PyMca5/PyMcaCore/NexusTools.py
+++ b/PyMca5/PyMcaCore/NexusTools.py
@@ -202,8 +202,9 @@ def getMcaList(h5file, path, dataset=False, ignore=None):
datasetList.append(obj)
else:
datasetList.append(obj.name)
-
- h5file[path].visititems(visit_function)
+ if hasattr(h5file[path], "visititems"):
+ # prevent errors dealing with toplevel datasets
+ h5file[path].visititems(visit_function)
return datasetList
def getMcaObjectPaths(h5file, mcaPath):
@@ -220,10 +221,16 @@ def getMcaObjectPaths(h5file, mcaPath):
- counts
- channels
- calibration
+
+ The information below will be read but is not used as it does not belong to the
+ detector but to a yet-to-be-defined PyMca XRF application definition. Please do
+ not rely on it.
+
- i0
- it
- - i02flux
- - it2flux
+ - i0_to_flux_factor
+ - it_to_flux_factor
+
"""
if not mcaPath.startswith("/"):
# this is needed in order to avoid posixpath to return
@@ -241,8 +248,8 @@ def getMcaObjectPaths(h5file, mcaPath):
"i0_to_flux_factor",
"it_to_flux_factor"]
+ # This initialization is not needed (at least for the time being)
#mca["channels"] = None
- #mca["i0"] = None
#mca["live_time"] = None
#mca["elapsed_time"] = None
#mca["preset_time"]= None
@@ -325,8 +332,13 @@ def getNXClassGroups(h5file, path, classes, single=False):
def getPositionersGroup(h5file, path):
"""
Retrieve the positioners group associated to a path
- retrieving them from the same entry (assuming they are in
- NXentry/instrument/positioners)
+ retrieving them from the same entry.
+
+ It assumes they are either in:
+
+ - NXentry/NXinstrument/positioners or
+ - NXentry/measurement/pre_scan_snapshot
+
"""
entry_path = getEntryName(path)
instrument = getNXClassGroups(h5file, entry_path, ["NXinstrument", b"NXinstrument"], single=True)
@@ -349,11 +361,25 @@ def getPositionersGroup(h5file, path):
return positioners
def getMeasurementGroup(h5file, path):
+ """
+ Retrieve the measurement group associated to a path
+ retrieving them from the same entry.
+
+ It looks for:
+
+ - A group named measurement at the entry level
+ - The NXdata group at the entry level with the greater number of datasets
+
+ """
if path in ["/", b"/", "", b""]:
raise ValueError("path cannot be the toplevel root")
entry_path = getEntryName(path)
entry = h5file[entry_path]
- items_list = entry.items()
+ if hasattr(entry, "items"):
+ items_list = entry.items()
+ else:
+ # we have received a top level dataset
+ return None
measurement = None
for key, group in items_list:
if key in ["measurement", b"measurement"]:
@@ -400,8 +426,10 @@ def getInstrumentGroup(h5file, path):
def getScannedPositioners(h5file, path):
"""
- Try to retrieve the positioners (aka. motors) that were moved
+ Try to retrieve the positioners (aka. motors) that were moved.
+
For that:
+
- Look for datasets present at measurement and positioners groups
- Look for positioners with more than one single value
- Look for datasets present at measurement and title
diff --git a/PyMca5/PyMcaCore/Plugin1DBase.py b/PyMca5/PyMcaCore/Plugin1DBase.py
index 66c5130..fe63ece 100644
--- a/PyMca5/PyMcaCore/Plugin1DBase.py
+++ b/PyMca5/PyMcaCore/Plugin1DBase.py
@@ -36,43 +36,39 @@ perform user defined operations of the plotted 1D data.
Plugins can be automatically installed provided they are in the appropriate place:
- - In the user home directory: ${HOME}/PyMca/plugins (POSIX systems)
- - In "My Documents\\\\PyMca\\\\plugins" (Windows)
+ - In the user home directory: *${HOME}/PyMca/plugins* (POSIX systems)
+ - In *"My Documents\\\\PyMca\\\\plugins"* (Windows)
-A plugin inherit the Plugin1DBase.Plugin1DBase class and implement the methods:
+A plugin inherit the :class:`Plugin1DBase` class and implement the methods:
- - getMethods
- - getMethodToolTip (optional but convenient)
- - getMethodPixmap (optional)
- - applyMethod
+ - :meth:`Plugin1DBase.getMethods`
+ - :meth:`Plugin1DBase.getMethodToolTip` (optional but convenient)
+ - :meth:`Plugin1DBase.getMethodPixmap` (optional)
+ - :meth:`Plugin1DBase.applyMethod`
-and modify the static module variable MENU_TEXT and the static module function
-getPlugin1DInstance according to the defined plugin.
+and modify the static module variable :const:`MENU_TEXT` and the static module function
+:func:`getPlugin1DInstance` according to the defined plugin.
These plugins will be compatible with any 1D-plot window that implements the Plot1D
interface. The plot window interface is described in the Plot1DBase class.
The main items are reproduced here and can be directly accessed as plugin methods.
- - addCurve
- - getActiveCurve
- - getAllCurves
- - getGraphXLimits
- - getGraphYLimits
- - getGraphTitle
- - getGraphXLabel
- - getGraphXTitle
- - getGraphYLabel
- - getGraphYTitle
- - removeCurve
- - setActiveCurve
- - setGraphTitle
- - setGraphXLimits
- - setGraphYLimits
- - setGraphXLabel
- - setGraphYLabel
- - setGraphXTitle
- - setGraphYTitle
+ - :meth:`Plugin1DBase.addCurve`
+ - :meth:`Plugin1DBase.getActiveCurve`
+ - :meth:`Plugin1DBase.getAllCurves`
+ - :meth:`Plugin1DBase.getGraphXLimits`
+ - :meth:`Plugin1DBase.getGraphYLimits`
+ - :meth:`Plugin1DBase.getGraphTitle`
+ - :meth:`Plugin1DBase.getGraphXLabel`
+ - :meth:`Plugin1DBase.getGraphYLabel`
+ - :meth:`Plugin1DBase.removeCurve`
+ - :meth:`Plugin1DBase.setActiveCurve`
+ - :meth:`Plugin1DBase.setGraphTitle`
+ - :meth:`Plugin1DBase.setGraphXLimits`
+ - :meth:`Plugin1DBase.setGraphYLimits`
+ - :meth:`Plugin1DBase.setGraphXLabel`
+ - :meth:`Plugin1DBase.setGraphYLabel`
A simple plugin example, normalizing each curve to its maximum and vertically
shifting the curves.
@@ -197,7 +193,7 @@ class Plugin1DBase(object):
:type replace: boolean default False
:param replot: Flag to indicate plot is to be immediately updated
:type replot: boolean default True
- :param **kw: Additional keywords recognized by the plot window.
+ :param kw: Additional keywords recognized by the plot window.
Beware that the keywords recognized by *silx* and *PyMca*
plot windows may differ.
"""
@@ -217,19 +213,22 @@ class Plugin1DBase(object):
"""
:param just_legend: Flag to specify the type of output required
:type just_legend: boolean
- :return: legend of the active curve or list [x, y, legend, info]
+ :return: legend of the active curve or list ``[x, y, legend, info]``
:rtype: string or list
Function to access the graph currently active curve.
It returns None in case of not having an active curve.
- Default output has the form:
+ Default output has the form::
+
xvalues, yvalues, legend, dict
- where dict is a dictionary containing curve info.
- For the time being, only the plot labels associated to the
- curve are warranted to be present under the keys xlabel, ylabel.
+
+ where dict is a dictionary containing curve info.
+ For the time being, only the plot labels associated to the
+ curve are warranted to be present under the keys xlabel, ylabel.
If just_legend is True:
+
The legend of the active curve (or None) is returned.
"""
curve = self._plotWindow.getActiveCurve(just_legend=just_legend)
@@ -251,21 +250,21 @@ class Plugin1DBase(object):
"""
:param just_legend: Flag to specify the type of output required
:type just_legend: boolean
- :return: legend of the curves or list [[x, y, legend, info], ...]
+ :return: legend of the curves or list ``[[x, y, legend, info], ...]``
:rtype: list of strings or list of curves
It returns an empty list in case of not having any curve.
- If just_legend is False:
- It returns a list of the form:
+
+ If just_legend is *False*, it returns a list of the form::
+
[[xvalues0, yvalues0, legend0, dict0],
[xvalues1, yvalues1, legend1, dict1],
[...],
[xvaluesn, yvaluesn, legendn, dictn]]
- or just an empty list.
- If just_legend is True:
- It returns a list of the form:
+
+ If just_legend is *True*, it returns a list of the form::
+
[legend0, legend1, ..., legendn]
- or just an empty list.
"""
all_curves = []
for curve in self._plotWindow.getAllCurves(just_legend=just_legend):
@@ -287,10 +286,11 @@ class Plugin1DBase(object):
def getMonotonicCurves(self):
"""
- Convenience method that calls getAllCurves and makes sure that all of
+ Convenience method that calls :meth:`getAllCurves` and makes sure that all of
the X values are strictly increasing.
- :return: It returns a list of the form:
+ It returns a list of the form::
+
[[xvalues0, yvalues0, legend0, dict0],
[xvalues1, yvalues1, legend1, dict1],
[...],
@@ -342,10 +342,6 @@ class Plugin1DBase(object):
return self._plotWindow.getGraphXLabel()
def getGraphXTitle(self):
- """
- :return: The graph X axis label
- :rtype: string
- """
print("getGraphXTitle deprecated, use getGraphXLabel")
return self._plotWindow.getGraphXLabel()
@@ -357,10 +353,6 @@ class Plugin1DBase(object):
return self._plotWindow.getGraphYLabel()
def getGraphYTitle(self):
- """
- :return: The graph Y axis label
- :rtype: string
- """
print("getGraphYTitle deprecated, use getGraphYLabel")
return self._plotWindow.getGraphYLabel()
@@ -427,6 +419,10 @@ class Plugin1DBase(object):
return self._plotWindow.setGraphTitle(title)
def setGraphXTitle(self, title):
+ print("setGraphXTitle deprecated, use setGraphXLabel")
+ self.setGraphXLabel(title)
+
+ def setGraphXLabel(self, title):
"""
:param title: The title to be associated to the X axis
:type title: string
@@ -436,6 +432,10 @@ class Plugin1DBase(object):
return self._plotWindow.setGraphXLabel(title)
def setGraphYTitle(self, title):
+ print("setGraphYTitle deprecated, use setGraphYLabel")
+ self.setGraphYLabel(title)
+
+ def setGraphYLabel(self, title):
"""
:param title: The title to be associated to the X axis
:type title: string
@@ -481,13 +481,14 @@ class Plugin1DBase(object):
MENU_TEXT = "Plugin1D Base"
+"""This is the name of the plugin, as it appears in the plugins menu."""
def getPlugin1DInstance(plotWindow, **kw):
"""
This function will be called by the plot window instantiating and calling
- the plugins. It passes itslef as first argument, but the default implementation
- of the base class only keeps a weak reference to prevent cirvular references.
+ the plugins. It passes itself as first argument, but the default implementation
+ of the base class only keeps a weak reference to prevent circular references.
"""
ob = Plugin1DBase(plotWindow)
return ob
diff --git a/PyMca5/PyMcaCore/StackPluginBase.py b/PyMca5/PyMcaCore/StackPluginBase.py
index 1dfc333..78f9bb2 100644
--- a/PyMca5/PyMcaCore/StackPluginBase.py
+++ b/PyMca5/PyMcaCore/StackPluginBase.py
@@ -30,57 +30,82 @@ __author__ = "V.A. Sole - ESRF Data Analysis"
__contact__ = "sole@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
-__doc__="""
+__doc__ = """
A Stack plugin is a module that will be automatically added to the PyMca stack windows
in order to perform user defined operations on the data stack. It has to
-inherit the StackPluginBase.StackPluginBase class and implement the methods:
-
- - getMethods
- - getMethodToolTip (optional but convenient)
- - getMethodPixmap (optional)
- - applyMethod
-
-and modify the static module variable MENU_TEXT and the static module function
-getStackPluginInstance according to the defined plugin.
-
-These plugins will be compatible with any stack window that provides the functions:
+inherit the :class:`StackPluginBase` class and implement the following methods:
+
+ - :meth:`StackPluginBase.getMethods`
+ - :meth:`StackPluginBase.getMethodToolTip` (optional but convenient)
+ - :meth:`StackPluginBase.getMethodPixmap` (optional)
+ - :meth:`StackPluginBase.applyMethod`
+
+and modify the static module variable :const:`MENU_TEXT` and the static module function
+:func:`getStackPluginInstance` according to the defined plugin.
+
+The plugin class has access to following inherited methods:
+
+ - :meth:`StackPluginBase.addImage`
+ - :meth:`StackPluginBase.getActiveCurve`
+ - :meth:`StackPluginBase.getGraphXLabel`
+ - :meth:`StackPluginBase.getGraphXLimits`
+ - :meth:`StackPluginBase.getGraphYLabel`
+ - :meth:`StackPluginBase.getGraphYLimits`
+ - :meth:`StackPluginBase.getStackData`
+ - :meth:`StackPluginBase.getStackDataObject`
+ - :meth:`StackPluginBase.getStackDataObjectList`
+ - :meth:`StackPluginBase.getStackInfo`
+ - :meth:`StackPluginBase.getStackOriginalCurve`
+ - :meth:`StackPluginBase.getStackOriginalImage`
+ - :meth:`StackPluginBase.getStackROIImagesAndNames`
+ - :meth:`StackPluginBase.getStackSelectionMask`
+ - :meth:`StackPluginBase.isStackFinite`
+ - :meth:`StackPluginBase.removeImage`
+ - :meth:`StackPluginBase.replaceImage`
+ - :meth:`StackPluginBase.setStack`
+ - :meth:`StackPluginBase.setStackSelectionMask`
+ - :meth:`StackPluginBase.stackClosed`
+
+
+These plugins will be compatible with any stack window that provides the following methods:
#data related
- - getStackDataObject
- - getStackData
- - getStackInfo
- - setStack
- - getStackROIImagesAndNames
- - isStackFinite
- - getStackOriginalCurve
- - getStackOriginalImage
+ - :meth:`getStackDataObject`
+ - :meth:`getStackData`
+ - :meth:`getStackInfo`
+ - :meth:`setStack`
+ - :meth:`getStackROIImagesAndNames`
+ - :meth:`isStackFinite`
+ - :meth:`getStackOriginalCurve`
+ - :meth:`getStackOriginalImage`
#mask related
- - setStackSelectionMask
- - getStackSelectionMask
+ - :meth:`setStackSelectionMask`
+ - :meth:`getStackSelectionMask`
#displayed curves
- - getActiveCurve
- - getGraphXLimits
- - getGraphYLimits
- - getGraphXLabel
- - getGraphYLabel
+ - :meth:`getActiveCurve`
+ - :meth:`getGraphXLimits`
+ - :meth:`getGraphYLimits`
+ - :meth:`getGraphXLabel`
+ - :meth:`getGraphYLabel`
#images
- - addImage
- - removeImage
- - replaceImage
+ - :meth:`addImage`
+ - :meth:`removeImage`
+ - :meth:`replaceImage`
#information method
- - stackUpdated
- - selectionMaskUpdated
- - stackClosed
+ - :meth:`stackUpdated`
+ - :meth:`selectionMaskUpdated`
+ - :meth:`stackClosed`
+
"""
import weakref
@@ -150,11 +175,14 @@ class StackPluginBase(object):
Function to access the currently active curve.
It returns None in case of not having an active curve.
- Output has the form:
+ Output has the form::
+
xvalues, yvalues, legend, dict
- where dict is a dictionnary containing curve info.
- For the time being, only the plot labels associated to the
- curve are warranted to be present under the keys xlabel, ylabel.
+
+ where dict is a dictionnary containing curve info.
+
+ For the time being, only the plot labels associated to the
+ curve are warranted to be present under the keys xlabel, ylabel.
"""
return self._stackWindow.getActiveCurve()
@@ -236,7 +264,16 @@ class StackPluginBase(object):
print("applyMethod not implemented")
return
+
MENU_TEXT = "StackPluginBase"
+"""This is the name of the plugin, as it appears in the plugins menu."""
+
+
def getStackPluginInstance(stackWindow, **kw):
+ """
+ This function will be called by the stack window instantiating and calling
+ the plugins. It passes itself as first argument, but the default implementation
+ of the base class only keeps a weak reference to prevent circular references.
+ """
ob = StackPluginBase(stackWindow)
return ob
diff --git a/PyMca5/PyMcaDataDir.py b/PyMca5/PyMcaDataDir.py
index c6c6f24..edcb654 100644
--- a/PyMca5/PyMcaDataDir.py
+++ b/PyMca5/PyMcaDataDir.py
@@ -36,31 +36,46 @@ PYMCA_DATA_DIR = 'DATA_DIR_FROM_SETUP'
# This is to be filled by the setup
PYMCA_DOC_DIR = 'DOC_DIR_FROM_SETUP'
+PYMCA_DATA_DIR_ENV = os.getenv("PYMCA_DATA_DIR")
+if PYMCA_DATA_DIR_ENV is not None:
+ PYMCA_DATA_DIR = PYMCA_DATA_DIR_ENV
+ if not os.path.exists(PYMCA_DATA_DIR):
+ raise IOError('%s directory set from environment not found' % \
+ PYMCA_DATA_DIR)
+ else:
+ txt = "WARNING: Taking PYMCA_DATA_DIR from environment.\n"
+ txt += "Use it at your own risk."
+ print(txt)
+
+
# this is used in build directory
if not os.path.exists(PYMCA_DATA_DIR):
tmp_dir = os.path.dirname(os.path.abspath(__file__))
old_tmp_dir = tmp_dir + "dummy"
basename = "PyMcaData"
- PYMCA_DATA_DIR = os.path.join(tmp_dir, "PyMca5", basename)
- while (len(PYMCA_DATA_DIR) > 20) and (tmp_dir != old_tmp_dir):
- if os.path.exists(PYMCA_DATA_DIR):
+ PYMCA_DATA_DIR_BUILD = os.path.join(tmp_dir, "PyMca5", basename)
+ while (len(PYMCA_DATA_DIR_BUILD) > 20) and (tmp_dir != old_tmp_dir):
+ if os.path.exists(PYMCA_DATA_DIR_BUILD):
+ PYMCA_DATA_DIR = PYMCA_DATA_DIR_BUILD
break
old_tmp_dir = tmp_dir
tmp_dir = os.path.dirname(tmp_dir)
- PYMCA_DATA_DIR = os.path.join(tmp_dir, "PyMca5", basename)
+ PYMCA_DATA_DIR_BUILD = os.path.join(tmp_dir, "PyMca5", basename)
if not os.path.exists(PYMCA_DATA_DIR):
- PYMCA_DATA_DIR = os.getenv("PYMCA_DATA_DIR")
- if PYMCA_DATA_DIR is not None:
- if not os.path.exists(PYMCA_DATA_DIR):
- raise IOError('%s directory set from environent not found' % \
+ raise IOError('%s directory not found' % PYMCA_DATA_DIR)
+
+
+PYMCA_DOC_DIR_ENV = os.getenv("PYMCA_DOC_DIR")
+if PYMCA_DOC_DIR_ENV is not None:
+ PYMCA_DOC_DIR = PYMCA_DOC_DIR_ENV
+ if not os.path.exists(PYMCA_DOC_DIR):
+ raise IOError('%s directory set from environent not found' % \
PYMCA_DATA_DIR)
- else:
- txt = "WARNING: Taking PYMCA_DATA_DIR from environement.\n"
- txt += "Use it at your own risk."
- print(txt)
else:
- raise IOError('%s directory not found' % basename)
+ txt = "WARNING: Taking PYMCA_DOC_DIR from environement.\n"
+ txt += "Use it at your own risk."
+ print(txt)
# do the same for the directory containing HTML files
if not os.path.exists(PYMCA_DOC_DIR):
@@ -74,21 +89,6 @@ if not os.path.exists(PYMCA_DOC_DIR):
old_tmp_dir = tmp_dir
tmp_dir = os.path.dirname(tmp_dir)
PYMCA_DOC_DIR = os.path.join(tmp_dir, "PyMca5", basename)
-
-if not os.path.exists(PYMCA_DOC_DIR):
- PYMCA_DOC_DIR = os.getenv("PYMCA_DOC_DIR")
- if PYMCA_DOC_DIR is not None:
- if not os.path.exists(PYMCA_DOC_DIR):
- raise IOError('%s directory set from environent not found' % \
- PYMCA_DATA_DIR)
- else:
- txt = "WARNING: Taking PYMCA_DOC_DIR from environement.\n"
- txt += "Use it at your own risk."
- print(txt)
- else:
- # use the data dir as doc dir
+ if not os.path.exists(PYMCA_DOC_DIR):
print("Setting PYMCA_DOC_DIR equal to PYMCA_DATA_DIR")
PYMCA_DOC_DIR = PYMCA_DATA_DIR
-
-if not os.path.exists(PYMCA_DOC_DIR):
- raise IOError('%s documentation directory not found' % basename)
diff --git a/PyMca5/PyMcaGui/PyMcaQt.py b/PyMca5/PyMcaGui/PyMcaQt.py
index 41c1fba..467ac81 100644
--- a/PyMca5/PyMcaGui/PyMcaQt.py
+++ b/PyMca5/PyMcaGui/PyMcaQt.py
@@ -166,6 +166,20 @@ class VerticalSpacer(QWidget):
QWidget.__init__(self, *args)
self.setSizePolicy(QSizePolicy(QSizePolicy.Fixed,
QSizePolicy.Expanding))
+_QToolButton = QToolButton
+class QToolButton(_QToolButton):
+ def __init__(self, *var, **kw):
+ _QToolButton.__init__(self, *var, **kw)
+ if "silx" in sys.modules:
+ try:
+ # this should be set via a user accessible parameter
+ tb = QToolBar()
+ size = tb.iconSize()
+ if (size.width() > 15) and (size.height() > 15):
+ self.setIconSize(size)
+ except:
+ print("unable")
+ pass
if sys.version_info < (3,):
import types
diff --git a/PyMca5/PyMcaGui/io/QEdfFileWidget.py b/PyMca5/PyMcaGui/io/QEdfFileWidget.py
index cc3638f..7b9819d 100644
--- a/PyMca5/PyMcaGui/io/QEdfFileWidget.py
+++ b/PyMca5/PyMcaGui/io/QEdfFileWidget.py
@@ -1,5 +1,5 @@
#/*##########################################################################
-# Copyright (C) 2004-2016 E. Papillon, V.A. Sole, European Synchrotron Radiation Facility
+# Copyright (C) 2004-2018 E. Papillon, V.A. Sole, European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
@@ -313,6 +313,7 @@ class QEdfFileWidget(qt.QWidget):
self.toolBar = qt.QWidget(self)
self.toolBarLayout = qt.QHBoxLayout(self.toolBar)
+ self.toolBarLayout.setSpacing(0)
self.toolBarLayout.setContentsMargins(0, 0, 0, 0)
self.mainLayout.addWidget(self.toolBar)
#Autoscale
diff --git a/PyMca5/PyMcaGui/io/QSourceSelector.py b/PyMca5/PyMcaGui/io/QSourceSelector.py
index 744c6be..8d16946 100644
--- a/PyMca5/PyMcaGui/io/QSourceSelector.py
+++ b/PyMca5/PyMcaGui/io/QSourceSelector.py
@@ -1,5 +1,5 @@
#/*##########################################################################
-# Copyright (C) 2004-2017 V.A. Sole, European Synchrotron Radiation Facility
+# Copyright (C) 2004-2018 V.A. Sole, European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
@@ -67,10 +67,10 @@ class QSourceSelector(qt.QWidget):
self.fileCombo = qt.QComboBox(self.fileWidget)
self.fileCombo.setEditable(0)
self.mapCombo= {}
- openButton= qt.QToolButton(self.fileWidget)
+ openButton= qt.QPushButton(self.fileWidget)
self.openIcon = qt.QIcon(qt.QPixmap(icons.fileopen))
- self.closeIcon = qt.QIcon(qt.QPixmap(icons.fileclose))
+ self.closeIcon = qt.QIcon(qt.QPixmap(icons.close))
self.reloadIcon = qt.QIcon(qt.QPixmap(icons.reload_))
self.specIcon = qt.QIcon(qt.QPixmap(icons.spec))
@@ -78,15 +78,15 @@ class QSourceSelector(qt.QWidget):
openButton.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Fixed, qt.QSizePolicy.Minimum))
openButton.setToolTip("Open new file data source")
- closeButton= qt.QToolButton(self.fileWidget)
+ closeButton= qt.QPushButton(self.fileWidget)
closeButton.setIcon(self.closeIcon)
closeButton.setToolTip("Close current data source")
- refreshButton= qt.QToolButton(self.fileWidget)
+ refreshButton= qt.QPushButton(self.fileWidget)
refreshButton.setIcon(self.reloadIcon)
refreshButton.setToolTip("Refresh data source")
- specButton= qt.QToolButton(self.fileWidget)
+ specButton= qt.QPushButton(self.fileWidget)
specButton.setIcon(self.specIcon)
specButton.setToolTip("Open new shared memory source")
@@ -109,7 +109,7 @@ class QSourceSelector(qt.QWidget):
fileWidgetLayout.addWidget(refreshButton)
self.specButton = specButton
if pluginsIcon:
- self.pluginsButton = qt.QToolButton(self.fileWidget)
+ self.pluginsButton = qt.QPushButton(self.fileWidget)
self.pluginsButton.setIcon(qt.QIcon(qt.QPixmap(icons.plugin)))
self.pluginsButton.setToolTip("Plugin handling")
fileWidgetLayout.addWidget(self.pluginsButton)
diff --git a/PyMca5/PyMcaGui/io/hdf5/QNexusWidget.py b/PyMca5/PyMcaGui/io/hdf5/QNexusWidget.py
index b664985..ba3ddbc 100644
--- a/PyMca5/PyMcaGui/io/hdf5/QNexusWidget.py
+++ b/PyMca5/PyMcaGui/io/hdf5/QNexusWidget.py
@@ -681,11 +681,12 @@ class QNexusWidget(qt.QWidget):
if ddict['mouse'] == "left":
# If parent is root do it even if not NXentry??
if ddict['type'] in ['NXentry', 'Entry']:
- auto = self.actions.getConfiguration()["auto"]
- if auto == "ADD":
- self._addAction()
- elif auto == "REPLACE":
- self._replaceAction()
+ if not self._BUTTONS:
+ auto = self.actions.getConfiguration()["auto"]
+ if auto == "ADD":
+ self._addAction()
+ elif auto == "REPLACE":
+ self._replaceAction()
if ddict['event'] == "itemDoubleClicked":
if ddict['type'] in ['Dataset']:
currentIndex = self.tableTab.currentIndex()
diff --git a/PyMca5/PyMcaGui/plotting/PlotWindow.py b/PyMca5/PyMcaGui/plotting/PlotWindow.py
index a8921fe..8dc46f7 100644
--- a/PyMca5/PyMcaGui/plotting/PlotWindow.py
+++ b/PyMca5/PyMcaGui/plotting/PlotWindow.py
@@ -80,7 +80,8 @@ class PlotWindow(PlotWidget.PlotWidget):
self.setWindowType(None) # None, "SCAN", "MCA"
self._initIcons()
self._buildToolBar(kw)
- self.setIconSize(qt.QSize(16, 16))
+ if "silx" not in sys.modules:
+ self.setIconSize(qt.QSize(16, 16))
self._toggleCounter = 0
self._keepDataAspectRatioFlag = False
self.gridLevel = 0
diff --git a/PyMca5/PyMcaGui/plotting/PyMca_Icons.py b/PyMca5/PyMcaGui/plotting/PyMca_Icons.py
index f0000c5..17854e7 100644
--- a/PyMca5/PyMcaGui/plotting/PyMca_Icons.py
+++ b/PyMca5/PyMcaGui/plotting/PyMca_Icons.py
@@ -1,5 +1,5 @@
#/*##########################################################################
-# Copyright (C) 2004-2017 V.A. Sole, European Synchrotron Radiation Facility
+# Copyright (C) 2004-2018 V.A. Sole, European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
@@ -27,6 +27,19 @@ __author__ = "V.A. Sole - ESRF Data Analysis"
__contact__ = "sole@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
+
+import logging
+import sys
+from PyMca5.PyMcaGui import PyMcaQt as qt
+
+if sys.version_info < (3, ):
+ from collections import MutableMapping
+else:
+ from collections.abc import MutableMapping
+
+_logger = logging.getLogger(__name__)
+
+
aspect_ratio = [
#/* columns rows colors chars-per-pixel */
"32 32 5 1",
@@ -3646,14 +3659,313 @@ zoomreset = [
">pppppppppppp >"
]
+# Object3DIcons
+
+image_print_data = [
+"22 22 88 2",
+"Qt c None",
+".2 c #000000",
+".S c #08ff08",
+"#v c #100810",
+".U c #101010",
+"#c c #101018",
+".M c #181018",
+"#e c #181818",
+".A c #181821",
+".L c #211821",
+"#l c #212121",
+".z c #212129",
+"#m c #292129",
+"#u c #292929",
+"#n c #292931",
+".R c #29ff29",
+"#o c #312931",
+".T c #313131",
+"#p c #313139",
+".Z c #31ff31",
+"#q c #393139",
+"#t c #393939",
+".y c #393942",
+"#s c #423942",
+".o c #424242",
+"#h c #4a4a52",
+".n c #5a525a",
+"#r c #5a5a63",
+".I c #5ace5a",
+"#b c #6b636b",
+".p c #6b6b6b",
+".x c #6b6b73",
+".Y c #6bff63",
+".l c #736b73",
+".t c #7b737b",
+".s c #7b7384",
+".0 c #7bff7b",
+".r c #847b84",
+".u c #847b8c",
+"#g c #84848c",
+".v c #8c7b94",
+"#i c #8c848c",
+".w c #8c8494",
+"#j c #8c8c8c",
+".8 c #8c8c94",
+".m c #948c94",
+"#k c #948c9c",
+"#f c #949494",
+".q c #94949c",
+".J c #94c694",
+"#d c #9c949c",
+"#a c #9c94a5",
+".k c #9c9c9c",
+".N c #9c9ca5",
+".H c #9ccea5",
+".K c #a59ca5",
+"#. c #a59cad",
+".i c #a5a5a5",
+".3 c #a5a5ad",
+"## c #ad9cad",
+".V c #ada5ad",
+".d c #adadad",
+".j c #adadb5",
+".9 c #b5adb5",
+".# c #b5b5b5",
+".a c #bdbdbd",
+".7 c #bdd6bd",
+".c c #c6c6c6",
+".5 c #cec6ce",
+".b c #cecece",
+".4 c #ceced6",
+".F c #d6ced6",
+".G c #d6cede",
+".h c #d6d6d6",
+".E c #d6d6de",
+".Q c #d6ffd6",
+".B c #ded6de",
+".1 c #ded6e7",
+".g c #dedede",
+".D c #dedee7",
+".6 c #e7dee7",
+".f c #e7e7e7",
+".C c #e7e7ef",
+".X c #e7ffe7",
+".O c #efe7ef",
+".e c #efefef",
+".W c #f7f7f7",
+".P c #ffffff",
+"QtQtQtQtQtQt.#.a.b.b.b.b.c.c.a.a.d.aQtQtQtQt",
+"QtQtQtQtQtQt.a.e.f.f.f.f.f.e.e.e.g.aQtQtQtQt",
+"QtQtQtQtQtQt.a.c.c.c.b.b.c.c.c.c.a.cQtQtQtQt",
+"QtQtQtQtQtQt.#.a.a.a.a.#.a.a.#.#.d.aQtQtQtQt",
+"QtQtQtQtQt.c.d.c.a.c.c.c.a.a.a.c.#QtQtQtQtQt",
+"QtQtQtQtQt.a.a.#.a.a.a.a.a.a.c.c.#QtQtQtQtQt",
+"QtQtQtQtQt.a.#.c.a.a.a.a.a.c.a.c.dQtQtQtQtQt",
+"QtQtQtQtQt.c.a.a.a.a.a.a.a.a.a.a.#QtQtQtQtQt",
+"QtQtQtQtQt.d.b.f.g.g.g.g.g.g.h.g.i.i.jQtQtQt",
+"QtQtQt.a.k.l.#.h.b.h.b.h.b.h.g.g.m.n.o.p.#Qt",
+"QtQt.a.q.r.s.t.t.t.t.t.t.t.u.v.w.x.y.z.A.o.i",
+"Qt.a.k.B.C.D.B.E.E.E.E.F.G.H.I.J.K.o.L.L.M.y",
+".a.N.O.P.P.P.P.P.P.P.P.P.Q.R.S.R.b.v.T.A.U.L",
+".V.W.P.P.P.P.P.P.P.P.P.P.X.Y.Z.0.P.1.t.A.2.L",
+".3.E.4.5.4.h.E.E.g.6.D.B.D.E.7.F.4.5.8.M.2.A",
+".m.9.j.V.3#..3.K#.#..i#..K#.###a.q.8#b#c.2.L",
+".m.j.j#..3.K.K.K.N.K.N.N.N.N#a#d#d.w#b#c.2#e",
+"#f#.#..K.N.K.N.N.N#a.k#a#d#d#d#a.m#g#b.M.2#h",
+".m.3.K.K#a.k#a#d#a.k#a#d#a#d.q.m.8#i.x#c#e.d",
+"#f#g#i.w#j.w#i.8.w#i.8.8.m.8.m#k.8.w#b#e#fQt",
+".#.l.z.A#l.z#m#m#m#n#o#o#p#p#q#q#p#o#p#fQtQt",
+"QtQt.d#r#s#s#t#p.T.T.T#u#u.z#e#e#v.o.kQtQtQt"
+]
+
+image_cut_data = [
+"22 22 3 1",
+". c None",
+"# c #000000",
+"a c #000082",
+"......................",
+".......#.....#........",
+".......#.....#........",
+".......#.....#........",
+".......#....##........",
+".......##...#.........",
+"........#...#.........",
+"........##.##.........",
+".........###..........",
+".........###..........",
+"..........#...........",
+".........a#a..........",
+"........aa.aaa........",
+".......a.a.a..a.......",
+"......a..a.a...a......",
+".....a...a.a....a.....",
+"....a....a.a....a.....",
+"....a....a..a...a.....",
+"....a....a..a..a......",
+"....a...a....aa.......",
+".....aaa..............",
+"......................"
+]
+
+image_copy_data = [
+"22 22 6 1",
+". c None",
+"# c #000000",
+"b c #000082",
+"c c #3c3cfd",
+"d c #8b8bfd",
+"a c #ffffff",
+"......................",
+"......................",
+"########..............",
+"#aaaaaa##.............",
+"#a####a#a#............",
+"#aaaaaa#aa#...........",
+"#a####a#bbbbbbbb......",
+"#aaaaaa#baaaaaabb.....",
+"#a#####aba####abcb....",
+"#aaaaaaabaaaaaabdcb...",
+"#a#####aba####abadcb..",
+"#aaaaaaabaaaaaabbbbbb.",
+"#a#####aba####aaaaaab.",
+"#aaaaaaabaaaaaaaaaaab.",
+"#a#####aba#########ab.",
+"#aaaaaaabaaaaaaaaaaab.",
+"########ba#########ab.",
+"........baaaaaaaaaaab.",
+"........ba#########ab.",
+"........baaaaaaaaaaab.",
+"........bbbbbbbbbbbbb.",
+"......................"
+]
+
+image_delete_data = [
+"22 22 2 1",
+". c None",
+"# c #ff0000",
+"......................",
+"......................",
+".................###..",
+"...............####...",
+".###..........###.....",
+"..####.......###......",
+"....####....###.......",
+"......####.###........",
+".......######.........",
+"........######........",
+"........#######.......",
+".......#########......",
+".......###..#####.....",
+"......####...#####....",
+".....####.....#####...",
+"....#####.....#####...",
+"...#####.......###....",
+"...#####.......##.....",
+"...####...............",
+"....##................",
+"......................",
+"......................"
+]
+
+
+image_paste_data = [
+"22 22 8 1",
+". c None",
+"# c #000000",
+"e c #000084",
+"c c #848200",
+"b c #848284",
+"d c #c6c3c6",
+"a c #ffff00",
+"f c #ffffff",
+"......................",
+".......#####..........",
+"..######aaa######.....",
+".######aaaaa######....",
+"##bcb##a###a##bcb##...",
+"#bcb#ddddddddd#bcb#...",
+"#cbc#ddddddddd#cbc#...",
+"#bcb###########bcb#...",
+"#cbcbcbcbcbcbcbcbc#...",
+"#bcbcbcbcbcbcbcbcb#...",
+"#cbcbcbceeeeeeeeee#...",
+"#bcbcbcbefffffffefe...",
+"#cbcbcbcefeeeeefeffe..",
+"#bcbcbcbefffffffefffe.",
+"#cbcbcbcefeeeeefeffffe",
+"#bcbcbcbefffffffeeeeee",
+"#cbcbcbcefeeeeeffffffe",
+"#bcbcbcbeffffffffffffe",
+"#cbcbcbcefeeeeeeeeeefe",
+".#######effffffffffffe",
+"........eeeeeeeeeeeeee",
+"......................"
+]
+
+file_open = ["22 22 5 1",
+". c None",
+"# c #000000",
+"c c #848200",
+"a c #ffff00",
+"b c #ffffff",
+"......................",
+"......................",
+"......................",
+"............####....#.",
+"...........#....##.##.",
+"..................###.",
+".................####.",
+".####...........#####.",
+"#abab##########.......",
+"#babababababab#.......",
+"#ababababababa#.......",
+"#babababababab#.......",
+"#ababab###############",
+"#babab##cccccccccccc##",
+"#abab##cccccccccccc##.",
+"#bab##cccccccccccc##..",
+"#ab##cccccccccccc##...",
+"#b##cccccccccccc##....",
+"###cccccccccccc##.....",
+"##cccccccccccc##......",
+"###############.......",
+"......................"]
+
+file_save = ["22 22 5 1",
+". c None",
+"# c #000000",
+"a c #848200",
+"b c #c1c1c1",
+"c c #cab5d1",
+"......................",
+".####################.",
+".#aa#bbbbbbbbbbbb#bb#.",
+".#aa#bbbbbbbbbbbb#bb#.",
+".#aa#bbbbbbbbbcbb####.",
+".#aa#bbbccbbbbbbb#aa#.",
+".#aa#bbbccbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aaa############aaa#.",
+".#aaaaaaaaaaaaaaaaaa#.",
+".#aaaaaaaaaaaaaaaaaa#.",
+".#aaa#############aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+"..##################..",
+"......................"]
+
-IconDict = {
+
+IconDict0 = {
"derive": derive,
"close": close,
"fileclose": fileclose,
- "fileopen": fileopen,
- "filesave": filesave,
- "fileprint": fileprint,
+ "fileopen": file_open,
+ "filesave": file_save,
+ "fileprint": image_print_data,
"spec": spec,
"normal": normal,
"normalize16": normalize16,
@@ -3718,29 +4030,178 @@ IconDict = {
"rotate_right": rotate_right
}
+# corresponding silx icons
+TRANSLATION_TABLE = {
+ "average16": "math-average",
+ "derive": "math-derive",
+ "close": "close",
+ "crop": "crop",
+ #"fileclose": fileclose,
+ "fileopen": "document-open",
+ "filesave": "document-save",
+ #"fileprint": "document-print", PyMca icon is nicer
+ "spec": "spec",
+ "normal": "normal",
+ "normalize16": "math-normalize",
+ "reload": "view-refresh",
+ "window_fullscreen": "view-fullscreen",
+ #"window_new": window_new,
+ "window_nofullscreen": "view-nofullscreen",
+ "zoomplus": "zoom-in",
+ "zoomminus": "zoom-out",
+ "zoomreset": "zoom-original",
+ "zoom": "zoom",
+ "logx": "plot-xlog",
+ "logy": "plot-ylog",
+ "peak": "math-peak",
+ "peakreset": "math-peak-reset",
+ "peaksearch": "math-peak-search",
+ "roi": "plot-roi",
+ "roireset": "plot-roi-reset",
+ "selected": "selected",
+ #"unselected": unselected,
+ "fit": "math-fit",
+ "energy": "math-energy",
+ "xauto": "plot-xauto",
+ "yauto": "plot-yauto",
+ "colormap": "colormap",
+ "colormap16": "colormap",
+ #"gioconda16": gioconda16,
+ #"gioconda16mirror": gioconda16mirror,
+ "grid16": "plot-grid",
+ #"image": image,
+ #"eraseselect": eraseselect,
+ #"boxselect": boxselect,
+ "brush": "draw-brush",
+ #"brushselect": brushselect,
+ #"rgb16": rgb16,
+ #"rgb": rgb,
+ "sliderson": "sliders-on",
+ "slidersoff": "sliders-off",
+ "sigma": "math-sigma",
+ "swapsign": "math-swap-sign",
+ "ymintozero": "math-ymin-to-zero",
+ "square": "shape-square",
+ "polygon": "shape-polygon",
+ "rectangle": "shape-rectangle",
+ "circle": "shape-circle",
+ "ellipse": "shape-ellipse",
+ "solidcircle": "shape-circle-solid",
+ "solidellipse": "shape-ellipse-solid",
+ "smooth": "math-smooth",
+ "subtract": "math-substract",
+ "substract": "math-substract",
+ "togglepoints": "plot-toggle-points",
+ "remove": "remove",
+ #"additionalselect": additionalselect,
+ #"plugin": plugin,
+ "horizontal": "shape-horizontal",
+ "vertical": "shape-vertical",
+ "diagonal": "shape-diagonal",
+ #"rotate_left": rotate_left,
+ #"rotate_right": rotate_right
+ }
+
+
+class _PatchedIconDict(MutableMapping):
+ """IconDict that patches some legacy icons with new
+ silx icons, when available.
+
+ This object must be initialized with a legacy dictionary of icons.
+ If silx is installed and a corresponding silx icon name is specified in
+ TRANSLATION_TABLE, the silx icon is returned by __getitem__ rather
+ than the legacy icon.
+
+ This object allows modifying the icon dict via __setitem__ and
+ deleting icons, like a real dict.
+ """
+ def __init__(self, *args, **kw):
+ self._unpatched_icons = dict(*args, **kw)
+ try:
+ from silx.gui import icons as silx_icons
+ except ImportError:
+ _logger.debug("Could not import silx. Legacy icons will be used.")
+ silx_icons = None
+
+ self._silx_icons = silx_icons
+ # keep an internal copy:
+ self._translation_table = TRANSLATION_TABLE.copy()
+
+ def __iter__(self):
+ for key in self._unpatched_icons:
+ yield key
+
+ def __len__(self):
+ # same length
+ return len(self._unpatched_icons)
+
+ def __getitem__(self, key):
+ if key not in self._unpatched_icons:
+ raise KeyError("Unknown icon '%s'" % key)
+
+ if self._silx_icons is None or key not in TRANSLATION_TABLE:
+ _logger.debug("Using legacy icon '%s' because silx is not "
+ "available or because it has no corresponding icon.",
+ key)
+ return self._unpatched_icons[key]
+
+ if qt.QApplication.instance() is None:
+ _logger.warning("Cannot fetch QPixmap without a QApplication."
+ " Using legacy PyMca icon as fallback.")
+ return self._unpatched_icons[key]
+
+ try:
+ icon = self._silx_icons.getQPixmap(TRANSLATION_TABLE[key])
+ except ValueError:
+ _logger.warning("Icon '%s' not found in silx. "
+ "Using legacy PyMca icon '%s'.",
+ TRANSLATION_TABLE[key], key)
+ icon = self._unpatched_icons[key]
+ else:
+ _logger.debug("Using silx icon '%s' instead of legacy icon '%s'.",
+ TRANSLATION_TABLE[key], key)
+ finally:
+ return icon
+
+ def __delitem__(self, key):
+ # deleting from legacy dict is enough
+ del self._unpatched_icons[key]
+
+ def __setitem__(self, key, item):
+ self._unpatched_icons[key] = item
+ if self._silx_icons is not None and key in self._translation_table:
+ # we also need to remove the key from internal translation table
+ del self._translation_table[key]
+
+
+IconDict = _PatchedIconDict(IconDict0)
+
+
def showIcons():
- import sys
- from PyMca5.PyMcaGui import PyMcaQt as qt
- a= qt.QApplication(sys.argv)
- a.lastWindowClosed.connect(a.quit)
- w= qt.QWidget()
- g= qt.QGridLayout(w)
-
- idx= 0
- for name,icon in IconDict.items():
+ w = qt.QWidget()
+ g = qt.QGridLayout(w)
+
+ idx = 0
+ for name, icon in IconDict.items():
+ print(name, type(icon))
column = int(idx / 10)
row = idx % 10
#print "name",name
- lab= qt.QLabel(w)
+ lab = qt.QLabel(w)
lab.setText(str(name))
g.addWidget(lab, row, 2 * column + 1)
- lab= qt.QLabel(w)
+ lab = qt.QLabel(w)
lab.setPixmap(qt.QPixmap(icon))
g.addWidget(lab, row, 2 * column)
- idx+= 1
+ idx += 1
w.show()
- a.exec_()
+ return w
-if __name__=='__main__':
- showIcons()
+if __name__ == '__main__':
+ app = qt.QApplication(sys.argv)
+ app.lastWindowClosed.connect(app.quit)
+ logging.basicConfig()
+ _logger.setLevel(logging.DEBUG)
+ w = showIcons()
+ app.exec_()
diff --git a/PyMca5/PyMcaGui/pymca/Median2DBrowser.py b/PyMca5/PyMcaGui/pymca/Median2DBrowser.py
index 7f1d3c5..021310a 100644
--- a/PyMca5/PyMcaGui/pymca/Median2DBrowser.py
+++ b/PyMca5/PyMcaGui/pymca/Median2DBrowser.py
@@ -28,15 +28,18 @@ __contact__ = "sole@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
import numpy
+DEBUG = 0
try:
from PyMca5.PyMcaGui.pymca import StackBrowser
from PyMca5.PyMcaMath.PyMcaSciPy.signal import median
except ImportError:
- print("Median2DBrowser problem!")
+ if DEBUG:
+ import traceback
+ print("Median2DBrowser problem!")
+ print(traceback.format_exc())
medfilt2d = median.medfilt2d
qt = StackBrowser.qt
-DEBUG = 0
class MedianParameters(qt.QWidget):
def __init__(self, parent=None, use_conditional=False):
diff --git a/PyMca5/PyMcaGui/pymca/PyMcaBatch.py b/PyMca5/PyMcaGui/pymca/PyMcaBatch.py
index 6315df7..6df8d78 100644
--- a/PyMca5/PyMcaGui/pymca/PyMcaBatch.py
+++ b/PyMca5/PyMcaGui/pymca/PyMcaBatch.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#/*##########################################################################
-# Copyright (C) 2004-2017 V.A. Sole, European Synchrotron Radiation Facility
+# Copyright (C) 2004-2018 V.A. Sole, European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
@@ -460,7 +460,8 @@ class McaBatchGUI(qt.QWidget):
dialog.mainLayout.setContentsMargins(0, 0, 0, 0)
dialog.mainLayout.setSpacing(0)
datasource = NexusDataSource.NexusDataSource(filelist[0])
- nexusWidget = QNexusWidget.QNexusWidget(dialog)
+ nexusWidget = QNexusWidget.QNexusWidget(dialog,
+ buttons=True)
nexusWidget.buttons.hide()
nexusWidget.setDataSource(datasource)
button = qt.QPushButton(dialog)
diff --git a/PyMca5/PyMcaGui/pymca/PyMcaMain.py b/PyMca5/PyMcaGui/pymca/PyMcaMain.py
index dd18368..ab963c9 100644
--- a/PyMca5/PyMcaGui/pymca/PyMcaMain.py
+++ b/PyMca5/PyMcaGui/pymca/PyMcaMain.py
@@ -103,6 +103,7 @@ except:
pass
from PyMca5.PyMcaGui.pymca import PyMcaMdi
IconDict = PyMcaMdi.IconDict
+IconDict0 = PyMcaMdi.IconDict0
if hasattr(qt, "QString"):
QString = qt.QString
else:
@@ -1027,7 +1028,7 @@ class PyMcaMain(PyMcaMdi.PyMcaMdi):
layout1.addWidget(self.line1)
#self.closelabel = qt.QLabel(sourceToolbar)
self.closelabel = PixmapLabel(sourceToolbar)
- self.closelabel.setPixmap(qt.QPixmap(IconDict['close']))
+ self.closelabel.setPixmap(qt.QPixmap(IconDict0['close']))
layout1.addWidget(self.closelabel)
self.closelabel.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Fixed, qt.QSizePolicy.Fixed))
#self.sourceBrowserTab=qt.QTabWidget(self.sourceFrame)
diff --git a/PyMca5/PyMcaGui/pymca/PyMcaMdi.py b/PyMca5/PyMcaGui/pymca/PyMcaMdi.py
index 690a5b5..c4d515a 100644
--- a/PyMca5/PyMcaGui/pymca/PyMcaMdi.py
+++ b/PyMca5/PyMcaGui/pymca/PyMcaMdi.py
@@ -1,5 +1,5 @@
#/*##########################################################################
-# Copyright (C) 2004-2017 V.A. Sole, European Synchrotron Radiation Facility
+# Copyright (C) 2004-2018 V.A. Sole, European Synchrotron Radiation Facility
#
# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
# the ESRF by the Software group.
@@ -38,6 +38,7 @@ QTVERSION = qt.qVersion()
from PyMca5.PyMcaGui import PyMca_Icons
IconDict = PyMca_Icons.IconDict
+IconDict0 = PyMca_Icons.IconDict0
from .PyMca_help import HelpDict
DEBUG = 0
diff --git a/PyMca5/PyMcaGui/pymca/QStackWidget.py b/PyMca5/PyMcaGui/pymca/QStackWidget.py
index c474ac4..a8a896c 100644
--- a/PyMca5/PyMcaGui/pymca/QStackWidget.py
+++ b/PyMca5/PyMcaGui/pymca/QStackWidget.py
@@ -39,6 +39,12 @@ if hasattr(qt, "QString"):
QString = qt.QString
else:
QString = qt.safe_str
+try:
+ # try to import silx prior to importing matplotlib
+ # to prevent unnecessary warning
+ import silx.gui.plot
+except:
+ pass
from PyMca5.PyMcaGui import PyMcaFileDialogs
from PyMca5.PyMcaCore import DataObject
diff --git a/PyMca5/PyMcaIO/BAXSCSVFileParser.py b/PyMca5/PyMcaIO/BAXSCSVFileParser.py
index 1f24456..b7ab9ca 100644
--- a/PyMca5/PyMcaIO/BAXSCSVFileParser.py
+++ b/PyMca5/PyMcaIO/BAXSCSVFileParser.py
@@ -194,6 +194,7 @@ def isBAXSCSVFile(filename):
except:
f.close()
return False
+ f.close()
try:
if filename.lower().endswith(".csv"):
if line.startswith("Bruker AXS") or \
diff --git a/PyMca5/PyMcaIO/HDF5Stack1D.py b/PyMca5/PyMcaIO/HDF5Stack1D.py
index 98181b8..2c41858 100644
--- a/PyMca5/PyMcaIO/HDF5Stack1D.py
+++ b/PyMca5/PyMcaIO/HDF5Stack1D.py
@@ -141,6 +141,8 @@ class HDF5Stack1D(DataObject.DataObject):
(mSelection in scanlist):
scanlist = None
USE_JUST_KEYS = True
+ else:
+ USE_JUST_KEYS = True
elif len(entryNames) == 1:
# deal with the SOLEIL case of one entry but with different name
# in different files
diff --git a/PyMca5/PyMcaIO/OlympusCSVFileParser.py b/PyMca5/PyMcaIO/OlympusCSVFileParser.py
index d2ca3de..e90fb9e 100644
--- a/PyMca5/PyMcaIO/OlympusCSVFileParser.py
+++ b/PyMca5/PyMcaIO/OlympusCSVFileParser.py
@@ -219,6 +219,7 @@ def isOlympusCSVFile(filename):
except:
f.close()
return False
+ f.close()
line = line.replace("\x00","")
try:
if filename.lower().endswith(".csv"):
diff --git a/PyMca5/PyMcaIO/ThermoEMSFileParser.py b/PyMca5/PyMcaIO/ThermoEMSFileParser.py
index c563d73..c2a76ec 100644
--- a/PyMca5/PyMcaIO/ThermoEMSFileParser.py
+++ b/PyMca5/PyMcaIO/ThermoEMSFileParser.py
@@ -246,6 +246,7 @@ def isThermoEMSFile(filename):
except:
f.close()
return False
+ f.close()
try:
if filename.lower().endswith(".ems"):
if line.startswith("#FORMAT") or \
diff --git a/PyMca5/PyMcaIO/sps/Include/sps_lut.h b/PyMca5/PyMcaIO/sps/Include/sps_lut.h
index f8e5197..290d357 100644
--- a/PyMca5/PyMcaIO/sps/Include/sps_lut.h
+++ b/PyMca5/PyMcaIO/sps/Include/sps_lut.h
@@ -1,28 +1,30 @@
#/*##########################################################################
-# Copyright (C) 2004-2009 European Synchrotron Radiation Facility
#
-# This file is part of the PyMCA X-ray Fluorescence Toolkit developed at
-# the ESRF by the Beamline Instrumentation Software Support (BLISS) group.
+# The PyMca X-Ray Fluorescence Toolkit
#
-# This toolkit is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the Free
-# Software Foundation; either version 2 of the License, or (at your option)
-# any later version.
+# Copyright (c) 2004-2018 European Synchrotron Radiation Facility
#
-# PyMCA is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
+# This file is part of the PyMca X-ray Fluorescence Toolkit developed at
+# the ESRF by the Software group.
#
-# You should have received a copy of the GNU General Public License along with
-# PyMCA; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307, USA.
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
#
-# PyMCA follows the dual licensing model of Trolltech's Qt and Riverbank's PyQt
-# and cannot be used as a free plugin for a non-free program.
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
#
-# Please contact the ESRF industrial unit (industry@esrf.fr) if this license
-# is a problem for you.
#############################################################################*/
/* FIXTHIS - double the type defines to make sps_lut independent */
#ifndef SPS_DOUBLE
diff --git a/PyMca5/PyMcaPhysics/xrf/Elements.py b/PyMca5/PyMcaPhysics/xrf/Elements.py
index 6c98d0b..51f4aaf 100644
--- a/PyMca5/PyMcaPhysics/xrf/Elements.py
+++ b/PyMca5/PyMcaPhysics/xrf/Elements.py
@@ -2703,6 +2703,7 @@ def getelementmassattcoef(ele,energy=None):
Element[ele]['xcom']['pair'][i] += float(value)
i += 1
line = f.readline()
+ f.close()
if sys.version >= '3.0':
# next line gave problems under under windows
# just try numpy.argsort([1,1,1,1,1]) under linux and windows to see
diff --git a/PyMca5/__init__.py b/PyMca5/__init__.py
index 16251a4..a99541e 100644
--- a/PyMca5/__init__.py
+++ b/PyMca5/__init__.py
@@ -27,7 +27,7 @@ __author__ = "V.A. Sole - ESRF Data Analysis"
__contact__ = "sole@esrf.fr"
__license__ = "MIT"
__copyright__ = "European Synchrotron Radiation Facility, Grenoble, France"
-__version__ = "5.3.0"
+__version__ = "5.3.1"
import os
import sys
diff --git a/PyMca5/tests/StackInfoTest.py b/PyMca5/tests/StackInfoTest.py
index 3e6c29e..285322a 100644
--- a/PyMca5/tests/StackInfoTest.py
+++ b/PyMca5/tests/StackInfoTest.py
@@ -170,7 +170,7 @@ class testStackInfo(unittest.TestCase):
readLiveTime = mcaObject.info["McaLiveTime"]
self.assertTrue(abs(live_time[mask > 0].sum() - readLiveTime) < 1.0e-5,
"Incorrect sum of masked live time data")
-
+
mcaObject = sb.calculateMcaDataObject(normalize=True)
live_time.shape = mask.shape
tmpBuffer = numpy.zeros(mask.shape, dtype=numpy.int32)
@@ -404,6 +404,19 @@ class testStackInfo(unittest.TestCase):
h5.close()
h5 = None
+ # check that the data can be read as a stack as
+ # single top level dataset (issue #226)
+ external = self._h5File + "external.h5"
+ if os.path.exists(external):
+ os.remove(external)
+ h5 = h5py.File(external, "w")
+ h5["/data_at_top"] = h5py.ExternalLink(self._h5File,
+ "/entry/measurement/mca_soft/data")
+ h5.flush()
+ h5.close()
+ h5 = None
+ stack = HDF5Stack1D.HDF5Stack1D([external], {"y":"/data_at_top"})
+
# check that the data can be read as a stack through a external link
external = self._h5File + "external.h5"
if os.path.exists(external):
diff --git a/changelog.txt b/changelog.txt
index d7e7d2e..c5d3584 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,17 +1,28 @@
-VERSION 5.3.0
+VERSION 5.3.1
+-------------
+
+- PyMcaMainWindow. Correct error trying to use HDF5 files with only top level datasets.
-- XRF. Correct several Single Layer Strategy issues.
+- PyMcaBatch. Correct error when opening HDF5 files as input.
-- XRF. Support calibration readout using HDF5 files.
+- Use QOpenGLWidget when available instead of QGLWidget. It solves a Debian packaging issue.
-- XRF. Support time readout and use of time information from HDF5 files.
+- Prepare web pages using sphinx to be ready for easy deployment of improved documentation (accessible from http://www.silx.org)
+
+VERSION 5.3.0
+-------------
-- HDF5. Simplify HDF5 data selection handling by generatic automatic data selection tables
-besides the user defined one (requires use of a measurement group)
+- XRF
-- HDF5. Support readout of motor positions together with curve data when following ESRF and Sardana standards.
+ Correct several Single Layer Strategy issues.
+ Support calibration readout using HDF5 files.
+ Support time readout and use of time information from HDF5 files.
-- HDF5. Support NXdata and default plots (requires silx)
+- HDF5
+
+ Simplify HDF5 data selection handling by generatic automatic data selection tables besides the user defined one (requires use of a measurement group)
+ Support readout of motor positions together with curve data when following ESRF and Sardana standards.
+ Support NXdata and default plots (requires silx)
- Add plugin to fit all curves present in a 1D window (requires h5py)
@@ -24,618 +35,605 @@ besides the user defined one (requires use of a measurement group)
- Activate Continuous Integration.
VERSION 5.2.2
+-------------
-ROI Imaging. Correct problem normalizing integer data by integer monitor.
+- ROI Imaging. Correct problem normalizing integer data by integer monitor.
-HDF5 Widget. Use PyMca plugins on silx data viewer.
+- HDF5 Widget. Use PyMca plugins on silx data viewer.
-HDF5 Batch. Correct error when all the entries in an HDF5 file do not present
-the same structure.
+- HDF5 Batch. Correct error when all the entries in an HDF5 file do not present the same structure.
-SPEC shared memory. Correct counter labelling order in case of using 10 or more
-counters and motors in a scan.
+- SPEC shared memory. Correct counter labelling order in case of using 10 or more counters and motors in a scan.
-NeXus. Interpret new style NXdata groups using silx NXdataViewer if silx is installed.
+- NeXus. Interpret new style NXdata groups using silx NXdataViewer if silx is installed.
VERSION 5.2.1
+-------------
-Correct annoying error message appearing when background is not defined.
+- Correct annoying error message appearing when background is not defined.
-Adopt MIT license for SpecFile library
+- Adopt MIT license for SpecFile library
VERSION 5.2.0
+-------------
-RGB Correlator can now export the data as a single TIFF file or as multiple TIFF
-files.
-
-XRF: Deal with the case the mass fraction is zero in one of the compounds of a material. It can arrive when applying a Strategy.
-
-Extend the command line usage of the FastXRFLinearFit module to HDF5 datasets.
+- RGB Correlator can now export the data as a single TIFF file or as multiple TIFF files.
-ROI Imaging. Improved external images plugin. It requires silx.
+- XRF. Deal with the case the mass fraction is zero in one of the compounds of a material. It can arrive when applying a Strategy.
-ROI Imaging. Plugin to display per pixel information (motors and others). It
-requires silx.
+- Extend the command line usage of the FastXRFLinearFit module to HDF5 datasets.
-ROI Imaging. Allow to sum the master and the slave stack. It can be used to
-sum an arbitrary number of stacks.
+- ROI Imaging.
-ROI Imaging. Selecting multiple HDF5 datasets as signal generates a stack that
-is the sum of all of the datasets.
+ - Improved external images plugin. It requires silx.
+ - Plugin to display per pixel information (motors and others). It requires silx.
+ - Allow to sum the master and the slave stack. It can be used to sum an arbitrary number of stacks.
+ - Selecting multiple HDF5 datasets as signal generates a stack that is the sum of all of the datasets.
-Implement a calculation cache to speed up secondary excitation calculations.
+- Implement a calculation cache to speed up secondary excitation calculations.
-Allow to use fisx library for the calculation of escape peaks. Default is
-disabled.
+- Allow to use fisx library for the calculation of escape peaks. Default is disabled.
-Improved support of OMDAQ lmf format.
+- Improved support of OMDAQ lmf format.
-Correct bug affecting the calculation of ROIs when the x axis coordinates are
-negative
+- Correct bug affecting the calculation of ROIs when the x axis coordinates are negative
-MacOS. Correct bug on startup when reading the default configuration.
+- MacOS
-MacOS. Frozen binary uses now HDF5 1.10.1 to support SWMR files.
+ - Correct bug on startup when reading the default configuration.
+ - Frozen binary uses now HDF5 1.10.1 to support SWMR files.
VERSION 5.1.4
+-------------
-ROI Imaging tool can add multiple detector signals present in an HDF5 file.
+- ROI Imaging tool can add multiple detector signals present in an HDF5 file.
-Support multiple JCAMP-DX blocks in a file.
+- Support multiple JCAMP-DX blocks in a file.
-Support stacks exported by OPUS in JCAMP-DX format.
+- Support stacks exported by OPUS in JCAMP-DX format.
-Add basic support of OMDAQ lmf data format.
+- Add basic support of OMDAQ lmf data format.
-Make sure main window menu options are available under MacOS and Qt5.
+- Make sure main window menu options are available under MacOS and Qt5.
-Support matplotlib 2.0
+- Support matplotlib 2.0
-Correct factor of two error when fitting step up or step down functions.
+- Correct factor of two error when fitting step up or step down functions.
VERSION 5.1.3
+-------------
-Correct minor Qt5 related bugs.
+- Correct minor Qt5 related bugs.
-Simplify embedding batch fitting in custom workflows.
+- Simplify embedding batch fitting in custom workflows.
-ROI Imaging: Exporting the stack in TIFF format did not respect zoomed region
-limits
+- ROI Imaging. Exporting the stack in TIFF format did not respect zoomed region limits
-Allow exporting the x-ray tube emission continuum from the plot.
+- Allow exporting the x-ray tube emission continuum from the plot.
-Implement a "copy-selection-to-clipboard" of the concentrations table via
-CTRL-C.
+- Implement a "copy-selection-to-clipboard" of the concentrations table via CTRL-C.
-Fix error message when moving mouse on SCAN window after having used the regular mesh plugin
+- Fix error message when moving mouse on SCAN window after having used the regular mesh plugin
-Correct coordinate display on image window.
+- Correct coordinate display on image window.
-Solve issue calculating shell photoelectric cross-sections close to edges.
+- Solve issue calculating shell photoelectric cross-sections close to edges.
VERSION 5.1.2
+-------------
-Correct the generation of the efficiency plot in the ATTENUATORS tab when
-BeamFilter0 was selected. That problem only affected the plot, not anything
-else.
+- Correct the generation of the efficiency plot in the ATTENUATORS tab when BeamFilter0 was selected. That problem only affected the plot, not anything else.
-Adapt to latest SPEC version
+- Adapt to latest SPEC version
-Correct compatibility issues with matplotlib 1.5
+- Correct compatibility issues with matplotlib 1.5
-Improved compatibility with Qt 5
+- Improved compatibility with Qt 5
-Update to fisx 1.0.9 for windows compatibility under Python 3.5
+- Update to fisx 1.0.9 for windows compatibility under Python 3.5
-Enable OpenGL window under Python 3
+- Enable OpenGL window under Python 3
-Implement Kaiser window option for XAS Fourier transform.
+- Implement Kaiser window option for XAS Fourier transform.
-Reimplement curve renaming.
+- Reimplement curve renaming.
-Recover interactive console functionality.
+- Recover interactive console functionality.
-Correct the density of H and He.
+- Correct the density of H and He.
-Add more keywords for QXAS format support.
+- Add more keywords for QXAS format support.
-Allow ADD functionality on customized fit background (allowing multiple atan
-functions)
+- Allow ADD functionality on customized fit background (allowing multiple atan functions)
-Allow the use of the regular mesh plugin on incomplete mesh scans.
+- Allow the use of the regular mesh plugin on incomplete mesh scans.
-Add kinetics related plugins (Rate Laws and Arrhenius-like plots).
+- Add kinetics related plugins (Rate Laws and Arrhenius-like plots).
VERSION 5.1.1
+-------------
-Update to fisx 1.0.4 to workaround issue calculating secondary excitation
-corrections when the incident beam is normal to the sample surface.
+- Update to fisx 1.0.4 to workaround issue calculating secondary excitation corrections when the incident beam is normal to the sample surface.
-Restore pre-5.0.0 behavior in the scan window when displaying mouse
-coordinates without the crosshair cursor.
+- Restore pre-5.0.0 behavior in the scan window when displaying mouse coordinates without the crosshair cursor.
-Correct multiple curve averaging when input arrays are reversed.
+- Correct multiple curve averaging when input arrays are reversed.
-Add the possibility to save the Monte Carlo generated matrix spectra in the
-fit window.
+- Add the possibility to save the Monte Carlo generated matrix spectra in the fit window.
-Correct problem of reapplying the calibration when toggling log and linear
-axes while already using a calibration.
+- Correct problem of reapplying the calibration when toggling log and linear axes while already using a calibration.
-Restore saving of images in png and jpg in the main window.
+- Restore saving of images in png and jpg from the main window.
-Restore data projection on PCA eigenvectors calculated using the covariance
-method to the same way as when using the other methods.
+- Restore data projection on PCA eigenvectors calculated using the covariance method to the same way as when using the other methods.
VERSION 5.1.0
+-------------
-Automatic loading of user plugins.
+- Automatic loading of user plugins.
-Allow the use of user specified physical constants across different installed versions.
+- Allow the use of user specified physical constants across different installed versions.
-Add stack plugin to calculate multiple ROIs in one go.
+- Add stack plugin to calculate multiple ROIs in one go.
-Add basic JCAMP-DX reading support.
+- Add basic JCAMP-DX reading support.
-Add crosshair cursor option to the plot options menu.
+- Add crosshair cursor option to the plot options menu.
-Add EXAFS extraction capabilities to the Main Window and the ROI Imaging Tool.
+- Add EXAFS extraction capabilities to the Main Window and the ROI Imaging Tool.
-Improved right axis autoscaling.
+- Improved right axis autoscaling.
-Panning with the keyboard arrow keys implemented in most 1D plots.
+- Panning with the keyboard arrow keys implemented in most 1D plots.
-Correct bug on customized fit when using anchors.
+- Correct bug on customized fit when using anchors.
-Correct bug saving MCA spectra when using the Taurus plugin.
+- Correct bug saving MCA spectra when using the Taurus plugin.
-Correct swap of red and blue components when saving via matplotlib.
+- Correct swap of red and blue components when saving via matplotlib.
-Correct regular mesh plotting.
+- Correct regular mesh plotting.
VERSION 5.0.3
+-------------
-Recover Advanced fit graphics saving in logarithmic mode.
+- Recover Advanced fit graphics saving in logarithmic mode.
-Slower but correct reading of SPE files.
+- Slower but correct reading of SPE files.
-Correctly handle Energy and Channel plot labels.
+- Correctly handle Energy and Channel plot labels.
-Calculate tertiary excitation in diagnostics tab.
+- Calculate tertiary excitation in diagnostics tab.
-Allow stack normalization by an external image.
+- Allow stack normalization by an external image.
-Correct saving of curves in the SCAN window.
+- Correct saving of curves in the SCAN window.
-Add OSMesa backend to the list of available plot backends.
+- Add OSMesa backend to the list of available plot backends.
-Add crosshair cursor option.
+- Add crosshair cursor option.
VERSION 5.0.2
+-------------
-Fast XRF fitting: Correct concentrations calculation.
+- Fast XRF fitting: Correct concentrations calculation.
-Make license information detectable by licensecheck.
+- Make license information detectable by licensecheck.
VERSION 5.0.1
+-------------
-Fast XRF fitting: Give the user the option not to check for negative peak
-contributions in order to maximize speed. The default behavior is unchanged.
+- Fast XRF fitting. Give the user the option not to check for negative peak contributions in order to maximize speed. The default behavior is unchanged.
-Add copyright information to files missing it.
+- Add copyright information to files missing it.
-Correct bug: Windows frozen binary could not start batch from main window.
+- Correct bug. Windows frozen binary could not start batch from main window.
-Correct bug: Fast XRF fit was not working on dynamically loaded stacks when
-negative peak contributions were detected.
+- Correct bug. Fast XRF fit was not working on dynamically loaded stacks when negative peak contributions were detected.
-Correct bug: Save action was not active on some plots.
+- Correct bug. Save action was not active on some plots.
VERSION 5.0.0
+-------------
-Analytical secondary excitation corrections.
+- Analytical secondary excitation corrections.
-Approximated tertiary excitation corrections.
+- Approximated tertiary excitation corrections.
-Automatic matrix update.
+- Automatic matrix update.
-Support .rtx file format stacks
+- Support .rtx file format stacks
-Support .rpl + .raw described stacks (Lispix file format)
+- Support .rpl + .raw described stacks (Lispix file format)
-Support SPEC 6.02+ shared memory
+- Support SPEC 6.02+ shared memory
-Possibility to generate PCA scores plot.
+- Possibility to generate PCA scores plot.
-Incorporate a new repository layout.
+- Incorporate a new repository layout.
-Most of the source code can be used under MIT or LGPL licenses.
+- Most of the source code can be used under MIT or LGPL licenses.
-Dependency on Qwt (via PyQwt) removed.
+- Dependency on Qwt (via PyQwt) removed.
-Possibility to keep image aspect ratio.
+- Possibility to keep image aspect ratio.
-Improved print preview.
+- Improved print preview.
-MCA Window accepts plugins.
+- MCA Window accepts plugins.
-Automatic download of user plugins.
+- Automatic download of user plugins.
-Any plot accepts ROI selection.
+- Any plot accepts ROI selection.
VERSION 4.7.4
+-------------
-Correct bug reading HDF5 top level datasets.
+- Correct bug reading HDF5 top level datasets.
-Improved handling of Bruker/Tracer CSV files
+- Improved handling of Bruker/Tracer CSV files
VERSION 4.7.3
+-------------
-Correct bug using SNIP background with the Fast XRF linear fit stack plugin.
+- Correct bug using SNIP background with the Fast XRF linear fit stack plugin.
-Better handling of screen resolutions with 768 vertical pixels.
+- Better handling of screen resolutions with 768 vertical pixels.
VERSION 4.7.2
+-------------
-Allow fitting of all Cr L lines
+- Allow fitting of all Cr L lines
-Correct bug saving image alignment data to disk.
+- Correct bug saving image alignment data to disk.
-Correct bug using linear polynomial background with the Fast XRF linear fit stack plugin
+- Correct bug using linear polynomial background with the Fast XRF linear fit stack plugin
VERSION 4.7.1
+-------------
-Support SOLEIL multiple-file different-scan-number maps.
+- Support SOLEIL multiple-file different-scan-number maps.
-Support batch fitting of multiple HDF5 files.
+- Support batch fitting of multiple HDF5 files.
-Fast XRF linear fit stack plugin.
+- Fast XRF linear fit stack plugin.
-Possibility to load image shifts in the image alignment stack plugin.
+- Possibility to load image shifts in the image alignment stack plugin.
-Basic support of MRC file format.
+- Basic support of MRC file format.
-Add ID08 advanced alignment scan plugin.
+- Add ID08 advanced alignment scan plugin.
VERSION 4.7.0
+-------------
-Add basic support for calculating multiple excitation corrections via the
-XMI-MSIM Monte Carlo code.
+- Add basic support for calculating multiple excitation corrections via the XMI-MSIM Monte Carlo code.
-Add Image alignment capabilities to the ROI Imaging tool.
+- Add Image alignment capabilities to the ROI Imaging tool.
-Improved handling of HDF5 external links.
+- Improved handling of HDF5 external links.
-Solve printing issue when printing from the File menu while the SCAN window is
-active
+- Solve printing issue when printing from the File menu while the SCAN window is active
-Recover reading support of SPE files from SLAC
+- Recover reading support of SPE files from SLAC
-Correct reading of .chi files maps
+- Correct reading of .chi files maps
-Extend the maximum number of counters supported in a specfile.
+- Extend the maximum number of counters supported in a specfile.
-Prevent endless loop in specfile when the last character limiting a scan is '#'
+- Prevent endless loop in specfile when the last character limiting a scan is '#'
-Correct bug plotting a set of MCAs as one image when the number of MCA
-detectors is more than one.
+- Correct bug plotting a set of MCAs as one image when the number of MCA detectors is more than one.
-Background subtraction methods also work on stack browsers.
+- Background subtraction methods also work on stack browsers.
-Handling of scales in image plots.
+- Handling of scales in image plots.
-Add ID26 RIXS plugin as part of MultiScanToMesh plugins.
+- Add ID26 RIXS plugin as part of MultiScanToMesh plugins.
-Add XMCD and XAS plugins from ID08 and ID12.
+- Add XMCD and XAS plugins from ID08 and ID12.
-Add plugin to align curves.
+- Add plugin to align curves.
-Stacks of DESY fio files readable by windows binary.
+- Stacks of DESY fio files readable by windows binary.
-Reduce memory usage when working with large in-memory stacks.
+- Reduce memory usage when working with large in-memory stacks.
-Decide to load dynamically the data based on the amount of physical memory
-installed instead of based on a fixed data size.
+- Decide to load dynamically the data based on the amount of physical memory installed instead of based on a fixed data size.
VERSION 4.6.2
+-------------
-Fix calculation of the MCA associated to a region when using dynamically
-loaded 1D stacks.
+- Fix calculation of the MCA associated to a region when using dynamically loaded 1D stacks.
-Fix scan XANES normalization. All curves normalized instead of just the active one.
+- Fix scan XANES normalization. All curves normalized instead of just the active one.
VERSION 4.6.1
+-------------
-Support GZIP compressed EDF files (extensions: edf.gz, ccd.gz, raw.gz)
-
-Fix annoying issue of having to select the left side of a pixel in order to
-have the pixel actually selected.
+- Support GZIP compressed EDF files (extensions: edf.gz, ccd.gz, raw.gz)
-Fix windows problem of PyMca not starting when the "My Documents" folder has
-been relocated (issue number 3537267)
+- Fix annoying issue of having to select the left side of a pixel in order to have the pixel actually selected.
-Fix Debian hurd-i386 build from source problem.
+- Fix windows problem of PyMca not starting when the "My Documents" folder has been relocated (issue number 3537267)
+- Fix Debian hurd-i386 build from source problem.
VERSION 4.6.0
+-------------
-Add an X-ray fluorescence spectrum for training purposes.
+- Add an X-ray fluorescence spectrum for training purposes.
-Improved unicode support.
+- Improved unicode support.
-Added a simple stack normalization plugin to the ROI tool.
+- Added a simple stack normalization plugin to the ROI tool.
-Added a simple XANES normalization plugins to the ROI tool and the scan
-window.
+- Added a simple XANES normalization plugins to the ROI tool and the scan window.
-Adapt installation script to simplify linux distribution maintainers task.
+- Adapt installation script to simplify linux distribution maintainers task.
-Add a minimalistic set of post-installation tests.
+- Add a minimalistic set of post-installation tests.
-Add man pages.
+- Add man pages.
-Correct variance information displayed in the terminal window.
+- Correct variance information displayed in the terminal window.
-Restore functionality of colormap-based mask calculation.
+- Restore functionality of colormap-based mask calculation.
-Add a progress bar to the stack simple fitting plugin.
+- Add a progress bar to the stack simple fitting plugin.
-Possibility to perform simple fitting of masked stack regions.
+- Possibility to perform simple fitting of masked stack regions.
VERSION 4.5.0
+-------------
-Support h5py version 2.x
+- Support h5py version 2.x
-Support OMNIC 8.x .map file format
+- Support OMNIC 8.x .map file format
-Support TIFF format. Uncompressed and packbits.
+- Support TIFF format. Uncompressed and packbits.
-Support a couple of ASCII based file formats of beamlines of Diamond and APS.
+- Support a couple of ASCII based file formats of beamlines of Diamond and APS.
-Preliminary Python 3.2 support.
+- Preliminary Python 3.2 support.
-Support principal components analysis of dynamically loaded stacks.
+- Support principal components analysis of dynamically loaded stacks.
-Improved HDF5 file format handling.
+- Improved HDF5 file format handling.
-Possibility to visualize variable width line profiles on images.
+- Possibility to visualize variable width line profiles on images.
-Add split Gauss, split Lorentz and split Pseudo-Voigt as fitting functions.
+- Add split Gauss, split Lorentz and split Pseudo-Voigt as fitting functions.
-Do not automatically sort the list of files to be treated in batch mode. The
-program will respect the order provided by the user.
+- Do not automatically sort the list of files to be treated in batch mode. The program will respect the order provided by the user.
-Allow visualized 3D objects to share the same colormap.
+- Allow visualized 3D objects to share the same colormap.
-Lower the energy threshold in order to consider Boron K X rays.
+- Lower the energy threshold in order to consider Boron K X rays.
-Correct Arsenic density.
+- Correct Arsenic density.
-Allow to customize the saving of Scan window curves using matplotlib.
+- Allow to customize the saving of Scan window curves using matplotlib.
-Allow multiple processes in MacOS X when using a non frozen PyMca version.
+- Allow multiple processes in MacOS X when using a non frozen PyMca version.
VERSION 4.4.1
+-------------
-Allow detailed customization of 1D output.
+- Allow detailed customization of 1D output.
-Add simple normalization plugins to the Scan window.
+- Add simple normalization plugins to the Scan window.
-Implement a plugin system for the ROI Imaging tool.
+- Implement a plugin system for the ROI Imaging tool.
-Implement a generic batch fitting of stacks as a stack plugin. The functions are totally specified by the user.
+- Implement a generic batch fitting of stacks as a stack plugin. The functions are totally specified by the user.
-Implement simple background removal tools as stack plugins.
+- Implement simple background removal tools as stack plugins.
-Implement an alternative ROI window as a stack plugin.
+- Implement an alternative ROI window as a stack plugin.
-Support convertion of big EDF image stacks to HDF5.
+- Support convertion of big EDF image stacks to HDF5.
-Visualization of large image stacks via dynamic loading and use of HDF5.
+- Visualization of large image stacks via dynamic loading and use of HDF5.
-Support MDP based PCA and ICA on user selected regions.
+- Support MDP based PCA and ICA on user selected regions.
-Read calibration from OMNIC 7.x .map files.
+- Read calibration from OMNIC 7.x .map files.
-Support Bruker Opus maps exported in DPT format.
+- Support Bruker Opus maps exported in DPT format.
-Improve the reading speed of TwinMic .dta files.
+- Improve the reading speed of TwinMic .dta files.
-Add simple MarCCD support.
+- Add simple MarCCD support.
-Add very simple support for some flavours of Pilatus CBF.
+- Add very simple support for some flavours of Pilatus CBF.
-Show file header information.
+- Show file header information.
-Properly handle Amptek MCA calibration when more than two points or ROIs have been used.
+- Properly handle Amptek MCA calibration when more than two points or ROIs have been used.
-Allow Savitzky-Golay (SG) filtering of stacks.
+- Allow Savitzky-Golay (SG) filtering of stacks.
-Correct problem affecting odd order SG derivatives.
+- Correct problem affecting odd order SG derivatives.
-Very primitive HDF5 2D Visualization.
+- Very primitive HDF5 2D Visualization.
-Possibility to visualize HDF5 3D datasets as series of images.
+- Possibility to visualize HDF5 3D datasets as series of images.
-Implement a context menu on the main window HDF5 browser.
+- Implement a context menu on the main window HDF5 browser.
-Table visualization of non-numerical HDF5 datasets.
+- Table visualization of non-numerical HDF5 datasets.
-Support segmented HDF5 files using default segmentation.
+- Support segmented HDF5 files using default segmentation.
-llow the use of several processes when batch fitting a single HDF5 file.
+- Allow the use of several processes when batch fitting a single HDF5 file.
-Allow reading of pure image formats in the RGB correlator.
+- Allow reading of pure image formats in the RGB correlator.
-The fit configuration window was too high for Mac computers having exactly 800
-pixels vertical resolution.
+- The fit configuration window was too high for Mac computers having exactly 800 pixels vertical resolution.
-Workaround a windows problem when trying to select thousands of files in the
-batch file dialog by using Qt file dialogs.
+- Workaround a windows problem when trying to select thousands of files in the batch file dialog by using Qt file dialogs.
-Minor visualization and data handling improvements.
+- Minor visualization and data handling improvements.
-Prevent a crash when the excitation energy is below 1 keV.
+- Prevent a crash when the excitation energy is below 1 keV.
-Add a script to build PyMca from source on Debian or Ubuntu systems.
+- Add a script to build PyMca from source on Debian or Ubuntu systems.
-Make specfile LC_NUMERIC locale independent to solve Debian bug report 602471.
+- Make specfile LC_NUMERIC locale independent to solve Debian bug report 602471.
-Unify the sps library used by PyMca and the one used by Certified Scientific
-Software package SPEC. Use a BSD like license for the associated code.
+- Unify the sps library used by PyMca and the one used by Certified Scientific Software package SPEC. Use a BSD like license for the associated code.
VERSION 4.4.0
+-------------
-Extend the usability of the code down to 100 eV extending XCOM mass
-attenuation coefficients with EPDL97 data when energies are below 1 keV.
+- Extend the usability of the code down to 100 eV extending XCOM mass attenuation coefficients with EPDL97 data when energies are below 1 keV.
-Alternative background subtraction algorithm (SNIP) implemented.
+- Alternative background subtraction algorithm (SNIP) implemented.
-Support of HDF5 file format.
+- Support of HDF5 file format.
-Possibility to export ROI imaging tool data stack in HDF5.
+- Possibility to export ROI imaging tool data stack in HDF5.
-Workaround 32-bit limit when handling huge EDF maps in 32-bit machines.
+- Workaround 32-bit limit when handling huge EDF maps in 32-bit machines.
-Better customization capabilities when saving images through matplotlib.
+- Better customization capabilities when saving images through matplotlib.
-Support Fit2D .chi files.
+- Support Fit2D .chi files.
-Simple support of ADSC files wrapping them as EDF files.
+- Simple support of ADSC files wrapping them as EDF files.
-Possibility to save images as 32-bit floats for people using the ImageJ EDF
-plugin.
+- Possibility to save images as 32-bit floats for people using the ImageJ EDF plugin.
-Support combined PCA when using two data stacks.
+- Support combined PCA when using two data stacks.
-Support Independent Component Analysis via MDP if installed.
+- Support Independent Component Analysis via MDP if installed.
-Support non-negative Matrix Approximation Analysis using Uwe Schmitt modules
-(http://public.procoders.net/nnma/)
+- Support non-negative Matrix Approximation Analysis using Uwe Schmitt modules (http://public.procoders.net/nnma/)
-Add multivariate analysis capabilities to the RGBCorrelator.
+- Add multivariate analysis capabilities to the RGBCorrelator.
-Implement a mechanism to add plugins to 1D plots.
+- Implement a mechanism to add plugins to 1D plots.
-Implement simple 3D visualization capabilities.
+- Implement simple 3D visualization capabilities.
-Solve X-ray tube profile generation problems at tube voltages below 20 kV.
+- Solve X-ray tube profile generation problems at tube voltages below 20 kV.
-Allow a greater number of energies defining the X-ray tube emission profile.
+- Allow a greater number of energies defining the X-ray tube emission profile.
-Correct logarithmic colormap handling.
+- Correct logarithmic colormap handling.
-Correct colormap problems in 64-bit platforms.
+- Correct colormap problems in 64-bit platforms.
-Correct problem preventing data calibration in some 64-bit platforms.
+- Correct problem preventing data calibration in some 64-bit platforms.
-Minor bugs corrected and minor features added.
+- Minor bugs corrected and minor features added.
VERSION 4.3.0
+-------------
-Speed up fit configuration when using multiple energies.
+- Speed up fit configuration when using multiple energies.
-Import/export the multiple energies beam description as CSV files.
+- Import/export the multiple energies beam description as CSV files.
-Possibility to calculate transmission curves added to the tools menu.
+- Possibility to calculate transmission curves added to the tools menu.
-Offer the possibility to use an additional filter in the x-ray tube setup.
+- Offer the possibility to use an additional filter in the x-ray tube setup.
-Visualization of the absorption and the detector contribution to the efficiency.
+- Visualization of the absorption and the detector contribution to the efficiency.
-Prevent the use of trailing spaces in the definition of materials.
+- Prevent the use of trailing spaces in the definition of materials.
-Implement zoomed window panning (press CTRL key and desired arrow key simultaneously).
+- Implement zoomed window panning (press CTRL key and desired arrow key simultaneously).
-Offer contour plot customization when saving images though matplotlib.
+- Offer contour plot customization when saving images though matplotlib.
-Possibility to flip external images used for selection in the ROI imaging
-tool.
+- Possibility to flip external images used for selection in the ROI imaging tool.
-Numpy 1.2 runtime deprecation warnings suppressed.
+- Numpy 1.2 runtime deprecation warnings suppressed.
-Interpolated mass attenuation coefficients were between 0 and 3 %
-overestimated.
+- Interpolated mass attenuation coefficients were between 0 and 3 % overestimated.
-Correct a bug appearing when trying to fit separate Ka and Kb lines of
-elements above Rb.
+- Correct a bug appearing when trying to fit separate Ka and Kb lines of elements above Rb.
VERSION 4.2.6
+-------------
-Add very basic spx file format support.
+- Add very basic spx file format support.
-Improved SPE file format support.
+- Improved SPE file format support.
-Improved semilogarithmic Y axis toggling.
+- Improved semilogarithmic Y axis toggling.
-Correct a problem appearing when adding curves to the scan window in show points only mode.
+- Correct a problem appearing when adding curves to the scan window in show points only mode.
-Offer the possibility to choose between Qt and native file dialogs through the
-PyMca command line argument --nativefiledialogs=1.
+- Offer the possibility to choose between Qt and native file dialogs through the PyMca command line argument --nativefiledialogs=1.
-Allow overwriting ROI definition files.
+- Allow overwriting ROI definition files.
-Two column ASCII files were not read in the ROI Imaging.
+- Two column ASCII files were not read in the ROI Imaging.
-Implement the ROI Imaging --fileindex=1 command line option to deal with the case
-the EDF map was column oriented instead of row oriented.
+- Implement the ROI Imaging --fileindex=1 command line option to deal with the case the EDF map was column oriented instead of row oriented.
-Add the possibility to transpose the resulting images of a batch fitting by
-passing the --fileindex=1 option to PyMcaPostBatch.
+- Add the possibility to transpose the resulting images of a batch fitting by passing the --fileindex=1 option to PyMcaPostBatch.
-Add threshold selection methods.
+- Add threshold selection methods.
-Implement selections from external images.
+- Implement selections from external images.
-Correct a bug affecting saving of McaAdvancedFit data in CSV format.
+- Correct a bug affecting saving of McaAdvancedFit data in CSV format.
-Replace corrupted Ru.mat attenuation data.
+- Replace corrupted Ru.mat attenuation data.
-Solve a problem with fit configuration window size affecting MacOS computers.
+- Solve a problem with fit configuration window size affecting MacOS computers.
-Prevent the use of numbers as material names.
+- Prevent the use of numbers as material names.
-Prevent an endless loop in case of typing a bad matrix element in the concentrations tab.
+- Prevent an endless loop in case of typing a bad matrix element in the concentrations tab.
-Add the necessary scripts to build PyMca as a python library under windows.
+- Add the necessary scripts to build PyMca as a python library under windows.
-The calibration was not properly written when converting to EDF file format.
+- The calibration was not properly written when converting to EDF file format.
VERSION 4.2.5
+-------------
-- Batch fitting.
- Save concentrations as images too.
+- Batch fitting. Save concentrations as images too.
-- Advanced Fit changes.
- Previous linear fit change was missing in batch mode.
- Correct a problem showing up when Kr L lines were fitted as a group.
+- Advanced Fit.
-- ROI Imaging.
- Show the calculated principal components when using PCA.
- Useless stack background subtraction was not working.
+ - Previous linear fit change was missing in batch mode.
+ - Correct a problem showing up when Kr L lines were fitted as a group.
+
+- ROI Imaging. Show the calculated principal components when using PCA.
+
+- ROI Imaging. Useless stack background subtraction was not working.
VERSION 4.2.4
+-------------
+
- Add ESRF Xia Correct to the Tools menu.
- ROI Imaging changes.
- Do not reset ROI image selection on ROI change.
- Add data saving capabilities to the ROI image window.
- Implement basic principal component analysis mapping.
- Support AIFIRA and SupaVisio maps.
+
+ - Do not reset ROI image selection on ROI change.
+ - Add data saving capabilities to the ROI image window.
+ - Implement basic principal component analysis mapping.
+ - Support AIFIRA and SupaVisio maps.
- Advanced Fit changes.
- Improved transmission geometry support.
- User can specify the scattering angle in the fit configuration.
- Support "funny type" attenuators.
- Make better use of the available space in the McaAdvancedFit window.
- Linear fit: fix peaks to 0 area if they are outside the fitting region.
+
+ -Improved transmission geometry support.
+ -User can specify the scattering angle in the fit configuration.
+ -Support "funny type" attenuators.
+ -Make better use of the available space in the McaAdvancedFit window.
+ -Linear fit: fix peaks to 0 area if they are outside the fitting region.
- Simplify access to binding energies by putting them in a separate ASCII file.
- Add anchors and smoothing information to the HTML reports.
-- Correct a bug on the reconstruction of the chisq image when using the
-multiple processes batch option.
+- Correct a bug on the reconstruction of the chisq image when using the multiple processes batch option.
- Correct a bug preventing the generation of HTML reports in batch mode.
@@ -644,10 +642,11 @@ multiple processes batch option.
- Suppress shared memory compilation warnings.
VERSION 4.2.3
+-------------
+
- Possibility to use pseudo-Voigt as advanced fit function.
-- Possibility to save as data and to remove selected images from
-RGBCorrelator.
+- Possibility to save as data and to remove selected images from RGBCorrelator.
- Support Lucia beamline maps.
@@ -658,38 +657,43 @@ RGBCorrelator.
- Some other minor bugs corrected and some other minor features added.
VERSION 4.2.2
+-------------
-- Input/Output: Support CSV format.
- This should simplify data exchange with spreadsheets.
+- Input/Output
-- Input/Output: Support 64-bit handling of EDF files.
+ - Support CSV format. This should simplify data exchange with spreadsheets.
+ - Support 64-bit handling of EDF files.
-- ScanWindow: Possibility to save all curves in a single specfile.
+- ScanWindow. Possibility to save all curves in a single specfile.
-- McaWindow: Spectra are saved with the active calibration instead of its own.
- In other words: what you see is what you get.
+- McaWindow.
+
+ - Spectra are saved with the active calibration instead of its own. In other words: what you see is what you get.
- Possibility to rename graph curves.
- Possibility to save images thru matplotlib.
- This allows user customization (axes, colorbar, colormap, contours, ...)
+
+ - This allows user customization (axes, colorbar, colormap, contours, ...)
- ROI imaging: Use file-mapped arrays for stacks of more than 2 Gbytes.
- This feature is implemented for 64-bit linux systems.
-- McaAdvancedFit: The combination of linear fit and fixed pile-up was buggy.
+ - This feature is implemented for 64-bit linux systems.
+
+- McaAdvancedFit. The combination of linear fit and fixed pile-up was buggy.
-- Calibration: Correct a crash under python 2.5 using the Auto FWHM option.
+- Calibration. Correct a crash under python 2.5 using the Auto FWHM option.
-- RGB Correlator: ASCII images saved under windows can be read under linux.
+- RGB Correlator. ASCII images saved under windows can be read under linux.
- Add peak statistics information to fit reports.
- Some other minor bugs corrected and some other minor features added.
VERSION 4.2.1
+-------------
-- ROI image: Possibility to normalize spectra to number of pixels.
+- ROI image. Possibility to normalize spectra to number of pixels.
- Speed up access to specfiles containing many scans.
@@ -698,35 +702,33 @@ VERSION 4.2.1
- Correct ESRF specific data acquisition monitoring problems.
VERSION 4.2.0
+-------------
-- ROI Imaging Tool: Possibility to calculate net ROI images.
+- ROI Imaging Tool
-- ROI Imaging Tool: Minimum width was a problem on dual screen displays.
-
-- ROI Imaging Tool: When using two stacks, the colormaps where coupled.
+ - Possibility to calculate net ROI images.
+ - Minimum width was a problem on dual screen displays.
+ - When using two stacks, the colormaps where coupled.
- Main MCA Window old ROI markers were not erased under some conditions.
VERSION 4.1.1
+-------------
-- ROI Tool: Possibility to handle two stacks of same size simultaneously.
- The interest is to combine fluorescence and diffraction maps.
-
-- Possibility to save ROI configuration directly from the table.
+- ROI Tool.
-- ROI Tool: Stack background removal implemented.
- It may be of interest on diffraction maps. It is very slow and not worth
- for fluorescence maps. The advanced fit is much better in this later case.
+ - Possibility to handle two stacks of same size simultaneously. The interest is to combine fluorescence and diffraction maps.
+ - Possibility to save ROI configuration directly from the table.
+ - Stack background removal implemented. It can be of interest on diffraction maps. It is very slow and not worth for fluorescence maps. The advanced fit is much better in this later case.
-- Linux: Add pymcaroitool to the binary package.
- The ROI Tool can be started as an independent application and not only from
- within PyMca.
+- Linux. Add pymcaroitool to the binary package. The ROI Tool can be started as an independent application and not only from within PyMca.
-- Corrected: Simple fit combined with an energy calibration works.
+- Corrected. Simple fit combined with an energy calibration works.
-- Corrected: Scan monitoring. Last scan point was not shown.
+- Corrected. Scan monitoring. Last scan point was not shown.
VERSION 4.1.0
+-------------
- Changed numerical library from Numeric to Numpy.
@@ -740,31 +742,25 @@ VERSION 4.1.0
- MCA window inactive legends after a fit problem corrected.
-- Corrected a problem in which HTML reports generated interactively
-after changing the concentration parameters without passing thru the
-fit configuration window could be different from those shown on the
-screen.
+- Corrected a problem in which HTML reports generated interactively after changing the concentration parameters without passing thru the fit configuration window could be different from those shown on the screen.
VERSION 4.0.9
+-------------
-- Concentration calculated on batch mode were wrong if the fundamental
-parameter method was employed and no report was generated. This bug was
-introduced in version 4.0.2
+- Concentrations calculated on batch mode were wrong if the fundamental parameter method was employed and no report was generated. This bug was introduced in version 4.0.2
-- Batches were unable to start if the first file had a name with
-more characters than the last one.
+- Batches were unable to start if the first file had a name with more characters than the last one.
- Solved a random crash when showing the fit configuration dialog.
- Program was unable to start under Python 2.5
-- Possibility to set anchors to the strip background. This makes the
-strip background the ideal choice when the spectra present background
-pile up artifacts.
+- Possibility to set anchors to the strip background. This makes the strip background the ideal choice when the spectra present background pile up artifacts.
- Correct a memory leak appearing when the Savitsky-Golay smoothing was one.
VERSION 4.0.8
+-------------
- Upgraded underlying sip and PyQt libraries.
@@ -777,39 +773,35 @@ VERSION 4.0.8
- Batch deadlocks solved by the library upgrade.
VERSION 4.0.7
+-------------
-- Improved ergonomy.
- A lot of clicks saved ...
+- Improved ergonomy. A lot of clicks saved ...
- Improved handling of ini files.
-- A lot of work made on the scan window.
- It is quite close to being fully operational.
+- A lot of work made on the scan window. It is quite close to being fully operational.
-- Improved shared memory access.
- Almost fully operational.
+- Improved shared memory access. Almost fully operational.
-- Solved funny crashes under windows.
- The program was crashing under some particular situations
- like using remote desktop, hiding the windows taskbar or
- when the screensaver was activated.
+- Solved funny crashes under windows. The program was crashing under some particular situations like using remote desktop, hiding the windows taskbar or when the screensaver was activated.
- Several minor bugs fixed.
VERSION 4.0.6
+-------------
- Recover material editor functionality.
-- Solve a printing issue on some systems.
- A black square was always present at the lower right corner.
+- Solve a printing issue on some systems. A black square was always present at the lower right corner.
- Started to add functionalities to the scan window.
VERSION 4.0.5
-- Improvements in the RGB Correlator/Post Batch tool:
- Read new images.
- Perform mathematical operations with the images.
+- Improvements in the RGB Correlator/Post Batch tool
+
+ - Read new images.
+ - Perform mathematical operations with the images.
- Solve a file format identification problem.
Some EDF files where wrongly identified as specfile.
@@ -819,8 +811,8 @@ VERSION 4.0.5
- Clear all items from print preview working.
-
VERSION 4.0.4
+-------------
- Add the possibility to save graphics in vectorial format (svg).
@@ -835,6 +827,7 @@ VERSION 4.0.4
- Correct random crashes on startup and on specfile batches.
VERSION 4.0.3
+-------------
- Correct a bug in the ROI imaging tool.
If the first channel was different from 0, there was an offset in each ROI.
@@ -843,23 +836,23 @@ VERSION 4.0.3
- Speed up fit configuration dialog. It was awfully slow since version 3.9.4 Qt4.
-- Linux: Matplotlib saving of graphics working in the binary release also under (K)Ubuntu.
- (It was already the case in pymca4.0.2-linux-p1.tgz)
+- Linux: Matplotlib saving of graphics working in the binary release also under (K)Ubuntu (It was already the case in pymca4.0.2-linux-p1.tgz)
VERSION 4.0.2
+-------------
- Allow the user to choose if the data have to be weighted during the fit.
-- Correct a bug only affecting linear batches: areas and concentrations were smaller by
-a factor 10000. The bug was introduced in version 4.0.0
+- Correct a bug only affecting linear batches: areas and concentrations were smaller by a factor 10000. The bug was introduced in version 4.0.0
- Faster concentrations calculation.
- Concentrations calculated on batches do not force the generation of the .fit files.
-- Linux: sps library made locale independent.
+- Linux sps library made locale independent.
VERSION 4.0.1
+-------------
- Plotting under windows should be faster.
@@ -868,6 +861,7 @@ VERSION 4.0.1
- Advanced fit config button reported not to work on a gentoo 64-bit system when building PyMCA from source. Corrected.
VERSION 4.0.0
+-------------
- Simplify batch preparation.
After a fit, you can load the non-linear parameters from last fit into the configuration just by pressing a button.
@@ -899,6 +893,7 @@ VERSION 4.0.0
VERSION 3.9.4 Qt4
+-----------------
- Publication quality graphics thru matplotlib.
The packages are so big in part because of matplotlib.
@@ -928,6 +923,7 @@ VERSION 3.9.4 Qt4
- New tools can be accessed thru the PyMCA Tools menu.
VERSION 3.9.4
+-------------
- Possibility to fit separately K-alpha and K-beta lines.
@@ -938,6 +934,7 @@ VERSION 3.9.4
- Long standing bug affecting the fit of L and M lines as a group corrected.
VERSION 3.9.3
+-------------
- Add automatic x-ray tube weighted profile generation following Ebel's formulae.
@@ -957,6 +954,7 @@ VERSION 3.9.3
- Solved a program crash loading the shell configuration files. The problem affected some Intel based Macs (not all).
VERSION 3.9.2
+-------------
- It corrects a bug affecting EDF files: The ADD REMOVE REPLACE buttons were not working.
@@ -966,18 +964,21 @@ VERSION 3.9.2
- It exposes all the theoretical shell constants in ASCII files.
This allows the end user to customize the theoretical values by editing the relevant files:
- KShellRates.dat
- KShellConstants.dat
- LShellRates.dat
- LShellConstants.dat
- MShellRates.dat
- MShellConstants.dat
+
+ - KShellRates.dat
+ - KShellConstants.dat
+ - LShellRates.dat
+ - LShellConstants.dat
+ - MShellRates.dat
+ - MShellConstants.dat
VERSION 3.9.1
+-------------
- Huge batch fitting speed up in case the user does not generate the .fit files
VERSION 3.9.0
+-------------
- Possibility to perform linear fits. That can improve batch fitting speed.
diff --git a/copyright b/copyright
index 176ca43..4dc74fe 100644
--- a/copyright
+++ b/copyright
@@ -1,19 +1,19 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: PyMCA
+Upstream-Name: PyMca5
Upstream-Contact: V. Armando Sole <sole@esrf.fr>
Files-Excluded: PyMca5/PyMcaMath/sift third-party/qhull third-party/fisx
third-party/khronos_headers
Files: *
-Copyright: 2004-2013 European Synchrotron Radiation Facility
+Copyright: 2004-2018 European Synchrotron Radiation Facility
License: Expat
Files: PyMca5/*
-Copyright: 2002, 2004-2015, European Synchrotron Radiation Facility
+Copyright: 2002, 2004-2018, European Synchrotron Radiation Facility
License: Expat
Files: PyMca5/Object3D/*
-Copyright: 2004-2013 European Synchrotron Radiation Facility
+Copyright: 2004-2018 European Synchrotron Radiation Facility
License: LGPL-2+
Files: PyMca5/Object3D/Object3DCTools/*
@@ -46,7 +46,7 @@ Copyright: 2004-2014, E. Papillon, European Synchrotron Radiation Facility
License: Expat
Files: PyMca5/PyMcaData/*
-Copyright: 2004-2014 European Synchrotron Radiation Facility (ESRF)
+Copyright: 2004-2018 European Synchrotron Radiation Facility (ESRF)
License: Expat
Files: PyMca5/PyMcaGraph/ctools/_ctools/include/InsidePolygonWithBounds.h
@@ -58,7 +58,7 @@ Copyright: Paul Bourke
License: Expat
Files: PyMca5/PyMcaGui/*
-Copyright: 2004-2014 European Synchrotron Radiation Facility (ESRF)
+Copyright: 2004-2018 European Synchrotron Radiation Facility (ESRF)
License: Expat
Files: PyMca5/PyMcaGui/io/QEdfFileWidget.py
@@ -73,15 +73,15 @@ Copyright: 2004-2014, E. Papillon, V.A. Sole, European Synchrotron Radiation Fac
License: Expat
Files: PyMca5/PyMcaGui/io/hdf5/HDF5Widget.py
-Copyright: 2004-2014, V.A. Sole, ESRF - D. Dale CHESS
+Copyright: 2004-2018, V.A. Sole, ESRF - D. Dale CHESS
License: Expat
Files: PyMca5/PyMcaGui/misc/QIPythonWidget.py
-Copyright: no-info-found
+Copyright: 2004-2018 European Synchrotron Radiation Facility (ESRF)
License: Expat
Files: PyMca5/PyMcaGui/physics/*
-Copyright: 2002, 2004-2015, European Synchrotron Radiation Facility
+Copyright: 2002, 2004-2018, European Synchrotron Radiation Facility
License: Expat
Files: PyMca5/PyMcaGui/plotting/ImageView.py
@@ -116,20 +116,20 @@ Copyright: 2004-2015, V.A. Sole, European Synchrotron Radiation Facility
License: Expat
Files: PyMca5/PyMcaIO/specfile/*
-Copyright: 2004-2013 European Synchrotron Radiation Facility
-License: LGPL-2+
+Copyright: 2004-2018 European Synchrotron Radiation Facility
+License: Expat
Files: PyMca5/PyMcaIO/specfile/include/locale_management.h
-Copyright: 2004-2015, European Synchrotron Radiation Facility
-License: LGPL-2+
+Copyright: 2004-2018, European Synchrotron Radiation Facility
+License: Expat
Files: PyMca5/PyMcaIO/specfile/setup.py
Copyright: 2002, 2004-2015, European Synchrotron Radiation Facility
License: Expat
Files: PyMca5/PyMcaIO/specfile/src/*
-Copyright: 2004-2015, European Synchrotron Radiation Facility
-License: LGPL-2+
+Copyright: 2004-2018, European Synchrotron Radiation Facility
+License: Expat
Files: PyMca5/PyMcaIO/sps/Include/*
Copyright: 1998-2015, European Synchrotron Radiation Facility (ESRF)
@@ -145,8 +145,8 @@ Copyright: 1998-2013, Certified Scientific Software (CSS)
License: Expat
Files: PyMca5/PyMcaIO/sps/Include/sps_lut.h
-Copyright: 2004-2009, European Synchrotron Radiation Facility
-License: GPL-2+
+Copyright: 2004-2018, European Synchrotron Radiation Facility
+License: Expat
Files: PyMca5/PyMcaIO/sps/Src/sps.c
Copyright: 1998-2013, Certified Scientific Software (CSS)
@@ -201,7 +201,7 @@ Copyright: 2008 Uwe Schmitt, uschmitt@mineway.de,
License: BSD-3-clause
Files: PyMca5/PyMcaPlugins/*
-Copyright: 2004-2015, V.A. Sole, European Synchrotron Radiation Facility
+Copyright: 2004-2018, V.A. Sole, European Synchrotron Radiation Facility
License: Expat
Files: PyMca5/PyMcaPlugins/AdvancedAlignmentScanPlugin.py
diff --git a/doc/source/PyMca5.EPDL97.rst b/doc/source/PyMca5.EPDL97.rst
deleted file mode 100644
index e1a3145..0000000
--- a/doc/source/PyMca5.EPDL97.rst
+++ /dev/null
@@ -1,83 +0,0 @@
-EPDL97 Package
-==============
-
-:mod:`EPDL97` Package
----------------------
-
-.. automodule:: PyMca5.EPDL97
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EADLParser` Module
-------------------------
-
-.. automodule:: PyMca5.EPDL97.EADLParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EADLSubshells` Module
----------------------------
-
-.. automodule:: PyMca5.EPDL97.EADLSubshells
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EPDL97Parser` Module
---------------------------
-
-.. automodule:: PyMca5.EPDL97.EPDL97Parser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GenerateEADLBindingEnergies` Module
------------------------------------------
-
-.. automodule:: PyMca5.EPDL97.GenerateEADLBindingEnergies
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GenerateEADLShellConstants` Module
-----------------------------------------
-
-.. automodule:: PyMca5.EPDL97.GenerateEADLShellConstants
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GenerateEADLShellNonradiativeRates` Module
-------------------------------------------------
-
-.. automodule:: PyMca5.EPDL97.GenerateEADLShellNonradiativeRates
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GenerateEADLShellRadiativeRates` Module
----------------------------------------------
-
-.. automodule:: PyMca5.EPDL97.GenerateEADLShellRadiativeRates
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GenerateEPDL97CrossSections` Module
------------------------------------------
-
-.. automodule:: PyMca5.EPDL97.GenerateEPDL97CrossSections
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GenerateEPDL97TotalCrossSections` Module
-----------------------------------------------
-
-.. automodule:: PyMca5.EPDL97.GenerateEPDL97TotalCrossSections
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.Object3D.Object3DPlugins.rst b/doc/source/PyMca5.Object3D.Object3DPlugins.rst
deleted file mode 100644
index 5da81b7..0000000
--- a/doc/source/PyMca5.Object3D.Object3DPlugins.rst
+++ /dev/null
@@ -1,43 +0,0 @@
-Object3DPlugins Package
-=======================
-
-:mod:`ChimeraStack` Module
---------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DPlugins.ChimeraStack
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DMesh` Module
---------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DPlugins.Object3DMesh
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DMeshConfig` Module
---------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DPlugins.Object3DMeshConfig
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DPixmap` Module
-----------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DPlugins.Object3DPixmap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DStack` Module
----------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DPlugins.Object3DStack
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.Object3D.rst b/doc/source/PyMca5.Object3D.rst
deleted file mode 100644
index f093bdd..0000000
--- a/doc/source/PyMca5.Object3D.rst
+++ /dev/null
@@ -1,259 +0,0 @@
-Object3D Package
-================
-
-:mod:`Object3D` Package
------------------------
-
-.. automodule:: PyMca5.Object3D
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ClippingPlaneConfiguration` Module
-----------------------------------------
-
-.. automodule:: PyMca5.Object3D.ClippingPlaneConfiguration
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GLToolBar` Module
------------------------
-
-.. automodule:: PyMca5.Object3D.GLToolBar
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GLWidgetCachePixmap` Module
----------------------------------
-
-.. automodule:: PyMca5.Object3D.GLWidgetCachePixmap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`HorizontalSpacer` Module
-------------------------------
-
-.. automodule:: PyMca5.Object3D.HorizontalSpacer
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DBase` Module
---------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DBase
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DColormap` Module
-------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DColormap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DConfig` Module
-----------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DConfig
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DCoordinates` Module
----------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DCoordinates
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DDirs` Module
---------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DDirs
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DFileDialogs` Module
----------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DFileDialogs
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DIcons` Module
----------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DIcons
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DMovement` Module
-------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DMovement
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DPrintPreview` Module
-----------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DPrintPreview
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DPrivateConfig` Module
------------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DPrivateConfig
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DProperties` Module
---------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DProperties
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DQt` Module
-------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DQt
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DRedBookFont` Module
----------------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DRedBookFont
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DScene` Module
----------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DScene
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Object3DSlider` Module
-----------------------------
-
-.. automodule:: PyMca5.Object3D.Object3DSlider
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ObjectTree` Module
-------------------------
-
-.. automodule:: PyMca5.Object3D.ObjectTree
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PrivateConfigTools` Module
---------------------------------
-
-.. automodule:: PyMca5.Object3D.PrivateConfigTools
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Scene` Module
--------------------
-
-.. automodule:: PyMca5.Object3D.Scene
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SceneControl` Module
---------------------------
-
-.. automodule:: PyMca5.Object3D.SceneControl
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SceneCoordinates` Module
-------------------------------
-
-.. automodule:: PyMca5.Object3D.SceneCoordinates
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SceneGLWidget` Module
----------------------------
-
-.. automodule:: PyMca5.Object3D.SceneGLWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SceneGLWindow` Module
----------------------------
-
-.. automodule:: PyMca5.Object3D.SceneGLWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SceneManager` Module
---------------------------
-
-.. automodule:: PyMca5.Object3D.SceneManager
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SceneTree` Module
------------------------
-
-.. automodule:: PyMca5.Object3D.SceneTree
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SceneWidget` Module
--------------------------
-
-.. automodule:: PyMca5.Object3D.SceneWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`VerticalSpacer` Module
-----------------------------
-
-.. automodule:: PyMca5.Object3D.VerticalSpacer
- :members:
- :undoc-members:
- :show-inheritance:
-
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.Object3D.Object3DPlugins
-
diff --git a/doc/source/PyMca5.PyMca.rst b/doc/source/PyMca5.PyMca.rst
deleted file mode 100644
index 195c029..0000000
--- a/doc/source/PyMca5.PyMca.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-PyMca Package
-=============
-
-:mod:`PyMca` Package
---------------------
-
-.. automodule:: PyMca5.PyMca
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaCore.rst b/doc/source/PyMca5.PyMcaCore.rst
deleted file mode 100644
index a6f7b3c..0000000
--- a/doc/source/PyMca5.PyMcaCore.rst
+++ /dev/null
@@ -1,155 +0,0 @@
-PyMcaCore Package
-=================
-
-:mod:`DataObject` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaCore.DataObject
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EdfFileDataSource` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaCore.EdfFileDataSource
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EdfFileLayer` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaCore.EdfFileLayer
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EventHandler` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaCore.EventHandler
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`HtmlIndex` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaCore.HtmlIndex
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NexusDataSource` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaCore.NexusDataSource
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Plugin1DBase` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaCore.Plugin1DBase
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaBatchBuildOutput` Module
------------------------------------
-
-.. automodule:: PyMca5.PyMcaCore.PyMcaBatchBuildOutput
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaDirs` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaCore.PyMcaDirs
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaLogo` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaCore.PyMcaLogo
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaMatplotlibSave` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaCore.PyMcaMatplotlibSave
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SPSLayer` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaCore.SPSLayer
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecFileDataSource` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaCore.SpecFileDataSource
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecFileLayer` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaCore.SpecFileLayer
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpsDataSource` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaCore.SpsDataSource
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackBase` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaCore.StackBase
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackPluginBase` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaCore.StackPluginBase
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XiaCorrect` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaCore.XiaCorrect
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XiaEdf` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaCore.XiaEdf
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGraph.backends.rst b/doc/source/PyMca5.PyMcaGraph.backends.rst
deleted file mode 100644
index 20091d6..0000000
--- a/doc/source/PyMca5.PyMcaGraph.backends.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-backends Package
-================
-
-:mod:`MatplotlibBackend` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaGraph.backends.MatplotlibBackend
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`OpenGLBackend` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaGraph.backends.OpenGLBackend
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyQtGraphBackend` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGraph.backends.PyQtGraphBackend
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGraph.ctools.rst b/doc/source/PyMca5.PyMcaGraph.ctools.rst
deleted file mode 100644
index 148fbcf..0000000
--- a/doc/source/PyMca5.PyMcaGraph.ctools.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-ctools Package
-==============
-
-:mod:`ctools` Package
----------------------
-
-.. automodule:: PyMca5.PyMcaGraph.ctools
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGraph.rst b/doc/source/PyMca5.PyMcaGraph.rst
deleted file mode 100644
index 29dc530..0000000
--- a/doc/source/PyMca5.PyMcaGraph.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-PyMcaGraph Package
-==================
-
-.. automodule:: PyMca5.PyMcaGraph.__init__
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Plot` Module
-------------------
-
-.. automodule:: PyMca5.PyMcaGraph.Plot
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PlotBackend` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaGraph.PlotBackend
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PlotBase` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaGraph.PlotBase
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PluginLoader` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGraph.PluginLoader
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaGraph.backends
- PyMca5.PyMcaGraph.ctools
-
diff --git a/doc/source/PyMca5.PyMcaGui.io.hdf5.rst b/doc/source/PyMca5.PyMcaGui.io.hdf5.rst
deleted file mode 100644
index dbc70e5..0000000
--- a/doc/source/PyMca5.PyMcaGui.io.hdf5.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-hdf5 Package
-============
-
-:mod:`HDF5CounterTable` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.hdf5.HDF5CounterTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`HDF5DatasetView` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.hdf5.HDF5DatasetView
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`HDF5Info` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.hdf5.HDF5Info
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`HDF5Selection` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.hdf5.HDF5Selection
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`HDF5Widget` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.hdf5.HDF5Widget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QNexusWidget` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.hdf5.QNexusWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGui.io.rst b/doc/source/PyMca5.PyMcaGui.io.rst
deleted file mode 100644
index 689ba1c..0000000
--- a/doc/source/PyMca5.PyMcaGui.io.rst
+++ /dev/null
@@ -1,82 +0,0 @@
-io Package
-==========
-
-:mod:`io` Package
------------------
-
-.. automodule:: PyMca5.PyMcaGui.io
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QEdfFileWidget` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.QEdfFileWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QSelectorWidget` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.QSelectorWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QSourceSelector` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.QSourceSelector
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QSpecFileWidget` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.QSpecFileWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QSpsWidget` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.QSpsWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecFileCntTable` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.SpecFileCntTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecFileDataInfo` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.SpecFileDataInfo
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecFileMcaTable` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.io.SpecFileMcaTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaGui.io.hdf5
-
diff --git a/doc/source/PyMca5.PyMcaGui.math.fitting.rst b/doc/source/PyMca5.PyMcaGui.math.fitting.rst
deleted file mode 100644
index fcb8738..0000000
--- a/doc/source/PyMca5.PyMcaGui.math.fitting.rst
+++ /dev/null
@@ -1,131 +0,0 @@
-fitting Package
-===============
-
-:mod:`CheckField` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.CheckField
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EntryField` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.EntryField
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FitActionsGui` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.FitActionsGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FitConfigGui` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.FitConfigGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FitStatusGui` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.FitStatusGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaTable` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.McaTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MultiParameters` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.MultiParameters
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Parameters` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.Parameters
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QScriptOption` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.QScriptOption
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SimpleFitBatchGui` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.SimpleFitBatchGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SimpleFitConfigurationGui` Module
----------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.SimpleFitConfigurationGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SimpleFitControlWidget` Module
-------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.SimpleFitControlWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SimpleFitGui` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.SimpleFitGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecfitGui` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.SpecfitGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`TabSheets` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.TabSheets
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`TextField` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.fitting.TextField
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGui.math.rst b/doc/source/PyMca5.PyMcaGui.math.rst
deleted file mode 100644
index 992e419..0000000
--- a/doc/source/PyMca5.PyMcaGui.math.rst
+++ /dev/null
@@ -1,82 +0,0 @@
-math Package
-============
-
-:mod:`FFTAlignmentWindow` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.FFTAlignmentWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NNMADialog` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.NNMADialog
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NNMAWindow` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.NNMAWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PCADialog` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.PCADialog
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PCAWindow` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.PCAWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SGWindow` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.SGWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SIFTAlignmentWindow` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.SIFTAlignmentWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SNIPWindow` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.SNIPWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StripBackgroundWidget` Module
------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.math.StripBackgroundWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaGui.math.fitting
-
diff --git a/doc/source/PyMca5.PyMcaGui.misc.rst b/doc/source/PyMca5.PyMcaGui.misc.rst
deleted file mode 100644
index fc859d7..0000000
--- a/doc/source/PyMca5.PyMcaGui.misc.rst
+++ /dev/null
@@ -1,83 +0,0 @@
-misc Package
-============
-
-:mod:`CalculationThread` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.CalculationThread
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`CalculationTimer` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.CalculationTimer
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`CloseEventNotifyingWidget` Module
----------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.CloseEventNotifyingWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`DoubleSlider` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.DoubleSlider
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FrameBrowser` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.FrameBrowser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NumpyArrayTableModel` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.NumpyArrayTableModel
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NumpyArrayTableView` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.NumpyArrayTableView
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NumpyArrayTableWidget` Module
------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.NumpyArrayTableWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QIPythonWidget` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.QIPythonWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SubprocessLogWidget` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.misc.SubprocessLogWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGui.physics.rst b/doc/source/PyMca5.PyMcaGui.physics.rst
deleted file mode 100644
index f8bc49a..0000000
--- a/doc/source/PyMca5.PyMcaGui.physics.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-physics Package
-===============
-
-:mod:`physics` Package
-----------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaGui.physics.xas
-
-.. toctree::
-
- PyMca5.PyMcaGui.physics.xrf
-
diff --git a/doc/source/PyMca5.PyMcaGui.physics.xrf.rst b/doc/source/PyMca5.PyMcaGui.physics.xrf.rst
deleted file mode 100644
index 83c041f..0000000
--- a/doc/source/PyMca5.PyMcaGui.physics.xrf.rst
+++ /dev/null
@@ -1,171 +0,0 @@
-xrf Package
-===========
-
-:mod:`AttenuatorsTable` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.AttenuatorsTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ConcentrationsWidget` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.ConcentrationsWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ElementsInfo` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.ElementsInfo
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EnergyTable` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.EnergyTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FastXRFLinearFitWindow` Module
-------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.FastXRFLinearFitWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FitParam` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.FitParam
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FitParamForm` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.FitParamForm
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FitPeakSelect` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.FitPeakSelect
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MaterialEditor` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.MaterialEditor
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MatrixEditor` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.MatrixEditor
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MatrixImage` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.MatrixImage
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaAdvancedFit` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.McaAdvancedFit
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaAdvancedTable` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.McaAdvancedTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaCalWidget` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.McaCalWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PeakIdentifier` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.PeakIdentifier
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PeakTableWidget` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.PeakTableWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QPeriodicTable` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.QPeriodicTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QXTube` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.QXTube
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QtMcaAdvancedFitReport` Module
-------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.QtMcaAdvancedFitReport
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StrategyHandler` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.StrategyHandler
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XRFMCPyMca` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.physics.xrf.XRFMCPyMca
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGui.plotting.rst b/doc/source/PyMca5.PyMcaGui.plotting.rst
deleted file mode 100644
index ea4dcc2..0000000
--- a/doc/source/PyMca5.PyMcaGui.plotting.rst
+++ /dev/null
@@ -1,107 +0,0 @@
-plotting Package
-================
-
-:mod:`ColormapDialog` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.ColormapDialog
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`LegendSelector` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.LegendSelector
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MaskImageWidget` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.MaskImageWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaROIWidget` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.McaROIWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ObjectPrintConfigurationDialog` Module
---------------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.ObjectPrintConfigurationDialog
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PlotWidget` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.PlotWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PlotWindow` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.PlotWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ProfileScanWidget` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.ProfileScanWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaPrintPreview` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.PyMcaPrintPreview
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMca_Icons` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.PyMca_Icons
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Q4PyMcaPrintPreview` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.Q4PyMcaPrintPreview
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RGBCorrelatorGraph` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.RGBCorrelatorGraph
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RenameCurveDialog` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.plotting.RenameCurveDialog
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGui.pymca.rst b/doc/source/PyMca5.PyMcaGui.pymca.rst
deleted file mode 100644
index 1672774..0000000
--- a/doc/source/PyMca5.PyMcaGui.pymca.rst
+++ /dev/null
@@ -1,371 +0,0 @@
-pymca Package
-=============
-
-:mod:`ChangeLog` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.ChangeLog
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EdfFileSimpleViewer` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.EdfFileSimpleViewer
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ExternalImagesWindow` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.ExternalImagesWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Fit2Spec` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.Fit2Spec
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Mca2Edf` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.Mca2Edf
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaCalibrationControlGUI` Module
---------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.McaCalibrationControlGUI
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaCustomEvent` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.McaCustomEvent
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaSimpleFit` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.McaSimpleFit
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaWindow` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.McaWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Median2DBrowser` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.Median2DBrowser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaBatch` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaBatch
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaFileDialogs` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaFileDialogs
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaGLWindow` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaGLWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaHKLImageWindow` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaHKLImageWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaImageWindow` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaImageWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaMain` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaMain
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaMdi` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaMdi
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaNexusWidget` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaNexusWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaPostBatch` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMcaPostBatch
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMca_help` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.PyMca_help
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QDataSource` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QDataSource
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QDispatcher` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QDispatcher
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QHDF5Stack1D` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QHDF5Stack1D
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QHDF5StackWizard` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QHDF5StackWizard
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QPyMcaMatplotlibSave` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QPyMcaMatplotlibSave
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QPyMcaMatplotlibSave1D` Module
-------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QPyMcaMatplotlibSave1D
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QSource` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QSource
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QSpsDataSource` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QSpsDataSource
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QStack` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QStack
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`QStackWidget` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.QStackWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RGBCorrelator` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.RGBCorrelator
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RGBCorrelatorSlider` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.RGBCorrelatorSlider
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RGBCorrelatorTable` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.RGBCorrelatorTable
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RGBCorrelatorWidget` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.RGBCorrelatorWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RGBImageCalculator` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.RGBImageCalculator
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ScanFit` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.ScanFit
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ScanWindow` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.ScanWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ScanWindowInfoWidget` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.ScanWindowInfoWidget
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackBrowser` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.StackBrowser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackPluginResultsWindow` Module
---------------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.StackPluginResultsWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackROIWindow` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.StackROIWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackSelector` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.StackSelector
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackSimpleFitWindow` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.StackSimpleFitWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SumRulesTool` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.SumRulesTool
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XMCDWindow` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.XMCDWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XiaCorrectWizard` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaGui.pymca.XiaCorrectWizard
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaGui.rst b/doc/source/PyMca5.PyMcaGui.rst
deleted file mode 100644
index 25ce5d5..0000000
--- a/doc/source/PyMca5.PyMcaGui.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-PyMcaGui Package
-================
-
-:mod:`PyMcaGui` Package
------------------------
-
-.. automodule:: PyMca5.PyMcaGui
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaQt` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaGui.PyMcaQt
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaGui.io
- PyMca5.PyMcaGui.math
- PyMca5.PyMcaGui.misc
- PyMca5.PyMcaGui.physics
- PyMca5.PyMcaGui.plotting
- PyMca5.PyMcaGui.pymca
-
diff --git a/doc/source/PyMca5.PyMcaIO.rst b/doc/source/PyMca5.PyMcaIO.rst
deleted file mode 100644
index 35e13e7..0000000
--- a/doc/source/PyMca5.PyMcaIO.rst
+++ /dev/null
@@ -1,235 +0,0 @@
-PyMcaIO Package
-===============
-
-:mod:`APSMEDFileParser` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaIO.APSMEDFileParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`AifiraMap` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaIO.AifiraMap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ArraySave` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaIO.ArraySave
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`BAXSCSVFileParser` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaIO.BAXSCSVFileParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ConfigDict` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaIO.ConfigDict
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EDFStack` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaIO.EDFStack
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EdfFile` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaIO.EdfFile
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Fit2DChiFileParser` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaIO.Fit2DChiFileParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`HDF5Stack1D` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaIO.HDF5Stack1D
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`LuciaMap` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaIO.LuciaMap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MEDFile` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaIO.MEDFile
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MRCMap` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaIO.MRCMap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MarCCD` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaIO.MarCCD
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`OlympusCSVFileParser` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaIO.OlympusCSVFileParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`OmnicMap` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaIO.OmnicMap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`OpusDPTMap` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaIO.OpusDPTMap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PilatusCBF` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaIO.PilatusCBF
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RTXMap` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaIO.RTXMap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SPXFileParser` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaIO.SPXFileParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SRSFileParser` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaIO.SRSFileParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecFileAbstractClass` Module
------------------------------------
-
-.. automodule:: PyMca5.PyMcaIO.SpecFileAbstractClass
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecFileStack` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaIO.SpecFileStack
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SupaVisioMap` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaIO.SupaVisioMap
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`TextImageStack` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaIO.TextImageStack
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ThermoEMSFileParser` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaIO.ThermoEMSFileParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`TiffIO` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaIO.TiffIO
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`TiffStack` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaIO.TiffStack
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`specfilewrapper` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaIO.specfilewrapper
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`spswrap` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaIO.spswrap
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaMath.PyMcaSciPy.rst b/doc/source/PyMca5.PyMcaMath.PyMcaSciPy.rst
deleted file mode 100644
index 7c269e5..0000000
--- a/doc/source/PyMca5.PyMcaMath.PyMcaSciPy.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-PyMcaSciPy Package
-==================
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaMath.PyMcaSciPy.signal
-
diff --git a/doc/source/PyMca5.PyMcaMath.PyMcaSciPy.signal.rst b/doc/source/PyMca5.PyMcaMath.PyMcaSciPy.signal.rst
deleted file mode 100644
index abdff9d..0000000
--- a/doc/source/PyMca5.PyMcaMath.PyMcaSciPy.signal.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-signal Package
-==============
-
-:mod:`signal` Package
----------------------
-
-.. automodule:: PyMca5.PyMcaMath.PyMcaSciPy.signal
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`median` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaMath.PyMcaSciPy.signal.median
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaMath.fitting.rst b/doc/source/PyMca5.PyMcaMath.fitting.rst
deleted file mode 100644
index d51bfb5..0000000
--- a/doc/source/PyMca5.PyMcaMath.fitting.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-fitting Package
-===============
-
-:mod:`Gefit` Module
--------------------
-
-.. automodule:: PyMca5.PyMcaMath.fitting.Gefit
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SimpleFitModule` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaMath.fitting.SimpleFitModule
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SimpleFitUserEstimatedFunctions` Module
----------------------------------------------
-
-.. automodule:: PyMca5.PyMcaMath.fitting.SimpleFitUserEstimatedFunctions
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Specfit` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaMath.fitting.Specfit
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecfitFunctions` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaMath.fitting.SpecfitFunctions
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackSimpleFit` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaMath.fitting.StackSimpleFit
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaMath.mva.py_nnma.rst b/doc/source/PyMca5.PyMcaMath.mva.py_nnma.rst
deleted file mode 100644
index 1c28413..0000000
--- a/doc/source/PyMca5.PyMcaMath.mva.py_nnma.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-py_nnma Package
-===============
-
-:mod:`py_nnma` Package
-----------------------
-
-.. automodule:: PyMca5.PyMcaMath.mva.py_nnma
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`nnma` Module
-------------------
-
-.. automodule:: PyMca5.PyMcaMath.mva.py_nnma.nnma
- :members:
- :undoc-members:
- :show-inheritance:
-
-
diff --git a/doc/source/PyMca5.PyMcaMath.mva.rst b/doc/source/PyMca5.PyMcaMath.mva.rst
deleted file mode 100644
index e15f874..0000000
--- a/doc/source/PyMca5.PyMcaMath.mva.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-mva Package
-===========
-
-:mod:`Lanczos` Module
----------------------
-
-.. automodule:: PyMca5.PyMcaMath.mva.Lanczos
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NNMAModule` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaMath.mva.NNMAModule
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PCAModule` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaMath.mva.PCAModule
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PCATools` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaMath.mva.PCATools
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaMath.mva.py_nnma
-
diff --git a/doc/source/PyMca5.PyMcaMath.rst b/doc/source/PyMca5.PyMcaMath.rst
deleted file mode 100644
index 6c26ca4..0000000
--- a/doc/source/PyMca5.PyMcaMath.rst
+++ /dev/null
@@ -1,69 +0,0 @@
-PyMcaMath Package
-=================
-
-:mod:`PyMcaMath` Package
-------------------------
-
-.. automodule:: PyMca5.PyMcaMath
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ImageRegistration` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaMath.ImageRegistration
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SGModule` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaMath.SGModule
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SNIPModule` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaMath.SNIPModule
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SimpleMath` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaMath.SimpleMath
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecArithmetic` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaMath.SpecArithmetic
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`linalg` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaMath.linalg
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaMath.PyMcaSciPy
- PyMca5.PyMcaMath.fitting
- PyMca5.PyMcaMath.mva
- PyMca5.PyMcaMath.sift
-
diff --git a/doc/source/PyMca5.PyMcaMath.sift.rst b/doc/source/PyMca5.PyMcaMath.sift.rst
deleted file mode 100644
index 00e6190..0000000
--- a/doc/source/PyMca5.PyMcaMath.sift.rst
+++ /dev/null
@@ -1,75 +0,0 @@
-sift Package
-============
-
-:mod:`sift` Package
--------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`alignment` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.alignment
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`interpolation` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.interpolation
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`match` Module
--------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.match
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`opencl` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.opencl
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`param` Module
--------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.param
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`plan` Module
-------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.plan
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`sift` Module
-------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.sift
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`utils` Module
--------------------
-
-.. automodule:: PyMca5.PyMcaMath.sift.utils
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaMisc.rst b/doc/source/PyMca5.PyMcaMisc.rst
deleted file mode 100644
index 5d36472..0000000
--- a/doc/source/PyMca5.PyMcaMisc.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-PyMcaMisc Package
-=================
-
-:mod:`PhysicalMemory` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaMisc.PhysicalMemory
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaPhysics.rst b/doc/source/PyMca5.PyMcaPhysics.rst
deleted file mode 100644
index 1923e12..0000000
--- a/doc/source/PyMca5.PyMcaPhysics.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-PyMcaPhysics Package
-====================
-
-:mod:`PyMcaPhysics` Package
----------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SixCircle` Module
------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.SixCircle
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaPhysics.xas
- PyMca5.PyMcaPhysics.xrf
-
diff --git a/doc/source/PyMca5.PyMcaPhysics.xas.rst b/doc/source/PyMca5.PyMcaPhysics.xas.rst
deleted file mode 100644
index f20e8f1..0000000
--- a/doc/source/PyMca5.PyMcaPhysics.xas.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-xas Package
-===========
-
-:mod:`XASNormalization` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xas.XASNormalization
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XASSelfattenuationCorrection` Module
-------------------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xas.XASSelfattenuationCorrection
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaPhysics.xrf.XRFMC.rst b/doc/source/PyMca5.PyMcaPhysics.xrf.XRFMC.rst
deleted file mode 100644
index d4b04a7..0000000
--- a/doc/source/PyMca5.PyMcaPhysics.xrf.XRFMC.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-XRFMC Package
-=============
-
-:mod:`XMSOParser` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.XRFMC.XMSOParser
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XRFMCHelper` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.XRFMC.XRFMCHelper
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.PyMcaPhysics.xrf.rst b/doc/source/PyMca5.PyMcaPhysics.xrf.rst
deleted file mode 100644
index 3ed9825..0000000
--- a/doc/source/PyMca5.PyMcaPhysics.xrf.rst
+++ /dev/null
@@ -1,162 +0,0 @@
-xrf Package
-===========
-
-:mod:`BindingEnergies` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.BindingEnergies
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ClassMcaTheory` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.ClassMcaTheory
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`CoherentScattering` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.CoherentScattering
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ConcentrationsTool` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.ConcentrationsTool
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ElementHtml` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.ElementHtml
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Elements` Module
-----------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.Elements
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FastXRFLinearFit` Module
-------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.FastXRFLinearFit
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FisxHelper` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.FisxHelper
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GenerateXCOMCrossSections` Module
----------------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.GenerateXCOMCrossSections
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`IncoherentScattering` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.IncoherentScattering
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`KShell` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.KShell
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`LShell` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.LShell
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MShell` Module
---------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.MShell
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`McaAdvancedFitBatch` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.McaAdvancedFitBatch
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaEPDL97` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.PyMcaEPDL97
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Scofield1973` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.Scofield1973
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SingleLayerStrategy` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.SingleLayerStrategy
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Strategies` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.Strategies
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XRayTubeEbel` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaPhysics.xrf.XRayTubeEbel
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.PyMcaPhysics.xrf.XRFMC
-
diff --git a/doc/source/PyMca5.PyMcaPlugins.rst b/doc/source/PyMca5.PyMcaPlugins.rst
deleted file mode 100644
index 286ceda..0000000
--- a/doc/source/PyMca5.PyMcaPlugins.rst
+++ /dev/null
@@ -1,291 +0,0 @@
-PyMcaPlugins Package
-====================
-
-:mod:`PyMcaPlugins` Package
----------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`AdvancedAlignmentScanPlugin` Module
------------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.AdvancedAlignmentScanPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`AlignmentScanPlugin` Module
----------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.AlignmentScanPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`BackgroundScanPlugin` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.BackgroundScanPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`BackgroundStackPlugin` Module
------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.BackgroundStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`CalculationThread` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.CalculationThread
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ConsolePlugin` Module
----------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.ConsolePlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ConsoleStackPlugin` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.ConsoleStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ExternalImagesStackPlugin` Module
----------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.ExternalImagesStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FastXRFLinearFitStackPlugin` Module
------------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.FastXRFLinearFitStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`FitStackPlugin` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.FitStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ImageAlignmentStackPlugin` Module
----------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.ImageAlignmentStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MathPlugins` Module
--------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.MathPlugins
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MedianFilterScanDeglitchPlugin` Module
---------------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.MedianFilterScanDeglitchPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MedianFilterScanPlugin` Module
-------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.MedianFilterScanPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MedianFilterStackPlugin` Module
--------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.MedianFilterStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MotorInfoPlugin` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.MotorInfoPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MotorInfoWindow` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.MotorInfoWindow
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`MultipleScanToMeshPlugin` Module
---------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.MultipleScanToMeshPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NNMAStackPlugin` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.NNMAStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`NormalizationPlugins` Module
-----------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.NormalizationPlugins
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PCAStackPlugin` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.PCAStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`Plugin1DBase` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.Plugin1DBase
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ROIStackPlugin` Module
-----------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.ROIStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`RegularMeshPlugin` Module
--------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.RegularMeshPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ReverseStackPlugin` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.ReverseStackPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackAxesPlugin` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.StackAxesPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackBrowserPlugin` Module
---------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.StackBrowserPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackNormalizationPlugin` Module
---------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.StackNormalizationPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackPluginBase` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.StackPluginBase
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackScanWindowPlugin` Module
------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.StackScanWindowPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`TomographyPlugin` Module
------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.TomographyPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XASScanNormalizationPlugin` Module
-----------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.XASScanNormalizationPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XASSelfattenuationPlugin` Module
---------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.XASSelfattenuationPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XASStackNormalizationPlugin` Module
------------------------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.XASStackNormalizationPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`XMCDPlugin` Module
-------------------------
-
-.. automodule:: PyMca5.PyMcaPlugins.XMCDPlugin
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/PyMca5.rst b/doc/source/PyMca5.rst
deleted file mode 100644
index f4ab85b..0000000
--- a/doc/source/PyMca5.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-PyMca5 Package
-==============
-
-:mod:`PyMca5` Package
----------------------
-
-.. automodule:: PyMca5.__init__
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PyMcaDataDir` Module
---------------------------
-
-.. automodule:: PyMca5.PyMcaDataDir
- :members:
- :undoc-members:
- :show-inheritance:
-
-Subpackages
------------
-
-.. toctree::
-
- PyMca5.EPDL97
- PyMca5.Object3D
- PyMca5.PyMca
- PyMca5.PyMcaCore
- PyMca5.PyMcaGraph
- PyMca5.PyMcaGui
- PyMca5.PyMcaIO
- PyMca5.PyMcaMath
- PyMca5.PyMcaMisc
- PyMca5.PyMcaPhysics
- PyMca5.PyMcaPlugins
- PyMca5.tests
-
diff --git a/doc/source/PyMca5.tests.rst b/doc/source/PyMca5.tests.rst
deleted file mode 100644
index 78e81a3..0000000
--- a/doc/source/PyMca5.tests.rst
+++ /dev/null
@@ -1,91 +0,0 @@
-tests Package
-=============
-
-:mod:`tests` Package
---------------------
-
-.. automodule:: PyMca5.tests
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ConfigDictTest` Module
-----------------------------
-
-.. automodule:: PyMca5.tests.ConfigDictTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`DataTest` Module
-----------------------
-
-.. automodule:: PyMca5.tests.DataTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`EdfFileTest` Module
--------------------------
-
-.. automodule:: PyMca5.tests.EdfFileTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`ElementsTest` Module
---------------------------
-
-.. automodule:: PyMca5.tests.ElementsTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`GefitTest` Module
------------------------
-
-.. automodule:: PyMca5.tests.GefitTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`PCAToolsTest` Module
---------------------------
-
-.. automodule:: PyMca5.tests.PCAToolsTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`SpecfileTest` Module
---------------------------
-
-.. automodule:: PyMca5.tests.SpecfileTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`StackBaseTest` Module
----------------------------
-
-.. automodule:: PyMca5.tests.StackBaseTest
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`TestAll` Module
----------------------
-
-.. automodule:: PyMca5.tests.TestAll
- :members:
- :undoc-members:
- :show-inheritance:
-
-:mod:`specfilewrapperTest` Module
----------------------------------
-
-.. automodule:: PyMca5.tests.specfilewrapperTest
- :members:
- :undoc-members:
- :show-inheritance:
-
diff --git a/doc/source/_templates/localtoc.html b/doc/source/_templates/localtoc.html
new file mode 100644
index 0000000..e5c6dc4
--- /dev/null
+++ b/doc/source/_templates/localtoc.html
@@ -0,0 +1,13 @@
+{#
+ basic/localtoc.html
+ ~~~~~~~~~~~~~~~~~~~
+
+ Sphinx sidebar template: local table of contents.
+
+ :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+#}
+{%- if display_toc %}
+ <h3><a href="{{ pathto(master_doc) }}">{{ _('This Page') }}</a></h3>
+ {{ toc }}
+{%- endif %}
diff --git a/doc/source/_templates/pagesource.html b/doc/source/_templates/pagesource.html
new file mode 100644
index 0000000..54428f9
--- /dev/null
+++ b/doc/source/_templates/pagesource.html
@@ -0,0 +1,7 @@
+{%- if show_source and has_source and sourcename %}
+ <div id="sidebar-pagesource" role="note" aria-label="source link"
+ style="margin-top: 1.5em; padding-top: 0.1em; border-top: 1px solid #86989b">
+ <a href="{{ pathto('_sources/' + sourcename, true)|e }}"
+ style="color: #c0c0c0" rel="nofollow">{{ _('Show Page Source') }}</a>
+ </div>
+{%- endif %}
diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst
new file mode 100644
index 0000000..0894e73
--- /dev/null
+++ b/doc/source/changelog.rst
@@ -0,0 +1,4 @@
+Change Log
+==========
+
+.. include:: ../../changelog.txt
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 79f2394..157758d 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -36,7 +36,8 @@ import sys, os
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.coverage', 'sphinx.ext.viewcode']
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.coverage', 'sphinx.ext.viewcode',
+ 'sphinx.ext.mathjax']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -51,17 +52,19 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
+from PyMca5 import __version__
+import datetime
project = u'PyMca5'
-copyright = u'2014, V Armando Solé'
+copyright = u'2004-%s, European Synchrotron Radiation Facility' % datetime.datetime.now().year
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = '5.0.0'
+version = __version__
# The full version, including alpha/beta/rc tags.
-release = '5.0.0'
+release = __version__
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -124,17 +127,17 @@ html_theme = 'default'
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
-#html_logo = None
+html_logo = "img/PyMca_256x256.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 = None
+html_favicon = "img/PyMca.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,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+#html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
@@ -145,7 +148,7 @@ html_static_path = ['_static']
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
+html_sidebars = {'**': ['globaltoc.html', 'localtoc.html', 'relations.html', 'searchbox.html', 'pagesource.html']}
# Additional templates that should be rendered to pages, maps page names to
# template names.
@@ -182,17 +185,8 @@ htmlhelp_basename = 'PyMcadoc'
# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
-
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
-
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
-}
+latex_elements = {'papersize': 'a4paper',
+ 'pointsize': '10pt'}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
@@ -203,7 +197,7 @@ latex_documents = [
# The name of an image file (relative to this directory) to place at the top of
# the title page.
-#latex_logo = None
+latex_logo = "img/PyMca_256x256.png"
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
@@ -242,7 +236,7 @@ man_pages = [
# dir menu entry, description, category)
texinfo_documents = [
('index', 'PyMca5', u'PyMca5 Documentation',
- u'V Armando Solé', 'PyMca5', 'One line description of project.',
+ u'V Armando Solé', 'PyMca5', 'The X-ray Fluorescence Toolkit',
'Miscellaneous'),
]
diff --git a/doc/source/customization/index.rst b/doc/source/customization/index.rst
new file mode 100644
index 0000000..7a74053
--- /dev/null
+++ b/doc/source/customization/index.rst
@@ -0,0 +1,8 @@
+
+Customizing PyMca
+=================
+
+.. toctree::
+
+ plugins1d
+ stackplugins
diff --git a/doc/source/customization/plugins1d.rst b/doc/source/customization/plugins1d.rst
new file mode 100644
index 0000000..929b7f0
--- /dev/null
+++ b/doc/source/customization/plugins1d.rst
@@ -0,0 +1,20 @@
+
+Adding 1D plugins
+-----------------
+
+.. currentmodule:: PyMca5.PyMcaCore.Plugin1DBase
+
+Overview
+++++++++
+
+.. automodule:: PyMca5.PyMcaCore.Plugin1DBase
+
+1D plugin API
++++++++++++++
+
+.. autoclass:: Plugin1DBase
+ :members:
+
+.. autoattribute:: MENU_TEXT
+
+.. autofunction:: getPlugin1DInstance
diff --git a/doc/source/customization/stackplugins.rst b/doc/source/customization/stackplugins.rst
new file mode 100644
index 0000000..3a8684a
--- /dev/null
+++ b/doc/source/customization/stackplugins.rst
@@ -0,0 +1,21 @@
+
+
+Adding stack plugins
+--------------------
+
+.. currentmodule:: PyMca5.PyMcaCore.StackPluginBase
+
+Overview
+++++++++
+
+.. automodule:: PyMca5.PyMcaCore.StackPluginBase
+
+Stack plugin API
+++++++++++++++++
+
+.. autoclass:: StackPluginBase
+ :members:
+
+.. autoattribute:: MENU_TEXT
+
+.. autofunction:: getStackPluginInstance
diff --git a/doc/source/faq.rst b/doc/source/faq.rst
new file mode 100644
index 0000000..95ac1bf
--- /dev/null
+++ b/doc/source/faq.rst
@@ -0,0 +1,73 @@
+Frequently Asked Questions
+==========================
+
+ Should I write PyMCA or PyMca?
+ Why did you take the Gioconda as logo?
+ I do not use the ESRF data format nor the SPEC file format. Do I have to convert my data?
+ I use an X-ray tube, how can I make quantitative analysis?
+ The description of the scattering peaks is very poor, why?
+ I am on windows, what program version should I use?
+ Does PyMca work on Vista or Windows 7?
+ I have a Mac, the program seems to hang or to do nothing, how can I report what's happening?
+ What have you used to build the binaries?
+ I want to build the program from its source code. Do I need Numeric or Numpy?
+
+Should I write PyMCA or PyMca?
+------------------------------
+
+It's up to you. The program has been published as PyMCA because of the scientific use of MCA for multichannel analyzer but PyMca is more pythonic and it is what you had to type to get the program running. Due to some problems I encountered with the publisher, I have some preference for PyMca because it makes clear that it is the name of the program and it does not intend to be an acronym.
+
+Why did you take the Gioconda as logo?
+--------------------------------------
+
+Believe it or not, Mona Lisa has more to do with the PyMca code than with The Da Vinci Code. In particular, the support of multilayered samples and of X-ray tubes was greatly influenced by the use of PyMca by the Centre de Recherche et Restauration des Musees de France (C2RMF) to analyze X-ray spectra obtained from that master piece. The results of that work were published in July 2010.
+
+I do not use the ESRF data format nor the SPEC file format. Do I have to convert my data?
+-----------------------------------------------------------------------------------------
+
+Probably not. Most common formats are wrapped by PyMca as SPEC file format. That includes multicolumn ASCII, Canberra's .TK, AmpTek, and QXAS. If your format is not supported but you know how to read it, it should not be a big problem to implement it.
+
+Starting with version 4.4.0, PyMca supports the HDF5 format. Due to its versatility, this format will progresively become the preferred input format of PyMca.
+
+I use an X-ray tube, how can I make quantitative analysis?
+----------------------------------------------------------
+
+Well, you will have to characterize your tube or, better said, find a description of it in terms of discrete energies that allows you to reproduce the concentrations of a set of calibrated standards. These standards have to cover your energy range of interest and you should give first priority to K shell standards and secondly to L shell standards.
+
+The supplied X-ray tube profile calculation tool is just for guidance and, unless you are going to measure samples that are very similar to your standards, I really doubt that you can use the generated profile without some "hand work". In any case, please consider ALL sources of attenuation between the beam and the sample and between the sample and the detector. If you aim to work at very low energies, please consider the atmosphere between the detector window and the detector itself. Some detectors are not under vacuum but under some inert gas atmosphere.
+
+In its simplest form the procedure would consist on measuring a thin film standard and entering as matrix composition the known composition of the standard. When asking the program to calculate the concentrations using a matrix element as reference, it should give the exact concentration at least for the reference element. Then, at the concentrations tab, switch to the fundamental parameter method. Adjust the time and solid angle parameters to match those of the measurement. At that point, start to play with the flux parameter till you reproduce the same result as the one obtained with the internal reference. Once you have found a set of fundamental parameters that reproduce all your standards within the desired accuracy, you will be ready. The procedure can be/is tedious, but it is really worth the effort.
+
+The description of the scattering peaks is very poor, why?
+----------------------------------------------------------
+
+Because they are fitted as simple gaussians and that is not correct. The reason? I considered that you could always leave them out of the fitting region and therefore the main interest of having them is to allow to deal with their escape peaks when falling into the fitting region. I have to admit that, while this is mostly the case when using synchrotron radiation as excitation source, the Compton peaks can be a problem when using X-ray tubes.
+I am on windows, what program version should I use?
+The most recent.
+
+From the program point of view I would say that the bugs introduced when switching from PyQt to PyQt4 have been already fixed. In any case, if you make any batch fitting or imaging, you certainly want the latest version. Among other features you can easily find a 10 fold speed improvement ...
+
+Does PyMca work on Windows 7 and Windows 10?
+--------------------------------------------
+
+Windows 7 and windows 10 users have not reported any particular problem when using the code.
+Recent frozen binary versions are only supplied for 64-bit versions of the operating systems.
+
+I have a Mac, the program seems to hang or to do nothing, how can I report what's happening?
+--------------------------------------------------------------------------------------------
+
+In most of the platforms I leave a console open in order to catch there unhandled error messages that can help to debug problems. To have such information on the Mac you may need to run the program from a terminal. If you have your application on your desktop, you should open a terminal window and type:
+
+./Desktop/PyMca4.3.0.app/Contents/MacOS/PyMca4.3.0
+
+to start the application from the console and see any possible error output there. Of course, you will have to replace 4.3.0 by the number of your PyMca version.
+
+What have you used to build the binaries?
+-----------------------------------------
+
+I have used cx_freeze on linux and windows. For the Mac I have used py2app. In order to make installable packages I have used the Nullsoft installer on windows and Platypus on the Mac.
+
+I want to build the program from its source code. What do I need?
+-----------------------------------------------------------------------------
+
+Please refer to the appropriate installation section.
diff --git a/doc/source/hdf5/index.rst b/doc/source/hdf5/index.rst
new file mode 100644
index 0000000..3431cc9
--- /dev/null
+++ b/doc/source/hdf5/index.rst
@@ -0,0 +1,72 @@
+Accessing HDF5 Data
+===================
+
+Version 4.4.0 of PyMca introduced `HDF5 <https://portal.hdfgroup.org/display/HDF5/HDF5>`_ file format support using Andrew Collette's `h5py <https://www.h5py.org/>`_ as Python wrapping library.
+
+For those interested, a simple analogy of an HDF5 file is that of a hard disk. A hard disk can contain files that can be into folders that in turn may contain other folders. An HDF5 file contains datasets (your data) that can be arranged into groups that in turn may contain other groups. The analogy goes till the point that you can create links between datasets or groups and that to access a dataset or a group you have to provide the path to it.
+
+Obviously, from a graphical user interface point of view, the logical access to an HDF5 should be provided by something similar to a file browser.
+
+The HDF5 file browser used in PyMca is based on a contribution by Darren Dale.
+
+Generic HDF5 Support
+--------------------
+
+The data in an HDF5 file provide information about their size and type but they do not provide information about what they represent. Therefore, the approach followed by PyMca to properly visualize the data is cumbersome (at least when used for first time) but simple.
+
+The approach is based on creating a USER selection table with the datasets of interest inorder to allow the user to choose waht to visualize (aka. *signal*) against what (aka. *axes*).
+
+This can be achieved by double clicking the relevant datasets or via a right-button mouse click.
+The nice feature is that the table provides a context menu (right-buttonmouse click) allowing the user to save or load selection tables therefore reducing the need to repetitively browse the file. In addition, the selection table is saved among the PyMca settings(File Menu -> Save ->PyMca Configuration or File Menu -> Save Default Settings).
+
+Once the datasets of user interest are in the table, the user can select what datasets are to be used as axes (first table column containing checkboxes), as signals (second column containing checkboxes) and eventually as monitor (third column with checkboxes). The only selection that is mandatory to generate a plot is the one corresponding to the signal.
+
+In case of selection of selecting several axes, the order in which the check boxes were selected determines the dataset to be used as first, second or third axis.
+
+NeXus Support
+-------------
+
+`NeXus <http://www.nexusformat.org>`_ provides a set of directives to share data among different facilities. It provides an API supporting an HDF4 backend, an XML backend and an HDF5 backend. PyMca does not use the NeXus API and therefore only supports the HDF5 backend. By other hand, HDF5 is the most common NeXus backend used at large scale research facilities.
+
+NeXus HDF5 files can be handled in the same way as standard HDF5 files. In addition, PyMca will try to make as much use as possible of metadata, default plots and application definitions provided by NeXus to reduce user interaction.
+
+For instance, version 5.3.0 of PyMca highlights NXdata groups in blue and a double-click on them allows direct visualization using the `silx library <https://www.silx.org>`_
+
+Measurement Group Support
+-------------------------
+
+Some facilities follow what we can call the *measurement group approach* when collecting data. It is an additional convention to NeXus characterized for the addition of a group named *measurement* to each NXentry. That goal of that group is to provide the user with a quick access to information without the burden of having to hunt for the information in the highly hierarchical layout imposed by NeXus.
+
+The *measurement* group was thought havingin mind interactive handling of HDF5 files by users. Despite that, PyMca exploits that to provide a an automatically filled selection table based on the contents of a *measurement* if present. Therefore, besides the USER selection table described above, PyMca provides the AUTO selection table automatically generated.
+
+Other facilities following a different approache consiting on having an NXdata group as container irrespectively of defining a default plot or not. In an attempt to offer the described functionality to users dealing with data from those facilities, PyMca also fills the AUTO table with the datasets found in the NXdata group containing the largest number of datasets.
+
+This is implemented by the function :func:`PyMca5.PyMcaCore.NexusTools.getMeasurementGroup`
+
+Positioners
+-----------
+
+PyMca tries to retrieve as much information as possible associated to the selections performed in the HDF5 files. In particular, and in analogy with what is available when dealing with `SPEC <https://www.certif.com/>`_ files, it tries to retrieve the information about the positioners (motors, temperatures, ...) associated to that selection. The conventions that PyMca is able to follow are:
+
+- Presence of a group named *positioners* inside an NXinstrument group (ESRF convention)
+- Presence of a group named *pre_scan_snapshot* inside the measurement group (Sardana convention)
+
+This is implemented by the function :func:`PyMca5.PyMcaCore.NexusTools.getPositionersGroup`
+
+MCA Data
+--------
+
+When selecting a dataset as MCA, PyMca will try to retrieve associated information like the associated channels, live_time, elapsed_time, preset_time and calibration. For that to happen, datasets with those names should be present at the same level as the target dataset.
+
+Please refer to the function :func:`PyMca5.PyMcaCore.NexusTools.getMcaObjectPaths` for details.
+
+
+Similar to the AUTO table, PyMca tries to to build a selection table named MCA for datasets that may be considered as containing 1D data. For that, it searches for datasets containing the attribute *interpretation* set to *spectrum*
+
+Please refer to the function :func:`PyMca5.PyMcaCore.NexusTools.getMcaList` for details.
+
+The following command::
+
+ python -m PyMca5.PyMcaCore.NexusTools [your_HDF5_file_name]
+
+will show you the information PyMca can automatically retrieve in terms of measurement groups, positioners, scanned motors, MCAs and associated information
diff --git a/doc/source/img/PyMca.ico b/doc/source/img/PyMca.ico
new file mode 100644
index 0000000..8a147dd
--- /dev/null
+++ b/doc/source/img/PyMca.ico
Binary files differ
diff --git a/doc/source/img/PyMca_256x256.png b/doc/source/img/PyMca_256x256.png
new file mode 100644
index 0000000..f9e7b5d
--- /dev/null
+++ b/doc/source/img/PyMca_256x256.png
Binary files differ
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 3378fef..3c247b2 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -1,69 +1,54 @@
-.. PyMca5 documentation master file, created by
- sphinx-quickstart on Mon Dec 9 19:27:24 2013.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
+PyMca |version|
+===============
-Welcome to PyMca's documentation!
-=================================
+PyMca is a collection of Python tools to assist on common data analysis problems.
+When first released (in 2004), its main motivation was X-Ray Fluorescence (XRF) Analysis,
+field for which is among the most complete solutions available.
-Contents:
+Synchotron radiation XRF is closely associated to microscopy. To properly achieve its objectives,
+PyMca had to incorporate more than just 1D visualization and XRF spectrum modelling.
+PyMca has evolved into a set of tools to provide close-to-the-source data visualization
+and diagnostic capabilities.
-.. toctree::
- :maxdepth: 2
-
- modules
+The proper way to cite PyMca is:
-PyMca
-=====
+V.A. Sole, E. Papillon, M. Cotte, Ph. Walter, J. Susini, A multiplatform code for the analysis of energy-dispersive X-ray fluorescence spectra, Spectrochim. Acta Part B 62 (2007) 63-68.
-PyMca is a collection of Python tools to assist on common data analysis problems. When first released (in 2004), its main motivation was X-Ray Fluorescence (XRF) Analysis, field for which is among the most complete solutions available.
+Due to the copyright transfer to the publisher, the online availability of the article will depend on your subscription to ScienceDirect. The article doi is 10.1016/j.sab.2006.12.002. The abstract should be available in any case.
-Synchotron radiation XRF is closely associated to microscopy. To properly achieve its objectives, PyMca had to incorporate more than just 1D visualization and XRF spectrum modelling. PyMca has evolved into a library and set of tools to provide close-to-the-source data visualization and diagnostic capabilities.
-
-Features
---------
+The current version features:
- State-of-the-art X-Ray Fluorescence Analysis (Quantification, Mapping, ...)
- Support of multiple data formats
- 1D, 2D, 3D and 4D imaging capabilities
-- Extendible via plugins.
+- Extendible application via plugins.
- Large dataset imaging (XRF, Powder diffraction, XAS, FT-IR, Raman, ...)
- Multivariate analysis.
- Common data reduction operation (normalization, fitting, ...)
-Installation
-------------
-
-It can be installed from source via the usual "python setup.py install" approach (see the README file associated to the source code for details).
-
-Official releases and ready-to-use binaries can be downloaded from http://www.sourceforge.net/projects/pymca
-
-Contribute
-----------
-
-- Issue Tracker: github.com/vasole/pymca/issues
-- Source Code: github.com/vasole/pymca
-Support
--------
+Table of contents
+=================
-If you are having issues, please let us know.
-
-The associated mailing list is: pymca-users@lists.sourceforge.net
-Subscription URL: http://sourceforge.net/p/pymca/mailman/pymca-users/
+.. toctree::
+ :maxdepth: 1
-License
--------
+ overview.rst
+ install.rst
+ tutorials.rst
+ changelog.rst
+ license.rst
+ faq.rst
-PyMca itself is licensed under the MIT license.
+.. toctree::
+ :hidden:
-Please note that if you use the provided graphical user interfaces (GUI) or other libraries not supplied with PyMca, you can be conditioned by their licenses. For instance, if you use PySide (LGPL license) as widget library, you can safely use PyMca even in close source projects. If you use PyQt (GPL license or commercial license) instead of PySide, you will not be able PyMca in closed source projects unless you own a commercial license of PyQt.
+ modules/index.rst
-Indices and tables
-==================
+Indices
+=======
-* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
-
+* :ref:`genindex`
diff --git a/doc/source/install.rst b/doc/source/install.rst
new file mode 100644
index 0000000..5e6db01
--- /dev/null
+++ b/doc/source/install.rst
@@ -0,0 +1,282 @@
+
+Installation steps
+==================
+
+*PyMca* supports most operating systems and different version of the Python
+programming language.
+
+Stand-alone Executable
+----------------------
+
+Stand-alone applications (aka. frozen binaries) are supplied for Windows and MacOS. They do not require any additional dependency and can be downloaded from `here <https://sourceforge.net/projects/pymca/files/pymca/>`_. Just download the installer for your platform.
+
+
+Python module
+-------------
+
+The best use of PyMca can be achieved installing PyMca as a python package inside an existing Python installation. For Windows and MacOS there are pre-compiled modules available in order to simplify the tast.
+
+You can also install PyMca from its source code. While `numpy <http://www.numpy.org/>`_ and `fisx <https://github.com/vasole/fisx>`_ are the only mandatory dependencies for command line usage,
+graphical widgets require Qt and `matplotlib <http://matplotlib.org/>`_ and management of HDF5 data files requires
+`h5py <http://docs.h5py.org/en/latest/build.html>`_.
+
+This table summarized the the support matrix of PyMca:
+
++------------+--------------+---------------------+
+| System | Python vers. | Qt and its bindings |
++------------+--------------+---------------------+
+| `Windows`_ | 2.7, 3.5-3.6 | PyQt4.8+, PyQt5.3+ |
++------------+--------------+---------------------+
+| `MacOS`_ | 2.7, 3.5-3.6 | PyQt4.8+, PyQt5.3+ |
++------------+--------------+---------------------+
+| `Linux`_ | 2.7, 3.4-3.6 | PyQt4.8+, PyQt5.3+ |
++------------+--------------+---------------------+
+
+For all platforms, you can install *PyMca5* from the source, see `Installing from source`_.
+
+
+Dependencies
+------------
+
+Tools for reading and writing HDF5 files depend on:
+
+* `h5py <http://docs.h5py.org/en/latest/build.html>`_
+
+The GUI widgets depend on the following extra packages:
+
+* A Qt binding: either `PyQt5, PyQt4 <https://riverbankcomputing.com/software/pyqt/intro>`_,
+ `PySide <https://pypi.python.org/pypi/PySide/>`_, or `PySide2 <https://wiki.qt.io/PySide2>`_
+* `matplotlib <http://matplotlib.org/>`_
+
+The following packages are optional dependencies:
+
+* `silx <https://github.com/silx-kit/silx>`_ for enhanced widgets
+* `qt_console <https://pypi.python.org/pypi/qtconsole>`_ for the interactive console widget.
+* `PyOpenGL <http://pyopengl.sourceforge.net/>`_ for 3D and scatter plot visualization
+
+It is expected that h5py and silx become required dependencies within short because:
+
+- h5py will become the preferred input/output file format of PyMca
+- silx provides a better widget library than the one currently supplied by PyMca
+
+The complete list of dependencies with the minimal version is described in the
+`requirements.txt <https://github.com/vasole/pymca/requirements.txt>`_
+at the top level of the source package.
+
+Build dependencies
+++++++++++++++++++
+
+In addition to run-time dependencies, building *PyMca* requires a C/C++ compiler,
+`numpy <http://www.numpy.org/>`_ and `cython <http://cython.org>`_ (optional).
+
+On Windows it is recommended to use Python 3.5 or later, because of using a more recent compiler.
+
+This project uses Cython (version > 0.21) to generate C files.
+Cython is now mandatory to build *PyMca* from the development branch and is only
+needed when compiling binary modules.
+
+Linux
+-----
+
+There are no frozen binaries or wheels available for linux. Nevertheless, there are strong chances that *PyMca* is available as a native package for your distribution.
+
+If you need to build *PyMca* from its source code, and NumPy and fisx are not installed on your system, you need to install them first, preferably with the package manager of your system. If you cannot use the package manager of your system (which requires the root access), please refer to the Virtual Environment procedure explained in the `silx documentation <http://www.silx.org/doc/silx/latest/install.html>`_
+
+Please refer to `Installing from source`_
+
+.. note::
+
+ The Debian packages `python-pymca5` and `python3-pymca5` will not install executables
+ (`pymca`, `pymcaroitool` ...). Please install the pymca package.
+
+Windows
+-------
+
+The simple way of installing *PyMca* on Windows is to type the following
+commands in a command prompt:
+
+.. code-block:: bash
+
+ pip install PyMca5
+
+.. note::
+
+ This installs *PyMca* without the optional dependencies.
+ Instructions on how to install dependencies are given in the
+ `Installing dependencies`_ section.
+
+This assumes you have Python and pip installed and configured. If you don't,
+read the following sections.
+
+
+Installing Python
++++++++++++++++++
+
+Please follow the instructions suplied by the silx project http://www.silx.org/doc/silx/latest/install.html
+
+Using pip
++++++++++
+
+Configure your PATH environment variable to include the pip installation
+directory, the same way as described for Python.
+
+The pip installation directory will likely be ``C:\Python35\Scripts\``.
+
+Then you will be able to use all pip commands listed in following in a command
+prompt.
+
+
+Installing dependencies
++++++++++++++++++++++++
+
+All dependencies may be simply installed with pip:
+
+.. code-block:: bash
+
+ pip install -r https://raw.githubusercontent.com/vasole/pymca/master/requirements.txt
+
+
+Installing *PyMca*
+++++++++++++++++++
+
+Provided numpy is installed, you can install *PyMca* with:
+
+.. code-block:: bash
+
+ pip install pymca
+
+or
+
+.. code-block:: bash
+
+ pip install PyMca5
+
+
+MacOS
+-----
+
+While Apple ships Python 2.7 by default on their operating systems, we recommend
+using Python 3.5 or newer to ease the installation of the Qt library.
+
+The installation of PyMca can simply be performed by:
+
+.. code-block:: bash
+
+ pip install -r https://raw.githubusercontent.com/vasole/pymca/master/requirements.txt
+
+Then install *PyMca* with:
+
+.. code-block:: bash
+
+ pip install pymca
+
+or
+
+.. code-block:: bash
+
+ pip install PyMca5
+
+This should work without issues, as binary wheels of *PyMca* are provided on PyPI.
+
+
+Installing from source
+----------------------
+
+Building *PyMca* from the source requires NumPy and fisx installed that can be
+installed using:
+
+.. code-block:: bash
+
+ pip install numpy
+ pip install fisx
+
+
+Building from source
+++++++++++++++++++++
+
+The most straightforward way is to use pip to take the sources from PyPI:
+
+.. code-block:: bash
+
+ pip install PyMca5 --no-binary [--user]
+
+
+Alternatively, the source package of *PyMca* releases can be downloaded from
+`the pypi project page <https://pypi.python.org/pypi/PyMca5>`_.
+
+After downloading the `PyMca5-x.y.z.tar.gz` archive, extract its content:
+
+.. code-block:: bash
+
+ tar xzvf PyMca5-x.y.z.tar.gz
+ cd PyMca5-x.y.z
+ pip uninstall -y silx
+ pip install . [--user]
+
+Alternatively, you can get the latest source code from the master branch of the
+`git repository <https://github.com/vasole/pymca/silx/archive/master.zip>`_: https://github.com/vasole/pymca
+
+Known issues
+............
+
+There are specific issues related to MacOSX. If you get this error::
+
+ UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1335: ordinal not in range(128)
+
+This is related to the two environment variable LC_ALL and LANG not defined (or wrongly defined to UTF-8).
+To set the environment variable, type on the command line:
+
+.. code-block:: bash
+
+ export LC_ALL=en_US.UTF-8
+ export LANG=en_US.UTF-8
+
+Advanced build options
+++++++++++++++++++++++
+
+In case you want more control over the build procedure, the build command is:
+
+.. code-block:: bash
+
+ python setup.py build
+
+There are few advanced options to ``setup.py build``:
+
+* ``--no-cython``: Prevent Cython (even if installed) to re-generate the C source code.
+ Use the one provided by the development team.
+
+It is not recommended to run the test suite of *PyMca* only after installation:
+
+.. code-block:: bash
+
+ python -m PyMca5.tests.TestAll
+
+Package the built into a wheel and install it:
+
+.. code-block:: bash
+
+ python setup.py bdist_wheel
+ pip install dist/PyMca5*.whl
+
+To build the documentation, using `Sphinx <http://www.sphinx-doc.org/>`_:
+
+.. code-block:: bash
+
+ python setup.py build build_doc
+
+
+Testing
++++++++
+
+To run the tests of an installed version of *PyMca*, from the python interpreter, run:
+
+.. code-block:: python
+
+ import PyMca5.tests
+ PyMca5.tests.testAll()
+
+To run the test suite from the command line run:
+
+.. code-block:: bash
+
+ python -m PyMca5.tests.TestAll
diff --git a/doc/source/license.rst b/doc/source/license.rst
new file mode 100644
index 0000000..b7261eb
--- /dev/null
+++ b/doc/source/license.rst
@@ -0,0 +1,7 @@
+License
+=======
+
+The source code of *silx* is licensed under the `MIT <https://opensource.org/licenses/MIT>`_ license:
+
+.. include:: ../../LICENSE
+
diff --git a/doc/source/modules.rst b/doc/source/modules.rst
deleted file mode 100644
index d8f8a16..0000000
--- a/doc/source/modules.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-PyMca5
-======
-
-.. toctree::
- :maxdepth: 4
-
- PyMca5
diff --git a/doc/source/modules/core/index.rst b/doc/source/modules/core/index.rst
new file mode 100644
index 0000000..1b43600
--- /dev/null
+++ b/doc/source/modules/core/index.rst
@@ -0,0 +1,8 @@
+PyMcaCore
+=========
+
+.. toctree::
+ :maxdepth: 1
+
+ nexustools.rst
+
diff --git a/doc/source/modules/core/nexustools.rst b/doc/source/modules/core/nexustools.rst
new file mode 100644
index 0000000..0e54d45
--- /dev/null
+++ b/doc/source/modules/core/nexustools.rst
@@ -0,0 +1,5 @@
+PyMcaCore.NexusTools
+====================
+
+.. automodule:: PyMca5.PyMcaCore.NexusTools
+ :members:
diff --git a/doc/source/modules/index.rst b/doc/source/modules/index.rst
new file mode 100644
index 0000000..e209ebd
--- /dev/null
+++ b/doc/source/modules/index.rst
@@ -0,0 +1,8 @@
+Modules
+=======
+
+.. toctree::
+ :maxdepth: 1
+
+ core/index.rst
+
diff --git a/doc/source/overview.rst b/doc/source/overview.rst
new file mode 100644
index 0000000..a55a661
--- /dev/null
+++ b/doc/source/overview.rst
@@ -0,0 +1,21 @@
+Project Overview
+================
+
+Releases
+--------
+
+Source code, pre-built binaries (aka Python wheels) and frozen binaries for Windows and MacOS.
+
+- `Wheels and source code on PyPi <https://pypi.python.org/pypi/PyMca5>`_
+- `Application binaries and source code on sourceforge <https://sourceforge.net/projects/pymca/files/pymca/>`_
+- `Documentation on pymca.sourceforge.net <http://pymca.sourceforge.net/documentation.html>`_
+- :doc:`changelog`
+
+Project
+-------
+
+- `Homepage <http://pymca.sourceforge.net/>`_
+- `Source repository <https://github.com/vasole/pymca>`_
+- `Issue tracker <https://github.com/vasole/pymca/issues>`_
+- Mailing list: pymca-users@lists.sourceforge.net (`Archive <https://sourceforge.net/p/pymca/mailman/pymca-users/>`_). You can register `here <https://sourceforge.net/projects/pymca/lists/pymca-users>`_
+
diff --git a/doc/source/tutorials.rst b/doc/source/tutorials.rst
new file mode 100644
index 0000000..0ed1b9c
--- /dev/null
+++ b/doc/source/tutorials.rst
@@ -0,0 +1,38 @@
+Tutorials and sample code
+=========================
+
+.. toctree::
+ :hidden:
+
+ ./xrf/material-definition/index.rst
+ ./xrf/strip-background/index.rst
+ ./customization/index.rst
+ ./hdf5/index.rst
+
+There are several tutorials explaining different aspects of the program.
+
+The `Getting Started tutorial <http://www.esrf.fr/computing/bliss/downloads/pymca/PyMcaCHESS.pdf>`_
+is a very old tutorial written by Darren Dale and initially tailored to `CHESS <http://www.chess.cornell.edu>`_
+users but usefull to everybody starting to use PyMca. In case the previous link is down, you can try
+this `alternative link <https://wiki.utep.edu/display/MASE6402MME4501/PyMCA+support>`_.
+
+:doc:`./hdf5/index` PyMca can deal with
+HDF5 files since version 4.4.0. You should take a look at the
+`HDF Group web site <https://portal.hdfgroup.org/display/HDF5/HDF5>`_ to know more about HDF.
+`NeXus <http://www.nexusformat.org>`_ files are only supported when using the HDF5 backend.
+
+`Calibration tutorial <http://www.esrf.fr/computing/bliss/downloads/pymca/calibrationtutorial.htm>`_.
+To be used if you still have some doubts about how to calibrate your spectra.
+
+:doc:`./xrf/material-definition/index`. This tutorial will show you how to define your own materials.
+
+`ROI Imaging tutorial <http://www.esrf.fr/computing/bliss/downloads/pymca/roitooltutorial.htm>`_ .
+Introduction to the stack imaging capabilities of PyMca
+
+`Kinetics tutorial <http://www.esrf.fr/computing/bliss/downloads/pymca/kineticstutorial.htm>`_ .
+Illustration of the use of the ROI Imaging tool for kinetics studies.
+
+:doc:`./xrf/strip-background/index`. Description of the parameters defining your favorite background.
+
+:doc:`./customization/index` Description about how to add your own add-ons to PyMca.
+
diff --git a/doc/source/xrf/material-definition/img/materials_01.jpg b/doc/source/xrf/material-definition/img/materials_01.jpg
new file mode 100644
index 0000000..aeabe04
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_01.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_02.jpg b/doc/source/xrf/material-definition/img/materials_02.jpg
new file mode 100644
index 0000000..9f28b8f
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_02.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_03.jpg b/doc/source/xrf/material-definition/img/materials_03.jpg
new file mode 100644
index 0000000..46fe7eb
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_03.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_04.jpg b/doc/source/xrf/material-definition/img/materials_04.jpg
new file mode 100644
index 0000000..f807f67
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_04.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_05.jpg b/doc/source/xrf/material-definition/img/materials_05.jpg
new file mode 100644
index 0000000..49b58ec
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_05.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_06.jpg b/doc/source/xrf/material-definition/img/materials_06.jpg
new file mode 100644
index 0000000..31b6d6b
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_06.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_07.jpg b/doc/source/xrf/material-definition/img/materials_07.jpg
new file mode 100644
index 0000000..3234e02
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_07.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_08.jpg b/doc/source/xrf/material-definition/img/materials_08.jpg
new file mode 100644
index 0000000..06a53e3
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_08.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/img/materials_09.jpg b/doc/source/xrf/material-definition/img/materials_09.jpg
new file mode 100644
index 0000000..9bcc32c
--- /dev/null
+++ b/doc/source/xrf/material-definition/img/materials_09.jpg
Binary files differ
diff --git a/doc/source/xrf/material-definition/index.rst b/doc/source/xrf/material-definition/index.rst
new file mode 100644
index 0000000..c7f8829
--- /dev/null
+++ b/doc/source/xrf/material-definition/index.rst
@@ -0,0 +1,99 @@
+Defining new materials in the material editor
+=============================================
+
+.. |img1| image:: ./img/materials_01.jpg
+ :align: middle
+
+.. |img2| image:: ./img/materials_02.jpg
+ :align: middle
+
+.. |img3| image:: ./img/materials_03.jpg
+ :align: middle
+
+.. |img4| image:: ./img/materials_04.jpg
+ :align: middle
+
+.. |img5| image:: ./img/materials_05.jpg
+ :align: middle
+
+.. |img6| image:: ./img/materials_06.jpg
+ :align: middle
+
+.. |img7| image:: ./img/materials_07.jpg
+ :align: middle
+
+.. |img8| image:: ./img/materials_08.jpg
+ :align: middle
+
+.. |img9| image:: ./img/materials_09.jpg
+ :align: middle
+
+.. |img10| image:: ./img/materials_06.jpg
+ :align: middle
+
+
+The material editor is located at the bottom of the ATTENUATORS tab of the the fit configuration dialog.
+
+|img1|
+
+WARNING: Unlike the rest of the fit configuration dialog, the changes in the material editor are immediate. If you change one material, that material will be changed even if you choose to cancel the fit configuration dialog. Loading a new configuration file will import the new materials defined in that configuration file. Existing materials will be redefined and new ones will be added.
+
+The steps to define a material are:
+
+ 1 - Type the name of your material at the material combo box.
+ 2 - Enter the number of compounds in your material
+ 3 - Fill the table
+ 4 - Fill the optional fields
+ 5 - Check that everything is fine
+
+
+
+1 - Type the name of your material at the material combo box
+------------------------------------------------------------
+
+The program will not accept names like SRM1832. Why? Because it will find that the material name can be split in as many letter groups as numbers and it will consider that as being a potential formula without testing its validity. To be able to combine letters and numbers, just add a character that is not a letter nor a number (SRM-1832, SRM_1832 or just a space between "SRM" and "1832").
+
+|img2|
+
+You will get a message asking you to confirm you want to define a material.
+
+|img3|
+
+
+2 - Enter the number of compounds in your material
+--------------------------------------------------
+
+Select the number of compounds with the help of the "Number of Compounds" spin box. The table below will adjust its number of rows accordingly.
+
+|img4|
+
+3 - Fill the table
+------------------
+
+Any valid formula or previously defined material can be entered in the material column while the mass fraction has to be a valid number. The program will internally normalize the given fractions to unity.
+
+|img5|
+
+
+4 - Fill the optional fields
+----------------------------
+
+The rest of the fields are not mandatory but they are very convenient. They can save you some time later on when selecting the newly defined material because the program will fill the default density (and thickness if it is not already filled) and you will not have to search around for the density. The comment is only used for your own information.
+
+|img6|
+
+
+5 - Check that everything is fine
+---------------------------------
+
+In order to make sure that everything is correct, you should select a previously defined material, and then select again your just defined material.
+You should find the same information you entered.
+
+|img7|
+
+|img8|
+
+|img9|
+
+|img10|
+
diff --git a/doc/source/xrf/strip-background/img/stripbackground_01.png b/doc/source/xrf/strip-background/img/stripbackground_01.png
new file mode 100644
index 0000000..c95e547
--- /dev/null
+++ b/doc/source/xrf/strip-background/img/stripbackground_01.png
Binary files differ
diff --git a/doc/source/xrf/strip-background/img/stripbackground_02.png b/doc/source/xrf/strip-background/img/stripbackground_02.png
new file mode 100644
index 0000000..9c59bbd
--- /dev/null
+++ b/doc/source/xrf/strip-background/img/stripbackground_02.png
Binary files differ
diff --git a/doc/source/xrf/strip-background/img/stripbackground_03.png b/doc/source/xrf/strip-background/img/stripbackground_03.png
new file mode 100644
index 0000000..6579d2c
--- /dev/null
+++ b/doc/source/xrf/strip-background/img/stripbackground_03.png
Binary files differ
diff --git a/doc/source/xrf/strip-background/img/stripbackground_04.png b/doc/source/xrf/strip-background/img/stripbackground_04.png
new file mode 100644
index 0000000..dee7d31
--- /dev/null
+++ b/doc/source/xrf/strip-background/img/stripbackground_04.png
Binary files differ
diff --git a/doc/source/xrf/strip-background/img/stripbackground_05.png b/doc/source/xrf/strip-background/img/stripbackground_05.png
new file mode 100644
index 0000000..42233c5
--- /dev/null
+++ b/doc/source/xrf/strip-background/img/stripbackground_05.png
Binary files differ
diff --git a/doc/source/xrf/strip-background/index.rst b/doc/source/xrf/strip-background/index.rst
new file mode 100644
index 0000000..37e8890
--- /dev/null
+++ b/doc/source/xrf/strip-background/index.rst
@@ -0,0 +1,72 @@
+Understanding and using the strip background
+=============================================
+
+.. |img1| image:: ./img/stripbackground_01.png
+ :align: middle
+ :alt: Full Spectrum
+
+.. |img2| image:: ./img/stripbackground_03.png
+ :align: middle
+ :alt: Cu no anchors
+
+.. |img3| image:: ./img/stripbackground_04.png
+ :align: middle
+ :alt: Spectra with and without lead
+
+.. |img4| image:: ./img/stripbackground_02.png
+ :align: middle
+ :alt: Strip Background Settings
+
+.. |img5| image:: ./img/stripbackground_05.png
+ :align: middle
+
+
+- Introduction
+- Batch tips
+- Using the anchors
+
+Introduction
+------------
+
+The strip background is probably PyMca's most popular background model.
+
+In its simplest implementation it is just as an iterative procedure depending on two parameters. These parameters are the strip background width w, and the strip background number of iterations. At each iteration, if the contents of channel i, y(i), is above the average of the contents of the channels at w channels of distance, y(i-w) and y(i+w), y(i) is replaced by the average. At the end of the process we are left with something that resembles a spectrum in which the peaks have been "stripped".
+
+Clearly, that implementation would give us a baseline passing by the lower band of the statistical noise associated to the spectrum. This problem can be solved by performing a smoothing prior to calculate the background. The parameter associated to the smoothing is the strip background smoothing width.
+
+All these parameters are accessible in the FIT configuration tab of the configuration window.
+
+Batch tips
+----------
+
+The strip background is very useful, but badly parametrized can be very time consuming. You should use the SNIP background instead. If you still want to use the strip background for batch processing, please keep in mind the following hints.
+
+You should always aim to the lowest number of iterations that gives you acceptable results. You should avoid things like using 20000 iterations. That default value is there just for historical reasons. A strip background width of around 70% of your peaks full-width at half maximum and a number of iterations around 4000 should be a good starting point.
+
+If you are using linear fits without strip background or no background at all, you should set the strip background number of iterations to zero. Why? Because even if you decide not to use the strip background, it is internally used to evaluate the starting parameters of the analytical background models. If you are not going to use any background or you are performing a linear fit it is just wasted time.
+
+Using the anchors
+-----------------
+It may happen your actual background presents a high curvature because of whatever reasons. The spectrum below is really a challenge for any background algorithm because of the pile up artifact around channel 760.
+
+|img1|
+
+That spectrum belongs to a series of measurements on copper containing alloys. To make the things more difficult, one of the goals of the measurements was to evaluate the lead content in the alloys. As it can be seen below, there are lead peaks just at the region where we have a sharp discontinuity and with the strip background as just described we face the situation that we find lead even when there is no lead present:
+
+|img2|
+
+One way to proceed in such cases is to use anchors. Anchors are simply channels that will remain fixed during the stripping procedure. That feature is avaible from PyMca version 4.0.9 on. Since the energy calibration can change during the fitting procedure, anchors have to be given in channels and not in energy.
+
+
+|img3|
+Spectrum a (in black) is an alloy containing copper and zinc but no lead. Spectrum b (in red) contains lead. In our problem, if we were going to perform a batch fit, we could take a close look at the lead containing spectrum and set one anchor at each side of the peak falling on the artifact. In this case we would select the "Strip Background use Anchors" check box and enter the values 736 and 797.
+
+|img4|
+
+That would still leave us a small signal when dealing with non lead containing alloys but it would make sure no lead would be removed. In addition, that "offset" could be easily evaluated with a standard as it was our case.
+Fit with lead anchors
+
+|img5|
+
+Interactive fits would not present any problem because different anchors could be used. In particular one could put one anchor at the discontinuity and get an even better background description.
+
diff --git a/package/debian8/changelog b/package/debian8/changelog
index 5c8b521..bdc2a61 100644
--- a/package/debian8/changelog
+++ b/package/debian8/changelog
@@ -1,3 +1,9 @@
+pymca (5.3.1-1) unstable; urgency=low
+
+ * New release 5.3.1
+
+ -- Pierre Knobel <pierre.knobel@esrf.fr> Thu, 27 Apr 2018 10:01:17 +0200
+
pymca (5.3.0-2) unstable; urgency=low
* New release 5.3.0
diff --git a/package/debian8/rules b/package/debian8/rules
index 68a4f5b..1113605 100644
--- a/package/debian8/rules
+++ b/package/debian8/rules
@@ -25,6 +25,10 @@ override_dh_clean:
# remove the build documentation
rm -rf doc/build
+override_dh_auto_build:
+ dh_auto_build
+ python setup.py build build_doc
+
override_dh_installchangelogs:
dh_installchangelogs changelog.txt
@@ -58,10 +62,6 @@ override_dh_auto_test:
PYBUILD_SYSTEM=custom \
PYBUILD_TEST_ARGS="cd {build_dir} && PYMCA_DATA_DIR=$(PYMCA_DATA_DIR_TEST) {interpreter} PyMca5/tests/TestAll.py" dh_auto_test
-override_dh_sphinxdoc:
-ifeq (,$(findstring nodocs, $(DEB_BUILD_OPTIONS)))
- PYBUILD_SYSTEM=custom \
- PYBUILD_BUILD_ARGS="cd doc && PYTHONPATH={build_dir} PYMCA_DATA_DIR=$(PYMCA_DATA_DIR_TEST) http_proxy='127.0.0.1:9' sphinx-build -N -bhtml source build/html" dh_auto_build # HTML generator
- dh_installdocs "doc/build/html" -p pymca-doc
- dh_sphinxdoc -O--buildsystem=pybuild
-endif
+override_dh_installdocs:
+ dh_installdocs "build/sphinx/html" -p pymca-doc
+ dh_installdocs
diff --git a/package/debian9/changelog b/package/debian9/changelog
index 5c8b521..bdc2a61 100644
--- a/package/debian9/changelog
+++ b/package/debian9/changelog
@@ -1,3 +1,9 @@
+pymca (5.3.1-1) unstable; urgency=low
+
+ * New release 5.3.1
+
+ -- Pierre Knobel <pierre.knobel@esrf.fr> Thu, 27 Apr 2018 10:01:17 +0200
+
pymca (5.3.0-2) unstable; urgency=low
* New release 5.3.0
diff --git a/package/debian9/rules b/package/debian9/rules
index da697b2..1113605 100644
--- a/package/debian9/rules
+++ b/package/debian9/rules
@@ -25,6 +25,10 @@ override_dh_clean:
# remove the build documentation
rm -rf doc/build
+override_dh_auto_build:
+ dh_auto_build
+ python setup.py build build_doc
+
override_dh_installchangelogs:
dh_installchangelogs changelog.txt
@@ -58,10 +62,6 @@ override_dh_auto_test:
PYBUILD_SYSTEM=custom \
PYBUILD_TEST_ARGS="cd {build_dir} && PYMCA_DATA_DIR=$(PYMCA_DATA_DIR_TEST) {interpreter} PyMca5/tests/TestAll.py" dh_auto_test
-override_dh_sphinxdoc:
-ifeq (,$(findstring nodocs, $(DEB_BUILD_OPTIONS)))
- PYBUILD_SYSTEM=custom \
- PYBUILD_BUILD_ARGS="cd doc && PYTHONPATH={build_dir} PYMCA_DATA_DIR=$(PYMCA_DATA_DIR_TEST) http_proxy='127.0.0.1:9' {interpreter} -m sphinx -N -bhtml source build/html" dh_auto_build # HTML generator
- dh_installdocs "doc/build/html" -p pymca-doc
- dh_sphinxdoc -O--buildsystem=pybuild
-endif
+override_dh_installdocs:
+ dh_installdocs "build/sphinx/html" -p pymca-doc
+ dh_installdocs
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..286cd04
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,24 @@
+# List all dependencies of PyMca for complete functionality and not just
+# command line XRF analysis
+# Requires pip >= 8.0
+
+--trusted-host www.silx.org
+--find-links http://www.silx.org/pub/wheelhouse/
+--only-binary numpy,h5py,scipy,PyQt4,PyQt5,PySide
+
+numpy >= 1.8
+fisx >= 1.1.2
+PyOpenGL # For PyMca5.Object3D module
+h5py # For HDF5 file format support
+matplotlib > 1.0 # For visualization
+qtconsole # For interactive console plugin
+silx >= 0.7 # For NeXus NXdata support and nicer icons
+
+# PyQt4, PyQt5 or PySide # For PyMca5.PyMcaGui
+# Try to install a Qt binding from a wheel
+# This is no available for all configurations
+
+# Require PyQt when wheel is available
+PyQt5; python_version >= '3.5'
+PyQt4; sys_platform == 'win32' and python_version == '2.7' # From silx.org
+PyQt4; sys_platform == 'darwin' and python_version == '2.7' # From silx.org
diff --git a/setup.py b/setup.py
index 97201e4..593f50c 100644
--- a/setup.py
+++ b/setup.py
@@ -124,8 +124,10 @@ if build_ext is not None:
if not use_cython():
build_ext = None
+fid = open(os.path.join('PyMca5', '__init__.py'), 'r')
+ffile = fid.readlines()
+fid.close()
-ffile = open(os.path.join('PyMca5', '__init__.py'), 'r').readlines()
__version__ = None
for line in ffile:
if line.startswith('__version__'):