From f7bdc2acff3c13a6d632c28c4569690ab106eed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= Date: Fri, 18 Aug 2017 14:48:52 +0200 Subject: Import Upstream version 0.5.0+dfsg --- doc/source/modules/gui/console.rst | 9 + doc/source/modules/gui/data/arraytable.rst | 23 + doc/source/modules/gui/data/dataviewer.rst | 7 + doc/source/modules/gui/data/dataviewerframe.rst | 7 + doc/source/modules/gui/data/img/DataViewer.png | Bin 0 -> 37627 bytes .../modules/gui/data/img/DataViewerFrame.png | Bin 0 -> 41699 bytes .../modules/gui/data/img/NumpyAxesSelector.png | Bin 0 -> 9537 bytes doc/source/modules/gui/data/index.rst | 19 + doc/source/modules/gui/data/numpyaxesselector.rst | 7 + doc/source/modules/gui/data/textformatter.rst | 7 + doc/source/modules/gui/designer.rst | 1 + doc/source/modules/gui/fit/backgroundwidget.rst | 27 ++ doc/source/modules/gui/fit/fitwidget.rst | 18 + doc/source/modules/gui/fit/img/bgwidget.png | Bin 0 -> 68544 bytes doc/source/modules/gui/fit/index.rst | 32 ++ .../modules/gui/hdf5/examples_hdf5widget.rst | 6 + doc/source/modules/gui/hdf5/getting_started.rst | 226 ++++++++++ doc/source/modules/gui/hdf5/h5node.rst | 9 + .../modules/gui/hdf5/hdf5contextmenuevent.rst | 9 + doc/source/modules/gui/hdf5/hdf5treemodel.rst | 9 + doc/source/modules/gui/hdf5/hdf5treeview.rst | 9 + doc/source/modules/gui/hdf5/img/Hdf5Example.png | Bin 0 -> 98584 bytes doc/source/modules/gui/hdf5/img/Hdf5TreeView.png | Bin 0 -> 38565 bytes doc/source/modules/gui/hdf5/index.rst | 46 ++ .../modules/gui/hdf5/nexussortfilterproxymodel.rst | 9 + doc/source/modules/gui/icons.rst | 346 +++++++++++++++ doc/source/modules/gui/index.rst | 21 + doc/source/modules/gui/plot/dev.rst | 204 +++++++++ doc/source/modules/gui/plot/getting_started.rst | 491 +++++++++++++++++++++ doc/source/modules/gui/plot/imageview.rst | 15 + doc/source/modules/gui/plot/img/ImageView.png | Bin 0 -> 174050 bytes doc/source/modules/gui/plot/img/LimitsToolBar.png | Bin 0 -> 2331 bytes doc/source/modules/gui/plot/img/Plot1D.png | Bin 0 -> 26947 bytes doc/source/modules/gui/plot/img/Plot2D.png | Bin 0 -> 59679 bytes doc/source/modules/gui/plot/img/PlotWidget.png | Bin 0 -> 32084 bytes doc/source/modules/gui/plot/img/PlotWindow.png | Bin 0 -> 47112 bytes doc/source/modules/gui/plot/img/PositionInfo.png | Bin 0 -> 3401 bytes doc/source/modules/gui/plot/img/StackView.png | Bin 0 -> 126723 bytes .../modules/gui/plot/img/StackViewMainWindow.png | Bin 0 -> 126821 bytes doc/source/modules/gui/plot/img/colorScale.png | Bin 0 -> 1653 bytes doc/source/modules/gui/plot/img/colorScaleBar.png | Bin 0 -> 4667 bytes doc/source/modules/gui/plot/img/fftAction0.png | Bin 0 -> 91165 bytes doc/source/modules/gui/plot/img/fftAction1.png | Bin 0 -> 38847 bytes doc/source/modules/gui/plot/img/linearColorbar.png | Bin 0 -> 6585 bytes doc/source/modules/gui/plot/img/logColorbar.png | Bin 0 -> 8575 bytes doc/source/modules/gui/plot/img/netCounts.png | Bin 0 -> 18711 bytes .../modules/gui/plot/img/plot_and_backend.png | Bin 0 -> 39491 bytes doc/source/modules/gui/plot/img/rawCounts.png | Bin 0 -> 18437 bytes doc/source/modules/gui/plot/img/roiwidget.png | Bin 0 -> 38771 bytes doc/source/modules/gui/plot/img/shiftAction0.png | Bin 0 -> 29092 bytes doc/source/modules/gui/plot/img/shiftAction3.png | Bin 0 -> 25949 bytes doc/source/modules/gui/plot/img/tickbar.png | Bin 0 -> 2080 bytes doc/source/modules/gui/plot/index.rst | 130 ++++++ doc/source/modules/gui/plot/items.rst | 63 +++ doc/source/modules/gui/plot/plot.rst | 16 + doc/source/modules/gui/plot/plotactions.rst | 20 + .../modules/gui/plot/plotactions_examples.rst | 93 ++++ doc/source/modules/gui/plot/plottools.rst | 36 ++ doc/source/modules/gui/plot/plotwidget.rst | 173 ++++++++ doc/source/modules/gui/plot/plotwindow.rst | 30 ++ doc/source/modules/gui/plot/profile.rst | 20 + doc/source/modules/gui/plot/roi.rst | 17 + doc/source/modules/gui/plot/stackview.rst | 24 + doc/source/modules/gui/plot3d/actions.rst | 10 + doc/source/modules/gui/plot3d/dev.rst | 38 ++ doc/source/modules/gui/plot3d/glutils.rst | 67 +++ doc/source/modules/gui/plot3d/img/Plot3DWidget.png | Bin 0 -> 11811 bytes doc/source/modules/gui/plot3d/img/Plot3DWindow.png | Bin 0 -> 20571 bytes .../modules/gui/plot3d/img/SFViewParamTree.png | Bin 0 -> 19705 bytes .../modules/gui/plot3d/img/ScalarFieldView.png | Bin 0 -> 42407 bytes doc/source/modules/gui/plot3d/index.rst | 83 ++++ doc/source/modules/gui/plot3d/plot3dwidget.rst | 15 + doc/source/modules/gui/plot3d/plot3dwindow.rst | 15 + doc/source/modules/gui/plot3d/scalarfieldview.rst | 50 +++ doc/source/modules/gui/plot3d/scene.rst | 84 ++++ doc/source/modules/gui/plot3d/sfviewparamtree.rst | 13 + doc/source/modules/gui/plot3d/toolbars.rst | 29 ++ doc/source/modules/gui/plot3d/utils.rst | 12 + .../modules/gui/plot3d/viewer3dvolume_example.rst | 7 + doc/source/modules/gui/qt.rst | 8 + doc/source/modules/gui/update_icons_rst.py | 90 ++++ doc/source/modules/gui/widgets/framebrowser.rst | 19 + doc/source/modules/gui/widgets/index.rst | 19 + doc/source/modules/gui/widgets/periodictable.rst | 37 ++ doc/source/modules/gui/widgets/tablewidget.rst | 42 ++ .../modules/gui/widgets/threadpoolpushbutton.rst | 14 + .../modules/gui/widgets/waitingpushbutton.rst | 13 + doc/source/modules/image/bilinear.rst | 9 + doc/source/modules/image/index.rst | 13 + doc/source/modules/image/medianfilter.rst | 7 + doc/source/modules/image/shapes.rst | 8 + doc/source/modules/image/sift.rst | 8 + doc/source/modules/index.rst | 14 + doc/source/modules/io/configdict.rst | 8 + doc/source/modules/io/dictdump.rst | 8 + doc/source/modules/io/index.rst | 25 ++ doc/source/modules/io/nxdata.rst | 8 + doc/source/modules/io/octaveh5.rst | 10 + doc/source/modules/io/specfile.rst | 83 ++++ doc/source/modules/io/specfilewrapper.rst | 12 + doc/source/modules/io/spech5.rst | 11 + doc/source/modules/io/spectoh5.rst | 8 + doc/source/modules/io/utils.rst | 8 + doc/source/modules/math/combo.rst | 8 + doc/source/modules/math/fit/bgtheories.rst | 10 + doc/source/modules/math/fit/filters.rst | 18 + doc/source/modules/math/fit/fitmanager.rst | 18 + doc/source/modules/math/fit/fittheories.rst | 8 + doc/source/modules/math/fit/fittheory.rst | 8 + doc/source/modules/math/fit/functions.rst | 26 ++ doc/source/modules/math/fit/index.rst | 25 ++ doc/source/modules/math/fit/leastsq.rst | 16 + doc/source/modules/math/fit/peaksearch.rst | 10 + doc/source/modules/math/histogram.rst | 21 + doc/source/modules/math/index.rst | 13 + doc/source/modules/math/medianfilter.rst | 11 + doc/source/modules/resources.rst | 7 + doc/source/modules/test/index.rst | 20 + doc/source/modules/utils/array_like.rst | 7 + doc/source/modules/utils/decorators.rst | 7 + doc/source/modules/utils/html.rst | 7 + doc/source/modules/utils/index.rst | 11 + doc/source/modules/utils/weakref.rst | 7 + 123 files changed, 3342 insertions(+) create mode 100644 doc/source/modules/gui/console.rst create mode 100644 doc/source/modules/gui/data/arraytable.rst create mode 100644 doc/source/modules/gui/data/dataviewer.rst create mode 100644 doc/source/modules/gui/data/dataviewerframe.rst create mode 100644 doc/source/modules/gui/data/img/DataViewer.png create mode 100644 doc/source/modules/gui/data/img/DataViewerFrame.png create mode 100644 doc/source/modules/gui/data/img/NumpyAxesSelector.png create mode 100644 doc/source/modules/gui/data/index.rst create mode 100644 doc/source/modules/gui/data/numpyaxesselector.rst create mode 100644 doc/source/modules/gui/data/textformatter.rst create mode 100644 doc/source/modules/gui/designer.rst create mode 100644 doc/source/modules/gui/fit/backgroundwidget.rst create mode 100644 doc/source/modules/gui/fit/fitwidget.rst create mode 100644 doc/source/modules/gui/fit/img/bgwidget.png create mode 100644 doc/source/modules/gui/fit/index.rst create mode 100644 doc/source/modules/gui/hdf5/examples_hdf5widget.rst create mode 100644 doc/source/modules/gui/hdf5/getting_started.rst create mode 100644 doc/source/modules/gui/hdf5/h5node.rst create mode 100644 doc/source/modules/gui/hdf5/hdf5contextmenuevent.rst create mode 100644 doc/source/modules/gui/hdf5/hdf5treemodel.rst create mode 100644 doc/source/modules/gui/hdf5/hdf5treeview.rst create mode 100644 doc/source/modules/gui/hdf5/img/Hdf5Example.png create mode 100644 doc/source/modules/gui/hdf5/img/Hdf5TreeView.png create mode 100644 doc/source/modules/gui/hdf5/index.rst create mode 100644 doc/source/modules/gui/hdf5/nexussortfilterproxymodel.rst create mode 100644 doc/source/modules/gui/icons.rst create mode 100644 doc/source/modules/gui/index.rst create mode 100644 doc/source/modules/gui/plot/dev.rst create mode 100644 doc/source/modules/gui/plot/getting_started.rst create mode 100644 doc/source/modules/gui/plot/imageview.rst create mode 100644 doc/source/modules/gui/plot/img/ImageView.png create mode 100644 doc/source/modules/gui/plot/img/LimitsToolBar.png create mode 100644 doc/source/modules/gui/plot/img/Plot1D.png create mode 100644 doc/source/modules/gui/plot/img/Plot2D.png create mode 100644 doc/source/modules/gui/plot/img/PlotWidget.png create mode 100644 doc/source/modules/gui/plot/img/PlotWindow.png create mode 100644 doc/source/modules/gui/plot/img/PositionInfo.png create mode 100644 doc/source/modules/gui/plot/img/StackView.png create mode 100644 doc/source/modules/gui/plot/img/StackViewMainWindow.png create mode 100644 doc/source/modules/gui/plot/img/colorScale.png create mode 100644 doc/source/modules/gui/plot/img/colorScaleBar.png create mode 100644 doc/source/modules/gui/plot/img/fftAction0.png create mode 100644 doc/source/modules/gui/plot/img/fftAction1.png create mode 100644 doc/source/modules/gui/plot/img/linearColorbar.png create mode 100644 doc/source/modules/gui/plot/img/logColorbar.png create mode 100644 doc/source/modules/gui/plot/img/netCounts.png create mode 100644 doc/source/modules/gui/plot/img/plot_and_backend.png create mode 100644 doc/source/modules/gui/plot/img/rawCounts.png create mode 100644 doc/source/modules/gui/plot/img/roiwidget.png create mode 100644 doc/source/modules/gui/plot/img/shiftAction0.png create mode 100644 doc/source/modules/gui/plot/img/shiftAction3.png create mode 100644 doc/source/modules/gui/plot/img/tickbar.png create mode 100644 doc/source/modules/gui/plot/index.rst create mode 100644 doc/source/modules/gui/plot/items.rst create mode 100644 doc/source/modules/gui/plot/plot.rst create mode 100644 doc/source/modules/gui/plot/plotactions.rst create mode 100644 doc/source/modules/gui/plot/plotactions_examples.rst create mode 100644 doc/source/modules/gui/plot/plottools.rst create mode 100644 doc/source/modules/gui/plot/plotwidget.rst create mode 100644 doc/source/modules/gui/plot/plotwindow.rst create mode 100644 doc/source/modules/gui/plot/profile.rst create mode 100644 doc/source/modules/gui/plot/roi.rst create mode 100644 doc/source/modules/gui/plot/stackview.rst create mode 100644 doc/source/modules/gui/plot3d/actions.rst create mode 100644 doc/source/modules/gui/plot3d/dev.rst create mode 100644 doc/source/modules/gui/plot3d/glutils.rst create mode 100644 doc/source/modules/gui/plot3d/img/Plot3DWidget.png create mode 100644 doc/source/modules/gui/plot3d/img/Plot3DWindow.png create mode 100644 doc/source/modules/gui/plot3d/img/SFViewParamTree.png create mode 100644 doc/source/modules/gui/plot3d/img/ScalarFieldView.png create mode 100644 doc/source/modules/gui/plot3d/index.rst create mode 100644 doc/source/modules/gui/plot3d/plot3dwidget.rst create mode 100644 doc/source/modules/gui/plot3d/plot3dwindow.rst create mode 100644 doc/source/modules/gui/plot3d/scalarfieldview.rst create mode 100644 doc/source/modules/gui/plot3d/scene.rst create mode 100644 doc/source/modules/gui/plot3d/sfviewparamtree.rst create mode 100644 doc/source/modules/gui/plot3d/toolbars.rst create mode 100644 doc/source/modules/gui/plot3d/utils.rst create mode 100644 doc/source/modules/gui/plot3d/viewer3dvolume_example.rst create mode 100644 doc/source/modules/gui/qt.rst create mode 100644 doc/source/modules/gui/update_icons_rst.py create mode 100644 doc/source/modules/gui/widgets/framebrowser.rst create mode 100644 doc/source/modules/gui/widgets/index.rst create mode 100644 doc/source/modules/gui/widgets/periodictable.rst create mode 100644 doc/source/modules/gui/widgets/tablewidget.rst create mode 100644 doc/source/modules/gui/widgets/threadpoolpushbutton.rst create mode 100644 doc/source/modules/gui/widgets/waitingpushbutton.rst create mode 100644 doc/source/modules/image/bilinear.rst create mode 100644 doc/source/modules/image/index.rst create mode 100644 doc/source/modules/image/medianfilter.rst create mode 100644 doc/source/modules/image/shapes.rst create mode 100644 doc/source/modules/image/sift.rst create mode 100644 doc/source/modules/index.rst create mode 100644 doc/source/modules/io/configdict.rst create mode 100644 doc/source/modules/io/dictdump.rst create mode 100644 doc/source/modules/io/index.rst create mode 100644 doc/source/modules/io/nxdata.rst create mode 100644 doc/source/modules/io/octaveh5.rst create mode 100644 doc/source/modules/io/specfile.rst create mode 100644 doc/source/modules/io/specfilewrapper.rst create mode 100644 doc/source/modules/io/spech5.rst create mode 100644 doc/source/modules/io/spectoh5.rst create mode 100644 doc/source/modules/io/utils.rst create mode 100644 doc/source/modules/math/combo.rst create mode 100644 doc/source/modules/math/fit/bgtheories.rst create mode 100644 doc/source/modules/math/fit/filters.rst create mode 100644 doc/source/modules/math/fit/fitmanager.rst create mode 100644 doc/source/modules/math/fit/fittheories.rst create mode 100644 doc/source/modules/math/fit/fittheory.rst create mode 100644 doc/source/modules/math/fit/functions.rst create mode 100644 doc/source/modules/math/fit/index.rst create mode 100644 doc/source/modules/math/fit/leastsq.rst create mode 100644 doc/source/modules/math/fit/peaksearch.rst create mode 100644 doc/source/modules/math/histogram.rst create mode 100644 doc/source/modules/math/index.rst create mode 100644 doc/source/modules/math/medianfilter.rst create mode 100644 doc/source/modules/resources.rst create mode 100644 doc/source/modules/test/index.rst create mode 100644 doc/source/modules/utils/array_like.rst create mode 100644 doc/source/modules/utils/decorators.rst create mode 100644 doc/source/modules/utils/html.rst create mode 100644 doc/source/modules/utils/index.rst create mode 100644 doc/source/modules/utils/weakref.rst (limited to 'doc/source/modules') diff --git a/doc/source/modules/gui/console.rst b/doc/source/modules/gui/console.rst new file mode 100644 index 0000000..5c8398e --- /dev/null +++ b/doc/source/modules/gui/console.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.gui + +:mod:`console`: IPython console widgets +--------------------------------------- + +.. automodule:: silx.gui.console + :members: + :exclude-members: main, sizeHint diff --git a/doc/source/modules/gui/data/arraytable.rst b/doc/source/modules/gui/data/arraytable.rst new file mode 100644 index 0000000..b929cd5 --- /dev/null +++ b/doc/source/modules/gui/data/arraytable.rst @@ -0,0 +1,23 @@ + +.. currentmodule:: silx.gui.data + +:mod:`ArrayTableWidget`: Browsing Numpy arrays +---------------------------------------------- + +.. automodule:: silx.gui.data.ArrayTableWidget + +Widget +++++++ + +.. autoclass:: silx.gui.data.ArrayTableWidget.ArrayTableWidget + :members: + + + +Data model +++++++++++ + +.. automodule:: silx.gui.data.ArrayTableModel + +.. autoclass:: silx.gui.data.ArrayTableModel.ArrayTableModel + :exclude-members: data, rowCount, columnCount, headerData, flags, setData, diff --git a/doc/source/modules/gui/data/dataviewer.rst b/doc/source/modules/gui/data/dataviewer.rst new file mode 100644 index 0000000..7f87c49 --- /dev/null +++ b/doc/source/modules/gui/data/dataviewer.rst @@ -0,0 +1,7 @@ +:mod:`DataViewer`: Widget to display any kind of data +----------------------------------------------------- + +.. automodule:: silx.gui.data.DataViewer + +.. autoclass:: DataViewer + :members: diff --git a/doc/source/modules/gui/data/dataviewerframe.rst b/doc/source/modules/gui/data/dataviewerframe.rst new file mode 100644 index 0000000..12ccfa0 --- /dev/null +++ b/doc/source/modules/gui/data/dataviewerframe.rst @@ -0,0 +1,7 @@ +:mod:`DataViewerFrame`: Widget to display any kind of data +---------------------------------------------------------- + +.. automodule:: silx.gui.data.DataViewerFrame + +.. autoclass:: DataViewerFrame + :members: diff --git a/doc/source/modules/gui/data/img/DataViewer.png b/doc/source/modules/gui/data/img/DataViewer.png new file mode 100644 index 0000000..719c822 Binary files /dev/null and b/doc/source/modules/gui/data/img/DataViewer.png differ diff --git a/doc/source/modules/gui/data/img/DataViewerFrame.png b/doc/source/modules/gui/data/img/DataViewerFrame.png new file mode 100644 index 0000000..88dc09a Binary files /dev/null and b/doc/source/modules/gui/data/img/DataViewerFrame.png differ diff --git a/doc/source/modules/gui/data/img/NumpyAxesSelector.png b/doc/source/modules/gui/data/img/NumpyAxesSelector.png new file mode 100644 index 0000000..c508b80 Binary files /dev/null and b/doc/source/modules/gui/data/img/NumpyAxesSelector.png differ diff --git a/doc/source/modules/gui/data/index.rst b/doc/source/modules/gui/data/index.rst new file mode 100644 index 0000000..e70138d --- /dev/null +++ b/doc/source/modules/gui/data/index.rst @@ -0,0 +1,19 @@ + +.. currentmodule:: silx.gui + +:mod:`data`: Widgets for data visualization +------------------------------------------- + +.. automodule:: silx.gui.data + + +Public modules: + +.. toctree:: + :maxdepth: 2 + + arraytable.rst + dataviewerframe.rst + dataviewer.rst + numpyaxesselector.rst + textformatter.rst diff --git a/doc/source/modules/gui/data/numpyaxesselector.rst b/doc/source/modules/gui/data/numpyaxesselector.rst new file mode 100644 index 0000000..e1ab952 --- /dev/null +++ b/doc/source/modules/gui/data/numpyaxesselector.rst @@ -0,0 +1,7 @@ +:mod:`NumpyAxesSelector`:Widget to select a view from a numpy array +------------------------------------------------------------------- + +.. automodule:: silx.gui.data.NumpyAxesSelector + +.. autoclass:: NumpyAxesSelector + :members: diff --git a/doc/source/modules/gui/data/textformatter.rst b/doc/source/modules/gui/data/textformatter.rst new file mode 100644 index 0000000..6903f80 --- /dev/null +++ b/doc/source/modules/gui/data/textformatter.rst @@ -0,0 +1,7 @@ +:mod:`TextFormatter`: Common text formatter +------------------------------------------- + +.. automodule:: silx.gui.data.TextFormatter + +.. autoclass:: TextFormatter + :members: diff --git a/doc/source/modules/gui/designer.rst b/doc/source/modules/gui/designer.rst new file mode 100644 index 0000000..fc52e1f --- /dev/null +++ b/doc/source/modules/gui/designer.rst @@ -0,0 +1 @@ +.. include:: ../../../../qtdesigner_plugins/README.rst diff --git a/doc/source/modules/gui/fit/backgroundwidget.rst b/doc/source/modules/gui/fit/backgroundwidget.rst new file mode 100644 index 0000000..eea2052 --- /dev/null +++ b/doc/source/modules/gui/fit/backgroundwidget.rst @@ -0,0 +1,27 @@ + +.. currentmodule:: silx.gui.fit + +:mod:`BackgroundWidget` +======================= + +.. automodule:: silx.gui.fit.BackgroundWidget + + +.. |imgBGWidget| image:: ./img/bgwidget.png + :height: 300px + :align: middle + +|imgBGWidget| + + +API +--- + +.. currentmodule:: silx.gui.fit.BackgroundWidget + +.. autoclass:: BackgroundWidget + :members: + +.. autoclass:: BackgroundDialog + :members: + diff --git a/doc/source/modules/gui/fit/fitwidget.rst b/doc/source/modules/gui/fit/fitwidget.rst new file mode 100644 index 0000000..5eb0280 --- /dev/null +++ b/doc/source/modules/gui/fit/fitwidget.rst @@ -0,0 +1,18 @@ + +.. currentmodule:: silx.gui.fit + +:mod:`FitWidget` +================ + +.. automodule:: silx.gui.fit.FitWidget + +For a tutorial on how to use :class:`FitWidget`, see :ref:`fitwidget-tutorial`. + +API +--- + +.. currentmodule:: silx.gui.fit.FitWidget + +.. autoclass:: FitWidget + :members: __init__, configdialogs, setData, associateConfigDialog + diff --git a/doc/source/modules/gui/fit/img/bgwidget.png b/doc/source/modules/gui/fit/img/bgwidget.png new file mode 100644 index 0000000..724eadb Binary files /dev/null and b/doc/source/modules/gui/fit/img/bgwidget.png differ diff --git a/doc/source/modules/gui/fit/index.rst b/doc/source/modules/gui/fit/index.rst new file mode 100644 index 0000000..67c22a1 --- /dev/null +++ b/doc/source/modules/gui/fit/index.rst @@ -0,0 +1,32 @@ + +.. currentmodule:: silx.gui + +:mod:`fit`: Fit widgets +------------------------ + +.. automodule:: silx.gui.fit + +Snapshot of the widgets: + + +.. |imgFitWidget| image:: ../../../Tutorials/img/fitwidget4.png + :height: 150px + :align: middle + +.. |imgBGWidget| image:: ./img/bgwidget.png + :height: 150px + :align: middle + +=================== ========================== +|imgFitWidget| |imgBGWidget| +:class:`FitWidget` :class:`BackgroundWidget` +=================== ========================== + +Public modules: + +.. toctree:: + :maxdepth: 2 + + fitwidget.rst + backgroundwidget.rst + diff --git a/doc/source/modules/gui/hdf5/examples_hdf5widget.rst b/doc/source/modules/gui/hdf5/examples_hdf5widget.rst new file mode 100644 index 0000000..90f218f --- /dev/null +++ b/doc/source/modules/gui/hdf5/examples_hdf5widget.rst @@ -0,0 +1,6 @@ +hdf5widget.py +============= + +Sample code demonstrating :mod:`silx.gui.hdf5` widgets: + +.. literalinclude:: ../../../../../examples/hdf5widget.py diff --git a/doc/source/modules/gui/hdf5/getting_started.rst b/doc/source/modules/gui/hdf5/getting_started.rst new file mode 100644 index 0000000..e843cac --- /dev/null +++ b/doc/source/modules/gui/hdf5/getting_started.rst @@ -0,0 +1,226 @@ +.. currentmodule:: silx.gui.hdf5 + +Getting started with HDF5 widgets +================================= + +Silx provides an implementation of a tree model and a tree view for HDF5 files. +The aim of this tree is to provide a convenient read-only widget for a big +amount of data and supporting file formats often used in synchrotrons. + +This page provides some source code to show how to use this widget. + +Commented source code +--------------------- + +Import and create your tree view +++++++++++++++++++++++++++++++++ + +HDF5 widgets are all exposed by the package `silx.gui.hdf5`. + +.. testsetup:: * + + from silx.gui import qt + app = qt.QApplication([]) + import silx.gui.hdf5 + treeview = silx.gui.hdf5.Hdf5TreeView() + header = treeview.header() + model = treeview.findHdf5TreeModel() + +.. testcode:: + + import silx.gui.hdf5 + treeview = silx.gui.hdf5.Hdf5TreeView() + +Custom your tree view ++++++++++++++++++++++ + +The tree view can be customized to be sorted by default. + +.. testcode:: + + # Sort content of files by time or name + treeview.setSortingEnabled(True) + +The model can be customized to support mouse interaction. +A convenient method :meth:`Hdf5TreeView.findHdf5TreeModel` returns the main +HDF5 model used through proxy models. + +.. testcode:: + + model = treeview.findHdf5TreeModel() + + # Avoid the user to drop file in the widget + model.setFileDropEnabled(False) + + # Allow the user to reorder files with drag-and-drop + model.setFileMoveEnabled(True) + +The tree view is also provided with a custom header which help to choose +visible columns. + +.. testcode:: + + header = treeview.header() + + # Select displayed columns + column_ids = [treeview.findHdf5TreeModel().NAME_COLUMN] + header.setSections(column_ids) + + # Do not allow the user to custom visible columns + header.setEnableHideColumnsPopup(False) + +Add a file by name +++++++++++++++++++ + +The model can be used to add HDF5. It is internally using +:func:`silx.io.open`. + +.. code-block:: python + + model.insertFile("test.h5") + +Add a file with h5py +++++++++++++++++++++ + +The model internally uses :mod:`h5py` object API. We can use h5py file, group +and dataset as it is. + +.. code-block:: python + + import h5py + h5 = h5py.File("test.h5") + + # We can use file + model.insertH5pyObject(h5) + + # or group or dataset + model.insertH5pyObject(h5["group1"]) + model.insertH5pyObject(h5["group1/dataset50"]) + +Add a file with silx +++++++++++++++++++++ + +Silx also provides an input API. It supports HDF5 files through :mod:`h5py`. + +.. code-block:: python + + import silx.io + + # We can load HDF5 files + model.insertH5pyObject(silx.io.open("test.h5")) + + # or Spec files + model.insertH5pyObject(silx.io.open("test.dat")) + + +Custom context menu ++++++++++++++++++++ + +The :class:`Hdf5TreeView` provides a callback API to populate the context menu. +The callback receives a :class:`Hdf5ContextMenuEvent` every time the user +requests the context menu. The event contains :class:`H5Node` objects which wrap +h5py objects with extra information. + +.. testcode:: + + def my_action_callback(obj): + # do what you want + pass + + def my_callback(event): + objects = list(event.source().selectedH5Nodes()) + obj = objects[0] # for single selection + + menu = event.menu() + if obj.ntype is h5py.Dataset: + action = qt.QAction("My funky action on datasets only", menu) + action.triggered.connect(lambda: my_action_callback(obj)) + menu.addAction(action) + + treeview.addContextMenuCallback(my_callback) + +Capture selection ++++++++++++++++++ + +The :class:`Hdf5TreeView` widget provides default Qt signals inherited from +`QAbstractItemView`. + +- `activated`: + This signal is emitted when the item specified by index is + activated by the user. How to activate items depends on the platform; + e.g., by single- or double-clicking the item, or by pressing the + Return or Enter key when the item is current. +- `clicked`: + This signal is emitted when a mouse button is clicked. The item the mouse + was clicked on is specified by index. The signal is only emitted when the + index is valid. +- `doubleClicked`: + This signal is emitted when a mouse button is double-clicked. The item + the mouse was double-clicked on is specified by index. The signal is + only emitted when the index is valid. +- `entered`: + This signal is emitted when the mouse cursor enters the item specified by + index. Mouse tracking needs to be enabled for this feature to work. +- `pressed`: + This signal is emitted when a mouse button is pressed. The item the mouse + was pressed on is specified by index. The signal is only emitted when the + index is valid. + +The method :meth:`Hdf5TreeView.selectedH5Nodes` returns an iterator of :class:`H5Node` +objects which wrap h5py objects with extra information. + +.. testcode:: + + def my_callback(index): + objects = list(treeview.selectedH5Nodes()) + obj = objects[0] # for single selection + + print(obj) + + print(obj.basename) # not provided by h5py + print(obj.name) + print(obj.file.filename) + + print(obj.local_basename) # not provided by h5py + print(obj.local_name) # not provided by h5py + print(obj.local_file.filename) # not provided by h5py + + print(obj.attrs) + + if obj.ntype is h5py.Dataset: + print(obj.dtype) + print(obj.shape) + print(obj.value) # create a copy of data of the dataset + print(obj.h5py_object) # reference to the Hdf5 dataset (or group) + + treeview.clicked.connect(my_callback) + +Example +------- + +.. toctree:: + :hidden: + + examples_hdf5widget.rst + +The :doc:`examples_hdf5widget` sample code provides an example of properties of +the view, the model and the header. + +.. image:: img/Hdf5Example.png + :height: 200px + :width: 400px + :alt: Example for HDF5TreeView features + :align: center + +Source code: :doc:`examples_hdf5widget`. + +After installing `silx` and downloading the script, you can start it from the +command prompt: + +.. code-block:: bash + + python hdf5widget.py + +This example loads files added to the command line, or files dropped from the +file system. It also provides a GUI to display test files created +programmatically. diff --git a/doc/source/modules/gui/hdf5/h5node.rst b/doc/source/modules/gui/hdf5/h5node.rst new file mode 100644 index 0000000..a57bbe7 --- /dev/null +++ b/doc/source/modules/gui/hdf5/h5node.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.gui.hdf5 + +:class:`H5Node` class +--------------------- + +.. autoclass:: H5Node + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/hdf5/hdf5contextmenuevent.rst b/doc/source/modules/gui/hdf5/hdf5contextmenuevent.rst new file mode 100644 index 0000000..972a267 --- /dev/null +++ b/doc/source/modules/gui/hdf5/hdf5contextmenuevent.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.gui.hdf5 + +:class:`Hdf5ContextMenuEvent` class +----------------------------------- + +.. autoclass:: Hdf5ContextMenuEvent + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/hdf5/hdf5treemodel.rst b/doc/source/modules/gui/hdf5/hdf5treemodel.rst new file mode 100644 index 0000000..1269e7d --- /dev/null +++ b/doc/source/modules/gui/hdf5/hdf5treemodel.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.gui.hdf5 + +:class:`Hdf5TreeModel` class +---------------------------- + +.. autoclass:: Hdf5TreeModel + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/hdf5/hdf5treeview.rst b/doc/source/modules/gui/hdf5/hdf5treeview.rst new file mode 100644 index 0000000..cd44f74 --- /dev/null +++ b/doc/source/modules/gui/hdf5/hdf5treeview.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.gui.hdf5 + +:class:`Hdf5TreeView` class +--------------------------- + +.. autoclass:: Hdf5TreeView + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/hdf5/img/Hdf5Example.png b/doc/source/modules/gui/hdf5/img/Hdf5Example.png new file mode 100644 index 0000000..2b1ed0b Binary files /dev/null and b/doc/source/modules/gui/hdf5/img/Hdf5Example.png differ diff --git a/doc/source/modules/gui/hdf5/img/Hdf5TreeView.png b/doc/source/modules/gui/hdf5/img/Hdf5TreeView.png new file mode 100644 index 0000000..2010069 Binary files /dev/null and b/doc/source/modules/gui/hdf5/img/Hdf5TreeView.png differ diff --git a/doc/source/modules/gui/hdf5/index.rst b/doc/source/modules/gui/hdf5/index.rst new file mode 100644 index 0000000..cd2c4eb --- /dev/null +++ b/doc/source/modules/gui/hdf5/index.rst @@ -0,0 +1,46 @@ + +.. currentmodule:: silx.gui + +:mod:`hdf5`: HDF5 widgets +========================= + +.. toctree:: + :hidden: + + getting_started.rst + +.. currentmodule:: silx.gui.hdf5 + +.. automodule:: silx.gui.hdf5 + +For an introduction to the widgets of this package, see :doc:`getting_started`. + +Widgets gallery +--------------- + +.. |imgHdf5TreeView| image:: img/Hdf5TreeView.png + :height: 150px + :align: middle + +.. list-table:: + :widths: 1 4 + :header-rows: 1 + + * - Widget + - Description + * - |imgHdf5TreeView| + - :class:`Hdf5TreeView` is the base Qt widget providing a tree view of + multiple HDF5 files, or assimilated file with an adapter. + + +Public modules +-------------- + +.. toctree:: + :maxdepth: 2 + + hdf5treeview.rst + hdf5treemodel.rst + hdf5contextmenuevent.rst + h5node.rst + nexussortfilterproxymodel.rst diff --git a/doc/source/modules/gui/hdf5/nexussortfilterproxymodel.rst b/doc/source/modules/gui/hdf5/nexussortfilterproxymodel.rst new file mode 100644 index 0000000..ec2a8a9 --- /dev/null +++ b/doc/source/modules/gui/hdf5/nexussortfilterproxymodel.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.gui.hdf5 + +:class:`NexusSortFilterProxyModel` class +---------------------------------------- + +.. autoclass:: NexusSortFilterProxyModel + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/icons.rst b/doc/source/modules/gui/icons.rst new file mode 100644 index 0000000..61ea71d --- /dev/null +++ b/doc/source/modules/gui/icons.rst @@ -0,0 +1,346 @@ + +.. AUTOMATICALLY GENERATED FILE DO NOT EDIT + Use update_icons_rst.py script instead + +.. currentmodule:: silx.gui + +:mod:`icons`: Set of icons +-------------------------- + +.. automodule:: silx.gui.icons + :members: + +Available icons ++++++++++++++++ + +.. list-table:: + :widths: 1 4 + :header-rows: 1 + + * - Icon + - Name + * - |3d-plane-normal-x| + - 3d-plane-normal-x + * - |3d-plane-normal-y| + - 3d-plane-normal-y + * - |3d-plane-normal-z| + - 3d-plane-normal-z + * - |3d-plane| + - 3d-plane + * - |arrow-keys| + - arrow-keys + * - |camera| + - camera + * - |clipboard| + - clipboard + * - |close| + - close + * - |colormap| + - colormap + * - |crop| + - crop + * - |crosshair| + - crosshair + * - |cube-back| + - cube-back + * - |cube-bottom| + - cube-bottom + * - |cube-front| + - cube-front + * - |cube-left| + - cube-left + * - |cube-right| + - cube-right + * - |cube-top| + - cube-top + * - |cube| + - cube + * - |document-open| + - document-open + * - |document-print| + - document-print + * - |document-save| + - document-save + * - |draw-brush| + - draw-brush + * - |draw-pencil| + - draw-pencil + * - |draw-rubber| + - draw-rubber + * - |edit-copy| + - edit-copy + * - |first| + - first + * - |folder| + - folder + * - |image-mask| + - image-mask + * - |image-select-add| + - image-select-add + * - |image-select-box| + - image-select-box + * - |image-select-brush| + - image-select-brush + * - |image-select-erase-rubber| + - image-select-erase-rubber + * - |image-select-erase| + - image-select-erase + * - |image| + - image + * - |item-0dim| + - item-0dim + * - |item-1dim| + - item-1dim + * - |item-2dim| + - item-2dim + * - |item-3dim| + - item-3dim + * - |item-ndim| + - item-ndim + * - |item-object| + - item-object + * - |last| + - last + * - |math-average| + - math-average + * - |math-derive| + - math-derive + * - |math-energy| + - math-energy + * - |math-fit| + - math-fit + * - |math-normalize| + - math-normalize + * - |math-peak-reset| + - math-peak-reset + * - |math-peak-search| + - math-peak-search + * - |math-peak| + - math-peak + * - |math-sigma| + - math-sigma + * - |math-smooth| + - math-smooth + * - |math-substract| + - math-substract + * - |math-swap-sign| + - math-swap-sign + * - |math-ymin-to-zero| + - math-ymin-to-zero + * - |next| + - next + * - |normal| + - normal + * - |pixel-intensities| + - pixel-intensities + * - |plot-grid| + - plot-grid + * - |plot-roi-above| + - plot-roi-above + * - |plot-roi-below| + - plot-roi-below + * - |plot-roi-between| + - plot-roi-between + * - |plot-roi-reset| + - plot-roi-reset + * - |plot-roi| + - plot-roi + * - |plot-toggle-points| + - plot-toggle-points + * - |plot-widget| + - plot-widget + * - |plot-window-image| + - plot-window-image + * - |plot-window| + - plot-window + * - |plot-xauto| + - plot-xauto + * - |plot-xlog| + - plot-xlog + * - |plot-yauto| + - plot-yauto + * - |plot-ydown| + - plot-ydown + * - |plot-ylog| + - plot-ylog + * - |plot-yup| + - plot-yup + * - |previous| + - previous + * - |profile1D| + - profile1D + * - |profile2D| + - profile2D + * - |remove| + - remove + * - |rudder| + - rudder + * - |selected| + - selected + * - |shape-circle-solid| + - shape-circle-solid + * - |shape-circle| + - shape-circle + * - |shape-diagonal| + - shape-diagonal + * - |shape-ellipse-solid| + - shape-ellipse-solid + * - |shape-ellipse| + - shape-ellipse + * - |shape-horizontal| + - shape-horizontal + * - |shape-polygon| + - shape-polygon + * - |shape-rectangle| + - shape-rectangle + * - |shape-square| + - shape-square + * - |shape-vertical| + - shape-vertical + * - |silx| + - silx + * - |sliders-off| + - sliders-off + * - |sliders-on| + - sliders-on + * - |spec| + - spec + * - |test-png| + - test-png + * - |view-1d| + - view-1d + * - |view-2d-stack| + - view-2d-stack + * - |view-2d| + - view-2d + * - |view-3d| + - view-3d + * - |view-fullscreen| + - view-fullscreen + * - |view-nofullscreen| + - view-nofullscreen + * - |view-raw| + - view-raw + * - |view-refresh| + - view-refresh + * - |view-text| + - view-text + * - |window-new| + - window-new + * - |zoom-in| + - zoom-in + * - |zoom-original| + - zoom-original + * - |zoom-out| + - zoom-out + * - |zoom| + - zoom + +.. |3d-plane-normal-x| image:: ../../../../silx/resources/gui/icons/3d-plane-normal-x.png +.. |3d-plane-normal-y| image:: ../../../../silx/resources/gui/icons/3d-plane-normal-y.png +.. |3d-plane-normal-z| image:: ../../../../silx/resources/gui/icons/3d-plane-normal-z.png +.. |3d-plane| image:: ../../../../silx/resources/gui/icons/3d-plane.png +.. |arrow-keys| image:: ../../../../silx/resources/gui/icons/arrow-keys.png +.. |camera| image:: ../../../../silx/resources/gui/icons/camera.png +.. |clipboard| image:: ../../../../silx/resources/gui/icons/clipboard.png +.. |close| image:: ../../../../silx/resources/gui/icons/close.png +.. |colormap| image:: ../../../../silx/resources/gui/icons/colormap.png +.. |crop| image:: ../../../../silx/resources/gui/icons/crop.png +.. |crosshair| image:: ../../../../silx/resources/gui/icons/crosshair.png +.. |cube-back| image:: ../../../../silx/resources/gui/icons/cube-back.png +.. |cube-bottom| image:: ../../../../silx/resources/gui/icons/cube-bottom.png +.. |cube-front| image:: ../../../../silx/resources/gui/icons/cube-front.png +.. |cube-left| image:: ../../../../silx/resources/gui/icons/cube-left.png +.. |cube-right| image:: ../../../../silx/resources/gui/icons/cube-right.png +.. |cube-top| image:: ../../../../silx/resources/gui/icons/cube-top.png +.. |cube| image:: ../../../../silx/resources/gui/icons/cube.png +.. |document-open| image:: ../../../../silx/resources/gui/icons/document-open.png +.. |document-print| image:: ../../../../silx/resources/gui/icons/document-print.png +.. |document-save| image:: ../../../../silx/resources/gui/icons/document-save.png +.. |draw-brush| image:: ../../../../silx/resources/gui/icons/draw-brush.png +.. |draw-pencil| image:: ../../../../silx/resources/gui/icons/draw-pencil.png +.. |draw-rubber| image:: ../../../../silx/resources/gui/icons/draw-rubber.png +.. |edit-copy| image:: ../../../../silx/resources/gui/icons/edit-copy.png +.. |first| image:: ../../../../silx/resources/gui/icons/first.png +.. |folder| image:: ../../../../silx/resources/gui/icons/folder.png +.. |image-mask| image:: ../../../../silx/resources/gui/icons/image-mask.png +.. |image-select-add| image:: ../../../../silx/resources/gui/icons/image-select-add.png +.. |image-select-box| image:: ../../../../silx/resources/gui/icons/image-select-box.png +.. |image-select-brush| image:: ../../../../silx/resources/gui/icons/image-select-brush.png +.. |image-select-erase-rubber| image:: ../../../../silx/resources/gui/icons/image-select-erase-rubber.png +.. |image-select-erase| image:: ../../../../silx/resources/gui/icons/image-select-erase.png +.. |image| image:: ../../../../silx/resources/gui/icons/image.png +.. |item-0dim| image:: ../../../../silx/resources/gui/icons/item-0dim.png +.. |item-1dim| image:: ../../../../silx/resources/gui/icons/item-1dim.png +.. |item-2dim| image:: ../../../../silx/resources/gui/icons/item-2dim.png +.. |item-3dim| image:: ../../../../silx/resources/gui/icons/item-3dim.png +.. |item-ndim| image:: ../../../../silx/resources/gui/icons/item-ndim.png +.. |item-object| image:: ../../../../silx/resources/gui/icons/item-object.png +.. |last| image:: ../../../../silx/resources/gui/icons/last.png +.. |math-average| image:: ../../../../silx/resources/gui/icons/math-average.png +.. |math-derive| image:: ../../../../silx/resources/gui/icons/math-derive.png +.. |math-energy| image:: ../../../../silx/resources/gui/icons/math-energy.png +.. |math-fit| image:: ../../../../silx/resources/gui/icons/math-fit.png +.. |math-normalize| image:: ../../../../silx/resources/gui/icons/math-normalize.png +.. |math-peak-reset| image:: ../../../../silx/resources/gui/icons/math-peak-reset.png +.. |math-peak-search| image:: ../../../../silx/resources/gui/icons/math-peak-search.png +.. |math-peak| image:: ../../../../silx/resources/gui/icons/math-peak.png +.. |math-sigma| image:: ../../../../silx/resources/gui/icons/math-sigma.png +.. |math-smooth| image:: ../../../../silx/resources/gui/icons/math-smooth.png +.. |math-substract| image:: ../../../../silx/resources/gui/icons/math-substract.png +.. |math-swap-sign| image:: ../../../../silx/resources/gui/icons/math-swap-sign.png +.. |math-ymin-to-zero| image:: ../../../../silx/resources/gui/icons/math-ymin-to-zero.png +.. |next| image:: ../../../../silx/resources/gui/icons/next.png +.. |normal| image:: ../../../../silx/resources/gui/icons/normal.png +.. |pixel-intensities| image:: ../../../../silx/resources/gui/icons/pixel-intensities.png +.. |plot-grid| image:: ../../../../silx/resources/gui/icons/plot-grid.png +.. |plot-roi-above| image:: ../../../../silx/resources/gui/icons/plot-roi-above.png +.. |plot-roi-below| image:: ../../../../silx/resources/gui/icons/plot-roi-below.png +.. |plot-roi-between| image:: ../../../../silx/resources/gui/icons/plot-roi-between.png +.. |plot-roi-reset| image:: ../../../../silx/resources/gui/icons/plot-roi-reset.png +.. |plot-roi| image:: ../../../../silx/resources/gui/icons/plot-roi.png +.. |plot-toggle-points| image:: ../../../../silx/resources/gui/icons/plot-toggle-points.png +.. |plot-widget| image:: ../../../../silx/resources/gui/icons/plot-widget.png +.. |plot-window-image| image:: ../../../../silx/resources/gui/icons/plot-window-image.png +.. |plot-window| image:: ../../../../silx/resources/gui/icons/plot-window.png +.. |plot-xauto| image:: ../../../../silx/resources/gui/icons/plot-xauto.png +.. |plot-xlog| image:: ../../../../silx/resources/gui/icons/plot-xlog.png +.. |plot-yauto| image:: ../../../../silx/resources/gui/icons/plot-yauto.png +.. |plot-ydown| image:: ../../../../silx/resources/gui/icons/plot-ydown.png +.. |plot-ylog| image:: ../../../../silx/resources/gui/icons/plot-ylog.png +.. |plot-yup| image:: ../../../../silx/resources/gui/icons/plot-yup.png +.. |previous| image:: ../../../../silx/resources/gui/icons/previous.png +.. |profile1D| image:: ../../../../silx/resources/gui/icons/profile1D.png +.. |profile2D| image:: ../../../../silx/resources/gui/icons/profile2D.png +.. |remove| image:: ../../../../silx/resources/gui/icons/remove.png +.. |rudder| image:: ../../../../silx/resources/gui/icons/rudder.png +.. |selected| image:: ../../../../silx/resources/gui/icons/selected.png +.. |shape-circle-solid| image:: ../../../../silx/resources/gui/icons/shape-circle-solid.png +.. |shape-circle| image:: ../../../../silx/resources/gui/icons/shape-circle.png +.. |shape-diagonal| image:: ../../../../silx/resources/gui/icons/shape-diagonal.png +.. |shape-ellipse-solid| image:: ../../../../silx/resources/gui/icons/shape-ellipse-solid.png +.. |shape-ellipse| image:: ../../../../silx/resources/gui/icons/shape-ellipse.png +.. |shape-horizontal| image:: ../../../../silx/resources/gui/icons/shape-horizontal.png +.. |shape-polygon| image:: ../../../../silx/resources/gui/icons/shape-polygon.png +.. |shape-rectangle| image:: ../../../../silx/resources/gui/icons/shape-rectangle.png +.. |shape-square| image:: ../../../../silx/resources/gui/icons/shape-square.png +.. |shape-vertical| image:: ../../../../silx/resources/gui/icons/shape-vertical.png +.. |silx| image:: ../../../../silx/resources/gui/icons/silx.png +.. |sliders-off| image:: ../../../../silx/resources/gui/icons/sliders-off.png +.. |sliders-on| image:: ../../../../silx/resources/gui/icons/sliders-on.png +.. |spec| image:: ../../../../silx/resources/gui/icons/spec.png +.. |test-png| image:: ../../../../silx/resources/gui/icons/test-png.png +.. |view-1d| image:: ../../../../silx/resources/gui/icons/view-1d.png +.. |view-2d-stack| image:: ../../../../silx/resources/gui/icons/view-2d-stack.png +.. |view-2d| image:: ../../../../silx/resources/gui/icons/view-2d.png +.. |view-3d| image:: ../../../../silx/resources/gui/icons/view-3d.png +.. |view-fullscreen| image:: ../../../../silx/resources/gui/icons/view-fullscreen.png +.. |view-nofullscreen| image:: ../../../../silx/resources/gui/icons/view-nofullscreen.png +.. |view-raw| image:: ../../../../silx/resources/gui/icons/view-raw.png +.. |view-refresh| image:: ../../../../silx/resources/gui/icons/view-refresh.png +.. |view-text| image:: ../../../../silx/resources/gui/icons/view-text.png +.. |window-new| image:: ../../../../silx/resources/gui/icons/window-new.png +.. |zoom-in| image:: ../../../../silx/resources/gui/icons/zoom-in.png +.. |zoom-original| image:: ../../../../silx/resources/gui/icons/zoom-original.png +.. |zoom-out| image:: ../../../../silx/resources/gui/icons/zoom-out.png +.. |zoom| image:: ../../../../silx/resources/gui/icons/zoom.png diff --git a/doc/source/modules/gui/index.rst b/doc/source/modules/gui/index.rst new file mode 100644 index 0000000..eecd124 --- /dev/null +++ b/doc/source/modules/gui/index.rst @@ -0,0 +1,21 @@ + +.. py:module:: silx.gui + +:mod:`silx.gui`: Graphical user interface +========================================= + +The ``silx.gui`` package provides a set of PyQt widgets. + + +.. toctree:: + :maxdepth: 1 + + console.rst + data/index.rst + fit/index.rst + hdf5/index.rst + icons.rst + plot/index.rst + plot3d/index.rst + qt.rst + widgets/index.rst diff --git a/doc/source/modules/gui/plot/dev.rst b/doc/source/modules/gui/plot/dev.rst new file mode 100644 index 0000000..707d215 --- /dev/null +++ b/doc/source/modules/gui/plot/dev.rst @@ -0,0 +1,204 @@ +Package structure +================= + +The :mod:`silx.gui.plot` package provides plot widgets. +This package is structured as follows. + +.. currentmodule:: silx.gui.plot + +:mod:`.PlotWidget` and :mod:`.PlotWindow` provides the user API. +:class:`PlotWidget` is a Qt widget (actually a :class:`QMainWindow`) displaying a 1D, 2D plot area. +It provides different interaction modes. +:class:`PlotWindow` is a Qt widget (actually a :class:`QMainWindow`) which adds a set of toolbar buttons and associated functionalities to :class:`PlotWidget`. +The toolbar QActions are implemented in :mod:`.PlotActions`. + +:mod:`.Plot`, :mod:`.PlotEvents` and :mod:`.PlotInteraction` implement the plotting API regardless of the rendering backend and regardless of its integration in Qt. +The plotting API in defined in :mod:`.Plot`. +The different interaction modes (zoom, drawing, pan) are implemented in :mod:`.PlotInteraction`. +Each interaction mode is implemented with a state machine structure (implemented in :mod:`.Interaction`). +The different events emitted by :class:`Plot` and by the interaction modes are created with helper functions defined in :mod:`.PlotEvents`. + +The :class:`PlotWindow` uses additional widgets: + +- :mod:`.ColormapDialog` to change colormap settings. +- :mod:`.CurvesROIWidget` to create regions of interest for curves +- :mod:`.LegendSelector` to display a list of curves legends which provides some control on the curves (e.g., select, delete). +- :mod:`.MaskToolsWidget` to provide tools to draw a mask on an image. +- :mod:`.ScatterMaskToolsWidget` to provide tools to draw a mask on a scatter. +- The :mod:`.PlotTools` module provides a set of additional widgets: + + - :class:`.PlotTools.PositionInfo` + - :class:`.PlotTools.LimitsToolBar` + +- The :mod:`.Profile` module provides toolbar for extracting profiles from image and image stack: + + - :class:`.Profile.ProfileToolBar` + - :class:`.Profile.Profile3DToolBar` + +- :mod:`silx.gui.console` to provide an IPython console which can control the plot area content. + +The widgets also use the following miscellaneous modules: + +- :mod:`.Colors` to convert colors from name to RGB(A) +- :mod:`.MPLColormap` to embed recent matplotlib colormaps: 'magma', 'inferno', 'plasma' and 'viridis'. +- :mod:`._utils`: utility functions + +The :mod:`backends` package provide the implementation of the rendering used by the :class:`Plot`. +It contains: +:mod:`.backends.BackendBase` defines the API any plot backend should provide in :class:`BackendBase`. +:mod:`.backends.BackendMatplotlib` implements a `matplotlib `_ backend. +It uses :mod:`.backends.ModestImage` to provide a faster matplotlib AxesImage class using nearest values. +The :mod:`.backends.BackendMatplotlib` the provides two classes: + +.. currentmodule:: silx.gui.plot.backends.BackendMatplotlib + +- :class:`BackendMatplotlib` that provides a matplotlib backend without a specific canvas. +- :class:`BackendMatplotlibQt` which inherits from :class:`BackendMatplotlib` and adds a Qt canvas, and Qt specific functionalities. + +The OpenGL-based backend is implemented in the :mod:`.backends.BackendOpenGL` module and +the :mod:`.backends.glutils` package which provides the different primitives used for rendering and interaction. +It is based on :mod:`silx.gui._glutils`, `PyOpenGL `_ and OpenGL >= 2.1. + +.. |Plot and backend| image:: img/plot_and_backend.png + :align: middle + +|Plot and backend| + +Modules +======= + +.. currentmodule:: silx.gui.plot + +For :mod:`.PlotWidget` and :mod:`.Plot` modules, see their respective documentations: :mod:`.PlotWidget`, :mod:`.Plot`. + +The following modules are the modules used internally by the plot package. + +:mod:`backends.BackendBase` ++++++++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.backends.BackendBase + +.. automodule:: silx.gui.plot.backends.BackendBase + :members: + +:mod:`backends.BackendMatplotlib` ++++++++++++++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.backends.BackendMatplotlib + +.. automodule:: silx.gui.plot.backends.BackendMatplotlib + :members: + +:mod:`backends.ModestImage` ++++++++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.backends.ModestImage + +.. automodule:: silx.gui.plot.backends.ModestImage + :members: + :undoc-members: + +:mod:`ColormapDialog` ++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.ColormapDialog + +.. automodule:: silx.gui.plot.ColormapDialog + :members: + +:mod:`Colors` ++++++++++++++ + +.. currentmodule:: silx.gui.plot.Colors + +.. automodule:: silx.gui.plot.Colors + :members: rgba + +:mod:`CurvesROIWidget` +++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.CurvesROIWidget + +.. automodule:: silx.gui.plot.CurvesROIWidget + :members: + +:mod:`Interaction` +++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.Interaction + +.. automodule:: silx.gui.plot.Interaction + :members: + +:mod:`LegendSelector` ++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.LegendSelector + +.. automodule:: silx.gui.plot.LegendSelector + :members: + +:mod:`_BaseMaskToolsWidget` ++++++++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot._BaseMaskToolsWidget + +.. automodule:: silx.gui.plot._BaseMaskToolsWidget + :members: + +:mod:`MaskToolsWidget` +++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.MaskToolsWidget + +.. automodule:: silx.gui.plot.MaskToolsWidget + :members: + :show-inheritance: + +:mod:`ScatterMaskToolsWidget` ++++++++++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.ScatterMaskToolsWidget + +.. automodule:: silx.gui.plot.ScatterMaskToolsWidget + :members: + :show-inheritance: + +:mod:`MPLColormap` +++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.MPLColormap + +.. automodule:: silx.gui.plot.MPLColormap + :members: + +:mod:`PlotEvents` ++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.PlotEvents + +.. automodule:: silx.gui.plot.PlotEvents + :members: + :undoc-members: + +:mod:`PlotInteraction` +++++++++++++++++++++++ + +.. currentmodule:: silx.gui.plot.PlotInteraction + +.. automodule:: silx.gui.plot.PlotInteraction + :members: + +:mod:`_utils` ++++++++++++++ + +.. currentmodule:: silx.gui.plot._utils + +.. automodule:: silx.gui.plot._utils + :members: + +:mod:`ticklayout` +----------------- + +.. automodule:: silx.gui.plot._utils.ticklayout + :members: \ No newline at end of file diff --git a/doc/source/modules/gui/plot/getting_started.rst b/doc/source/modules/gui/plot/getting_started.rst new file mode 100644 index 0000000..9e45b70 --- /dev/null +++ b/doc/source/modules/gui/plot/getting_started.rst @@ -0,0 +1,491 @@ +.. currentmodule:: silx.gui + +Getting started with plot widgets +================================= + +This introduction to :mod:`silx.gui.plot` covers the following topics: + +- `Use silx.gui.plot from the console`_ +- `Use silx.gui.plot from a script`_ +- `Plot curves in a widget`_ +- `Plot images in a widget`_ +- `Control plot axes`_ + +For a complete description of the API, see :mod:`silx.gui.plot`. + +Use :mod:`silx.gui.plot` from the console +----------------------------------------- + +From IPython +++++++++++++ + +To run :mod:`silx.gui.plot` widgets from `IPython `_, IPython must be set to use Qt (and in case of using PyQt4 and Python 2.7, PyQt must be set ti use API version 2, see Explanation_ below). + +As *silx* is performing some configuration of the Qt binding and `matplotlib `_, the safest way to use *silx* from IPython is to import :mod:`silx.gui.plot` first and then run either `%gui `_ qt or `%pylab `_ qt:: + + In [1]: from silx.gui.plot import * + In [2]: %pylab qt + +Alternatively, when using Python 2.7 and PyQt4, you can start IPython with the ``QT_API`` environment variable set to ``pyqt``. + +On Linux and MacOS X, run:: + + QT_API=pyqt ipython + +On Windows, run from the command line:: + + set QT_API=pyqt&&ipython + + +Explanation +........... + +PyQt4 used from Python 2.x provides 2 incompatible versions of QString and QVariant: + +- version 1, the legacy which is the default, and +- version 2, a more pythonic one, which is the only one supported by *silx*. + +All other configurations (i.e., PyQt4 on Python 3.x, PySide, PyQt5, IPython QtConsole widget) uses version 2 only or as the default. + +For more information, see `IPython, PyQt and PySide `_. + + +From Python ++++++++++++ + +The :mod:`silx.sx` package is a convenient module to use silx from the console. +It sets-up Qt and provides functions for the main features of silx. + +>>> from silx import sx + +Alternatively, you can create a QApplication before using silx widgets: + +>>> from silx.gui import qt # Import Qt binding and do some set-up +>>> qapp = qt.QApplication([]) + +>>> from silx.gui.plot import * # Import plot widgets and set-up matplotlib + +.. currentmodule:: silx.sx + +Plot functions +++++++++++++++ + +The :mod:`silx.sx` package provides 2 functions to plot curves and images from the (I)Python console in a widget with a set of tools: + +- :func:`plot`, and +- :func:`imshow`. + +For more features, use widgets directly (see `Plot curves in a widget`_ and `Plot images in a widget`_). + + +Curve: :func:`plot` +................... + +The following examples must run with a Qt QApplication initialized (see `Use silx.gui.plot from the console`_). + +First import :mod:`sx` function: + +>>> from silx import sx +>>> import numpy + +Plot a single curve given some values: + +>>> values = numpy.random.random(100) +>>> plot_1curve = sx.plot(values, title='Random data') + +Plot a single curve given the x and y values: + +>>> angles = numpy.linspace(0, numpy.pi, 100) +>>> sin_a = numpy.sin(angles) +>>> plot_sinus = sx.plot(angles, sin_a, +... xlabel='angle (radian)', ylabel='sin(a)') + +Plot many curves by giving a 2D array, provided xn, yn arrays: + +>>> plot_curves = sx.plot(x0, y0, x1, y1, x2, y2, ...) + +Plot curve with style giving a style string: + +>>> plot_styled = sx.plot(x0, y0, 'ro-', x1, y1, 'b.') + +See :func:`plot` for details. + + +Image: :func:`imshow` +..................... + +This example plot a single image. + +First, import :mod:`silx.sx`: + +>>> from silx import sx +>>> import numpy + +>>> data = numpy.random.random(1024 * 1024).reshape(1024, 1024) +>>> plt = sx.imshow(data, title='Random data') + +See :func:`imshow` for more details. + + +Use :mod:`silx.gui.plot` from a script +-------------------------------------- + +A Qt GUI script must have a QApplication initialized before creating widgets: + +.. code-block:: python + + from silx.gui import qt + + [...] + + qapp = qt.QApplication([]) + + [...] # Widgets initialisation + + if __name__ == '__main__': + [...] + qapp.exec_() + +Unless a Qt binding has already been loaded, :mod:`silx.gui.qt` uses the first Qt binding it founds by probing in the following order: PyQt5, PyQt4 and finally PySide. +If you prefer to choose the Qt binding yourself, import it before importing +a module from :mod:`silx.gui`: + +.. code-block:: python + + import PySide # Importing PySide will force silx to use it + from silx.gui import qt + + +.. warning:: + :mod:`silx.gui.plot` widgets are not thread-safe. + All calls to :mod:`silx.gui.plot` widgets must be made from the main thread. + +Plot curves in a widget +----------------------- + +The :class:`Plot1D` widget provides a plotting area and a toolbar with tools useful for curves such as setting logarithmic scale or defining region of interest. + +First, create a :class:`Plot1D` widget: + +.. code-block:: python + + from silx.gui.plot import Plot1D + + plot = Plot1D() # Create the plot widget + plot.show() # Make the plot widget visible + + +One curve ++++++++++ + +To display a single curve, use the :meth:`.PlotWidget.addCurve` method: + +.. code-block:: python + + plot.addCurve(x=(1, 2, 3), y=(3, 2, 1)) # Add a curve with default style + +When you need to update this curve, call :meth:`.PlotWidget.addCurve` again with the new values to display: + +.. code-block:: python + + plot.addCurve(x=(1, 2, 3), y=(1, 2, 3)) # Replace the existing curve + +To clear the plotting area, call :meth:`.PlotWidget.clear`: + +.. code-block:: python + + plot.clear() + + +Multiple curves ++++++++++++++++ + +In order to display multiple curves at the same time, you need to provide a different ``legend`` string for each of them: + +.. code-block:: python + + import numpy + + x = numpy.linspace(-numpy.pi, numpy.pi, 1000) + plot.addCurve(x, numpy.sin(x), legend='sinus') + plot.addCurve(x, numpy.cos(x), legend='cosinus') + plot.addCurve(x, numpy.random.random(len(x)), legend='random') + + +To update a curve, call :meth:`.PlotWidget.addCurve` with the ``legend`` of the curve you want to udpdate. +By default, the new curve will keep the same color (and style) as the curve it is updating: + +.. code-block:: python + + plot.addCurve(x, numpy.random.random(len(x)) - 1., legend='random') + +To remove a curve from the plot, call :meth:`.PlotWidget.remove` with the ``legend`` of the curve you want to remove from the plot: + +.. code-block:: python + + plot.remove('random') + +To clear the plotting area, call :meth:`.PlotWidget.clear`: + +.. code-block:: python + + plot.clear() + +Curve style ++++++++++++ + +By default, different curves will automatically use different styles to render, and keep the same style when updated. + +It is possible to specify the ``color`` of the curve, its ``linewidth`` and ``linestyle`` as well as the ``symbol`` to use as markers for data points (See :meth:`.PlotWidget.addCurve` for more details): + +.. code-block:: python + + import numpy + + x = numpy.linspace(-numpy.pi, numpy.pi, 100) + + # Curve with a thick dashed line + plot.addCurve(x, numpy.sin(x), legend='sinus', + linewidth=3, linestyle='--') + + # Curve with pink markers only + plot.addCurve(x, numpy.cos(x), legend='cosinus', + color='pink', linestyle=' ', symbol='o') + + # Curve with green line with square markers + plot.addCurve(x, numpy.random.random(len(x)), legend='random', + color='green', linestyle='-', symbol='s') + + + +Histogram ++++++++++ + +Data can be displayed as an histogram. This must be specified when calling the the addCurve function. (using ``histogram``, See :meth:`.PlotWidget.addCurve` for more details ). + +Histogram steps can be centered on x values or set at the left or the right of the given x values. + +.. code-block:: python + + import numpy + x = numpy.arange(0, 20, 1) + plot.addCurve(x, x+1, histogram='center', fill=True, color='green') + +.. note:: You can also give x as edges. For this you must have len(x) = len(y) + 1 + +Plot images in a widget +----------------------- + +The :class:`Plot2D` widget provides a plotting area and a toolbar with tools useful for images, such as keeping aspect ratio, changing the colormap or defining a mask. + +First, create a :class:`Plot2D` widget: + +.. code-block:: python + + from silx.gui.plot import Plot2D + + plot = Plot2D() # Create the plot widget + plot.show() # Make the plot widget visible + + +One image ++++++++++ + +To display a single image, use the :meth:`.PlotWidget.addImage` method: + +.. code-block:: python + + import numpy + + data = numpy.random.random(512 * 512).reshape(512, -1) # Create 2D image + plot.addImage(data) # Plot the 2D data set with default colormap + + +To update this image, call :meth:`.PlotWidget.addImage` again with the new image to display: + +.. code-block:: python + + # Create a RGB image + rgb_image = (numpy.random.random(512*512*3) * 255).astype(numpy.uint8) + rgb_image.shape = 512, 512, 3 + + plot.addImage(rgb_image) # Plot the RGB image instead of the previous data + + +To clear the plotting area, call :meth:`.PlotWidget.clear`: + +.. code-block:: python + + plot.clear() + + +Origin and scale +++++++++++++++++ + +:meth:`.PlotWidget.addImage` supports both 2D arrays of data displayed with a colormap and RGB(A) images as 3D arrays of shape (height, width, color channels). + +When displaying an image, it is possible to specify the ``origin`` and the ``scale`` of the image array in the plot area coordinates: + +.. code-block:: python + + data = numpy.random.random(512 * 512).reshape(512, -1) + plot.addImage(data, origin=(100, 100), scale=(0.1, 0.1)) + +When updating an image, if ``origin`` and ``scale`` are not provided, the previous values will be used: + +.. code-block:: python + + data = numpy.random.random(512 * 512).reshape(512, -1) + plot.addImage(data) # Keep previous origin and scale + + +Colormap +++++++++ + +A ``colormap`` is described with a :class:`dict` as follows (See :mod:`silx.gui.plot.Plot` for full documentation of the colormap): + +.. code-block:: python + + colormap = { + 'name': 'gray', # Name of the colormap + 'normalization': 'linear', # Either 'linear' or 'log' + 'autoscale': True, # True to autoscale colormap to data range, False to use [vmin, vmax] + 'vmin': 0.0, # If not autoscale, data value to bind to min of colormap + 'vmax': 1.0 # If not autoscale, data value to bind to max of colormap + } + + +At least the following colormap names are guaranteed to be available, but any colormap name from `matplotlib `_ (see `Choosing Colormaps `_) should work: + +- gray +- reversed gray +- temperature +- red +- green +- blue +- viridis +- magma +- inferno +- plasma + +It is possible to change the default colormap of :meth:`.PlotWidget.addImage` for the plot widget with :meth:`.PlotWidget.setDefaultColormap` (and to get it with :meth:`.PlotWidget.getDefaultColormap`): + +.. code-block:: python + + colormap = {'name': 'viridis', 'normalization': 'linear', + 'autoscale': True, 'vmin': 0.0, 'vmax': 1.0} + plot.setDefaultColormap(colormap) + + data = numpy.arange(512 * 512.).reshape(512, -1) + plot.addImage(data) # Rendered with the default colormap set before + +It is also possible to provide a ``colormap`` to :meth:`.PlotWidget.addImage` to override this default for an image: + +.. code-block:: python + + colormap = {'name': 'magma', 'normalization': 'log', + 'autoscale': False, 'vmin': 1.2, 'vmax': 1.8} + data = numpy.random.random(512 * 512).reshape(512, -1) + 1. + plot.addImage(data, colormap=colormap) + +As for `Origin and scale`_, when updating an image, if ``colormap`` is not provided, the previous colormap will be used: + +.. code-block:: python + + data = numpy.random.random(512 * 512).reshape(512, -1) + 1. + plot.addImage(data) # Keep previous colormap + +The colormap can be changed by the user from the widget's toolbar. + + +Multiple images ++++++++++++++++ + +In order to display multiple images at the same time, you need to provide a different ``legend`` string for each of them and to set the ``replace`` argument to ``False``: + +.. code-block:: python + + data = numpy.random.random(512 * 512).reshape(512, -1) + plot.addImage(data, legend='random', replace=False) + + data = numpy.arange(512 * 512.).reshape(512, -1) + plot.addImage(data, legend='arange', replace=False, origin=(512, 512)) + + +To update an image, call :meth:`.PlotWidget.addImage` with the ``legend`` of the curve you want to udpdate. +By default, the new image will keep the same colormap, origin and scale as the image it is updating: + +.. code-block:: python + + data = (512 * 512. - numpy.arange(512 * 512.)).reshape(512, -1) + plot.addImage(data, legend='arange', replace=False) # Beware of replace=False + + +To remove an image from the plot, call :meth:`.PlotWidget.remove` with the ``legend`` of the image you want to remove: + +.. code-block:: python + + plot.remove('random') + + +Control plot axes +----------------- + +The following examples illustrate the API to control the plot axes. + +Labels and title +++++++++++++++++ + +Use :meth:`.PlotWidget.setGraphTitle` to set the plot main title. +Use :meth:`.PlotWidget.setGraphXLabel` and :meth:`.PlotWidget.setGraphYLabel` to set the axes text labels: + +.. code-block:: python + + plot.setGraphTitle('My plot') + plot.setGraphXLabel('X') + plot.setGraphYLabel('Y') + + +Axes limits ++++++++++++ + +Different methods allows to get and set the data limits displayed on each axis. + +The following code moves the visible plot area to the right: + +.. code-block:: python + + xmin, xmax = plot.getGraphXLimits() + offset = 0.1 * (xmax - xmin) + plot.setGraphXLimits(xmin + offset, xmax + offset) + +:meth:`.PlotWidget.resetZoom` set the plot limits to the bounds of the data: + +.. code-block:: python + + plot.resetZoom() + +See :meth:`.PlotWidget.resetZoom`, :meth:`.PlotWidget.setLimits`, :meth:`.PlotWidget.getGraphXLimits`, :meth:`.PlotWidget.setGraphXLimits`, :meth:`.PlotWidget.getGraphYLimits`, :meth:`.PlotWidget.setGraphYLimits` for details. + + +Axes +++++ + +Different methods allow plot axes modifications: + +.. code-block:: python + + plot.setYAxisInverted(True) # Makes the Y axis pointing downward + plot.setKeepDataAspectRatio(True) # To keep aspect ratio between X and Y axes + +See :meth:`.PlotWidget.setYAxisInverted`, :meth:`.PlotWidget.setKeepDataAspectRatio` for details. + +.. code-block:: python + + plot.setGraphGrid(which='both') # To show a grid for both minor and major axes ticks + + # Use logarithmic axes + plot.setXAxisLogarithmic(True) + plot.setYAxisLogarithmic(True) + +See :meth:`.PlotWidget.setGraphGrid`, :meth:`.PlotWidget.setXAxisLogarithmic`, :meth:`.PlotWidget.setYAxisLogarithmic` for details. diff --git a/doc/source/modules/gui/plot/imageview.rst b/doc/source/modules/gui/plot/imageview.rst new file mode 100644 index 0000000..c2663c7 --- /dev/null +++ b/doc/source/modules/gui/plot/imageview.rst @@ -0,0 +1,15 @@ + +.. currentmodule:: silx.gui.plot + +:mod:`ImageView`: Plot an image with side histograms +==================================================== + +.. automodule:: silx.gui.plot.ImageView + +.. currentmodule:: silx.gui.plot.ImageView + +:class:`ImageView` class +------------------------ + +.. autoclass:: ImageView + :members: valueChanged, profile, setImage, getColormap, setColormap, getHistogram, setGraphTitle, setGraphXLabel, setGraphYLabel diff --git a/doc/source/modules/gui/plot/img/ImageView.png b/doc/source/modules/gui/plot/img/ImageView.png new file mode 100644 index 0000000..170466c Binary files /dev/null and b/doc/source/modules/gui/plot/img/ImageView.png differ diff --git a/doc/source/modules/gui/plot/img/LimitsToolBar.png b/doc/source/modules/gui/plot/img/LimitsToolBar.png new file mode 100644 index 0000000..99af8bd Binary files /dev/null and b/doc/source/modules/gui/plot/img/LimitsToolBar.png differ diff --git a/doc/source/modules/gui/plot/img/Plot1D.png b/doc/source/modules/gui/plot/img/Plot1D.png new file mode 100644 index 0000000..9417d77 Binary files /dev/null and b/doc/source/modules/gui/plot/img/Plot1D.png differ diff --git a/doc/source/modules/gui/plot/img/Plot2D.png b/doc/source/modules/gui/plot/img/Plot2D.png new file mode 100644 index 0000000..e00de28 Binary files /dev/null and b/doc/source/modules/gui/plot/img/Plot2D.png differ diff --git a/doc/source/modules/gui/plot/img/PlotWidget.png b/doc/source/modules/gui/plot/img/PlotWidget.png new file mode 100644 index 0000000..2ecc73f Binary files /dev/null and b/doc/source/modules/gui/plot/img/PlotWidget.png differ diff --git a/doc/source/modules/gui/plot/img/PlotWindow.png b/doc/source/modules/gui/plot/img/PlotWindow.png new file mode 100644 index 0000000..86acc52 Binary files /dev/null and b/doc/source/modules/gui/plot/img/PlotWindow.png differ diff --git a/doc/source/modules/gui/plot/img/PositionInfo.png b/doc/source/modules/gui/plot/img/PositionInfo.png new file mode 100644 index 0000000..5572f53 Binary files /dev/null and b/doc/source/modules/gui/plot/img/PositionInfo.png differ diff --git a/doc/source/modules/gui/plot/img/StackView.png b/doc/source/modules/gui/plot/img/StackView.png new file mode 100644 index 0000000..4ed2a68 Binary files /dev/null and b/doc/source/modules/gui/plot/img/StackView.png differ diff --git a/doc/source/modules/gui/plot/img/StackViewMainWindow.png b/doc/source/modules/gui/plot/img/StackViewMainWindow.png new file mode 100644 index 0000000..e1e900a Binary files /dev/null and b/doc/source/modules/gui/plot/img/StackViewMainWindow.png differ diff --git a/doc/source/modules/gui/plot/img/colorScale.png b/doc/source/modules/gui/plot/img/colorScale.png new file mode 100644 index 0000000..162ce3f Binary files /dev/null and b/doc/source/modules/gui/plot/img/colorScale.png differ diff --git a/doc/source/modules/gui/plot/img/colorScaleBar.png b/doc/source/modules/gui/plot/img/colorScaleBar.png new file mode 100644 index 0000000..e57ce0b Binary files /dev/null and b/doc/source/modules/gui/plot/img/colorScaleBar.png differ diff --git a/doc/source/modules/gui/plot/img/fftAction0.png b/doc/source/modules/gui/plot/img/fftAction0.png new file mode 100644 index 0000000..5bd8061 Binary files /dev/null and b/doc/source/modules/gui/plot/img/fftAction0.png differ diff --git a/doc/source/modules/gui/plot/img/fftAction1.png b/doc/source/modules/gui/plot/img/fftAction1.png new file mode 100644 index 0000000..e4b20d7 Binary files /dev/null and b/doc/source/modules/gui/plot/img/fftAction1.png differ diff --git a/doc/source/modules/gui/plot/img/linearColorbar.png b/doc/source/modules/gui/plot/img/linearColorbar.png new file mode 100644 index 0000000..26621ce Binary files /dev/null and b/doc/source/modules/gui/plot/img/linearColorbar.png differ diff --git a/doc/source/modules/gui/plot/img/logColorbar.png b/doc/source/modules/gui/plot/img/logColorbar.png new file mode 100644 index 0000000..cdd247c Binary files /dev/null and b/doc/source/modules/gui/plot/img/logColorbar.png differ diff --git a/doc/source/modules/gui/plot/img/netCounts.png b/doc/source/modules/gui/plot/img/netCounts.png new file mode 100644 index 0000000..f987d1f Binary files /dev/null and b/doc/source/modules/gui/plot/img/netCounts.png differ diff --git a/doc/source/modules/gui/plot/img/plot_and_backend.png b/doc/source/modules/gui/plot/img/plot_and_backend.png new file mode 100644 index 0000000..6c36c4f Binary files /dev/null and b/doc/source/modules/gui/plot/img/plot_and_backend.png differ diff --git a/doc/source/modules/gui/plot/img/rawCounts.png b/doc/source/modules/gui/plot/img/rawCounts.png new file mode 100644 index 0000000..fa36b8e Binary files /dev/null and b/doc/source/modules/gui/plot/img/rawCounts.png differ diff --git a/doc/source/modules/gui/plot/img/roiwidget.png b/doc/source/modules/gui/plot/img/roiwidget.png new file mode 100644 index 0000000..35ef7f1 Binary files /dev/null and b/doc/source/modules/gui/plot/img/roiwidget.png differ diff --git a/doc/source/modules/gui/plot/img/shiftAction0.png b/doc/source/modules/gui/plot/img/shiftAction0.png new file mode 100644 index 0000000..2d5837a Binary files /dev/null and b/doc/source/modules/gui/plot/img/shiftAction0.png differ diff --git a/doc/source/modules/gui/plot/img/shiftAction3.png b/doc/source/modules/gui/plot/img/shiftAction3.png new file mode 100644 index 0000000..a2187b8 Binary files /dev/null and b/doc/source/modules/gui/plot/img/shiftAction3.png differ diff --git a/doc/source/modules/gui/plot/img/tickbar.png b/doc/source/modules/gui/plot/img/tickbar.png new file mode 100644 index 0000000..214fec7 Binary files /dev/null and b/doc/source/modules/gui/plot/img/tickbar.png differ diff --git a/doc/source/modules/gui/plot/index.rst b/doc/source/modules/gui/plot/index.rst new file mode 100644 index 0000000..143b85b --- /dev/null +++ b/doc/source/modules/gui/plot/index.rst @@ -0,0 +1,130 @@ + +.. currentmodule:: silx.gui + +:mod:`plot`: 1D and 2D Plot widgets +=================================== + +.. toctree:: + :hidden: + + getting_started.rst + +.. currentmodule:: silx.gui.plot + +.. automodule:: silx.gui.plot + +For an introduction to the widgets of this package, see :doc:`getting_started`. + +For examples of custom plot actions, see :doc:`plotactions_examples`. + +Widgets gallery +--------------- + +The :mod:`silx.gui.plot` package provides the following plotting widgets: + +.. |imgPlotWidget| image:: img/PlotWidget.png + :height: 150px + :align: middle + +.. |imgPlotWindow| image:: img/PlotWindow.png + :height: 150px + :align: middle + +.. |imgPlot1D| image:: img/Plot1D.png + :height: 150px + :align: middle + +.. |imgPlot2D| image:: img/Plot2D.png + :height: 150px + :align: middle + +.. |imgImageView| image:: img/ImageView.png + :height: 150px + :align: middle + +.. |imgStackView| image:: img/StackView.png + :height: 150px + :align: middle + +.. list-table:: + :widths: 1 4 + :header-rows: 1 + + * - Widget + - Description + * - |imgPlotWidget| + - :class:`PlotWidget` is the base Qt widget providing a plot area. + Other plot widgets are based on this one and provides the same API. + * - |imgPlotWindow| + - :class:`PlotWindow` adds a toolbar to :class:`PlotWidget`. + The content of this toolbar can be configured from the + :class:`PlotWindow` constructor or by hiding its content afterward. + * - |imgPlot1D| + - :class:`.Plot1D` is a :class:`PlotWindow` configured with tools useful + for curves. + * - |imgPlot2D| + - :class:`.Plot2D` is a :class:`PlotWindow` configured with tools useful + for images. + * - |imgImageView| + - :class:`ImageView` adds side histograms to a :class:`.Plot2D` widget. + * - |imgStackView| + - :class:`StackView` is a widget designed to display an image from a + stack of images in a :class:`PlotWindow` widget, with a frame browser + to navigate in the stack. The profile tool can do a 2D profile on the + stack of images. + +It also provides (and uses) widgets that can be attached to a :class:`PlotWidget`: + +.. |imgPositionInfo| image:: img/PositionInfo.png + :width: 300px + :align: middle + +.. |imgLimitsToolBar| image:: img/LimitsToolBar.png + :width: 300px + :align: middle + +.. |imgColorbar| image:: img/logColorbar.png + :height: 150px + :align: middle + + +.. list-table:: + :widths: 1 4 + :header-rows: 1 + + * - Widget + - Description + * - |imgPositionInfo| + - :class:`.PlotTools.PositionInfo` is a widget displaying mouse position and + information of a :class:`PlotWidget` associated to the mouse position. + * - |imgLimitsToolBar| + - :class:`.PlotTools.LimitsToolBar` is a QToolBar displaying and + controlling the limits of a :class:`PlotWidget`. + * - |imgColorbar| + - :class:`.ColorBar.ColorBarWidget` display colormap gradient and can be linked with a plot + to display the colormap + +Public modules +-------------- + +.. toctree:: + :maxdepth: 2 + + plotwidget.rst + plotwindow.rst + imageview.rst + stackview.rst + plot.rst + items.rst + plotactions.rst + plottools.rst + profile.rst + roi.rst + +Internals +--------- + +.. toctree:: + :maxdepth: 2 + + dev.rst diff --git a/doc/source/modules/gui/plot/items.rst b/doc/source/modules/gui/plot/items.rst new file mode 100644 index 0000000..beba3a1 --- /dev/null +++ b/doc/source/modules/gui/plot/items.rst @@ -0,0 +1,63 @@ + +.. currentmodule:: silx.gui.plot + +:mod:`items`: Plot primitives +============================= + +.. automodule:: silx.gui.plot.items + +.. currentmodule:: silx.gui.plot.items + +Curve +----- + +.. autoclass:: Curve + :members: + :inherited-members: + +Images +------ + +.. autoclass:: ImageData + :members: + :inherited-members: + +.. autoclass:: ImageRgba + :members: + :inherited-members: + +Scatter +------- + +.. autoclass:: Scatter + :members: + :inherited-members: + +Histogram +--------- + +.. autoclass:: Histogram + :members: + :inherited-members: + +Markers +------- + +.. autoclass:: Marker + :members: + :inherited-members: + +.. autoclass:: XMarker + :members: + :inherited-members: + +.. autoclass:: YMarker + :members: + :inherited-members: + +Item +---- + +.. autoclass:: Shape + :members: + :inherited-members: diff --git a/doc/source/modules/gui/plot/plot.rst b/doc/source/modules/gui/plot/plot.rst new file mode 100644 index 0000000..2b8e096 --- /dev/null +++ b/doc/source/modules/gui/plot/plot.rst @@ -0,0 +1,16 @@ + +.. currentmodule:: silx.gui.plot + +:mod:`Plot`: Full plot API +========================== + +.. automodule:: silx.gui.plot.Plot + +.. currentmodule:: silx.gui.plot.Plot + +:class:`Plot` class +------------------- + +.. autoclass:: Plot + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot/plotactions.rst b/doc/source/modules/gui/plot/plotactions.rst new file mode 100644 index 0000000..29a3656 --- /dev/null +++ b/doc/source/modules/gui/plot/plotactions.rst @@ -0,0 +1,20 @@ + +.. currentmodule:: silx.gui.plot + +:mod:`PlotActions`: Actions for PlotWidget +=========================================== + +.. currentmodule:: silx.gui.plot.PlotActions + +The :class:`PlotAction` is a base class used to define plot actions. + +Plot actions serve to add menu items or toolbar items that are associated with a method +that can interact with the associated :class:`PlotWidget`. + +For an introduction to creating custom plot actions, see :doc:`plotactions_examples`. + +PlotActions API +--------------- + +.. automodule:: silx.gui.plot.PlotActions + :members: diff --git a/doc/source/modules/gui/plot/plotactions_examples.rst b/doc/source/modules/gui/plot/plotactions_examples.rst new file mode 100644 index 0000000..f14a42a --- /dev/null +++ b/doc/source/modules/gui/plot/plotactions_examples.rst @@ -0,0 +1,93 @@ +.. currentmodule:: silx.gui + +Adding custom plot actions +========================== + +A :class:`PlotWindow` defines a number of standard plot actions that can be executed +by clicking on toolbar icons. + +Developers can design additional plot actions to be added as toolbar icons or as menu entries, +to be added to a :class:`PlotWindow` or to design their own plot window based on +:class:`PlotWidget`. + +This documentation pages provides examples on how to do this. + +Simple example: Shift a curve +----------------------------- + +The following script is a simplistic example to show the basic required steps: + + - create a new class inheriting from :class:`silx.gui.plot.PlotActions.PlotAction` + - define basic parameters such as the icon, the tooltip... + - write a method that will be triggered by the action + - initialize the new plot action by passing a reference to a plot window + - add the action to a toolbar or a menu + +The method implemented in this action interacts with the plot in a basic way. It gets the active curve, +then it creates a new data array based on the curve data, and finally it replaces the original curve +with a new one using the modified data array. + +.. literalinclude:: ../../../../../examples/shiftPlotAction.py + :lines: 36- + +.. |imgShiftAction0| image:: img/shiftAction0.png + :height: 300px + :align: middle + +.. |imgShiftAction3| image:: img/shiftAction3.png + :height: 300px + :align: middle + +.. list-table:: + :widths: 1 2 + + * - |imgShiftAction0| + - Initial state + * - |imgShiftAction3| + - After triggering the action 3 times, the selected triangle shaped curve + is shifted up by 3 units + +Advanced example: Display amplitude spectrum +-------------------------------------------- + +This more advanced example shows additional ways of interacting with the plot, by changing +labels, storing additional data array along with the curve data. + +This action is *checkable*, meaning that is has two states. When clicking the toolbar icon +or the menu item, it remains in a *pushed* state until it is clicked again. + +In one state (*un-checked*), the original data is displayed. In the other state, the amplitude +spectrum of the original signal is displayed. When the state is changed, the triggered action +computes either the Fast Fourier Transform (FFT), or the reverse FFT. + +This example also illustrates how to store additional data, along with a curve. +The FFT computation returns complex values, but we want to display real data, so we compute +the amplitude spectrum. However, the inverse FFT requires the complete FFT data as input. +We are therefore required to store the complex array of FFT data as curve metadata, +in order to be able to reverse the process when the action is unchecked. + +.. literalinclude:: ../../../../../examples/fftPlotAction.py + :lines: 44- + +.. |imgFftAction0| image:: img/fftAction0.png + :height: 300px + :align: middle + +.. |imgFftAction1| image:: img/fftAction1.png + :height: 300px + :align: middle + +.. list-table:: + :widths: 1 2 + + * - |imgFftAction0| + - Original signals (zoom applied). In red, a cosine wave at 7 Hz. + In black, a sum of sines with frequencies of 3, 20 and 42 Hz. + In green, a square wave with a fundamental frequency of 0.5 Hz + (wavelength of 2 seconds). + * - |imgFftAction1| + - Amplitude spectra (zoom applied), with peaks visible at + the expected frequencies of 3, 7, 20 and 42 Hz for the sine and cosine + signals. In green, we see the complete series of peaks related to the square wave, + with a fundamental frequency at 0.5 Hz and harmonic frequencies at every + odd multiple of the fundamental. diff --git a/doc/source/modules/gui/plot/plottools.rst b/doc/source/modules/gui/plot/plottools.rst new file mode 100644 index 0000000..4cf8f88 --- /dev/null +++ b/doc/source/modules/gui/plot/plottools.rst @@ -0,0 +1,36 @@ +:mod:`PlotTools`: Tool widgets for PlotWidget +============================================= + +.. currentmodule:: silx.gui.plot.PlotTools + +.. automodule:: silx.gui.plot.PlotTools + +:class:`PositionInfo` class +--------------------------- + +.. autoclass:: PositionInfo + :show-inheritance: + :members: + +:class:`LimitsToolBar` class +---------------------------- + +.. autoclass:: LimitsToolBar + :show-inheritance: + :members: + + +.. currentmodule:: silx.gui.plot + +:mod:`ColorBar`: ColorBar Widget +================================ + +.. currentmodule:: silx.gui.plot.ColorBar + +.. automodule:: silx.gui.plot.ColorBar + +:class:`ColorBarWidget` class +----------------------------- + +.. autoclass:: ColorBarWidget + :members: diff --git a/doc/source/modules/gui/plot/plotwidget.rst b/doc/source/modules/gui/plot/plotwidget.rst new file mode 100644 index 0000000..df576fc --- /dev/null +++ b/doc/source/modules/gui/plot/plotwidget.rst @@ -0,0 +1,173 @@ + +.. currentmodule:: silx.gui.plot + +:mod:`PlotWidget`: Base class for plotting widgets +================================================== + +.. module:: silx.gui.plot.PlotWidget + +.. currentmodule:: silx.gui.plot.PlotWidget + +The :class:`PlotWidget` is a Qt widget providing the plot API initially +provided in `PyMca `_. +It is the basis of other plot widget, thus all plot widgets share the same API. + +For an introduction and examples of the plot API, see :doc:`getting_started`. + +Plot API +-------- + +.. currentmodule:: silx.gui.plot.Plot + +This is a choosen subset of the complete plot API, the full API is +documented in :class:`silx.gui.plot.Plot`. + +.. currentmodule:: silx.gui.plot.PlotWidget + +.. autoclass:: PlotWidget + :show-inheritance: + +Plot data +......... + +Those methods allow to add and update plotted data: + +.. automethod:: PlotWidget.addCurve +.. automethod:: PlotWidget.addImage +.. automethod:: PlotWidget.addScatter +.. automethod:: PlotWidget.addHistogram + +Plot markers +............ + +It is also possible to add point or line markers to the plot: + +.. automethod:: PlotWidget.addMarker +.. automethod:: PlotWidget.addXMarker +.. automethod:: PlotWidget.addYMarker + +Remove data from the plot +......................... + +.. automethod:: PlotWidget.clear +.. automethod:: PlotWidget.remove + +Title and labels +................ + +Those methods handle the text labels of the axes and the plot title: + +.. automethod:: PlotWidget.getGraphTitle +.. automethod:: PlotWidget.setGraphTitle +.. automethod:: PlotWidget.getGraphXLabel +.. automethod:: PlotWidget.setGraphXLabel +.. automethod:: PlotWidget.getGraphYLabel +.. automethod:: PlotWidget.setGraphYLabel + +Axes limits +........... + +Those methods change the range of data values displayed on each axis. + +.. automethod:: PlotWidget.getGraphXLimits +.. automethod:: PlotWidget.setGraphXLimits +.. automethod:: PlotWidget.getGraphYLimits +.. automethod:: PlotWidget.setGraphYLimits +.. automethod:: PlotWidget.setLimits + +Axes +.... + +The following methods handle the display properties of the axes: + +.. automethod:: PlotWidget.isXAxisLogarithmic +.. automethod:: PlotWidget.setXAxisLogarithmic +.. automethod:: PlotWidget.isYAxisLogarithmic +.. automethod:: PlotWidget.setYAxisLogarithmic + +.. automethod:: PlotWidget.isYAxisInverted +.. automethod:: PlotWidget.setYAxisInverted +.. automethod:: PlotWidget.isKeepDataAspectRatio +.. automethod:: PlotWidget.setKeepDataAspectRatio +.. automethod:: PlotWidget.getGraphGrid +.. automethod:: PlotWidget.setGraphGrid + +Reset zoom +.......... + +.. automethod:: PlotWidget.resetZoom + +Those methods change the behavior of :meth:`PlotWidget.resetZoom`. + +.. automethod:: PlotWidget.getDataMargins +.. automethod:: PlotWidget.setDataMargins +.. automethod:: PlotWidget.isXAxisAutoScale +.. automethod:: PlotWidget.setXAxisAutoScale +.. automethod:: PlotWidget.isYAxisAutoScale +.. automethod:: PlotWidget.setYAxisAutoScale + +Defaults +........ + +Those methods set-up default values for :meth:`PlotWidget.addCurve` and +:meth:`PlotWidget.addImage`: + +.. automethod:: PlotWidget.getDefaultColormap +.. automethod:: PlotWidget.setDefaultColormap +.. automethod:: PlotWidget.getSupportedColormaps +.. automethod:: PlotWidget.setDefaultPlotPoints +.. automethod:: PlotWidget.setDefaultPlotLines + +Interaction +........... + +Those methods allow to change the interaction mode (e.g., drawing mode) +of the plot and to toggle the use of a crosshair cursor: + +.. automethod:: PlotWidget.getInteractiveMode +.. automethod:: PlotWidget.setInteractiveMode + +.. automethod:: PlotWidget.getGraphCursor +.. automethod:: PlotWidget.setGraphCursor + +Misc. +..... + +.. automethod:: PlotWidget.saveGraph + +Signals +....... + +The :class:`PlotWidget` provides the following Qt signals: + +.. autoattribute:: PlotWidget.sigPlotSignal +.. autoattribute:: PlotWidget.sigSetYAxisInverted +.. autoattribute:: PlotWidget.sigSetXAxisLogarithmic +.. autoattribute:: PlotWidget.sigSetYAxisLogarithmic +.. autoattribute:: PlotWidget.sigSetXAxisAutoScale +.. autoattribute:: PlotWidget.sigSetYAxisAutoScale +.. autoattribute:: PlotWidget.sigSetKeepDataAspectRatio +.. autoattribute:: PlotWidget.sigSetGraphGrid +.. autoattribute:: PlotWidget.sigSetGraphCursor +.. autoattribute:: PlotWidget.sigSetPanWithArrowKeys +.. autoattribute:: PlotWidget.sigContentChanged +.. autoattribute:: PlotWidget.sigActiveCurveChanged +.. autoattribute:: PlotWidget.sigActiveImageChanged +.. autoattribute:: PlotWidget.sigInteractiveModeChanged + +.. Not documented: + addItem, removeItem, clearItems + isActiveCurveHandling, enableActiveCurveHandling, + getActiveCurveColor, setActiveCurveColor, + getActiveCurve, setActiveCurve, + isCurveHidden, hideCurve, + getActiveImage, setActiveImage, + getAllCurves, getCurve, getImage, getAllImages, + getScatter, getHistogram, + setDefaultPlotPoints, setDefaultPlotLines, + getWidgetHandle, notify, setCallback, graphCallback, + dataToPixel, pixelToData, getPlotBoundsInPixels, + setGraphCursorShape, pickMarker, moveMarker, pickImageOrCurve, moveImage, + onMousePress, onMouseMove, onMouseRelease, onMouseWheel, + isDrawModeEnabled, setDrawModeEnabled, getDrawMode, + isZoomModeEnabled, setZoomModeEnabled, diff --git a/doc/source/modules/gui/plot/plotwindow.rst b/doc/source/modules/gui/plot/plotwindow.rst new file mode 100644 index 0000000..1447403 --- /dev/null +++ b/doc/source/modules/gui/plot/plotwindow.rst @@ -0,0 +1,30 @@ + +.. currentmodule:: silx.gui.plot + +:mod:`PlotWindow`: Plot widget with toolbar +=========================================== + +.. automodule:: silx.gui.plot.PlotWindow + +.. currentmodule:: silx.gui.plot.PlotWindow + +:class:`PlotWindow` class +------------------------- + +.. autoclass:: PlotWindow + :show-inheritance: + :members: + +:class:`Plot1D`: Plot curves +---------------------------- + +.. autoclass:: Plot1D + :show-inheritance: + :members: + +:class:`Plot2D`: Plot images +---------------------------- + +.. autoclass:: Plot2D + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot/profile.rst b/doc/source/modules/gui/plot/profile.rst new file mode 100644 index 0000000..56530f3 --- /dev/null +++ b/doc/source/modules/gui/plot/profile.rst @@ -0,0 +1,20 @@ +:mod:`Profile`: Toolbars with profile tools +=========================================== + +.. currentmodule:: silx.gui.plot.Profile + +.. automodule:: silx.gui.plot.Profile + +:class:`ProfileToolBar` class +----------------------------- + +.. autoclass:: ProfileToolBar + :show-inheritance: + :members: + +:class:`Profile3DToolBar` class +------------------------------- + +.. autoclass:: Profile3DToolBar + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot/roi.rst b/doc/source/modules/gui/plot/roi.rst new file mode 100644 index 0000000..77b5c2a --- /dev/null +++ b/doc/source/modules/gui/plot/roi.rst @@ -0,0 +1,17 @@ +.. currentmodule:: silx.gui.plot + +:mod:`CurvesROIWidget`: ROI from curves +======================================= + +.. |roiWidgetImage| image:: img/roiwidget.png + :height: 400px + :align: middle + +You can access to the ROIWidget from a Plot window by : + +- using the tool button 'ROI' +- using the options button then by selecting region of interest. + +|roiWidgetImage| + +.. automodule:: silx.gui.plot.CurvesROIWidget diff --git a/doc/source/modules/gui/plot/stackview.rst b/doc/source/modules/gui/plot/stackview.rst new file mode 100644 index 0000000..7f2442a --- /dev/null +++ b/doc/source/modules/gui/plot/stackview.rst @@ -0,0 +1,24 @@ + +.. currentmodule:: silx.gui.plot + +:mod:`StackView`: Plot a stack of images +========================================= + +.. automodule:: silx.gui.plot.StackView + +.. currentmodule:: silx.gui.plot.StackView + +:class:`StackView` class +------------------------ + +.. autoclass:: StackView + :members: + :exclude-members: remove, setInteractiveMode, addItem + +:class:`StackViewMainWindow` class +---------------------------------- + +.. autoclass:: StackViewMainWindow + :show-inheritance: + :members: + diff --git a/doc/source/modules/gui/plot3d/actions.rst b/doc/source/modules/gui/plot3d/actions.rst new file mode 100644 index 0000000..a2fde68 --- /dev/null +++ b/doc/source/modules/gui/plot3d/actions.rst @@ -0,0 +1,10 @@ +Actions +======= + +:mod:`Plot3DActions` +-------------------- + +.. currentmodule:: silx.gui.plot3d.Plot3DActions + +.. automodule:: silx.gui.plot3d.Plot3DActions + :members: diff --git a/doc/source/modules/gui/plot3d/dev.rst b/doc/source/modules/gui/plot3d/dev.rst new file mode 100644 index 0000000..757240e --- /dev/null +++ b/doc/source/modules/gui/plot3d/dev.rst @@ -0,0 +1,38 @@ +Package structure +================= + +The :mod:`silx.gui.plot3d` package provides 3D visualisation widgets. +This package is structured as follows. + +.. currentmodule:: silx.gui.plot3d + +Widget-level API +---------------- + +Widgets are available as modules of the :mod:`silx.gui.plot3d` packages. + +The :mod:`.Plot3DWidget` module provides the OpenGL canvas where the scene is rendered. +The :mod:`.Plot3DWindow` module provides a :class:`QMainWindow` with a :class:`Plot3DWindow` as its central widget +and toolbars: :class:`ViewpointToolBar` and :class:`Plot3DToolBar`. +:class:`QAction` that can be associated with a :class:`Plot3DWidget` are defined in the :mod:`.Plot3DActions` module. +Those actions are used by the :class:`Plot3DToolBar` toolbar. + +The :mod:`.ScalarFieldView` module defines the :class:`ScalarFieldView` widget that displays iso-surfaces of a 3D scalar data set and the associated classes. +The :mod:`.SFViewParamTree` module defines a :class:`SFViewParamTree.TreeView` widget that can be attached to a :class:`ScalarFieldView` to control the display. + +OpenGL scene API +---------------- + +This API is NOT stable. +Widgets of :mod:`silx.gui.plot3d` are based on the following sub-packages: + +- :mod:`.scene`: Provides a hierarchical scene structure handling rendering and interaction. +- :mod:`.utils`: Miscellaneous supporting modules. +- :mod:`silx.gui._glutils`: Loads PyOpenGL and provides classes to handle OpenGL resources. + +.. toctree:: + :maxdepth: 2 + + scene.rst + utils.rst + glutils.rst diff --git a/doc/source/modules/gui/plot3d/glutils.rst b/doc/source/modules/gui/plot3d/glutils.rst new file mode 100644 index 0000000..2c36e83 --- /dev/null +++ b/doc/source/modules/gui/plot3d/glutils.rst @@ -0,0 +1,67 @@ +:mod:`_glutils` +=============== + +.. automodule:: silx.gui._glutils + + +:mod:`_glutils.gl` +------------------ + +.. automodule:: silx.gui._glutils.gl + :members: + +Utility functions +----------------- + +.. currentmodule:: silx.gui._glutils + +For OpenGL context management: + +.. autofunction:: getGLContext + +.. autofunction:: setGLContextGetter + +For type checking and conversion: + +.. autofunction:: sizeofGLType + +.. autofunction:: isSupportedGLType + +.. autofunction:: numpyToGLType + +:class:`Program` +---------------- + +.. autoclass:: Program + :members: + +:class:`Texture` +---------------- + +.. autoclass:: Texture + :members: + +:class:`FramebufferTexture` +--------------------------- + +.. autoclass:: FramebufferTexture + :members: + +Vertex Buffer +------------- + +.. autoclass:: VertexBuffer + :members: + +.. autoclass:: VertexBufferAttrib + :members: + +.. autofunction:: vertexBuffer + +:mod:`font` +----------- + +.. currentmodule:: silx.gui._glutils.font + +.. automodule:: silx.gui._glutils.font + :members: diff --git a/doc/source/modules/gui/plot3d/img/Plot3DWidget.png b/doc/source/modules/gui/plot3d/img/Plot3DWidget.png new file mode 100644 index 0000000..d39e4db Binary files /dev/null and b/doc/source/modules/gui/plot3d/img/Plot3DWidget.png differ diff --git a/doc/source/modules/gui/plot3d/img/Plot3DWindow.png b/doc/source/modules/gui/plot3d/img/Plot3DWindow.png new file mode 100644 index 0000000..0e562f5 Binary files /dev/null and b/doc/source/modules/gui/plot3d/img/Plot3DWindow.png differ diff --git a/doc/source/modules/gui/plot3d/img/SFViewParamTree.png b/doc/source/modules/gui/plot3d/img/SFViewParamTree.png new file mode 100644 index 0000000..1b44ed9 Binary files /dev/null and b/doc/source/modules/gui/plot3d/img/SFViewParamTree.png differ diff --git a/doc/source/modules/gui/plot3d/img/ScalarFieldView.png b/doc/source/modules/gui/plot3d/img/ScalarFieldView.png new file mode 100644 index 0000000..f40fdac Binary files /dev/null and b/doc/source/modules/gui/plot3d/img/ScalarFieldView.png differ diff --git a/doc/source/modules/gui/plot3d/index.rst b/doc/source/modules/gui/plot3d/index.rst new file mode 100644 index 0000000..8941403 --- /dev/null +++ b/doc/source/modules/gui/plot3d/index.rst @@ -0,0 +1,83 @@ + +.. currentmodule:: silx.gui + +:mod:`plot3d`: 3D Visualisation widgets +======================================= + +.. currentmodule:: silx.gui.plot3d + +.. automodule:: silx.gui.plot3d + +Widgets gallery +--------------- + +.. |imgPlot3DWidget| image:: img/Plot3DWidget.png + :height: 150px + :align: middle + +.. |imgPlot3DWindow| image:: img/Plot3DWindow.png + :height: 150px + :align: middle + +.. |imgScalarFieldView| image:: img/ScalarFieldView.png + :height: 150px + :align: middle + +.. |imgSFViewParamTree| image:: img/SFViewParamTree.png + :height: 150px + :align: middle + +.. list-table:: + :widths: 1 4 + :header-rows: 1 + + * - Widget + - Description + * - |imgScalarFieldView| + - :class:`ScalarFieldView` is a :class:`Plot3DWindow` dedicated to display 3D scalar field. + It can display iso-surfaces and an interactive cutting plane. + Sample code: :doc:`viewer3dvolume_example`. + * - |imgPlot3DWindow| + - :class:`Plot3DWindow` is a :class:`QMainWindow` with a :class:`Plot3DWidget` as central widget + and toolbars. + * - |imgPlot3DWidget| + - :class:`Plot3DWidget` is the base Qt widget providing an OpenGL 3D scene. + Other widgets are using this widget as the OpenGL scene canvas. + * - |imgSFViewParamTree| + - :class:`SFViewParamTree` is a :class:`QTreeView` widget that can be attached to a :class:`ScalarFieldView`. + It displays current parameters of the :class:`ScalarFieldView` and allows to modify it. + Sample code: :doc:`viewer3dvolume_example`. + +Public modules +-------------- + +The following sub-modules are available: + +.. toctree:: + :maxdepth: 2 + + plot3dwidget.rst + plot3dwindow.rst + scalarfieldview.rst + sfviewparamtree.rst + toolbars.rst + actions.rst + + +Sample code +----------- + +- :doc:`viewer3dvolume_example`: Sample code using :class:`ScalarFieldView` + +Internals +--------- + +.. toctree:: + :maxdepth: 2 + + dev.rst + +.. toctree:: + :hidden: + + viewer3dvolume_example.rst diff --git a/doc/source/modules/gui/plot3d/plot3dwidget.rst b/doc/source/modules/gui/plot3d/plot3dwidget.rst new file mode 100644 index 0000000..1b01eac --- /dev/null +++ b/doc/source/modules/gui/plot3d/plot3dwidget.rst @@ -0,0 +1,15 @@ +.. currentmodule:: silx.gui.plot3d + +:mod:`Plot3DWidget`: OpenGL scene widget +======================================== + +.. automodule:: silx.gui.plot3d.Plot3DWidget + +.. currentmodule:: silx.gui.plot3d.Plot3DWidget + +:class:`Plot3DWidget` +--------------------- + +.. autoclass:: Plot3DWidget + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot3d/plot3dwindow.rst b/doc/source/modules/gui/plot3d/plot3dwindow.rst new file mode 100644 index 0000000..4b4264d --- /dev/null +++ b/doc/source/modules/gui/plot3d/plot3dwindow.rst @@ -0,0 +1,15 @@ +.. currentmodule:: silx.gui.plot3d + +:mod:`Plot3DWindow`: OpenGL scene and toolbar +============================================= + +.. automodule:: silx.gui.plot3d.Plot3DWindow + +.. currentmodule:: silx.gui.plot3d.Plot3DWindow + +:class:`Plot3DWindow` +--------------------- + +.. autoclass:: Plot3DWindow + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot3d/scalarfieldview.rst b/doc/source/modules/gui/plot3d/scalarfieldview.rst new file mode 100644 index 0000000..763c18e --- /dev/null +++ b/doc/source/modules/gui/plot3d/scalarfieldview.rst @@ -0,0 +1,50 @@ +.. currentmodule:: silx.gui.plot3d + +:mod:`ScalarFieldView`: 3D volume scalar data viewer +==================================================== + +.. automodule:: silx.gui.plot3d.ScalarFieldView + +For sample code using ScalarFieldView, see :doc:`viewer3dvolume_example` + +.. currentmodule:: silx.gui.plot3d.ScalarFieldView + +:class:`ScalarFieldView` +------------------------ + +.. autoclass:: ScalarFieldView + :show-inheritance: + :members: + +Helper classes +-------------- + +Those classes are used by :class:`ScalarFieldView`. + +:class:`Colormap` ++++++++++++++++++ + +.. autoclass:: Colormap + :show-inheritance: + :members: + +:class:`CutPlane` ++++++++++++++++++ + +.. autoclass:: CutPlane + :show-inheritance: + :members: + +:class:`IsoSurface` ++++++++++++++++++++ + +.. autoclass:: Isosurface + :show-inheritance: + :members: + +:class:`SelectedRegion` ++++++++++++++++++++++++ + +.. autoclass:: SelectedRegion + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot3d/scene.rst b/doc/source/modules/gui/plot3d/scene.rst new file mode 100644 index 0000000..4f6d9c4 --- /dev/null +++ b/doc/source/modules/gui/plot3d/scene.rst @@ -0,0 +1,84 @@ +:mod:`scene` +============ + +.. currentmodule:: silx.gui.plot3d.scene + +.. automodule:: silx.gui.plot3d.scene + +:mod:`axes`: Bounding Box with axes ticks and labels +---------------------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.axes + :members: + +:mod:`camera`: Projection management classes +-------------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.camera + :members: + +:mod:`core`: Base class of the scene nodes +------------------------------------------ + +.. automodule:: silx.gui.plot3d.scene.core + :members: + +:mod:`cutplane`: Cutting plane primitive +---------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.cutplane + :members: + +:mod:`event`: Scene event system +-------------------------------- + +.. automodule:: silx.gui.plot3d.scene.event + :members: + +:mod:`function`: OpenGL shader functions +---------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.function + :members: + +:mod:`interaction`: User interaction implementation +--------------------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.interaction + :members: + +:mod:`primitives`: Base rendering primitives +-------------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.primitives + :members: + +:mod:`text`: Text field rendering primitives +-------------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.text + :members: + +:mod:`transform`: Transformation matrix system +---------------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.transform + :members: + +:mod:`utils`: Miscellaneous +--------------------------- + +.. automodule:: silx.gui.plot3d.scene.utils + :members: + +:mod:`viewport`: Root of a scene tree +------------------------------------- + +.. automodule:: silx.gui.plot3d.scene.viewport + :members: + +:mod:`window`: On-screen window +------------------------------- + +.. automodule:: silx.gui.plot3d.scene.window + :members: diff --git a/doc/source/modules/gui/plot3d/sfviewparamtree.rst b/doc/source/modules/gui/plot3d/sfviewparamtree.rst new file mode 100644 index 0000000..bfb4052 --- /dev/null +++ b/doc/source/modules/gui/plot3d/sfviewparamtree.rst @@ -0,0 +1,13 @@ +:mod:`SFViewParamTree`: :class:`ScalarFieldView` parameters widget +================================================================== + +.. currentmodule:: silx.gui.plot3d.SFViewParamTree + +.. automodule:: silx.gui.plot3d.SFViewParamTree + +:class:`TreeView` +----------------- + +.. autoclass:: TreeView + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot3d/toolbars.rst b/doc/source/modules/gui/plot3d/toolbars.rst new file mode 100644 index 0000000..df4b4ef --- /dev/null +++ b/doc/source/modules/gui/plot3d/toolbars.rst @@ -0,0 +1,29 @@ +Toolbars +======== + + +:mod:`ViewpointToolbar` +----------------------- + +.. currentmodule:: silx.gui.plot3d.ViewpointToolBar + +.. automodule:: silx.gui.plot3d.ViewpointToolBar + +.. autoclass:: ViewpointActionGroup + :show-inheritance: + :members: + +.. autoclass:: ViewpointToolBar + :show-inheritance: + :members: + +:mod:`Plot3DToolbar` +-------------------- + +.. currentmodule:: silx.gui.plot3d.Plot3DToolBar + +.. automodule:: silx.gui.plot3d.Plot3DToolBar + +.. autoclass:: Plot3DToolBar + :show-inheritance: + :members: diff --git a/doc/source/modules/gui/plot3d/utils.rst b/doc/source/modules/gui/plot3d/utils.rst new file mode 100644 index 0000000..fcd5426 --- /dev/null +++ b/doc/source/modules/gui/plot3d/utils.rst @@ -0,0 +1,12 @@ +:mod:`utils` +============ + +.. currentmodule:: silx.gui.plot3d.utils + +.. automodule:: silx.gui.plot3d.utils + +:mod:`mng` +---------- + +.. automodule:: silx.gui.plot3d.utils.mng + :members: diff --git a/doc/source/modules/gui/plot3d/viewer3dvolume_example.rst b/doc/source/modules/gui/plot3d/viewer3dvolume_example.rst new file mode 100644 index 0000000..5368e05 --- /dev/null +++ b/doc/source/modules/gui/plot3d/viewer3dvolume_example.rst @@ -0,0 +1,7 @@ +viewer3DVolume.py +================= + +Sample code demonstrating :mod:`silx.gui.plot3d.ScalarFieldView` widget: + +.. literalinclude:: ../../../../../examples/viewer3DVolume.py + :lines: 38- \ No newline at end of file diff --git a/doc/source/modules/gui/qt.rst b/doc/source/modules/gui/qt.rst new file mode 100644 index 0000000..bcdad13 --- /dev/null +++ b/doc/source/modules/gui/qt.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.gui + +:mod:`qt`: Qt bindings +---------------------- + +.. automodule:: silx.gui.qt + :members: BINDING diff --git a/doc/source/modules/gui/update_icons_rst.py b/doc/source/modules/gui/update_icons_rst.py new file mode 100644 index 0000000..3f6565a --- /dev/null +++ b/doc/source/modules/gui/update_icons_rst.py @@ -0,0 +1,90 @@ +# coding: utf-8 +# /*########################################################################## +# +# Copyright (c) 2016 European Synchrotron Radiation Facility +# +# 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: +# +# 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. +# +# ###########################################################################*/ +"""Script to update icons.rst file according to icons available in resources. +""" + +__authors__ = ["Thomas Vincent"] +__license__ = "MIT" +__date__ = "30/06/2016" + + +import os +import glob + + +ICONS_RST_FILENAME = os.path.join(os.path.dirname(__file__), 'icons.rst') + + +ICONS_DIR = os.path.join( + os.path.dirname(__file__), + '..', '..', '..', '..', 'silx', 'resources', 'gui', 'icons', '*.png') + + +ICONS_RST_HEADER = """ +.. AUTOMATICALLY GENERATED FILE DO NOT EDIT + Use %s script instead + +.. currentmodule:: silx.gui + +:mod:`icons`: Set of icons +-------------------------- + +.. automodule:: silx.gui.icons + :members: + +Available icons ++++++++++++++++ + +.. list-table:: + :widths: 1 4 + :header-rows: 1 + + * - Icon + - Name +""" % os.path.basename(__file__) + + +def main(): + """Write icons.rst file""" + icons = glob.glob(ICONS_DIR) + icons = [os.path.relpath(f, os.path.dirname(__file__)) for f in icons] + icons = sorted(icons) + + icons_table = '\n'.join( + ' * - |%s|\n - %s' % (os.path.basename(f)[:-4], + os.path.basename(f)[:-4]) for f in icons) + + icon_definitions = '\n'.join( + '.. |%s| image:: %s' % (os.path.basename(f)[:-4], f) for f in icons) + + content = ICONS_RST_HEADER + icons_table + '\n\n' + icon_definitions + '\n' + + # Write to file + with open(ICONS_RST_FILENAME, 'w') as f: + f.write(content) + + +if __name__ == '__main__': + main() diff --git a/doc/source/modules/gui/widgets/framebrowser.rst b/doc/source/modules/gui/widgets/framebrowser.rst new file mode 100644 index 0000000..5ea0918 --- /dev/null +++ b/doc/source/modules/gui/widgets/framebrowser.rst @@ -0,0 +1,19 @@ + +.. currentmodule:: silx.gui.widgets + +:mod:`FrameBrowser` +------------------- + +.. automodule:: silx.gui.widgets.FrameBrowser + +API +*** + +.. autoclass:: silx.gui.widgets.FrameBrowser.HorizontalSliderWithBrowser + :members: + + +.. autoclass:: silx.gui.widgets.FrameBrowser.FrameBrowser + :members: + + diff --git a/doc/source/modules/gui/widgets/index.rst b/doc/source/modules/gui/widgets/index.rst new file mode 100644 index 0000000..2284f22 --- /dev/null +++ b/doc/source/modules/gui/widgets/index.rst @@ -0,0 +1,19 @@ + +.. currentmodule:: silx.gui + +:mod:`widgets`: Simple widgets +------------------------------ + +.. automodule:: silx.gui.widgets + + +Public modules: + +.. toctree:: + :maxdepth: 2 + + framebrowser.rst + periodictable.rst + tablewidget.rst + threadpoolpushbutton.rst + waitingpushbutton.rst diff --git a/doc/source/modules/gui/widgets/periodictable.rst b/doc/source/modules/gui/widgets/periodictable.rst new file mode 100644 index 0000000..dead3d9 --- /dev/null +++ b/doc/source/modules/gui/widgets/periodictable.rst @@ -0,0 +1,37 @@ + +.. currentmodule:: silx.gui.widgets + +:mod:`PeriodicTable`: Atomic elements widgets +---------------------------------------------- + +.. automodule:: silx.gui.widgets.PeriodicTable + +Widgets ++++++++ + +.. autoclass:: silx.gui.widgets.PeriodicTable.PeriodicTable + :members: + :exclude-members: elementEnter, elementLeave, elementClicked, elementToggle + :show-inheritance: + + +.. autoclass:: silx.gui.widgets.PeriodicTable.PeriodicList + :members: + :show-inheritance: + +.. autoclass:: silx.gui.widgets.PeriodicTable.PeriodicCombo + :members: + :show-inheritance: + + +Data model +++++++++++ + +.. autoclass:: silx.gui.widgets.PeriodicTable.PeriodicTableItem + :members: + + +.. autoclass:: silx.gui.widgets.PeriodicTable.ColoredPeriodicTableItem + :members: + :show-inheritance: + diff --git a/doc/source/modules/gui/widgets/tablewidget.rst b/doc/source/modules/gui/widgets/tablewidget.rst new file mode 100644 index 0000000..1eb5695 --- /dev/null +++ b/doc/source/modules/gui/widgets/tablewidget.rst @@ -0,0 +1,42 @@ + +.. currentmodule:: silx.gui.widgets + +:mod:`TableWidget`: Table widget +-------------------------------- + +.. automodule:: silx.gui.widgets.TableWidget + + +Widget +++++++ + +.. autoclass:: silx.gui.widgets.TableWidget.TableWidget + :members: + :show-inheritance: + + +View +++++ + +.. autoclass:: silx.gui.widgets.TableWidget.TableView + :members: + :show-inheritance: + + +Actions ++++++++ + +.. autoclass:: silx.gui.widgets.TableWidget.CopySelectedCellsAction + :show-inheritance: + +.. autoclass:: silx.gui.widgets.TableWidget.CopyAllCellsAction + :show-inheritance: + +.. autoclass:: silx.gui.widgets.TableWidget.CutSelectedCellsAction + :show-inheritance: + +.. autoclass:: silx.gui.widgets.TableWidget.CutAllCellsAction + :show-inheritance: + +.. autoclass:: silx.gui.widgets.TableWidget.PasteCellsAction + :show-inheritance: diff --git a/doc/source/modules/gui/widgets/threadpoolpushbutton.rst b/doc/source/modules/gui/widgets/threadpoolpushbutton.rst new file mode 100644 index 0000000..cd98ac4 --- /dev/null +++ b/doc/source/modules/gui/widgets/threadpoolpushbutton.rst @@ -0,0 +1,14 @@ + +.. currentmodule:: silx.gui.widgets + +:mod:`ThreadPoolPushButton`: Button to execute a threaded task +-------------------------------------------------------------- + +.. automodule:: silx.gui.widgets.ThreadPoolPushButton + + +.. autoclass:: silx.gui.widgets.ThreadPoolPushButton.ThreadPoolPushButton + :members: + + + diff --git a/doc/source/modules/gui/widgets/waitingpushbutton.rst b/doc/source/modules/gui/widgets/waitingpushbutton.rst new file mode 100644 index 0000000..310ea80 --- /dev/null +++ b/doc/source/modules/gui/widgets/waitingpushbutton.rst @@ -0,0 +1,13 @@ + +.. currentmodule:: silx.gui.widgets + +:mod:`WaitingPushButton`: Button with waiting status +---------------------------------------------------- + +.. automodule:: silx.gui.widgets.WaitingPushButton + +.. autoclass:: silx.gui.widgets.WaitingPushButton.WaitingPushButton + :members: + + + diff --git a/doc/source/modules/image/bilinear.rst b/doc/source/modules/image/bilinear.rst new file mode 100644 index 0000000..e155751 --- /dev/null +++ b/doc/source/modules/image/bilinear.rst @@ -0,0 +1,9 @@ + +.. currentmodule:: silx.image + +:mod:`bilinear`: Bilinear interpolator +--------------------------------------- + +.. automodule:: silx.image.bilinear + :members: + :special-members: __call__ diff --git a/doc/source/modules/image/index.rst b/doc/source/modules/image/index.rst new file mode 100644 index 0000000..abdeb64 --- /dev/null +++ b/doc/source/modules/image/index.rst @@ -0,0 +1,13 @@ + +.. py:module:: silx.image + +:mod:`silx.image`: +================== + +.. toctree:: + :maxdepth: 1 + + bilinear.rst + medianfilter.rst + shapes.rst + sift.rst diff --git a/doc/source/modules/image/medianfilter.rst b/doc/source/modules/image/medianfilter.rst new file mode 100644 index 0000000..412f8bb --- /dev/null +++ b/doc/source/modules/image/medianfilter.rst @@ -0,0 +1,7 @@ + +.. currentmodule:: silx.image.medianfilter + +:mod:`medianfilter`: Median filter +---------------------------------- + +.. autofunction:: silx.image.medianfilter.medfilt2d diff --git a/doc/source/modules/image/shapes.rst b/doc/source/modules/image/shapes.rst new file mode 100644 index 0000000..a20b0cd --- /dev/null +++ b/doc/source/modules/image/shapes.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.image + +:mod:`shapes`: 2D shapes drawing +--------------------------------- + +.. automodule:: silx.image.shapes + :members: circle_fill, draw_line, polygon_fill_mask, Polygon diff --git a/doc/source/modules/image/sift.rst b/doc/source/modules/image/sift.rst new file mode 100644 index 0000000..55a4752 --- /dev/null +++ b/doc/source/modules/image/sift.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.image + +:mod:`sift`: 2D image alignment +--------------------------------- + +.. automodule:: silx.image.sift + :members: SiftPlan, MatchPlan, LinearAlign diff --git a/doc/source/modules/index.rst b/doc/source/modules/index.rst new file mode 100644 index 0000000..b9a4753 --- /dev/null +++ b/doc/source/modules/index.rst @@ -0,0 +1,14 @@ +API Reference +============= + +.. toctree:: + :maxdepth: 2 + + gui/index.rst + io/index.rst + image/index.rst + math/index.rst + resources.rst + utils/index.rst + test/index.rst + diff --git a/doc/source/modules/io/configdict.rst b/doc/source/modules/io/configdict.rst new file mode 100644 index 0000000..bc0cdb7 --- /dev/null +++ b/doc/source/modules/io/configdict.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.io + +:mod:`configdict`: Configuration files I/O +------------------------------------------- + +.. automodule:: silx.io.configdict + :members: diff --git a/doc/source/modules/io/dictdump.rst b/doc/source/modules/io/dictdump.rst new file mode 100644 index 0000000..1778d78 --- /dev/null +++ b/doc/source/modules/io/dictdump.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.io + +:mod:`dictdump`: Dumping and loading dictionaries +-------------------------------------------------- + +.. automodule:: silx.io.dictdump + :members: diff --git a/doc/source/modules/io/index.rst b/doc/source/modules/io/index.rst new file mode 100644 index 0000000..1538a74 --- /dev/null +++ b/doc/source/modules/io/index.rst @@ -0,0 +1,25 @@ + +.. py:module:: silx.io + +:mod:`silx.io`: Input-output +============================ + + +.. toctree:: + :maxdepth: 1 + + configdict.rst + dictdump.rst + nxdata.rst + octaveh5.rst + specfile.rst + specfilewrapper.rst + spech5.rst + spectoh5.rst + utils.rst + +Top-level functions +------------------- + +.. autofunction:: silx.io.open +.. autofunction:: silx.io.save1D diff --git a/doc/source/modules/io/nxdata.rst b/doc/source/modules/io/nxdata.rst new file mode 100644 index 0000000..7940270 --- /dev/null +++ b/doc/source/modules/io/nxdata.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.io + +:mod:`nxdata`: NXdata group parsing +------------------------------------ + +.. automodule:: silx.io.nxdata + :members: diff --git a/doc/source/modules/io/octaveh5.rst b/doc/source/modules/io/octaveh5.rst new file mode 100644 index 0000000..982f346 --- /dev/null +++ b/doc/source/modules/io/octaveh5.rst @@ -0,0 +1,10 @@ + +.. currentmodule:: silx.io + +:mod:`octaveh5`: Octave HDF5 compatibility +------------------------------------------- + +.. automodule:: silx.io.octaveh5 + :members: + :show-inheritance: + :undoc-members: diff --git a/doc/source/modules/io/specfile.rst b/doc/source/modules/io/specfile.rst new file mode 100644 index 0000000..a937ca8 --- /dev/null +++ b/doc/source/modules/io/specfile.rst @@ -0,0 +1,83 @@ + +.. currentmodule:: silx.io + +:mod:`specfile`: Reading SpecFile +---------------------------------- + +.. automodule:: silx.io.specfile + :members: + :undoc-members: + +.. autoclass:: silx.io.specfile.SpecFile + :members: + :undoc-members: + + .. automethod:: __len__ + + .. automethod:: __iter__ + + .. automethod:: __getitem__ + +.. autoclass:: silx.io.specfile.Scan + :members: + :undoc-members: + +.. autoclass:: silx.io.specfile.MCA + :members: + :undoc-members: + + .. automethod:: __len__ + + .. automethod:: __iter__ + + .. automethod:: __getitem__ + +.. autoclass:: silx.io.specfile.SfError + +.. autoclass:: silx.io.specfile.SfErrMemoryAlloc + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrFileOpen + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrFileClose + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrFileRead + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrFileWrite + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrLineNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrScanNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrHeaderNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrLabelNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrMotorNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrPositionNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrLineEmpty + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrUserNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrColNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfErrMcaNotFound + :show-inheritance: + +.. autoclass:: silx.io.specfile.SfNoMcaError + :show-inheritance: diff --git a/doc/source/modules/io/specfilewrapper.rst b/doc/source/modules/io/specfilewrapper.rst new file mode 100644 index 0000000..3cd8915 --- /dev/null +++ b/doc/source/modules/io/specfilewrapper.rst @@ -0,0 +1,12 @@ + +.. currentmodule:: silx.io + +:mod:`specfilewrapper`: Reading SpecFile (old API) +--------------------------------------------------- + +.. automodule:: silx.io.specfilewrapper + :members: + :show-inheritance: + :undoc-members: + :special-members: __getitem__ + diff --git a/doc/source/modules/io/spech5.rst b/doc/source/modules/io/spech5.rst new file mode 100644 index 0000000..143d3bb --- /dev/null +++ b/doc/source/modules/io/spech5.rst @@ -0,0 +1,11 @@ + +.. currentmodule:: silx.io + +:mod:`spech5`: h5py-like API to SpecFile +----------------------------------------- + +.. automodule:: silx.io.spech5 + :members: + :show-inheritance: + :undoc-members: + :special-members: __getitem__, __len__, __contains__ diff --git a/doc/source/modules/io/spectoh5.rst b/doc/source/modules/io/spectoh5.rst new file mode 100644 index 0000000..05fc768 --- /dev/null +++ b/doc/source/modules/io/spectoh5.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.io + +:mod:`spectoh5`: SpecFile to HDF5 conversion +--------------------------------------------- + +.. automodule:: silx.io.spectoh5 + :members: write_spec_to_h5, convert diff --git a/doc/source/modules/io/utils.rst b/doc/source/modules/io/utils.rst new file mode 100644 index 0000000..f243bcb --- /dev/null +++ b/doc/source/modules/io/utils.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.io + +:mod:`utils`: I/O utilities +----------------------------- + +.. automodule:: silx.io.utils + :members: diff --git a/doc/source/modules/math/combo.rst b/doc/source/modules/math/combo.rst new file mode 100644 index 0000000..4d1b5c6 --- /dev/null +++ b/doc/source/modules/math/combo.rst @@ -0,0 +1,8 @@ +.. currentmodule:: silx.math + +:mod:`silx.math.combo`: Statistics combo functions +-------------------------------------------------- + +.. automodule:: silx.math.combo + +.. autofunction:: min_max diff --git a/doc/source/modules/math/fit/bgtheories.rst b/doc/source/modules/math/fit/bgtheories.rst new file mode 100644 index 0000000..5c6994a --- /dev/null +++ b/doc/source/modules/math/fit/bgtheories.rst @@ -0,0 +1,10 @@ + +.. currentmodule:: silx.math.fit + +See :mod:`fittheories` and :mod:`fittheory` for additional information. + +:mod:`bgtheories`: Background theories for :mod:`fitmanager` +------------------------------------------------------------ + +.. automodule:: silx.math.fit.bgtheories + :members: diff --git a/doc/source/modules/math/fit/filters.rst b/doc/source/modules/math/fit/filters.rst new file mode 100644 index 0000000..09f7145 --- /dev/null +++ b/doc/source/modules/math/fit/filters.rst @@ -0,0 +1,18 @@ + +.. currentmodule:: silx.math.fit + +Smoothing and background filters +-------------------------------- + +.. automodule:: silx.math.fit.filters + +.. autofunction:: silx.math.fit.smooth1d +.. autofunction:: silx.math.fit.smooth2d +.. autofunction:: silx.math.fit.smooth3d +.. autofunction:: silx.math.fit.savitsky_golay +.. autofunction:: silx.math.fit.snip1d +.. autofunction:: silx.math.fit.snip2d +.. autofunction:: silx.math.fit.snip3d +.. autofunction:: silx.math.fit.strip + + diff --git a/doc/source/modules/math/fit/fitmanager.rst b/doc/source/modules/math/fit/fitmanager.rst new file mode 100644 index 0000000..b8a9446 --- /dev/null +++ b/doc/source/modules/math/fit/fitmanager.rst @@ -0,0 +1,18 @@ + +.. currentmodule:: silx.math.fit + +:mod:`fitmanager`: Fit functions manager +---------------------------------------- + +.. automodule:: silx.math.fit.fitmanager + +For a tutorial on how to use :class:`FitManager`, see :ref:`fitmanager-tutorial`. + +API +... + +.. autoclass:: silx.math.fit.fitmanager.FitManager + :members: addbackground, addtheory, configure, disableweight, estimate, fit, fitconfig, + fit_results, gendata, enableweight, loadtheories, setdata, setbackground, + settheory, runfit + :special-members: __init__ diff --git a/doc/source/modules/math/fit/fittheories.rst b/doc/source/modules/math/fit/fittheories.rst new file mode 100644 index 0000000..4a0b6bc --- /dev/null +++ b/doc/source/modules/math/fit/fittheories.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.math.fit + +:mod:`fittheories`: Fit theories for :mod:`fitmanager` +-------------------------------------------------------- + +.. automodule:: silx.math.fit.fittheories + :members: diff --git a/doc/source/modules/math/fit/fittheory.rst b/doc/source/modules/math/fit/fittheory.rst new file mode 100644 index 0000000..ab29d17 --- /dev/null +++ b/doc/source/modules/math/fit/fittheory.rst @@ -0,0 +1,8 @@ + +.. currentmodule:: silx.math.fit + +:mod:`fittheory`: Fit theory definition +--------------------------------------- + +.. automodule:: silx.math.fit.fittheory + :members: diff --git a/doc/source/modules/math/fit/functions.rst b/doc/source/modules/math/fit/functions.rst new file mode 100644 index 0000000..f354964 --- /dev/null +++ b/doc/source/modules/math/fit/functions.rst @@ -0,0 +1,26 @@ + +.. currentmodule:: silx.math.fit + +Fit functions +------------- + +.. automodule:: silx.math.fit.functions + +.. autofunction:: silx.math.fit.atan_stepup +.. autofunction:: silx.math.fit.periodic_gauss +.. autofunction:: silx.math.fit.sum_agauss +.. autofunction:: silx.math.fit.sum_ahypermet +.. autofunction:: silx.math.fit.sum_alorentz +.. autofunction:: silx.math.fit.sum_apvoigt +.. autofunction:: silx.math.fit.sum_fastagauss +.. autofunction:: silx.math.fit.sum_fastahypermet +.. autofunction:: silx.math.fit.sum_gauss +.. autofunction:: silx.math.fit.sum_lorentz +.. autofunction:: silx.math.fit.sum_pvoigt +.. autofunction:: silx.math.fit.sum_slit +.. autofunction:: silx.math.fit.sum_splitgauss +.. autofunction:: silx.math.fit.sum_splitlorentz +.. autofunction:: silx.math.fit.sum_splitpvoigt +.. autofunction:: silx.math.fit.sum_stepdown +.. autofunction:: silx.math.fit.sum_stepup + diff --git a/doc/source/modules/math/fit/index.rst b/doc/source/modules/math/fit/index.rst new file mode 100644 index 0000000..958e339 --- /dev/null +++ b/doc/source/modules/math/fit/index.rst @@ -0,0 +1,25 @@ + +.. currentmodule:: silx.math +.. py:module:: silx.math.fit + +:mod:`fit`: Fitting tools +========================== + +.. toctree:: + :maxdepth: 1 + + leastsq.rst + peaksearch.rst + functions.rst + filters.rst + fitmanager.rst + fittheory.rst + fittheories.rst + bgtheories.rst + + +For a graphical fit widget, see :mod:`silx.gui.fit.FitWidget`. + +For a tutorial on using the various fit related modules, see :ref:`fit-tutorial` . + + diff --git a/doc/source/modules/math/fit/leastsq.rst b/doc/source/modules/math/fit/leastsq.rst new file mode 100644 index 0000000..35c105f --- /dev/null +++ b/doc/source/modules/math/fit/leastsq.rst @@ -0,0 +1,16 @@ + +.. currentmodule:: silx.math.fit + +:mod:`leastsq`: Levenberg Marquardt with constraints +----------------------------------------------------- + +.. automodule:: silx.math.fit.leastsq + :noindex: + +For a tutorial on how to use :func:`leastsq`, see :ref:`leastsq-tutorial`. + +Functions ++++++++++ + +.. autofunction:: silx.math.fit.leastsq +.. autofunction:: silx.math.fit.chisq_alpha_beta diff --git a/doc/source/modules/math/fit/peaksearch.rst b/doc/source/modules/math/fit/peaksearch.rst new file mode 100644 index 0000000..b1c70eb --- /dev/null +++ b/doc/source/modules/math/fit/peaksearch.rst @@ -0,0 +1,10 @@ + +.. currentmodule:: silx.math.fit + +Peak search function +-------------------- + +.. automodule:: silx.math.fit.peaks + +.. autofunction:: silx.math.fit.peaks.peak_search +.. autofunction:: silx.math.fit.peaks.guess_fwhm diff --git a/doc/source/modules/math/histogram.rst b/doc/source/modules/math/histogram.rst new file mode 100644 index 0000000..06a9fed --- /dev/null +++ b/doc/source/modules/math/histogram.rst @@ -0,0 +1,21 @@ + +.. currentmodule:: silx.math + +:mod:`histogram`: Multidimensional histograms +---------------------------------------------- + +.. automodule:: silx.math.histogram + + +Classes ++++++++ + +.. autoclass:: silx.math.histogram.Histogramnd + :members: + :undoc-members: + :special-members: __init__, __getitem__ + +.. autoclass:: silx.math.histogram.HistogramndLut + :members: + :undoc-members: + :special-members: __init__ diff --git a/doc/source/modules/math/index.rst b/doc/source/modules/math/index.rst new file mode 100644 index 0000000..ece49dd --- /dev/null +++ b/doc/source/modules/math/index.rst @@ -0,0 +1,13 @@ + +.. py:module:: silx.math + +:mod:`silx.math`: +================== + +.. toctree:: + :maxdepth: 1 + + fit/index.rst + histogram.rst + medianfilter.rst + combo.rst diff --git a/doc/source/modules/math/medianfilter.rst b/doc/source/modules/math/medianfilter.rst new file mode 100644 index 0000000..bb8903c --- /dev/null +++ b/doc/source/modules/math/medianfilter.rst @@ -0,0 +1,11 @@ + +.. currentmodule:: silx.math.medianfilter + +:mod:`medianfilter`: Median filter +---------------------------------- + +.. autofunction:: silx.math.medianfilter.medfilt + +.. autofunction:: silx.math.medianfilter.medfilt1d + +.. autofunction:: silx.math.medianfilter.medfilt2d diff --git a/doc/source/modules/resources.rst b/doc/source/modules/resources.rst new file mode 100644 index 0000000..03e419a --- /dev/null +++ b/doc/source/modules/resources.rst @@ -0,0 +1,7 @@ +.. currentmodule:: silx + +:mod:`silx.resources`: Project resources access +=============================================== + +.. automodule:: silx.resources + :members: diff --git a/doc/source/modules/test/index.rst b/doc/source/modules/test/index.rst new file mode 100644 index 0000000..f9d8ec0 --- /dev/null +++ b/doc/source/modules/test/index.rst @@ -0,0 +1,20 @@ +:mod:`silx.test`: +================= + +:mod:`silx.test` +---------------- + +.. automodule:: silx.test + :members: + +:mod:`silx.test.utils` +---------------------- + +.. automodule:: silx.test.utils + :members: + +:mod:`silx.gui.test.utils` +-------------------------- + +.. automodule:: silx.gui.test.utils + :members: diff --git a/doc/source/modules/utils/array_like.rst b/doc/source/modules/utils/array_like.rst new file mode 100644 index 0000000..4b477ea --- /dev/null +++ b/doc/source/modules/utils/array_like.rst @@ -0,0 +1,7 @@ +.. currentmodule:: silx.utils + +:mod:`array_like` +----------------- + +.. automodule:: silx.utils.array_like + :members: diff --git a/doc/source/modules/utils/decorators.rst b/doc/source/modules/utils/decorators.rst new file mode 100644 index 0000000..1da0f44 --- /dev/null +++ b/doc/source/modules/utils/decorators.rst @@ -0,0 +1,7 @@ +.. currentmodule:: silx.utils + +:mod:`decorators` +------------------ + +.. automodule:: silx.utils.decorators + :members: diff --git a/doc/source/modules/utils/html.rst b/doc/source/modules/utils/html.rst new file mode 100644 index 0000000..1e590f4 --- /dev/null +++ b/doc/source/modules/utils/html.rst @@ -0,0 +1,7 @@ +.. currentmodule:: silx.utils + +:mod:`html` +----------- + +.. automodule:: silx.utils.html + :members: diff --git a/doc/source/modules/utils/index.rst b/doc/source/modules/utils/index.rst new file mode 100644 index 0000000..4eac097 --- /dev/null +++ b/doc/source/modules/utils/index.rst @@ -0,0 +1,11 @@ +:mod:`silx.utils`: +================== + +.. toctree:: + :maxdepth: 2 + + array_like.rst + decorators.rst + html.rst + weakref.rst + diff --git a/doc/source/modules/utils/weakref.rst b/doc/source/modules/utils/weakref.rst new file mode 100644 index 0000000..8d5a77a --- /dev/null +++ b/doc/source/modules/utils/weakref.rst @@ -0,0 +1,7 @@ +.. currentmodule:: silx.utils + +:mod:`weakref` +--------------- + +.. automodule:: silx.utils.weakref + :members: -- cgit v1.2.3